ECMP環境でFWを跨ぐと壊れる理由【非対称ルーティングが生むセッション破壊の正体】

  • URLをコピーしました!

ECMP(Equal Cost Multi Path)を導入した途端、

  • 一部通信だけ失敗する
  • 同じ宛先なのに成功したり失敗したりする
  • pingは通るがTCPが不安定
  • FWログにdenyは出ていない

このような現象が発生することがあります。

原因の多くは、

ECMPとステートフルFWの相性問題

です。

本記事では、

  • ECMPの仕組み
  • なぜFWを跨ぐと壊れるのか
  • 典型症状と判断基準
  • 確定診断の方法
  • 正しい対処・設計方法

を、実務レベルで完全解説します。

目次

まず整理:ECMPとは何か

ECMP(Equal Cost Multi Path)とは、

コストが同じ複数経路を同時に利用する仕組み

です。

例えば:

  • ルータA → FW-A → Server
  • ルータA → FW-B → Server

両方のコストが同じ場合、トラフィックは分散されます。

分散方法は通常、

  • 5タプル(送信元IP/宛先IP/ポート/プロトコル)ハッシュ
  • フロー単位

で決定されます。

なぜECMP+FWで壊れるのか

問題は、FWが

ステートフル(セッション管理型)

であることです。

通信の流れ:

  1. Client → FW-A → Server(セッション生成)
  2. Server → ECMPによりFW-B経由で戻る

この時、FW-Bにはセッションが存在しません。

結果:

戻りパケットは破棄されます。

これが壊れる本質です。

典型症状

  • SYNは届くがACKが返らない
  • SYN-ACKが返っているのに接続確立しない
  • 同じ通信でも成功率が50%程度になる
  • 再試行すると成功することがある

この「成功したり失敗したりする」現象が、 ECMP環境の最大の特徴です。

なぜ成功率がランダムに見えるのか

ECMPはハッシュで経路を決定します。

例えば:

  • 送信元ポートが変わる
  • セッションが再生成される

これによりハッシュ値が変化し、 別FWを通ることがあります。

つまり、

通信ごとに経路が変わる可能性がある

ため、断続的に壊れるように見えます。

確定診断の方法

① 往復経路を確認する

  • 往路はどのFWを通っているか
  • 復路は同じFWを通っているか

ルータでのtracerouteやパケットキャプチャで確認します。

② FWセッションテーブル確認

該当通信のセッションが片側にしか存在しない場合、 非対称の可能性が高いです。

③ ECMPルーティング確認

  • 同一コスト経路が複数あるか
  • per-packet負荷分散になっていないか

per-packet分散の場合、ほぼ確実に壊れます。

特に危険な構成

  • FWを2台並列設置
  • 上位ルータでECMP有効
  • FW間でセッション同期なし

この構成は、

設計上ほぼ必ず不具合を生みます。

正しい解決策

① 経路を対称にする

最も確実な方法。

  • FWをルーティングの中核に置く
  • ECMPをFWより外側に限定する

② セッション同期を有効化

FWクラスタ構成でセッション情報を共有します。

ただし、同期遅延や対応外プロトコルには注意。

③ ECMPの分散方式を確認

  • per-flow分散にする
  • per-packetは使用しない

設計で防ぐための原則

  • ステートフル装置の前後でECMPをまたがない
  • NAT装置も同様に単一路にする
  • 戻り経路は必ず制御する

重要なのは、

“負荷分散”と“セッション管理”は別物である

という理解です。

解決したと言える状態

  • 往復経路が常に一致している
  • 成功率が100%になる
  • 再送が発生しない
  • セッションが安定して維持される

まとめ

ECMP環境でFWを跨ぐと壊れる理由は、

セッションを管理する装置を、経路分散が破壊するから

です。

  • ECMPは経路を分散する
  • FWは経路の一貫性を前提とする

この構造矛盾が、 断続的通信障害を生みます。

対称経路を守ること。

これが唯一の本質的解決策です。

目次