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 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 17/04/2014 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 A 17/04/2014 SCI121
FIFO C B 17/04/2014 SCI121
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 23 17/04/2014 SCI121
Les systèmes distribués Hypothèses Liens bidirectionnels Identité unique Topologie statique et connexe (≈graphe) Nous excluons ici les réseaux téléphoniques sans-fils ! 4078 167 12 23 42 17/04/2014 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 Entrées réparties Racine= vrai Racine= faux Racine= faux Racine= faux Racine= faux 17/04/2014 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 Racine= faux 17/04/2014 SCI121
Algorithme Distribué Exemple : Calcul d’un arbre couvrant Entrées réparties Calculs locaux Mémoires locales Programmes locals Envoi de messages Decision locale Sorties réparties Racine= vrai Racine= faux Racine= faux Racine= faux Racine= faux 17/04/2014 SCI121
Algorithme Distribué Exemple : Calcul d’un arbre couvrant Entrées réparties Calculs locaux Mémoires locales Programmes locals Envoi de messages Decision locale Sorties réparties Tâche globale Racine= vrai Racine= faux Racine= faux Racine= faux Racine= faux 17/04/2014 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 42 58 22 15 56 72 31 17/04/2014 SCI121
Accord : élection Calculer un chef ! 34 12 12 12 12 42 12 12 58 22 12 15 56 12 72 12 31 12 17/04/2014 SCI121
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 1 1 1 1 1 1 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un anneau Un initiateur 1 1 1 1 1 1 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un anneau L’initiateur envoie le jeton J sur le canal 0 1 1 1 1 1 1 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un anneau J Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 1 1 1 1 1 1 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un anneau Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 1 1 1 1 J 1 1 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un anneau Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 1 1 1 1 1 1 J 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un anneau Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 1 1 1 1 1 1 J 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un anneau Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 1 1 1 1 1 1 J 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un anneau Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 1 1 1 1 J 1 1 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un anneau Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod 2 J 1 1 1 1 1 1 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un anneau Sur réception, l’initiateur décide la terminaison 1 1 1 1 1 1 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un arbre Quasiment le même algorithme ! 1 2 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un arbre L’initiateur envoie le jeton J sur le canal 0 1 J 2 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un arbre Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod δ Ici δ = 3 (2+1) mod 3 = 0 1 J 2 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un arbre Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod δ Ici δ = 3 (2+1) mod 3 = 0 1 2 1 J 1 17/04/2014 SCI121
Circulation d’un jeton dans un arbre Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod δ Ici δ = 1 (0+1) mod 1 = 0 1 2 1 1 J 17/04/2014 SCI121
Circulation d’un jeton dans un arbre Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod δ Ici δ = 3 (0+1) mod 3 = 1 1 2 1 J 1 17/04/2014 SCI121
Circulation d’un jeton dans un arbre Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod δ Ici δ = 1 (0+1) mod 1 = 0 1 2 1 1 J 17/04/2014 SCI121
Circulation d’un jeton dans un arbre Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod δ Ici δ = 3 (1+1) mod 3 = 2 1 J 2 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un arbre Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod δ Ici δ = 2 (0+1) mod 2 = 1 1 J 2 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un arbre Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod δ Ici δ = 2 (0+1) mod 2 = 1 1 2 1 J 1 17/04/2014 SCI121
Circulation d’un jeton dans un arbre Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod δ Ici δ = 1 (0+1) mod 1 = 0 1 2 1 1 J 17/04/2014 SCI121
Circulation d’un jeton dans un arbre Sur réception du canal i, un non-initiateur renvoie le jeton sur le canal (i+1) mod δ Ici δ = 2 (1+1) mod 2 = 0 1 J 2 1 1 17/04/2014 SCI121
Circulation d’un jeton dans un arbre Sur réception du canal δ-1, l’initiateur décide la terminaison Ici δ-1 = 1 1 2 1 1 17/04/2014 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 1 1 1 1 1 1 1 1 17/04/2014 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 1 1 1 2 1 1 1 1 1 2 17/04/2014 SCI121
Exemple 2 J 1 1 1 2 1 1 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 1 1 J 2 1 1 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 1 1 2 1 1 J 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 1 1 2 1 1 J 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 1 1 2 J 1 1 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 1 1 2 J 1 1 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 1 1 2 1 1 1 1 J 1 2 17/04/2014 SCI121
Exemple 2 1 1 1 2 1 1 1 1 1 2 J 17/04/2014 SCI121
Exemple 2 1 1 1 2 1 1 J 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 1 1 J 2 1 1 1 1 1 2 17/04/2014 SCI121
Exemple J 2 1 1 1 2 1 1 1 1 1 2 17/04/2014 SCI121
Exemple J 2 1 1 1 2 1 1 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 1 J 1 2 1 1 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 1 1 2 1 1 J 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 1 1 2 1 1 1 1 J 1 2 17/04/2014 SCI121
Exemple 2 1 1 1 2 1 1 J 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 1 1 J 2 1 1 1 1 1 2 17/04/2014 SCI121
Exemple 2 J 1 1 1 2 1 1 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 J 1 1 2 1 1 1 1 1 2 17/04/2014 SCI121
Exemple 2 1 J 1 1 2 1 1 1 1 1 2 17/04/2014 SCI121
Exemple Terminé ! 2 1 1 1 2 1 1 1 1 1 2 17/04/2014 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