Linuxは、ケーブルが接続されているときにイーサネット自動ネゴシエーションを無効にしますか?

Linuxは、ケーブルが接続されているときにイーサネット自動ネゴシエーションを無効にしますか?

最近、私のギガビットホームネットワークのスループットは100Mbit / sにすぎないことを発見しました。

見てみると、私のArchLinux BoxがNICとそれに接続されているスイッチでサポートされているリンク速度以外のリンク速度をethtool使用していることがわかりました。理由はわかりませんが、NICは以下に基づいてリンクモードを宣伝していないようです。100baseT/Half1000baseT/Fullethtool

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

これは、ほとんどの時間と一定期間だけ動作します。ケーブルを外して再接続すると、自動サイズ変更はオフになります。ほとんどの場合、しかし、必ずしもそうではありません。また、自動承認を設定するとすぐに再び無効になることがあります。再起動すると再び無効になります。

プラグを抜くと自動ネゴシエーションが無効になるのではなく、再接続すると自動ネゴシエーションが無効になることに注意してください。dsmeg自動ネゴシエーションが有効になってケーブルが接続されると、この情報が記録されます。

[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マザーボード(〜2015年から)と一緒にIntelネットワークカードと管理されていないスイッチ(Netgear GS208)を使用しています。

答え1

数時間検索したところ、最も確実な場所で解決策が見つかりました。

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

接続 - KDEシステム設定

奇妙なことに、NetworkManagerがイーサネットリンクモードを変更できることがわかった後も、この機能を詳しく説明するオンラインソースが見つかりません。私がインターネット検索で見つけたところによると、これを行う唯一の方法は設定することですethtool

答え2

私は同じ問題を抱えており、これを意識的に設定していないと確信しています...

ethtool --change enp0s31f6 autoneg on

すぐに修正し、ネットワークが1Gbit全二重で正しく自動ネゴシエートされた後、NetworkManagerを見てみると、実際には100mbitに設定されました。

関連情報