FreeBSD:NIC绑定/链接聚合/中继/链接故障转移

时间:2019-11-20 08:54:04  来源:igfitidea点击:

在Linux中,如何设置网卡模式 Bonding / Link Aggregation / Trunking / Link Failover?
在FreeBSD中,如何对网卡进行绑定/链接聚合/中继/链接故障转移等设置?
如何将多个网络接口的链接聚合设置为一个虚拟网口?
如何配置链接故障转移Link Failover?
Linux如何配置Trunking?
Linux如何配置网口bonding?
FreeBSD如何配置链路聚合Link Aggregation?

如何加载驱动程序lagg?

在loader.conf中,添加下面这行,这样在引导时将驱动程序作为模块加载:

if_lagg_load="YES"

或者直接执行下面的操作:

# echo 'if_lagg_load="YES"' >> /boot/loader.conf

使用kldload命令在线加载驱动:

# kldload if_lagg
# kldstat

关于自定义FreeBSD内核的说明

如果内核是自己编译的,那么编译时,需要将该驱动程序编译到内核中。
即内核配置文件中,需要添加下面这行:

device lagg

如何创建链路聚合接口(lagg)?

可以使用以下命令创建链路聚合接口:

# ifconfig laggN create
# ifconfig lagg0 create

可以使用通过laggproto proto选项指定的不同链路聚合协议。

驱动程序当前支持以下聚合协议:

聚合协议说明
failover仅通过主端口发送和接收流量。如果主端口不可用,则使用下一个活动端口。
添加的第一个接口是主端口;之后添加的任何接口都将用作故障转移设备。
fec支持Cisco EtherChannel。这是静态设置,不会与对等方协商聚合或交换帧以监视链路。
lacp支持IEEE 802.3ad链路聚合控制协议(LACP)和标记协议。
LACP将与对等方协商到一个或多个链接聚合组的一组可凝集的链接。
每个LAG由相同速度的端口组成,并设置为全双工操作。
LAG中端口之间的流量将以最大的总速度进行平衡,
在大多数情况下,只有一个LAG包含所有端口。如果物理连接发生变化,链路聚合将迅速收敛到新的配置。
loadbalance根据哈希协议头信息平衡活动端口上的传出流量,并接受来自任何活动端口的传入流量。
这是静态设置,不与对等方协商聚合或交换帧以监视链路。
哈希包括以太网源和目标地址,以及(如果可用)VLAN标记以及IP源和目标地址。
roundrobin使用轮询调度程序通过所有活动端口分配传出流量,并接受来自任何活动端口的传入流量。
none此协议不进行任何操作:它禁用任何流量而不禁用lagg接口本身。

使用LACP创建链路聚合的示例

我们有两个千兆网口,将使用它们来做链路聚合。
首先,您无需为em0和em1接口分配任何IP。
不要通过/etc/rc.conf配置它们。

将两个网口激活:

# ifconfig em0 up
# ifconfig em1 up

创建一个名为lagg0的链路聚合接口:

# ifconfig lagg0 create

为lagg0分配一个IP地址:

# ifconfig lagg0 laggproto lacp laggport em0 laggport em1 10.24.116.2 netmask 255.255.255.192

如果您需要在NIC之间而不是lacp之间创建故障转移,那么执行:

# ifconfig lagg0 up laggproto failover laggport em0 laggport em1 10.24.116.2 netmask 255.255.255.192

要验证链接的状态,执行:

# ifconfig

添加默认网关:

# route add default 10.24.116.100
# netstat -nr

其中

  • lagg0:Bounding接口名称。
  • laggproto lacp:绑定的协议。有关可能的值,请参见上表。
  • laggport em0:您的第一个以太网接口名称。
  • laggport em1:您的第二个以太网接口名称。
  • 10.24.116.2:lagg0接口的IP地址。
  • netmask 255.255.255.192:lagg0接口的网络掩码地址。

如何创建活动的故障转移接口?

我们使用两个网口(一个有线,一个无线)来创建故障转移接口。
如果有线网断了,那么转移到无线网上:

# ifconfig em0 up
# ifconfig ath0 nwid my_ssid up
# ifconfig lagg0 laggproto failover laggport em0 laggport ath0 192.168.1.1 netmask 255.255.255.0

如何使链路聚合配置持久化?

通过命令设置的链路聚合,在重启后会失效。
所以我们需要写入配置文件中,使其永久生效。

编辑配置文件/etc/rc.conf:

# vi /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"

这样,在系统重启后,配置不会丢失。