Qu'est-ce qui se trame chez Ethernet ?

Ethernet, voilà un terme qu’on entend très souvent en réseau. Il désigne plusieurs choses à la fois. Nous allons d’abord voir comment se présente un réseau Ethernet physiquement, puis nous nous focaliserons sur le protocole de niveau 2 associé.

Un réseau Ethernet, kézako ?

Un réseau Ethernet, ça peut se résumer ainsi : un ensemble de machines reliées sur un switch par des câbles Ethernet. Le switch, ou commutateur, est la pièce maitresse ici. Tous les hôtes sont branchés dessus selon une topologie en étoile.

Réseau Ethernet basique (CC BY)
Réseau Ethernet basique (CC BY)

Il s’agit là du cas le plus simple. Un réseau Ethernet peut aussi être beaucoup plus complexe.

Lorsqu’un hôte veut émettre des données, il les envoie sur le câble et elles sont reçues par le switch. Ce dernier analyse la trame et procède éventuellement à des vérifications : est-ce que cet hôte est bien autorisé à communiquer sur cette interface ? La destination est-elle un broadcast ? Un unicast ? Est-ce que je la connais, au moins ? Puis, si tout va bien, le switch renvoie la trame au bon destinataire. En résumé, le commutateur vérifie (ou non) la légitimité de l’émetteur et transmet les données au destinataire.

Étapes de commutation (CC BY)
Étapes de commutation (CC BY)

Évidemment, il y a quelques petites subtilités qui rendent la chose un poil plus complexe. :D Étudions d’abord le protocole Ethernet qui est ultra simple dans le principe… et peut générer des problèmes monstrueux en pratique. >_<

Le protocole

Sur un réseau Ethernet, on utilise bien souvent… le protocole Ethernet. Voyons la structure d’une trame Ethernet.

Offsets

Octet

0

1

2

3

Octet

Bit

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

0

0

Adresse MAC destination

4

32

Adresse MAC destination (suite)

Adresse MAC source

8

64

Adresse MAC source (suite)

12

96

EtherType (si > 1500 uniquement)

Données

16

128

Données (suite)

20

160

24

192

28

224

32

256

36

288

40

320

44

352

48

384

52

416

56

448

60

480

Somme de contrôle (FCS)

C’est assez simple : adresses MAC source et destination, EtherType, données, somme de contrôle. Une trame, hors somme de contrôle, doit faire au minimum 64 octets. Si ça fait moins, eh bien, on rajoute des zéros après les données jusqu’à ce que ça fasse assez : on appelle ça du bourrage. La chose intéressante, c’est l'EtherType.

Ce champ, sur deux octets, est un peu particulier. Déjà, sa signification n’est pas la même selon que sa valeur est supérieure ou non à 1500(10) (05DC16). Pour des questions de compatibilité, une valeur de 1500 ou moins indique la longueur des données à suivre. Dans le cas contraire, qui nous intéresse, il définit quel protocole de niveau supérieur va suivre, pour que le récepteur sache à quoi s’attendre. C’est un peu comme le champ "protocole" avec IPv4. Par exemple, la valeur 080016 correspond à IPv4, 86DD16 à IPv6. Mais il y a une valeur particulière : 810016. Celle-ci précise l’appartenance à un VLAN.

Et VLAN !

Un VLAN, pour Virtual LAN, ou réseau local virtuel, c’est un moyen de segmenter de manière logique un réseau Ethernet. Vous vous souvenez que les communications passent par un switch ? Ce dernier peut créer virtuellement des sous-réseaux étanches, qui ne peuvent pas communiquer entre eux. Pour cela, il colle une étiquette (ou un tag) avec un numéro sur certains ports. Ainsi, si les interfaces 1 et 2 sont étiquetées "VLAN 21", et les interfaces 3 et 4 "VLAN 42", pas moyen de communiquer entre l’hôte du port 1 et celui du port 3, pas plus qu’entre celui du port 2 et celui du port 4 ! Cette technique permet d’empêcher que dans un LAN, des machines ne communiquent avec d’autres alors qu’elles ne devraient rien avoir à se dire. Un téléphone fixe qui voudrait communiquer avec un PC de bureau, ce serait quand même louche, avouez ! ^^

Commutation impossible entre 2 VLAN différents (CC BY)
Commutation impossible entre 2 VLAN différents (CC BY)

Un VLAN peut prendre un numéro entre 2 et 4094, à l’exception des valeurs entre 1002 et 1005, qui sont réservées. Par convention, le VLAN 1 correspond à "pas de VLAN" : tous les ports d’un switch non tagués (étiquetés) font partie du VLAN 1.

Cela est transparent pour tout le monde, seul le switch est au courant de tout cela. Là où ça se complexifie, c’est quand il y a plusieurs switchs reliés entre eux dans le LAN. Les liens qui les relient peuvent transporter des trames en provenance de plusieurs VLAN. Un tel lien est appelé trunk. On peut le configurer pour préciser quels VLAN ont le droit de transiter par là. Il faut s’assurer que la configuration est la même de chaque côté du trunk ! Ce genre d’erreur est la source de nombreuses prises de tête, d’heures perdues, de crises, d’apocalypses nucléaires… Encore que s’il y a vraiment eu une apocalypse nucléaire, il y a peu de chances que vous soyez en train de lire un cours de réseaux. :-°

Un lien trunk permet de transporter un ou plusieurs VLAN (CC BY)
Un lien trunk permet de transporter un ou plusieurs VLAN (CC BY)

