島崎です。 もうすこしネットで調べてみたところ freebsd-stable ML でも同様の質問が出ているのを見つけました。 http://www.mail-archive.com/[メールアドレス保護]/msg97759.html
こちらでは sys/dev/mii/brgphy.c に当てるパッチが示されており、一応実験 してみたところこのパッチを当てると期待するフェイルオーバーの動作をして くれました。 ただ、副作用がないのかまでは確認できていないので、まだ本番投入はできて いませんが…。 From: Norikatsu Shigemura <[メールアドレス保護]> Subject: [FreeBSD-users-jp 91857] Re: lagg(4) failover function does not work on bce Date: Sat, 11 Oct 2008 16:29:33 +0900 > MIIPHY まわりでよく見られる現象ですね。大丈夫だとは思いますが, Broadcom > な PHY かどうか確認させてください(下記の 3 つのコマンドの実行)。 > > $ devinfo -v | fgrep -A2 bce > $ fgrep bce /var/run/dmesg.boot > $ ifconfig こちらは末尾に付けたとおりで問題なく brgphy のようです。 > > ちなみに lagpgroto で lacp を選択して 802.3ad で束ねているときはリンク > > が落ちると80秒ぐらい黙ってしまいますが切り替わってくれたりします。 > > 対向のスイッチは LACP サポートしていますか? LACP って確か 1 秒に 1 回 > パケットを交換して死活監視してたような記憶がありますが。。ちょいとテスト > できる環境がないので, 可能なら tcpdump 等で監視してみるのも手かもしれ > ませんね。 対抗のスイッチは summit X450a-48t でちゃんと LACP で sharing している のですが、気になって tcpdump してみたら LACP パケットの間隔がやたら長 く、ドキュメントに当たってみたらそもそもデフォルトだと 90秒に一回送る 設定なのだそうです。 こちらは 3秒にできるようなので、どこかで実験してみようかと思います。 以下にコマンドの実行結果を付けます。 > 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 16 at device 0.0 on pci3 miibus0: <MII bus> on bce0 bce0: Ethernet address: 00:1e:0b:**:**:** bce0: ASIC (0x57081020); Rev (B2); Bus (PCI-X, 64-bit, 133MHz); F/W (0x01090605); Flags( MFW ) bce1: <Broadcom NetXtreme II BCM5708 1000Base-T (B2)> mem 0xfa000000-0xfbffffff irq 17 at device 0.0 on pci5 miibus1: <MII bus> on bce1 bce1: Ethernet address: 00:1e:0b:**:**:** bce1: ASIC (0x57081020); Rev (B2); Bus (PCI-X, 64-bit, 133MHz); F/W (0x01090605); Flags( MFW ) bce0: link state changed to UP bce1: link state changed to UP > ifconfig bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=3b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU> ether 00:1e:0b:**:**:** media: Ethernet autoselect (1000baseTX <full-duplex>) status: active lagg: laggdev lagg0 bce1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=3b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU> ether 00:1e:0b:**:**:** media: Ethernet autoselect (1000baseTX <full-duplex>) status: active lagg: laggdev lagg0 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=3b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU> inet XXX.XXX.XXX.XXX netmask 0xffffff00 broadcast XXX.XXX.XXX.XXX ether 00:1e:0b:**:**:** media: Ethernet autoselect status: active laggproto failover laggport: bce1 flags=0<> laggport: bce0 flags=5<MASTER,ACTIVE>