ちょっと話題の記事

AWS Direct Connect のフェイルオーバーテストをやってみた

待望のDirectConnectフェイルオーバーテスト、やってみました!!
2020.06.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、久住です。

先日のアップデートで実施できるようになった AWS Direct Connect のフェイルオーバーテストをやってみました! アップデートの詳細については下記エントリーをご確認ください。

テスト環境

冗長化されたDirectConnectの環境がないため、今回は1物理ポートのDirectConnectから2つの仮想インターフェイスをVPCに接続することでフェイルオーバーテストをしてみました。BGPルータ(CGW)にはCisco ASR1000シリーズを利用しています。

DirectConnectの仮想インターフェイスは下記の通り、メイン回線(VLAN1000)バックアップ回線(VLAN1001)として作成しました。

フェイルオーバーはCLIやAPI経由でも実施出来るようですが、今回はマネジメントコンソールから実行してみます。

フェイルオーバーテスト機能は、AWS マネジメントコンソール、コマンドラインインターフェイス、または AWS Direct Connect API を使用して、お客様がボーダーゲートウェイプロトコルのセッションを 1 つ以上無効にすることで、回復性をテストできるようにします。

やってみた

メイン回線のBGP停止

メイン回線のVLAN1000(BGP-Failovertest-VLAN-1000-main)を停止します。 アクションから[BGPを停止させる]を選択します。

障害テストの開始画面にて、必要項目を入力してテストを開始します。 今回は[テストの最大時間]を3分に設定しました。

確認ボタンを押してテストを開始するとtestingdownの順に遷移していくようです。

「testing」の状態

「down」の状態

メイン回線のBGP自動回復

BGP停止時に設定した[テストの最大時間]の3分が経過するとBGPセッションが回復し、avalilableに戻ります。

テスト履歴の確認

テストを実行した仮想インターフェイスの画面からテスト履歴を確認してみます。 履歴画面では[テスト開始時刻][テスト終了時刻]、[テストステータス]が確認できます。先程テストを実行した履歴のステータスはcompleteになっていることが確認できました。

BGPルータからBGPセッション状態を確認してみる

今回検証した環境ではBGPルータ(CGW)に接続できるので、BGPルータで実際のBGPセッション状態の遷移を確認してみます。

BGPルータインターフェース情報

interface GigabitEthernet0/0/4.1000
description BGP_FO_test
encapsulation dot1Q 1000
ip address 100.64.128.1 255.255.255.252
interface GigabitEthernet0/0/4.1001
description BGP_FO_test
encapsulation dot1Q 1001
ip address 100.64.128.5 255.255.255.25

通常時

BGPルータ上でBGPルーティング情報を確認すると10.0.0.0/16(VPC)へのルーティング情報が2つ(メイン回線、バックアップ回線)存在します。

Network Next Hop Metric LocPrf Weight Path
*> 10.0.0.0/16 100.64.128.2 0 64512 i
* 100.64.128.6 0 64512 i
*> 100.64.128.0/30 0.0.0.0 0 32768 i
*> 100.64.128.4/30 0.0.0.0 0 32768 i

BGPセッション停止時

テスト履歴の[テスト開始時刻]の直後にメイン回線(VLAN1000)のBGP neighborとのセッションが切れていることが確認できます。

*Jun 5 10:12:55 JST: %BGP-5-ADJCHANGE: neighbor 100.64.128.2 Down BGP Notification received

Next Hop:100.64.128.2のルーティング情報がなくなっていることがわかります。

Network Next Hop Metric LocPrf Weight Path
*> 10.0.0.0/16 100.64.128.6 0 64512 i
*> 100.64.128.0/30 0.0.0.0 0 32768 i
*> 100.64.128.4/30 0.0.0.0 0 32768 i

BGPセッション回復時

テスト履歴の[テスト終了時刻]の直後にメイン回線(VLAN1000)のBGP neighborとのセッションが回復していることが確認できます。

*Jun 5 10:16:03 JST: %BGP-5-ADJCHANGE: neighbor 100.64.128.2 Up

ルーティング情報も回復しています。

Network Next Hop Metric LocPrf Weight Path
*> 10.0.0.0/16 100.64.128.2 0 64512 i
* 100.64.128.6 0 64512 i
*> 100.64.128.0/30 0.0.0.0 0 32768 i
*> 100.64.128.4/30 0.0.0.0 0 32768 i

さいごに

今まではBPGセッションの無効化はAWS側ではできなかったため、回線のフェイルオーバーテストをする際にはBGPルータ(CGW)側でBGPセッションの無効化をする必要がありました。これによりAWS側の障害起因での切り替え試験はできなかったのですが、今回のアップデートでAWS側の擬似的な故障を再現してフェイルオーバテストが行える様になったので冗長化されたDirectConnect構成でサービスを実現するユーザには大きなアップデートではないでしょうか。

※ 冗長構成を取る場合はAS-PATH属性やLOCAL_PREF属性等を利用してルート選択を実装すると思いますが、今回は簡易的な疑似環境を作成しています。