AWS VGW のサブネットルートが VPN トンネルを一本に絞れない理由
仮想プライベートゲートウェイへのサブネットルートは、トンネルのどれかを指定できません。本当の優先順位が宿る場所は AS_PATH、トンネルの健全性、静的ルートです。
二つの Site-to-Site VPN 接続が一つの仮想プライベートゲートウェイに終端し、同じ支店プレフィックスを広告しています。サブネットルートテーブルにはそのプレフィックスへのエントリが一つあり、ゲートウェイを指していて、トンネルを名指すフィールドはありません。したがって接続間の優先順位は、コンソールがルーティングと呼んでいない場所で決まります。どのレイヤーが判断を持っているかを知ることが、機能する待機系と何も変えない変更の分かれ目です。
二つのレイヤーが関与します:どのゲートウェイかを示す VPC ルートと、ゲートウェイ自身のトンネル選択です。両者を混同すると、ルートテーブルでは正しく見えるのにパケットを一つも動かさない変更になります。
一つに見える二つのレイヤー
サブネットルートが答えるのは一つの問いだけです、すなわちこの宛先にはどのアタッチメントか。その先は仮想プライベートゲートウェイであり、メトリクスは同じテーブルの他のルートとしか競合しません。そのエントリには、第一のトンネルと第二のトンネルを、あるいは接続 A と接続 B を区別するものは何もありません。より具体的なプレフィックスは別の宛先一致であって、より細かい経路選択ではありません。
ゲートウェイが答えるのは次の問いです、すなわちそのプレフィックス用に保持するトンネルのうち今どれがトラフィックを運んでいるか。この判断はトンネルの健全性とカスタマーゲートウェイから受け取る BGP 属性から決まり、サブネットルートテーブルには決して現れません。
VGW が実際に比較するもの
健全性が先です。ダウンしたトンネル、または BGP セッションが上がっていない場合、どの属性も見られる前に負けます。だからすでに失敗している接続でパスを前置しても何も変わりません。
同じプレフィックスの有効なパスのうち、AWS は短い AS_PATH を優先します。二つのパスが同じ長さなら MED を比較し、パスの最初の AS について文書化された条件に従います。俗説ではなく公開された順序を読んでください、俗説はたいてい健全性の手順と静的ルートの例外を落としています。一つの帰結として、バックアップ接続で三回前置すればプライマリは厳密に短くなり、これが優先順位を表す通常の方法です。
前置と、それが何もしない場合
前置はカスタマーゲートウェイの外向き広告で行われ、AWS の内部では行われません。AWS に避けてほしいプレフィックスへ自分の ASN を二回か三回加えると、AWS はその接続に対してより長いパスを見ます。プライマリ接続は前置なしの広告を保ちます。両方の接続が同じ ASN から同じ前置回数で広告するなら、優先順位を何も表していません。
変更後に AWS 側で受信パスを確認してください。カスタマー側の機器を一度も出ていない前置は、AWS が無視した前置とまったく同じに見えます。
静的ルートは議論全体を無視します
接続が静的ルーティングを使うなら、長くする AS_PATH はありません。AWS は静的 VPN ルートを、同じプレフィックスについて BGP で学習したルートより優先すると文書化しているため、混在した設計は完全に動的な設計のようには振る舞いません。まずルーティングの種類を決め、そのために存在する優先の仕組みを選んでください。
同じプレフィックスを広告する二つの静的接続では、有効なてこはプレフィックスです、すなわち使いたい接続でより具体的な範囲を広告し、どのパスが勝つかではなく、どの宛先が一致するかを変えたことを受け入れてください。
トランジットゲートウェイが別の答えである理由
トランジットゲートウェイは VPN アタッチメント間の等コストマルチパスに対応するため、二つの接続が片方を待機させる代わりにトラフィックを分け合えます。その設計の障害面は異なります、フローがトンネルに分散し、一つのトンネルが落ちても負荷の一部だけが移ります。VGW のレシピをトランジットゲートウェイへ、またはその逆へ写すと、どちらのプラットフォームも満たさない期待が生まれます。
仕組みより先にモデルを選んでください、固定した優先順位を持つ現用と待機、または ECMP を持つ現用と現用です。
設定後に何を確認するか
四つのことを順に確かめます。サブネットテーブルが依然としてプレフィックスを意図したゲートウェイへ解決すること。ゲートウェイが両方のトンネルをアップとして示すこと。避けたい接続で受信した AS_PATH がもう一方より長いこと。そしてそのサブネット内のインスタンスからの実際のフローが想定のトンネルを通ること、緑のステータスから推測するのではなく、両端で観測してください。
そのうえで承認済みのフェイルオーバーテストを実行し、生き残ったパスがサービスを運ぶのを見てください。構成の差分にしか存在しない優先順位は、まだ優先順位ではありません。