Cisco PVID Inconsistent の原因|ネイティブ VLAN 不一致の対処

  • URLをコピーしました!
目次

はじめに

設定変更をしていないにもかかわらず、Cisco スイッチのトランクポートが突然ブロックされ、特定の VLAN だけ通信できなくなることがあります。このとき、ログには PVID(Port VLAN ID)不整合を示すメッセージが出力されます。

本記事は、この PVID Inconsistent エラーを、両端トランクのネイティブ VLAN 不一致という原因に絞って解説します。Type 不整合(アクセス/トランクの種別不一致)とは別のエラーである点を整理し、どの VLAN がなぜブロックされたかを特定して復旧するまでを扱います。STP 全体の位置づけは、関連記事『スパニングツリー(STP)とは|仕組みと RSTP・MSTP の違い』も参照してください。

この記事でわかること
  • PVID Inconsistent エラーの意味と、Type 不整合との違い
  • バージョンによって異なる 2 系統のログ表記の読み解き方
  • なぜ両側の VLAN がブロックされるのかという仕組み
  • ネイティブ VLAN を一致させる確認・対処の手順

要点を先に示すと、このエラーの原因は両端トランクのネイティブ VLAN 不一致です。Cisco の PVST+/Rapid-PVST+ は BPDU に発信元 VLAN の情報を埋め込んでおり、受信した VLAN と食い違うと、受信側 VLAN と対向の発信元 VLAN の両方をブロックします。両端でネイティブ VLAN を揃えれば、不整合 BPDU が止まり、ポートは自動的に回復します。

PVID Inconsistent とは

PVID Inconsistent は、トランクポートで両端のネイティブ VLAN が一致しないときに、Cisco の PVST+/Rapid-PVST+ が検知してポートをブロックする保護動作です。

Cisco の PVST+ BPDU は、末尾に発信元 VLAN を示す PVID TLV を持っています。受信側スイッチはこの値と、BPDU が実際に届いた VLAN を比較し、食い違いを検出するとネイティブ VLAN 不一致と判断します。この検出はタグを扱うトランク(802.1Q)で機能し、標準 BPDU を送るアクセスポートでは発生しません。

参考: Cisco — Troubleshoot Spanning Tree PVID- and Type-Inconsistencies
“When inconsistency is detected, both VLANs are blocked on the port.”
(不整合を検出すると、そのポートで両方の VLAN がブロックされる)
https://www.cisco.com/c/en/us/support/docs/lan-switching/spanning-tree-protocol/24063-pvid-inconsistency-24063.html

ログの読み解き方

PVID 不整合のログ表記は、プラットフォームや IOS/IOS XE のバージョンによって 2 系統に分かれます。どちらも意味は同じで、ネイティブ VLAN 不一致を示します。

系統 A(従来からの表記)

%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、VLAN 10 が対向で発信された VLAN を指します。両者が食い違うため、VLAN 1 と VLAN 10 の両方がブロックされます。

系統 B(新しめの表記。検索で見かける RECV_PVID_ERR はこちら)

%SPANTREE-2-RECV_PVID_ERR: Received BPDU with inconsistent peer vlan id 10 on GigabitEthernet1/1 VLAN1.
%SPANTREE-2-BLOCK_PVID_PEER: Blocking GigabitEthernet1/1 on VLAN0010. Inconsistent peer vlan.
%SPANTREE-2-BLOCK_PVID_LOCAL: Blocking GigabitEthernet1/1 on VLAN0001. Inconsistent local vlan.

こちらは「対向(peer)の VLAN」と「自拠点(local)の VLAN」をそれぞれ明示してブロックします。表記は異なりますが、両端のネイティブ VLAN がずれているという原因は系統 A と同じです。

show spanning-tree inconsistentportsを実行すると、Inconsistency 列に Port VLAN ID Mismatch と表示され、show spanning-tree vlan <id>ではポート状態が BKN*(ブロック)かつ *PVID_Inc と確認できます。

