Vous êtes sur la page 1sur 8

U NIVERSITÉ PARIS 7 - M ASTER 1 - P ROTOCOLES R ÉSEAUX - PARTIEL - 15/05/2009

durée : 2 heures - aucun document autorisé - trois exercices indépendants - barème indicatif

1 On considère un modem fonctionnant à 2400 Bauds et admettant la constellation représentée ci-


dessous. On s’intéresse à la transmission de la séquence s = 110110010010.

1. Le signal en bande de base Manchester correspondant à s est :

horloge
t

1 1 0 1 1 0 0 1 0 0 1 0

2. Cette constellation présente trois niveaux d’amplitude (proportionnels à 1, 5 et 3) et seize ni-
veaux de phase {± arctan 13 + k π2 , π4 + k π2 pour 0 ≤ k ≤ 3}.
3. Cette constellation retient seize des trente-six couples amplitude-phase possibles. Ce modem au-
torise donc un débit binaire de 4 × 2400 = 9600 bit/s.
4. (a) Voici un codage efficace pour cette constellation :

1101 1001 1000 1100

0101 0001 0000 0100

0111 0011 0010 0110

1111 1011 1010 1110

(b) Le signal modulé correspondant à s est alors :

1101 1001 0010

1
2 Cinq ponts transparents connectant sept segments Ethernet exécutent l’algorithme de l’arbre recou-
vrant :

LAN1 <1,0,1,3>
B

LAN2 port3 LAN3 LAN4 LAN5


port1 port1 port2 port1 port2
P1 port2 P2 P4
port3 <1,2,3,1>
<1,0,1,1> <1,0,1,2> <1,1,2,2>
LAN6 <1,1,5,2>
port2 port2
C
port1 port1
P5 P3
LAN7 port3 A port3

<1,1,5,3>

1. Supposons que l’algorithme de l’arbre recouvrant est stabilisé. Comme indiqué sur la figure ci-
dessus, sur chaque LAN circule un unique BPDU. Les tables des ponts sont alors :
port racine coût émetteur état
1 1 0 1 F
P1
2 1 0 1 F
3 1 0 1 F

port racine coût émetteur état


P2 1 1 0 1 R
2 1 1 2 F

port racine coût émetteur état


1 1 2 3 F
P3
2 1 1 5 R
3 1 1 5 B

port racine coût émetteur état


1 1 1 2 R
P4
2 1 2 3 B
3 1 1 5 B

port racine coût émetteur état


1 1 0 1 R
P5
2 1 1 5 F
3 1 1 5 F
Le pont P1 est désigné sur les LAN1, LAN2 et LAN3 ; le pont P2 est désigné sur le LAN4 ; le
pont P3 est désigné sur le LAN5 ; le pont P5 est désigné sur les LAN6 et LAN7.

2
2. Au départ, les adresses MAC sont connues des trois machines A, B et C mais les ponts n’ont
aucune information sur la localisation des machines dans leurs tables d’acheminement.
LAN1 <1,0,1,3>
B

LAN2 port3 LAN3 LAN4 LAN5


port1 port1 port2 port1 port2
A:1
P1 port2 A:1 P2 A:1
P4
B:3 B:1 B:1
<1,0,1,1> <1,0,1,2> <1,1,2,2> port3 <1,2,3,1>
LAN6 <1,1,5,2>
port2 port2
A:3 C A:2
port1 C:2 C:2 port1
P5 B:1 B:2 P3
LAN7 port3 A port3

<1,1,5,3>

