NSX Advanced Load Balancer は、UDP および TCP プロトコルを経由した DNS クエリをサポートしています。TCP 経由の DNS の実装要件は、RFC 7766 に記載されています。
TCP 接続ごとに 1 つの DNS クエリ
NSX Advanced Load Balancer は、TCP 接続ごとに 1 つの DNS クエリのみを処理します。RFC 7766 で説明されているように、DNS クエリのパイプライン処理はサポートされていません。同じ TCP 接続を経由して複数の DNS クエリが送信された場合、NSX Advanced Load Balancer は最初の DNS クエリに対してのみ応答を生成し、残りのクエリを無視します。DNS クエリがアップストリーム DNS サーバへのパススルーを目的としたものである場合、TCP 接続の最初の DNS クエリのみがアップストリーム サーバに渡され、残りのクエリは無視されます。
NSX Advanced Load Balancer が開始した TCP 接続の終了
NSX Advanced Load Balancer が TCP 接続の DNS クエリに応答すると、クライアントへの FIN を生成して TCP 接続を終了します。これは、クライアントがクライアントによって送信された可能性のある複数のクエリに対する応答を待機してタイムアウトするのを待つのではなく、メモリ リソースをすぐに解放するために行われます。
複数のクエリがアップストリーム DNS サーバにパススルーされた場合、クライアントと NSX Advanced Load Balancer 間の TCP 接続は通常の接続終了プロセスに従います。
DNS クエリのパイプライン処理を除き、TCP 経由の DNS クエリは、DNS の動作に関する限り、UDP 経由の DNS と同じように扱われます。TCP を使用すると、UDP 経由の DNS の場合のように TCP 経由の DNS のサイズが 512 バイトに制限されません。