Le model-checker Spin
C´edric Meuter
1 Election de leader dans un token ring
Un token ring (ou anneau `a jeton) est une topologie de r´eseau dans laquelle chaque station
est connect´ee `a deux autres stations (gauche et droite) en anneau. Cet anneau peut ˆetre uni-
ou bi-directionel. Dans un tel token ring, l’acc`es au r´esaux est contrˆol´e par un jeton (token).
Lorsqu’une station veut ´emettre un message sur le r´eseau, 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´en´erer un jeton
unique. Pour d´ecider de quelle station ce jeton va ˆetre ´emis, il est n´ecessaire d’initier un protocol
d’´election de leader.
2 Algorithme de Dolev, Klawe & Rodeh
Dans le cadre de cette s´eance, nous nous placerons dans le cas d’un token ring unidirectionel,
et o`u les communications entre station sont suppos´ees fiables. Chaque station dispose d’une
identificateur entiers (id). Dans ce cas, Dolev, Klawe et Rodeh on mis au point un algorithme
d’´election de leader. L’id´ee est de choisir parmis les diff´erentes stations celle dont l’id est le
plus grand. Initiallement, chaque station est dans ´etat actif (c`ad participant au protocol). D`es
qu’une station d´ecouvre 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`eres : left et max, ainsi que deux types de messages : <1, i>
et <2, i> ou iest un entier. Notons que la variables max contient initiallement l’identificateur
de la station. L’agorithme, tel que pr´esent´e dans l’article original [DKR81] est repris `a la figure
1.
A0 Send a message <1, max>
A1 If a message <1, i> arrives do as follows :
1 If i6=max then send the message <2, i>, and assign ito 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 jand 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