我有一个 100 Mbit 交换机,连接三个 100 Mbit 摄像头和 100 Mbit 计算机。带宽限制来自正在使用的电缆,无法通过更改来解决问题,因为我在工业/汽车环境中工作。
┌------------ Camera
Computer-----Switch---------- Camera
└------------ Camera
摄像机通过 UDP 传输 RTP。所有摄像机均配置为使用恒定比特率,每个比特率为 24 Mbit/s。
当我运行 Wireshark IO 分析时,我可以看到虽然平均带宽低于 100 Mbits,但峰值却超过了 100 Mbits,导致数据包丢失,并且流无法解码。这些峰值来自每 33 毫秒捕获一次图像并发送的摄像头。然后它们保持沉默,直到捕获下一个图像。
在红色框中,我们可以看到已达到 100 Mbit 限制,并且数据包丢失。我们在这里看不到这一点,但是 RTP 流分析显示了这一点。
所有摄像头和交换机都支持流量控制(https://en.wikipedia.org/wiki/Ethernet_flow_control)。我希望交换机使用流量控制来“压缩”网络流量,从而避免出现此问题。
- 我对流量控制的理解是否错误?
- 是否有其他机制可以提供帮助?
无法将传输协议从 RTP 更改为其他协议。无法切换到千兆位。
是的,这是完全有可能的。为了避免这种情况,您需要在交换机和 PC 之间建立千兆链路(下一步大于 300 Mbit/s)。或者,您可以在交换机和 PC 之间使用专用于特定摄像头的多个链路(尤其是使用 VLAN,但仅 IP 子网分割就足够了)。
是也不是。交换机会尝试限制来自源的流量,但同样会丢弃多余的流量。PC 试图限制交换机是没有意义的,因为交换机无论如何都会看到其出口容量超出。无论暂停帧是否真的在源上起作用,它都是实时源,很可能无法延迟传输。运行测试,但我不会把钱押在这上面。
通过安装具有更大缓冲区的交换机(至少对于低带宽流量而言),您可以获得一些缓解 - 一些排队应该可以改善流量分布,均衡突发性,也许可以解决您的问题。突发的粗略计算:60 Mbit/s * 40 ms * 3 = 0.9 MB 作为交换机(端口组)的最小缓冲容量 - 对于一个像样的交换机来说并不多,但并不总是如此。
更好的解决方案是如上所述增加PC和交换机之间的带宽。