はじめに
このドキュメントでは、2つのスパニングツリープロトコル(STP)の不一致(ポートVLAN ID(PVID)とタイプ)をトラブルシューティングする方法について説明します。
前提条件
要件
STPの概念に関する知識があることが推奨されます。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
レイヤ 2(L2)ネットワークでは、2 つのデバイス間で可能なパスは 1 つだけです。冗長性はスパニングツリー プロトコル(STP)でサポートされ、STP により冗長なパスが検出されてブロックされ、フォワーディング ループが防止されます。 ある種の設定ミスが STP の障害につながって、ネットワークの停止を引き起こす場合があります。 ダウンタイムを防ぐために、いくつかの拡張機能が実装されています。これにより、STPは特定のケースの設定ミスを検出し、該当するポートがinconsistent状態になります。
STP の不一致には、いくつかの種類があります。
-
ループの不一致 — ループ ガード機能によって検出されます。詳細については、『ループガードとBPDUスキュー検出を使用したSTPの設定』を参照してください。
-
ルートの不一致 — ルート ガード機能によって検出されます。詳細については、『ルートガードによるスパニングツリープロトコルの強化』を参照してください。
-
EtherChannel の不一致 — EtherChannel の不一致検出機能によって検出されます。詳細については、「EtherChannel の不一致検出について」を参照してください。
-
Port VLAN ID(PVID)の不一致 – Per VLAN Spanning Tree(PVST+)Bridge Protocol Data Unit(BPDU)が、発信元とは異なるVLANで受信されます(Port VLAN ID Mismatchまたは*PVID_Inc)。
-
タイプの不一致 – PVST+ BPDUが802.1Q以外のトランクで受信されます。
PVID の不一致とタイプの不一致の背景理論
Cisco Catalystスイッチには、Inter-Switch Link(ISL;スイッチ間リンク)トランクを使用するPVSTが実装されています。IEEE 802.1Q および ISL トランキングのサポートに伴い、PVST とすべての VLAN に対して単一のスパニングツリーを使用する IEEE 802.1Q の概念を相互運用するための方法が必要でした。PVST+ 機能は、この要件を満たすために導入されました。
注:STPの観点からは、IEEE 802.1DはVLAN対応ではなく、IEEE 802.1QはVLAN対応ですが、すべてのVLANに対して1つのSTPインスタンスを使用します。つまり、ポートがブロッキングされている場合、そのポート上のすべての VLAN に対してブロッキングされています。
フォワーディングについても同じことが言えます。
以下は、IEEE 802.1Q トランク上のネイティブ VLAN が VLAN 1 の場合に、PVST+ が IEEE 802.1Q または IEEE 802.1D とどのように相互運用されるかを示しています。
-
VLAN 1 の STP BPDU が IEEE STP MAC アドレス(0180.c200.0000)に送信される(タグなし)
-
VLAN 1 の STP BPDU は PVST+ MAC アドレスにも送信される(タグなし)
-
非VLAN 1 STP BPDUはPVST+ MACアドレス(共有スパニングツリープロトコル(SSTP)MACアドレス0100.0ccc.cccdとも呼ばれる)に送信され、対応するIEEE 802.1Q VLANタグが付けられます。
IEEE 802.1Q トランク上のネイティブ VLAN が VLAN 1 でない場合:
-
VLAN 1 の STP BPDU が PVST+ MAC アドレスに送信される(対応する IEEE 802.1Q VLAN のタグ付き)
-
VLAN 1 の STP BPDU は IEEE 802.1Q トランクのネイティブ VLAN 上の IEEE STP MAC アドレスにも送信される(タグなし)
-
VLAN 1 以外の STP BPDU が PVST+ MAC アドレスに送信される(対応する IEEE 802.1Q VLAN のタグ付き)
注:ネイティブVLAN STP BPDUはタグなしで送信されます。
このようにして、PVST+ の VLAN 1 STP は IEEE 802.1D または 802.1Q の STP とマージされ、一方、別の VLAN は IEEE 802.1D または 802.1Q ブリッジのクラウドを介してトンネル化されます。
たとえば、IEEE 802.1Dまたは802.1Qクラウドは、1以外のPVST+ VLANへの配線と同様です。
STP を正常に動作させるには、PVST+ ブリッジを IEEE 802.1D または 802.1Q ブリッジに接続する際に特定のルールを守る必要があります。 主なルールは、PVST+ ブリッジは、IEEE 802.1Q または 802.1D ブリッジのクラウドに接続しているすべてのブリッジ上のネイティブ VLAN と一致する IEEE 802.1Q トランクを使用して、IEEE 802.1D または 802.1Q ブリッジに接続する必要があるというものです。
PVST+ BPDU には VLAN 番号が含まれており、PVST+ ブリッジはこの番号を使用して、以前のルールが守られているかどうかを検出します。Catalystスイッチが設定ミスを検出すると、対応するポートはPVID-inconsistentまたはtype-inconsistent状態になり、対応するポートで対応するVLANのトラフィックをブロックします。これらの状態は、設定ミスや配線ミスによって発生する転送ループを防止します。
不一致検出の必要性を説明するために、スイッチAとCではPVST+ STPが実行され、スイッチBでは802.1Q STPが実行される次のトポロジを考えてみます。

