AWS Gateway Load Balancerについて整理してみた

# 背景・目的
AWSのNWを調べていて、Gateway Loadbalancerというキーワードを見つけたので整理します。

# まとめ
下記の特徴を整理します。

| 特徴 | 説明 |
|:---|:---|
|そもそもELBとは？|・ELBは、受信したトラフィックを複数のAZのターゲットに自動的に分散させる<BR><BR>・登録させているターゲットの状態をモニタリングし、正常なターゲットにトラフィックをルーティングする<BR><BR>・受信トラフィックの時間やワークロードに応じてロードバランサーをスケーリングする|
|Gateway Load Balancer(GWLB) の概要|・FW、IDS、ディープバケットインスペクションなど仮想アプライアンスをデプロイ、スケーリングや管理ができる<BR><BR>・透過的なNWGW（すべてのトラフィックに対して単一の入口と出口）を組み合わせて、トラフィックを分散しながら、仮想アプライアンスを需要に応じてスケーリングする|
| GWLBの特徴|・GWLB、OSIのNWをレイヤー（3層）で機能する<BR><BR>・すべてのポートですべてのIPパケットをリッスンし、リスナールールで指定されたターゲットグループにトラフィックを転送する<BR><BR>下記の場合に、特定のターゲットアプライアンスへのフローのスティッキ状態を維持する<BR>・TCP/UDPフローの場合、5タプル<BR>・非TCP/UDPフローの場合、3タプル<BR><BR>・GLBとその登録された仮想アプライアンスインスタンスは、ポート6081でGENEVEプロトコルを使用してアプリケーショントラフィックを交換する|
|GWLBの通信|・GWLBは、GWLBのエンドポイントを使用して、VPCを超えてトラフィックを安全に交換する<BR><BR>・GWLBエンドポイントは、サービスプロバイダーVPC内の仮想アプライアンスとサービスコンシューマVPC内のアプリケーションサーバ間のプライベート接続を提供するVPCeである<BR><BR>・GWLBは仮想アプライアンスと同じVPCにデプロイする<BR><BR>・仮想アプライアンスは、GWLBターゲットグループに登録する|
|5タプル、3タプルとは？|NWのトラフィックを分散させる際に、使用するタプルとのこと|


# 概要
[Gateway Load Balancer とは？](https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/gateway/introduction.html)を元に整理します。

> Elastic Load Balancing は、受信したトラフィックを複数のアベイラビリティーゾーンの複数のターゲットに自動的に分散させます。登録されているターゲットの状態をモニタリングし、正常なターゲットにのみトラフィックをルーティングします。Elastic Load Balancing は、受信トラフィックの時間的な変化に応じて、ロードバランサーをスケーリングします。また、大半のワークロードに合わせて自動的にスケーリングできます。

- ELBは、受信したトラフィックを複数のAZのターゲットに自動的に分散させる
- 登録させているターゲットの状態をモニタリングし、正常なターゲットにトラフィックをルーティングする
- 受信トラフィックの時間やワークロードに応じてロードバランサーをスケーリングする


>Elastic Load Balancing は、Application Load Balancer、Network Load Balancer、Gateway Load Balancer、Classic Load Balancer といったロードバランサーをサポートします。ニーズに最適なタイプのロードバランサーを選択できます。このガイドでは、Gateway Load Balancer について説明します。その他のロードバランサーの詳細については、「Application Load Balancer ユーザーガイド」、「Network Load Balancer ユーザーガイド」、および「Classic Load Balancer ユーザーガイド」を参照してください。

- ELBシリーズ
    - ALB(Application Load Balancer)
    - NLB(Network Load Balancer)
    - GLB(Global Load Balancer) ※今回の対象はこれ
    - CLB（CLassic Load Balancer）

## Gateway Load Balancer の概要
> ゲートウェイロードバランサ― を使用すると、ファイアウォール、侵入検知および防止システム、ディープパケットインスペクションシステムなどの仮想アプライアンスをデプロイ、スケーリング、管理できます。透過的なネットワークゲートウェイ（つまり、すべてのトラフィックに対して単一の入口と出口ポイント）を組み合わせて、トラフィックを分散しながら、仮想アプライアンスを需要に応じてスケーリングします。

- FW、IDS、ディープバケットインスペクションなど仮想アプライアンスをデプロイ、スケーリングや管理ができる
- 透過的なNWGW（すべてのトラフィックに対して単一の入口と出口）を組み合わせて、トラフィックを分散しながら、仮想アプライアンスを需要に応じてスケーリングする

