Transcript File

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
1
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…
2
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…
3
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
4
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
5
Problèmes de sécurité

6
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
1.
Synchronisation entre la vitesse de transmission et
celle de propagation et réception
2.
Optimiser l’utilisation du canal
3.
É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
7
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
8
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)
9
Notations



mesg:o  dans une instruction d’entrée ou sortie
indique le message du type mesg avec le champs de
données o 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
10
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 11
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
12
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
13
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
14
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.
15
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).
16
Structure d’un organigramme


Deux actions internes pour modéliser les accès : next et accept
 next:a,b indique l’extraction interne des éléments a et b d’une
base de données interne
 accept:a,b le stockage des données dans une base de
données interne
Les deux actions next et accept inclus touts les processus
associés respectivement à l’extraction et le stockage des
données
17
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
18
Synchronisation émetteur-récepteur

Rôle du récepteur :
1.
2.
3.
4.

Rôle de l’émetteur :
1.
2.
3.

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
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
19
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
20
Protocole X-on X-off : Processus
d’émission
21
Protocole X-on X-off : Processus
de réception
22données passe du compteur vers le processus d’acceptation à travers une file
Le message de
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
23
Limites du protocole X-on X-off


Deux problèmes à résoudre :
1.
Protection contre les erreurs de dépassement
d’une manière plus fiable
2.
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
24
Protocole stop and wait

Résout le problème de dépassement mais pas celui de la
perte des données
25
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.
26
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
27
Protocole à fenêtre : canal idéal


W : budget initial alloué (nombre de messages fixé)
28
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

29
La perte d’une séquence de messages d’acquittement
bloquera les deux entités
Délais d’attente : timeouts


30
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
31
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
32
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
33
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é)
34
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
35
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
Message 0
0
1
1
2
2
3
3
36
Contrôle d’erreurs

Problème, le canal peut perdre des données
0
0
1
37
Le récepteur a perdu
l’ordre des messages
2
1
3
2
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)
38
Utilisation du bit alterné

Au début, les deux se mettent d’accord pour
commencer à 0
bit=0
Message 0
0
Attend 0, OK
1
Message 1
0
2
Attend 1, reçoit 0
Erreur
3

Pour pouvoir reprendre, il faut donner au récepteur la
possibilité de demander le renvoi du message perdu
39
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
40
Protocole bit alterné: Arrêt et
attente cas normal
n-1 messages déjà transmis, n pair
Message
n
D0
Attend bit 0: accepté
t
positionne
minuterie t
OK
minuterie t annulée
A
t
n messages transmis
41
D0, D1: messages avec bit 0 ou 1
A: acquittement
Bit dans l’acquittement

Il faut que l’acquittement contienne l’identification du message
reçu, sinon…
n-1 messages déjà transmis, n pair
Message n
D0
Attend bit 0: accepté
A
A retransmet DO et pense que
l’acquittement est pour le 2ème
D0
A
D1
Ceci est l’acquittement du
2ème DO que A croit être
pour D1
42
n messages transmis
Protocole bit alterné: Arrêt et
attente

Cas de perte de message (OK)
n-1 messages déjà transmis, n impair
Message n
B0
Positionne
Minuterie
Temporisation
Doit renvoyer n
B0
n
A0
43
Protocole bit alterné: Arrêt et
attente

Cas de perte d’acquittement (OK)
n-1 messages déjà transmis, n pair
n
D0
Positionne
Minuterie
Temporisation
Doit renvoyer n
A0
Attend 1: écarté
D0
A0
44
Protocole bit alterné: Arrêt et
attente

Chevauchement de message! (OK)
n-1 messages déjà transmis, n pair
n
D0
Positionne
Minuterie
Temporisation
Doit renvoyer
D0
n
A0
45
Attend 1, reçoit 0
Écarter
Protocole bit alterné: Arrêt et
attente

