【テクニカル・上級編】 VLAN間ルーティング(Inter-VLAN Routing)とレイヤ3スイッチの役割 – インフラ・物理&L2/L3ネットワーク基礎実践ガイド

VLAN間ルーティングの深淵:Router-on-a-Stickの残滓とL3スイッチの現在地

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

現代のデータセンターやエンタープライズネットワークにおいて、VLAN間ルーティングは空気のように当たり前の存在だ。しかし、その「空気」の品質を左右するのは、物理レイヤの信号品質や論理設計の整合性だけではない。我々インフラアーキテクトが向き合うべきは、L2/L3の境界線でパケットがどのような運命を辿るのか、その「ミリ秒の摩擦」を極限まで減らすことにある。

本稿では、レガシーな Router-on-a-Stick の限界を再考し、L3スイッチ(MLS: Multilayer Switch)における SVI(Switch Virtual Interface)ルーティングの最適解、そしてその先のパフォーマンスチューニングについて、現場の視点から紐解いていく。

—

1. ルータ・オン・ア・スティック:教本的な「詰まり」の正体

Router-on-a-Stick は、VLANをトランクリンク経由でルータへ引き上げ、サブインターフェースでルーティングする手法だ。概念的には美しいが、実務においてこれは「帯域のボトルネック」という名の物理的制約そのものだ。

全ての VLAN 間通信が、単一の物理リンクを往復する。例えば、サーバ間で大容量のデータ転送(East-Westトラフィック)が発生すれば、トランクリンクは瞬く間に飽和し、キューイング遅延がTCPの CWND(Congestion Window)を縮小させる。結果として、TCPの再送制御が発動し、RTT(Round Trip Time)は跳ね上がる。

もし君が大規模なトラフィックを扱うのであれば、この構成は論理的に論外と言わざるを得ない。

—

2. L3スイッチ(SVI)への移行:ハードウェア・フォワーディングの魔力

L3スイッチは、ルータとは次元が異なる。CPU(コントロールプレーン)によるルーティングではなく、ASICやFPGA(データプレーン)によるハードウェア・スイッチングを行うからだ。

SVI(Switch Virtual Interface)を作成することで、VLANはスイッチ内部のバックプレーンに直結される。これにより、パケットは物理ポートを跨ぐことなく、スイッチのファブリック内でルーティング処理される。

SVI設定のベストプラクティス(Cisco IOS例)

# VLANの定義とSVIへのIP割り当て
vlan 10
 name Servers
vlan 20
 name Clients

# SVIインターフェースの設定
interface Vlan10
 description Gateway for Servers
 ip address 10.0.10.1 255.255.255.0
 # プロキシARPは不要なら無効化(セキュリティと不要なブロードキャスト抑制)
 no ip proxy-arp
 no ip redirects

interface Vlan20
 description Gateway for Clients
 ip address 10.0.20.1 255.255.255.0
 no ip proxy-arp

ここで重要なのは、no ip redirects だ。ICMPリダイレクトは、ホストに対して最適ではない経路を教える機能だが、モダンなネットワークにおいてこれは攻撃者に「パケットを覗き見られる」隙を与えるセキュリティリスクになる。現代のインフラでは「デフォルトゲートウェイに任せる」のが原則だ。

—

3. パフォーマンスを極限まで引き出す:バッファチューニングとTLS

ルーティングの効率化だけでは、アプリケーションの体感速度は上がらない。特にTLSハンドシェイクが絡む現代のWebトラフィックでは、TCPの Initial Window(IW)の調整が鍵となる。

TCPバッファの最適化(Linuxカーネル設定例)

ルーティングを通過するサーバ側の sysctl で、バッファを拡張し、TCPファストオープン(TFO)を有効にする。

# /etc/sysctl.conf への追記
# TCPバッファの自動チューニング範囲を拡大
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# TCP Fast Openを有効化(3ウェイハンドシェイクを1回分短縮)
# 3はクライアント/サーバ双方で有効化
net.ipv4.tcp_fastopen = 3

# キューイング遅延を防ぐためにfq_codelを導入
net.core.default_qdisc = fq_codel

fq_codel(Fair Queuing Controlled Delay)は、バッファブロート(Bufferbloat)を劇的に改善する。ルータやL3スイッチを通過する際の「パケットの渋滞」を、数学的に検知し、レイテンシに敏感なパケットを優先的に捌く仕組みだ。

—

4. セキュリティ:L3スイッチにおけるACLの罠

VLAN間ルーティングにおいて、最も恐ろしいのは「VLAN間の隔離が不十分であること」だ。SVIに ACL を適用する際は、常に Extended ACL を使い、established オプションを賢く活用して欲しい。

# 戻りパケットを許可しつつ、外部からの新規接続を遮断する例
ip access-list extended ACL_VLAN10_IN
 permit tcp 10.0.20.0 0.0.0.255 10.0.10.0 0.0.0.255 established
 deny ip any any

この established を使うことで、内側から開始されたコネクションの戻りパケットのみを許可し、外部からの不正なスキャンをステートフルに(擬似的に)防ぐことができる。

—

最後に:ネットワークは「生き物」である

L3スイッチによるSVIルーティングは効率的だが、それは「適切に設計・監視されていること」が前提だ。スイッチのCPU使用率がスパイクしていないか、ASIC の転送レートは飽和していないか。SNMP や gRPC を用いたテレメトリで、パケットの微細な挙動を常に観測し続けること。

パケットがヘッダーを書き換えられ、次のL3デバイスへと転送されるその瞬間。そこに我々エンジニアの美学がある。教科書を閉じて、CLIのプロンプトの向こう側にある「パケットの鼓動」を感じてほしい。

それが、真のインフラアーキテクトへの道だ。

コメント

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