我的 Ubuntu 服务器以太网接口连接到 ISP 的多路复用器时显示错误。以下是快照:
RX packets:204564288 errors:3193970 dropped:0 overruns:0 frame:3138402
TX packets:29305799 errors:38752 dropped:0 overruns:0 carrier:38762
collisions:2205053 txqueuelen:1000
Ubuntu 接口能够进行全双工,但它只能协商半双工连接。当我将另一个设备(路由器)连接到 MUX 时,它也显示了这样的错误。分配的带宽为 50 mbps,但我只得到 20 mbps。ISP 不愿意在 MUX 中更改他们的设备(看起来像以太网交换机或集线器)。ISP 工程师将此归咎于我方。但我检查了 3 个以上的设备,都显示错误。那么,是否有任何 Linux 工具可以用来深入探究这些错误的原因,或者我可以做些什么来重新配置我的服务器接口以消除这些错误?
答案1
您很可能存在双工不匹配的情况,因为 ISP 将其端硬编码为 100-Full,从本质上禁用了 ISP 以太网 PHY 上的自动协商。
当 ISP 设置为 100-Full 并且您这边保持为自动/自动(一种预感,但很常见)时,您这边的自动协商会将接口配置为 100-Half - 双工不匹配,因为 ISP 端将保持 100-Full。
使固定
您可以通过将以太网 PHY 硬编码为 100-Full(或具体为 ISP 的设置)来解决问题。大多数 ISP 使用 100-Full。
更多细节
由于 100-Full 和 100-Half 的双工不匹配,100-Full 端会禁用 CSMA/CD,而 CSMA/CD 在 100-Half 端仍然有效。100-Full 端传输时不考虑介质是否空闲。100-Half 端执行 CSMA/CD 检查和退避,如 CSMA/CD 所定义。 这就是为什么在原本应该 50 Mb/s 的互联网电路上只能达到 20 Mb/s 的原因. 由于 100-Half 端检测到冲突,CSMA/CD 退避会限制吞吐量。
通过将接口硬编码为 100-Full 来匹配 ISP,双方都将禁用 CSMA/CD,因此退避和冲突检测也将被禁用,您应该能够实现更接近 50 Mb/s 互联网电路数据速率的数字。
历史
许多 ISP 对其以太网 PHY 切换进行硬编码,因为过去这样做要可靠得多。当最初的 802.3u 100 Mb/s 快速以太网标准发布时,速度和双工自动协商已经存在,但不是必需的直到 802.3z 1 Gb/s 千兆以太网标准出台后,自动协商才是必需的按标准。
许多网络工程师对自动协商存在误解。最大的误解是,只要一方实现自动协商,自动协商就能正确协商速度和双工。这是错误的——正如您所见。
造成这种情况的原因可能如下:如果一方硬编码为 100-Full,则运行自动协商的另一方似乎总能确定 100 Mb/s 部分。如果一方硬编码为 10-Full,则运行自动协商的另一方可以确定 10 Mb/s 部分。确定链接速度的能力来自一项名为平行检测它会尝试在所有本地支持的链路速度上发送接收到的物理层信号,直到找到匹配项。但是,平行检测仅适用于速度,不适用于双工匹配。这就是为什么会出现双工不匹配的情况——当接口无法通过自动协商确定另一方时,它总是会回到半双工。
肥皂盒
曾经有一段时间,对自动协商的支持不够充分,而且它造成的问题和它想要解决的问题一样多。 那个时候,在这位网络工程师看来——已经过去了。 虽然自动协商问题仍然存在,但我见过的因自动协商而导致的问题数量正在配置在过去的 5 年中,由于自动协商被禁用而出现的问题数量远远超过我所见过的问题。
我从未遇到过 ISP 不愿意在被要求时将其以太网切换更改为自动/自动的情况。对于大多数有线和 DSL 调制解调器和网关来说,这不是问题。这个问题通常存在于具有以太网切换功能的 NxT1 和光纤管理 CPE 路由器中。问题是网络管理员必须首先提出要求。
使用 ISP 硬编码为 100-Full他们赋予了义务。必须记录并继续履行的义务。自动协商是一种现在已经稳定的技术,已经存在多年,可以帮我们解决这个问题。如前所述,自动协商引起的问题数量远远超过由于 2011 年禁用自动协商而出现的问题数量。存在解决此问题的技术,请使用它。也许我们应该手动设置初始 TCP SYN、MSS,并管理每个 TCP 虚拟电路的接收窗口?我开玩笑的。
停止咆哮。