背景:链路聚合(Link Aggregation Control Protocol, or LACP)
Linux下可以多端口Bongding,那么Open vSwitch也是没问题的。
假设我们用得是Dell R730机器,4个网口,捆成一个,dell的网卡名是em1,而不是eth0。
首先要装好ovs,添加个网桥
ovs-vsctl add-br ovsbr0
ovs加bonding的命令:
ovs-vsctl add-bond <bridge name> <bond name> <list of interfaces>
So
ovs-vsctl add-bond ovsbr0 bond0 em1 em2 em3 em4 lacp=active other_config:lacp-time=fast
注意加了个lcap-active,缺省不激活的,没法用。
查看一下:
ovs-appctl bond/show <bond name>
ovs-appctl lacp/show <bond name>
bond/show的结果:
# ovs-appctl bond/show bond0
bond_mode: balance-slb
bond-hash-algorithm: balance-slb
bond-hash-basis: 0
updelay: 0 ms
downdelay: 0 ms
next rebalance: 6415 ms
lacp_negotiated: true
slave em4: enabled
active slave
may_enable: true
slave em3: enabled
may_enable: true
slave em2: enabled
may_enable: true
slave em1: enabled
may_enable: true
这样bond就设置好了,链路也聚合了,但是,没完啊,没有地址,大家按以前的方法把bond0的ip和网关设置好即可:
# vi /etc/sysconfig/network-scripts/ifcfg-bond0
-----------
DEVICE=bond0
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=ovsbr0
BOOTPROTO=none
NM_CONTROLLED=yes
IPV6INIT=no
PEERDNS=no
ONBOOT=yes
IPADDR=192.168.56.200
NETMASK=255.255.255.0
------
上面我们用得Bonding模式是balance-slb,Open vSwitch(2.3.1)支持以下三种方式:
- active-backup
- balance-slb
balance-tcp
active-backup 主-备,不说了。
- balance-slb, 根据包的 source MAC + vlan tag來均衡流量
- banlnce-tcp, 根据包的 L2/L3/L4 header来均衡流量
banlance-tcp必须让硬件交换机设置802.3ad,balance-slb则设不设均可,设了流量提高比较大。
总体来讲,ovs支持的bongding和Linux下的相比,差了很多,所以不建议在ovs做bonding,直接在linux下设置比较好。