Chevauchement d’ack! (OK)
n-1 messages déjà transmis, n pair
n
D0
Positionne
Minuterie
Temporisation
Doit renvoyer
Attend ack de
0, OK
n+1
A0
D0
D1
n+1
A1
46
Attend 1, écarter
Bit alterné unidirectionnel,
diagramme de transition
B
A
Les actions d’envoi sont soulignées
A0
Numéro de séquence : bit alterné
Origine du message
47
Organigramme du protocole de
bit alterné
48
Notations

Deux type de messages : mesg et ack

Format :




Quatre variables binaires : a, e, r, et s.





{ mesg, data, sequence number }
{ ack, sequence number }
mesg:o:s spécifie un message mesg avec un champ de
données o et un numéro de séquence 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
49
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…
n
n
D0
D0
n
A0
n+1
D1
n+1
A1
A0
50
OK! (croit avoir reçu n+2)
Acquitte vieille donnée
Réceptions non spécifiées
dans BA

Que va faire l’envoyeur avec un A0 après avoir reçu un A1
lorsqu’il n’a rien envoyé?

Il pourrait l’écarter
• le récepteur recevra un deuxième D0 qu’il acquittera et ignorera

Ou il pourrait lire dans le canal seulement après avoir envoyé D0
• Il considérera son dernier D0 acquitté
• Et il répondra avec !D1 à l’A0 que le récepteur lui enverra

Dans les deux cas, le protocole retournera enfin à la normalité
• Mais la mauvaise donnée a été livrée à l’usager
51
Et aussi…

Double chevauchement d’ACK
D0
n
n
A0
n
D0
A0
D1
n+1
n+1
A1
D0
A0
D1
52
D0 n’a pas été reçu, D1
sera écarté
Protocoles à fenêtre d’anticipation
(sliding window)

Le protocole du BA peut être généralisé en utilisant un
compteur de plusieurs bits: p. ex. 4 bits

Nous avons donc un tampon borné de 2n bits, où n est le
nombre de bits

Dans ce cas, il y a plus de liberté concernant la vitesse
relative de l’émetteur et du récepteur


L’émetteur peut continuer d’envoyer des paquets même si un
certain nombre de paquets déjà transmis n’a pas été acquitté
Les protocoles à fenêtre ont été utilisés dans la couche 2 de
X.25, couche 2 de l’OSI et dans TCP

HDLC: High-level Data Link Control
53
Fenêtre d’anticipation

Au moment de l’envoi d’un message, l’émetteur positionne
une minuterie spécifique à ce message

Si l’ack n’est pas reçu dans le délai, le message doit être
retransmis, avec tous les messages qui l’ont suivi jusqu’à la
détection de l’erreur

L’émetteur doit être prêt à renvoyer tous les messages non
acquittés dans une ‘fenêtre’ ou tampon dont la dimension est
reliée à l’intervalle de la minuterie

Il peut réutiliser l’espace des messages acquittés

La dimension de la fenêtre doit être telle que le transmetteur
puisse être sûr de pouvoir retransmettre toutes les trames
non acquittées

L’intervalle de temporisation et la dimension du tampon
doivent54être soigneusement choisis
Fenêtre d’anticipation
émetteur
0
1
2
3
4
L’émetteur s’est
enfin aperçu que
2 n’a pas été
acquitté
(temporisation)
5
6
2
3
4
récepteur
0
1
Erreur
écarté
écarté
écarté
écarté
2
3
4
Émetteur doit garder en mémoire un certain nombre de messages pour pouvoir
éventuellement
55 les retransmettre (dans ce cas, de 2 à 6)
Quelques calculs, par
exemple…

Avec un numéro de séquence de 16 bits, nous
pouvons numéroter 65 536 messages

Si un message est de 27 = 128 bits, ceci demande une
zone tampon de 216x27 = 223 = 8 388 608 bits

À la modeste vitesse de 9 600 bps, tous les numéros
seront utilisés dans 15 minutes

Donc si un message retarde plus de 15 minutes, il
pourrait être interprété comme appartenant à la
séquence suivante
56
Modèle de protocole de fenêtre
d’anticipation