Sur un trunk, pour préciser quelle trame va avec quel VLAN, on modifie un peu la trame Ethernet. Le standard IEEE 802.1Q nous indique qu’il faut faire comme suit.

Offsets

Octet

0

1

2

3

Octet

Bit

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

0

0

Adresse MAC destination

4

32

Adresse MAC destination (suite)

Adresse MAC source

8

64

Adresse MAC source (suite)

12

96

EtherType = 810016

Priorité

CF

VLAN ID

16

128

EtherType réel

Données

20

160

Données (suite)

24

192

28

224

32

256

36

288

40

320

44

352

48

384

52

416

56

448

60

480

Somme de contrôle (FCS)

3 nouveaux champs font leur apparition avant que l’EtherType réel ne soit précisé. La priorité, sur 3 bits, sert si on veut définir un niveau de priorité entre les VLAN. On peut faire un parallèle avec le DSCP du protocole IP. On passe le bit suivant, il est là pour des raisons de compatibilité avec Token Ring. Les 12 bits qui viennent ensuite correspond au numéro de VLAN.

Un point prononciation : en français, les administrateurs réseau prononcent VLAN "vé-lane". Pour parler du standard 802.1Q, vous entendrez parfois "dot 1 Q" : dot pour point, le chiffre 1 et la lettre Q prononcés à la française. Dans les configurations de switchs, on lit parfois le mot "dot1q" et c’est beaucoup plus naturel de le prononcer comme ça. :D

Pour conclure cette section, sachez qu’on ne peut pas assigner d’adresse IP à un port (ça semble logique), mais on peut en attribuer aux VLAN. Cela sert notamment pour contrôler le switch à distance. ;)

1, 2, 3, on switche !

Si on ne devait retenir que 3 choses du protocole Ethernet, ce serait :

  • Adresse MAC source
  • Adresse MAC destination
  • VLAN

Ces trois seules notions peuvent donner du fil à retordre au switch (et surtout aux administrateurs réseau). Revenons sur les étapes de commutation évoquées au début de ce chapitre.

Réception

En premier lieu, le switch reçoit une trame sur une interface et regarde l’adresse MAC source. D’abord, il s’assure qu’il n’y a pas de restriction en terme d’émetteur sur ce port. Il peut y avoir une liste d’adresses interdites (les autres étant autorisées), ou une liste d’adresses autorisées (les autres étant interdites). Un autre cas de restriction est le nombre de sources permises en simultané. Si, juste avant, une autre adresse MAC source vient de passer sur ce même port, il y a peut-être anguille sous roche. :ninja: Dans ce cas, on peut bloquer le port, enregistrer l’incident et avertir l’administrateur réseau (#balancetonport) !

Ce cas peut aussi être tout à fait légitime. Si un autre switch est branché sur ce port, il est normal de voir plusieurs adresses sources transiter.

Enfin, dans cette première étape, on regarde si la trame est taguée avec un VLAN. Si c’est le cas, le switch vérifie que ce VLAN est bien autorisé sur ce port. Sinon, il s’assure que les trames non taguées sont admises. Pareillement, en cas d’interdiction rencontrée, les trames sont jetées et l’incident peut être enregistré.

Commutation

Une fois que le switch a déterminé que la trame reçue était légitime, il doit la commuter. Cela consiste à la réémettre sur une autre interface.

C’est comme le routage, alors ?

Ça y ressemble, mais c’est beaucoup plus simple. Dans le cadre d’un réseau Ethernet, chaque switch dispose d’une table de correspondance interfaces / adresses MAC. Il apprend les associations en regardant les adresses MAC sources des trames légitimes qu’il reçoit. La commutation consiste à transmettre chaque trame au bon destinataire.

Si la destination n’est pas connue, il se passe quoi ? :euh:

Ça peut arriver, surtout juste après le démarrage. Dans ce cas… la trame est tout bonnement broadcastée sur tous les ports associés au même VLAN que la source. Bonjour la confidentialité ! :-°

Il y a un autre cas où cela peut arriver : lors de multicast. Une adresse MAC multicast commence par 01:00:5E (avec IPv4) ou 33:33 (avec IPv6). Certains switchs savent les gérer et retransmettre sur les bonnes interfaces. Mais les moins avancés se contentent de broadcaster !

Transmission

Une fois la décision prise pour la commutation, la trame est transmise sur le ou les ports concernés, à condition que la source et la destination soient dans le même VLAN. Selon la configuration, un tag de VLAN peut être ajouté (transmission de la trame à un autre switch ou routeur, trunk) ou retiré (transmission à un hôte qui n’a pas conscience de son VLAN). Éventuellement, il peut y avoir des logs ou des enregistrements réalisés à des fins d’analyse.

Il existe quelques subtilités pour cette dernière étape. Par exemple, certains switchs permettent de retransmettre sur un port défini tout ce qui arrive sur une autre interface, indépendamment de la source ou de la destination. Cette fonctionnalité est appelée port mirroring. Nous n’allons pas nous étendre dessus, sachez juste que ça existe. ;)


Nous avons fait un petit tour des réseaux Ethernet en présentant leur architecture, le protocole de niveau 2 associé et le commutateur. Par la suite, nous continuerons à explorer la couche liaison de données en étudiant d’autres genres de protocoles. :)

Si vous souhaitez étudier le Wi-Fi au niveau 2, nous vous recommandons cet article (archivé) de CommentÇaMarche. Vous y trouverez même une pointe de niveau 1. ;)

Enfin, vous repenserez à ce chapitre si, en vous baladant à Toulouse, vous vous retrouvez rue Vélane. :D