AWS Direct Connectを整理してみた

# 背景・目的
Direct Connect（以降DXと書きます）について、試す機会もなく知識が乏しいため、簡単に整理したいと思います。

# まとめ
下記に特徴をまとめます。

|特徴 | 説明|
|:-- | :--|
|概要| 標準のイーサネット光ファイバを利用する<BR>ISPを介さずにVPCやパブリックAWSサービスに接続できる|
|コンポーネント|ConnectionsとVirtual interfacesがある|
|Connection|専用接続とホスト型接続がある|
|Virtual interfaces| Public VIFとPrivate VIF、Transit VIFがある|
|LAG|LACP（リンクアグリゲーションコントロールプロトコル）を使用して、複数のConnectionを単一のDXエンドポイントに集約する論理I/F|

# 概要
[What is AWS Direct Connect?](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)を元に整理します。

> AWS Direct Connect は、標準のイーサネット光ファイバー ケーブルを介して、内部ネットワークを AWS Direct Connect の場所にリンクします。ケーブルの一端はルーターに接続され、もう一端は AWS Direct Connect ルーターに接続されます。この接続を使用すると、ネットワーク パス内のインターネット サービス プロバイダーをバイパスして、パブリック AWS サービス (Amazon S3 など) または Amazon VPC への仮想インターフェイスを直接作成できます。 AWS Direct Connect のロケーションは、関連付けられているリージョン内の AWS へのアクセスを提供します。パブリック リージョンまたは AWS GovCloud (米国) で単一の接続を使用して、他のすべてのパブリック リージョンのパブリック AWS サービスにアクセスできます。


- DXは、標準のイーサネット光ファイバーを介して内部NWをDXの場所にリンクする
- ケーブルの一端はルーターに接続され、もう一旦はDXルータに接続される
- ISPを介さずにパブリックAWSサービス、VPCへ仮想インターフェイスを直接作成できる
- DXロケーションは、関連付けられるリージョン内のAWSへのアクセスを提供する


> 次の図は、AWS Direct Connect がネットワークとどのように連携するかの概要を示しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/60bda4f1-b6a8-5abb-5ac3-9662b18af7c5.png)

※出典：[What is AWS Direct Connect?](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)　

## AWS ダイレクトコネクトのコンポーネント

- Connections
    - AWS Direct Connect ロケーションに接続を作成して、オンプレミスから AWS リージョンへのネットワーク接続を確立する
- Virtual interfaces
    - 仮想インターフェイスを作成して、AWS サービスにアクセスする
        - パブリック仮想インターフェイスにより、Amazon S3 などのパブリック サービスへのアクセスが可能
        - プライベート仮想インターフェイスにより、VPC へのアクセスが可能


## AWS ダイレクトコネクト接続
[AWS ダイレクトコネクト接続](https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithConnections.html)を元に整理します。


> AWS Direct Connect を使用すると、ネットワークと AWS Direct Connect ロケーションの 1 つとの間に専用のネットワーク接続を確立できます。
接続には次の 2 種類があります。

> - 専用接続: 単一の顧客に関連付けられた物理イーサネット接続。お客様は、AWS Direct Connect コンソール、CLI、または API を通じて専用接続をリクエストできます。詳細については、「専用接続」を参照してください。

> - ホスト型接続: AWS Direct Connect パートナーが顧客に代わってプロビジョニングする物理イーサネット接続。お客様は、接続をプロビジョニングする AWS Direct Connect パートナー プログラムのパートナーに連絡して、ホスト型接続をリクエストします。詳細については、「ホスト型接続」を参照してください。

- Connectionには2種類ある
    - 専用接続
        - 単一の顧客に関連付けられた物理イーサネット接続
    - ホスト型接続
        - AWS DXパートナーが顧客の代理でプロビジョニングする物理イーサネット接続

### 専用接続とホスト型接続
下記に比較を簡単に整理します。

