開発ノート【通信の共通言語:TCP/IPモデル(Ethernet):VLAN】
開発ノート【通信の共通言語:TCP/IPモデル(Ethernet):VLAN】です。
当サイトは、Bootstrap5で製作しています。
VLAN
- Virtual LAN(バーチャルLAN)。
- L2スイッチやL3スイッチを利用する際に必要になる知識。
VLANの概要
- Virtualは仮想的という意味。
- ある機器を別の機器で動作させる。
・Virtual Switch:サーバ上でL2スイッチを動かす。
・Virtual Circuit:1本の回線上で複数の回線があるように見せる。
・Virtual Local Area Network(VLAN):仮想的なLAN(=仮想的なL2スイッチ)。
2台のホストによる2組のネットワーク例
下図の状態を1台のL2スイッチだけで実現するのがVLAN。

VLANを使うと下図のようになる。
- 1つのL2スイッチの中に見えないL2スイッチが2台あり、それぞれホストが接続している。
- L2スイッチによる接続はブロードキャストドメイン。
- 上図でもホスト4台は物理的には同じL2スイッチに接続しているが、内部では異なるL2スイッチに接続している。
- そのため、VLANを使うことで異なるブロードキャストドメインを作り、意図しないホスト間の通信を防ぐセキュリティ上のメリットもある。
- 内部的には異なるL2スイッチなので、ホストABとホストXYの間は通信できない。
- VLANは、ブロードキャストドメインを分割できるので、意図しないホスト間の通信を防ぐセキュリティ上のメリットがある。
VLAN ID(VLANの識別子)
- VLANは、仮想的なL2スイッチ(=グループに分けること)。
- VLANを作る際は、分けたグループに識別子をつけて管理する。
- その管理する識別子を、VLAN IDやVLAN番号と呼ぶ。
- VLAN IDは、0~4095の番号を使用する。
※0と4095は、システムで使用するため、使えない。
※L2スイッチ上に作れるVLANの数(IDは、1~4094の中から選べる)は、メーカーや機種によって異なるが4094個作れる訳ではない。
VLANの種類
- VLANの種類は、設定方法の違いで、2種類ある。
- Static VLAN(静的)

・一度設定すると勝手に変更されることはない。
・管理者がL2スイッチに設定する。 - Dynamic VLAN(動的)

・接続してくるホストの条件に応じて、サーバから自動でL2スイッチにVLAN IDが設定される。
・ホストの情報によって変わるためL2スイッチのどのポートに接続するかは考えなくてよいので柔軟な使い方ができる。
・但し、そのためにはホストの情報を管理してVLAN IDをL2スイッチに割り当てるサーバが必要になる。
VLAN方式(VLANの実現方法)
- ポートVLAN、ポートベースVLAN

・L2スイッチのポート毎に、VLAN IDを設定する。
・同じVLAN ID同士が同じVLANグループになり、ブロードキャストドメインを共有する。
・ポート番号は、連続しなくてよい。 - VLANタギング(L2スイッチが2台あり、同じVLANに所属させたい場合)
・簡単な方法は、それぞれのL2スイッチに新しいポートを用意して、L2スイッチ同士をケーブルで接続して、そのポートを同じVLANにすればホスト同士の通信ができるが、これではVLAN毎にポートを使ってしまい非効率。(下図)

・L2スイッチ同士は1本のケーブルで接続して、同じポートを複数のVLANで共有する。(下図)

・VLANタギングは、ポートVLANと違い、1つのポートが複数のVLANに所属する。
IEEE 802.1Q
- VLANタギングは、1つのポートを複数のVLANで共有する。
- その際の通信は、ホストから入ったEthernetフレーム(通信)の宛先が、別のL2スイッチの場合、送信側のL2スイッチはそれを送り出すだけ。
- しかし、それを受信したL2スイッチは、そのEthernetフレームを他のホストに送信しなければいけない。
- 受信した3番ポートは共有なので、VLAN IDがどのポートに送り出せばいいのかわからない。
- 宛先MACアドレスを見ればわかるかもしれないが、L2スイッチがホストの接続を認識するのは、フォワーディングデータベースに登録されているときだけで、登録されていない場合はUnknown Unicastとしてフラッディングすることになる。
- しかし、VLANが違えば異なるL2スイッチと同じなので、無関係のポートにフラッディングすることはできない。
- 同様に、ブロードキャスト通信の場合も、無関係のポートにフラッディングできない。
- つまり、このままではL2スイッチはVLANタギングによって受信したフレームを適切なポートから送り出せないことになる。
- そこで送り出す方のL2スイッチは、Ethernetフレームを送信するときに、VLAN情報が書かれたタグと呼ぶ情報を付加する。(ホストが送信するフレームは同じ)
- 受信したL2スイッチは、そのフレームの中身を見れば、どのVLANに渡せばいいかがわかる。(下図)
- そして、フレームに埋め込まれたVLAN情報を取り外して、ホストが接続するポートから送信、又は同じVLANに設定されたポートに対してのみフラッディングする。
- このVLAN情報が書かれるタグは、IEEE 802.1Q規格で決められている。(メーカー独自のものもある)
※VLAN情報を埋め込んで通信するのは、異なるL2スイッチに渡すときだけ。
※同じスイッチの同一VLANに所属するホスト同士ではフレームにVLAN情報を埋め込むことはしない。
IEEE 802.1Qタグ
- タグは、全体で4バイトある。
- VLANタギングを使うと、Ethernetフレームは68~1522バイトになる。
- タグは、さらに細かく分かれる。

・TPID(Tag Protocol Identifier):VLANタグを含むという意味。通常は、0x8100が入る。
・PCP(Priority Code Point):フレームに優先度を付けるときに使う。QoSを使うときだけ。
・CFI(Canonical Format Identifier):他プロトコルとの互換用に使う。通常は、0が入る。
・VLAN ID:具体的なVLAN番号が入る。通常は、1~4094の中から選んで使う。