内容

概要

問題：ポート VLAN ID（PVID）の不一致

解決方法

スイッチの BPDU フィルタ

ASR 9000 での PVST+ BPDU のブロック

問題：ASR 9000 で複数のタイプのスパニング ツリー プロトコル（STP）を使用する場合に、スイッチ ポートがブロックと転送との間をフラップする

解決方法

問題：セルフループの検出によるスパニング ツリー ポートのブロック

解決方法

関連情報

概要

このドキュメントでは、Cisco IOS® スイッチの現在のレイヤ 2（L2）スパニング ツリー ネットワークと、Cisco IOS XR が稼働する Cisco アグリゲーション サービス ルータ（ASR）9000 シリーズを統合する場合に発生するよくある問題について説明します。

問題：ポート VLAN ID（PVID）の不一致

Per VLAN Spanning Tree Plus（PVST+）が稼働する Cisco IOS スイッチでは、PVID が一致しないブリッジ プロトコル データ ユニット（BPDU）を受信すると、スイッチ ポートがブロックされます。この問題は、PVST+ BPDU 上でスイッチ間のデバイスが IEEE 802.1Q タグを変更または変換すると発生します。

ASR 9000 が、PVST+ が稼働するスイッチ間に L2VPN ポイントツーポイントまたはマルチポイント サービスを提供し、VLAN タグを書き換えると、Cisco IOS ベースのスイッチに次の syslog メッセージが表示される場合があります。

%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.

この問題は、PVST+ BPDU に含まれる PVID タグが原因です。このタグは設定ミスを検出し、偶発的なループを回避するように設計されています。しかし、このシナリオでは、両端がブロックされ、トラフィックは通過できません。

以下が一例です。

ASR 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

解決方法

この問題を回避するために、PVST+ BPDU をブロックできます。このアクションによってスパニング ツリーが無効になり、スイッチ間で冗長接続が使用可能な場合はループが発生する場合があります。

注意:BPDUをブロックしてスパニングツリーを効果的に無効にする場合は注意が必要です。

スイッチの BPDU フィルタ

スイッチの BPDU フィルタ機能によって BPDU がブロックされます。BPDU フィルタは両方向で BPDU をブロックし、ポートのスパニング ツリーを事実上無効にします。BPDU フィルタはインバウンドおよびアウトバウンド BPDU を抑止します。インターフェイスで BPDU フィルタリングを有効にすると、インターフェイスでスパニング ツリーを無効にした場合と同じになるため、スパニング ツリー ループが発生する可能性があります。

スイッチ 1 およびスイッチ 2 で、次のコマンドを使用して BPDU フィルタを有効にします。

interface TenGigabitEthernet1/2

spanning-tree bpdufilter enable

ASR 9000 での PVST+ BPDU のブロック

この問題は、ASR 9000 で PVST+ BPDU がドロップされるように設定すると回避できます。これは、L2 イーサネットサービス アクセスリストが、PVST+ BPDU MAC アドレスが宛先であるパケットを拒否するためです。

非 VLAN 1（非ネイティブ）VLAN の PVST+ BPDU は、PVST+ MAC アドレス（別名は共有スパニング ツリー プロトコル（SSTP）MAC アドレス。0100.0ccc.cccd）に送信され、対応する IEEE 802.1Q VLAN タグがタグ付けされます。

このアクセス コントロール リスト（ACL）は、PVST+ BPDU をブロックするために使用できます。

ethernet-services access-list l2acl

10 deny any host 0100.0ccc.cccd

20 permit any any

l2transport として設定されているインターフェイスに ACL を適用します。

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

問題：ASR 9000 で複数のタイプのスパニング ツリー プロトコル（STP）を使用する場合に、スイッチ ポートがブロックと転送との間をフラップする

ASR 9000 は、ほとんどの Cisco IOS スイッチと異なり、デフォルトではスパニング ツリーを実行しません。Ethernet Virtual Circuit（EVC）モデルでは、BPDU は単なるひとつの L2 マルチキャスト パケットです。よくある問題として、ASR 9000 のブリッジ ドメインで稼働する STP のタイプが複数あるため、スパニング ツリーが一致しないことがあります。これはさまざまな形で現れます。

次の単純なトポロジを考えてみます。

