CCNA 200-301 · Commutation

Les liens Trunk

Faire transiter plusieurs VLANs entre deux switchs sur un seul lien : protocoles ISL et 802.1Q, VLAN natif, modes de port et configuration complète sur un commutateur Cisco.

Un lien trunk (« tronc » en anglais) est le lien physique qui permet de faire transiter plusieurs VLANs entre deux équipements, tout en conservant l’identification VLAN faite sur chaque trame. Dans cet article, tu découvriras pourquoi les liens trunk ont été inventés, la différence entre les protocoles ISL et 802.1Q, le rôle du VLAN natif, les modes de port (trunk, dynamic) et la configuration complète d’une liaison trunk sur un switch Cisco.

  • Différencier le protocole ISL et le protocole 802.1Q.
  • Comprendre pourquoi les liens trunk ont été inventés.
  • Configurer un lien trunk sur un switch Cisco.
Comment faire communiquer les mêmes VLANs entre deux switchs en n’utilisant qu’un seul câble d’interconnexion ?

Introduction

Trunk = Tronc en anglais : un lien physique qui fait transiter plusieurs VLANs et conserve l’identification VLAN faite sur chaque trame.

Pour faire simple, un port trunk :

  • fait partie de tous les VLANs du switch — donc tout le monde peut communiquer avec lui ;
  • indique dans chaque trame envoyée le numéro de VLAN ;
  • regarde dans chaque trame reçue s’il y a un numéro de VLAN.

Les liens trunk en théorie

Dans un monde sans trunk

Nous voulons que :

  • le VLAN 10 du SWITCH_01 puisse discuter avec le VLAN 10 du SWITCH_02 ;
  • le VLAN 20 du SWITCH_01 puisse discuter avec le VLAN 20 du SWITCH_02 ;
  • le VLAN 30 du SWITCH_01 puisse discuter avec le VLAN 30 du SWITCH_02.
Sans lien trunk, un seul câble d’interconnexion ne peut servir qu’un seul VLAN à la fois.
Sans lien trunk : un seul câble d’interconnexion ne peut transporter qu’un seul VLAN à la fois.

Bon, essayons plusieurs méthodes :

  • Test 01 — Je ne configure pas le port FastEthernet 0/8 du SWITCH_01 et du SWITCH_02. Résultat : ces ports restent dans le VLAN 1 ; les VLANs 10, 20 et 30 ne pourront pas utiliser ce port.
  • Test 02 — Je mets le port FastEthernet 0/8 des deux switchs dans le VLAN 10. Résultat : les VLANs 20 et 30 ne pourront pas utiliser ce port.
  • Test 03 — Je mets le port FastEthernet 0/8 des deux switchs dans le VLAN 20. Résultat : les VLANs 10 et 30 ne pourront pas utiliser ce port.
  • Test 04 — Je mets le port FastEthernet 0/8 des deux switchs dans le VLAN 30. Résultat : les VLANs 10 et 20 ne pourront pas utiliser ce port.

On voit qu’il nous faut quelque chose de supplémentaire pour faire fonctionner tout ça : un lien trunk !

Dans un monde avec trunk

Avec un lien trunk, un seul câble suffit : tous les VLANs transitent simultanément sur l’interconnexion, chaque trame étant marquée du numéro de VLAN auquel elle appartient.

Avec un lien trunk, un seul câble transporte tous les VLANs entre les deux switchs.
Avec un lien trunk : un seul câble transporte tous les VLANs entre les deux switchs.

Les protocoles ISL et 802.1Q

Pour mettre en place un lien trunk, il existe deux protocoles :

CaractéristiqueISL802.1Q
OrigineProtocole Cisco (propriétaire)Protocole normalisé IEEE
Traitement de la trameEncapsule la trameTague la trame
Surcoût par trame+ 30 octets+ 4 octets
VLAN natifAucunOui (par défaut VLAN 1)

Le protocole ISL

Le protocole ISL (Inter-Switch Link) est une technique de trunking utilisée pour transporter les VLANs à travers le réseau. Il a été développé par Cisco pour permettre aux commutateurs de reconnaître les différents VLANs transportés sur la liaison trunk. ISL fonctionne en encapsulant chaque trame Ethernet d’un VLAN dans une autre trame Ethernet plus grande, qui contient des informations supplémentaires sur le VLAN. Cette trame est ensuite transportée sur la connexion trunk entre les switchs ; à chaque extrémité, elle est désencapsulée et la trame d’origine est envoyée au commutateur approprié en fonction du VLAN ID.

Principe de l’encapsulation ISL d’une trame VLAN.
ISL encapsule la trame d’origine dans une trame Ethernet plus grande.

ISL présente quelques inconvénients : il est incompatible avec les commutateurs d’autres fabricants que Cisco, ce qui limite la flexibilité et l’interopérabilité du réseau ; et il peut impacter les performances, car chaque trame doit être encapsulée dans une trame plus grande, augmentant la charge de travail des commutateurs.

Fonctionnement d’ISL

ISL encapsule chaque trame entre un header (en-tête) de 26 octets et un trailer (en-queue) de 4 octets.

Encapsulation ISL en détail : header de 26 octets et trailer de 4 octets.
Encapsulation ISL en détail.

L’IEEE a sorti une norme afin que tous les équipements réseau de marques différentes puissent échanger leurs informations VLAN. Cisco privilégie désormais la norme IEEE 802.1Q et abandonne son protocole ISL : celui-ci n’est plus implémenté dans les nouveaux équipements Cisco. Toutes les trames qui transitent par un lien trunk ISL sont encapsulées (il n’y a pas de notion de VLAN natif).

Pour résumer

  • ISL = Inter-Switch Link ;
  • protocole propriétaire Cisco ;
  • développé bien avant le protocole IEEE 802.1Q ;
  • ajoute 30 octets à chaque trame.

Le protocole 802.1Q

Présentation

Le protocole 802.1Q :

  • est un protocole normalisé par l’IEEE ;
  • a été créé afin d’uniformiser les liaisons trunk ;
  • est couramment appelé Dot1q (802.1q = .1q = dot1q ; dot = point).

Ce protocole ajoute un Tag 802.1Q juste après les adresses MAC destination et source de nos trames.

Emplacement du tag VLAN 802.1Q dans une trame Ethernet.
Le tag 802.1Q est inséré dans la trame Ethernet.
Position du tag VLAN après les adresses MAC destination et source.
Tag VLAN.
Détail des champs du tag VLAN 802.1Q.
Tag VLAN en détail.

Le VLAN natif

Le protocole IEEE 802.1Q ajoute un tag sur chaque trame… sauf sur les trames appartenant au VLAN natif. Si un port trunk utilisant ce protocole reçoit une trame non taguée, il en déduit qu’elle fait partie du VLAN natif. Le VLAN natif par défaut est le VLAN 1.

Mais pourquoi l’IEEE a-t-il créé le VLAN natif ? Il y a fort longtemps, l’utilisation d’un hub était courante et ces hubs pouvaient être placés sur une liaison trunk. Les utilisateurs finaux connectés à ces hubs recevaient des trames 802.1Q… et ne les comprenaient pas. S’ils faisaient partie du VLAN natif, la trame n’était pas taguée et redevenait compréhensible. Depuis Windows XP, les utilisateurs finaux comprennent les trames 802.1Q sans tenir compte du marquage VLAN.

Le VLAN natif reste important : les trames non taguées reçues par un port trunk 802.1Q sont placées dans le VLAN natif. Imaginons un cas de figure :

  • tous nos clients sont dans le VLAN 20 ;
  • le VLAN natif est également le VLAN 20.

