据我所知,通过 WiFi 进行 UDP 多播/广播不会产生预期的速度想法。WiFi 上的 UDP 单播怎么样?有人能确认后者的速度是否正常吗?
答案1
任何通过 Wi-Fi 进行的多播/广播都会很慢,因为 Wi-Fi 要求以一种“最低公分母”传输速度发送多播和广播。
UDP 与此无关。提到 UDP 的唯一原因是因为 UDP 能够进行多播或广播。相比之下,TCP 严格来说是点对点的;它只能进行单播。所以这不是 UDP 与 TCP 的问题,而是多播/广播与单播的问题。
任何类型的单播(TCP、UDP 或其他)通过 Wi-Fi 传输的速率都可能比任何类型的多播或广播高得多。
良好的 802.11n 或 802.11ac 实现可以实现 PHY 速率的 70% 甚至 80% 的单播 TCP 吞吐量。当然,PHY 速率可能会有很大差异,具体取决于您的 AP 和客户端支持的 802.11n 或 802.11ac 类型、信道的清洁程度、所涉及的距离等。
802.11g 及更早版本不支持帧聚合,因此效率不高。它们的效率通常略低于 50%,如果它们支持供应商专有的帧伪聚合形式(“帧突发”),则效率可能略高于 50%。
在所有情况下,UDP 单播的效率都比 TCP 高几个百分点,因为 TCP 的设计目标是尽可能快地传输而不会造成拥塞,而基于 UDP 的协议可以尝试尽可能快地传输,即使它们会使拥塞变得更糟。因此,即使是实施良好、经过精细调整的 TCP 堆栈也可能偶尔在拥塞和数据包丢失的情况下退缩,而 UDP 则会持续爆发。
如果您拥有高质量的 802.11n 或 802.11ac 设备,但效率未达到 70-80%(即,TCP-over-IPv4 吞吐量为 802.11 PHY 速率的 70-80%),则您的 TCP 堆栈可能存在问题,或者需要进行一些 TCP 调整。首先要考虑的是 TCP 窗口大小调整。请考虑设置 2 MiB 的 TCP 窗口大小。