QinQ

novembre 21, 2013  |   Actualités,Blog   |     |   0 commentaire

Qu’est-ce que le QinQ ?

Le QinQ ou VLAN stacking est une technique permettant d’encapsuler des trames 802.1 Q dans une trame 802.1Q. La norme 802.1ad décrit ce format de trame ethernet dans laquelle un deuxième entête 802.1Q est inséré devant l’original.

Quelle utilité ?

Le cas le plus courant est celui d’un opérateur qui propose à ses clients un lien de niveau 2 capable de transporter les VLANs clients entre plusieurs sites. Si l’opérateur utilise un coeur de réseau ethernet, il peut alors utiliser le QinQ pour encapsuler tous les VLANs d’un client dans une trame 802.1ad qui portera le tag correspondant au client.
Le schéma ci-dessous représente ce cas de figure avec deux clients ayant chacun deux sites. Chacun des deux clients peut étendre ses VLANs entre ses deux sites. Pour différencier le trafic des deux clients qui peuvent potentiellement utiliser les mêmes numéros de VLAN, le switch dit “PE” pour Provider Edge (i.e. celui possédant l’interface reliant le switch client) ajoute un entête 802.1q supplémentaire pour tagguer ce trafic avec un VLAN ID propre au client (représenté en rouge sur le schéma). L’opérateur peut donc ainsi mutualiser son réseau ethernet, et proposer son offre de lien transparent au VLAN jusqu’à 4096 (la limite maximale de nombre de VLAN ID)
qinq

En pratique

Voici un exemple de configuration sur un Cisco Catalyst 3750 jouant le rôle de PE :
Sur un Catalyst 3750 :

interface GigabitEthernet1/0/1
switchport access vlan 100
switchport mode dot1q-tunnel
l2protocol tunnel stp
l2protocol tunnel cdp
l2protocol tunnel vtp

Ici on encapsule le trafic de notre client dans le VLAN opérateur ayant l’ID 100.
Les 3 dernière lignes, optionnelles, sont relatives au “Layer 2 Protocol Tunneling”. C’est une technique qui permet de tunneliser les BPDU du spanning-tree, CDP ou VTP. Le switch réécrit l’adresse MAC de destination afin qu’elle soit transmise comme une trame standard par les switches de coeur de réseau puis retransmise au switch client avec l’adresse MAC originale. Cela rend “transparent” le réseau de l’opérateur pour ces protocoles.

On peut vérifier rapidement sur un switch quelles sont les interfaces qui opèrent le QinQ grâce à la commande « show dot1q-tunnel » :

Switch#show dot1q-tunnel

dot1q-tunnel mode LAN Port(s)
-----------------------------
Gi1/0/1
Gi1/0/2

Les switches de coeur de réseau traitent les trames QinQ comme des trames 802.1Q standards, c’est à dire qu’ils ne se basent que sur le VLAN ID opérateur pour transmettre les trames et considèrent ce qu’il y a derrière comme étant le payload. L’avantage c’est qu’il n’y a rien à modifier sur les commutateurs du client ou ceux du coeur de réseau, seuls les PE pour chaque site sont à configurer. Une fois que cela est fait, les deux sites peuvent communiquer entre eux comme si c’était le même réseau et tout fonctionne.… ou presque !
En effet, si l’on s’arrête là, on peut voir apparaître des erreurs sur les interfaces de coeur de réseau. Voici par exemple, les compteurs d’une interface d’un switch de coeur de réseau chez un de nos clients opérateur :

# show interface e1/10 status
[...]
RX
6630166101 unicast packets  1910105716 multicast packets  487023155 broadcast packets
9027273064 input packets  7867135914088 bytes
0 jumbo packets  0 storm suppression packets
0 runts  12247943 giants  0 CRC/FCS  0 no buffer
12247943 input error  0 short frame  0 overrun   0 underrun  0 ignored
0 watchdog  0 bad etype drop  0 bad proto drop  0 if down drop
0 input with dribble  0 input discard
0 Rx pause

Etant donné que l’entête 802.1Q du client est maintenant inclus dans ce que le switch considère comme le payload, un paquet de 1500 octets envoyée par le client, apparaîtra comme faisant 1504 octets sur le coeur de réseau (1500 octets + les 32 bits du tag 802.1Q client)
Il faut donc augmenter la MTU sur toutes les interfaces qui vont transporter ces trames à l’interieur du réseau opérateur sauf pour l’interface reliant le switch du client au PE.

Bien que positionner la MTU à 1504 soit suffisant, il n’y a en général pas de raison de ne pas la positionner au maximum (Jumbo frame de 9000 octets sur les interface Gigabits et 10Gigabits)

Conclusion

Le QinQ est donc une technique de « tunneling » permettant de transporter le trafic ethernet de plusieurs clients sur un réseau opérateur de manière transparente pour les VLANs et le spanning-tree des clients

D’autres situations peuvent également bénéficier de l’utilisation du 802.1Q :

  • Dans le cas de fusion ou d’hébergement d’une filiale, une entreprise peut être amenée à héberger une infrastructure qu’elle ne maîtrise pas. Le QinQ peut par exemple contourner des problèmes de chevauchement de VLAN ID et sur une infrastructure déployant PVST, bien séparer les topologies spanning-tree de chaque client.
  • Dans le cas de data center multi-clients, elle permet (à l’instar de VXLAN) de dépasser la limite des 4096 VLAN ID disponibles.
La limite des 4096 VLANs est une limite théorique. La limite réelle dépend des capacité du switch (hardware et software). Un catalyst 2950 est limité à 250 VLANs, tandis qu’un Nexus 5500 peut en supporter jusqu’a 4013.