To be a better coder
分类: LINUX
2019-03-27 15:07:12
在SDN 在SDN 网络Overlay组网中服务器两个网卡做bond 1(主备模式)接在交换机上时,主备网卡切换会引起业务丢包,但很快会自动恢复。
因为在bond1模式下,交换机的两个接口不需要配置聚合,正常情况下服务器主网卡对应的交换机AC口上会有VLAN-VXLAN映射的配置,而备AC口上没有映射配置。当服务器网卡切换到备后,需要服务器发送ARP到备AC口,触发VCFC给交换机备口下发VLAN-VXLAN映射的配置,整个过程需要秒级的切换时间,故而会引起业务丢包。
解决方法:
在VCFC添加网元时勾选VXLAN转发预配置,预先下发VLAN-VXLAN映射的配置到设备上。避免服务器网卡从主网卡切换到备网卡时,因为交换机备AC口没有下发相关VLAN-VXLAN映射配置导致业务丢包。Bonding导致丢包严重问题:
(1)Bonding的mode设置不正确,使用mode=1,主备模式,需要交换机的支持和配置;
(2)采用mode=6来进行负载均衡,不需要交换机的支撑;
dddddddddddddddddddddddddddddddddddddddd点击(此处)折叠或打开
1. 我们先看主备模式
主备模式下,Linux Bonding实现会将Bond的两个slave网口的MAC地址改为Bond的MAC地址,而Bond的MAC地址是Bond创建启动后,主用slave网口的MAC地址。
当主用网口故障后,Bond会切换到备用网口,切换过程中,上层的应用是无感知不受影响的,因为Bond在驱动层,会接管上层应用的数据包,缓存起来等备用网卡起来后再通过备用网卡发送出去。当然,前提是切换时间很短,否则缓冲区是会溢出的,溢出后就开始丢包了。具体的时间值本人还没有验证过。
不足
从上面的介绍中,很容易看到Bond的一点不足:
Bond更改了网口的驱动,其网口不能被用作其他用途。
Bond还有一点不足就是其故障监测上面:
Bond默认只能做网口MII监测不能做链路监测(链路是指本机到网关的路径),也就是只能监测网口是否连接(网口是否亮);当然Bond也支持ARP协议的链路监测,但是ARP链路监测在一些场景下,太消耗资源,得不偿失。我们曾经在实际应用中使用过,效果确实不好。