这几天公司里的服务器要用bonding,主要是做双网卡的冗余,网上说的最多的就是《FreeBSD上双网卡绑定提高带宽的做法》,研究了一下,把结果给大家说说, Linux的很简单,这里就不说了,照网上的资料就行了。freebsd的有点小难度,搞了几天,最初用lagg模块,照手册里的“链路聚合与故障转移部分做,做是做成的但是就是不能冗余,拔掉网络就不通了,最后决定用ng_fecg来做,下面是过程。
FreeBSD上双网卡绑定提高带宽的做法里,第3部分,《在FreeBSD5上用ng_fec实现双网卡绑定》,脚本的第一句就是/sbin/kldload ng_fec,要加载ng_fec ,如果你没有安装此模块,是加载不上的。
#使用kldstat查看模块,没有ng_fec,需要安装并加载(不用带-v参数,否则出来一堆,看都看不过来)
# kldstat
Id Refs Address Size Name
1 1 0xffffffff80100000 8a2e40 kernel
#cd /usr/src/sys/modules/netgraph/
把下面三个模块安装了
netgraph fec socket
安装方法如下,直接进入到相应的目录,然后:
#make
#make install
#ls /boot/modules
ng_fec.ko netgraph.ko ng_socket.ko
#vi /boot/defaults/loader.conf
找到ng_fec,ether,socket并改成YES,让它可以自带加载(经测试不改系统也能自动加载)
ng_ether_load="YES"
ng_fec_load="YES"
ng_socket_load="YES"
然后重启系统。
再用kldstat查看加载情况
-bash-3.2$ kldstat
Id Refs Address Size Name
1 4 0xffffffff80100000 8a2e40 kernel
2 1 0xffffffff809a3000 104400 ng_fec.ko
3 3 0xffffffff80aa8000 10f0d8 netgraph.ko
4 1 0xffffffff811cb000 104000 ng_socket.ko
#vi /etc/fec.sh
#!/bin/sh
/usr/sbin/ngctl mkpeer fec dummy fec
/usr/sbin/ngctl msg fec0: add_iface '"bce0"'
/usr/sbin/ngctl msg fec0: add_iface '"bce1"'
/usr/sbin/ngctl msg fec0: set_mode_inet
/sbin/ifconfig fec0 promisc
/sbin/ifconfig bce0 promisc
/sbin/ifconfig bce1 promisc
/sbin/ifconfig fec0 此处写IP netmask 0xfffffe00
/sbin/ifconfig fec0 media 1000baseTX mediaopt full-duplex
/sbin/ifconfig fec0 up
/sbin/route add default 此外写默认网关
#vi /etc/rc.local
/etc/fec.sh
记得把rc.conf设置网卡的语句屏蔽掉,然后重启系统。
#ifconfig
bce0: flags=28943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,PPROMISC> mtu 1500
options=3b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU>
ether 00:1e:0b:ed:64:1c
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
bce1: flags=28943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,PPROMISC> mtu 1500
options=3b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU>
ether 00:1e:0b:ed:64:1c
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
fec0: flags=28943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,PPROMISC> mtu 1500
inet xxx.xxx.xxx.xxx netmask 0xfffffe00 broadcast xxx.xxx.xxx.255
ether 00:1e:0b:ed:64:1c
media: Ethernet none
status: active
标签: