1. なぜ今、改めてPrivate VLANの深淵に潜るのか
現代のエンタープライズやデータセンターにおいて、マイクロセグメンテーションといえばEVPN-VXLANのGBP(Group Based Policy)やホスト型ファイアウォール(eBPFやiptables)が真っ先に語られる時代になりました。しかし、ベアメタルクラスタ、仮想化基盤のハイパーバイザ間相互接続、あるいはDMZにおけるセキュアなマルチテナンシーを設計する際、避けて通れないのがL2ブロードキャストドメインの物理的な肥大化とそれに伴う爆発半径(Blast Radius)の制御です。
同一サブネット内に存在するノード同士を論理的に隔離したい場合、最もナイーブなアプローチはホストごとに/30や/31のサブネットを割り当て、すべてをL3で終端させることでしょう。しかし、これには深刻な代償が伴います。IPv4アドレス空間の急激な浪費、ルーティングテーブル(TCAM)の枯渇、そして何よりデフォルトゲートウェイでの頻繁なL3フォワーディングによるスイッチングプレーンへの負荷です。
Private VLAN(PVLAN / RFC 5517)は、このジレンマを単一のIPサブネットを維持したまま、L2のスイッチングファブリック内部で転送制御を行うことによって解決する、美しくも極めて硬質なプロトコル設計です。
本稿では、教科書的な定義のなぞり書きは行いません。ASICのIngress/Egressパイプラインで802.1Qタグがどのように書き換えられ、CAM(FDB)テーブルがどうインデックスされるのか、そしてトランスポート層(TCP/TLS)の往復遅延(RTT)やセキュリティにどのような副作用をもたらすのかを、パケットレベルの観点から深掘りします。
—
2. PVLANアーキテクチャの内部挙動:タグリライティングとCAMルックアップ
PVLANを真に理解するためには、論理的なポートの種別(Promiscuous / Isolated / Community)の背後にある、Primary VLANとSecondary VLANの2段構えのVLAN構造、そしてスイッチ内部のASICで行われるハードウェアリライトパイプラインを追う必要があります。
+---------------------------------------------------------------+
| Primary VLAN |
| +-----------------------------+ +--------------------------+ |
| | Isolated Secondary VLAN | | Community Secondary VLAN | |
| | [Host] [Host] | | [Host] [Host] | |
| +-----|-----------------|-----+ +-----|-------------|------+ |
+--------|-----------------|-------------|-------------|--------+
| (Drop) | |<--- (Pass)->|
x-----------------+
| |
+-----------> [ Promiscuous Port ] <----------+
(Default Gateway / Firewall)
2.1 Primary VLANとSecondary VLANの分離原則
PVLANでは、単一のIPサブネットに対して複数の802.1Q VLAN IDを割り振ります。
1. Primary VLAN:
Promiscuousポート(ルータやFWが接続される)から下流のホスト(Host Ports)方向へ向かう「ダウンストリーム」トラフィックを運ぶVLAN。
2. Secondary VLAN:
各ホストポートから上流のPromiscuousポート、あるいは同一Community内へ向かう「アップストリーム」トラフィックを運ぶVLAN。Secondary VLANはさらに2つの属性に分かれます。
- Isolated VLAN: ポート間で完全に通信が遮断され、トラフィックはPromiscuousポートにのみ抜ける。
- Community VLAN: 同一Communityに属するポート間でのみL2スイッチングを許可し、他のCommunityやIsolatedポートとは遮断される。
2.2 ASIC内部の転送パイプラインとMACアドレス学習
ここで疑問が生じます。ホストA(Isolated)から送出されたARPリクエスト(Broadcast)は、なぜ同じIsolated VLANにいるホストBへ届かないのか?
これを実現するため、スイッチASICはポートに入ってきたフレームに対してSource Port RoleとVLAN-IDに基づくフィルタリングマトリクスをTCAMレベルで適用します。
[Ingress Port (Isolated)]
│
▼
[Secondary VLAN (e.g., 201) Tagging / Internal Classification]
│
├─► [CAM Lookup (Destination MAC)]
│ │
▼ ▼
[Forwarding Decision Pipeline]
│
├─► Destination Port = Isolated Port? ──► 【DROP】
├─► Destination Port = Community Port? ──► 【DROP】
├─► Destination Port = Promiscuous Port? ──► 【FORWARD】
│
▼
[Egress Port (Promiscuous)]
│
▼
[Egress Rewrite: Secondary VLAN (201) -> Primary VLAN (100) or Untagged]
スイッチのMACアドレステーブル(CAM)における学習動作も非対称です。
- ホストからPromiscuousポート宛て: フレームはSecondary VLAN(例: VLAN 201)上で入ってきます。ASICはホストのMACアドレスを「VLAN 201」のテーブルエントリとして学習します。
- Promiscuousポートからホスト宛て: ゲートウェイからのリターントラフィックはPrimary VLAN(例: VLAN 100)上で入ってきます。しかし、スイッチはPrimary VLAN宛てのフレームであっても、マッピングされたSecondary VLAN(VLAN 201)のMACテーブルを参照して目的のホストポートへフォワーディングします。
この「双方向での非対称なVLAN識別」をハードウェアプレーンでシームレスに行うため、PVLAN対応スイッチのASICには、Primaryと
コメント