重村法克です。

On Fri, 10 Oct 2008 18:42:36 +0900
Harumitsu Shimazaki 
<[&#x30E1;&#x30FC;&#x30EB;&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x4FDD;&#x8B77;]> 
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 等で監視してみるのも手かもしれ
        ませんね。

        以上よろしくお願いいたします。

メールによる返信