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#