タグVLAN とは
タグVLAN (Tag VLAN) とは、複数の VLAN を 1 本の LAN 接続だけで複数スイッチ間で共有できる技術です。IEEE802.1q という規格で規定されており、VLAN ID は 1~4094 が使えます。
具体的な例として、スイッチ同士を接続するポートに trunk port (トランクポート。tag port と呼ばれたりします) の設定を入れて接続します。するとそのリンク (トランクリンク) は VLAN ID 情報を含む Tag を付けて通信するようになります。
例では VLAN が 3 つだけですので、各 VLAN 1本ずつ、計 3 本のケーブルをスイッチ間で接続する構成も可能ですがこれは非効率です。例えばこれが、VLAN が 20 個あったとしたらそれだけでケーブルとポートを 20 ポートも消費してしまいます。
このようなケースでも、タグ VLAN を使えば 1 ポートだけで 20 個の VLAN を共有できます。
Native VLAN (PVID) とは
Native VLAN とは、トランクポートの中で、タグを付けない VLAN ID のことを指します。デフォルト VLAN や PVID (Port VLAN ID) も同じ意味です。
この Native VLAN も IEEE802.1q の規格で決まっており、各トランクポートで 1 つだけ、この Native VLAN を指定することができます (機器単位ではなくポート単位で指定できるものが多いです)。デフォルトでは全ポート VLAN ID = 1 が Native VLAN になっています。
Native VLAN の不一致
上図左側の例に示した通り、Native VLAN はトランクリンクの両端で揃える必要があります(スイッチの全トランクポートでそろえる必要はありません)。
もし揃えないと、例の右側の「悪い例」のように、VLAN 1 の通信が VLAN 2 に混入したりと、論理構成に捻じれが発生したりします。
Native VLAN の不一致は、特に PVSTP ではループの検知が出来なくなる可能性があるため、エラーにも出力されます。
なお、CDP (Cisco Discovery Protocol) には Native VLAN 情報も乗っており、不一致があると "%CDP-4-NATIVE_VLAN_MISMATCH: Native VLAN mismatch discovered on " といったログが出力されます。
どういう時にネイティブVLANを変更する?
変更する理由は基本的には無いはずですが、ケースとして2つ例を挙げます。
1つ目は、例えばネイティブ VLAN を 10 にすると、そのポートに PC や VLAN 非対応のスイッチングハブを接続すると、VLAN 10 で通信できます。このあたりは下記記事にも記載しています。
2 つ目は、1 つ目に関連するのですが、デフォルト VLAN である VLAN 1 は、telnet 接続用等の管理用として使われることも多いです。トランクポートを一般ユーザが物理的にいじれる位置にあると、そのポートを引っこ抜いて PC に接続すると VLAN 1 へアクセスできてしまいます。
そのようなセキュリティの理由で、適当な VLAN に変更するケースが考えられます。
accessポート、trunkポートとtagged, untaggedについて
メーカによっては、access ポート、trunk ポートという括りがなく、単純にポート単位で tagged、untagged のVLAN ID を指定するスイッチもあります。
例えば以下のような対応になります。
access, trunk | tagged, untagged |
access vlan=10 | untagged=10 |
trunk vlan=10,20 | tagged=10,20 |
trunk vlan=20(native vlan), 30,40 | untagged=20, tagged=30,40 |
各ポートで untagged の VLAN は 0 ~ 1 個、tagged の VLAN は 0 個以上です。
両方とも 0 個になることはなく、untagged が 1 個だけならそのポートはアクセスポート、そこに tagged も1個以上乗るならそれはトランクポート(untagged は native VLAN)になります。
Native VLAN をタグ付きで受信した場合の挙動
Native VLAN や untagged に指定したVLAN を、タグ付きで受信した場合の挙動は、メーカによって異なります。
例えば、Native VLAN=10 に設定したポートで、タグ付きの VLAN 10 を受信した場合、通常の VLAN=10 として許可する場合もありますし、破棄されてしまう場合もありますので、もしそのような構成をする場合は事前に確認が必要です。
voice vlan でタグを付ける理由
voice vlan はタグを付けるのが cisco の推奨です。2 byte とはいえ、速度にシビアな音声パケットにオーバーヘッドともなるタグを付けるのは何故でしょうか?
これは、tag vlan には IEEE802.1p という QoS で利用できるフィールド (通称 cos) があるからです。音声パケットはこの cos 値を 5 に設定することで、スイッチに『このパケットは優先で通過させてね』と伝えるのです。
なお、単に cos 値を 5 にセットするだけでは QoS は動作しません。経由する各スイッチで『cos 値 = 5 のパケットを優先で出力する』という設定が必要です。
コメント
お世話になります。
Native VLAN の不一致 –> Native VLAN の良い例
の図のところで、
下のVLAN 1 のパソコンから送信されたパケットは、
native vlan 1 の トランクポートを通ったところで
tag 1の情報が削除されて、無くなってしまっている
と理解しました。(間違っているかも)
tag 1 情報が無い状態で、一番上のスイッチに
到達したパケットは、
どのような仕組みで、一番上の
VLAN 1 のパソコンにパケットが
到達するのでしょうか?
田中さん、コメントありがとうございます。
一番上のスイッチのtrunkポートにも、「native vlan = 1」という設定を入れておくのです。
そうすれば、タグが付いてなければ VLAN 1 だな、と理解できるので。
なお、パソコンに繋がっているポートは access vlan 1 にします。
迅速な返答をいただきありがとうございました。