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が
ステートフル(セッション管理型)
であることです。
通信の流れ:
- Client → FW-A → Server(セッション生成)
- 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は経路の一貫性を前提とする
この構造矛盾が、 断続的通信障害を生みます。
対称経路を守ること。
これが唯一の本質的解決策です。
あわせて読みたい


FW/NATセッションが原因の“謎の通信断”を見抜く方法
ネットワークは正常に見えるのに、 アプリ通信だけ突然切れる 再接続すると復旧する 時間が経つと直ることがある このような 「原因が分からない通信断」 に悩まされた…
あわせて読みたい


FWタイムアウト設計と長時間通信アプリの注意点
「一定時間操作しないと通信が切れる」「VPNや業務アプリが突然切断される」 このようなトラブルの原因として非常に多いのが、 ファイアウォール(FW)のセッションタイ…
あわせて読みたい


FWを跨ぐ通信で片方向だけ通る原因【なぜ“戻り通信”が消えるのか】
FWを経由する通信で、 「片方向だけ通る」 という現象は現場で非常に多く発生します。 送信はできるが戻りが来ない SYNは届くがACKが返らない pingは通るのに業務通信だ…
