martedì, Dicembre 3, 2024

IEEE 802.1Q Tunneling (QinQ)

Gianremo Smisek
Gianremo Smisek
Certificato Cisco CCNA, CCDA, CCNP e CCDP. Lavorava come Network Admin presso il NOC di un ISP Locale, occupandosi di installazione/troubleshooting ADSL/infrastruttura di rete/routing su DSLAM e router/switch Cisco. Attualmente, ricopre il ruolo di ICT Consultant indipendente.

Dopo aver letto un articolo riguardante il suddetto tunneling, ho deciso di provarlo in un lab e di pubblicare le prove effettuate. Piccola premessa: il dot1q tunneling viene spesso usato nelle core network degli ISP che hanno il bisogno di segmentare e dividere il loro traffico da quello dei propri clienti. In questo modo ogni cliente dell’ISP può avere ogni tipo di VLAN senza influenzare il traffico e/o le VLAN dell’ISP stesso. Un esempio può essere quello di due sedi di un cliente connesse tramite Metro Ethernet che viene fornito da un provider. L’ISP assegna una VLAN dove segregare tutto il traffico del cliente. Di seguito una topologia per meglio chiarire il concetto.

I Catalyst 2950 appartengono al cliente e sono connessi in Metro Ethernet agli apparati dell’ISP (nel caso del lab due Catalyst 3550). L’obiettivo è configurare le due fa0/1 dei 2950 in trunk mode e farli comunicare in modo totalmente trasparente. Di fatto essi non avranno informazione alcuna riguardo gli apparati dell’ISP. Saranno totalmente invisibili dalla prospettiva del cliente. Possiamo far passare nel tunnel qualsiasi protocollo di L2: VTP, STP, CDP, UDLD, PAgP e LACP. Molto importante far passare l’STP, per non creare incongruenze nella topologia di rete a livello 2 e quindi possibili loop. Il tunnel avviene ri-taggando in 802.1Q un frame già taggato a sua volta come dot1q (802.1Q). Per ulteriori dettagli leggere quì.

Il link tra i due 3550 (che ricordiamo simulano gli apparati dell’ISP) è un normalissimo trunk, per l’esattezza due porte GbE connesse in fibra ed appartenenti ad un bundle etherchannel su PAgP. Nella configurazione del trunk, è stato inserito l’allow della VLAN appartenente al cliente. Non e’ obbligatorio anche se consigliabile inserirlo. Per scopi di testing, ho inserito anche l’allow della VLAN 1, così potevo effettuare prove direttamente dal mio PC.

Cosa molto importante. Prima di iniziare la configurazione del tunneling, assicuriamoci che i nostri switch siano configurati per il supporto dell’MTU di 1504 bytes. Il QinQ aggiunge 4 bytes aggiuntivi. La modifica potrebbe richiedere un reload dei Catalyst.

C3550-48#show system mtu
System MTU size is 1500 bytes
C3550-48#conf t
C3550-48(config)#system mtu 1504
Changes to the System MTU will not take effect until the next reload is done.

Di seguito la configurazione dell’etherchannel + trunk sugli apparati ISP:

C3550-48#sh run int po1
Building configuration...

Current configuration : 129 bytes
!
interface Port-channel1
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 1,200
 switchport mode trunk
end

C3550-48#sh run int gi0/1
Building configuration...

Current configuration : 166 bytes
!
interface GigabitEthernet0/1
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 1,200
 switchport mode trunk
 channel-group 1 mode desirable
end

C3550-48#sh run int gi0/2
Building configuration...

Current configuration : 166 bytes
!
interface GigabitEthernet0/2
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 1,200
 switchport mode trunk
 channel-group 1 mode desirable
end

C3550-48#

Configurazione esattamente identica anche per l’altro Catalyst.

C3550-24#sh run int po1
Building configuration...

Current configuration : 129 bytes
!
interface Port-channel1
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 1,200
 switchport mode trunk
end

C3550-24#sh run int gi0/1
Building configuration...

Current configuration : 166 bytes
!
interface GigabitEthernet0/1
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 1,200
 switchport mode trunk
 channel-group 1 mode desirable
end

C3550-24#sh run int gi0/2
Building configuration...

Current configuration : 166 bytes
!
interface GigabitEthernet0/2
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 1,200
 switchport mode trunk
 channel-group 1 mode desirable
end

C3550-24#