Type 不整合との違い

ログが似ているため Type 不整合と混同しやすいですが、原因も対処も異なります。

項目Type 不整合PVID 不整合
原因アクセス/トランクの種別不一致両端トランクのネイティブ VLAN 不一致
代表的なログRECV_1Q_NON_TRUNK/BLOCK_PORT_TYPERX_1QPVIDERRRECV_PVID_ERR
inconsistentports 表示Type InconsistentPort VLAN ID Mismatch
対処の方向両端のポート種別を揃える両端のネイティブ VLAN を揃える

Type 不整合(アクセス/トランクの食い違い)の原因と対処は、関連記事『Cisco スイッチで Inconsistent port type が出る原因と対処』で詳しく扱っています。本記事は、両端がトランクである前提での PVID 不整合に絞ります。

なぜ両側の VLAN がブロックされるのか

PVID 不整合では、ネイティブ VLAN がずれている 2 つの VLAN が同時にブロックされます。その理由は、PVST+ が BPDU に埋め込む発信元 VLAN 情報の比較にあります。

Cisco の PVST+/Rapid-PVST+ は、VLAN ごとに BPDU を生成します。トランクでは、ネイティブ VLAN の BPDU をタグなしで、それ以外の VLAN の BPDU をタグ付きで送出します。そして、各 BPDU の末尾には発信元 VLAN を示す PVID TLV が付加されています。

受信側スイッチは、BPDU が届いた VLAN(自拠点のネイティブ VLAN)と、TLV が示す発信元 VLAN(対向のネイティブ VLAN)を比較します。両端のネイティブ VLAN が異なると、この 2 つが食い違い、PVID 不整合として検知されます。

このとき、受信側の VLAN と対向の発信元 VLAN の両方がブロックされます。例えば、自拠点のネイティブ VLAN が 1、対向のネイティブ VLAN が 10 の場合、その当該ポートで VLAN 1 と VLAN 10 の両方がブロックされます。両方を止めるのは、ネイティブ VLAN がずれたまま通信を許すと、本来分離されているべき VLAN 1 と VLAN 10 がトランクのタグなし領域で接続され、VLAN の混線を招くためです。 PVID 不整合のブロックは、この混線を防ぐ保護動作にあたります。

原因の切り分け(確認コマンド)

ログを確認したら、まず不整合の種別を確認し、続いて両端のネイティブ VLAN を突き合わせます。

不整合ポートと種別の確認

show spanning-tree inconsistentportsを実行すると、ブロック中のポートと不整合の種別が一覧表示されます。PVID 不整合では Inconsistency 列に Port VLAN ID Mismatch と表示されます。

Switch# show spanning-tree inconsistentports

Name                 Interface                Inconsistency
-------------------- ------------------------ ------------------
VLAN0001             GigabitEthernet1/0/1     Port VLAN ID Mismatch
VLAN0010             GigabitEthernet1/0/1     Port VLAN ID Mismatch

Number of inconsistent ports (segments) in the system : 2

同じポートで 2 つの VLAN が並ぶのは、両側の VLAN がブロックされているためです。該当 VLAN の状態は show spanning-tree vlan <id>でも確認でき、ポートが BKN*(ブロック)かつ *PVID_Inc と表示されます。

両端のネイティブ VLAN の確認

次に、show interfaces trunkで両端のトランクのネイティブ VLAN を比較します。Native vlan 列の値が両端で異なっていれば、それが原因です。

Switch# show interfaces trunk

Port        Mode  Encapsulation  Status    Native vlan
Gi1/0/1     on    802.1q         trunking  1

対向スイッチで同じコマンドを実行し、Native vlan の値(この例では 10 など)が一致しているかを確認します。個別ポートの設定は show interfaces <id> switchportの Trunking Native Mode VLAN 行でも確認できます。

なお、CDP が有効な区間では、STP の不整合とは別に、CDP がネイティブ VLAN 不一致を検知してログを出力します。