(a) L’acheminement d’une trame de A vers B figure en bleu sur la figure. La trame émise par A
circule sur le LAN7 : le port 3 du pont P3 est bloquant et l’ignore ; le pont P5 la reçoit via
son port 3, la retransmet sur ses ports 1 et 2 et ajoute l’entrée [A:3] à sa table. La trame
circule sur le LAN6 : P3 la reçoit via son port 2, la retransmet via son port 1 et ajoute
l’entrée [A:2] ; la trame circule sur le LAN5 mais le port 2 de P4 est bloquant et l’ignore.
La trame circule sur le LAN2 : P1 la reçoit via son port 1, la retransmet via ses ports 2
et 3 et ajoute l’entrée [A:1]. La trame circule sur le LAN1, B la reçoit, sa couche liaison
reconnaît son adresse MAC, extrait le paquet de la trame et le remet à sa couche réseau.
La trame circule sur le LAN3 : P2 la reçoit via son port 1, la retransmet via son port 2
et ajoute l’entrée [A:1]. La trame circule sur le LAN4 : P4 la reçoit via son port 1, ajoute
l’entrée [A:1], mais ne retransmet pas la trame.
(b) L’acheminement d’une trame de C vers A figure en rouge sur la figure. La trame émise
par C circule sur le LAN6 : le pont P3 la reçoit via son port 2, après consultation de sa table
ne la retransmet pas, mais ajoute l’entrée [C:2] ; le pont P5 la reçoit via son port 2, après
consultation de sa table la retransmet via son port 3 uniquement et ajoute l’entrée [C:2] à
sa table. La trame circule sur le LAN7 : le port 3 du pont P3 est bloquant et l’ignore ; A la
reçoit, sa couche liaison reconnaît son adresse MAC, extrait le paquet de la trame et le remet
à sa couche réseau.
(c) L’acheminement d’une trame de B vers C figure en vert sur la figure. La trame émise par B
circule sur le LAN1 : le pont P1 la reçoit via son port 3, la retransmet sur ses ports 1 et 2 et
ajoute l’entrée [B:3] à sa table. La trame circule sur le LAN3 : P2 la reçoit via son port 1,
la retransmet via son port 2 et ajoute l’entrée [B:1]. La trame circule sur le LAN4 : P4 la
reçoit via son port 1, ajoute l’entrée [B:1], mais ne retransmet pas la trame. La trame circule
sur le LAN2 : P5 la reçoit via son port 1, après consultation de sa table la retransmet via son
port 2 uniquement et ajoute l’entrée [B:1]. La trame circule sur le LAN6 : P3 la reçoit via
son port 2, après consultation de sa table ne la retransmet pas, mais ajoute l’entrée [B:2] ;
C la reçoit, sa couche liaison reconnaît son adresse MAC, extrait le paquet de la trame et le
remet à sa couche réseau.

3
3. Le pont P2 se met tout à coup à fonctionner comme un simple répéteur—c’est-à-dire un équipe-
ment de couche 1—ce qui fait des LAN3 et LAN4 un unique domaine de contention :

LAN1 <1,0,1,3>
B

LAN2 port3 LAN3 LAN4 LAN5


port1 répéteur port1 port2
P1 port2 P4
port3 <1,1,4,2>
<1,0,1,1> <1,0,1,2> <1,0,1,2>
LAN6 <1,1,4,3>
port2 port2
C
port1 port1
P5 P3
LAN7 port3 A port3

<1,1,5,3>

Cela ne change en rien le fait que P1 est racine :


port racine coût émetteur état
1 1 0 1 F
P1
2 1 0 1 F
3 1 0 1 F
Le pont P4—qui recevait <1,1,2,2> jusqu’alors—reçoit désormais <1,0,1,2>, ce qui entraîne la
mise à jour :
port racine coût émetteur état
1 1 0 1 R
P4
2 1 1 4 F
3 1 1 4 F
Le port 2 (resp. port 3) débloqué de P4 émet <1,1,4,2> (resp. <1,1,4,3>) sur le LAN5 (resp. le
LAN6). Le pont P5 reçoit alors <1,1,4,3> via son port 2, ce qui entraîne la mise à jour :
port racine coût émetteur état
1 1 0 1 R
P5
2 1 1 4 B
3 1 1 5 F
Le pont P3 reçoit alors <1,1,4,2> via son port 1 et <1,1,4,3> via son port 2, ce qui entraîne la mise
à jour :
port racine coût émetteur état
1 1 1 4 R
P3
2 1 1 4 B
3 1 1 5 B
L’algorithme de l’arbre couvrant est à nouveau stable.

