我们将 FreeBSD 的两个网口作为一个负载均衡和故障转移链路聚合组接到交换机上。 在此基础上, 还可以增加更多的网口, 以提高吞吐量和故障容灾能力。 由于以太网链路上两节点间的帧序是强制性的, 因此两个节点之间的连接速度, 会取决于一块网卡的最大速度。 传输算法会尽量采用更多的信息, 以便将不同的网络流量分摊到不同的网络接口上, 并平衡不同网口的负载。在 Cisco 交换机上将 FastEthernet0/1 和 FastEthernet0/2 这两个网口添加到 channel-group 1:
interface FastEthernet0/1 channel-group 1 mode active channel-protocol lacp ! interface FastEthernet0/2 channel-group 1 mode active channel-protocol lacp
在 FreeBSD 使用 fxp0 和 fxp1 创建 lagg(4) 接口:
# ifconfig lagg0 create # ifconfig lagg0 up laggproto lacp laggport fxp0 laggport fxp1
用下面的命令查看接口状态:
# ifconfig lagg0
标记为 ACTIVE 的接口是激活据合组的部分, 这表示它们已经完成了与远程交换机的协商, 同时, 流量将通过这些接口来收发。 在 ifconfig(8) 的详细输出中会给出 LAG 的标识。
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:05:5d:71:8d:b8 media: Ethernet autoselect status: active laggproto lacp laggport: fxp1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING> laggport: fxp0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
如果需要查看交换机上的端口状态, 则应使用 show lacp neighbor 命令:
switch# show lacp neighbor Flags: S - Device is requesting Slow LACPDUs F - Device is requesting Fast LACPDUs A - Device is in Active mode P - Device is in Passive mode Channel group 1 neighbors Partner's information: LACP port Oper Port Port Port Flags Priority Dev ID Age Key Number State Fa0/1 SA 32768 0005.5d71.8db8 29s 0x146 0x3 0x3D Fa0/2 SA 32768 0005.5d71.8db8 29s 0x146 0x4 0x3D
如欲查看进一步的详情, 则需要使用 show lacp neighbor detail 命令。
故障转移模式
故障转移模式中, 当首选链路发生问题时, 会自动切换到备用端口。 下面的命令会创建 lagg0 接口, 并使用 fxp0 作为首选接口, 而 fxp1 作为备用接口:
# ifconfig lagg0 create # ifconfig lagg0 up laggproto failover laggport fxp0 laggport fxp1
创建成功之后, 接口状态会是类似下面这样, 主要的区别是 MAC 地址和设备名:
# ifconfig lagg0 lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:05:5d:71:8d:b8 media: Ethernet autoselect status: active laggproto failover laggport: fxp1 flags=0<> laggport: fxp0 flags=5<MASTER,ACTIVE>
系统将在 fxp0 上进行流量的收发。 如果 fxp0 的连接中断, 则 fxp1 会自动成为激活连接。 如果主端口的连接恢复, 则它又会成为激活连接。