【AWS】解説！Direct Connectの経路選択と耐障害性の要点【ネットワーク】

## はじめに
オンプレミスからAWSに接続する際にDirectConnectと呼ばれるサービスが利用されます。このDirectConnectでは他のAWSサービスとの組み合わせやDirectConnectを冗長構成にすることで耐障害を高めることができます。この冗長構成ではさらに経路の優先順位設定を行うことで稼働系と待機系に分けることも可能です。
今回の記事ではこのDirectConnectの経路選択と耐障害性の仕組みを解説します。

## サービス概要
### Direct Connect
・DirectConnetとは、VPCをはじめとしたAWSの提供するサービスに接続するためのサービスにオンプレミス環境から接続するためのサービスである
・DirectConnectではBGPというプロトコルを利用している
・DirectConnect通信を行う利点としては、インターネット経由の通信と比較して安定した通信速度が確保されることとデータ保護されることが挙げられます。また、今回の記事でも紹介する冗長構成にすることで通信の高可用性を確保することができる

<DirectConnectの構成図>
![DirectConnect基本構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/95eb2950-5b25-9d96-6b33-c7234c5b2f04.png)


## 耐障害性
### 1．デュアルコネクション
・デュアルコネクションはダイレクトコネクトロケーション内に複数のDirectConnectionのルータとエンドポイントを使用してDirectConnect接続を構成することでダイレクトコネクトロケーション中のルータに異常が発生した際にも別のルートで接続を維持できる構成
・ダイレクトコネクトロケーション自体に異常が発生した場合には接続が維持できない構成になります
<構成図>
![DirectConnect_DualCon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/70997d8e-2295-2b93-7e72-af9a16b2d50e.png)
### 2．デュアルロケーション
・デュアルロケーションは複数のダイレクトコネクトロケーションを使用してDirectConnect接続を構成することでダイレクトコネクトロケーションかその中のルータに異常が発生した際にも別のルートで接続を維持できる構成
<構成図>
![DX_DualLoc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/9cdb8a25-3a2e-9cf3-2dd9-83d5315d599d.png)

### 3．VPNとDirectConnect併用
・DirectConnectionの接続に異常が発生したときの待機系として、VPN接続を使う構成
・VPN接続になった場合、DirectConnect接続の時の安定した接続が得られないデメリットが発生しますが、DirectConnectを複数使用しないため、コスト面ではメリットが得られます
<構成図>
![VPN＋DirectConnectGateway.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/0029d95f-d1e5-e62d-3937-c3512e40d81d.png)




## 経路選択
### 1．VPNとDirectConnect併用時
・DirectConnect接続とVPN接続を併用した構成では常に***DirectConnectの方を優先***して使用されます

### 2．複数のDirectConnect接続時

#### ①AS番号
##### AS (Autonomous System：自律システム)
・AWSからオンプレミスへの通信の経路選択にはAS番号を使用します
・AS（Autonomous System）とは、インターネットを構成する単位となる、ある一つの管理主体によって保有・運用されている独立したネットワーク。単一の経路制御（ルーティング）ポリシーを共有するネットワークで、外部から一つの塊として認識される。(参考：https://e-words.jp/w/AS.html）
・AS番号はそのASを区別するために付与される番号です
・AWS側ではこのAS番号(ASN)がデフォルト値として64512が推奨されていますが、オンプレミスネットワーク側ではこれと重複しない番号を付与する必要があります。
・DirectConnectを冗長構成にしている場合、この***ASの数が短い方を優先***して通信に使う稼働系、もう一方を待機系にすることができます。
・両方のDirectConnectでASの数が同じ場合は両方を等しく利用します
##### AS-PathPrependによる優先経路選択
・ASの数に差をつけるための方法として「***AS-PathPrepend(ASパスプリペンド)***」と呼ばれる方法で待機系のAS番号を余分に追加することができます。これによりAS-PathPrependを行った経路が行わなかった方の経路よりもASの数が多くなり待機系の扱いにできます。
![DirectConnect_DualCon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/960b360e-2f75-ef88-c24c-7b3c875bdbcc.png)


#### ②Local Preference による優先経路選択
・オンプレミスからAWSへの経路選択にはLocal Preferenceを使用します
・こちらはルータが選択する経路に関する属性であり、***より大きい値が設定されている経路が優先***されます
![DirectConnect_DualConLocalPref.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/0250c5a1-c6f5-fae5-1e31-e69eed89ccc3.png)

### 3．BFD(Bidirectional Forwarding Detection)による障害検知の高速化
・使用しているDirectConnectの経路で障害が発生した場合、障害が発生していない迂回経路に切り替えるができます
・障害を検知してからの経路変更はすぐには変更が行われず、***ホールドタイム***と呼ばれるBGP クォータで定義された時間(デフォルト90秒、最小値3秒)だけ待機してから経路変更を行います
・この時間を最小値300ms間隔で3回連続で通信不可を検知すると経路変更を行うことを実現する機能がBFDです





## 参考URL
・DirectConnectブラックベルト
https://pages.awscloud.com/rs/112-TZM-766/images/20210209-AWS-Blackbelt-DirectConnect.pdf
・DirectConnectのクォータ
https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/limits.html
・Direct Connect FAQ
https://aws.amazon.com/jp/directconnect/faqs/
・BGPとは
https://aws.amazon.com/jp/what-is/border-gateway-protocol/