> ゲートウェイロードバランサーは、開放型システム間相互接続 (OSI) モデルの第 3 層（ネットワークレイヤー）で機能します。すべてのポートですべての IP パケットをリッスンし、リスナールールで指定されたターゲットグループにトラフィックを転送します。5 タプル（TCP/UDP フローの場合）または 3 タプル（非 TCP/UDP フローの場合）を使用して、特定のターゲットアプライアンスへのフローのスティッキ状態を維持します。Gateway Load Balancer とその登録された仮想アプライアンスインスタンスは、ポート 6081 で GENEVE プロトコルを使用してアプリケーショントラフィックを交換します。

- GWLB、OSIのNWをレイヤー（3層）で機能する
- すべてのポートですべてのIPパケットをリッスンし、リスナールールで指定されたターゲットグループにトラフィックを転送する
- 下記の場合に、特定のターゲットアプライアンスへのフローのスティッキ状態を維持する
    - TCP/UDPフローの場合、5タプル
    - 非TCP/UDPフローの場合、3タプル
- GLBとその登録された仮想アプライアンスインスタンスは、ポート6081でGENEVEプロトコルを使用してアプリケーショントラフィックを交換する

> ゲートウェイロードバランサーは、ゲートウェイロードバランサ―のエンドポイントを使用して、VPC 境界を越えてトラフィックを安全に交換します。ゲートウェイロードバランサーエンドポイントは、サービスプロバイダー VPC 内の仮想アプライアンスとサービスコンシューマー VPC 内のアプリケーションサーバー間のプライベート接続を提供する VPC エンドポイントです。ゲートウェイLoad Balancer は、仮想アプライアンスと同じ VPC にデプロイします。仮想アプライアンスは、ゲートウェイ Load Balancer ターゲットグループに登録します。

- GWLBは、GWLBのエンドポイントを使用して、VPCを超えてトラフィックを安全に交換する
- GWLBエンドポイントは、サービスプロバイダーVPC内の仮想アプライアンスとサービスコンシューマVPC内のアプリケーションサーバ間のプライベート接続を提供するVPCeである
- GWLBは仮想アプライアンスと同じVPCにデプロイする
- 仮想アプライアンスは、GWLBターゲットグループに登録する

> Gateway Load Balancer エンドポイントとの間で送受信されるトラフィックは、ルートテーブルを使用して設定されます。トラフィックは、サービスコンシューマー VPC から Gateway Load Balancer エンドポイントを経由してサービスプロバイダー VPC 内の Gateway Load Balancer に流れ、サービスコンシューマー VPC に戻ります。Gateway Load Balancer エンドポイントとアプリケーションサーバーは、別のサブネットに作成する必要があります。これにより、Gateway Load Balancer エンドポイントをアプリケーションサブネットのルートテーブルのネクストホップとして構成できます。

- GLBエンドポイントとの送受信されるトラフィックは、ルートテーブルを使用して設定される
- トラフィックは、サービスコンシューマーVPCからGLBエンドポイントを経由してサービスプロバイダーVPC内のGLBに流れ、サービスコンシューマVPCに戻る
- GLB エンドポイントとアプリケーションサーバは、別のサブネットに作成する必要がある。これにより、GLBエンドポイントをアプリケーションサブネットのルートのNextホップとして構成できる

## アプライアンスベンダー
> アプライアンスベンダーのソフトウェアを選択して適格化する必要があります。ロードバランサーからのトラフィックを検査または変更するには、アプライアンスソフトウェアを信頼する必要があります。Elastic Load Balancing パートナーとして一覧されているアプライアンスベンダーは、アプライアンスソフトウェアを AWS と統合し、認定を受けています。このリストのベンダーのアプライアンスソフトウェアには、より高いレベルの信頼を置くことができます。ただし、AWS は、これらのベンダーのソフトウェアのセキュリティまたは信頼性を保証するものではありません。

- アプライアンスベンダーのソフトウェアを選択肢、適格化する必要がある
- LBからのトラフィックを検査また、変更するにはアプライアンスソフトウェアを信頼する必要がある
- ELBパートナーとして一覧化されているアプライアンスベンダーは、アプライアンスソフトウェアをAWSのと統合し、認定を受けている
- このリストのベンダーのアプライアンスソフトウェアには、より高いレベルの信頼を置くことができる
- ただし、AWSがベンダーのソフトウェアのセキュリティや信頼性を保証するものではない

