Este documento descreve problemas comuns encontrados quando você integra suas redes Spanning Tree de Camada 2 (L2) atuais em switches Cisco IOS® com o Cisco Aggregation Services Router (ASR) 9000 Series que executam o Cisco IOS XR.
Os switches Cisco IOS que executam Per VLAN Spanning Tree Plus (PVST+) bloqueiam portas de switch quando recebem uma Bridge Protocol Data Unit (BPDU) com um PVID inconsistente. Esse problema ocorre quando um dispositivo entre os switches altera ou converte as marcas IEEE 802.1Q nos PVST+ BPDUs.
Quando um ASR 9000 fornece serviço L2VPN ponto a ponto ou multiponto entre switches que executam o PVST+ e regrava as marcas de VLAN, estas mensagens de syslog podem ser exibidas nos switches baseados no 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.
Esse problema ocorre devido à marca PVID que é incluída com as BPDUs do PVST+. Essa marca foi criada para detectar configurações incorretas e evitar loops acidentais. Mas, nesse cenário, isso faz com que cada extremidade seja bloqueada e não permita que o tráfego passe.
Aqui está um exemplo:
Esta é a configuração do ASR 9000 Series (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
Para evitar esse problema, você pode bloquear as BPDUs do PVST+. Essa ação desabilita o Spanning Tree e pode resultar em loops se conexões redundantes estiverem disponíveis entre os switches.
As BPDUs são bloqueadas com o recurso de filtro de BPDU nos switches. O filtro de BPDU bloqueia BPDUs em ambas as direções, o que efetivamente desabilita o Spanning Tree na porta. O filtro de BPDU impede BPDU de entrada e de saída. Se você habilitar a filtragem de BPDU em uma interface, será o mesmo que desabilitar o Spanning Tree nela, o que pode resultar em loops de Spanning Tree.
Em switch1 e switch2, habilite os filtros de BPDU com este comando:
interface TenGigabitEthernet1/2
spanning-tree bpdufilter enable
Esse problema é evitado se você configurar o ASR9000 para descartar os BPDUs do PVST+. Isso é feito com uma lista de acesso de serviços Ethernet L2 para negar pacotes destinados ao endereço MAC da BPDU do PVST+.
PVST+ BPDU para VLAN não VLAN 1 (não nativa) são enviados para o endereço MAC PVST+ (também chamado de endereço MAC do Protocolo de árvore de abrangência compartilhada [SSTP - Shared Spanning Tree Protocol], 0100.0ccc.ccd) e marcados com uma marca de VLAN IEEE 802.1Q correspondente.
Esta Lista de Controle de Acesso (ACL - Access Control List) pode ser usada para bloquear as BPDUs do PVST+:
ethernet-services access-list l2acl
10 deny any host 0100.0ccc.cccd
20 permit any any
Aplique a ACL à interface configurada como 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
O ASR9000 não faz Spanning Tree por padrão como a maioria dos switches Cisco IOS. No modelo de Circuito virtual Ethernet (EVC), um BPDU é simplesmente outro pacote multicast de L2. Um problema comum encontrado são as inconsistências do Spanning Tree devido a vários tipos de STPs que são executados através de um domínio de ponte ASR 9000. Isso aparece de várias maneiras diferentes.
Considere esta topologia simples:
Suponha que switch1 execute Multiple Spanning Tree (MST) e switch2 execute PVST+. Se a9k1 não executar nenhuma forma de Spanning Tree, o switch 1 verá isso como uma porta de limite. Switch1 retorna ao modo PVST para VLANs que não estão na Common Spanning Tree Instance 0 (CST0). Se este for o projeto desejado, você deve estar familiarizado com a interação MST e PVST conforme descrito no white paper Entendendo o protocolo de árvore de abrangência múltipla (802.1s).
Agora suponha que você execute o MST no switch1 e na interface a9k1 que vai para o switch1, mas ainda execute o PVST+ no switch2. Os BPDUs de PVST+ passam pelo domínio de bridge e chegam ao switch1. O Switch 1 vê as BPDUs MST de a9k1 e as BPDUs PVST+ de switch2, o que faz com que o Spanning Tree na porta do switch 1 passe constantemente de bloqueio para não bloqueio e resulte em perda de tráfego.
O Switch 1 relata estes syslogs:
%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.
A saída do comando show spanning-tree interface mostra que a saída muda constantemente no dispositivo Cisco IOS do switch1:
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
Há três opções a serem consideradas para evitar esse problema.
Quando um switch recebe um BPDU de Árvore de Abrangência que ele enviou na mesma interface, ele bloqueia essa VLAN devido a um autoloop. Esse é um problema comum que ocorre quando um switch com uma porta de tronco é conectado a um roteador ASR 9000 que fornece serviços multiponto L2, e o ASR 9000 não regrava marcas de VLAN nas interfaces l2transport no mesmo domínio de bridge.
Considere a mesma topologia simples mostrada anteriormente. Mas agora, por uma razão de design no a9k1, várias VLANs que vêm da mesma interface de tronco de switch são mescladas em um domínio de bridge.
Aqui está a configuração 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
Isso liga as VLANs 2 a 4 em um domínio de bridge no a9k1.
O modelo ASR 9000 EVC não reescreve nenhuma tag ou pop por padrão. O BPDU de PVST+ para VLAN2 entra na interface gig 0/1/0/31.2 e é encaminhado de volta para gig 0/1/0/31.3 e gig 0/1/0/31.4. Como a configuração não é uma regravação da ação pop de ingresso, a BPDU retorna inalterada. O switch vê isso à medida que recebe seu próprio BPDU de volta e bloqueia essa VLAN devido a um autoloop.
O comando show spanning-tree interface mostra a VLAN bloqueada:
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
Esse problema é eliminado com o uso do comando ethernet egress-filter strict nas interfaces de transporte L2 do ASR 9000.
Este não é um projeto recomendado. No entanto, se esse for realmente o projeto desejado, você poderá usar essa solução para impedir que o switch receba a BPDU que ele enviou de volta na mesma interface.
Você pode usar o comando ethernet egress-filter strict nas interfaces a9k1 l2transport ou globalmente. Aqui está o exemplo dele na interface:
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
O comando ethernet egress-filter strict habilita a filtragem de ponto de fluxo Ethernet (EFP) de saída estrita na interface. Somente os pacotes que passam pelo filtro EFP de entrada na interface são transmitidos para fora dessa interface. Outros pacotes são descartados no filtro de saída. Isso significa que se o pacote de saída não corresponder ao rótulo de encapsulamento dot1q configurado na interface, ele não será enviado.
Revisão | Data de publicação | Comentários |
---|---|---|
1.0 |
19-Sep-2013 |
Versão inicial |