L2スイッチングの深淵:シリコンレベルで紐解く「ラーニング・フィルタリング・フラッディング」の真実
ネットワークエンジニアの諸君、今日もパケットの海を航海していることだろう。
我々が普段、何気なく show mac address-table を叩き、満足げにセッションの疎通を確認しているとき、スイッチ内部のASICやFPGAは、まさに秒間数億の演算をこなし、物理層から届いた電気信号を「論理」へと変換し続けている。
今日は、L2スイッチングの根幹を成す「3大動作」を、単なる教科書の定義から一段掘り下げ、パフォーマンスとセキュリティの観点から解剖していこう。
1. ラーニング:CAMテーブルとTCAMの静かなる戦い
スイッチがフレームを受信した瞬間、ソースMACアドレスを CAM (Content Addressable Memory) に書き込む「ラーニング」が始まる。これは単なる登録作業ではない。
現場で意識すべきは、このCAMテーブルの容量制限とエイジングタイマーだ。安価なスイッチや高密度なエッジスイッチにおいて、このテーブルが埋め尽くされた瞬間、スイッチは「ラーニング不能」な状態に陥り、未知のユニキャストフレームをすべてフラッディングする「フェイルオープン・モード(ハブ化)」に転落する。
高度なチューニングの視点
セキュリティの観点から言えば、MACアドレスの動的学習を制限する port-security は必須だ。しかし、単に制限するだけでなく、以下の設定を検討してほしい。
# Cisco IOSでの推奨設定例
interface GigabitEthernet0/1
# 最大学習数を制限し、違反時にログを吐いてシャットダウン
switchport port-security maximum 2
switchport port-security violation shutdown
# エイジング時間を短縮し、廃止セッションの残骸を素早くクリーンアップ
switchport port-security aging time 2
switchport port-security aging type inactivity
2. フィルタリング:不要なトラフィックを物理的に排除する
フィルタリングとは、宛先MACアドレスが同一セグメント内にあると判断された際、そのフレームを他ポートへ転送しない動作を指す。これはL2スイッチが単なる「マルチポート・ブリッジ」を超えた、効率的な帯域制御装置である証拠だ。
しかし、ここで注目すべきは「VLAN間ルーティング」と ARP の挙動だ。もし我々が TCP のRTTを極限まで削ろうとするならば、L2レベルでの不要な放送(ブロードキャスト)をいかに減らすかが鍵となる。
現場の教訓:ARPの最適化
大規模なL2ドメインでは、過剰なARP要求がCPU負荷を高め、結果としてホスト側のネットワークスタックに遅延を生じさせる。
# LinuxカーネルにおけるARP抑制と最適化 (sysctl.conf)
# ネットワークインターフェースのARPテーブルの保持時間を調整
net.ipv4.neigh.default.gc_stale_time = 60
# ARP応答を自身のインターフェースに限定し、無駄な応答を防ぐ
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
3. フラッディング:未知との遭遇をどう制御するか
宛先MACアドレスがCAMテーブルに存在しない場合、スイッチは全ポートへフレームをコピーする。これがフラッディングだ。プロトコルスペシャリストとして見逃してはならないのは、この「未知のユニキャスト」が、ネットワーク全体の帯域を食い潰し、結果として TLS ハンドシェイク中のパケットロスを誘発するリスクだ。
特に、TCP のスロースタートフェーズにおいて数パケットのロスが発生すると、再送タイムアウト(RTO)が連鎖し、ユーザー体感速度は劇的に低下する。
パフォーマンスを最大化する設計指針
フラッディングを最小限にするために、以下のアーキテクチャを推奨する。
1. VLANの細分化: ブロードキャストドメインを物理的境界ではなく論理的境界で最小化する。
2. Unicast Flooding Suppression: 多くのエンタープライズスイッチには、未知のユニキャストトラフィックにレート制限をかける機能がある。これを活用し、コントロールプレーンを保護せよ。
# 未知のユニキャストに対するストームコントロール設定
interface GigabitEthernet0/1
# 未知のユニキャストが帯域の1%を超えたら破棄(レート制限)
storm-control unicast level 1.0
終わりに:パケットの先にある「最適化」
L2スイッチングは、一見すると枯れた技術だ。しかし、TLS 1.3 のような0-RTTハンドシェイクを成功させ、低レイテンシなストリーミングを実現するためには、スイッチングの物理的な挙動を理解し、パケットが通過する「経路の純度」を高める必要がある。
ネットワークのトラブルシューティングにおいて、「なぜスイッチはここにフラッディングしたのか?」を問い続けられるエンジニアこそが、次世代のインフラを創る。
次回は、このL2の知識をベースに、ECMP(等コストマルチパス)とL3ルーティングが織りなす「レイテンシの統計的揺らぎ」について深掘りしようと思う。現場からは以上だ。
コメント