web-dev-qa-db-ja.com

Linuxはケーブルのプラグインでイーサネット自動ネゴシエーションを無効にしますか?

最近、ギガビットホームネットワークで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)を使用しています。

7
BMicraft

何時間も検索した結果、最もわかりやすい場所に解決策が見つかりました。

NetworkManagerがイーサネットポートの設定で自動ネゴシエーションを無効にしたようです:

Connections - KDE System Settings

奇妙な点は、NetworkManagerがイーサネットリンクモードを変更できることを知った後でも、その機能を詳しく説明している単一のソースでさえオンラインで見つけることができないことです。私が見つけたグーグル検索結果による唯一の方法は、ethtoolを介して設定することです。

8
BMicraft