## 構成
> Gateway Load Balancer エンドポイントは、サービスプロバイダー VPC 内の仮想アプライアンスとサービスコンシューマー VPC 内のアプリケーションサーバー間のプライベート接続を提供する VPC エンドポイントです。Gateway Load Balancer は、仮想アプライアンスと同じ VPC にデプロイされます。これらのアプライアンスは、Gateway Load Balancer のターゲットグループに登録されます。

> アプリケーションサーバーはサービスコンシューマー VPC の 1 つのサブネット (宛先サブネット) で実行されますが、Gateway Load Balancer エンドポイントは同じ VPC の別のサブネットにあります。インターネットゲートウェイを経由してサービスコンシューマー VPC に入るすべてのトラフィックは、まず、Gateway Load Balancer エンドポイントにルーティングされ、その後、送信先サブネットにルーティングされます。

> 同様に、アプリケーションサーバー (送信先サブネット) から出るすべてのトラフィックは、Gateway Load Balancer エンドポイントにルーティングされてから、インターネットにルーティングされます。次のネットワークの図は、Gateway Load Balancer エンドポイントがエンドポイントサービスへのアクセスにどのように使用されるのかを視覚的に示したものです。

- GWLBエンドポイントは、仮想アプライアンスとサービスコンシューマVPC内サーバ間のプライベート通信を提供するVPCエンドポイント
- GWLBは、仮想アプライアンスと同様のVPCにデプロイされる
- インバウンド
    - IGWから入ってきたトラフィックは、GWLBにルーティングされ、その後送信先サブネットにルーティングされる
- アウトバウンド
    - GWLBエンドポイントにルーティングされてから、インターネットにルーティングされる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/b4789a11-092f-1c6e-65b0-0116977921bb.png)

出典：[Gateway Load Balancer の使用開始方法](https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/gateway/getting-started.html)


## 用語
### 5タプル、3タプルとは？
- NWのトラフィックを分散させる際に、使用するタプルとのこと
- 5タプル
    - ソースIP
    - ポート
    - 宛先IP
    - ポート
    - プロトコル
- 3　タプル
    - ソースIP
    - 宛先IP
    - プロトコル


### GENEVEプロトコル
https://www.juniper.net/documentation/jp/ja/software/junos/security-policies/topics/topic-map/vsrx-aws-gwlb-and-geneve-support.html


> Generic Network Virtualization Encapsulation(Geneve)は、インターネット技術タスクフォース(IETF)が開発したネットワークカプセル化プロトコルです。


- ネットワークカプセル化のプロトコル

> Geneveプロトコルは、データセンター環境におけるネットワーク仮想化のユースケースをサポートします。このような環境では、Geneveトンネルは、クラウド導入(Amazon Web Services(AWS)やVMwareの導入など)で実行される仮想ネットワーク機能(VNF)用のバックプレーンとして機能します。

- DC環境におけるNW仮想化のユースケースをサポート
- クラウドで実行される仮想ネットワーク機能のバックプレーンとして機能する

# 考察
今回、Gateway Load Balancerについて整理してみました。概念は理解できましたが、ターゲットとなるサービスにはアプライアンス製品を利用するため、実際に利用するまで至りませんでした。今後、使う際にはあらためて記事にしたいと思います。

# 参考
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/gateway/introduction.html

https://aws.amazon.com/jp/blogs/news/integrate-your-custom-logic-or-appliance-with-aws-gateway-load-balancer/

https://docs.netscaler.com/ja-jp/citrix-adc/current-release/networking/ip-routing/route-selection-based-on-five-tuples.html

https://learn.microsoft.com/ja-jp/azure/load-balancer/distribution-mode-concepts

https://docs.oracle.com/ja-jp/iaas/Content/NetworkLoadBalancer/BackendSets/update-backend-set.htm

https://www.redhat.com/ja/blog/what-geneve

https://docs.netscaler.com/ja-jp/citrix-adc/current-release/networking/geneve-tunnels.html

https://www.juniper.net/documentation/jp/ja/software/junos/security-policies/topics/topic-map/vsrx-aws-gwlb-and-geneve-support.html

https://datatracker.ietf.org/doc/html/rfc8926

https://aws.amazon.com/jp/blogs/news/best-practice-for-deploying-gateway-load-balancer/

https://aws.amazon.com/jp/blogs/news/design-your-firewall-deployment-for-internet-ingress-traffic-flows/

https://aws.amazon.com/jp/blogs/news/webinar-bb-gatewayloadbalancer-2021/

https://www.slideshare.net/slideshow/20210331-aws-black-belt-online-seminar-gateway-load-balancer/245442630


https://aws.amazon.com/jp/elasticloadbalancing/partners/