最近、ギガビットホームネットワークで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 on
を実行して明示的に自動ネゴシエーションを有効にすると、すべてのモードがスイッチに通知され、1000baseT/Full
が使用されます。
それはほとんどの場合、しばらくの間しか機能しません。ケーブルを外してプラグインすると、autonegがオフになりますほとんどの場合ですが、常にそうとは限りません。また、autonegをオンに設定すると、すぐに再び無効になることがあります。再起動すると、再び無効になります。
オートネゴシエーションは、プラグを抜くときではなく、再プラグするときに無効になることに注意してください。 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)を使用しています。