650 likes | 771 Views
La couche Liaison et ses problèmes de contrôle du flux de données. Azza Ouled Zaid Institut Supérieur d’Informatique 2 ème année Cycle Ingénieur. http://www.clipart-darktreasures.com. Deux généraux qui doivent prendre une ville…. Seulement en agissant ensemble peuvent-ils gagner…
E N D
La couche Liaison et ses problèmesde contrôle du flux de données Azza Ouled Zaid Institut Supérieur d’Informatique 2ème année Cycle Ingénieur
http://www.clipart-darktreasures.com Deux généraux qui doivent prendre une ville… • Seulement en agissant ensemble peuvent-ils gagner… • Un général n’attaquera que s’il est certain que l’autre attaquera aussi • Le seul moyen de communication est un pigeon…
http://www.clipart-darktreasures.com Un dialogue sans espoir… • Général A envoie un message: attaquons à 6h demain • Attaqueront-ils? • Non, A attendra confirmation • Général B envoie une réponse: d’accord à 6h demain • Attaqueront-ils? • Non, B attendra confirmation • Général A répond encore: d’accord à 6 h demain • Attaqueront-ils? • Non, A attendra confirmation • Etc…
Il n’y a pas de protocole pour résoudre ce problème! • Preuve (informelle): • Supposez qu’un protocole existe • Il doit impliquer au moins un message • Il doit être tel que si le dernier message est perdu, les généraux attaquent • Donc le dernier message ne serait pas nécessaire • Enlevons le dernier message pour un protocole plus efficace • Le même raisonnement s’applique inductivement à tout message, y inclus le premier! • Aucun message ne serait nécessaire • contradiction
Erreurs résiduels • Après analyse, on découvre que ce résultat s’applique à n’importe quel protocole! • Il n’est pas possible d’établir l’accord certain dans le cas de canaux avec perte • Un aspect fondamental de la preuve est que nous ne savons pas combien de fois le système va échouer • Si nous savons que sûrement il y aura succès au moins 1 fois sur 10, alors l’envoi de 10 pigeons suffira • Étant donné que normalement il est impossible d’établir ce type de borne, il n’est pas possible d’établir la certitude globale dans les systèmes répartis • N’importe la complexité du protocole et la fiabilité du milieu, il y a toujours la possibilité d’erreurs résiduels • On parle donc de taux d’erreur résiduel (residual error rate) • Il est vrai cependant que dans les supports de communication modernes (fibres optiques, etc.) la fiabilité est extrêmement élevée
Problèmes de sécurité • Considérez aussi la possibilité que le pigeon puisse être intercepté et remplacé par un autre pigeon avec un message différent…
Position du problème • Synchronisation entre la vitesse de transmission et celle de propagation et réception • Optimiser l’utilisation du canal • Éviter la congestion • Le 2ème et 3ème objectifs sont complémentaires • L’émission lente est pénalisante • L’émission rapide introduit la congestion • La capacité de stockage des nœuds intermédiaires est limitée pour supporter les messages échangés par plusieurs pairs emetteur-recepteur
Objectif du cours • Établir un système de contrôle de flux complet à partir d’une séquence de modifications apportées à un modèle basique simple • Les règles de procédures de ces protocoles sont définies par un langage de spécification basé sur l’SDL
Contrôle de flux • Le contrôle de flux est un mécanisme pour empêcher l’émetteur d’envoyer plus que le récepteur ne peut recevoir (à cause de l’espace de tamponnage disponible) • Il y a deux formes fondamentales de contrôle de flux: • Explicite: le récepteur dit à l’émetteur qu’il est prêt à recevoir x paquets • Implicite: le récepteur n’accepte pas (p.ex. n’envoie plus d’acquittements)
Notations • mesg:o dans une instruction d’entrée ou sortie indique le message du typemesgavec le champs de donnéeso est émit ou reçu • next:o l’extraction interne de donnée o qui sera transmise dans le prochain (next) message de sortie • accept:i stockage i comme donnée reçue acceptée
Structure d’un organigramme • Les actions d’un processus sont spécifiées par des symboles. • Six types de symboles : • Ces symboles représentes : • Déclarations, e.g, affectations (statement) • Tests booléens, e.g., expressions (test) • Conditions d’attente, e.g., récepteurs (wait) • Événements internes, e.g., timeouts (delais) • Les messages entrant et sortant (input, output)
Structure d’un organigramme • Les tests booléens sont évalués sans délais • Les conditions d’attente sont utilisées pour modéliser la synchronisation du processus • Elles indiquent que l’exécution n’aura lieu que si une condition donnée soit vraie • Les éléments restants d’un organigramme sont : • Les arêtes directionnelles • Les connecteurs
Structure d’un organigramme • Les arêtes directionnelles indiquent que le contrôle du flux converge uniquement vers les connecteurs • Elles peuvent diverger aux conditions d’attentes et aux tests booléens
Structure d’un organigramme • File d’attente de capacité infinie : • Associée à un organigramme du processus • Utilisée pour stocker les messages qui arrivent • Déclarations output : les messages sont insérés dans la file d’attente • Déclarations input : les messages sont extrait de la file d’attente
Structure d’un organigramme • Les outputs, déclarations, conditions d’attente, événements internes et les tests booléens peuvent apparaître à n’importe quelle localisation dans l’organigramme • Les inputs doivent suivre les symboles d’attente que nous désignons par receive.
Structure d’un organigramme • Une condition d’attente (receive)suspend l’exécution du processus jusqu’a se que le type du message contenu dans la première trame de la file d’attente soit défini dans l’une des entrées (inputs) qui suit le symbole d’attente • Si le message dans la première trame de la file est d’un autre type, il s’agit d’une erreur de protocole • Un délai d’attente (timeout) est une condition de synchronisation interne représentée par un événement interne. • L’exécution sera suspendue tant que l’expression (une fois évaluée) donne la valeur booléenne vrai (une valeur non nulle).
Structure d’un organigramme • Deux actions internes pour modéliser les accès :next etaccept • next:a,bindique l’extraction interne des éléments a et b d’une base de données interne • accept:a,ble stockage des données dans une base de données interne • Les deux actions next etaccept inclus touts les processus associés respectivement à l’extraction et le stockage des données
Modèle de protocole basique • Ce protocole est fiable ssi le récepteur est plus rapide que l’émetteur • Violation d’une règle basique de la conception des systèmes répartis: Ne jamais imposer une hypothèse sur les vitesses des processus concurrents
Synchronisation émetteur-récepteur • Rôle du récepteur : • interpréter les données • décider ce qu’il doit faire avec • allouer la mémoire • orienter les données vers un destinataire approprié Consommation d’un temps considérable • Rôle de l’émetteur : • trouver le fournisseur des données à transférer • il est en arrêt tant qu’il n’y a pas de données à transférer • libérer de la mémoire après le transfert moins de temps à consommer • Le goulot dans le protocole est le processus de réception
Première technique de contrôle de flux: protocole X-on X-off • Plus ancien, moins fiable • Deux messages de contrôle : • suspend :suspendre le trafic • resume : réinitialiser le trafic • Hypothèses : • canal est idéal (pas d’erreurs de transmission) • vocabulaire du protocole : V = { mesg, suspend, resume } • Les messages de contrôle "suspend"et"resume"sont utilisés pour implémenter la méthode de contrôle de flux
Protocole X-on X-off : Processus de réception Le message de données passe du compteur vers le processus d’acceptation à travers une file d’attente interne
Limites du protocole X-on X-off • Le fonctionnement correcte d’un protocole dépend des caractéristiques du canal • La perte ou le retard d’un message suspend introduit un problème de dépassement • Le fonctionnement du protocole doit être indépendant du temps que métrera le message de contrôle pour atteindre l’émetteur • Même problème dans le cas d’une perte d’un message resume
Limites du protocole X-on X-off • Deux problèmes à résoudre : • Protection contre les erreurs de dépassement d’une manière plus fiable • Protection contre la perte des messages • Solution au premier problème • L’émetteur attend explicitement un acquittement pour transférer les messages • Protocole ping-pong ou stop and wait
Protocole stop and wait • Résout le problème de dépassement mais pas celui de la perte des données
Limites du protocole X-on X-off • t : temps de propagation • a: temps de réception (traitement et acceptation) • p: temps de transmission • L’émetteur nécessite un délai de (2t + a – p) pour chaque message transmit (retard) • Le message d’acquittement (ack) a donc deux fonctions reliées: • Faire savoir que le message a été reçu correctement (contrôle d’erreur) • Faire savoir que le récepteur est prêt à recevoir un ou plusieurs nouveaux messages (contrôle de flux) • Cette idée conduit à une solution au problème du retard Protocole à fenêtre.
Protocole à fenêtre • Dans la phase d’initiation d’appel, le récepteur peut informer l’émetteur de l’espace mémoire réservé aux messages entrants • L’émetteur dispose alors d’un budget pour un nombre fixe des messages sortants • Le budget peut être mis à jour dynamiquement lorsque la quantité d’espace mémoire disponible change
Protocole à fenêtre : canal idéal • W : budget initial alloué (nombre de messages fixé) • W-n : le budget non utilisé
Perte des messages • L’émetteur sera en attente si seulement si le budget était réduit à 0 • Durant le transfert le budget varie entre 0 et W suivant la rapidité de l’émetteur et le récepteur • Optimisation des communications : l’émetteur peut continuer d’envoyer des paquets même si un certain nombre de paquets déjà transmis n’a pas été acquitté • Mais, le problème de perte, effacement, duplication, désordre sera maintenu • La perte d’une séquence de messages d’acquittement bloquera les deux entités
Délais d’attente : timeouts • ARRÊT ET ATTENTE: Stop and Wait Protocol • L’émetteur envoie, attend acquittement • Si l’acquittement arrive, continue avec proch. message • Sinon (le message ou l’acquittement pourraient être perdus!) renvoie message précédent • Problème: combien de temps attendre • Solution: établir un temps sur la base du temps d’allée/retour du message et son acquittement (le double?) • Minuterie: positionner , annuler
Faute usuelle, • l’émetteur et le récepteur utilisent tout les deux des délais d’attente Diagramme de séquence d’une erreur
Faute usuelle, • L’émetteur et le récepteur décident de retransmettre le dernier message émit (cas d’un effacement) • Lorsque le premier acquittement atteint l’émetteur, ce dernier ne peut pas savoir s’il acquitte le message perdu ou retransmit
Solutions proposées • Leçon n°1 • La retransmission est initiée par l’une des deux entités (émetteur ou récepteur) • En général la retransmission est à la responsabilité de l’émetteur • l’émetteur (seul) sait avec certitude quand une nouv donnée a été transmise • Leçon n°2 • L’acquittement doit indiquer quel message a été acquitté, même dans le cas de l’émission d’un message par période • Ajouter le numéro de séquence pour chaque message de données ou de contrôle
Numérotation des séquences • Le numéro de séquence appartient à un intervalle fini, il faut vérifier que le recyclage des numéros ne perturbe pas le bon fonctionnement du protocole • Nous allons voir que la numérotation des séquences est utilisée en combinaison avec le protocole à fenêtre • Avant d’établir la combinaison, protocole à fenêtre d’anticipation, nous allons nous familiariser avec l’utilisation des délais d’attente et la numérotation des séquences (protocole du bit alterné)
Le protocole du bit alterné (BA) • Le protocole BA est le 1er protocole qui fut spécifié en utilisant la notion de modèle de transitions d’état • Article de Bartlett et Scantlebury dans Comm. ACM May 1969, disponible à partir de http://portal.acm.org/portal.cfm • Excellent et fameux article, 2 pages seulement! • Parfois cité comme 1er article dans l’ingénierie des protocoles • BA est un des plus simples protocoles de liaison données, mais il • Démontre les principes fondamentaux de tous les protocoles de liaison de données • Réussit à récupérer des erreurs de transmission • Dans certaines limites… • Il a été utilisé dans un grand nombre d’études sur la validation des protocoles • Cependant chaque étude dépend d’un formalisme particulier
0 Message 0 1 1 2 2 3 3 Découvrons le protocole du bit alterné • Exigence: un protocole qui accepte une séquence de paquets de données et les remet à l’autre côté dans le même ordre
Contrôle d’erreurs • Problème, le canal peut perdre des données 0 0 1 Le récepteur a perdu l’ordre des messages 1 2 2 3
Compter les messages • Chaque message contient son numéro, de façon à ce que le récepteur sache quel message il vient de recevoir • Besoin de connexion: les deux côtés doivent initialiser une connexion, ce qui permet d’initialiser le comptage • Étant donné qu’il faut pas gaspiller les bits pour le comptage, essayons avec le plus petit compteur possible: 1 bit (numéro du message mod 2)
Utilisation du bit alterné • Au début, les deux se mettent d’accord pour commencer à 0 • Pour pouvoir reprendre, il faut donner au récepteur la possibilité de demander le renvoi du message perdu bit=0 Attend 0, OK 0 Message 0 1 Message 1 0 Attend 1, reçoit 0 Erreur 2 3
Deux méthodes • Le récepteur peut envoyer un message NACK 0, signalant le fait que le message 0 n’a pas été reçu • Mais le message NACK pourrait aussi se perdre, donc la solution préférée est d’exiger un ACK pour chaque message reçu • ARRÊT ET ATTENTE: Stop and Wait Protocol
n-1 messages déjà transmis, n pair Message n D0 Attend bit 0: accepté t positionne minuterie t A OK minuterie t annulée t n messages transmis D0, D1: messages avec bit 0 ou 1 A: acquittement Protocole bit alterné: Arrêt et attente cas normal
n-1 messages déjà transmis, n pair Message n D0 Attend bit 0: accepté A D0 A D1 Ceci est l’acquittement du 2ème DO que A croit être pour D1 n messages transmis Bit dans l’acquittement • Il faut que l’acquittement contienne l’identification du message reçu, sinon… A retransmet DO et pense que l’acquittement est pour le 2ème
n-1 messages déjà transmis, n impair Message n B0 Positionne Minuterie Temporisation Doit renvoyer n B0 n A0 Protocole bit alterné: Arrêt et attente • Cas de perte de message (OK)
n-1 messages déjà transmis, n pair D0 n Positionne Minuterie A0 Temporisation Doit renvoyer n D0 A0 Protocole bit alterné: Arrêt et attente • Cas de perte d’acquittement (OK) Attend 1: écarté
n-1 messages déjà transmis, n pair D0 n Positionne Minuterie Temporisation Doit renvoyer D0 n Attend 1, reçoit 0 Écarter A0 Protocole bit alterné: Arrêt et attente • Chevauchement de message! (OK)
n-1 messages déjà transmis, n pair D0 n Positionne Minuterie A0 Temporisation Doit renvoyer D0 Attend 1, écarter Attend ack de 0, OK D1 n+1 n+1 A1 Protocole bit alterné: Arrêt et attente • Chevauchement d’ack! (OK)
A 0 Numéro de séquence : bit alterné Origine du message Bit alterné unidirectionnel, diagramme de transition B A Les actions d’envoi sont soulignées
Notations • Deux type de messages : mesg etack • Format : • { mesg, data, sequence number} • { ack, sequence number} • mesg:o:sspécifie un message mesg avec un champ de données o et un numéro de séquence s. • Quatre variables binaires : a, e, r, et s. • s : utilisé par l’émetteur pour enregistrer le numéro de la dernière séquence envoyée • r : numéro de la dernière séquence reçue • e : numéro de la prochaine séquence attendu par le récepteur • a: numéro de la séquence qui vient d’être reçue • Toutes les variables sont initiées à zéro
n D0 n n A0 D1 n+1 n+1 A1 OK! (croit avoir reçu n+2) A0 Acquitte vieille donnée Problèmes (montrant que ce protocole n’est pas parfait, comme attendu) • Double chevauchement de message! • Un vieux message échoué avec un bit égal à ce qui est attendu sera considéré bon… D0