Ethernet

【図解】タグVLANとネイティブVLAN (PVID)の違い,native vlanを変更する理由,不一致による影響

タグ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 で通信できます。このあたりは下記記事にも記載しています。

【図解】トランクポートとアクセスポートの違い、trunk port に access port や PC を接続するとどうなるか
タグ VLAN を使う場合はポートにトランクポート (trunk port) と...

2 つ目は、1 つ目に関連するのですが、デフォルト VLAN である VLAN 1 は、telnet 接続用等の管理用として使われることも多いです。トランクポートを一般ユーザが物理的にいじれる位置にあると、そのポートを引っこ抜いて PC に接続すると VLAN 1 へアクセスできてしまいます

そのようなセキュリティの理由で、適当な VLAN に変更するケースが考えられます。

accessポート、trunkポートとtagged, untaggedについて

メーカによっては、access ポート、trunk ポートという括りがなく、単純にポート単位で tagged、untagged のVLAN ID を指定するスイッチもあります。

例えば以下のような対応になります。

access, trunktagged, untagged
access vlan=10untagged=10
trunk vlan=10,20tagged=10,20
trunk vlan=20(native vlan), 30,40untagged=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 のパケットを優先で出力する』という設定が必要です。

コメント

  1. 田中ひでお より:

    お世話になります。

    Native VLAN の不一致 –> Native VLAN の良い例
    の図のところで、
    下のVLAN 1 のパソコンから送信されたパケットは、
    native vlan 1 の トランクポートを通ったところで
    tag 1の情報が削除されて、無くなってしまっている
    と理解しました。(間違っているかも)

    tag 1 情報が無い状態で、一番上のスイッチに
    到達したパケットは、
    どのような仕組みで、一番上の
    VLAN 1 のパソコンにパケットが
    到達するのでしょうか?

  2. nesuke より:

    田中さん、コメントありがとうございます。

    一番上のスイッチのtrunkポートにも、「native vlan = 1」という設定を入れておくのです。
    そうすれば、タグが付いてなければ VLAN 1 だな、と理解できるので。

    なお、パソコンに繋がっているポートは access vlan 1 にします。

タイトルとURLをコピーしました