使更改永久生效,放入rc.local

例如

<start of rc.local>
kldload /boot/kernel/ng_ether.ko
kldload /boot/kernel/ng_one2many.ko
ifconfig rl0 up
ifconfig rl1 up
ngctl mkpeer rl0: one2many upper one
ngctl connect rl0: rl0:upper lower many0
ngctl connect rl1: rl0:upper lower many1
ngctl msg rl1: setpromisc 1
ngctl msg rl1: setautosrc 0
ngctl msg rl0:upper \
setconfig "{ xmitAlg=1 failAlg=2 enabledLinks=[ 1 1 ] }"
ifconfig rl0 inet 192.168.0.78
<end of rc.local>

ngctl 可以交互运行以进行诊断。
下面列出了一些例子:

list    ### show list of nodes ###
show em0:     ### show information of a node tied interface em0 ###

将 NIC 从以前的设置恢复到原始状态

ngctl rmhook em0: lower

(从接口 rl0 中删除注释/服务)

在 2 个(或者更多)网络接口卡上设置链路聚合

kldload /boot/kernel/ng_ether.ko
kldload /boot/kernel/ng_one2many.ko
ifconfig rl0 up
ifconfig rl1 up
ngctl mkpeer rl0: one2many upper one
ngctl connect rl0: rl0:upper lower many0
ngctl connect rl1: rl0:upper lower many1
ngctl msg rl1: setpromisc 1
ngctl msg rl1: setautosrc 0
ngctl msg rl0:upper \
setconfig "{ xmitAlg=1 failAlg=2 enabledLinks=[ 1 1 ] }"
ifconfig rl0 inet 192.168.0.78

假设

rl0 = 第一个接口卡设备名称
rl1 = 第二个接口卡设备名称
192.168.0.78 = 第一个和第二个网络接口卡上使用的 IP 地址

在 2 个(或者更多)网络接口卡上设置循环

kldload /boot/kernel/ng_ether.ko
kldload /boot/kernel/ng_one2many.ko
ifconfig rl0 up
ifconfig rl1 up
ngctl mkpeer rl0: one2many upper one
ngctl connect rl0: rl0:upper lower many0
ngctl connect rl1: rl0:upper lower many1
ngctl msg rl1: setpromisc 1
ngctl msg rl1: setautosrc 0
ngctl msg rl0:upper \
setconfig "{ xmitAlg=2 failAlg=2 enabledLinks=[ 1 1 ] }"
ifconfig rl0 inet 192.168.0.78
FreeBSD - 使用网络链路聚合和负载平衡(又名循环)组合 多个NIC

结合 2 个或者更多网络接口有几个优点:

其中之一是负载平衡。
负载均衡使网络接口卡能够在定义的 2 个或者多个网络接口卡之间分担负载。

它也用作冗余。
但是负载均衡并没有充分利用2个或者多个网络接口,它的目的是分担网络流量负载。

要充分利用 2 个或者更多网络接口链路,应使用链路聚合。

链路聚合是一种将 2 个或者更多网络接口组合成更大管道的方法。

这也是一种将 2 个或者多个接口组合起来使用相同 IP 地址的方法。
使用链路聚合还可以创建冗余,如果其中一个链路出现故障,其他链路将接管。

日期:2020-06-02 22:18:40 来源:oir作者:oir