在FreeBSD上,使用lagg接口,能够将多个网络接口聚合为一个虚拟接口,以提供容灾和高速连接的能力。下面我们来看看在FreeBSD7系列上如何实现:
一、载入lagg接口的方法
为了开机就载入,需要在loader.conf里面加入:
if_lagg_load="YES"
如果机器已经启动了,可以通过kldload来实现:
# kldload if_lagg
可以通过 kldstat查看是否已经载入。
另外需要注意的是,如果你的内核是重新编译的,那么你要确定内核中有如下一项:
device lagg
二、链路聚合协议
lagg支持以下几种协议:
failover (故障转移)
只通过主网口收发数据。 如果主网口不可用, 则使用下一个激活的网口。您在这里加入的第一个网口便会被视为主网口; 此后加入的其他网口,则会被视为故障转移的备用网口。
fec
用以支持 Cisco EtherChannel。 这是一种静态配置,并不进行节点间协商或交换以太网帧来监控链路情况。 如果交换机支持 LACP,则应使用后者而非这种配置。
这种做法是将输出流量在激活的网口之间以协议头散列信息为依据分拆,并接收来自任意激活网口的入流量。 散列信息包含以太网源地址、 目的地址, 以及 (如果有的话) VLAN tag 和 IPv4/IPv6 源地址及目的地址信息。
lacp
支持 IEEE 802.3ad 链路聚合控制协议 (LACP) 和标记协议。 LACP 能够在节点与若干链路聚合组之间协商链路。 每一个链路聚合组 (LAG) 由一组相同速度、以全双工模式运行的网口组成。 流量在 LAG 中的网口之间, 会以总速度最大的原则进行分摊。当物理链路发生变化时, 链路聚合会迅速适应变动形成新的配置。
这种做法也是将输出流量在激活的网口之间以协议头散列信息为依据分拆,并接收来自任意激活网口的入流量。 散列信息包含以太网源地址、 目的地址, 以及 (如果有的话) VLAN tag 和 IPv4/IPv6 源地址及目的地址信息。
loadbalance (负载均衡)
这是fec模式的别名。
roundrobin (轮转)
将输出流量以轮转方式在所有激活端口之间调度, 并从任意激活端口接收进入流量。这种模式违反了以太网帧排序规则, 因此应小心使用。
三、创建lagg接口
例如要创建lacp的接口
# ifconfig em0 up
# ifconfig em1 up
# ifconfig lagg0 create
# ifconfig lagg0 laggproto lacp laggport em0 laggport em1 10.24.116.2 netmask 255.255.255.192
# route add default 10.24.116.100
四、永久保存lagg配置
需要在/etc/rc.conf里面加入:
ifconfig_em0="up"
ifconfig_em1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto failover laggport em0 laggport em1"
ipv4_addrs_lagg0="10.24.116.2/32"
defaultrouter="10.24.116.100"