| 比較項目| 専用接続| ホスト型接続|
|:--|:--|:--|
|AWS ダイレクトコネクトの場所|AWS Direct Connect の場所とデータセンター、オフィス、またはコロケーション環境との間のネットワーク回線の確立<BR>同じ施設内でコロケーション スペースを提供することも可能|同左<BR>AWS Direct Connect コンソールを介してホスト型接続をリクエストはできない|
|ポート速度|1 Gbps、10 Gbps、および 100 Gbps|50 Mbps、100 Mbps、200 Mbps、300 Mbps、400 Mbps、500 Mbps、1 Gbps、2 Gbps、5 Gbps、および 10 Gbps |

## AWS Direct Connect仮想インターフェイス
[AWS Direct Connect仮想インターフェイス](https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html)を元に整理します。

> AWS Direct Connect 接続の使用を開始するには、次の仮想インターフェイス (VIF) のいずれかを作成する必要があります。
> - プライベート仮想インターフェイス: プライベート IP アドレスを使用して Amazon VPC にアクセスするには、プライベート仮想インターフェイスを使用する必要があります。
> - パブリック仮想インターフェイス: パブリック仮想インターフェイスは、パブリック IP アドレスを使用してすべての AWS パブリック サービスにアクセスできます。
> - トランジット仮想インターフェイス: Direct Connect ゲートウェイに関連付けられた 1 つ以上の Amazon VPC トランジット ゲートウェイにアクセスするには、トランジット仮想インターフェイスを使用する必要があります。トランジット仮想インターフェイスは、任意の速度の AWS Direct Connect 専用接続またはホスト接続で使用できます。 Direct Connect ゲートウェイの構成については、「Direct Connect ゲートウェイ」を参照してください。

- VIFは下記のものがある
    - Private VIF
        - プライベートIPを使用してVPCに接続が可能
    - Public VIF
        - パブリックIPを使用してすべてのAWSパブリックサービスにアクセスが可能
    - Transit VIF
        - DXGWに関連付けられた1つ以上のVPC Transit GW（TGW）にアクセスする

### 仮想インターフェイスの前提条件
> 仮想インターフェイスを作成するには、次の情報が必要です。

- Connection
    - 仮想インターフェイスを作成する対象となる AWS Direct Connect 接続またはリンク アグリゲーション グループ (LAG)。
- Virtual interface name	
    - 仮想インターフェースの名前。
- Virtual interface owner
    - 別のアカウントの仮想インターフェイスを作成している場合は、他のアカウントの AWS アカウント ID
- (Private virtual interface only) Connection
    - 同じ AWS リージョン内の VPC に接続するには、VPC の仮想プライベート ゲートウェイが必要
    - BGP セッションの Amazon 側の ASN は、仮想プライベート ゲートウェイから継承される
    - 独自のプライベート ASN を指定できる。それ以外はAmazon はデフォルトの ASN を提供する
- VLAN
    - 接続上でまだ使用されていない一意の仮想ローカル エリア ネットワーク (VLAN) タグ
    - 値は 1 ～ 4094 である必要がある
    - イーサネット 802.1Q 標準に準拠している必要がある
    - このタグは、AWS Direct Connect 接続を通過するトラフィックに必要
- Peer IP addresses
    - IPv4、IPv6、またはそれぞれの 1 つ (デュアルスタック) の BGP ピアリング セッションをサポート
- Address family
    - BGP ピアリング セッションが IPv4 経由か IPv6 経由か
- BGP information	
    - BGP セッションのユーザー側のパブリックまたはプライベートのボーダー ゲートウェイ プロトコル (BGP) 自律システム番号 (ASN)
    - パブリック ASN を使用している場合は、それを所有している必要がある
    - プライベート ASN を使用している場合は、カスタム ASN 値を設定できる
    - 16 ビット ASN の場合、値は 64512 ～ 65534 の範囲内である必要がある
    - 32 ビット ASN の場合、値は 1 ～ 2147483647 の範囲内である必要がある
