In questo documento vengono descritti i problemi comuni incontrati quando si integrano le reti Spanning Tree di layer 2 (L2) correnti sugli switch Cisco IOS® con Cisco Aggregation Services Router (ASR) serie 9000 con Cisco IOS XR.
Gli switch Cisco IOS che eseguono PVST+ (Per VLAN Spanning Tree Plus) bloccano le porte degli switch quando ricevono una BDPU (Bridge Protocol Data Unit) con un PVID incoerente. Questo problema si verifica quando un dispositivo tra gli switch modifica o converte i tag IEEE 802.1Q sui PVST+ BPDU.
Quando un ASR 9000 fornisce il servizio L2VPN point-to-point o multipoint tra gli switch con PVST+ e riscrive i tag VLAN, questi messaggi syslog potrebbero essere visualizzati sugli switch con Cisco IOS:
%SPANTREE-2-RECV_PVID_ERR: Received BPDU with inconsistent
peer vlan id 10 on GigabitEthernet0/10 VLAN20.
%SPANTREE-2-BLOCK_PVID_LOCAL: Blocking GigabitEthernet0/10
on VLAN20. Inconsistent local vlan.
Questo problema è dovuto al tag PVID incluso nelle PVST+ BPDU. Questo tag è progettato per rilevare configurazioni errate ed evitare loop accidentali. In questo scenario, tuttavia, ciascuna estremità viene bloccata e il traffico non può passare.
Di seguito è riportato un esempio:
Di seguito è riportata la configurazione di ASR serie 9000 (a9k1):
2vpn
bridge group bg1
bridge-domain bd1
interface TenGigE0/0/0/0.10
!
interface TenGigE0/0/0/1.20
interface TenGigE0/0/0/0.10 l2transport
encapsulation dot1q 10
rewrite ingress tag pop 1 symmetric
interface TenGigE0/0/0/1.20 l2transport
encapsulation dot1q 20
rewrite ingress tag pop 1 symmetric
Per evitare questo problema, è possibile bloccare le PVST+ BPDU. Questa azione disabilita lo Spanning Tree e può generare loop se sono disponibili connessioni ridondanti tra gli switch.
Le BPDU sono bloccate dalla funzione di filtro BPDU sugli switch. Il filtro BPDU blocca le BPDU in entrambe le direzioni, disabilitando di fatto lo Spanning Tree sulla porta. Il filtro BPDU impedisce le BPDU in entrata e in uscita. L'abilitazione del filtro BPDU su un'interfaccia equivale alla disabilitazione dello Spanning Tree che può generare loop nello Spanning Tree.
Sullo switch1 e sullo switch2, abilitare i filtri BPDU con questo comando:
interface TenGigabitEthernet1/2
spanning-tree bpdufilter enable
Per evitare questo problema, è possibile configurare l'ASR9000 in modo da eliminare le PVST+ BPDU. A tal fine, viene usato un elenco degli accessi ai servizi Ethernet di L2 per rifiutare i pacchetti destinati all'indirizzo MAC PVST+ BPDU.
La PVST+ BPDU per la VLAN non nativa 1 viene inviata all'indirizzo MAC PVST+ (detto anche indirizzo MAC SSTP (Shared Spanning Tree Protocol), ossia 0100.0ccc.cccd) e contrassegnata con un tag VLAN IEEE 802.1Q corrispondente.
Questo Access Control List (ACL) può essere usato per bloccare le PVST+ BPDU:
ethernet-services access-list l2acl
10 deny any host 0100.0ccc.cccd
20 permit any any
Applicare l'ACL all'interfaccia configurata come l2transport:
interface TenGigE0/0/0/0.10 l2transport
encapsulation dot1q 10
rewrite ingress tag pop 1 symmetric
ethernet-services access-group l2acl ingress
interface TenGigE0/0/0/1.20 l2transport
encapsulation dot1q 20
rewrite ingress tag pop 1 symmetric
ethernet-services access-group l2acl ingress
per impostazione predefinita, ASR9000 non esegue Spanning Tree come la maggior parte degli switch Cisco IOS. Nel modello Ethernet Virtual Circuit (EVC), una BPDU è semplicemente un altro pacchetto multicast L2. Molto spesso si verificano incoerenze nello Spanning Tree dovute a diversi tipi di STP eseguiti su un dominio bridge ASR 9000. Questo appare in diversi modi.
Si consideri la seguente topologia semplice:
Si supponga che lo switch 1 esegua Multiple Spanning Tree (MST) e lo switch 2 esegua PVST+. se a9k1 non esegue alcuna forma di Spanning Tree, lo switch 1 la vede come una porta limite. Lo switch 1 ritorna alla modalità PVST per le VLAN non presenti nella CST 0 (Common Spanning Tree Instance 0). Se questa è la progettazione desiderata, è necessario avere familiarità con l'interazione MST e PVST come descritto nel white paper Understanding Multiple Spanning Tree Protocol (802.1s).
Si supponga ora di eseguire MST sullo switch1 e sull'interfaccia a9k1 che va allo switch1, ma di eseguire comunque PVST+ sullo switch2. I PVST+ BPDU attraversano il dominio bridge e arrivano allo switch 1. Lo switch 1 rileva quindi entrambe le BPDU MST da a9k1 e le BPDU PVST+ dallo switch 2, che fanno sì che lo Spanning Tree sulla porta dello switch 1 passi costantemente dal blocco a non blocco e determini una perdita di traffico.
Switch1 riporta i seguenti syslog:
%SPANTREE-SP-2-PVSTSIM_FAIL: Superior PVST BPDU received on VLAN 2 port Gi2/13,
claiming root 2:000b.45b7.1100. Invoking root guard to block the port
%SPANTREE-SP-2-ROOTGUARD_BLOCK: Root guard blocking port GigabitEthernet2/13
on MST1.
%SPANTREE-SP-2-ROOTGUARD_UNBLOCK: Root guard unblocking port GigabitEthernet2/13
on MST0.
%SPANTREE-SP-2-PVSTSIM_FAIL: Superior PVST BPDU received on VLAN 2 port Gi2/13,
claiming root 2:000b.45b7.1100. Invoking root guard to block the port
%SPANTREE-SP-2-ROOTGUARD_BLOCK: Root guard blocking port GigabitEthernet2/13
on MST1.
L'output del comando show spanning-tree interface mostra che l'output cambia costantemente sul dispositivo switch1 Cisco IOS:
show spanning-tree interface gig 2/13
Mst Instance Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- -------
MST0 Desg BKN*20000 128.269 P2p Bound(PVST) *ROOT_Inc
MST1 Desg BKN*20000 128.269 P2p Bound(PVST) *ROOT_Inc
MST2 Desg BKN*20000 128.269 P2p Bound(PVST) *ROOT_Inc
show spanning-tree interface gig 2/13
Mst Instance Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- ---------
MST0 Desg FWD 20000 128.269 P2p
MST1 Desg FWD 20000 128.269 P2p
MST2 Desg FWD 20000 128.269 P2p
Per evitare questo problema, è necessario considerare tre opzioni.
Quando uno switch riceve un BPDU Spanning Tree inviato sulla stessa interfaccia, blocca tale VLAN a causa di un loop automatico. Questo è un problema comune che si verifica quando uno switch con porta trunk è collegato a un router ASR 9000 che fornisce servizi multipoint L2 e ASR 9000 non riscrive i tag VLAN sulle interfacce l2transport nello stesso dominio bridge.
Si consideri la stessa topologia semplice mostrata in precedenza. Ora, per un motivo legato alla progettazione su a9k1, più VLAN che provengono dalla stessa interfaccia dello switch trunk vengono unite in un unico dominio bridge.
Di seguito è riportata la configurazione a9k1:
l2vpn
bridge group bg1
bridge-domain bd1
interface GigabitEthernet0/1/0/31.2
!
interface GigabitEthernet0/1/0/31.3
!
interface GigabitEthernet0/1/0/31.4
!
interface GigabitEthernet0/1/0/32.2
!
interface GigabitEthernet0/1/0/32.3
!
interface GigabitEthernet0/1/0/32.4
interface GigabitEthernet0/1/0/31.2 l2transport
encapsulation dot1q 2
!
interface GigabitEthernet0/1/0/31.3 l2transport
encapsulation dot1q 3
!
interface GigabitEthernet0/1/0/31.4 l2transport
encapsulation dot1q 4
Questo collega le VLAN da 2 a 4 in un dominio bridge sull'appliance a9k1.
Per impostazione predefinita, il modello ASR 9000 EVC non riscrive alcun tag o pop. La PVST+ BPDU per VLAN2 arriva sull'interfaccia gig 0/1/0/31.2 e viene inoltrata indietro sul gig 0/1/0/31.3 e sul gig 0/1/0/31.4. Poiché la configurazione non prevede la riscrittura dell'azione in entrata pop, la BPDU restituisce invariata. Lo switch riconosce questa condizione quando recupera la propria BPDU e blocca la VLAN a causa di un autoblocco.
Il comando show spanning-tree interface mostra la VLAN bloccata:
6504-A#show spanning-tree interface gig 2/13
Vlan Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- --------
VLAN0002 Desg BLK 4 128.269 self-looped P2p
VLAN0003 Desg BLK 4 128.269 self-looped P2p
VLAN0004 Desg BLK 4 128.269 self-looped P2p
Per eliminare il problema, usare il comando ethernet exit-filter strict sulle interfacce ASR 9000 l2transport.
Questa non è una struttura consigliata. Tuttavia, se il design è quello desiderato, è possibile usare questa soluzione per evitare che lo switch riceva la BPDU che ha inviato alla stessa interfaccia.
È possibile utilizzare il comando ethernet exit-filter strict sulle interfacce a9k1 l2transport o globalmente. Di seguito è riportato l'esempio di questa opzione nell'interfaccia:
interface GigabitEthernet0/1/0/31.2 l2transport
encapsulation dot1q 2
ethernet egress-filter strict
!
interface GigabitEthernet0/1/0/31.3 l2transport
encapsulation dot1q 3
ethernet egress-filter strict
!
interface GigabitEthernet0/1/0/31.4 l2transport
encapsulation dot1q 4
ethernet egress-filter strict
Il comando ethernet egress-filter strict attiva un filtro EFP (Ethernet Flow Point) preciso sull'interfaccia. Da questa interfaccia vengono trasmessi solo i pacchetti che passano il filtro EFP in entrata sull'interfaccia. Altri pacchetti vengono scartati in corrispondenza del filtro di uscita. Ciò significa che se il pacchetto che esce non corrisponde all'etichetta dot1q di incapsulamento configurata sull'interfaccia, non viene inviato.
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
19-Sep-2013 |
Versione iniziale |