4
3 Considérons le protocole défini en annexe page 3.

1. On cherche à discerner le rôle de ce protocole.


(a) Les couches physique et réseau sont mentionnées.
(b) Ce protocole fait appel à la couche physique et fournit un service à la couche réseau, il
appartient donc à la couche liaison de données.
(c) Les variables trame attendue et prochaine trame a envoyer sont initialisées à 0,
puis subissent éventuellement n ←− 1 − n : elles ne peuvent prendre que les valeurs 0 et 1.
(d) Les commentaires figurent sur l’annexe.
(e) Un nom possible est :

protocole de liaison duplex à fenêtre de taille 1.

2. On cherche à construire un automate modélisant le comportement de ce protocole.


(a) Il y a autant d’états que de couples binaires (h, k), soit quatre états.
(b) La transition
0 1 −−−−−−→ 1 0
0 0

modélise la réception d’une trame numérotée 0 et portant un acquittement 0 (flèche), alors


qu’une trame numérotée 0 et portant un acquittement 1 vient d’être envoyée (état initial),
ceci impliquant l’envoi d’une trame numérotée 1 et portant un acquittement 0 (état final).
(c) Il y a seize transitions possibles au total.
– réception d’une trame 0 0 :
! #! # ! #! #
"NP $ "RT $ "NP $ "AT $
0 0 −−−−−−→ 1 0 0 1 −−−−−−→ 1 0
0 0 0 0

! #! # ! #! #
"PP $ "RT $ "PP $ "AT $
1 0 −−−−−−→ 1 0 1 1 −−−−−−→ 1 0
0 0 0 0

– réception d’une trame 0 1 :


! #! # ! #! #
"PP $ "RT $ "PP $ "AT $
0 0 −−−−−−→ 0 0 0 1 −−−−−−→ 0 0
0 1 0 1

! #! # ! #! #
"NP $ "RT $ "NP $ "AT $
1 0 −−−−−−→ 0 0 1 1 −−−−−−→ 0 0
0 1 0 1

– réception d’une trame 1 0 :


! #! # ! #! #
"NP $ "AT $ "NP $ "RT $
0 0 −−−−−−→ 1 1 0 1 −−−−−−→ 1 1
1 0 1 0

! #! # ! #! #
"PP $ "AT $ "PP $ "RT $
1 0 −−−−−−→ 1 1 1 1 −−−−−−→ 1 1
1 0 1 0

4
– réception d’une trame 1 1 :
! #! # ! #! #
"PP $ "AT $ "PP $ "RT $
0 0 −−−−−−→ 0 1 0 1 −−−−−−→ 0 1
1 1 1 1

! #! # ! #! #
"NP $ "AT $ "NP $ "RT $
1 0 −−−−−−→ 0 1 1 1 −−−−−−→ 0 1
1 1 1 1

Remarquez que quatre diagrammes suffisaient à décrire ces transitions puisque ! l’état
# ! final
#
ne dépend que de l’étiquette et non de l’état initial ; néanmoins, les étiquettes "NP $, "PP $,
! # ! #
"AT $et "RT $de la question suivante pouvaient réclamer ces seize diagrammes.
(d) En notant n̄ = 1 − n, l’ensemble des différentes transitions est décrit très simplement :

h k

AT
k h PP
k h
RT
PP
AT NP
h k h k
k h
PP
RT
T k h
NP

h k