VLAN 1 のルートの BPDU が VLAN 2 のルートの BPDU よりも良好である場合、VLAN 2 トポロジではポートはブロックされません。VLAN 2のBPDUはトポロジを一周することはありません。BはPVST+のVLAN 1 STPとマージされた1つのSTPしか実行しないため、B-CリンクのVLAN 1 BPDUに置き換えられます。
このため、フォワーディング ループがあります。幸い、スイッチAはVLAN 2のPVST+ BPDU(スイッチBによってフラッディングされるSSTPアドレス)をスイッチCに送信します。スイッチCは、ポートC-Bをtype-inconsistent状態にすることができ、これによりループが防止されます。
注:コマンド出力の中には、*-inconsistent STP状態がbrokenと呼ばれるものがあります。
STP の不一致が検出されると、スイッチは次の syslog メッセージを送信します。
%SPANTREE-2-RECV_1Q_NON_TRUNK: Received IEEE 802.1Q BPDU on non trunk
FastEthernet0/1 on vlan 1.
%SPANTREE-2-BLOCK_PORT_TYPE: Blocking FastEthernet0/1 on vlan 1.
Inconsistent port type.
%SPANTREE-2-RX_1QPVIDERR: Rcved pvid_inc BPDU on 1Q port 3/25 vlan 1
%SPANTREE-2-RX_BLKPORTPVID: Block 3/25 on rcving vlan 1 for inc peer vlan 10
%SPANTREE-2-TX_BLKPORTPVID: Block 3/25 on xmtting vlan 10 for inc peer vlan
この例では、VLAN 1 が BPDU の受信側で、VLAN 10 が BPDU の発信元です。不整合が検出されると、このBPDUを受信したポートでは両方のVLANがブロックされます。
注:メッセージは、使用しているCisco IOS®ソフトウェアリリースのタイプとバージョンによって異なります。
ポートが矛盾したBPDUを受信しなくなった場合、*-inconsistentステートはクリアされ、STPは通常のSTP動作に基づいてポートのステートを変更します。変更を示すために syslog メッセージが送信されます。
%SPANTREE-SP-2-UNBLOCK_CONSIST_PORT: Unblocking FastEthernet0/1 on vlan 1.
Port consistency restored.
PVST+動作の詳細については、『PVST+からrapid-PVSTへのスパニングツリー移行の設定例』を参照してください。
トラブルシュート
不一致ポートのリストを表示するために、最新の Cisco IOS ベースの STP 実装では、show spanning-tree inconsistentports コマンドをサポートしています。
ほとんどの場合、ポート上で検出される STP の不一致の原因は明白です。

このシナリオでは、ブリッジ A 上のアクセス ポートが、ブリッジ B から VLAN 1 以外の VLAN の STP からのタグ付き PVST+ BPDU を受信しています。Aのポートはtype-inconsistentステートになる可能性があります。
注:スイッチを直接接続する必要はありません。スイッチが1つ以上のIEEE 802.1DまたはIEEE 802.1Qスイッチ、あるいはハブを経由して接続されている場合も、効果は同じです。

このシナリオでは、A 上のトランク ポートは、VLAN 2 の STP から VLAN 2 のタグの付いた PVST+ BPDU を受信しています。これにより、A 上のポートが VLAN 1 と VLAN 2 の両方でブロックされます。
ポイントツーポイント リンクの両端のデバイスが Cisco Catalyst スイッチである場合、通常は、ローカルとリモートの両方のポートの設定を調べることで設定の不一致が明らかになります。
これらの場合は、設定の不一致を修正して、STP の不一致を解決します。
場合によっては、その理由を特定するのが難しくなります。
-
BPDU が、複数のデバイスで共有されるメディアから受信される場合。
-
BPDU が、クラウドに接続された PVST+ スイッチを伴う IEEE 802.1D または 802.1Q STP モデルを実装するスイッチ クラウドから受信される場合。
-
BPDU が、いくつかのトンネル(Data Link Switch Plus(DLSw+)クラウド、L2 プロトコル トンネリング、EoMPLS、Virtual Path Links(VPL)、LAN Emulation(LANE)など)を経て受信される場合。

