410 likes | 550 Views
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.
E N D
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
A C B Jeton • Message de contrôle unique • Droits d’émission • Durée limitée TRT THT(A) THT(B) THT(C) d(A,B) d(B,C) d(C,A)
Target TRT A A A TRT THT (A) En avance En retard TRT THT (A) Jeton • Message de contrôle unique • Droits d’émission • Durée limitée
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
I J K L 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 • 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
I J K 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 : • Etat initial
I J K 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 : • Rupture de J-K détectée par K
I J K 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 : • Rupture de K-L détectée par L
I J K 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 : • Rupture de J-K détectée par J
I J K 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 : • J et L sont disponibles → J-L établie
I J K 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 : • Rupture de I-J détectée par I
I J K 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 et K sont disponibles → I-K établie
I J K 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 : • 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 • 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 • 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 SI 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 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 !