(e) L’autre type de transition correspond à l’expiration du temporisateur : elle est représentée
sur le diagramme! précédent
# par une flèche grisée et correspond à encapsuler le précédent
paquet (étiquette "PP $).
(f) L’automate complet (tous les états, toutes les transitions, toutes les étiquettes) est alors :

PP PP
1 1 T T 0 0
1 1
RT PP
PP 0 1 AT NP 1 0 RT

0 0 AT
1 1 PP
1 0
RT AT RT
1 0 1 1 PP
0 1 0 0
NP NP
0 0
AT
PP
0 1
1 0
1 1 AT NP 0 0 PP
1 0 RT
T 0 1
RT PP 0 1
PP T PP

5
(g) Un exemple d’échange d’un minimum de trames correspondant à un maximum de tran-
sitions différentes est obtenu en décrivant un parcours eulérien de l’automate précédent,
comme celui-ci :
PP PP
1 1 T T 0 0
1 1
RT PP
PP 0 1 AT NP 1 0 RT

0 0 AT
1 1 PP
1 0
RT AT
1 0 1 1 PP
0 1 0 0
NP P
0 0
AT
PP
0 1
1 0

1 1 AT NP 0 0 PP
1 0 RT
T 0 1
RT PP 0 1
P T PP

L’histogramme correspondant est :

0 1 0 0

AT
0 0 0 1
AT
AT
1 0 0 1

0 0 1 1

1 0 0 1

AT
0 1 0 1

0 0 1 1
T T

0 0 1 1
AT

1 0 0 0
AT AT
1 1 1 0
T
AT

1 0
0 1
1 1
1 0
AT

AT

1 1 AT
1 1
0 1
AT

T 0 1
0 1 AT
0 0
AT
1 1 0 0
AT
0 0 1 0
AT
0 1 1 1
AT

Cet exemple présente trente-deux trames échangées (plus quatres trames émises mais perdues)
pour finalement 17 trames acceptées.

6
01 typedef enum {arrivee_trame, erreur_total_controle, expiration} type_evenement;
02 void protocole (void) {
03 numero_seq prochaine_trame_a_envoyer; /* uniquement 0 ou 1 */
04 numero_seq trame_attendue; /* uniquement 0 ou 1 */
05 trame r, s; /* trame reçue et trame à envoyer */
06 paquet tampon; /* paquet en cours d’envoi */
07 type_evenement evenement;
08 prochaine_trame_a_envoyer = 0; /* prochaine trame dans le flux d’émission */
09 trame_attendue = 0; /* prochaine trame attendue */
10 depuis_couche_reseau(&tampon); /* récupère un paquet de la couche réseau */
11 s.info = tampon; /* se prépare à envoyer la trame initiale */
12 s.seq = prochaine_trame_a_envoyer; /* insère le numéro de séquence dans la trame */
13 s.ack = 1 - trame_attendue; /* superpose l’acquittement */
14 vers_couche_physique(&s); /* transmet la trame */
15 demarrer_temporisateur(s.seq); /* démarre le temporisateur */
16 while (true) {
17 attendre_evenement(&evenement); /* arrivee_trame, erreur_total_controle, ou expiration */
18 if (evenement == arrivee_trame) { /* une trame correcte est arrivée */

7
19 depuis_couche_physique(&r); /* la récupère */
20 if (r.seq == trame_attendue) { /* gère le flux de trames entrantes */
21 vers_couche_reseau(&r.info); /* passe le paquet à la couche réseau */
22 trame_attendue = 1 - trame_attendue; /* met à jour le numéro de la trame attendue */
23 }
24 if (r.ack == prochaine_trame_a_envoyer) { /* gère le flux de trames sortantes */
25 desactiver_temporisateur(r.ack); /* désactive le temporisateur */
26 depuis_couche_reseau(&tampon); /* récupère le nouveau paquet de la couche réseau */
27 prochaine_trame_a_envoyer /* met à jour le numéro */
28 = 1 - prochaine_trame_a_envoyer; /* de la trame à envoyer */
29 }
30 }
31 s.info = tampon; /* se prépare à envoyer la trame */
Annexe de l’exercice 3 : définition du protocole

32 s.seq = prochaine_trame_a_envoyer; /* insère le numéro de séquence dans la trame */


33 s.ack = 1 - trame_attendue; /* superpose l’acquittement */
34 vers_couche_physique(&s); /* transmet la trame */
35 demarrer_temporisateur(s.seq); /* démarre le temporisateur */
36 }
37 }

Vous aimerez peut-être aussi