NSX Advanced Load Balancer 支持通过 UDP 和 TCP 协议的 DNS 查询。在 RFC 7766 中描述了通过 TCP 的 DNS 实施要求。

每个 TCP 连接一个 DNS 查询

对于每个 TCP 连接,NSX Advanced Load Balancer 仅处理一个 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 查询管道以外,就 DNS 行为而言,通过 TCP 的 DNS 查询与通过 UDP 的 DNS 查询的处理方式是相同的。请注意,通过使用 TCP,基于 TCP 的 DNS 不限于 512 字节大小,这与基于 UDP 的 DNS 不同。