我有一台路由器(运行经过修改的 Tomato 的 ASUS WL-500G Premium),它有一个 100mbps 以太网接口 + wifi 接口。我添加了一个 D-Link 8 端口千兆交换机 (DGS-1008G),因为我希望以太网连接的 PC 之间的传输速度更快。
断开路由器上除一台设备以外的所有设备的连接,这台设备的最大持续下载速度约为 5.5MB/s。如果我在路由器和设备之间放置千兆交换机,这台设备现在的下载速度不超过 4.9MB/s。
我知道引入交换机会增加延迟,但我很惊讶地发现它也对我的吞吐量产生了负面影响。如果我将多个设备连接到交换机,它们之间的传输速度将达到预期的千兆位。无论该设备上是否启用了巨型数据包 (9KB),速度都会降低。千兆交换机和设备之间有一条 CAT 6A 电缆,交换机和路由器之间有一条 CAT 5E 电缆。路由器本身是网络(有线互联网连接)的网关。
我如何以及为何会看到速度下降?
编辑
进行了一些延迟测试。结果很奇怪。由于这是本地网络,默认的 ping 实用程序毫无用处(两种情况下每次都小于 1ms)。显然,这意味着任何额外的延迟都可以忽略不计,不可能是吞吐量下降 5mbps 的原因。但是,使用高分辨率 ping 实用程序我发现设备和路由器之间的延迟始终降低使用千兆交换机时,延迟比不使用千兆交换机时要高 (平均约 0.55 毫秒,而不使用千兆交换机时约 0.8 毫秒)。显然,延迟不是问题,尽管我可能错了。
答案1
当连接速度不匹配的设备时,会出现缓冲区溢出问题,因为交换机接收数据的速度比其传输到路由器端口的速度快。如果您将所有端口强制降至 100Mbit/秒,性能下降应该会消失。如果可以使用流量控制,可能会有所帮助,也可能造成阻碍。
答案2
当延迟增加时,吞吐量下降并不令人意外。您可能会认为,如果我增加 1 秒的延迟,我应该在 1 秒后收到所有这些数据包,并且我的吞吐量不会受到影响,但这是不对的。现有的拥塞控制算法(如 TCP 中的算法)会降低传输速度以应对网络中引入的延迟。路由器和交换机没有无限的缓冲区。当它们的缓冲区已满时,TCP 会降低传输速度。