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