Fondements de l’algorithmique des réseaux Stéphane Devismes 17/04/2014 SCI121 Plan • • • • • Réseau ? Algorithme distribué ? Problème à résoudre ? Exemple : circulation d’un jeton Conclusion 17/04/2014 SCI121 Plan • • • • • Réseau ? Algorithme distribué ? Problème à résoudre ? Exemple : circulation d’un jeton Conclusion 17/04/2014 SCI121 Réseaux • « En informatique, un réseau est un ensemble interconnecté d’appareils électroniques, géographiquement distants qui échangent des informations » Wikipédia 17/04/2014 SCI121 Exemples de réseaux • • • • • • Internet Le réseau de l’Université Le réseau téléphonique (filaire, cellulaire) GPS Réseau de capteurs (surveillance sismique) ... 17/04/2014 SCI121 Appareils Electroniques 17/04/2014 SCI121 Interconnections 17/04/2014 SCI121 Echange d’informations 17/04/2014 SCI121 Couches de communication (Modèle OSI) Utilisateur final Application Présentation Session Transport Réseau MAC Physique 17/04/2014 Deux fonctions : - Envoi(M,v) - Réception(M,v) Protocoles réseaux : Algorithmes distribués Envoi d’une trame de bits (message) point à point Envoi d’un seul bit d’information point à point SCI121 Objectifs • Communiquer : mail, chat … • Echanger : fichiers (mp3, doc) • Partager les resources : – Physique (imprimantes) – De calculs (applications) • Accélérer le calcul – Grid computing – SETI@HOME 17/04/2014 SCI121 Plan • • • • • Réseau ? Algorithme distribué ? Problème à résoudre ? Exemple : circulation d’un jeton Conclusion 17/04/2014 SCI121 Modèle théorique pour les réseaux : Les systèmes distribués • Machines ≈ Processus 17/04/2014 SCI121 Les systèmes distribués • Machines ≈ Processus • Caractéristiques: – Pas de contrôle centralisé • Programmes locaux • Mémoires locales 17/04/2014 SCI121 Les systèmes distribués • Machines ≈ Processus • Caractéristiques: – Pas de contrôle centralisé • Programmes locaux • Mémoires locales – Asynchrones – Pas de temps global 17/04/2014 SCI121 Les systèmes distribués • Machines ≈ Processus • Caractéristiques: – Pas de contrôle centralisé • Programmes locaux • Mémoires locales – Asynchrones – Pas de temps global – Interconnectés 17/04/2014 SCI121 Les systèmes distribués • Machines ≈ Processus • Caractéristiques: – Pas de contrôle centralisé • Programmes locaux • Mémoires locales – Asynchrones – Pas de temps global – Interconnectés • Passage de messages asynchrone et FIFO 17/04/2014 SCI121 FIFO 17/04/2014 SCI121 FIFO A 17/04/2014 SCI121 FIFO B A 17/04/2014 SCI121 FIFO C B A 17/04/2014 SCI121 FIFO C B 17/04/2014 SCI121 A FIFO C 17/04/2014 SCI121 B FIFO C 17/04/2014 SCI121 Les systèmes distribués • Hypothèses – Liens bidirectionnels 17/04/2014 SCI121 Liens bidirectionnels : pas toujours ! 17/04/2014 SCI121 Les systèmes distribués 4078 167 • Hypothèses – Liens bidirectionnels – Identité unique (e.g., adresse IP) 12 42 17/04/2014 23 SCI121 Les systèmes distribués • Hypothèses 407 8 – Liens bidirectionnels – Identité unique – Topologie statique et connexe (≈graphe) 167 12 42 17/04/2014 • Nous excluons ici les réseaux téléphoniques sans-fils ! 23 SCI121 Rappel : Connexité Connexe ! 17/04/2014 SCI121 Rappel : Connexité Pas connexe ! 17/04/2014 SCI121 Algorithme distribué 17/04/2014 SCI121 Algorithme Distribué Exemple : Calcul d’un arbre couvrant 17/04/2014 SCI121 Algorithme Distribué Exemple : Calcul d’un arbre couvrant 17/04/2014 SCI121 Algorithme Distribué Exemple : Calcul d’un arbre couvrant 17/04/2014 SCI121 Algorithme Distribué Exemple : Calcul d’un arbre couvrant Racin e= vrai • Entrées réparties Racin e= faux Racin e= faux Racin e= faux 17/04/2014 Racin e= faux SCI121 Algorithme Distribué Exemple : Calcul d’un arbre couvrant • Entrées réparties • Calculs locaux – Mémoires locales – Programmes locals – Envoi de messages – Décision locale Racin e= faux 17/04/2014 SCI121 Algorithme Distribué Exemple : Calcul d’un arbre couvrant Racin e= vrai • Entrées réparties • Calculs locaux Racin e= faux – Mémoires locales – Programmes locals – Envoi de messages – Decision locale Racin e= faux Racin e= faux 17/04/2014 • Sorties réparties Racin e= faux SCI121 Algorithme Distribué Exemple : Calcul d’un arbre couvrant Racin e= vrai • Entrées réparties • Calculs locaux Racin e= faux – Mémoires locales – Programmes locals – Envoi de messages – Decision locale Racin e= faux Racin e= faux 17/04/2014 • Sorties réparties • Tâche globale Racin e= faux SCI121 Evaluation des performances Quel est le meilleur algorithme ? • #Messages • Volume (en bits) • Temps (en rondes) • Occupation mémoire (en bits) 17/04/2014 SCI121 Plan • • • • • Réseau ? Algorithme distribué ? Problème à résoudre ? Exemple : circulation d’un jeton Conclusion 17/04/2014 SCI121 Problèmes classiques • Echange de donnée : routage, diffusion, … • Accords : consensus, élection, … • Auto-organisation : arbre couvrant, clustering • Allocation de ressources : exclusion mutuelle, diner des philosophes… 17/04/2014 SCI121 Echange de donnée : routage 17/04/2014 SCI121 Echange de donnée : routage Source Destination 17/04/2014 SCI121 Echange de donnée : routage 17/04/2014 SCI121 Accord : élection Calculer un chef ! 17/04/2014 SCI121 Accord : élection Calculer un chef ! 34 12 15 22 42 58 72 31 17/04/2014 56 SCI121 Accord : élection Calculer un chef ! 12 34 12 12 12 42 12 12 15 12 22 31 12 17/04/2014 12 58 SCI121 72 12 56 Auto-organisation : k-Clustering 17/04/2014 SCI121 Auto-organisation : k-Clustering 17/04/2014 SCI121 Auto-organisation : k-Clustering • Ex. k=2 ≤k 17/04/2014 SCI121 Auto-organisation : k-Clustering • Ex. k=2 ≤k 17/04/2014 SCI121 Allocation de ressources : exclusion mutuelle 17/04/2014 SCI121 Allocation de ressources : exclusion mutuelle 17/04/2014 SCI121 Allocation de ressources : exclusion mutuelle 17/04/2014 SCI121 Allocation de ressources : exclusion mutuelle 17/04/2014 SCI121 Allocation de ressources : exclusion mutuelle 17/04/2014 SCI121 Plan • • • • • Réseau ? Algorithme distribué ? Problème à résoudre ? Exemple : circulation d’un jeton Conclusion 17/04/2014 SCI121 Circulation d’un jeton • Plan – Définition – Solution dans un réseau en anneau (token ring) – Solution dans un réseau en arbre – Solution dans un réseau quelconque 17/04/2014 SCI121 Circulation d’un jeton : définition • Un message appelé « jeton » – Circule séquentiellement dans le réseau – Il doit visiter tous les processus – La circulation termine 17/04/2014 SCI121 Circulation d’un jeton dans un anneau 17/04/2014 SCI121 Circulation d’un jeton dans un anneau 0 0 1 1 0 1 0 1 1 1 0 0 0 17/04/2014 0 1 1 SCI121 Circulation d’un jeton dans un anneau 0 0 1 • Un initiateur 1 0 1 0 1 1 1 0 0 0 17/04/2014 0 1 1 SCI121 Circulation d’un jeton dans un anneau J 0 0 1 • L’initiateur envoie le jeton J sur le canal 0 1 0 1 0 1 1 1 0 0 0 17/04/2014 0 1 1 SCI121 Circulation d’un jeton dans un anneau 0 0 1 J 1 • Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 0 1 0 1 1 1 0 0 0 17/04/2014 0 1 1 SCI121 Circulation d’un jeton dans un anneau 0 0 1 • Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 1 0 1 0 1 1 1 0 0 0 17/04/2014 0 1 1 SCI121 J Circulation d’un jeton dans un anneau 0 0 1 • Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 1 0 1 0 1 1 1 0 0 0 17/04/2014 0 1 1 J SCI121 Circulation d’un jeton dans un anneau 0 0 1 • Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 1 0 1 0 1 1 1 0 0 0 17/04/2014 1 J 0 1 SCI121 Circulation d’un jeton dans un anneau 0 0 1 • Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 1 0 1 0 1 1 1 0 0 J 17/04/2014 0 0 1 1 SCI121 Circulation d’un jeton dans un anneau 0 0 1 1 0 1 J • Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 0 1 1 1 0 0 0 17/04/2014 0 1 1 SCI121 Circulation d’un jeton dans un anneau J 0 0 1 • Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 1 0 1 0 1 1 1 0 0 0 17/04/2014 0 1 1 SCI121 Circulation d’un jeton dans un anneau 0 0 1 • Sur réception, l’initiateur décide la terminaison 1 0 1 0 1 1 1 0 0 0 17/04/2014 0 1 1 SCI121 Circulation d’un jeton dans un arbre 0 2 0 0 17/04/2014 • Quasiment le même algorithme ! 1 0 1 1 0 0 SCI121 Circulation d’un jeton dans un arbre J 0 2 0 0 17/04/2014 • L’initiateur envoie le jeton J sur le canal 0 1 0 1 1 0 0 SCI121 Circulation d’un jeton dans un arbre 1 0 J 0 0 17/04/2014 0 2 1 • Sur réception du canal i, un noninitiateur renvoie le jeton sur le canal (i+1) mod δ 1 0 0 SCI121 • Ici δ = 3 • (2+1) mod 3 = 0 Circulation d’un jeton dans un arbre 1 0 0 2 J 0 0 17/04/2014 1 • Sur réception du canal i, un noninitiateur renvoie le jeton sur le canal (i+1) mod δ 1 0 0 SCI121 • Ici δ = 3 • (2+1) mod 3 = 0 Circulation d’un jeton dans un arbre 1 0 0 2 0 J 0 17/04/2014 1 • Sur réception du canal i, un noninitiateur renvoie le jeton sur le canal (i+1) mod δ 1 0 0 SCI121 • Ici δ = 1 • (0+1) mod 1 = 0 Circulation d’un jeton dans un arbre 1 0 0 2 0 0 17/04/2014 1 J 0 • Sur réception du canal i, un noninitiateur renvoie le jeton sur le canal (i+1) mod δ 1 0 SCI121 • Ici δ = 3 • (0+1) mod 3 = 1 Circulation d’un jeton dans un arbre 1 0 0 2 0 0 17/04/2014 1 • Sur réception du canal i, un noninitiateur renvoie le jeton sur le canal (i+1) mod δ 1 J 0 0 SCI121 • Ici δ = 1 • (0+1) mod 1 = 0 Circulation d’un jeton dans un arbre 1 0 J 0 0 17/04/2014 0 2 1 • Sur réception du canal i, un noninitiateur renvoie le jeton sur le canal (i+1) mod δ 1 0 0 SCI121 • Ici δ = 3 • (1+1) mod 3 = 2 Circulation d’un jeton dans un arbre 1 0 0 2 0 0 17/04/2014 J 1 • Sur réception du canal i, un noninitiateur renvoie le jeton sur le canal (i+1) mod δ 1 0 0 SCI121 • Ici δ = 2 • (0+1) mod 2 = 1 Circulation d’un jeton dans un arbre 0 2 0 0 17/04/2014 • Sur réception du canal i, un noninitiateur renvoie le jeton sur le canal (i+1) mod δ 1 0 1 1 0 J 0 SCI121 • Ici δ = 2 • (0+1) mod 2 = 1 Circulation d’un jeton dans un arbre 0 2 0 0 17/04/2014 • Sur réception du canal i, un noninitiateur renvoie le jeton sur le canal (i+1) mod δ 1 0 1 1 0 0 J SCI121 • Ici δ = 1 • (0+1) mod 1 = 0 Circulation d’un jeton dans un arbre 1 0 J 0 2 0 0 17/04/2014 1 • Sur réception du canal i, un noninitiateur renvoie le jeton sur le canal (i+1) mod δ 1 0 0 SCI121 • Ici δ = 2 • (1+1) mod 2 = 0 Circulation d’un jeton dans un arbre 2 0 0 17/04/2014 0 • Sur réception du canal δ-1, l’initiateur décide la terminaison 1 • Ici δ-1 = 1 1 0 1 0 0 SCI121 Circulation d’un jeton dans un réseau quelconque ? • Est-ce que l’algorithme précédent fonctionne ? NON ! 17/04/2014 SCI121 Exemple 2 0 0 1 1 0 1 0 0 1 0 1 0 1 0 1 1 17/04/2014 0 SCI121 Solution • Algorithme de Tarry (1885) • Problème de Labyrinthe • « Ne reprendre l'allée initiale qui a conduit à un carrefour pour la première fois que lorsqu'on ne peut pas faire autrement » • Sommets = intersections • Liens = allées entre les intersections des arêtes 17/04/2014 SCI121 Variables • Pour chaque processus – Un pointeur P ∈ {NULL} ∪ {0…δ-1} (initialisé à NULL) – Un tableau de Booléen VISITE[0…δ-1], initialement toutes les cases sont à faux. 17/04/2014 SCI121 Exemple 2 0 0 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 Exemple J 0 2 0 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 Exemple 2 0 0 J 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 Exemple 2 0 0 0 1 1 0 1 0 0 2 J 17/04/2014 0 1 0 1 1 1 2 0 1 SCI121 Exemple 2 0 0 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 J 2 1 1 0 1 SCI121 Exemple 2 0 0 0 1 1 0 1 0 0 2 J 1 0 1 17/04/2014 0 1 1 2 0 1 SCI121 Exemple 2 0 0 0 1 1 0 1 0 0 2 1 0 1 17/04/2014 J 0 1 1 2 0 1 SCI121 Exemple 2 0 0 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 J 2 1 1 0 1 SCI121 Exemple 2 0 0 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 J 0 1 SCI121 Exemple 2 0 0 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 J Exemple 2 0 0 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 J Exemple 2 0 0 J 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 Exemple 2 0 0 J 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 Exemple 2 0 0 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 J Exemple 2 0 0 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 J Exemple 2 0 0 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 J SCI121 0 1 Exemple 2 0 0 0 1 1 0 1 0 0 2 J 17/04/2014 0 1 0 1 1 1 2 0 1 SCI121 Exemple 2 0 0 J 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 Exemple 2 0 J 0 0 1 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 Exemple 2 0 0 0 1 J 1 1 0 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 Exemple 2 0 0 0 1 J 1 1 0 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 Exemple 0 0 1 Terminé ! 2 0 1 0 1 0 0 2 0 1 0 1 17/04/2014 1 1 2 0 1 SCI121 Plan • • • • • Réseau ? Algorithme distribué ? Problème à résoudre ? Exemple : circulation d’un jeton Conclusion 17/04/2014 SCI121 Conclusion • Depuis 40 ans – La plupart des problèmes d’algorithmiques réparties ont été résolus de manière efficace – En supposant des réseaux sans pannes … 17/04/2014 SCI121 Conclusion: Challenge actuel • Les réseaux modernes sont à grande-échelle et fait de machines hétérogènes et produites en masses à faible coût, e.g. – Internet • (10 milliard de machine connectée d’ici 2016) • Internet des objets – Réseaux sans fils • Communication radio : beaucoup de pertes de messages • Crash de machines à cause des batteries limitées ⇒ Forte probabilité de pannes ⇒ Intervention humain impossible ⇒ Besoin d’algorithmes distribués tolérant les pannes 17/04/2014 SCI121 Merci de votre attention ! 17/04/2014 SCI121