スイッチ 1 がマルチ スパニング ツリー（MST）を実行し、スイッチ 2 が PVST+ を実行すると仮定します。a9k1 がいかなる形のスパニング ツリーも実行しない場合、スイッチ 1 はこれを境界ポートと見なします。スイッチ 1 は、Common Spanning Tree Instance 0（CST0）にない VLAN については PVST モードにフォールバックします。これが意図した設計である場合は、「マルチ スパニングツリー プロトコル（802.1s）について」ホワイト ペーパーで説明されている MST と PVST の相互対話について精通している必要があります。

ここで、スイッチ 1 とスイッチ 1 に向かう a9k1 インターフェイス上で MST を実行していると仮定します。ただし、スイッチ 2 上の PVST+ も実行中です。PVST+ BPDU はブリッジ ドメインをパススルーしてスイッチ 1 に到達します。スイッチ 1 は、a9k1 からの MST BPDU とスイッチ 2 からの PVST+ BPDU の両方を受け取ることになります。これにより、スイッチ 1 ポートのスパニング ツリーは常にブロックされなくなり、結果的にトラフィック損失が発生します。

スイッチ 1 は次の 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.

show spanning-tree interface コマンドの出力は、スイッチ 1 の 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

解決方法

この問題を回避するには、3 つの方法が考えられます。

- スイッチ 2 に MST を設定し、スイッチ 1 とスイッチ 2 の両方で a9k1 インターフェイスの MST を有効にします。

- a9k1 のイーサネットサービス アクセスリストを使用して、スイッチ 2 からの入力またはスイッチ 1 への出力のいずれかで PVST+ BPDU がドロップされるようにします。

- スイッチ 2 に向かう a9k1 インターフェイス上で Per VLAN Spanning Tree Access Gateway（PVSTAG）を実行します。これにより、a9k1 はスイッチ 2 からの PVST+ BPDU を消費します。

問題：セルフループの検出によるスパニング ツリー ポートのブロック

スイッチが、同じインターフェイス上で送信したスパニング ツリー BPDU を受信すると、セルフループのために VLAN がブロックされます。これは、トランク ポートを持つスイッチが L2 マルチポイント サービスを提供する ASR 9000 ルータに接続され、ASR 9000 が同じブリッジ ドメインの l2transport インターフェイスの VLAN タグを書き換えない場合に発生する、よくある問題です。

前述の同じシンプルなトポロジで考えてみます。ただし今回は、a9k1 の設計上の理由により、同じスイッチのトランク インターフェイスからの複数の VLAN が 1 つのブリッジ ドメインにマージされます。

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

これは、a9k1 の 1 つのブリッジ ドメインで VLAN 2 ～ 4 を一緒にブリッジします。

ASR 9000 EVC モデルは、デフォルトではタグや POP を書き換えません。VLAN2 の PVST+ BPDU は、インターフェイス gig 0/1/0/31.2 に到達し、gig 0/1/0/31.3 および gig 0/1/0/31.4 に戻るように転送されます。この設定は入力 POP アクションの書き換えではないため、BPDU は変更されずに戻ります。スイッチはこれを自身の BPDU が戻ったと認識し、セルフループによって VLAN をブロックします。

show spanning-tree interface コマンドは、ブロックされた VLAN を示します。

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

解決方法

この問題は、ASR 9000 の l2transport インターフェイス上で ethernet egress-filter strict コマンドを使用することで解消できます。

これは、推奨される設計ではありません。ただし、それが実際に意図した設計の場合は、このソリューションを使用して、同じインターフェイスに返信される BPDU をスイッチが受信することを防ぐことができます。

ethernet egress-filter strict コマンドは、a9k1 l2transport インターフェイス上か、またはグローバルに使用できます。インターフェイスの下のそのコマンドの例を次に示します。

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

ethernet egress-filter strict コマンドは、インターフェイスでの出力イーサネット フロー ポイント（EFP）の厳密なフィルタリングを可能にします。このインターフェイスから送信されるのは、インターフェイスの入力 EFP フィルタを通過するパケットだけです。その他のパケットは、出力フィルタでドロップされます。これは、出力されたパケットがインターフェイスに設定された encapsulation dot1q ラベルと一致しない場合は送信されないことを意味します。

関連情報

- Multiple Spanning Tree Protocol の実装

- スパニングツリーの PVID とタイプの不一致のトラブルシューティング

- マルチ スパニング ツリー プロトコル（802.1s）について

- テクニカル サポートとドキュメント – Cisco Systems