%CDP-4-NATIVE_VLAN_MISMATCH: Native VLAN mismatch discovered on GigabitEthernet1/0/1 (1), with SW2 GigabitEthernet0/1 (10).

このログは、両端のネイティブ VLAN がずれていることをポート番号と VLAN 番号付きで示すため、切り分けの裏付けに使えます。

参考: Cisco — Configure Inter-VLAN Routing with Catalyst Switches
“Check that the native VLAN matches on both sides of the trunk link.”
(トランクリンクの両端でネイティブ VLAN が一致しているか確認する)
https://www.cisco.com/c/en/us/support/docs/lan-switching/inter-vlan-routing/41260-189.html

対処: ネイティブ VLAN を一致させる

解消の基本は、両端トランクのネイティブ VLAN を揃えることです。まず設計上どの VLAN をネイティブにするかを決め、両端を同じ値に設定します。

! 設計上のネイティブ VLAN(例: VLAN 1)に両端を揃える
Switch_A(config)# interface GigabitEthernet1/0/1
Switch_A(config-if)# switchport trunk native vlan 1

Switch_B(config)# interface GigabitEthernet0/1
Switch_B(config-if)# switchport trunk native vlan 1

両端のネイティブ VLAN が一致し、不整合 BPDU の受信が止まれば、ポートはコマンド操作なしで自動的にブロック解除されます。Cisco の公式ドキュメントでも、不整合 BPDU を受信しなくなれば不整合状態が解除され、通常の STP 動作に戻ると整理されています。
(参照: Cisco PVID/Type 不整合トラブルシュート — https://www.cisco.com/c/en/us/support/docs/lan-switching/spanning-tree-protocol/24063-pvid-inconsistency-24063.html

設計上の注意

ネイティブ VLAN は両端一致が前提です。加えて、トランクで許可する VLAN(switchport trunk allowed vlan)も両端で揃えておくと、不要な VLAN の伝搬や別種の不整合を避けやすくなります。ネイティブ VLAN を VLAN 1 のまま運用するより、未使用の VLAN を専用のネイティブ VLAN として統一する方が、セキュリティと管理の面で扱いやすくなります。(両端一致が前提です)

よくある誤解と運用上の注意

PVID 不整合の切り分けで踏みやすい誤解と、運用上の注意点を整理します。

多数の VLAN が一斉に不整合表示される場合は、単純なネイティブ VLAN 不一致ではない可能性があります。ネイティブ VLAN 不一致は通常、受信側と対向の 2 つの VLAN の組で現れます。多数の VLAN が同時にブロックされるときは、片側がアクセス・片側がトランクという種別不一致や、中継機器がタグを除去しているケースを疑います。種別不一致については、関連記事『Cisco スイッチで Inconsistent port type が出る原因と対処』を参照してください。

PVID 不整合の検知は、Cisco の PVST+/Rapid-PVST+ に固有の動作です。MST(Multiple Spanning Tree)モードに切り替えている環境では、BPDU の生成方式が異なるため、同じログが出ないことがあります。MST 環境での挙動は、別の個別記事で扱う予定です。

まとめ

PVID Inconsistent は、両端トランクのネイティブ VLAN 不一致を Cisco の PVST+/Rapid-PVST+ が検知し、ポートをブロックする保護動作です。Type 不整合とは原因も対処も異なります。本記事では、ログの読み解き方から確認・対処までを整理しました。

  • PVID 不整合は両端トランクのネイティブ VLAN 不一致が原因
  • PVST+ BPDU の PVID TLV と受信 VLAN の食い違いを検知してブロック
  • 受信側と対向、両方の VLAN が同時にブロックされる
  • ログは RX_1QPVIDERR 系と RECV_PVID_ERR 系の 2 表記がある
  • inconsistentports の表示は Port VLAN ID Mismatch
  • 対処は両端のネイティブ VLAN を揃えることで、一致後は自動回復
  • 多数の VLAN が一斉に出る場合は種別不一致や中継機器を疑う

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次