【テクニカル・上級編】 VLAN(Virtual LAN / IEEE 802.1Q)のタグヘッダー構造とTPID – インフラ・物理&L2/L3ネットワーク基礎実践ガイド

VLANタグが語る「パケットの真実」:802.1Qが支えるL2の深淵とパフォーマンスの最適解

エンジニア諸君、今日もパケットの海を泳いでいるだろうか。

現代のインフラ設計において、VLAN(IEEE 802.1Q)を避けて通ることは不可能だ。しかし、多くのエンジニアは「VLAN IDを割り当てれば通信できる」という表層的な理解に留まっている。だが、真のインフラアーキテクトであれば、イーサネットフレームのわずか4バイトの挿入が、物理層からアプリケーション層のRTT(Round Trip Time)にまでどのような爪痕を残すのか、その深淵を覗き込む必要がある。

今日は、ただの「タグ」として片付けられがちな802.1Qヘッダーを解剖し、それが現代の高速ネットワークでどう振る舞うべきかを語ろう。

—

4バイトの魔術:802.1Qタグの解剖学

イーサネットフレームの送信元MACアドレスとタイプフィールドの間に割り込むこの4バイトは、L2スイッチングの静かな支配者だ。構成は極めてシンプルだが、その内訳が示す意味は重い。

  • TPID (Tag Protocol Identifier: 16bit): 標準値 0x8100。この値がハードウェアスイッチのASICに、「これはVLANタグだ」と即座に判断させるトリガーとなる。
  • TCI (Tag Control Information: 16bit):
  • PCP (Priority Code Point: 3bit): CoS(Class of Service)とも呼ばれる。QoSの命綱だ。
  • DEI (Drop Eligible Indicator: 1bit): 輻輳時に優先的に廃棄されるべきフレームを示す。
  • VID (VLAN ID: 12bit): 0〜4095の識別子。0と4095は予約済みだ。

この構造がパケットに挿入されることで、MTU(Maximum Transmission Unit)サイズが実質的に1522バイトへと拡張される。ここを見落とすと、ジャンボフレームを多用するデータセンター環境で「なぜか特定のパケットだけが断片化・ドロップする」という、夜も眠れないトラブルシューティングに追い込まれることになる。

—

パフォーマンスとセキュリティの境界線

1. MTUとTCPバッファの最適化

VLANタグを付与することで、物理的な最大伝送単位が変化する。多くのレガシーなインフラでは、スイッチのMTU設定が1500のまま放置されていることが多い。VLANを使用する環境では、必ず1522バイト(Q-in-QやVXLANを考慮するならそれ以上)を許容するように設定を突き詰めなければならない。

TCPのウィンドウサイズをいくらチューニングしても、L2の断片化でパケットがロスしていては、TLSハンドシェイクのRTTは悪化する一方だ。

# LinuxカーネルでのインターフェースMTU設定例
# VLANサブインターフェースを作成し、MTUを適切に調整する
ip link add link eth0 name eth0.100 type vlan id 100
ip link set dev eth0.100 mtu 1500  # VLANタグ分を考慮して調整

2. PCP(CoS)を活用したQoSの強制

データセンター内のトラフィックが混雑した際、PCPフィールドを適切に扱っているか否かで、アプリケーションの反応速度は劇的に変わる。特に、TLSハンドシェイクやAPIの疎通確認といった「小規模だがリアルタイム性が求められるパケット」には、PCP値を適切にタグ付けし、スイッチ側で優先キューイングを行うべきだ。

# tc (Traffic Control) を用いたVLANタグに基づく優先制御の例
# VLAN 100のパケットに特定の優先度を割り当てる
tc qdisc add dev eth0 root handle 1: prio
tc filter add dev eth0 protocol 802.1Q parent 1: prio 1 u32 \
    match u16 0x0064 0x0FFF at -4 \ # VLAN 100 をマッチング
    flowid 1:1

—

セキュリティの観点:VLAN Hoppingをどう防ぐか

VLANは本来、L2のブロードキャストドメインを分断し、セキュリティ境界を構築するものだ。しかし、TPIDの脆弱性を突いた攻撃(VLAN Hopping)は、今なお脅威として存在する。

攻撃者は、TPIDを二重に挿入することで、スイッチのネイティブVLAN設定を悪用し、本来到達できないVLANへパケットを注入する。これを防ぐための鉄則は以下の通りだ。

1. ネイティブVLANの廃止: トランクポートにおけるネイティブVLANの使用は避け、常にタグ付き通信を強制せよ。
2. 未使用ポートの隔離: 全ての未使用ポートは「ブラックホールVLAN」へ割り当て、shutdownせよ。
3. TPIDの検証: 最近のハイエンドスイッチでは、受信したフレームのTPIDを厳密に検証し、予期せぬタグを持つパケットを破棄する設定が可能だ。

—

結論:パケットに敬意を払え

VLANタグは、単なる管理用のラベルではない。それは、ネットワーク全体に「このパケットはどう扱われるべきか」を伝える、沈黙の指令書だ。

インフラアーキテクトとして、我々はコマンドを叩くだけでなく、その裏でシリコンがどのようにパケットを解釈し、ヘッダーを読み取り、キューに振り分けているのかを常に想像しなければならない。この4バイトの深淵を理解したとき、君たちのネットワークは、より高速に、そしてより強固に進化するはずだ。

さあ、次はどのプロトコルの深淵を覗こうか。パケットは、君たちの解析を待っている。

コメント

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