U.log

スイッチのトランク設定直後にForwarding VLANがnoneになる事象の備忘録

先日、CML2を利用してVLANとHSRPによる冗長ゲートウェイを構築していた際、アクセススイッチのトランクポート設定において少し戸惑う事象に遭遇しました。

スイッチにVLANを作成し、ルーター向けのインターフェースをトランクポートとして設定した直後に状態を確認したところ、設定上は許可されているはずのVLANが転送可能な状態になっていませんでした。今回は、その時に確認したコマンド出力と、調べた内容を備忘録として残しておきます。

トランクポート設定直後の状態確認

対象のアクセススイッチ(SW1)にて、インターフェースをトランクポートに設定した後、状態を確認するために show interfaces trunk を実行しました。

SW1#show interfaces trunk

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

Port        Vlans allowed on trunk
Et0/0       1-4094
Et0/1       1-4094

Port        Vlans allowed and active in management domain
Et0/0       1,10,20
Et0/1       1,10,20

Port        Vlans in spanning tree forwarding state and not pruned
Et0/0       none
Et0/1       none

出力結果を見ると、Statustrunking になっており、Vlans allowed and active in management domain にも設定した 10,20 が表示されています。しかし、実際に通信を転送できる状態を示す Vlans in spanning tree forwarding state and not pruned の項目が none になっていました。

設定直後だったため、「何か許可コマンドを入れ忘れたか?」や「対向のルーター側の設定に問題があるのか?」と疑問に思い、出力項目を手がかりに原因を調べてみました。

原因の調査と時間経過による変化

出力の項目名にある spanning tree というキーワードについて調べてみたところ、STP(Spanning Tree Protocol)の仕様が関係していることが分かりました。

STPが有効な環境では、ループやブロードキャストストームを防ぐため、リンクがアップしてもすぐには通信を転送(Forwarding)しません。ループ計算を行うため、一定時間はListening状態やLearning状態にとどまり、パケットの転送をブロックする仕組みになっています。

もしこれが原因であれば、設定ミスではなく単なる「STPの収束待ち」ということになります。それを確かめるため、設定変更から30秒ほど待ってから再度同じコマンドを実行してみました。

SW1#show interfaces trunk

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

Port        Vlans allowed on trunk
Et0/0       1-4094
Et0/1       1-4094

Port        Vlans allowed and active in management domain
Et0/0       1,10,20
Et0/1       1,10,20

Port        Vlans in spanning tree forwarding state and not pruned
Et0/0       1,10,20
Et0/1       1,10,20

再確認したところ、Vlans in spanning tree forwarding state and not pruned1,10,20 が表示されました。これにより、対象のVLANがSTPのブロック状態を抜け、無事に通信を転送できる状態になったことが分かります。

今回の検証で得られた学び

設定直後に想定した通信状態になっていないと、つい「設定を間違えたかもしれない」と焦って設定変更を繰り返してしまいがちです。しかし今回のように、裏で動いているプロトコル(STPなど)の仕様によって、状態が安定するまでにタイムラグが発生するケースがあることを改めて実感しました。