重村法克です。
On Fri, 10 Oct 2008 18:42:36 +0900
Harumitsu Shimazaki
<[メールアドレス保護]>
wrote:
> ネットで調べたところ、リンクステータスを通知してくれるかどうかの部分が
> ドライバ依存になっているようで、ifconfig でステータスを見に行くとそれ
> によりリンクステータスが更新され、フェイルオーバーするようです。
MIIPHY まわりでよく見られる現象ですね。大丈夫だとは思いますが, Broadcom
な PHY かどうか確認させてください(下記の 3 つのコマンドの実行)。
$ devinfo -v | fgrep -A2 bce
$ fgrep bce /var/run/dmesg.boot
$ ifconfig
例
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
$ devinfo -v | fgrep -A2 bce
bce0 pnpinfo vendor=0x14e4 device=0x164c subvendor=0x103c
subdevice=0x7038 class=0x020000 at slot=0 function=0
miibus0
brgphy0 pnpinfo oui=0x818 model=0x36 rev=0x6 at phyno=1
--
bce1 pnpinfo vendor=0x14e4 device=0x164c subvendor=0x103c
subdevice=0x7038 class=0x020000 at slot=0 function=0
miibus1
brgphy1 pnpinfo oui=0x818 model=0x36 rev=0x6 at phyno=1
$ fgrep bce /var/run/dmesg.boot
bce0: <Broadcom NetXtreme II BCM5708 1000Base-T (B2)> mem 0xf8000000-0xf9ffffff
irq 18 at device 0.0 on pci3
miibus0: <MII bus> on bce0
bce0: Ethernet address: 00:1e:0b:XX:XX:XX
bce0: [ITHREAD]
bce0: ASIC (0x57081020); Rev (B2); Bus (PCI-X, 64-bit, 133MHz); F/W
(0x01090605); Flags( SPLT MFW MSI )
bce1: <Broadcom NetXtreme II BCM5708 1000Base-T (B2)> mem 0xfa000000-0xfbffffff
irq 19 at device 0.0 on pci5
miibus1: <MII bus> on bce1
bce1: Ethernet address: 00:1e:0b:XX:XX:XX
bce1: [ITHREAD]
bce1: ASIC (0x57081020); Rev (B2); Bus (PCI-X, 64-bit, 133MHz); F/W
(0x01090605); Flags( SPLT MFW MSI )
bce0: link state changed to UP
bce1: link state changed to UP
$ ifconfig
bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=1bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4>
ether 00:1e:0b:XX:XX:XX
inet XXX.XXX.XXX.XXX netmask 0xffffff00 broadcast XXX.XXX.XXX.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
bce1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=1bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4>
ether 00:1e:0b:XX:XX:XX
inet XXX.XXX.XXX.XXX netmask 0xffffff00 broadcast XXX.XXX.XXX.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
miibus にぶら下がってる PHY が brgphy でなく ukphy が選択されてると
大問題です。もっとも ukphy が選択されてたら, ろくすぽ通信できないとは思い
ますが…。あと brgphy 属だけど, リビジョン違いで, 微妙にチューニングが違
う可能性もあります。
あと経験的には 1 秒以内程度にはリンクステータスって反映される気がしないで
もないのですが。。。はてさて。
今回に関係あるかどうかわかりませんが, bce(4)/bge(4) にはかなり先進的な
機能がある(TSO - TCP Segmentation Offloading 等)関係で悪さする話が
あります。最悪 Checksum Offloading みたいな広範にサポートされて, 枯れ
てる機能すら無効にしないといけないかもしれません。
実行例:
# ifconfig bce0 -tso
# ifconfig bce0 -rxcsum -txcsum
> ちなみに lagpgroto で lacp を選択して 802.3ad で束ねているときはリンク
> が落ちると80秒ぐらい黙ってしまいますが切り替わってくれたりします。
対向のスイッチは LACP サポートしていますか? LACP って確か 1 秒に 1 回
パケットを交換して死活監視してたような記憶がありますが。。ちょいとテスト
できる環境がないので, 可能なら tcpdump 等で監視してみるのも手かもしれ
ませんね。
以上よろしくお願いいたします。