この例では、スイッチ B の設定が誤っており、SSTP BPDU をクラウドに送信しているため、スイッチ A、C、および D 上のポートが type-inconsistent 状態になります。
問題は、問題のBPDUの発信元のデバイスが、影響を受けるスイッチに直接接続されていないことです。
そのため、トランク上の多くのデバイスでは、すべてのデバイスのトラブルシューティングに時間がかかることがあります。
幸い、この問題には体系的なトラブルシューティング方法があります。
-
送信元MACアドレスとBPDUの送信ブリッジIDを確立します。これは、問題が発生している間に行う必要があります。
-
問題のBPDUの発信元のブリッジを見つけます。これは後で行うことができ、必ずしも問題が発生したときでなくても構いません。
ステップ1では、通常2つのオプションがあります。パケットアナライザを使用するか、受信したBPDUのダンプを確認するためにデバッグを有効にします。
デバッグを使用したSTP BPDUのダンプの詳細については、「CatalystスイッチにおけるSTPの問題のトラブルシューティング」の「STPデバッグコマンドの使用」の項を参照してください。
次に、受信された BPDU を示すデバッグ出力の例を示します。
*Mar 14 19:33:27: STP SW: PROC RX: 0100.0ccc.cccd<-0030.9617.4f08 type/len 0032
*Mar 14 19:33:27: encap SNAP linktype sstp vlan 10 len 64 on v10 Fa0/14
*Mar 14 19:33:27: AA AA 03 00000C 010B SSTP
*Mar 14 19:33:27: CFG P:0000 V:00 T:00 F:00 R:8000 0050.0f2d.4000 00000000
*Mar 14 19:33:27: B:8000 0050.0f2d.4000 80.99 A:0000 M:1400 H:0200 F:0F00
*Mar 14 19:33:27: T:0000 L:0002 D:0001
ソース MAC アドレスと送信元ブリッジ ID が分かったら、この MAC アドレスが属しているデバイスを検出する必要があります。 スイッチは、通常、ソースの MAC アドレスを BPDU フレームから学習するわけではないため、これは複雑になる可能性があります。
(Cisco IOSベースのスイッチで)show mac-address-table addressBPDU_mac_addressコマンドを発行しても、通常はエントリが見つかりません。
問題のMACアドレスを見つける方法の1つは、クラウドに接続しているすべてのスイッチからshow spanning-treeコマンドの出力を収集することです。
これらのコマンド出力には、各ブリッジのブリッジ ID に関する情報が含まれています。
Boris#show spanning-tree
!--- Use with Cisco IOS.
VLAN0001
Spanning tree enabled protocol rstp
Root ID Priority 0
Address 0007.4f1c.e847
Cost 131
Port 136 (GigabitEthernet3/8)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 00d0.003f.8800
!--- Output suppressed.
注:モデル、ソフトウェアバージョン、および設定に基づいて、スイッチは複数のブリッジID MACアドレスを持つことができます。幸い、すべてのアドレスは通常、特定の範囲(たとえば、0001.1234.5600 ~ 0001.1234.5640)に含まれます。 1つのブリッジID MACアドレスがわかっている場合は、送信されたブリッジID MACアドレス(ステップ1で確認)が、特定のブリッジID MACアドレスの範囲内にあるかどうかを確認できます。ネットワーク管理ツールを使用して、すべてのブリッジのブリッジ ID を収集することもできます。
問題のBPDUを送信しているブリッジを見つけたら、クラウドに接続されているポートの設定を確認する必要があります。同じクラウドに接続されている他のスイッチとの一貫性(非トランキングやネイティブVLANではなくトランキング)があることを確認します。
ブリッジが適切なBPDUを送信していても、トンネリングクラウド内でBPDUが誤って変更されている可能性があります。 この場合、クラウドに入る問題のBPDUは他のブリッジの設定と一致しているものの、クラウドから出るときには同じBPDUでも整合性が失われることがわかります(たとえば、BPDUが別のVLANのクラウドから出る、タグ付きまたはタグなしの状態になる)。 このような場合は、問題のBPDUの発信元MACアドレスが送信元ブリッジIDと同じブリッジに属しているかどうかを確認すると役立ちます。
このように設定されていない場合は、BPDUの送信元MACアドレスを所有するブリッジを探して、その設定を確認できます。
BPDUの送信元MACアドレスを所有するスイッチを見つけるには、show moduleコマンド出力を検査する(Catalyst 4000および6000)以外は同じ方法(ブリッジIDを探す)を使用できます。 他のCatalystスイッチの場合は、show interfaceコマンドの出力を調べて、ポートに属しているMACアドレスを確認できます。
Cat4000-#show module
!--- Use for Catalyst 4000,5000,6000
Mod Ports Card Type Model Serial No.
----+-----+--------------------------------------+-----------------+-----------
1 2 1000BaseX (GBIC) Supervisor(active) WS-X4515 ZZZ00000001
5 14 1000BaseT (RJ45), 1000BaseX (GBIC) WS-X4412-2GB-T ZZZ00000002
M MAC addresses Hw Fw Sw Status
--+--------------------------------+---+------------+----------------+---------
1 000a.4172.ea40 to 000a.4172.ea41 1.2 12.1(12r)EW 12.1(14)E1, EARL Ok
5 0001.4230.d800 to 0001.4230.d80d 1.0 Ok
!--- Output suppressed.
cat3550#show interface | i bia
Hardware is Gigabit Ethernet, address is 0002.4b28.da80 (bia 0002.4b28.da80)
Hardware is Gigabit Ethernet, address is 0002.4b28.da83 (bia 0002.4b28.da83)
Hardware is Gigabit Ethernet, address is 0002.4b28.da86 (bia 0002.4b28.da86)
Hardware is Gigabit Ethernet, address is 0002.4b28.da88 (bia 0002.4b28.da88)
Hardware is Gigabit Ethernet, address is 0002.4b28.da89 (bia 0002.4b28.da89)
!--- Output suppressed.
関連情報