Title: Allocation de Mmoire Buffering et Exemples de Session Interactive
1Allocation de Mémoire Buffering et Exemples de
Session Interactive
2Rappel
- Contrôle de flux cest des techniques qui assure
que les trames envoyés ne surcharge pas la
mémoire (buffer ) de la destination. - La destination réserve une partie de la mémoire
de données. - Quand un trame arrive, la destination va mettre
le trame dans la partie de mémoire réserve pour
son processus avant de le passer a la couche
supérieur. - Dans le cas de labsence du contrôle de flux, les
buffers peuvent être remplis ce qui nous ramène a
la congestion. - On a vu quil y a deux techniques de contrôle de
flux qui sont - Arrêt et attend (stop-and-Wait).
- Fenêtre de glissage (Sliding-Window).
- Ces deux techniques dépendent de lallocation de
mémoire, buffer,
3Le Buffering
- Buffer du cote du émetteur
- Récepteur doit mettre une copie des trames
transmis en mémoire ( buffer ) jusquà lenvoie
dun reçu positif de la part de lémetteur. Ainsi
dans le cas denvoie dun reçu négative ou de la
fin de délai d'attente ( timeout ), le récepteur
retrouve une copie de la trame a partir du
buffer et la transmis. - Cest le cas dun réseau non fiable en
particulier. - Buffer du cote du récepteur
- Dans le cas dun réseau fiable, lémetteur peut
ne pas avoir besoin du buffer. Mais le récepteur
doit avoir un buffer pour mémoriser les trames
pour processus. Lémetteur doit savoir si le
récepteur a toujours de lespace dans le buffer
pour plus de trames.
4Le Buffering
- Rappelons le mécanisme de demande de répétition
automatique (ARQ) - Récepteur informe lémetteur sil ny pas
despace dans le buffer. - Émetteur arrête la transmission des trames.
- Récepteur informe lémetteur du trame endommage.
- Émetteur doit retransmettre une copie du trame.
5Ajustement de lAllocation du Buffer
- Émetteur et récepteur devraient être capable
dajuster leur buffer dynamiquement au changement
du trafic du flux. - Émetteur devrait être capable de demander au
récepteur de réserver une partie de lespace du
buffer. - Récepteur peut informer lémetteur sur la
quantité despace du buffer disponible. - Buffers peuvent être réservés pour chaque
connexion séparément, ou pour toute communication
entre deux nuds.
6Numéro Séquentiel
- Assure que tous les messages sont reçus une seule
fois, et dans l'ordre, à la destination.
noeud 1
noeud 2
Seq.
Duplicata a ecarte
7Gestion Dynamique du Buffer
- Les numéros de séquence doivent occuper un espace
dans le trame. - La taille de cet espace reliée au contrôle
derreur. - Pour numéros de séquence de k bits despace.
- Les numéros de séquence sont de modelo de 2k
entre 0 et 2k 1. Après chaque cycle les
numéros sont re-utilisés. - La taille maximale de fenêtre de trames est de 2k
1 trames.
8Gestion Dynamique du Buffer
- Initialement, émetteur demande au récepteur un
certain nombre de buffers pour lallocation des
trames. - Récepteur répond en permettant un nombre de
buffers ceci défini la taille de fenêtre pour
lémetteur. - Chaque fois que lémetteur transmis un trame,
- il incrémente le numéro de séquence et lui encode
dans le trame suivant, - déclenche le timer, et.
- décrémente son allocation du buffer.
- si timeout arrive, trame sera déclare perdu et
une copie devrait être retransmis.
9Gestion Dynamique du Buffer
- Si lallocation du buffer attribuée a lémetteur
atteint le zéro, il doit arrêter la transmission
des trames jusqua ce que le récepteur offrira
plus dallocation de buffer. - Récepteur transmis un reçu dAck qui inclus
- Les plus grand numéro séquentiel de consécutif
trames qui ont réussi darriver saint et sauve. - Nombre de buffers disponible.
10Gestion Dynamique du Buffer
- Dans cet arrangement, le récepteur ne reconnaît
(acknowledge ) pas des trames spécifiques - En particulier, si le récepteur reconnaît
(acknowledge) le trame 5, et reçoit alors avec
succès le trame 7, il ne peut pas accuser
réception le trame 7 jusqu'à ce que le trame 6
soit également arrivée. C'est le protocole
dAller-En arrière-N ( Go-Back-N ). - Basé sur le numéro de reçu dack, lémetteur
connaît combien de trames peuvent être effacées
du buffer émetteur. - La figure 1 explique bien le processus de
fenêtre de glissage et comment faisait la gestion
dynamique du buffer.
11Figure 1 Gestion Dynamique du Buffer
Trames memorise jusqua Ack
Emetteur
Trames deja transmis
Fenetre des trames pour possible transmission
0 1 2 3 4
5 6 7 ..
.. 0 1 2 3 4 5 6 7
Fenetre etendu de lavant pendant reception de
lAkg
Fenetre retrecie de larriere pendant la trasmis
des trames
Num. Seq. trame
Dernier trame Ack
Dernier trame transmi
Accepteur
Trames deja recevu
Fenetre des trames pour possible reception
0 1 2 3 4
5 6 7 ..
.. 0 1 2 3 4 5 6 7
Fenetre etendu de lavant pendant transmis de
lAkg
Fenetre retrecie de larriere pendant reception
des trames
Num. Seq. trame
Dernier trame Ack
Dernier trame recevu
12Gestion Dynamique du Buffer
- La figure 1 explique bien le processus de fenêtre
de glissage. - Il assume l'utilisation des numéros séquentiel de
3 bits, de sorte que des trames soient numérotées
séquentiellement de 0 à 7, et alors les mêmes
numéros soient réutilisés pour les trames
suivantes. - Émetteur
- Le rectangle gris indique les trames qui peuvent
être envoyés commençant par le trame 0. - Chaque fois que un trame est envoyé, la fenêtre
grise se rétrécit - chaque fois quun Ack. est reçue, la fenêtre
grise sétendue. - Des trames entre la barre verticale et la fenêtre
grise ont été envoyés mais reçu dack pas encore
envoyer. - Dans ce cas, ces trames doivent rester en mémoire
au cas où elles devraient être retransmis.
13Gestion Dynamique du Buffer
- Récepteur
- Le rectangle gris indique les trames qui peuvent
être acceptés commençant par le trame 0. - Chaque fois que un trame est accepté, la fenêtre
grise se rétrécit - chaque fois quun Ack. est envoyé, la fenêtre
grise sétendue. - Des trames entre la barre verticale et la fenêtre
grise ont été acceptés mais reçu dack pas encore
envoyé. - La taille de fenêtre n'a pas besoin d'être une
taille maximum possible de numéro de séquence. - Par exemple, en utilisant un nombre d'ordre
3-bit, une taille de fenêtre de 4 a peut être
configurée en utilisant le protocole de fenêtre
glissage.
14Figure 2 Exemple de Protocole de Fenêtre de
Glissage
0 1 2 3 4 5 6
T0
T1
T2
3 4 5 6
0 1 2
3 4 5 6
0 1 2
3 4 5 6 7 0 1
2 3 4 5 6 7
0 1 2
RR3
3 4 5 6 7 0 1
2 3 4 5 6 7
0 1 2
T3
4 5 6 7 0 1 2
0 1 2 3
T4
T5
2 3 4 5 6 7
7 0 1
T6
RR4
15Gestion Dynamique du Buffer
- La figure 2
- Suppose l'utilisation des numéros séquentiel de
3 bits. - Une taille maximum de fenêtre de sept trames.
- Au début, A et B ont des fenêtres indiquant que A
peut transmettre 7 trames, commençant par le
trame 0 (T0). - Après la transmission de 3 trames (T0, T1, T2)
sans reçu dAck., A a rétréci sa fenêtre à 4
trames et maintient une copie des 3 trames
transmises. - La fenêtre indique que A peut transmettre encore
4 trames, commençant par le trame T3.
16Gestion Dynamique du Buffer
- B transmet alors un RR3 (Prêt a Recevoir )
- Qui signifie que "j'ai reçu tous les trames
jusquau trame 2 et je suis prêt à recevoir le
trame 3 En fait, je suis préparé pour recevoir
7 trames, commençant par le trame 3." - A permet la transmission de 7 trames, commençant
par le trame T3 également A peut effacer de la
mémoire les trames ayant reçu Ack. - A commence la transmission des trames 3,4,5, et
6. - B renvoie RR4, qui reconnaît T3, et permet la
transmission de T4 jusquau T2 du cycle suivant. - A a déjà transmis T4, T5, et T6 a peine ou avant
même que RR4 arrive, - A peut seulement ouvrir sa fenêtre pour permettre
lenvoi de 4 trames commençant par T7.
17Algorithme de la Figure 2 Fenêtre de Glissage
- A-gt req 0 (10 buffers) -gtB (A demande 10
buffers pour 10 trames) - A lt- ack 0 (7 buffers)lt- B (acceptation de 7
buffers, fenetre fixe a 7) - A -gt seq 0 data m0 -gt B (envoi de 1, reste 6
à A) - A-gt seq 1 data m1 -gt B (envoi de 1, reste 5 à
A) - A -gt seq 2 data m2 -gt B (envoi de 1, reste 4
à A) - A lt- ack 3 (3 buffers) lt-B (ack de m2, accept.
3 buf. de plus par B ) - A -gt seq 3 data m3 -gt B (envoi de 1, reste 6
à A, A efface 0,1,2) - A-gt seq 4 data m4 -gt B (envoi de 1, reste 5
à A) - A-gt seq 5 data m5 -gt B (envoi de 1, reste 4
à A) - A-gt seq 6 data m6 -gt B (envoi de 1, reste 3 à
A) - A lt- ack 4 (0 buffers) lt-B (ack de m3 )
- A -gt seq 0 data m0 -gt B (envoi de 1, reste 2
à A , A efface 3) - A -gt seq 1 data m1 -gt B (envoi de 1, reste 1
à A) - A-gt seq 2 data m2 -gt B (envoi du dernier)
18Gestion Dynamique du Buffer
- Le mécanisme au dessus décrit le contrôle de flux
et gère lattribution dynamique des buffers. - Le protocole peut aussi permettre à une station
darrêter le flux des trames envoyés par l'autre
côté en envoyant un message non prêt de réception
(RNR), qui ack les précédents trames mais
interdisent toute future transmission des trames.
- Par exemple RNR 5 signifie que "j'ai reçu toutes
les trames jusquau numéro 4 mais je suis
incapable d'accepter plus." - À un moment donné, la station doit envoyer un
ack. normal pour ré-ouvrir la fenêtre.
19Gestion Dynamique du Buffer
- jusqu'ici, nous avons discuté la transmission
dans une direction seulement. - Si deux stations échangent des données, chacune
doit avoir deux fenêtres, une pour transmettre et
une pour recevoir, et chaque côté doit envoyer
les données et les Ack. a l'autre. - Une technique appelé ferroutage (piggybacking)
supporte cette option. Comment? - Chaque trame de données inclut un espace qui
tient le numéro séquentiel de la trame plus un
espace qui tient un numéro séquentiel utilisé
pour lAck. - Ainsi, si une station a des données à envoyer et
un Ack à envoyer, elle envoie tous les deux
ensemble dans le trame.
20Gestion Dynamique du Buffer
- Si la station a un reçu dAck mais pas de donnée
à envoyer, elle envoie un trame dAck., Tel que
le RR ou le RNR. - Si une station a des données à envoyer mais pas
dAck, elle doit répéter le dernier numéro
séquentiel utilisé pour lAck., qu'elle a envoyé.
Parce que le trame de données inclut un espace
pour le numéro dAck., Et une certaine valeur
doit être mise dans ce espace. - Quand une station reçoit un duplicata dAck.,
Elle l'ignore tout simplement.
21Gestion Dynamique du Buffer
- La fenêtre de glissage est potentiellement
beaucoup plus efficace que la technique
dArrêt-et-Attend. - La raison est que, avec la fenêtre de glissage ,
le lien de transmission est traité comme une
canalisation qui peut être remplie de trames en
transit. - En revanche, avec la technique Arrêt-Et-Attend,
seulement une trame à la fois peut être dans le
lien.
22Problème Éviter deadlocks
- A-gt req 0 (8 buffers) -gtB (A demande 8
buffers pour 8 trames) - A lt- ack 0 (4 buffers)lt- B (acceptation de 4
buffers par B) - A -gt seq 0 data m1 -gt B (envoi de 1, reste 3
à A) - A-gt seq 1 data m2 -gt B (envoi de 1, reste 2
à A) - A -gt seq 2 data m3 -gt B (envoi de 1, reste 1
à A) - A -gt seq 3 data m4 (perte de 1, mais A
pense reste 0 à A) - A lt- ack 0 (3 buffers) lt-B (ack de m3, accept.
de 3 buf. par B ) - A -gt seq 0 data m5 -gt B (envoi de 1, reste
1(2) à A) - A-gt seq 1 data m6 -gt B (envoi de 1, A doit
arret env. nouveau tra ) - A-gt seq 3 data m4 -gt B (A time out ack m4,
re-envoi, reste 0 à A ) - A lt- ack 0 (0 buffer) lt- B (tout ack mais A
est bloqué, rapel A dem 8) - Alt- ack 0 (1 buffer) lt-B (A peut envoyer m7)
- A lt- ack 0 (2 buffers) lt-B (B a trouvé de la
place pour un en plus ) - A-gt seq 1 data m7 -gt B (reste 1 à A)
- A-gt seq 2 data m8 -gt B (reste 0 à A, bloqué)
- ack 3 (4 buff) lt- B potential deadlock
23Éviter le deadlocks
- Les commandes des trames (ack/attributions des
buffers) ne sont pas dans lordre, chronométrées
(timeout), ou confirmées. - La ligne 16 dans lexemple au dessus montre que
le deadlock est possibles si des attributions des
buffers sont perdues. - Pour éviter ceci, les deux nuds devraient
périodiquement envoyer des mises à jour de
statut - Dans l'exemple précédent, B ne recevrait pas de
nouveaux trames. - B doit envoyer le lt statut, ACK 6, buf 4 gt
périodiquement. - Si tout va bien, un de ces messages passe, et A
se remettra en marche. - A peut également envoyer le lt statut, ACK 6,
buf 0 gt périodiquement tandis que bloqué. À la
réception du message de statut contradictoire, B
retransmettrait lt ACK 6, buf 4 gt.
24Taille de Fenêtre et Numéro Séquentiel
- Un nombre séquentiel composé de m bits permet n
2m numéros de séquence. - Suppose on permet une fenêtre de taille n 1
- exemple m 2, n 4, fenêtre 5.
- Assurez-vous que la gamme de nombre séquentiel
est beaucoup plus étendue que les tailles des
fenêtres.
- A-gt req 3 (5 buffers) -gtB (A demande 5
buffers pour 5 trames) - A lt- ack 3 (5 buffers)lt- B (acceptation de 5
buffers, fenetre fixe a 5) - A -gt seq 0 data m0 -gt (Message perdu)
- A -gt seq 1 data m1 -gt (Message perdu)
- A -gt seq 2 data m2 -gt (Message perdu)
- A -gt seq 3 data m3 -gt (Message perdu)
- A -gt seq 0 data m0 -gt B (A pense quil ne
reste plus de buffer) - A lt- ack 0 trame 0 lt-B (quel
trame ligne 3 ou 7 )
25Problème a Éviter
- Il est dangereux d'avoir deux trames qui sont
transmis en même temps, et ayez le même numéro
de séquence. Le récepteur supposera que le trame
est duplicata, et donc le second sera jeté.
Emetteur
Temps
Seq.
000
003
Crash!
015