Debian logo [inetdoc.LINUX]

2. Réseaux locaux virtuels : VLANs

2.1. Définitions

Généralement, un réseau local (LAN) est défini par un domaine de diffusion. Tous les hôtes d'un réseau local reçoivent les messages de diffusion émis par n'importe quel autre hôte de ce réseau. Par définition, un réseau local est délimité par des équipements fonctionnant au niveau 3 du modèle OSI : la couche réseau.

Un réseau local virtuel (VLAN) est un réseau local (LAN) distribué sur des équipements fonctionnant au niveau 2 du modèle OSI : la couche liaison. A priori, il n'est donc plus nécessaire d'avoir recours à un équipement de niveau 3 pour «borner» le réseau local. Cette formulation bute sur une fonction difficile à contourner : l'interconnexion des réseaux locaux. Dès que l'on a besoin de communiquer entre domaines de diffusion, il est absolument nécessaire de passer par les fonctions de routage du niveau réseau du modèle OSI.

Le réseau local est distribué sur différents équipements via des liaisons dédiées appelées trunks. Un trunk est une connexion physique unique sur laquelle on transmet le trafic de plusieurs réseaux virtuels. Les trames qui traversent le trunk sont complétées avec un identificateur de réseau local virtuel (VLAN id). Grâce à cette identification, les trames sont conservées dans un même VLAN (ou domaine de diffusion).

Les trunks peuvent être utilisés :

entre deux commutateurs

C'est le mode de distribution des réseaux locaux le plus courant.

entre un commutateur et un hôte

C'est le mode de fonctionnement à surveiller étroitement. Un hôte qui supporte le trunking  a la possibilité d'analyser le trafic de tous les réseaux locaux virtuels.

entre un commutateur et un routeur

C'est le mode fonctionnement qui permet d'accéder aux fonctions de routage ; donc à l'interconnexion des réseaux virtuels par routage inter-VLAN. La mise en oeuvre de ce type de routage est l'objet de ce document.

Enfin, il ne faut pas oublier que tous les VLANs véhiculés dans le même trunk partagent la bande passante du média utilisé. Si un trunk utilise un lien 100Mbps Full-Duplex, la bande passante de tous les VLANs associés est limitée à ces 100Mbps Full-Duplex.

2.2. Réseaux locaux virtuels standards

Il existe plusieurs mécanismes de gestion des VLANs. Beaucoup sont propriétaires et ne fonctionnent que sur les équipements d'une seule marque.

VLANs par ports

Cette technique fournit une méthode de division d'un équipement de niveau 2 (un commutateur) en plusieurs domaines de diffusion. La réalisation de cette division est spécifique à chaque plateforme.

Le coût d'administration de ce genre de réseaux locaux est très important pusiqu'il faut gérer manuellement sur chaque équipement la distribution des réseaux locaux.

La restriction la plus importante vis-à-vis des développements actuels tient au fait qu'une station ne peut pas changer de VLAN ou appartenir à plusieurs VLANs. Le commutateur assure une isolation complète entre la station et le VLAN auquel elle appartient.

VLANs du type Cisco Inter-Switch Link, ISL VLANs

Cette technique a été développée spécifiquement pour les équipements Cisco™. Elle complète les en-têtes de trames avec 30 octets répartis en 13 champs. Ce type d'encapsulation est beaucoup utilisé dans les solutions Voice over IP (VoIP) du constructeur. Bien que «l'influence» de Cisco™ soit importante sur les technologies d'interconnexion réseau, cette technique n'est pas compatible avec les standards IEEE ; l'IEEE 802.1Q en l'occurence.

VLANs IEEE 802.1Q

Le standard IEEE 802.1Q fournit un mécanisme d'encapsulation très répandu et implanté dans de nombreux équipements de marques différentes. C'est sur ce standard que s'appuie ce document. Comme dans le cas de l'encapsulation ISL précédente, l'en-tête de trame est complété par une balise de 4 octets.

2.3. Balise IEEE 802.1Q

Le standard IEEE 802.1Q définit le contenu de la balise de VLAN (VLAN tag) avec laquelle on complète l'en-tête de trame Ethernet. Le format de la trame Ethernet modifiée avec les 4 octets supplémentaires est présenté ci-dessous :

+--------------+--------------+------------+---------------------+-----+
| adresse dst. | adresse src. | long./type | données ...         | FCS |
+--------------+--------------+------------+---------------------+-----+
                              |\
                              | \__________
                              |            \
+--------------+--------------+-------+-----+------------+---------------------+-----+
| adresse dst. | adresse src. | Etype | Tag | long./type | données ...         | FCS |
+--------------+--------------+-------+-----+------------+---------------------+-----+
                                     /       \
                                 ___/         \___
                                /                 \
                               +---+-+----+--------+
                               |pri| |    |vlan id |
                               +---+-+----+--------+

Il faut noter que le champ FCS est recalculé après l'insertion de la balise de VLAN.

Voici un extrait de capture, réalisée avec Wireshark, qui illustre les champs de la balise IEEE 802.1Q.

[Note] Note

Pour ne capturer que les trames avec balise IEEE 802.1Q, voici la syntaxe de filtrage à priori : # tshark -i eth0 -w sample.cap vlan.

Frame 103 (1518 bytes on wire, 1518 bytes captured)
Ethernet II, Src: 00:14:f2:75:ed:72, Dst: 00:10:5a:de:9d:d7
    Destination: 3com_de:9d:d7 (00:10:5a:de:9d:d7)
    Source: Cisco_75:ed:72 (00:14:f2:75:ed:72)
    Type: 802.1Q Virtual LAN (0x8100) 1
802.1Q Virtual LAN
    000. .... .... .... = Priority: 0 2
    ...0 .... .... .... = CFI: 0      3
    .... 0000 0110 0100 = ID: 100     4
    Type: IP (0x0800)
Internet Protocol, Src: 172.17.0.2 (172.17.0.2), Dst: 172.16.80.19 (172.16.80.19)
Transmission Control Protocol, Src Port: www (80), Dst Port: 1548 (1548)

1

Tag protocol identifier, TPID, EtherType

Ce champ de 16 bits identifie le protocole véhiculé dans la trame. La valeur 0x8100 désigne une balise IEEE 802.1Q / 802.1P.

2

Priority

Ce champ de 3 bits fait référence au standard IEEE 802.1P. Sur 3 bits on peut coder 8 niveaux de priorités de 0 à 7. La notion de priorité dans les VLANs est sans rapport avec les mécanismes de priorité IP au niveau réseau. Ces 8 niveaux sont utilisés pour fixer une priorité aux trames d'un VLAN relativement aux autres VLANs.

3

Canonical Format Identifier

Ce champ codé sur 1 bit assure la compatibilité entre les adresses MAC Ethernet et Token Ring. Un commutateur Ethernet fixera toujours cette valeur à 0. Si un port Ethernet reçoit une valeur 1 pour ce champ, alors la trame ne sera pas propagée pusiqu'elle est destinée à un port «sans balise» (untagged port).

4

VLAN Identifier, vlan id, VID

Ce champ de 12 bits sert à identifier le réseau local virtuel auquel appartient la trame. Il est possible de coder 4094 (2^12-2) réseaux virtuels (VLANs) avec ce champ.