10/100/1000対応のPHYが10/100のみをサポートするようにケーブル接続されている状況です。
デフォルトの動作は、自動ネゴシエーションを使用して最適なモードを見つけることです。反対側では、ギガビット対応ルーターの使用は、機能していないインターフェースで終わります。オートネゴシエーションは決して収束しないと思います。 100Mbpsスイッチを試してみた人もいるそうですが、正常に動作します。
ethtool
を使用して機能させることができますが、これは非常にイライラします。
ethtool -s eth1 duplex full speed 100 autoneg off
私がやりたいことは、自動ネゴシエーションを維持しながら、1000baseT/Fullを選択肢から取り除いて、100Mbpsで見かけ上実行されないようにすることです。 ethtool
またはカーネルオプションを使用してそれを達成する方法はありますか? (私の2.6.32カーネルで何かが見つかりませんでした...)
(10Mbpsスイッチを備えた奇妙な男が私にやって来るとしましょう。別の世紀のこのスイッチを操作するには、このethが必要です)
自動ネゴシエーションの問題は、一端からオフにすると、反対側は速度を検出できますが、デュプレックスモードは検出できず、デフォルトで半分になります。次に、デュプレックスの不一致が発生します。これは、リンクが機能していないのとほぼ同じです。したがって、一方の端で自動ネゴシエーションを無効にすると、実際にはもう一方の端でもそれを無効にする必要があります。
(そして、自動ネゴシエーションが実際にケーブルをテストしないことがあり、エンドポイントが実行できることだけです。これにより、2ペアしか持たず、1000Base-Tをサポートできないケーブル上でギガビットリンクが発生する可能性があります。)
しかし、ethtoolは、どの速度/デュプレックスモードをアドバタイズするかをドライバーに伝えることができるようです。 ethtool -s eth1 advertise 0x0f
はすべての10/100モードを許可しますが、1Gは許可しません。
advertise N
Sets the speed and duplex advertised by autonegotiation. The
argument is a hexadecimal value using one or a combination of
the following values:
0x001 10baseT Half
0x002 10baseT Full
0x004 100baseT Half
0x008 100baseT Full
0x010 1000baseT Half (not supported by IEEE standards)
0x020 1000baseT Full