一般的に、ロード バランサ (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 ヘッダー(配信ヘッダー)でクライアントからの受信パケットをカプセル化します。

DSR でサポートされる機能の仕様は次のとおりです。

機能

サポート

カプセル化

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