切换网卡的互联网连接速度不同。 有人能理解这个吗?

我解决了我的网速问题,但是我仍然感到困惑。 我不明白发生了什么事。

我的场景是:一个小的内网通过连接到Cable Modem(Motorola SBV5121)的Linux网关连接到互联网,我的提供商给我静态IP,标称速度为3Mbps / 512Kbps。

Linux网关是一个旧的Centos 5.10,带有iptables和Dhcp服务器,有两个网卡:

eth0 (Intranet) # 3Com Corporation 3c905C-TX/TX-M [Tornado] eth1 (Internet) # Sundance Technology Inc / IC Plus Corp IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY [INTERNET]---[Motorola CableModem]----[eth1 LINUX-GW eth0]-----[LAN]---[desktop machines] 

所有漂亮的标准,它工作了很长时间, 但最近我遇到了低速,特别是下载时。 从美国(我在南美洲)下载时,通常的testing(例如http://www.speakeasy.net/speedtest/ )报告(一致)非常低的速度(大约200Kpbs); 当从我的国家下载时,速度是体面的(虽然从未达到我的3Mbps限制):1Mbps到1.5 Mbps。 上传速度是正确的,接近512Kbps的限制。 我ping没有问题,没有丢包,两个网卡都报了一个100Mbps的全双工连接。 这些testing是在局域网内部的桌面Windows机器上完成的,但是这种行为与从Linux GW内部下载时得到的结果是一致的。 禁用iptables没有任何区别。

我很确定这是我的提供商的路由或整形问题。 在打电话时,他们要求我testing连接一台普通的Windows电脑到电缆调制解调器的速度。 我非常怀疑这会有所作为。

 [INTERNET]---[Motorola CableModem]----[Windows desktop machine] 

令我惊讶的是,速度是正确的(3Mbps / 512Kbps,无论目标)。

我很困惑,我加倍检查了一切,没有发现任何东西。 traceroute是一样的。 作为最后的手段,我尝试在GW中切换网卡。 我没有更换电缆,也没有更改configuration,我做了最简单的事情:我在“ifcfg-ethX”configuration文件中更改了MAC,以使eth1保持连接到Internet,但是NIC被切换:

 eth0 (Intranet) # Sundance Technology Inc / IC Plus Corp IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY eth1 (Internet) # 3Com Corporation 3c905C-TX/TX-M [Tornado] [INTERNET]---[Motorola CableModem]----[eth1 LINUX-GW eth0]-----[LAN]---[desktop machines] 

现在它完美的工作! 怎么会这样?

请注意,不是简单地说“Sundance”NIC有一些问题,就像在当前的configuration中一样,当我从LAN机器上进行testing的时候,我仍然像以前一样通过这两张卡片(只是以不同的顺序) 。 而且,当我在局域网(桌面networking – > GW)内传输时,它工作在一个好的以太网速度。

有人有一个似是而非的解释,或经历过一些类似的行为?

我能想到的唯一解释是连接网关到调制解调器的电缆坏了。

也许基带芯片(实际上是在线编码/解码的芯片)坏了,或者从一开始就不是很好,所以线路噪声(由于电缆退化)的增加会使其显着混淆。

尝试使用ethtool检查错误率; 将结果与其他NIC进行比较。 这可能有助于解决一些问题。

一个似是而非的解释是在日志卡和DSL调制解调器之间的双工协商失败。

10 / 100M以太网以糟糕的双工协商而臭名昭着。 许多人build议在两端对速度和双工进行硬编码。 我不是这个的忠实粉丝,但这不是不合理的。

这几年来已经不是一个问题了。 千兆以太网自动协商是可靠的 – 部分原因是没有半双工吉比特这样的事情。 我想像着10/100自动协商已经变得更聪明了,更新的芯片组。