Algorithmes de reconfiguration Gestion des pannes Algorithmes de reconfiguration d’anneaux virtuels Alexis CLERC
Plan Généralités sur les anneaux virtuels Problématiques Algorithmes communs Modélisation par réseaux de Pétri
Anneaux virtuels : généralités Contexte : système réparti Définitions Jeton
Contexte : système réparti Tolérance aux pannes Anneau virtuel
Définitions Connexion logique Site Panne
Jeton Message de contrôle unique Droits d’émission Durée limitée A C B TRT A C B THT(A) THT(B) THT(C) d(A,B) d(B,C) d(C,A)
Jeton Message de contrôle unique Droits d’émission Durée limitée Target TRT En avance En retard TRT THT (A) A
Problématiques Initialisation Insertion Fermeture de l’anneau après rupture de liaison logique ou une panne de site Détection et traitement d’un partitionnement
Initialisation Un site isolé pose sa candidature Négociation I J K L
Insertion Si le consensus aboutit à un accord Les anciennes liaisons sont fermées De nouvelles liaisons avec le site candidat sont ouvertes I J K L Oui, mais …..
… des problèmes Un inconvénient Une anomalie Autre proposition Raison fondamentale : l’asynchronisme
Fermeture de l’anneau après rupture de liaison logique ou une panne de site Anneau brisé Détection Procédure de fermeture
Fermeture de l’anneau après rupture de liaison logique ou une panne de site Anneau brisé Détection Procédure de fermeture Un exemple : I J K L Etat initial
Fermeture de l’anneau après rupture de liaison logique ou une panne de site Anneau brisé Détection Procédure de fermeture Un exemple : I J K L Rupture de J-K détectée par K
Fermeture de l’anneau après rupture de liaison logique ou une panne de site Anneau brisé Détection Procédure de fermeture Un exemple : I J K L Rupture de K-L détectée par L
Fermeture de l’anneau après rupture de liaison logique ou une panne de site Anneau brisé Détection Procédure de fermeture Un exemple : I J K L Rupture de J-K détectée par J
Fermeture de l’anneau après rupture de liaison logique ou une panne de site Anneau brisé Détection Procédure de fermeture Un exemple : I J K L J et L sont disponibles → J-L établie
Fermeture de l’anneau après rupture de liaison logique ou une panne de site Anneau brisé Détection Procédure de fermeture Un exemple : I J K L Rupture de I-J détectée par I
Fermeture de l’anneau après rupture de liaison logique ou une panne de site Anneau brisé Détection Procédure de fermeture Un exemple : I J K L I et K sont disponibles → I-K établie
Fermeture de l’anneau après rupture de liaison logique ou une panne de site Anneau brisé Détection Procédure de fermeture Un exemple : I J K L Etat final : Anneau partitionné
Détection et traitement d’un partitionnement. Réévaluation des liaisons Voisins les plus proches Suppression de l’initialisation
Algorithmes communs Pré-requis Exclusion mutuelle par estampilles Election Terminaison Contrôle des accès concurrents et traitements des interblocages
Pré-requis Précédence causale Ordonnancement par estampille Ordonnancement par horloges vectorielles
Précédence causale Précédence directe Précédence Concurrence a précède b a < b et site(a) = site(b) ou a=site i .send(m) et b=site j .receive(m) Précédence a -> b fermeture transitive de a précède b Concurrence a // b non (a -> b) et non (b -> a).
Ordonnancement par estampille Horloge logique Hi de Si Quand e sur Si, Hi ++ Quand Si.send(m), Em estampille(m) = Hi Quand Sj.receive(m),Hj = max(Hj, E(m))+1 Ordre total => Soit a sur Si et b sur Sj a => b Hi(a) < Hj(b) ou (Hi(a) = Hj(b) et i<j). e(numéro de site, estampille)
Ordonnancement par horloges vectorielles Problème de => : a => b a -> b ou a et b causalement indépendants Soit un anneau à n sites Chaque Si a un Vi[1…n] Quand e sur Si, Vi[i] ++ Quand Si.send(m), Vm Estampille(m) = Vi Quand Sj.receive(m), Vj[k] := max (Vj[k], Vm[k]) pour k = 1, …, n
Ordonnancement par horloges vectorielles (suite) Soit événement a daté par Va Passé(a) = {a, {e/e->a}} Va[i] = # {e / (e->a, et e sur Si) } +1 Ordre partiel V <= W V[k] <= W[k] pour k = 1, …, n V < W V <= W et V <> W V // W non (V <= W) et non (V <= W) Précédence causale a -> b Va < Vb a et b causalement indépendants Va // Vb
Exclusion mutuelle par estampilles Application directe de l’ordonnancement des événements par estampilles File d’attente répartie, ordonnée Un seul processus en section critique Pi demande l’autorisation, Pj la reçoit Pj n’est en SC, et n’a pas fait de demande => accord Pj a fait un demande => accord ou accord différé Pj est en SC => accord différé 2(n-1) messages
Election Exemple : perte du jeton Un seul doit le régénérer Choix de l’élu arbitraire : Si / i max(1 …n) Algorithme de filtrage Chaque Pi candidat transmet m(i) Quand Pj recoit m(i) Si i < j, m(i) détruit et Pj candidat Sinon, Pj retransmet m(i)
Terminaison Détection de la fin d’un calcul réparti Comparaison avec l’interblocage Similitude : absence d’évolution Différence : non connu a priori Détection en 2 tours de jeton Marquage des sites suivant leur activité Terminaison quand tous les sites sont marqués inactifs
Contrôle des accès concurrents et traitements des interblocages Exécution séquentielle de processus concurrents Conflit : actions incompatibles sur un objet Relation de dépendance << sur un graphe Cycle sur le graphe = interblocage Contrôle de dépendance Contrôle continu Contrôle de terminaison
Contrôle des accès concurrents et traitements des interblocages (suite) Respect de l’ordre de verrouillage et méthode de détection-guérison des interblocages Graphe de dépendance = graphe d’attente Lors d’une détection de cycle p1-p2-…-pn Un pi en jeu doit être annulé puis repris Choix du pi : Auteur de l’interblocage Celui qui a verrouillé le moins de ressources Le plus récent
Contrôle des accès concurrents et traitements des interblocages (suite et fin) Ordonnancement par estampille et méthodes de prévention des interblocages. Ordre établi par estampillage En cas de conflit : si ordre respecté, action acceptée sinon, action annulée, puis reprise Résultat : pas de cycles dans le graphe des attentes
Modélisation par réseaux de Pétri Analyse descendante Messages typiques Principe de suspicion Qualités de services des couches inférieures Routage Transport Pertes de messages détectées Messages non dupliqués Messages contrôlés, et donc supposés corrects Liaisons logiques surveillés par émission/acquittement de messages de contrôle, avec un mécanisme de time-out
Niveau 0 : Etat d’un site Etats Transitions Inactif Actif Transitions Traitement de reprise Défaillance IN tr df AC [ IN ( tr > AC ; AC ( df > IN ] *
Niveau 1 : Etat d’un site / système Etats Déconnecté Transitions Traitement de défaillance Traitement de connexion IN td D df tc IN (tr > AC devient IN (td > D ; D ( tc > AC AC [IN (td > D ; D ( tc > AC ; AC ( df > IN ] *
Niveau 2 : Etat d’un site / anneau Etats Inactif coté successeur Inactif coté prédécesseur Actif coté successeur Actif coté prédécesseur Transitions Défaillance coté successeur Défaillance coté prédécesseur SI PI td D pdf sdf tc PA SA AC devient SA et PA IN devient SI et PI df devient sdf et pdf [ PI et SI ( td > D ; D ( tc > PA et SA ; [ PA ( pdf > PI // SA ( sdf > SI ] ]*
Niveau 3 : Etat d’un site / voisins PI Etats Liaisons ouvertes (PO, SO) Liaisons fermées (PF, SF) Transitions Déconnexion quand liaison ouverte (ppo, spo) Déconnexion quand liaison fermée (ppf, spf) Ouverture de liaison (plo, slo) Fermeture de liaison (plf, slf) Rupture de liaison (plr, slr) td D ppo ppf spf spo tc PF SF plf plr plo slf slr slo PO SO PA devient PF ou PO SA devient SF ou SO sdf devient spo et spf [ PF ( plo > PO ; PO ( plf ou plr > PF] // [ SF ( slo > SO ; SO ( slf ou slr > SF] [ PF ( ppf > PI ou PO (ppo > PI ] // [ SF ( spf > SI ou SO (spo > SI ]
Et plus encore !! Messages de synchronisation Identité des sites émetteurs et destinataires -> Réseaux de Pétri à prédicats
Bibliographie Modeling of a virtual ring protocol by means of Petri nets Pascal Estraillier – Article présenté au 1er colloque de Génie logiciel The Totem Single-Ring ordering and membership protocol Amir, Moser, Melliar-Smith, Agarwal, Ciarfella – University of California Depth first traversal and virtual ring construction in distribued systems Helary, Raynal – Unité de recherche INRIA Rennes Eléments fondamentaux des systèmes répartis Michel RIVEILL - Projet IMAG-INRIA Sirac
Remerciements INRIA pour m’avoir envoyé ses articles Mr Terrat pour m’avoir prêté l’article sur les réseaux de Petri en français Vous, pour votre attention !