Soit M l’intervalle des numéros de séquences disponibles et W
le budget initial des messages.

M est suffisamment large pour éviter les problèmes de
confusion dus au recyclage

L’émetteur doit mémoriser les messages non acquittés dans
cette fenêtre.

Deux vecteurs de valeurs binaires sont utilisés à ces fins :
 busy[s] = true si le message avec le numéro de séquence s est
émit mais pas acquitté
 store[s] = true si le message avec le numéro de séquence s est
le dernier message émit
 Initialement, busy[s] = store[s] = true
57
Fonctionnement du protocole :
niveau émetteur


L’objectif peut être découpé en 3 sous objectifs
1.
Transmission des messages
2.
Traitements des acquittements
3.
Retransmission des messages non acquittés
Quatre variables supplémentaires (initialisées à 0)
sont utilisées

s, num de séquence du message à envoyer

window, le nombre des messages émis et non acquittés

n, num de séquence du premier message envoyé et non acquitté

m, num de séquence du dernier message acquitté
58
Organigramme BA coté émetteur
59
Fonctionnement du protocole :
niveau récepteur





Le récepteur est divisé en 2 processus :
1.
Processus de réception : reçoit et stocke les messages
2.
Processus d’acceptation : accepte et acquitte les messages en
utilisant les num de séquences pour les remettre dans l’ordre
Les messages sont acquittés que s’ils sont acceptés  éviter
les problèmes de bourrage
recvd[M] : variable booléenne pour mémoriser les num des
séquences de messages reçus mais non encore acceptés
buffer[M] : mémorise le contenu de ces messages
p : num de séquence du prochain message à accepter
(initialiser à 0)
60
Fonctionnement du protocole :
niveau récepteur



Deux raison peuvent provoquer l’arrivée d’un message
dupliqué :
1. Message reçu mais pas encore acquitté.
2. Message reçu et acquitté, l’acquittement n’a pas atteint
l’émetteur.
L’acquittement est retransmit que dans le cas 2.
la décision est en fonction de p
valid(m) = ( 0 < p -m≤W)| |(0 < p +M -m≤W)

Le protocole à fenêtre garanti qu’un message retransmit ne
peut pas avoir un numéro de séquence supérieur à W et
inférieur au dernier message qui a été acquitté
61
Organigramme BA coté récepteur
62
Terminologie


le contrôle de flux utilisant des acquittements pour contrôler la
retransmission est désigné par ARQ (Automatic Repeat Request).
Trois variantes :
 Stop-and-wait ARQ
 Selective repeat ARQ
 Go-back-N continuous ARQ

Le protocole Ping-Pong fait partie de la classe stop-and-wait ARQ.
 Après chaque envoie d’un message, l’émetteur doit attendre un
acquittement (positif ou negatif) ou un timeout

L’utilisation des acquittements dans un protocole à fenêtre
d’anticipation est une méthode ARQ à répétition sélective.
 Seules les premiers messages non acquittées seront transmis
63
La couche liaison aujourd’hui




La couche liaison était très importante à l’époque où
 les réseaux étaient lents et peu fiables (contrôle d’erreurs)
 et les ressources de mémoire des noeuds étaient limitées (contrôle
de flux)
Aujourd’hui les réseaux sont très rapides, très fiables, et les
ressources de mémoire sont importantes
À fins d’efficacité et simplicité, beaucoup d’applications sont bâties
directement sur la couche physique (typiquement, IP)
 Chose qui n’avait pas été prévue par les concepteurs de
l’architecture OSI!
Quel est le résultat dans le cas d’erreur?


Certaines applications ne sont pas sensible aux erreurs occasionnels
• p.ex. voix sur IP, multimédia
L’application peut être bâtie pour détecter et récupérer des erreurs à son
niveau
• p.ex. un programme de consultation de bases de données peut
reconnaître l’erreur car les données ne sont pas reçues dans le
64 format approprié et peut donc demander retransmission