在对网络应用程序进行基准测试时,我发现了奇怪的行为,涉及通过交换机 (at-gs900/8e) 连接的 100MBit 和 1GBit 以太网客户端。我有一台服务器 (Gbit) 和多个客户端,网络应用程序使用 TCP/IPv4。每个客户端都通过单个连接接收大数据流。
只要只有 GBit 速度的客户端从服务器接收数据,一切就都正常,即使只有一个客户端,服务器的上行链路也会饱和;当多个客户端接收数据时,带宽会在它们之间平均分配。但是,只要一个 100MBit 客户端也从服务器接收数据,输出就会下降到几乎正好每个客户端 100MBit/s,即使是 GBit 客户端也是如此。因此,只有 100MBit 客户端接收数据时,我得到 100MBit/s 的输出,如果有额外的 GBit 客户端,我得到 200MBit/s,依此类推……我的第一个想法是“也许服务器的 NIC 切换回 100MBit/s FD”,但这显然没有任何意义,因为我得到 100MBit/s 的输出每位客户,不是总计。
顺便提一下,测试期间所有客户端都持续连接到服务器(空闲 TCP 连接)。有人能告诉我这是怎么回事吗?这是否是预期行为?我真的希望不是,因为这会让交换机成为相当愚蠢的设备。我希望在接下来的几天里得到一些不同的型号进行测试……
更新:我发现这是由以太网流量控制(即所谓的暂停帧)引起的。我没搞清楚是谁创建了这些帧,是 100MBit 客户端还是交换机本身,但对我来说,它不会将服务器限制到总共 100MBit/s,而不是每个客户端 100MBit/s,这仍然很奇怪......因此,服务器上的“解决方案”是禁用流量控制,这至少在我的场景中是可以的,因为 TCP 可以自行处理拥塞:这ethtool -A eth0 autoneg off rx off tx off
将导致 100Mbit/s 客户端的速度为 100MBit/s,而第二个支持 GBit 的客户端的速度为 900MBit/s。:-)
答案1
我曾经有一个缓冲交换机,其行为有些类似:如果流中的一个端口速度较低,则其他端口在与其通信时会被拖到较低的速度。
我说得对吗?您看到所有端口都被拖慢了,即使它们没有涉及慢速端口的流量?如果是这样,这听起来像是一个错误,您应该与交换机销售人员讨论一下。
请注意我说的是销售人员:通常的客户支持组织的任务是让您对所拥有的产品感到满意,而不是解决问题,因此不太可能为您提供替换开关 (:-))
--戴夫