Protocoles Réseaux

publicité
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Préambule
Le modèle hybride
Couche
5 Application
Protocoles Réseaux
Protocole d'application
Application
Interface
4
Protocole de transport
Transport
Matthieu Picantin
Transport
message
Réseau
é
paquet
trame
Frontière du sous-réseau de communication
3
Réseau
seau
Réseau
Protocoles internes au sous-ré
sous-réseau
LIAFA CNRS UMR 7089
Université Paris 7 Denis Diderot
13 mars 2009
2
Liaison
Liaison
Liaison
Liaison
1
Physique
Physique
Physique
Physique
Hôte
ô A
Pont
Routeur
Hôte B
Protocole de couche rréseau
seau h
hôte-routeur
te-routeur
Protocole de couche liaison de donn
données hôte-pont
Protocole de couche physique hôte-pont
bit
Nom des
unités
échangées
2 / 40
1 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Préambule
Préambule
Rôle de la couche liaison de données
Trois catégories de services
Couche liaison
Couche réseau
Couche transport
Objectif
Communication (fiable et efficace) entre deux machines adjacentes
(machines physiquement connectées par un canal de transmission)
sans connexion - non acquitté
pas de récupération des erreurs (faible taux d’erreurs, temps-réel...)
complexité dans les couches supérieures
Gestion des trames
Les trames encapsulent les paquets de la couche réseau
Les flux de bits de la couche physique sont découpés en trames
Emetteur
Récepteur
Paquet
Paquet
sans connexion - acquitté
indication des pertes (retransmissions rapides)
débit variable
avec connexion - acquitté
connexion préalable
garanties de réception ordonnée et unique
Trame
En-tête
Champ de données
En-queue
En-tête
Champ de données
En-queue
3 / 40
4 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Préambule
Techniques de délimitation de trames
Positionnement du protocole de liaison
Technique #1
Couche liaison
Couche réseau
Couche transport
Compter les caractères
Utilisation d’un champ taille dans l’en-tête de la trame
Problème de désynchronisation en cas d’erreur
Processus
de la couche
liaison de données
2
Processus
de routage
3
Décompte
des caractères
2
2
3
Protocole
de liaison
de données
Trames Paquets
5
1
2
3
4
5
Trame 1
5 caractères
2
6
7
8
9
8
0
Trame 2
5 caractères
1
Un caractère
2
3 4
5
6
8
7
Trame 3
8 caractères
8
9
0
1
2
3
Trame 4
8 caractères
Ligne de transmission
vers un routeur
Routeur
Décompte
des caractères
5 / 40
5
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
1
2
3
Introduction
4
5
6
Trame 1
5 caractères
Techniques de délimitation de trames
Technique #2
Technique #3
5
8
9
8
1
2
0
1
3 4
5
Trame 3
8 caractères
6
8
7
8
9
0
1
Couche réseau
Trame 4
8 caractères
2
3
Couche transport
Erreur
3
4
7
6
7
8
9
8
0
1
Utiliser
des
bits délimiteurs
Trame
1 chaînes deTrame
2
un même octet drapeau désigne le début et la fin d’une trame
2
Couche liaison
Trame 2
5 caractères
Techniques de délimitation de trames
Utiliser des drapeaux de signalisation
7
Couche physique
6 / 40
Un caractère
(fausse)
2
3
4 5
6
8
7
8
9
0
1
2
3
Nouveau décompte
des caractères
plus souple et non associée à un codage
remplissage d’octets d’échappement ESC
utilisation d’un drapeau (par exemple 01111110)
problème avec les données binaires
présence du drapeau au milieu des données
transparence par remplissage de bits
(insertion par exemple de 0 dans les chaînes de 1)
méthode liée au codage des caractères sur 8 bits
011011111111111111110010
remplissage
A
drap.
B
A
ESC
drap.
B
A
ESC
B
A
ESC
ESC
B
A
ESC
drap.
B
A
ESC
ESC
ESC
drap.
B
A
ESC
ESC
B
A
ESC
ESC
ESC
ESC
B
011011111011111011111010010
bits de remplissage
011011111111111111110010
7 / 40
8 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Couche liaison
Détection et correction d’erreurs
Détection et correction d’erreurs
Détection-retransmission vs correction
Distance de Hamming et qualité d’un code
Distance de Hamming
Détection-retransmission
Correction
juste assez de redondance
pour que le récepteur puisse
détecter d’éventuelles erreurs
& demander une
retransmission
adapté sur canal fiable
nombre de bits différents entre 2 mots
somme des 1 après un XOR sur 2 mots
nombre minimum d’erreurs simples pour
passer d’un mot à l’autre
suffisamment de
redondance pour que le
récepteur puisse corriger
d’éventuelles erreurs
Couche réseau
Couche transport
Distance de Hamming d’un
code
distance minimale entre deux
mots du code
Qualité d’un code
adapté sur canal bruité
un code C vérifiant dH (C) ≥ k + 1 permet de détecter k erreurs
un code C vérifiant dH (C) ≥ 2k + 1 permet de corriger k erreurs
Redondance et mots de code
mot de code (n bits) = données (m bits) + contrôle (r bits)
2m mots de code légaux parmi 2n mots possibles
Un code 1-détecteur
Un code 2-correcteur
L’ajout d’un bit de parité produit un
code de distance de Hamming 2
Le code {00000000000, 0000011111,
1111100000, 1111111111} est de distance
de Hamming 5
10 / 40
9 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Couche liaison
Détection et correction d’erreurs
Détection et correction d’erreurs
Codes correcteurs d’erreur simple
Codes correcteurs d’erreur simple
Couche réseau
Couche transport
En théorie
Pouvoir corriger toute erreur simple pour m bits de données
demande r bits de contrôle avec m + r < 2r
caractère
ASCII
bits de contrôle
H
a
m
m
i
n
g
1001000
1100001
1101101
1101101
1101001
1101110
1100111
0100000
1100011
1101111
1100100
1100101
00110010000
10111001001
11101010101
11101010101
01101011001
01101010110
01111001111
10011000000
11111000011
10101011111
11111001100
00111000101
En pratique : la méthode de Hamming
bits numérotés de 1 à n de gauche à droite
Le code de Hamming
pour de l’ASCII
bits puissance de 2 sont les r bits de contrôle (1, 2, 4, 8...)
les autres sont les m bits de données (3, 5, 6, 7, 9, 10...)
valable seulement
pour une erreur
simple (1 bit)
bits de contrôle = calcul de parité sur les bits de données
dont la décomposition en puissances de 2 fait intervenir la
position du bit de contrôle concerné
correction de rafale
d’erreurs à l’aide
d’une matrice
détection du bit erroné et correction par somme des bits de
contrôle non conformes à la parité
11 / 40
c
o
d
e
ordre de transmission des bits
00110010000
12 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Couche liaison
Détection et correction d’erreurs
Mécanismes protocolaires
Codes polynômiaux détecteurs d’erreurs
Rôle de la couche liaison de données
Couche réseau
Couche transport
Codes CRC (Cyclic Redundancy Code)
correspondance entre rang des bits et degré des monômes
(par exemple, le mot 10011 code le polynôme x 4 + x + 1 )
Fonctions spécifiques
Interface de service clairement définie à la couche réseau
arithmétique polynomiale (soustraction modulo 2 et division
euclidienne)
Mécanismes pour assurer la fiabilité de la transmission
techniques de détection et correction d’erreurs
retour d’informations vers l’émetteur
détection des absences par temporisateur
politique de retransmission et numérotation
Utilisation d’un polynôme générateur G(x)
G(x) de degré r et message M(x)
ajout de r bits à 0 après le bit de poids faible de M(x)
Contrôle du flux de données (éviter de saturer le destinataire)
division de x r M(x) par G(x) : reste R(x)
r
envoi de T (x) = x M(x) − R(x)
T (x) est divisible par G(x) (à vérifier par le récepteur !)
14 / 40
13 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Mécanismes protocolaires
Mécanismes protocolaires
Trames de supervision
Hypothèses communes
Objectif ultime : la fiabilité
La gestion de la liaison nécessite
l’échange de trames de
commande ou trames de
supervision
Couche liaison
Couche réseau
Couche transport
Hypothèse de conception
paquet
séq ack
somme
de contrôle
info
Chaque couche a son propre processus et communique par échange
de message
Hypothèse de service
Un service fiable orienté connexion est souhaité
Règles de fonctionnement
coder les informations de commande
Hypothèse de disponibilité
séparer l’information proprement dite de l’information de
commande
l’émetteur dispose d’un flux infini de données
le récepteur est en attente de réception
préciser les séquences valides d’échanges de trames
15 / 40
16 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Mécanismes protocolaires
Mécanismes protocolaires
Protocole simplex non restreint
Protocole simplex non restreint
Couche liaison
paquet
paquet
séq ack
somme
de contrôle
séq ack
Couche réseau
Couche transport
somme
de contrôle
info
info
typedef enum {arrivee_trame} type_evenement;
#include "protocole.h"
Caractéristiques
unidirectionnel
void emetteur1 (void)
{
trame s;
paquet tampon;
while (true) {
depuis_couche_reseau (&tampon);
s.info = tampon;
vers_couche_physique (&s);
}
}
couches toujours prêtes à émettre ou recevoir
tampons infinis
canal de communication sans perte
void recepteur1 (void)
{
trame r;
type_evenement evenement;
while (true) {
attendre_evenement (&evenement);
depuis_couche_physique (&r);
vers_couche_reseau (&r.info);
}
}
17 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
18 / 40
Introduction
Couche physique
Couche liaison
Mécanismes protocolaires
Mécanismes protocolaires
Protocole simplex de type stop-and-wait
Protocole simplex de type stop-and-wait
paquet
paquet
séq ack
séq ack
somme
de contrôle
Couche réseau
Couche transport
somme
de contrôle
info
info
typedef enum {arrivee_trame} type_evenement;
#include "protocole.h"
Caractéristiques
unidirectionnel
void emetteur2 (void)
{
trame s;
paquet tampon;
type_evenement evenement;
while (true) {
depuis_couche_reseau (&tampon);
s.info = tampon;
vers_couche_physique (&s);
attendre_evenement (&evenement);
}
}
tampons limités (risque d’écrasement de trames)
canal de communication sans perte
19 / 40
void recepteur2 (void)
{
trame r, s;
type_evenement evenement;
while (true) {
attendre_evenement (&evenement);
depuis_couche_physique (&r);
vers_couche_reseau (&r.info);
vers_couche_physique (&s);
}
}
20 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Couche liaison
Mécanismes protocolaires
Mécanismes protocolaires
Protocole simplex pour canal bruité
Protocole simplex pour canal bruité
Couche réseau
Couche transport
typedef enum {arrivee_trame, erreur_checksum, timeout} type_evenement;
#include "protocole.h"
paquet
séq ack
somme
de contrôle
void emetteur3 (void) {
numero_seq trame_a_envoyer;
trame s;
paquet tampon;
type_evenement evenement;
trame_a_envoyer = 0;
depuis_couche_reseau (&tampon);
while (true) {
s.info = tampon;
s.seq = trame_a_envoyer;
vers_couche_physique (&s);
armer_temporisateur (s.seq);
attendre_evenement (&evenement);
if (evenement == arrivee_trame) {
depuis_couche_physique (&s);
if (s.ack == trame_a_envoyer) {
stopper_temporisateur (s.ack);
depuis_couche_reseau (&tampon);
trame_a_envoyer
= 1 - trame_a_envoyer;
}
}
}
}
info
Caractéristiques
unidirectionnel
tampons limités (risque d’écrasement de trames)
pertes possibles mais détectées
temporisations, acquittements, retransmissions, duplications
void recepteur3 (void) {
numero_seq trame_attendue;
trame r, s;
type_evenement evenement;
trame_attendue = 0;
while (true) {
attendre_evenement (&evenement);
if (evenement == arrivee_trame) {
depuis_couche_physique (&r);
if (r.seq == trame_attendue) {
vers_couche_reseau (&r.info);
trame_attendue
= 1 - trame_attendue;
}
s.ack = 1 - trame_attendue;
vers_couche_physique (&s);
}
}
}
21 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
22 / 40
Introduction
Couche physique
Vérification et spécification
Vérification et spécification
Vérification et spécification
Automates finis
Couche liaison
Couche réseau
Couche transport
Problématique
complexité des protocoles réels et de leurs implémentations
développement de techniques formelles pour spécifier et vérifier
techniques et modèles indépendants des couches
0
00–
01–
7
0
010
7
0
5
Trame
Transition Acteur acceptée
1
Automates (à états finis)
Réseaux de Petri
Quadruplet (S, I, T , M)
Quadruplet (P, T , A, M)
S ensemble des états
P ensemble de places (recevant des
(transitoires vs principaux)
jetons)
I ensemble des états initiaux
T ensemble des transitions
entre états
M ensemble des trames
échangées
T ensemble des transitions
000
01A
4
2
3
10A
6
(autorisation si chacune des places
d’entrée possède au moins un jeton)
0
101
111
0
10–
0
8
11–
0
1
2
3
4
5
6
7
8
–
R
É
R
É
R
R
É
É
Trame
émise
(trame perdue)
0
A
1
A
0
1
(timeout)
(timeout)
A
1
A
0
A
A
0
1
Vers la
couche
réseau
–
Oui
–
Oui
–
Non
Non
–
–
8
A ensemble des arcs (place↔transition)
M marquage (état du système)
23 / 40
24 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Vérification et spécification
Vérification et spécification
Réseaux de Petri
Protocoles duplex
Couche liaison
Couche réseau
Couche transport
0 sur la ligne
Émet 0
1
10
C
A
Attend
Ack 0
2
Perte
5
Timeout
Traite 0
Deux approches
F
8
2 flux simplex : circuits séparés (non optimal)
Attend 1
1 flux duplex : circuit bidirectionnel
Rejette 0
D
3
Émet 1
11
Superposition (piggybacking)
Traite 1
Ack sur
la ligne
B
acquittements associés aux trames de données envoyées
Perte
6
Attend
Ack 1
4
9
E
Timeout
réduction du nombre de paquets
G
Rejette 1
go
1 sur la ligne
7
État de l'émetteur
Introduction
Couche physique
possibilité de temporiser avant de joindre un acquittement
à une trame de données
Attend 0
Perte
État du canal
Couche liaison
État du récepteur
Couche réseau
26 / 40
25 / 40
Couche transport
Introduction
Couche physique
Couche liaison
Vérification et spécification
Vérification et spécification
Protocoles duplex
Protocoles duplex avec fenêtres de largeur 1
Protocoles à fenêtre (sliding window)
Couche réseau
Couche transport
typedef enum {arrivee_trame, erreur_checksum, timeout} type_evenement;
#include "protocole.h"
pipelining : envoi de plusieurs trames avant réception d’un
acquittement
void protocole4 (void)
{
numero_seq prochaine_trame;
numero_seq trame_attendue;
trame r, s;
paquet tampon;
type_evenement evenement;
prochaine_trame = 0;
trame_attendue = 0;
depuis_couche_reseau(&tampon);
s.info = tampon;
s.seq = prochaine_trame;
s.ack = 1 - trame_attendue;
vers_couche_physique(&s);
armer_temporisateur(s.seq);
...
acquittement par blocs : réception de plusieurs trames avant
acquittement
taille de la fenêtre d’émission : nombre maximal de trames
autorisées à être envoyées
taille de la fenêtre de réception : nombre maximal de trames
acceptables par le destinataire
calcul de la relation entre les deux fenêtres selon le protocole
27 / 40
28 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Couche liaison
Couche réseau
Vérification et spécification
Vérification et spécification
Protocoles duplex avec fenêtres de largeur 1
Protocoles duplex avec fenêtres de largeur 1
7
...
while (true) {
attendre_evenement(&evenement);
if (evenement == arrivee_trame) {
depuis_couche_physique(&r);
if (r.seq == trame_attendue) {
vers_couche_reseau(&r.info);
trame_attendue = 1 - trame_attendue;
}
if (r.ack == prochaine_trame) {
stopper_temporisateur(r.ack);
depuis_couche_reseau(&tampon);/
prochaine_trame = 1 - prochaine_trame;
}
}
s.info = tampon;
s.seq = prochaine_trame;
s.ack = 1 - trame_attendue;
vers_couche_physique(&s);
armer_temporisateur(s.seq);
}
0
1
6
1
5
2
5
2
3
0
1
5
2
4
fenêtre de réception de largeur 1
numéros de séquence sur 3 bits
Fenêtre d’émission
3
7
0
6
k0
ac
29 / 40
Couche réseau
Couche transport
numéros de séquence de trames émises
mais non encore acquittées
1
5
7
fenêtre d’émission de largeur 1
3
e0
6
2
4
Fenêtre de réception
3
0
numéros de séquence de trames
attendues mais non encore reçues
1
5
Couche liaison
4
tram
4
7
6
Couche physique
0
6
Protocole stop & wait
}
Introduction
7
2
4
3
Introduction
30 / 40
Couche physique
Couche liaison
Vérification et spécification
Vérification et spécification
Protocoles duplex avec fenêtres de largeur 1
Protocoles duplex avec fenêtre de largeur >1
Scénario normal
séq ac
k
0 1
A0
Scénario critique
séq
Couche transport
Couche réseau
Couche transport
Motivation
ack
0 1
A0
0
0 0
A0
0
1
Recherche d’un compromis bande passante/taille mémoire
tampon
B0
0
0 0 B
1 0 A
1
1
1 1 B
1 0
A1
1
0
0 B
1
0 A
0 1 A
2
2
0 0 B
1 1
A1
1
1
B1
1 0 A
3
31 / 40
Fenêtre d’émission de largeur 1
Fenêtre de réception de largeur 1
Envoi d’une trame seulement après
acquittement de la précédente
Rejet global en cas de perte
ou d’erreur
Fenêtre d’émission de largeur >1
Fenêtre de réception de largeur >1
Envoi de plusieurs trames avant
réception du premier acquittement
Rejet sélectif en cas de perte
ou d’erreur
32 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Vérification et spécification
Exemples de protocoles
Protocoles duplex avec fenêtre de largeur >1
HDLC vs PPP
Couche liaison
Couche réseau
Couche transport
Fenêtre de réception de largeur 1
Délai de temporisation
0
1
2
3
4
5
6
bits 8
7
8
2
3
4
5
6
7
8
D
Erreur
D
D
D
D
D
5
6
Trames supprimées par la couche liaison
7
Temps
2
3
4
5
2
6
7
8
9
10
11
12
13
Erreur
14
nombreuses variantes : SDLC,
ADCCP, LAP, LAP-B, etc
trafics routeur-routeur
& modem-FAI
11
k1
k1
1
1
1 ou 2
1500
2 ou 4
1
11111111
00000011
Protocole
Charge utile
Total de contrôle
01111110
Adresse
Contrôle
3
2
1
0
10
Ac
9
k1
8
PPP (Point-to-Point Protocol)
15
Ac
7
k1
6
Ac
2
Ac
Ac
5
k9
Ac
4
Ac
Ac
k8
k7
Ac
k6
k5
Ac
3
k1
k
E
k1
Na
1
8
01111110
orienté octet
octets 1
Ac
k1
Ac
k0
Ac
0
16
Total de contrôle
orienté bit
2
1
0
Données
HDLC (Hight-level Data Link Control)
8
Fenêtre de réception de largeur >1
0
8
Contrôle
k7
Ac
k6
k5
k4
4
Ac
3
Ac
2
Ac
k3
k2
E
Ac
1
Ac
Ac
k1
Ac
k0
01111110
0
8
Adresse
9
12
13
01111110
14
Trames placées en mémoire tampon par la couche liaison
33 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
34 / 40
Introduction
Couche physique
Exemples de protocoles
Exemples de protocoles
HDLC
HDLC
Trois sortes de trames
bits 8
01111110
Couche liaison
Couche réseau
Couche transport
Trame I d’information
8
8
0
Adresse
Contrôle
b0
trame I d'information
(transmission effective
des données)
trame S de supervision
(acquittements
positifs et négatifs)
trame U non numérotée
(demande, acceptation,
refus, libération de connexion)
Données
b1
0
b2
b3
Ns
16
8
b0
Total de contrôle
01111110
0
b4
b5
b6
P/F
Nr
Nr
1
0
s0
s1
P/F
1
1
u0
u1
P/F
u2
u3
b1
b2
Ns
Un seul type
b7
Ns est le numéro de séquence
de la trame courante
Nr est le numéro de la trame
d’information attendue
numérotation modulo 8 (3 bits)
acquitte les trames de
numéro < Nr
u4
35 / 40
b3
b4
b5
P/F
b6
b7
Nr
Le bit P/F
Poll/Final (Invitation à émettre/Fin)
bit positionné si sa valeur est 1
le bit positionné vaut P
si la trame est une commande
le bit positionné vaut F
si la trame est une réponse
l’émission d’une commande
exige une réponse immédiate
36 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
Introduction
Couche physique
Exemples de protocoles
Exemples de protocoles
HDLC
HDLC
Trame S de supervision
Couche liaison
Couche réseau
Couche transport
Trame U de gestion
b0
b1
b2
b3
b4
1
0
s0
s1
P/F
b5
b6
b7
Nr
type RR (Receive Ready) 00
type RNR (Receive Not Ready) 10
· acquitte les trames de numéro < Nr
· acquitte les trames de numéro < Nr
· demande la suspension de la
transmission
type REJ (REJect) 01
type SREJ (Selective REJect) 11
· acquitte les trames de numéro < Nr
· demande la retransmission des
trames de numéro ≥ Nr
(uniquement HDLC et ADCCP)
b0
b1
b2
b3
b4
b5
b6
b7
1
1
u0
u1
P/F
u2
u3
u4
type SABM (Set Async Balanced) 11110
type DISC (DISConnect) 11010
· demande de connexion
· libération de connexion
type UA (Unumbered Ack) 00110
type FRMR (FRaMe Reject) 11011
· acquittement de trame non numéroté
· rejet de trame
· acquitte les trames de numéro < Nr
· demande la retransmission de la
trame de numéro Nr
37 / 40
Introduction
Couche physique
Couche liaison
Couche réseau
Couche transport
38 / 40
Introduction
Couche physique
Exemples de protocoles
Exemples de protocoles
PPP
PPP
octets 1
Contexte
01111110
liaison louée routeur-routeur
Couche liaison
Couche réseau
Couche transport
1
1
1 ou 2
1500
2 ou 4
1
11111111
00000011
Protocole
Charge utile
Total de contrôle
01111110
Adresse
Contrôle
liaison téléphonique commutée modem-FAI
Structure des trames
Principe
contrôle : trame non numérotée
une délimitation des trames (orienté octet)
protocole : type du paquet contenu dans la charge utile (LCP, NCP, IP,
IPX, AppelTalk, etc)
des trames multiprotocoles
un protocole de contrôle de liaison LCP (Link Control Protocol) : active
une ligne, la teste, négocie les options et la désactive
négociation via LCP
numérotation et fiabilité
omission des octets adresse et contrôle
réduction du code protocole à 1 octet
augmentation du total de contrôle à 4 octets
une famille de protocoles de contrôle de réseau NCPs (Network Control
Protocol) spécifiques aux différents protocoles de couche réseau
39 / 40
40 / 40
Téléchargement