現在何百マイルも離れたデータセンターにあるDell r710(Debian GNU/Linux 6.0を実行)があり、イーサネットカードが10baseT半二重でスタックしています。 10baseTでも大丈夫ですが、全二重にしたいです。
問題のカードはBroadcom BCM5709です。
areion:~# lspci |grep Ethernet
01:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
01:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
02:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
bnx2ドライバー/ファームウェアの使用:
areion:~# apt-cache policy firmware-bnx2
firmware-bnx2:
Installed: 0.28
Candidate: 0.28
Version table:
*** 0.28 0
500 http://ftp.us.debian.org/debian/ squeeze/non-free AMD64 Packages
100 /var/lib/dpkg/status
そして、squeezeのストックカーネルを実行します。
areion:~# uname -a
Linux areion 2.6.32-5-AMD64 #1 SMP Wed Jan 12 03:40:32 UTC 2011 x86_64 GNU/Linux
イーサネット設定を変更してみました:
ethtool -s eth0 speed 10 duplex full autoneg off
しかし、その後すべての接続が失われ、サーバーに再接続するためにサーバーを再起動する必要があります。常にサーバーを再起動する必要がなくなり、ethtoolコマンドがハングしているかどうかを確認するために、次のスクリプトの使用に切り替えました。
#!/bin/bash
ethtool -s eth0 speed 10 duplex full autoneg off 2>&1 > ethtool.log &
sleep 10
if [ $(jobs -r |wc -l) -gt 0 ]; then
kill %1 || kill -9 %1
else
echo '-----------' >> ethtool.log
ethtool eth0 >> ethtool.log
fi
dmesg |tail > dmesg-recent.log
ethtool -s eth0 autoneg on
これにより、コマンドを実行した後にインターフェースのステータスを確認できます。
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Speed: Unknown!
Duplex: Unknown! (255)
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: off
MDI-X: Unknown
Supports Wake-on: g
Wake-on: d
Link detected: no
Dmesgから:
[ 442.865157] bnx2: eth0 NIC Copper Link is Down
自動ネゴシエーションが失敗しているか、私が接続されているスイッチが10Mビット/半二重をアドバタイズしているようです。スイッチが10M全二重で動作していると聞いています。
これは、ドライバーの問題、ハードウェアの問題、ケーブルの問題、スイッチの問題でしょうか?問題の原因を特定するため、または少なくとも可能性を排除するためにリモートでできることはありますか?
更新:
自動ネゴシエーションをオフにして、オプションを10/HD、10/FD、100/HD、100/FDなど(自動ネゴシエーションされた10/HD以外のもの)に設定すると、NO-CARRIER
が発生し、ip link show dev eth0
から報告されます。自動ネゴシエーションをオンのままにし、10/HD以外のものをアドバタイズする場合も同様です。これがスイッチの問題以外の何かである可能性がある方法はありますか?
両端で自動ネゴシエーションを有効にすることをお勧めします。これは、ネットワーキングベンダー(シスコを含む)の現在の推奨事項です。参照: http://www.Cisco.com/en/US/tech/tk389/tk214/technologies_tech_note09186a0080094781.shtml
あなたの問題については、それがリモートエンドでどのように設定されているかを調べる必要があります。自動ネゴシエーションの場合は、サーバーでも自動ネゴシエーションを使用する必要があります。特定の速度とデュプレックスに設定されている場合は、リモートエンドと一致させる必要があります。
ネゴシエーションをオンにして、特定の速度とデュプレックスのネゴシエーションのみを許可することが可能であることを覚えておいてください。また、機能のアドバタイズは設定可能にすることができます。
ネットワークカードが10/HDでネゴシエートした場合、これは通常、リモートエンドでネゴシエーションが無効になっていて、10/FDに設定されていることを意味します。パフォーマンスの低下は、デュプレックスの不一致が原因です。
別のネットワークカードで試してみてください。リンクの検出(キャリアと速度を検出するため)はNICのPHY部分によって行われるため、ドライバーを変更しても役に立ちません。
自動ネゴシエーションを無効にすることはお勧めできませんが、それでも決定する場合は、両端で無効にして、両端でまったく同じ速度とデュプレックスを使用するように設定する必要があります。一方の端でのみ自動ネゴシエーションを無効にすると、もう一方の端では10MB/HDが想定されます。イーサネットケーブルのもう一方の端にあるスイッチにアクセスできない場合、またはそのスイッチがそのようなカスタマイズをサポートしていない場合、自動ネゴシエーションを無効にすることはできません。場合によっては、自動ネゴシエーションを有効にしたまま、カードまたはスイッチに低速または半二重をアドバタイズするように指示できます。
物理的に設定を変更できるサーバーとの間のスイッチのような別のデバイスを置くことができますか?それが役立つかもしれません。