- (Public virtual interface only) Prefixes you want to advertise	
    - BGP 経由でアドバタイズするパブリック IPv4 ルートまたは IPv6 ルート。
    - BGP を使用して、最大 1,000 個のプレフィックスを少なくとも 1 つアドバタイズする必要がある
- (Private virtual interface only) Jumbo frames	
    - AWS Direct Connect 上のパケットの最大送信単位 (MTU)
    - デフォルトは 1500
    - 仮想インターフェイスの MTU を 9001 (ジャンボ フレーム) に設定すると、基礎となる物理接続がジャンボ フレームをサポートするように更新されていない場合に更新される可能性がある
- (Transit virtual interface only) Jumbo frames	
    - AWS Direct Connect 上のパケットの最大送信単位 (MTU)。
    - デフォルトは 1500 
    - 仮想インターフェイスの MTU を 8500 (ジャンボ フレーム) に設定すると、ジャンボ フレームをサポートするように更新されていない場合、基礎となる物理接続が更新される可能性がある

## リンクアグリゲーショングループ
[リンクアグリゲーショングループ](https://docs.aws.amazon.com/directconnect/latest/UserGuide/lags.html)を元に整理します。

> 複数の接続を使用して、利用可能な帯域幅を増やすことができます。リンクアグリゲーション グループ (LAG) は、リンク アグリゲーション コントロール プロトコル (LACP) を使用して複数の接続を単一の AWS Direct Connect エンドポイントに集約する論理インターフェイスであり、それらを単一の管理された接続として扱うことができます。 LAG 構成はグループ内のすべての接続に適用されるため、LAG は構成を合理化します。

- 複数のConnectionを使用して利用可能な帯域幅を増やすことが可能
- LAGは、LACP（リンクアグリゲーションコントロールプロトコル）を使用して、複数のConnectionを単一のDXエンドポイントに集約する論理I/F

> 次の図では、4 つの接続があり、それぞれの場所に 2 つの接続があります。同じ AWS デバイスおよび同じ場所で終了する接続用の LAG を作成し、構成と管理に 4 つの接続の代わりに 2 つの LAG を使用できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/e39a4a06-230d-fee5-6e97-5956a68789b2.png)

※出典：[リンクアグリゲーショングループ](https://docs.aws.amazon.com/directconnect/latest/UserGuide/lags.html)

## Direct Connect ゲートウェイの使用
[Direct Connect ゲートウェイの使用](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways.html)を元に整理します。

### ダイレクトコネクトゲートウェイ
> AWS Direct Connect ゲートウェイを使用して VPC に接続します。 AWS Direct Connect ゲートウェイを次のゲートウェイのいずれかに関連付けます。
> - 同じリージョンに複数の VPC がある場合のトランジット ゲートウェイ
> - 仮想プライベートゲートウェイ

- DXGWは、下記のGWのどちらかに関連付ける
    - TGW
    - virtual private gateway（VPG）

> Direct Connect ゲートウェイは、グローバルに利用可能なリソースです。 Direct Connect ゲートウェイを使用して、任意のリージョンにグローバルに接続できます。

- DXGWは、グローバルリソース。任意のリージョンに接続可能

#### 仮想プライベートゲートウェイの関連付け
> 次の図では、Direct Connect ゲートウェイにより、米国東部 (バージニア北部) リージョンの AWS Direct Connect 接続を使用して、米国東部 (バージニア北部) と米国西部 (バージニア北部) の両方のアカウント内の VPC にアクセスできるようになります。カリフォルニア) 地域。

> 各 VPC には、仮想プライベート ゲートウェイ関連付けを使用して Direct Connect ゲートウェイに接続する仮想プライベート ゲートウェイがあります。 Direct Connect ゲートウェイは、AWS Direct Connect の場所への接続にプライベート仮想インターフェイスを使用します。場所から顧客のデータセンターまでは AWS Direct Connect 接続があります。