Toutes les trames générées par nos switchs (CDP, LLDP, DTP) se retrouveraient alors dans notre VLAN client — pas terrible niveau sécurité. Il est donc fortement conseillé de créer un VLAN réservé au VLAN natif.

Configuration d’une liaison trunk

Configuration de base

Sw(config)# interface FastEthernet 0/24
Sw(config-if)# description VERS_SWITCH_001
Sw(config-if)# switchport mode trunk
Sw(config-if)# switchport trunk encapsulation dot1q

Si la ligne contenant dot1q ne passe pas, ce n’est pas grave : cela veut simplement dire que le protocole ISL n’existe plus pour ce switch. Cette configuration est à mettre sur tous les ports d’interconnexion SWITCH ↔ SWITCH.

Configuration en détail

Pour configurer un port en mode trunk, il faut d’abord voir comment un port est configuré par défaut. Si on allume un switch pour la première fois et qu’on lance un show running-configuration, on voit ceci :

Interface FastEthernet 0/1
!
Interface FastEthernet 0/2
!
etc.

A priori nos ports n’ont aucune configuration… sauf que nos équipements n’affichent pas les paramètres par défaut. S’ils les affichaient, nous verrions :

Interface FastEthernet 0/1
  switchport mode dynamic auto
  switchport trunk encapsulation negotiate
  switchport trunk native VLAN 1
  switchport trunk allowed VLAN all
  switchport access VLAN 1
!
Interface FastEthernet 0/2
  etc.

Une interface switch peut prendre 3 modes : access, trunk et dynamic.

  • Le mode access est détaillé dans l’article Les VLANs ;
  • Le mode trunk est détaillé ci-dessous ;
  • Le mode dynamic est détaillé dans le sous-chapitre « Dynamic Trunking Protocol ».

Le mode trunk

Mettre un port en mode trunk :

Switch(config-if)# switchport mode trunk

Il faut que les deux ports de la liaison trunk soient en mode trunk.

Le mode dynamic

  • DTP = Dynamic Trunking Protocol ;
  • protocole propriétaire Cisco ;
  • permet de configurer dynamiquement les deux ports d’une liaison trunk (ISL ou 802.1Q).

Mettre un port en mode dynamic :

Switch(config-if)# switchport mode dynamic [ auto | desirable ]

Si le port d’en face est configuré en mode manuel, il va se mettre dans le même mode. Il existe deux modes dynamic :

  • Auto : le port se met en mode trunk si l’autre port de la liaison le lui demande. Si le port d’en face est en mode trunk ou dynamic desirable, les deux ports passent en trunk ; sinon ils restent en access.
  • Desirable : le port essaie activement de mettre la liaison en mode trunk. Si le port d’en face est en mode trunk, dynamic auto ou dynamic desirable, les deux ports passent en trunk ; sinon ils restent en access.
Tableau récapitulatif des différents modes DTP entre deux ports Cisco.
Récapitulatif des combinaisons de modes DTP.

Pour le désactiver :

Switch(config-if)# switchport nonegotiate

Configuration des options

Allowed VLAN

Par défaut, tous les VLANs sont autorisés à transiter sur notre lien trunk. Afin de sécuriser notre réseau, nous pouvons n’autoriser que les VLANs souhaités. Exemple : autoriser les VLANs de 10 à 20 et de 40 à 50.

Switch(config-if)# switchport trunk allowed vlan 10-20, 40-50

ou

Switch(config-if)# switchport trunk allowed vlan 10-50
Switch(config-if)# switchport trunk allowed vlan remove 21-39

VLAN natif

(Ne concerne que le protocole 802.1Q.) Comme expliqué plus haut, il est conseillé de créer un VLAN dédié au VLAN natif. Voici comment faire :

Switch(config)# vlan 3
Switch(config-vlan)# name NATIVE
Switch(config-vlan)# exit
Switch(config)# interface GigaBitEthernet 0/1
Switch(config-if)# switchport trunk native vlan 3

