こんにちは、ネットワークの深淵へようこそ。プロトコルとパケットの鼓動を愛してやまない、インフラアーキテクトの筆者です。
「VLAN(バーチャルLAN)」という言葉、ネットワークを学び始めると必ずと言っていいほど初期に登場しますよね。「物理的なスイッチを論理的に分割する技術」と教科書には書いてありますが、では、たった1本のLANケーブルの中を、どうやって複数のネットワークのパケットが混ざらずに流れているのか? 不思議に思ったことはありませんか?
今日は、その秘密を握る「IEEE 802.1Q」という規格、そしてパケットの顔つきをガラリと変える魔法の数字「0x8100」について、郵便配達の仕組みに例えながら、世界一優しく、かつ深く紐解いていきましょう。
—
1. そもそも「タグ」って何だろう?(郵便配達の例え)
想像してみてください。ある大きな会社のビルに、毎日大量の手紙が届きます。
普通の封筒(標準的なイーサネットフレーム)には、「宛先(宛先MACアドレス)」と「差出人(送信元MACアドレス)」が書いてあります。これだけで、同じフロア内なら正しく届きます。
しかし、そのビルの中に「営業部」と「開発部」という2つの独立した組織があり、「お互いの手紙が混ざってはいけない」というルールがあったらどうでしょう?
そこで登場するのが「仕分け用の付箋(タグ)」です。
手紙を出すときに、「これは営業部宛だよ!」という青い付箋をペタッと貼る。すると、ビルの入り口(スイッチ)にいる担当者は、その付箋を見て「あ、これは営業部専用のポストに入れなきゃ」と判断できるわけです。
この「付箋」を貼る行為こそがVLANタグ(802.1Q)の役割であり、その付箋がついているかを確認するための合図が、今回の主役である 0x8100 なのです。
—
2. パケットの中に潜む「4バイトの魔法」
では、実際のパケット(イーサネットフレーム)の中身を覗いてみましょう。
通常のイーサネットフレームは、以下のような順番でデータが並んでいます。
1. 宛先MACアドレス(6バイト)
2. 送信元MACアドレス(6バイト)
3. タイプ / 長さ(2バイト):次に続くデータがIPv4なのかIPv6なのか等を示す
4. データ本体
VLANを使う「トランクポート(複数のVLANを通す道)」を通る時、このフレームの形が少しだけ変化します。送信元MACアドレスのすぐ後ろに、「4バイトの追加情報」が割り込んでくるのです。
TPID(Tag Protocol Identifier):0x8100
この4バイトの先頭にある2バイトが、今回のテーマである 0x8100 です。
これをネットワークの世界では TPID(Tag Protocol Identifier) と呼びます。
「これからVLANの情報が続くよ!」という宣言のようなものです。スイッチはこの 0x8100 という数字を見た瞬間に、「おっと、これは普通の手紙じゃないぞ。タグ付きの特別なフレームだ!」と身構えるわけですね。
TCI(Tag Control Information)
0x8100 の後に続く残りの2バイトには、非常に重要な情報が詰まっています。
- PCP(Priority Code Point): 通信の優先順位(「このパケットは超急ぎ!」など)を決めます。
- DEI(Drop Eligible Indicator): 混雑した時に捨ててもいいかどうかの目印。
- VID(VLAN Identifier): ここが一番重要! 1番〜4094番までの「VLAN番号」が入ります。これが先ほど例えた「営業部(VLAN 10)」「開発部(VLAN 20)」といった識別番号になります。
—
3. 実務での設定例:Ciscoスイッチでのトランク設定
「理屈はわかったけれど、実際にどうやって動かすの?」という方のために、ネットワーク機器のデファクトスタンダードであるCisco(シスコ)社のスイッチを例に、この 0x8100(802.1Qタグ)を扱う設定を見てみましょう。
複数のVLANを通す「トランクポート」を作る際の設定は、以下のようになります。
# 特権モードへ移行
enable
# 設定モードへ移行
configure terminal
# VLAN 10 と VLAN 20 を作成
vlan 10
name Sales_Dept
vlan 20
name Dev_Dept
exit
# 他のスイッチやルーターと接続するポート(トランクポート)を選択
interface GigabitEthernet0/1
# このポートで 802.1Q (タグVLAN) を使うことを宣言
# ※最近の機種ではこれしか選べないことが多いですが、明示的に設定する場合もあります
switchport trunk encapsulation dot1q
# ポートをトランクモードに変更
# これで、このポートを通るパケットには「0x8100」のタグが付与されるようになります
switchport mode trunk
# このポートを通ることを許可するVLANを指定
switchport trunk allowed vlan 10,20
# 設定の終了
end
この設定を施した GigabitEthernet0/1 というポートからは、VLAN 10のデータには「VID: 10」、VLAN 20のデータには「VID: 20」という情報が書き込まれたパケットが、元気に 0x8100 という看板を掲げて飛び出していくことになります。
—
4. トラブルシューティングの知恵:ネイティブVLANの罠
現場でよくあるトラブルに、「ネイティブVLAN(Native VLAN)」の不一致があります。
実は、トランクポートであっても「特定の1つのVLANだけは、タグを付けずに(0x8100 を入れずに)送る」という設定ができます。これがネイティブVLANです。
もし、対向のスイッチ同士で「タグなしで送るVLAN番号」がズレているとどうなるでしょうか?
- スイッチA:VLAN 1をタグなしで送る
- スイッチB:VLAN 99をタグなしで受け取る設定にしている
こうなると、スイッチAから出たVLAN 1のパケットが、スイッチBに届いた瞬間に「あ、タグがないからこれはVLAN 99のデータだな!」と勘違いされてしまいます。これを 「VLANリーク」 と呼び、非常に厄介な通信障害の原因になります。
「パケットに 0x8100 が付いているか、付いていないか」を確認することは、トラブルシューティングの基本中の基本。パケットキャプチャツール(Wiresharkなど)で 802.1Q Virtual LAN という項目が表示されているかチェックする癖をつけましょう!
—
5. まとめ:パケットの「顔」を意識しよう
インフラエンジニアへの第一歩は、画面の向こう側で流れているバイナリデータ(0と1の羅列)に「意味」を見出すことです。
0x8100は、VLANの世界の入り口を示す合図。- その直後に続く
VIDが、パケットの所属先を決める。 - タグがあることで、1本の物理回線を無駄なく、かつ安全に共有できる。
難しく感じていたフレームフォーマットも、こうして「役割」を理解すれば、なんだか愛着が湧いてきませんか?
一歩ずつ理解していけば、いつか複雑なネットワークトラブルも、パケットのささやきを聞くように解決できるようになります。これからも一緒に、ネットワークの深淵を楽しんでいきましょう!
それでは、次回の記事でお会いしましょう。ハッピー・パケット・ネットワーキング!
コメント