- DXGWにより、各リージョンのDX 接続を使用して両方のアカウントのVPCにアクセスできる
- 各VPCには、関連付けされた、仮想プライベートGWがある
- DXGWは、DXロケーションへの接続にPrivate VIFを使用する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/9852552e-53e4-45a9-2f1f-477d16343ef0.png)
※出典：[ダイレクトコネクトゲートウェイ](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways-intro.html)

#### アカウント間の仮想プライベートゲートウェイの関連付け

> Direct Connect ゲートウェイを所有する Direct Connect ゲートウェイ所有者 (アカウント Z) のシナリオを考えてみましょう。アカウント A とアカウント B は、Direct Connect ゲートウェイを使用したいと考えています。アカウント A とアカウント B はそれぞれ、関連付け提案をアカウント Z に送信します。アカウント Z は関連付け提案を受け入れ、オプションでアカウント A の仮想プライベート ゲートウェイまたはアカウント B の仮想プライベート ゲートウェイから許可されるプレフィックスを更新できます。アカウント Z が提案を受け入れると、アカウント A とアカウント B は、仮想プライベート ゲートウェイから Direct Connect ゲートウェイにトラフィックをルーティングできるようになります。アカウント Z はゲートウェイを所有しているため、アカウント Z は顧客へのルーティングも所有します。


- ZがDXGWを所有しており、AとBはそれを利用したい
- 関連付け提案を送り、受け入れることで利用できる


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/4eecbdb5-cbdc-44e5-8e00-c6918826e497.png)

※出典：[ダイレクトコネクトゲートウェイ](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways-intro.html)

#### トランジットゲートウェイの関連付け
> 次の図は、Direct Connect ゲートウェイを使用して、すべての VPC が使用できる Direct Connect 接続への単一の接続を作成できる方法を示しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/60ad76e1-37a9-650d-ec84-968982081e01.png)

> ソリューションには次のコンポーネントが含まれます。
> - VPC アタッチメントを持つトランジット ゲートウェイ。
> - ダイレクトコネクトゲートウェイ。
> - Direct Connect ゲートウェイとトランジット ゲートウェイ間の関連付け。
> - Direct Connect ゲートウェイに接続されるトランジット仮想インターフェイス。

- TGWによりVPCにアタッチできる
- TGWとDXGWの接続には、TGW Associationを行う。またTransit VIFが使われる



> この構成には次の利点があります。あなたはできる：
> - 同じリージョン内の複数の VPC または VPN に対する単一の接続を管理します。
> - オンプレミスから AWS へ、および AWS からオンプレミスへプレフィックスをアドバタイズします。
> トランジットゲートウェイの設定の詳細については、『Amazon VPC トランジットゲートウェイガイド』の「トランジットゲートウェイの操作」を参照してください。

#### アカウント間のトランジットゲートウェイの関連付け

> Direct Connect ゲートウェイを所有する Direct Connect ゲートウェイ所有者 (アカウント Z) のシナリオを考えてみましょう。アカウント A はトランジット ゲートウェイを所有しており、Direct Connect ゲートウェイを使用したいと考えています。アカウント Z は関連付けの提案を受け入れ、オプションでアカウント A のトランジット ゲートウェイから許可されるプレフィックスを更新できます。アカウント Z が提案を受け入れると、トランジット ゲートウェイに接続された VPC は、トランジット ゲートウェイから Direct Connect ゲートウェイにトラフィックをルーティングできるようになります。アカウント Z はゲートウェイを所有しているため、アカウント Z は顧客へのルーティングも所有します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/945e8efc-5533-6511-4935-272d76f9fe69.png)

※出典：[ダイレクトコネクトゲートウェイ](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways-intro.html)


# 考察
今回、ドキュメントを表面的にまとめてみましたが、実際に動かしていないので、イメージを持ちづらいのが感想です。
どこかで触れる機会があると良いのですが、今後も気づいたことを机上で整理することになりそうです。


# 参考

https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html

https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithConnections.html

https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html

https://docs.aws.amazon.com/directconnect/latest/UserGuide/lags.html