はじめに
本投稿は vExperts Advent Calendar 2023 の13日目として作成しました。
この投稿では、2023年12月時点で広く使われている VMware Cloud on AWS と Amazon VPC の接続パターン 3 つを取り上げ、それぞれのメリットの比較を行います。また、それぞれの接続パターンによって ネットワークレイテンシーがどう変わるのか、比較をした情報があまりない為、実環境で計測し、どの程度差が出てくるのか見てみたいと思います!
本稿における計測結果及び掲載内容はあくまで私自身の見解・確認結果であり、必ずしも私の所属団体・企業における立場、戦略、意見を代表するものではありませんのでご了承下さい。
VMware Cloud on AWS と Amazon VPC の接続パターン
本投稿執筆時点では、VMware Cloud on AWS の Software-Defined Data Center (SDDC) と Amazon VPC の接続は、広く以下の 3 つのパターンが利用されています。
- Elastic Network Interface (ENI) 経由での接続
- VTGW 経由での接続
- VTGW - AWS Transit Gateway (TGW) 経由での接続
※ VTGW: VMware Transit Connect サービスにおける AWS Transit Gateway 機能の総称
(その他 VTGW を使わずに TGW に直接 VPN アタッチメントで接続するパターンもありますが、あまり利用されていない為、今回は割愛します)
AWS から VMware Cloud on AWS の Networking Reference Architecture が公開されています。要件に応じた接続パターンを検討する上で参考になります。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F441095%2F58e4446a-12db-ea6d-b269-ae09226d8877.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=e16e919c561e8500dabf554e8249c2d0)
図は VMware Cloud on AWS – Networking Reference Architecture からの抜粋
今回の構成図
実際に SDDC を作成し、VPC と接続をしてみます。
このように 1つの SDDC から ENI 経由での接続、 VTGW 経由での接続、VTGW - TGW 経由での接続の組み合わせが可能です。
この構成図では 一例として SDDC 上の仮想マシンと Amazon EC2 との疎通を表していますが、もちろん EC2 以外のサービスとも連携が可能です。
それぞれの接続パターンの詳細な構成ステップ
1. ENI 経由での接続
ENI 経由での接続は、SDDC 作成時に自動的に構成がされます。
詳細について以前の投稿でまとめておりますので、そちらも是非合わせて参照下さい。
2. VTGW 経由での接続
VTGW 経由で接続をするには、まず SDDC グループというものを作成します。
SDDC グループにメンバーとなる SDDC を追加する過程で、VTGW が作成され、その SDDC と VTGW の接続が行われます。
SDDC グループの作成手順については、既に DevelopersIO で記事がある為、そちらを参照下さい。
本投稿では、SDDC グループを作成した後の Amazon VPC との接続の部分を紹介します。
-
VPC を所有している AWS アカウントの AWS マネジメントコンソールにて、 Resource Access Manager -> 自分と共有 -> リソースの共有 の部分に、"保留中" のステータスのリソースが表示される為、その名前をクリックします。
-
続いて、VPC -> Transit Gateway -> Transit Gateway アタッチメントから、[Transit Gateway アタッチメントを作成] をクリックします。
-
[Transit Gateway アタッチメントを作成] 画面が表示されます。
- 名前タグ: 任意の名前を指定します
- Transit Gateway ID: "TGW for region xx-xxxxxx-xx"という名前の Transit Gateway が表示されますのでそれを指定します。
- VPC ID: VTGW に接続をしたい VPC を指定します。
- サブネット ID: 各 AZ に複数サブネットがある場合は、サブネットを指定します。
- 最後に「Transit Gateway アタッチメントを作成」ボタンをクリックします。
作成したアタッチメントが "Pending Acceptance"の状態となる為、次に VMware Cloud サービスポータル側で受け入れ処理を行います。
-
SDDC グループの管理画面に戻ります。[外部 VPC]タブにて、AWS アカウント ID の横にある ">>" をクリックします。
承認保留中のリソースが表示されたら、チェックボックスにチェックを入れて、「承諾」ボタンをクリックします。アタッチメントの作成をしてから、この表示が表示されるまで10分程度かかります。
-
ステータスが [利用可能] になると [ルートの追加] がクリックできるようになりますので、クリックをし、接続する VPC の CIDR を入力し、[終了] をクリックします。
これで VMware Cloud on AWS 側の設定は完了です。
-
最後に、AWS マネジメントコンソールにて VPC -> 仮想プライベートクラウド -> ルートテーブル から Transit Gateway アタッチメントを作成したサブネットに関連づけられたルートテーブルに対して、SDDC のワークロード用のセグメント(今回でいうと 192.168.2.0/24)への通信を Transit Gateway アタッチメント経由で疎通させるようルートの追加を行います。
以前の投稿で詳細ステップを載せていますので、そちらを参照下さい。
以上で VTGW 経由での接続構成は完了です!
3. VTGW - TGW 経由での接続
VTGW 経由での接続と同じく、まず SDDC グループの作成が必要です。
こちらでは SDDC グループを作成した後の手順をAmazon VPC との接続の部分を紹介します。
-
まず TGW の作成を行います。既に AWS を利用しており、既存の TGW がある場合はそれを利用しても問題ありません。
AWS マネジメントコンソールにて、VPC -> Transit Gateway -> Transit Gateway から、[Transit Gateway を作成] をクリックし、Transit Gateway を作成します。
-
VMware Cloud サービスコンソールに移動し、SDDC グループから、[外部 TGW] タブを開き、[TGW の追加]ボタンをクリックします。
-
接続する TGW の情報を入力します。
- AWS アカウント ID: 一つ前のステップで TGW を作成したアカウント ID を入力します。
- TGW ID: 一つ前のステップで作成した TGW の ID を入力します。
- TGW の場所: 一つ前のステップで TGW を作成したリージョンを指定します。通常は、SDDC と同じリージョンになるかと思います。(この例では東京リージョンに SDDC を作成しており、TGW も 東京リージョンで作成しています)
- ルート: 接続する VPC の CIDR を入力します。
- 最後に [追加] ボタンをクリックします。
-
TGW を作成した AWS アカウントの AWS マネジメントコンソールにて、VPC -> Transit Gateway -> Transit Gateway アタッチメント を開き、"Pending Acceptance" のステータスのアタッチメントが表示される為、対象を選択し、[アクション] - [Transit Gateway アタッチメントを承諾] をクリックし、確認画面で [承諾] をクリックします。
-
続いて、同じ Transit Gateway アタッチメントの画面から、[Transit Gateway アタッチメントを作成] をクリックします。
-
[Transit Gateway アタッチメントを作成] 画面が表示されます。
- 名前タグ: 任意の名前を指定します
- Transit Gateway ID: "TGW for region xx-xxxxxx-xx"という名前の Transit Gateway が表示されますのでそれを指定します。
- VPC ID: VTGW に接続をしたい VPC を指定します。
- サブネット ID: 各 AZ に複数サブネットがある場合は、サブネットを指定します。
- 最後に「Transit Gateway アタッチメントを作成」ボタンをクリックします。
-
続いて、VPC -> Transit Gateway -> Transit Gateway ルートテーブル から、対象の Transit Gateway ルートテーブルを選択し、[ルート] タブから [静的ルートを作成] をクリックします。
-
CIDR として SDDC のワークロード用のセグメント(今回でいうと 192.168.2.0/24)を指定し、アタッチメントとして Peering のアタッチメントを指定し、[静的ルートを作成] をクリックします。
-
最後に、AWS マネジメントコンソールにて VPC -> 仮想プライベートクラウド -> ルートテーブル から Transit Gateway アタッチメントを作成したサブネットに関連づけられたルートテーブルに対して、SDDC のワークロード用のセグメントへの通信を Transit Gateway アタッチメント経由で疎通させるようルートの追加を行います。
VTGW 経由での接続でも記載した通り、以前の投稿で詳細ステップを載せていますので、そちらを参照下さい。
以上で VTGW -TGW 経由での接続構成は完了です!
おまけ:トラブルシューティング
うまく疎通が出来ない場合、トレースフローを使う事により切り分けが簡単になります。トレースフローの使用方法については以下の投稿を参照下さい。
また、VPC Reachability Analyzer も非常に有用です。トレースフローと併用するとより切り分けが楽になります。
レイテンシーの計測
計測方法
今回は SDDC 上の Linux 仮想マシンから それぞれの VPC の EC2 インスタンスに対して ping と netperf を実施します。
- 送信元の仮想マシンは全テストで同じ仮想マシンを利用します。
- EC2 インスタンスのサイズは各 VPC とも同じサイズを利用します。
- netperf は TCP Request/Response (TCP_RR) テストを利用します。
- ping と netperf とも 10 ミリ秒間隔で実行し、平均値を結果として利用します。ping は 1000 回実施の平均値とします。
計測結果
ENI 経由での接続 | VTGW 経由での接続 | VTGW - TGW 経由での接続 | |
---|---|---|---|
ping | 0.354 ms | 0.495 ms | 0.577 ms |
netperf (TCP_RR) | 0.204 ms | 0.291 ms | 0.455 ms |
通信料金
ENI 経由での接続の場合の料金
ENI 経由での接続は、同じ AZ 内の通信に関してはデータ転送費用が発生しません。この為最も安価な接続方法となります。
VTGW 経由での接続の場合の料金
VTGW は VMware マネージドの AWS Transit Gateway (TGW) です。
この為、料金としては、TGW と全く同じ料金が発生します。VMware Cloud on AWS の料金の一部として請求される形となります。
本稿執筆(2023年12月)時点での東京リージョンでの料金は以下の通りです。
- AWS Transit Gateway のアタッチメントごとの料金 (USD) 0.07USD
- 処理データ 1 GB あたりの料金 (USD) 0.02USD
VTGW - TGW 経由での接続の場合の料金
VTGW で述べた料金に加えて、ピアリングの為のアタッチメントの料金がかかります。(VPC がアタッチされる時と同じ料金です)
ピアリングアタッチメントから VTGW / TGW に送信されるデータにはデータ処理料金は発生しません。
VTGW 側、TGW 側双方でアタッチメントの料金がかかりますが、TGW の料金の大多数は多くのケースで処理データ料金が占める為、VTGW 経由でのパターンと大きな料金の差はないでしょう。
それぞれの接続方法のメリットと考慮点
これまでの内容を元にメリットと考慮点を、他の接続方法との差を中心にまとめてみました。
ENI 経由での接続 | VTGW 経由での接続 | VTGW - TGW 経由での接続 | |
---|---|---|---|
メリット | 最も低遅延で接続が可能 同じ AZ 間の通信の場合、通信料金がかからない。 SDDC デプロイ時に自動でデプロイされる為、シンプルに利用が可能 ネットワークトラフィックの大量に発生するサービスとの接続(例:ストレージサービス)に最適 |
SDDC から複数の VPC に接続が可能 ENI に次いで低遅延で接続が可能 |
大規模な環境における複雑な通信要件を満たす接続構成 SDDC から複数の VPC に接続できるだけでなく、VPC 同士の通信を含め幅広くカバー |
考慮点 | ENI で接続できる VPC は SDDC あたり 1つのみの為、複数の VPC との接続は他の接続パターンと組み合わせる必要がある。 | VTGW の費用がかかる。 VTGW では送信元、送信先のいずれかに SDDC を含んだ通信のみ許可する為、VPC 同士の通信などは Drop されてしまう。 |
VTGW / TGW の費用がかかる。(ピアリングアタッチメントの料金分のみ VTGW 経由での接続よりかかる) 他の2つの接続方法と比較すると遅延がやや大きくなる |
まとめ
この投稿では、VMware Cloud on AWS と Amazon VPC の接続として広く利用されている 3 つのパターンについて以下の側面で記載・考察を行いました。
- それぞれの接続パターンの詳細な構成ステップ
- レイテンシーの比較
- 接続料金
- それぞれのメリットと考慮点
この接続方法が正解!というものではなく、要件に応じて使い分けを行います。
VMware Cloud on AWS は今回の構成図で記載した通り、一つの SDDC から複数の接続パターンを組み合わせることができます。
ですので、例えば大規模環境において、複数の VPC との接続を VPC 同士の接続も加味した上で実現するために、VTGW - TGW 経由での接続を行いつつ、トラフィックが大量に発生するストレージサービスとの接続のみ ENI 経由での接続を行う、といった組み合わせが可能です。