Toutes les trames non taguées seront alors placées dans le VLAN 3 par le port trunk de réception.

Encapsulation

Nous avons vu qu’il est possible d’utiliser les protocoles ISL et 802.1Q pour mettre en place un lien trunk.

Sw(config-if)# switchport trunk encapsulation [ isl | dot1q | negotiate ]

Par défaut, tous nos ports sont en mode negotiate. Si les deux ports d’une liaison sont en negotiate et que les deux équipements supportent les deux protocoles, ISL sera choisi… Il est donc important de choisir soi-même son protocole de trunk.

Configuration de ISL :

Switch(config-if)# switchport trunk encapsulation isl

Configuration de 802.1Q :

Switch(config-if)# switchport trunk encapsulation dot1q

Vérification de la configuration trunk

Vérifier l’état de nos ports :

Switch# show interfaces FastEthernet 0/1 switchport
Sortie de show interfaces switchport comparant un port en dynamic auto et un port en trunk.
Le port 0/1 du Switch_A est en dynamic auto (par défaut), celui du Switch_B est en trunk.

Sur l’image ci-dessus, on voit que le port 0/1 du Switch_A est en mode dynamic auto (par défaut) et que celui du Switch_B est en mode trunk.

Switch# show interfaces trunk

Port      Mode   Encapsulation   Status     Native vlan
Fa0/24    on     802.1q          trunking   1

Port      Vlans allowed on trunk
Fa0/24    1-4094

Port      Vlans allowed and active in management domain
Fa0/24    1,10,20,30

Port      Vlans in spanning tree forwarding state and not pruned
Fa0/24    1,10,20,30

La ligne « operational mode » est donc bien passée en mode trunk.

Questions fréquentes sur les liens Trunk

Qu’est-ce qu’un lien trunk ?

Un lien trunk est une liaison entre deux switchs (ou un switch et un routeur) capable de transporter le trafic de plusieurs VLAN simultanément sur un seul câble. Chaque trame est étiquetée pour identifier le VLAN auquel elle appartient.

Quelle différence entre un port access et un port trunk ?

Un port access appartient à un seul VLAN et transporte du trafic non étiqueté vers un terminal (PC, imprimante). Un port trunk transporte plusieurs VLAN étiquetés, généralement entre équipements réseau.

Qu’est-ce que le protocole 802.1Q ?

802.1Q est le standard IEEE de tagging VLAN. Il ajoute une étiquette de 4 octets dans la trame Ethernet pour indiquer le VLAN. C’est le protocole de trunk le plus utilisé, en remplacement du protocole propriétaire Cisco ISL.

Comment configurer un lien trunk sur un switch Cisco ?

En mode configuration d’interface, on utilise les commandes : switchport mode trunk pour activer le trunk, et switchport trunk allowed vlan pour préciser les VLAN autorisés. On vérifie ensuite avec show interfaces trunk.

Qu’est-ce que le VLAN natif sur un trunk ?

Le VLAN natif est le VLAN dont le trafic circule sans étiquette sur un lien trunk 802.1Q (par défaut le VLAN 1). Il doit être identique des deux côtés du trunk pour éviter les erreurs de configuration et les risques de sécurité.

Portrait d'Eric Jouffrion, contributeur du site FingerInTheNet

Eric JOUFFRILLON

Co-auteur de l'article

Expert SATCOM
Technicien Réseau
17 ans d’éxpérience déploiement réseau SATCOM
Spécialisé LFN (Long Fat Network).Diffusion vidéo et QOS.

Photo en noir et blanc de Noël Nicolas

Noël NICOLAS

Auteur de l'article

Expert Réseau
15 ans d’expérience
CCNP Routing and Switching
Fondateur du site FingerInTheNet

Formation CCNA 200-301Formation CCNA

Devenez certifié CCNA 200-301

La formation complète Cisco, à votre rythme et accès à vie.

Voir la formation →