Le model-checker Spin

publicité
Le model-checker Spin
Cédric Meuter
1
Election de leader dans un token ring
Un token ring (ou anneau à jeton) est une topologie de réseau dans laquelle chaque station
est connectée à deux autres stations (gauche et droite) en anneau. Cet anneau peut être uniou bi-directionel. Dans un tel token ring, l’accès au résaux est contrôlé par un jeton (token).
Lorsqu’une station veut émettre un message sur le réseau, elle doit attendre de disposer de
ce jeton pour pouvoir le faire. Cependant, il arrive qu’un tel jeton soit perdu (panne d’une
station, erreur de transmission, ...). Dans de tels cas, il est indispensable de regénérer un jeton
unique. Pour décider de quelle station ce jeton va être émis, il est nécessaire d’initier un protocol
d’élection de leader.
2
Algorithme de Dolev, Klawe & Rodeh
Dans le cadre de cette séance, nous nous placerons dans le cas d’un token ring unidirectionel,
et où les communications entre station sont supposées fiables. Chaque station dispose d’une
identificateur entiers (id). Dans ce cas, Dolev, Klawe et Rodeh on mis au point un algorithme
d’élection de leader. L’idée est de choisir parmis les différentes stations celle dont l’id est le
plus grand. Initiallement, chaque station est dans état actif (càd participant au protocol). Dès
qu’une station découvre qu’elle n’est pas celle dont l’id est le maximum global, elle passe en
mode passif, et n’agit plus alors que comme un relai pour les messages. L’algorithme utilise pour
chaque station deux variables entières : left et max, ainsi que deux types de messages : <1, i>
et <2, i> ou i est un entier. Notons que la variables max contient initiallement l’identificateur
de la station. L’agorithme, tel que présenté dans l’article original [DKR81] est repris à la figure
1.
A0 Send a message <1, max>
A1 If a message <1, i> arrives do as follows :
1 If i 6= max then send the message <2, i>, and assign i to left
2 Otherwise, halt, max is the global maximum
A2 If a message <2, j> arrives do as follows :
1 If left is greater that both j and max then assign left to max and
send the message <1, max>.
2 Otherwise becomme passive.
Fig. 1 – Algorithme de Dolev, Klawe et Rodeh
1
3
Exercices
– Implémentez en promela l’algorithme de la figure 1.
– Sous cette version, seul une des stations connait le moment où le protocol se termine.
Modifiez le modèle promela afin de remédier à cette situation.
– Vérifier formellement que ce protocol fonctionne correctement, à savoir qu’une et une seule
station soit leader à la fin du protocoles.
Références
[DKR81] Danny Dolev, Maria Klawe and Michael Rodeh. An O(n log n) Unidirectional Distributed Algorithm for Extrema Finding in Circle, Journal of Algorithmics, 1981
2
Téléchargement