过去,我使用消费级千兆交换机,并将 100MBit 和千兆卡连接到该交换机。我的一些千兆卡容易“断开”以太网连接,然后“重新连接”到 100MBit,有时会持续一段时间,有时又会在一段时间后“切换”回千兆速度。移除所有 100MBit NIC 后,问题就彻底消失了。
有人能解释一下这里发生了什么吗?是不是交换机的缓冲区太小了?100MBit 和千兆卡如何在交换机上共存?
答案1
当千兆链路回落到 100 Mbit 时,通常的原因是电缆不良。10、100、1000 甚至 10,000 Mbit/s 可以在同一台交换机上很好地共存(或者可能更快,但更快的交换机对 10 和 100 Mbit/s 的支持越来越少)。检查 NIC 统计信息以查找 FCS 错误、残帧或其他丢包。
1000BASE-T 需要所有四条双绞线才能工作,而 100BASE-TX 仅使用其中两条。此外,1000BASE-T 对电缆的要求略高一些,因为线路编码更精细一些。当千兆协商失败时,相当多的设备会回退到 100BASE-TX。链路也可能完全失败。
这里描述的所有其他内容 - 缓冲区溢出或流量控制对协商链路速度(物理层 L1)没有影响,并且永远不会导致链路断开或回退。
交换机总是先完全接收帧,然后再转发(存储转发)——大多数交换机都是这样,不同链路速度的所有交换机都使用存储转发。在一个 10 Mbit/s 端口上接收帧并将其转发到另一个 100 Gbit/s 端口或反之亦然,这完全没有问题。
流量控制可能会干扰有效吞吐量但永远不会改变物理层链路速度。
当千兆端口尝试向 100(或 10)Mbit/s 设备发送全速率流量,且所有设备上的流量控制均处于活动状态时,低速设备发送的暂停帧将限制发送方的千兆端口即使另一个接收者可能想要接收全速率- 这被称为队头阻塞,是一个设计缺陷。
除非您了解传统流量控制的功能并且它在您的场景中有效,否则通常不应使用传统流量控制。流量控制最好留给传输层(尤其是 TCP)或应用层协议。
答案2
文章 当流量控制不是一件好事时 描述了非托管千兆交换机中混合存在千兆和快速以太网(100 Mbps)客户端的情况,其中读者报告千兆链路被强制达到快速以太网速度。
这篇文章将责任归咎于 802.3x 流量控制 并说 :
不幸的是,看起来(至少在小型网络中) 802.3x 弊大于利。部分原因可能是它重复了 TCP 协议中已经内置的基于丢失的流量控制机制。但无论原因是什么,我都能确认,一些人认为“有缺陷”或“性能低下”的交换机造成的吞吐量损失实际上是流量控制造成的。
您可以在文章中找到有关该主题的很好的条约 流还是不流?文章给出了禁用它的三个理由:
- 某些交换机的缓冲区限制
- 现代设备现在能够更快速地处理数据,因此流量控制不仅是不必要的,而且实际上还会妨碍性能的提高
- 最好以拥塞控制的形式来管理堆栈上层的流量控制。
许多交换机默认禁用流量控制,但请检查您的交换机。如果已启用,请尝试禁用它。在极少数情况下,您可能需要在所有端点上禁用它。
答案3
间歇性结果听起来有点像 CAT5e(而不是 CAT6a 或 CAT6),或者更可能(更糟)是 CAT5(而不是 CAT5e)电缆。虽然移除 100MBit NIC 可能不会有太大帮助,所以...
交换机的缓冲区太小听起来可能是一种可能性。
与“集线器”不同,“交换机”的通信是每个端口独立的。换句话说,如果您有一个 24 端口交换机,那么它们就是 24 个独立的连接。如果一个连接是 100Mbit,那不应该妨碍另一个连接是千兆位。
我发现交换机能够清除它可能记住的任何数据包数据,这会带来一些潜在的好处。如果它成功使用千兆位连接,那么它可以更快地完成对话,并更快地完成工作。这可能会降低缓冲区使用率。如果工作更快地完成,工作产生的热量就可以更快地消失,这也可以减少“过热”问题。