Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3785216
  • 博文数量: 880
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 6155
  • 用 户 组: 普通用户
  • 注册时间: 2016-11-11 09:12
个人简介

To be a better coder

文章分类

全部博文(880)

文章存档

2022年(5)

2021年(60)

2020年(175)

2019年(207)

2018年(210)

2017年(142)

2016年(81)

分类: LINUX

2019-03-27 15:07:12

aaaaaaaaaaaaaaaaaaaaaaaaa
bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用

bbbbbbbbbbbbbbbbbbbbbbbbbbb

在SDN 网络Overlay组网中服务器两个网卡做bond 1(主备模式)接在交换机上时,主备网卡切换丢包问题分析

问题描述

在SDN 在SDN 网络Overlay组网中服务器两个网卡做bond 1(主备模式)接在交换机上时,主备网卡切换会引起业务丢包,但很快会自动恢复。


解决方法

因为在bond1模式下,交换机的两个接口不需要配置聚合,正常情况下服务器主网卡对应的交换机AC口上会有VLAN-VXLAN映射的配置,而备AC口上没有映射配置。当服务器网卡切换到备后,需要服务器发送ARP到备AC口,触发VCFC给交换机备口下发VLAN-VXLAN映射的配置,整个过程需要秒级的切换时间,故而会引起业务丢包。

解决方法:

在VCFC添加网元时勾选VXLAN转发预配置,预先下发VLAN-VXLAN映射的配置到设备上。避免服务器网卡从主网卡切换到备网卡时,因为交换机备AC口没有下发相关VLAN-VXLAN映射配置导致业务丢包。
cccccccccccccccccccccccccccccccccccccccccccccc

Bonding导致丢包严重问题:

(1)Bonding的mode设置不正确,使用mode=1,主备模式,需要交换机的支持和配置;

(2)采用mode=6来进行负载均衡,不需要交换机的支撑;

dddddddddddddddddddddddddddddddddddddddd
还有一个需要介绍的就是bond的模式 我们在这台丢包严重的服务器上使用了bond mode=1  bond设置可以Google一下 

在/etc/modprobe.conf中的设置如下 可以确认我们配置无误

点击(此处)折叠或打开

  1. alias bond0 bonding
  2. options bond0 miimon=100 mode=1

但是查看运行时的参数 却发现bond 运行的模式是mode 0
cat /sys/class/net/bond0/bonding/mode 显示的结果是 round-robin 0

哎 不清楚为什么会是这样 没办法 改吧 先吧bond关了(ifdown 就可以了)然后 改变运行模式
echo 1 > /sys/class/net/bond0/bonding/mode

重启网络 看了运行的模式 已经是1了 但是网络死活不通 查看/proc/net/bonding/bond0 有两块网卡 但是当前使用的网卡为None (Currently Active Slave: None) 有一个奇怪的状况 就是把其中的一块网卡从bond里去除 网络就ok了 以为是那块拿掉的网卡的硬件挂了 但是检查了网卡 发现没什么问题 联想到之前交换机调整过 问了一下 是有一块网卡的mac地址没有记录到交换机上去 最后加上 一切ok a门
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
如果mode = balance-rr模式,交换机的两个接口必须做聚合配置,否则会出现mac地址在两个接口间频繁切换,会造成丢包。
fffffffffffffffffffffffffffffffffffffffffffffff

1. 我们先看主备模式


主备模式下,Linux Bonding实现会将Bond的两个slave网口的MAC地址改为Bond的MAC地址,而Bond的MAC地址是Bond创建启动后,主用slave网口的MAC地址。

当主用网口故障后,Bond会切换到备用网口,切换过程中,上层的应用是无感知不受影响的,因为Bond在驱动层,会接管上层应用的数据包,缓存起来等备用网卡起来后再通过备用网卡发送出去。当然,前提是切换时间很短,否则缓冲区是会溢出的,溢出后就开始丢包了。具体的时间值本人还没有验证过。

不足
从上面的介绍中,很容易看到Bond的一点不足:
Bond更改了网口的驱动,其网口不能被用作其他用途。

Bond还有一点不足就是其故障监测上面:
Bond默认只能做网口MII监测不能做链路监测(链路是指本机到网关的路径),也就是只能监测网口是否连接(网口是否亮);当然Bond也支持ARP协议的链路监测,但是ARP链路监测在一些场景下,太消耗资源,得不偿失。我们曾经在实际应用中使用过,效果确实不好。


阅读(3306) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~