プログラマでありたい

おっさんになっても、プログラマでありつづけたい

AWS Direct Connectの勉強その5 経路選択と冗長化

 AWS認定アドバンストネットワーク(高度なネットワーキング)のために、苦手なDirect Connectの勉強をしよう。勉強するならブログにまとめようと軽い気持ちで始めたこのシリーズですが、いよいよ第5回目、最終回を迎えることになりました。

AWS Direct Connectの勉強 - プログラマでありたい
AWS Direct Connectの勉強その2 プライベートVIFの接続パターン - プログラマでありたい
2021-01-07 AWS Direct Connectの勉強その3 パブリックVIF - プログラマでありたい
AWS Direct Connectの勉強その4 Direct Connect GatewayとTransit Gateway - プログラマでありたい
AWS Direct Connectの勉強その5 経路選択と冗長化 - プログラマでありたい

AWSとオンプレミス間の経路選択について

 AWSとオンプレミス間でDirect Connectで接続する場合、回線が1本の場合はそれが単一障害点となります。そのため、複数の回線を利用して冗長化するのが望ましいです。その場合、どの経路を通って通信するかという経路選択が必要になります。Direct Connectの場合(たぶんDirect Connect以外の専用線接続の場合でも)、BGPを使って経路をコントロールします。
 ということで、今日はみんな大好き(さっぱり解らない)BGPを中心としたAWSとオンプレミス拠点の接続の制御という観点でみていきます。まずBGPの基本として、同一AS内ではiBGP(Internal BGP)で異なるASとはeBGP(External BGP)で経路の制御をします。

f:id:dkfj:20210111224323p:plain

 経路の制御として、2つの値があります。

  • オンプレミス⇒AWS: Local Preference(LP)
  • AWS⇒オンプレミス: AS Path Prepend

 これ以外にも、MEDがあります。MEDによって優先度の制御はできるが、AWSとしてはサポートの対象外のようです。さて、この2つの設定値ですが、オンプレミス側のルーターで設定を行います。AWS側は一切設定しません。AWS側での設定が無いと初めて知った時は、へぇーって思いました。
※AS番号の設定等はしますが、経路選択に直接影響を与える訳ではないです。

経路選択

 では、実際の経路選択の例を見てみましょう。次の図は、2つのカスタマーゲートウェイに接続していて、Active/Standbyになっている例です。VGWからオンプレの経路は、AS Path Prependのパス長をみます。Activeな左側のルーターは、Prependがなしです。Standbyになっている右側のルーターは、Prependが2つあります。AS Path Prependは最小の方を優先されるため、Prepend なしのルートが選択されます。オンプレからAWSのルートは、Local Preference(LP)をみます。LPは大きな値の方が優先されるため、左側の200が設定されているルーターが優先されます。よって、Active/Standby構成になります。

f:id:dkfj:20210112000558p:plain

 Active/Activeの構成にしたい場合は、AS Path PrependとLocal Preferenceの値をどちらのルーターも同じに設定すれば良いです。

f:id:dkfj:20210112000611p:plain

 AS Path PrependとLocal Preferenceの付け方を間違えると、上りと下りのトラフィックが別々の経路を通る(非対称ルート)ということになるので、注意が必要です。

f:id:dkfj:20210112000725p:plain

VGWの経路選択の優先度

仮想プライベートゲートウェイ(VGW)の経路選択の優先度は以下の仕様になっています。

  1. ロンゲストマッチを優先
  2. Direct ConnectとVPNで冗長化時は、Direct Connectを優先
  3. スタティックルートと動的ルーティングを同時利用時はスタティックルートが優先
  4. BGPのAS-PATH属性を適用
  5. 上記に当てはまらないまたは同じ場合はロードバランス(Act/Act構成)

Site-to-Site VPN routing options - AWS Site-to-Site VPN


 この中でロンゲストマッチ(最長プレフィックス一致)というのが解りにくいです。宛先が172.16.1.1というものがあった通信があり、172.16.1.0/24と172.16.0.0/16の2つのネットワークが広告されていた場合、ロンゲストマッチとしては172.16.1.0/24となります。

経路障害の検知

 経路の冗長化と通常時の経路選択ができるとして、それでは経路障害時はどのように検知するのでしょうか?AWSには、2種類の検知のための設定値があります。

  • keepalive/ Hold Timer
  • BFD(Bidirectional Forwarding Detection)

keepaliveとHold Timerは、数十秒単位で設定するようです。BFDはミリ秒での設定のようです。BFDを有効にした方が早く検知できますね。

CloudWatchのDirect Connectの監視可能項目

 最後にCloudWatchでDirect Connectの監視可能メトリクスです。CloudWatchでは物理的な回線であるコネクションと、論理的な接続であるVIFの監視が可能です。メトリクスについては、公式ページを参照してください

docs.aws.amazon.com

まとめ

 苦手なDirect Connectについて5回に渡ってまとめてみました。基本的な要素・機能・考え方については理解できたので、もう少しユースケースとか実際の設定を試してみて身につけていこうと思います。こんな事も知っておいた方が良いよということがありましたら、是非教えて下さい。