chapitre iii : les protocoles de liaisons de données · 2017-11-16 · ingénierie des réseaux...
TRANSCRIPT
Ingénierie des réseaux
Chapitre III :
Les protocoles de liaisons de données
ESEN Université De La Manouba
14/11/17 2
Introduction
PhysiquePhysique
LiaisonLiaison
RéseauRéseau
PhysiquePhysique
LiaisonLiaison
RéseauRéseau
Support Physique
Paquet
Bits 010101
Trame
14/11/17 3
Introduction
● Fournir les services nécessaires pour établir, maintenir et libérer une connexion
● Acheminer les trames sur la liaison physique
● Contrôler le flux de données afin d’éviter la saturation du récepteur
● Contrôler la correction de la transmission des données
Support Physique
Liaison de données
14/11/2017 4
Trames
• Une trame est une suite de bits.
• Selon le protocole, elle peut être de taille fixe ou variable (mais bornée)– X25.2, Ethernet : Taille variable– ATM : Taille fixe (53 octets)
• Délimitation explicite ou implicite.– Utilisation de fanions de début (et de fin) de trame.– Détection de fin de trame par absence de signale
• La structure varie selon le protocole, mais souvent divisée en 3 parties: en-tête, données et terminaison.
14/11/2017 5
Format générale d’une trame
Délimiteur du début
Données Délimiteur de fin
Champs d’InformationEn-tête Terminaison
14/11/2017 6
Synchronisation au niveau de la trame
• La couche physique (grâce à la technique de codage utilisée) permet généralement au récepteur de reconstituer (à l’aide du signal reçu) l’horloge
• La couche physique assure la synchronisation au niveau du bit et ainsi reconstruit la suite binaire envoyée.
• La couche liaison de données à partir de cette suite binaire va reconstituer la trame envoyée en assurant la synchronisation au niveau de la trame
14/11/2017 7
Méthodes de délimitation des trames
• Chaque trame commence par un délimiteur de début et peut se terminer par un délimiteur de fin.
• Un délimiteur peut être :– soit une séquence particulière de caractères,– soit une suite particulière de bits, – soit un codage particulier
• Des séquences, non-utilisées pour coder les éléments binaires, servent à délimiter les trames.
• Utilisation d’un compteur de caractères:– L’en-tête de trame contient un champ indiquant la longueur de la trame.– Problème: si la valeur du champ est modifiée au cours de la transmission – Méthode rarement utilisée seule
14/11/2017 8
Exemple d’utilisation d’un compteur de caractères
06 ‘S’ ‘U’ ‘P’ ‘E’ ‘R’ 03 ‘L’ ‘E’ 06 ‘C’ ‘O’ ‘U’ ‘R’ ‘S’TrameÉmise
ParasitesParasites
TrameReçue
06 ‘S’ ‘U’ ‘P’ ‘E’ ‘R’ 04 ‘L’ ‘E’ ’06’ 67 ‘O’ ‘U’ ‘R’ ‘S’
Code ASCII de C
14/11/2017 10
Techniques de contrôle: les solutions
• Mécanisme de détection des erreurs
• Mécanisme d’acquittement positif ou négatif
• Techniques de mémorisation des trames et de correction par retransmission
• Utilisation de temporisateurs
• Identification des trames
14/11/2017 11
Identifications
• Une numérotation permet d’identifier les trames et leur acquittement
• L’unité d’identification varie en fonction des protocoles: la trame (par exemple HDLC), l’octet (par exemple TCP)
• Plus l’unité est petite plus l’identification est précise mais plus c’est coûteux (taille du champ)
• ex : TCP = 16 bits
• La numérotation se fait modulo N (=2la_largeur_du_champ_de_numérotation)
14/11/2017 12
Identifications
• L’identification permet de détecter
– l’absence de trames: perte
– la duplication de trames: destruction du duplicata
– l’ordonnancement des trames: ré-ordonnancement si la mémorisation est autorisée
– sinon destruction des trames n’arrivant pas dans le bonne ordre (+ facile).
14/11/2017 13
Perte de trames
I. Vérification au récepteur de données– Vérification du format des trames: longueur, valeurs prédéfinies de
certains champs– Détection de la corruption des trames: champ de contrôle d’erreur
II. Information de l’émetteur de données–. Soit implicitement: par temporisateur armé à chaque envoi de
trame, désarmé lors de la réception d’un acquittement–. Soit explicitement: par un Negative Acknowledgment (Nack)
• Le rejet total: retransmission de toutes les trames à partir de celle spécifiée• Le rejet sélectif: retransmission de la trame spécifiée
III. Retransmission de la trame (perdue ou détruite) par l’émetteur
14/11/2017 15
Piggybacking
• Au sein d’un flot de données unidirectionnel, on peut discerner deux sous-flux: – le sous-flux de données: de l’émetteur de données au
récepteur– et le sous-flux de commande: du récepteur vers l’émetteur
de données (Ack par exemple).
• Lorsque le flot de données est bidirectionnel, deux sens de transmission des données existent.– Les deux systèmes d’extrémité fonctionnent à la fois comme
émetteur de données et comme récepteur de données.
14/11/2017 16
Piggybacking
DATA
CMD
DATA
CMD
DATA
CMD
flot de données unidirectionnel flot de données bidirectionnel
14/11/2017 17
Piggybacking
• Piggybacking: – Les trames transportant le sous-flux de
données d’un sens de transmission sont combinées avec les trames du sous-flux de commande de l’autre sens.
– Par exemple : Une même trame peut se comporter à la fois comme une trame de données (elle possède un champ d’information) et un acquittement (elle possède un champ du même nom).
14/11/2017 18
Piggybacking
DATA
CMD
DATA
CMD
DATA + CMD
Sans piggybacking Avec piggybacking
DATA + CMD
14/11/2017 20
CONTRÔLE DE FLUX● Lorsqu'un émetteur émet de façon systématique plus de
trame que le récepteur peut en accepter → il se pose un problème que doit résoudre la couche liaison de données
● Même si la transmission s'effectue sans erreur, le récepteur ne peut traiter toutes les trames émises et en perdra certaines
→ il faut mettre des mécanismes pour éviter cette situation
14/11/2017 21
CONTRÔLE DE FLUX
● La solution habituelle consiste à instaurer un contrôle de flux pour contraindre l'émetteur à ne pas envoyer plus de trames que le récepteur ne peut en accepter.
● Principe de base : il est interdit à l'émetteur d'envoyer des trames sans avoir auparavant reçu une permission implicite ou explicite du récepteur
14/11/2017 22
CONTRÔLE DE FLUX : MÉCANISMES MIS EN OEUVRE
• Utilisation d'acquittements
• Gestion de temporisateurs
• Numérotation des trames
• Limitation du nombre de trames pouvant être envoyées par l'émetteur
14/11/2017 23
PROTOCOLE 1 : MONODIRECTIONNEL UTOPIQUE
● H1: On ne transmet les données que dans un sens.
● H2 : Les couches réseaux cotées émetteur et récepteur sont toujours prêtes respectivement à émettre ou recevoir des paquets.
● H3 : Les temps de calcul sont considérés comme négligeable.
● H4 : On dispose autant de mémoire tampon que nécessaire.
● H5 : Le canal de communication est parfait : aucune trame n'est erronée ni perdue.
14/11/2017 25
PROTOCOLE 2 : MONODIRECTIONNEL (ENVOYER & ATTENDRE) SEND & WAIT
• Hypothèse levée : H4 mémoire tampon infinie
• Problème à résoudre : empêcher l'émetteur d'envoyer des données plus rapidement que le récepteur ne peut les traiter
14/11/2017 26
PROTOCOLE 2 : MONODIRECTIONNEL (ENVOYER & ATTENDRE) SEND & WAIT
• Si le récepteur a besoin de t secondes pour exécuter from_physical_layer + to_network_layer, l'émetteur doit émettre en moyenne moins d'une trame par t secondes.
• L’émetteur ne doit jamais envoyer une trame avant que la précédente n'ait été traité par from_physical_layer, sinon la trame en cours de traitement est écrasée par celle qui arrive.
14/11/2017 27
PROTOCOLE 2 : MONODIRECTIONNEL (ENVOYER & ATTENDRE) SEND & WAIT ● Solution : obliger le récepteur à informer
l'émetteur de son état
● Après avoir transmis un paquet à la couche réseau, le récepteur envoie à l'émetteur une petite trame ne contenant aucune information mais donnant à l'émetteur la permission de transmettre la trame suivante
14/11/2017 29
PROTOCOLE 3: MONODIRECTIONNEL POUR UN CANAL BRUITÉ
• Hypothèse levée : H5 canal parfait– Des trames peuvent être erronées ou perdues
• Solution 1 : Ajouter un temporisateur au niveau de l’émetteur
– Le récepteur n’émet un acquittement que si les données sont correctement reçus.
– Si une trame erronée arrive, elle ne sera pas prise en compte
– Après l'expiration du temporisateur, l'émetteur retransmet la même trame
14/11/2017 30
PROTOCOLE 3: MONODIRECTIONNEL POUR UN CANAL BRUITÉ
• Solution 1 : elle présente un gros défaut– La couche réseau n'a aucun moyen de savoir si un
paquet a été perdu ou dupliqué– Perte des trames d’acquittement → le canal est
bruité aussi bien pour les trames de données que les acquittements
– Perte d’acquittement alors que la trame est reçu correctement, retransmission d'une trame bien reçu → duplication
14/11/2017 31
PROTOCOLE : MONODIRECTIONNEL POUR UN CANAL BRUITÉ
Trame 1
Ack
TimeoutTrame 1
Ack
Problème:
le récepteur ne distingue pas une trame transmise pour la première fois d’une trame retransmise
Si A envoie à B un fichier, une partie de fichier sera dupliquée
14/11/2017 32
PROTOCOLE 3: MONODIRECTIONNEL POUR UN CANAL BRUITÉ
• Il est nécessaire de numéroter les trames pour distinguer deux trame successives.
• Il est préférable que la trame d'acquittement contienne le numéro de la trame qui est acquittée.
14/11/2017 33
PROTOCOLE 3 : MONODIRECTIONNEL POUR UN CANAL BRUITÉ● Le récepteur doit être en mesure de distinguer
une trame émise pour le première fois qu'une trame retransmise.
→ il suffit d'ajouter un numéro de séquence dans l'en-tête de la trame.
→ Solution : ARQ : Automatic Repeat Request
14/11/2017 36
PROTOCOLES AVEC FENÊTRE D'ANTICIPATION
● Hypothèse levée : H1) transmettre des données dans les deux sens
● Objectifs :utilisation du principe de piggybacking
● Ajouter un champ type dans la trame : ack ou data !
● Question : combine de temps la couche liaison de données doit-elle attendre avant de décider de joindre un ack à une trame de donnée ?
14/11/2017 37
PROTOCOLES AVEC FENÊTRE D'ANTICIPATION● Les trames émises possèdent un numéro de séquence variant de 0
à un max= 2n -1, n longueur du champ numéro de séquence
● Fenêtre d'émission : la liste de numéros de séquence des trames dont l'émission est autorisé
● Fenêtre de réception : la liste des numéros de séquence des trames que l'on attend en réception
● Variantes possibles– Taille fixe
– Taille variable
14/11/2017 38
PROTOCOLES AVEC FENÊTRE D'ANTICIPATION
• La liaison de données est inoccupée la plupart du temps. – L’émetteur passe son temps à attendre l’acquittement du récepteur
– Le récepteur passe son temps à attendre la trame de données de l’émetteur
→ Protocole à fenêtres d’anticipation (sliding windows)
• Deux fenêtres sont gérées par chaque entité de couche liaison. En effet:– Toute entité émettrice possède une fenêtre d'anticipation appelé fenêtre
d’émission.
– Toute entité réceptrice possède une fenêtre d'anticipation appelée fenêtre de réception
14/11/2017 39
PROTOCOLES AVEC FENÊTRE D'ANTICIPATION● Les numéros de séquences situés à l’intérieur
de la fenêtre d'émission correspondent aux trames envoyées mais non encore acquittés– Arrivée d'un trame de la couche réseau à la couche liaison
de données : borne supérieure de la fenêtre d’émission est augmentée de 1
– Arrivée d'un ack : la borne inférieure est augmentée de 1
→ on a toujours la liste des trames non acquittées
14/11/2017 40
PROTOCOLES AVEC FENÊTRE D'ANTICIPATION
A sliding window of size 1, with a 3-bit sequence number. (a) Initially.
(b) After the first frame has been sent. (c) After the first frame has been received.
(d) After the first acknowledgement has been received.
14/11/2017 41
PROTOCOLE 4 : ONE-BIT SLIDING WINDOW ● Protocole avec fenêtre d'anticipation de
largeur 1– De type « send and wait » : l’émetteur envoie une trame et
attend son ack avant d'envoyer la suivante
● Deux variables– Next_frame_to_send: indique le numéro de la trame que
l'émetteur veut envoyer
– frame_expected : le numéro de séquence de la trame que le récepteur s'attend à recevoir
– Les seuls valeurs prisent sont '0' et '1'
14/11/2017 42
PROTOCOLE 4 : ONE-BIT SLIDING WINDOW
● Cas où la station A commence à envoyer
● Notation● Seq,Ack, Numéro du
paquet● * : la couche réseau reçoit
le paquet
14/11/2017 43
PROTOCOLE 4 : ONE-BIT SLIDING WINDOW
● Cas critique– A veut envoyer la trame '0' à B
– B veut envoyer la trame '0' à A
● A envoie sa trame et arme son temporisateur– Le temporisateur expire de manière répétitive
– A envoie une série de trame identiques avec seq ← 0 et ack ← 1
● B reçoit la première trame valide, il l'accepte et met frame_expected ← 1– Toutes les trames arrivant ensuite seront rejetées puisque B attend des trames
de numéro de séquence égale à 1 et non 0
– Toutes les trames dupliquées ont le champ ack=1 et que B attend un acquittement de la trame 0, B n'ira pas chercher un nouveau paquet de sa couche réseau
14/11/2017 44
PROTOCOLE 4 : ONE-BIT SLIDING WINDOW
● Après avoir rejeté toutes les trames dupliqués, B envoie une trame contenant seq ← 0 et ack ← 0
● Lorsque A reçoit cette trame, il peut envoyer le prochain paquet.
● Problème de synchronisation : les deux stations envoient simultanément un paquet initiale
14/11/2017 45
PROTOCOLE 4 : ONE-BIT SLIDING WINDOW
● Cas où A et B envoient simultanément leurs premier paquet
● Notation● Seq,Ack, Numéro du
paquet● * : la couche réseau reçoit
le paquet
14/11/2017 47
PROTOCOLE 5 : GO-BACK N
● Hypothèse tacite : la somme des temps de transmission nécessaires pour l'envoie de la trame et la réception de l'acquittement était négligeable → hypothèse non réaliste
● Impact du protocole 4 : canal satellite à 50 kbit/s avec un délai de propagation aller-retour de 500ms et des trames 1000 bits– À t=0 : l'émetteur commence l'envoie de la trame
– À t=20ms (1000bits/50kbit/s), la trame a été complètement émise
– À t=270ms : la trame arrive au récepteur
– À t=520ms : l'acquittement est reçu par l 'émetteur
→ l'émetteur est bloqué durant 500/520=96 % du temps
→ on utilise 4 % de la bande passante!
14/11/2017 48
PROTOCOLE 5 : GO-BACK N
● Le problème est dû au fait que l'émetteur doit attendre un acquittement avant de pouvoir envoyer la trame suivante– Si nous supprimons cette restriction, nous pouvant obtenir une meilleur
efficacité
● Désormais l'émetteur pourra envoyer 'w' trames de façon continue = Pipelining– L’émetteur pourra émettre de façon continue pendant un temps égale au
délai aller-retour sans atteindre la limite de la fenêtre d'anticipation.
– Dans notre exemple w devrait être égale à au moins 26.
– Envoie de 26 trames nécessite 520ms = temps de réception du premier ack
– Les acquittement continueront d'arriver toutes les 20ms
– Taille de la fenêtre d'anticipation = 26
14/11/2017 49
PROTOCOLE 5 : GO-BACK N
● Soit :– la capacité du canal est b bits/s
– La taille de la trame est l bits
– Temps d'aller-retour de propagation R secondes
● Il faut l/b secondes pour transmettre une trame
● Après l'envoie du dernier bit de la trame, il faut attendre R/2 seconde pour que ce bit soit reçu par le récepteur
● Et encore R/2 secondes pour que l'acquittement parviennes à l'émetteur
14/11/2017 50
PROTOCOLE 5 : GO-BACK N
● Dans le protocole send-and-wait :– La ligne est occupée pendant l/b secondes et libre pendant
R seconds
– Ce qui donne un taux d’utilisation de (l/b)/(l/b+R) = l / (l+bR)
– Si l < bR, l'efficacité du canal est inférieur à 50 % !
14/11/2017 51
PROTOCOLE 5 : GO-BACK N
● Que se passe-t-il si une trame située au milieu de la série de trame envoyées est perdu ou erronée ?
● Que doit faire le récepteur des trames correctes reçus ?
● La couche liaison de données doit remettre les paquets à la couche réseau dans l'ordre de leurs émission.
● Deux techniques de rejet sont possibles:
– Technique du rejet total
– Technique du rejet sélectif (selective repeat)
→ compris bande passante / taille mémoire tampon
14/11/2017 52
PROTOCOLE 5 : GO-BACK N
Le récepteur rejette toutes les trames qui suivent celle qui est erronée.
Inconvénient : le canal est mal exploité
Avantage : pas besoin de mémoires tampons
Le récepteur accepte les suivantes (en les stockant) jusqu'à une certaine limite donnée
Avantage : le canal est mieux exploité
Inconvénient : besoin de mémoires tampons
Rejet Total Rejet Sélectif
14/11/2017 57
PROTOCOLE 6 : SELECTIVE REPEAT (REJET SÉLECTIF)
● Le protocole 5 fonctionne correctement lorsque les erreurs sont rares
● En revanche, si le taux d'erreur est élevé, les retransmissions font perdre une partie de la bande passante
● Le récepteur possède une mémoire tampon pour chacune des trames dont le numéro de séquence figure dans la fenêtre
14/11/2017 59
Efficacité du Send-and-Wait
• ttrame : durée de transmission d’une trame
• tpropag : délai de propagation du signal
• ttrait : délai de traitement → négligeable
• tacq : durée de transmission d’un acquittement → négligeable
• Durée totale d’occupation du support de transmission pour transmettre la trame :
Tt = ttrame + 2 tpropag + 2 ttrait + tacq
14/11/2017 60
Efficacité du Send-and-Wait
• Il est commode de raisonner en durée normalisée :– Durée de trame : 1
– Délai de propagation du signal a = tpropag / ttrame
– Durée totale d’occupation : Tt ~ 1 + 2a
• Efficacité U du protocole = Durée utile / Durée totale
• USW = 1/(1 + 2a)
14/11/2017 61
Efficacité du Send-and-Wait
● Cas d’une liaison satellite– Débit = 2 Mbit/s
– tpropag = 270 ms
– Taille de la trame = 128 octets
● a = tpropag / ttrame = 527,34375
– Tpropag = 0,27s
– Ttrame = (128*8)/2*10⁶ =0,000512s
● U = 1/(1+2a) = 0,00094725 = 0,1 %
14/11/2017 62
Efficacité de l’anticipation en l’absence d’erreurs
● Taille N de la fenêtre d’anticipation (=durée normalisée) : nombre de trames qu’on peut émettre sans attente d’acquittement
● Si N > 1+2a (1+2a : durée totale d'occupation)
→ alors pas de perte de temps U = 1
● Si N < 1+2a (1+2a : durée totale d'occupation)
→ alors Uant = N / (1 + 2a)
→ Durée moyenne de transmission d’une trame : (1+2a)/N
14/11/2017 63
Efficacité des protocoles de liaison de données en présence d’erreurs
● Hypothèses– Les erreurs sont isolées (faibles probabilités d’avoir deux erreurs
successives)
– Le canal de retour est parfait : pas d’erreur sur les acquittements
– Temporisation d’attente maximale d’un acquittement dimensionnée au plus juste (pour le Send and Wait)
● On note p la probabilité d’erreur sur une trame
● On raisonne en durée normalisée
14/11/2017 64
Efficacité du Send-and-Wait avec erreurs
● Probabilité de transmettre au bout de k essais ( k -1 échec puis 1 succès) : – p^(k -1) (1- p )
● Nombre moyen de transmissions :
– Σkp^(k -1) (1- p )= 1/(1-p)
● U'sw = 1/[( 1+2a )*( 1/(1-p) )]= (1-p)/(1+2a)
14/11/2017 65
Efficacité du protocole Go-back-N avec erreurs (1)
● Cas avec anticipation insuffisante même en cas de bon fonctionnement
● L’émetteur s’aperçoit de l’erreur au bout de 2+2a (1 + (1+2a)) trames
● Pour k transmissions, on perd (k -1)(2+2a) à chaque cas d’échec puis on prend durée équivalente à (1+2a)/N pour transmettre
14/11/2017 66
Efficacité du protocole Go-back-N avec erreurs (1)
● Durée moyenne :
Nr : Σk[(k -1)(2+2a) +(1+2a)/N ]p^(k -1) (1- p )
● Après calcul, Nr =((2+2a )p/(1- p ))+(1+2a)/N
● Pour N < 1+2a , U’GbN = 1/Nr =
N(1 - p )/[(1- p )(1 + 2 a )+2pN (1+ a )]
14/11/2017 67
Efficacité du protocole Go-back-N avec erreurs (2)
● Cas avec anticipation suffisante même en cas d’erreur : N > 2+2a
● L’émetteur s’aperçoit de l’erreur au bout de 2 + 2a trames
● Pour k transmissions, on perd (k -1)(2+2a) à chaque cas d’échec puis on prend durée équivalente à 1 pour transmettre (sans erreur, efficacité max)
14/11/2017 68
Efficacité du protocole Go-back-N avec erreurs (2)
● Durée moyenne :
Nr : Σk[(k -1)(2+2a) +1]p^(k -1) (1- p )
● Après calcul, Nr =(1+ p (1+2a))/(1- p )
● Pour N > 2+2a , U’GbN = (1 - p)/[(1- p ) +2p(1+ a)]
14/11/2017 69
Efficacité du protocole Selective Reject/Repeat avec erreurs (1)
● Cas avec anticipation suffisante même en cas d’erreur– En cas d’erreur, la fenêtre d’anticipation ne doit pas être bloquée
– Il faut au minimum que N > 1 + 2a + 1 + 2a = 2(1+2a) (1 retransmission)
● Dans ce cas, on ne perd que la durée nécessaire à la retransmission de la trame erronée :– alors U’GbN = (1 - p )*Uant
– donc pour N grand, U’SR = (1 - p )
14/11/2017 70
Efficacité du protocole Selective Reject/Repeat avec erreurs (2)
● Cas avec anticipation insuffisante même en cas de bon fonctionnement
● Pas de gain par rapport à Go-back N, la fenêtre d’anticipation est pleine !
● donc U’ SR = N (1 - p)/[(1- p)(1 + 2 a) +2 pN(1+ a )]
14/11/2017 72
Comparaison des différents protocoles
● Le Stop and Wait a des performances notablement inférieures aux protocoles à anticipation
● Pour les faibles valeurs de a , une fenêtre d’anticipation de 2 et le Go-back-N suffisent
● Le rejet sélectif ne se justifie que pour d’importantes valeurs de a
● Pour profiter du gain apporté par le rejet sélectif, il faut une fenêtre d’anticipation grande
● Très souvent, on utilise le Go-back-N qui est plus simple
14/11/2017 73
Considération sur le paramètre a
● Le paramètre a représente le délai de propagation normalisé– a = tpropag / ttrame
● On peut exprimer a en fonction de la taille de la trame L trame (dépendantde l’application et pas de la technologie) et du débit D
– a = D*tpropag / Ltrame
● Le numérateur dépend uniquement de la technologie : D*tpropag
14/11/2017 74
Considération sur le paramètre a
● Si (les distances augmentent) ou (le débit augmente) alors – a augmente
– donc l’efficacité diminue
14/11/2017 75
Impact de l’augmentation des débits de transmission
● La taille de la fenêtre d’anticipation N dépend de la capacité mémoire– Si le débit tend vers l’infini, on arrive toujours au cas N <
2+2 a car a tend vers l’infini
– Le débit utile est obtenu par D.U’SR = DN (1 - p ) /[(1- p )(1 + 2 a ) +2 pN (1+ a )]
● Pour D infini , le débit utile tend vers une valeur fixe :– N (1 - p )Ltrame /2t propag/[1- p + pN ]
14/11/2017 76
Impact de l’augmentation des débits de transmission
● Conclusions– L’augmentation des débits nominaux de transmission ne
provoque pas systématiquement une augmentation proportionnelle du débit utile (existence d’une asymptote)
– La capacité mémoire est une limitation importante