Dopo aver configurato il trunk, possiamo passare finalmente alle interfacce che connettono verso il cliente. Nel caso del lab le interfacce sono fa0/15 e fa0/11. Suddette interfacce vengono assegnate alla VLAN 200 (VLAN che l’ISP assegna al cliente e che chiaramente può avere qualsiasi VID) e configurate per il dot1q-tunnel. Configureremo anche il layer two protocol tunneling così da avere il trasporto completamente trasparente dei protocolli L2 come CDP, VTP, STP, UDLD, PAgP e LACP. Per maggiori dettagli, leggete quì. Per poter abilitare UDLD, PAgP ed LACP, dobbiamo aggiungere la keyword point-to-point al comando l2protocol-tunnel. Se il comando l2protocol-tunnel viene inserito senza parametri, IOS attiverà il tunneling per tutti e tre i protocolli (CPD, STP, VTP) e per default disabiliterà CDP con no cdp enable.

C3550-48#sh run int fa0/15
Building configuration...

Current configuration : 176 bytes
!
interface FastEthernet0/15
 switchport access vlan 200
 switchport mode dot1q-tunnel
 l2protocol-tunnel cdp
 l2protocol-tunnel stp
 l2protocol-tunnel vtp
 no cdp enable
end
C3550-24#sh run int fa0/11
Building configuration...

Current configuration : 176 bytes
!
interface FastEthernet0/11
 switchport access vlan 200
 switchport mode dot1q-tunnel
 l2protocol-tunnel cdp
 l2protocol-tunnel stp
 l2protocol-tunnel vtp
 no cdp enable
end

C3550-24#

Configuriamo ora le CPE ( i 2950 del cliente) per poter negoziare il trunk. L’interfaccia usata per il lab è la fa0/1 per entrambi i 2950.

C2950-1#sh run int fa0/1
Building configuration...

Current configuration : 56 bytes
!
interface FastEthernet0/1
 switchport mode trunk
end

C2950-1#
C2950-2#sh run int fa0/1
Building configuration...

Current configuration : 56 bytes
!
interface FastEthernet0/1
 switchport mode trunk
end

C2950-2#

Verifichiamo il traffico inspectato dei protocolli L2 che passano negli apparati dell’ISP e le porte che partecipano al dot1q tunneling con i comandi show l2protocol-tunnel e show dot1q-tunnel.

C3550-48#sh l2protocol-tunnel
COS for Encapsulated Packets: 5
Drop Threshold for Encapsulated Packets: 0

Port       Protocol Shutdown  Drop      Encapsulation Decapsulation Drop
                    Threshold Threshold Counter       Counter       Counter
---------- -------- --------- --------- ------------- ------------- -------------
Fa0/15              cdp           ----      ----        28        26         0
                    stp           ----      ----       929       409         0
                    vtp           ----      ----         0         0         0
                    ---           ----      ----      ----      ----      ----
                    ---           ----      ----      ----      ----      ----
                    ---           ----      ----      ----      ----      ----

C3550-48#
C3550-48#sh dot1q-tunnel

dot1q-tunnel mode LAN Port(s)
-----------------------------
Fa0/15
C3550-48#
C3550-24#sh l2protocol-tunnel
COS for Encapsulated Packets: 5
Drop Threshold for Encapsulated Packets: 0

Port       Protocol Shutdown  Drop      Encapsulation Decapsulation Drop
                    Threshold Threshold Counter       Counter       Counter
---------- -------- --------- --------- ------------- ------------- -------------
Fa0/11              cdp           ----      ----        34        34         0
                    stp           ----      ----       459      1321         0
                    vtp           ----      ----         0         0         0
                    ---           ----      ----      ----      ----      ----
                    ---           ----      ----      ----      ----      ----
                    ---           ----      ----      ----      ----      ----

C3550-24#

C3550-24#sh dot1q-tunnel

dot1q-tunnel mode LAN Port(s)
-----------------------------
Fa0/11
C3550-24#

Controlliamo sulle CPE la modalità delle interfacce fa0/1 e se il traffico CDP viene trasportato in modo trasparente:

2950-1#sh int fa0/1 switchport | i trunk
Administrative Mode: trunk
Operational Mode: trunk
Administrative private-vlan trunk native VLAN: none
Administrative private-vlan trunk encapsulation: dot1q
Administrative private-vlan trunk normal VLANs: none
Administrative private-vlan trunk private VLANs: none
C2950-1#
C2950-2#sh int fa0/1 switchport | i trunk
Administrative Mode: trunk
Operational Mode: trunk
Administrative private-vlan trunk native VLAN: none
Administrative private-vlan trunk encapsulation: dot1q
Administrative private-vlan trunk normal VLANs: none
Administrative private-vlan trunk private VLANs: none
C2950-2#
C2950-1#sh cdp nei
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone

Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
C2950-2          Fas 0/1            140          S I      WS-C2950-2Fas 0/1
C2950-1#
C2950-2#sh cdp nei
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone

Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
C2950-1          Fas 0/1            130          S I      WS-C2950-2Fas 0/1
C2950-2#

Articoli correlati

Noleggia una Tesla per il tuo evento ICT!

Categorie