为什么当我在不同的网络(尽管共享同一个 NIC)上使用广播 UDP 数据包发送视频时我的 WiFi 速度很慢?

为什么当我在不同的网络(尽管共享同一个 NIC)上使用广播 UDP 数据包发送视频时我的 WiFi 速度很慢?

我有一个设置,可以为视频应用程序发送 UDP 广播数据包。

我在我的服务器上运行 VPS,并向 Jetson 计算机发送 UDP 数据包。这两个计算机都在10.0.2.x网络上。它们都使用我的第二个服务器 NIC。在该 NIC 上我还有一个 WiFi 路由器,但那个路由器在网络上192.168.2.x

为什么当我仅使用可用带宽的 1/5 并且 WiFi 使用了大约 1/3 时,发送广播 UDP 数据包会降低 WiFi 速度?(其余部分由另一台计算机使用)。

以下是网络的基本表示:

             +--------------+
             | Server       |
             |  +-------+   |
             |  | NIC 1 |   |    +---------+     +----------+
Internet <----->|       |   |    | Switch  |     | Jetson   |
             |  +-------+   |    | 1Gbit   |<--->|          |
             |      ^       |    |         |     +----------+
             |      |       |    |         |
             |      v       |    |         |
             |  +-------+   |    |         |     +----------+      +-----------------+
             |  | NIC 2 |   |    |         |     | WiFi     |      | WiFi Computer   |
             |  |       |<------>|         |<--->|          |\/\/\/|                 |
             |  +-------+   |    |         |     +----------+   ^  +-----------------+
             |        ^     |    |         |                    |
             |        |     |    |         |                    \______ slow WiFi connection
             |        v     |    |         |     +----------+
             |   +--------+ |    |         |     | Other    |
             |   | VPS    | |    |         |<--->| Computer |
             |   |        | |    +---------+     +----------+
             |   +--------+ |                           ^_______ speed not affected
             |              |
             +--------------+

因此,使用网线连接到交换机的计算机可以正常工作。通过 WiFi 连接的计算机会受到阻碍,就好像 WiFi 路由器试图转发数据包一样,而10.0.2.x路由器本身就是一个192.168.2.x地址。

为了以防万一,对于那些还没有掌握网络的人来说,我不是尝试通过 WiFi 进行广播。在这种情况下,我实际上希望 WiFi 路由器完全被忽略。我知道通过 WiFi 进行广播是绝对不行的。

以防万一,这是路由器的菜单。这是 Belkin 的。

在此处输入图片描述

答案1

在这种情况下,将 Wi-Fi 视为无线以太网很有用。听​​起来你的 Belkin Wi-Fi“路由器”不是路由在有线和无线之间,它只是桥接。因此它只是充当普通 AP。

以太网(有线或无线)对 IP 一无所知。因此,您的 AP 只是一个以太网桥。也就是说,它遵循桥接器和交换机的 802.1D 规则,只关注以太网层 (MAC) 地址,并使用目标以太网地址来决定将哪些内容桥接到无线,以及丢弃哪些内容。

我猜您正在将 UDP 广播发送到子网广播 IP 地址 10.0.2.255。因此,根据标准,这些 IP 数据包将位于以太网帧内,该帧的地址为以太网多播 MAC 地址 01:00:5e:00:02:ff(即使我的转换有误,它仍然是以太网多播 MAC 地址)。

因此,您的 AP 会看到多播目标 MAC 地址,并且按照网桥和交换机的标准 802.1D 规则,它会自动将其桥接到 Wi-Fi 并将其作为 Wi-Fi 多​​播发送。

不幸的是,就空中时间使用而言,多播和广播在 Wi-Fi 上的成本非常高。

Wi-Fi 多​​播必须以某种“最低公分母”信号速率发送,以确保所有无线客户端都能成功接收。这通常只是该频段的最低可能信号速率。因此,2.4GHz 为 1Mbps,5GHz 为 6Mbps。

例如,1Mbps 广播或多播视频流将尝试使用全部2.4GHz 信道的带宽占用率为 1/6,5GHz 信道的带宽占用率为 1/6。这是 UDP,不是 TCP,因此没有拥塞控制算法,因此它无法很好地与其他人共享带宽。

一种解决方案可能是在您的 AP 中启用 IGMP 侦听(如果它支持的话)。我不太确定,但您可能还需要切换到 UDP 多播而不是广播,以便 IGMP 参与其中,这样 IGMP 侦听才能正常工作。

另一个解决方案可能是使用 VLAN 将两个 IP 子网实际分成两个独立的以太网层网络。

另一个解决方案是启用 Belkin Wi-Fi 设备上的路由(IP 转发)或 NAT,这样就可以将无线局域网与有线局域网分开。您需要小心谨慎地执行此操作,否则可能会破坏无线局域网和有线局域网之间的某些连接/可发现性。

相关内容