我最近注意到我只在我的千兆家庭网络上获得了100Mbit / s的吞吐量.
当用ethtool查看时,我发现我的ArchLinux Box使用100baseT / Half作为链接速度而不是1000baseT / Full,其NIC和交换机连接到它支持.我不知道为什么但是NIC似乎没有宣传它的链接 – 根据ethtool的模式:
Settings for enp0s31f6:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Speed: 100Mb/s
Duplex: Half
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: off
MDI-X: on (auto)
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
当通过运行ethtool –change enp0s31f6 autoneg显式启用自动协商时,它似乎将所有模式通告给交换机并使用1000baseT / Full.
这只适用于大部分时间和一段时间.当我拔掉电缆并将其插回交换机时,大部分时间都会自动关闭,但并非总是如此.此外,有时将autoneg设置为on会立即再次禁用它.
重新启动也会再次禁用它.
请注意,拔出插头时重新插入时不会禁用自动协商. dsmeg在启用autoneg时记录此项并插入电缆:
[153692.029252] e1000e: enp0s31f6 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
[153699.577779] e1000e: enp0s31f6 NIC Link is Up 100 Mbps Half Duplex, Flow Control: None
[153699.577782] e1000e 0000:00:1f.6 enp0s31f6: 10/100 speed: disabling TSO
我正在使用我的asrock主板的intel NIC(来自〜2015)和一个非管理型交换机(Netgear GS208).
解决方法:
经过几个小时的搜索,我在最明显的地方找到了解决方案:
NetworkManager似乎在以太网端口的设置中以某种方式禁用了自动协商:
奇怪的是,即使知道了NetworkManager可以改变以太网链接模式,我甚至找不到在线详细介绍该功能的单一来源.根据我发现的谷歌搜索结果的唯一方法是通过ethtool设置它.