概要
このドキュメントでは、2つのスパニングツリープロトコル(STP)の不一致(ポートVLAN ID(PVID)とタイプ)をトラブルシューティングする方法について説明します。
前提条件
要件
STPの概念に関する知識があることが推奨されます。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法
ドキュメント表記の詳細は、「シスコ テクニカル ティップスの表記法」を参照してください。
背景説明
レイヤ 2(L2)ネットワークでは、2 つのデバイス間のパスは 1 つだけです。スパニングツリー プロトコル(STP)によって冗長性がサポートされます。STP により、冗長なパスが検出されてブロックされ、フォワーディング ループが防止されます。特定の設定の誤りが原因で STP で障害が発生し、ネットワークが停止することがあります。ダウンタイムを防ぐために、STPが特定のケースの設定ミスを検出し、関連するポートが「inconsistent」状態になるように、いくつかの拡張機能が実装されました。
STP の不一致には、いくつかの種類があります。
-
ループの不一致 — ループ ガード機能によって検出されます。詳細については、『ループガードとBPDUスキュー検出を使用したSTPの設定』を参照してください。
-
ルートの不一致 — ルート ガード機能によって検出されます。詳細については、『Root Guardによるスパニングツリープロトコルの拡張』を参照してください。
-
EtherChannel の不一致 — EtherChannel の不一致検出機能によって検出されます。詳細については、「EtherChannel の不一致検出について」を参照してください。
-
ポートVLAN ID(PVID)の不一致:VLAN単位のスパニングツリー(PVST+)ブリッジプロトコルデータユニット(BPDU)が、発信元とは異なるVLANで受信されています(Port VLAN ID Mismatchor*PVID_Inc)。
-
タイプの不一致:802.1Q以外のトランクでPVST+ BPDUが受信されました。
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に対して単一の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 の発信元であるデバイスが、影響を受けているスイッチに直接接続されていないことであり、したがって、トランク上の多くのデバイスでは、すべてのデバイスのトラブルシューティングに時間がかかることがあります。
幸い、この問題には体系的なトラブルシューティング方法があります。
-
BPDUの送信元MACアドレスと送信ブリッジIDを確立します。これは、問題が発生している間に行う必要があります
-
「問題の」BPDU の発信元のブリッジを見つけます。これは後で行うことができ、必ずしも問題が発生したときでなくても構いません。
ステップ1では、通常、パケットアナライザを使用するか、デバッグを有効にして受信したBPDUのダンプを確認するという2つのオプションがあります。
デバッグを使用した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 フレームから学習するわけではないため、これは複雑になる可能性があります。show mac-address-table addressBPDU_mac_addressコマンド(Cisco IOSベースのスイッチの場合)を発行しても、通常はエントリが見つかりません。
「問題の」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アドレスを所有するスイッチを見つけるには、同じ方法を使用できます(ブリッジIDを調べるには)。ただし、ここでは(Catalyst 4000、5000、および6000に対して)show moduleコマンドの出力が検査されている点が異なります。Catalyst 2900 XL、3500 XL、2950、および 3550 の場合は、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.
関連情報