一般的に、ロード バランサ (NSX Advanced Load Balancer) は受信要求と送信要求のアドレス変換を実行します。戻りパケットはロード バランサを通過し、ロード バランサの構成に従って宛先アドレスと送信元アドレスが変更されます。
ダイレクト サーバ リターン (DSR) が有効になっている場合のパケット フローは次のとおりです。
ロード バランサは、受信要求のアドレス変換を実行しません。
トラフィックは、送信元アドレスと宛先アドレスを変更せずにプール メンバーに渡されます。
パケットは、仮想 IP アドレスを宛先アドレスとしてサーバに到達します。
サーバは、仮想 IP アドレスを送信元アドレスとして応答します。クライアントへのリターン パスはロード バランサを通過しないため、ダイレクト サーバ リターンという用語が使用されます。
この機能は、IPv4 でのみサポートされます。
使用事例
DSR はしばしばオーディオおよびビデオ アプリケーションに適用されます。それは、これらのアプリケーションが遅延の影響を受けやすいからです。
サポートされるモード
DSR でサポートされているモードは次のとおりです。
DSR タイプ |
カプセル化 |
仕組み |
---|---|---|
レイヤー 2 DSR |
MAC ベースの変換 |
NSX Advanced Load Balancer Controller は、送信元の MAC アドレスをサービス エンジン インターフェイスの MAC アドレスで書き換え、宛先の MAC アドレスをサーバの MAC アドレスで書き換えます。 |
レイヤー 3 DSR |
IP-in-IP |
IP-in-IP トンネルは、NSX Advanced Load Balancer からプール メンバーの間に作成され、ルーターのホップ数だけ離れています。 クライアントからの受信パケットは IP-in-IP にカプセル化され、送信元はサービス エンジンのインターフェイス IP、宛先はバックエンド サーバの IP アドレスになります。 |
レイヤー 3 DSR |
GRE |
Generic Routing Encapsulation (GRE) トンネルは、レイヤー 3 DSR でサポートされています。この場合、まず GRE ヘッダーで、その後外部 IP ヘッダー(配信ヘッダー)でクライアントからの受信パケットをカプセル化します。 |
機能 |
サポート |
---|---|
カプセル化 |
IP-in-IP、MAC ベースの変換 |
エコシステム |
VMware 書き込み、VMware アクセス権なし、Linux サーバ クラウド |
データプレーン ドライバ |
Linux サーバ クラウドの DPDK および PCAP サポート |
BGP |
フロントエンドに BGP を使用した VIP の配置 |
ロード バランシング アルゴリズム |
L2 および L3 DSR ではコンシステント ハッシュのみがサポートされます |
TCP UDP |
L2 および L3 DSR での TCP 高速パスと UDP 高速パスの両方のサポート |
高可用性 (SE) |
N+M、アクティブ/アクティブ、アクティブ/スタンバイ |
レイヤー 2 DSR
受信パケットの宛先 MAC アドレスがサーバの MAC アドレスに変更されます。
サポートされているモード:TCP および UDP 経由の DSR。
TCP レイヤー 2 DSR の健全性監視もサポートされています。
次の図は、レイヤー 2 DSR のパケット フロー図を示しています。
- パケット フロー
-
クライアントが、ロード バランサによって提供される仮想 IP アドレス (VIP) に要求を送信します(手順 1)。
LB が要求の転送先の実際のサーバを決定します。
LB が MAC アドレス変換を実行します(手順 2)。
サーバが LB をバイパスしてクライアントに直接応答します(手順 3)。
- レイヤー 2 - DSR
-
サーバは、ロード バランサに直接接続されたネットワーク上にある必要があります。
LB とサーバは同じ L2 ネットワーク セグメント上に配置する必要があります。
サーバのループバック IP アドレスは VIP IP 用に構成する必要があります。
レイヤー 2 DSR のネットワーク プロファイルの構成
NSX Advanced Load Balancer CLI にログインし、configure networkprofile <profile name> コマンドを使用して TCP 高速パス プロファイル モードに切り替えます。レイヤー 2 DSR で、DSR タイプの値として dsr_type_l2
を入力します。
[admin:10-X-X-X]: > configure networkprofile <profile name> [admin:10-X-X-X]: networkprofile> profile [admin:10-X-X-X]: networkprofile profile> tcp_fast_path_profile [admin:10-X-X-X]: networkprofile profile:tcp_fast_path_profile>dsr_profile dsr_type dsr_type_l2 [admin:10-X-X-X]: networkprofile profile:dsr_profile> save [admin:10-X-X-X]: networkprofile> save
ネットワーク プロファイルが作成されたら、上記で作成した DSR ネットワーク プロファイルを使用して L4 アプリケーション仮想サービスを作成し、DSR 対応サーバを仮想サービスに関連付けられたプールに接続します。
サーバの構成
ifconfig lo:0 <VIP ip> netmask 255.255.255.255 -arp up echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 >/proc/sys/net/ipv4/conf/<Intraface of pool server ip configured>/rp_filter sysctl -w net.ipv4.ip_forward=1