Liunx网卡绑定(Bond0 您所在的位置:网站首页 linux做bond4配置 Liunx网卡绑定(Bond0

Liunx网卡绑定(Bond0

#Liunx网卡绑定(Bond0| 来源: 网络整理| 查看: 265

在我所处的项目中,为节约硬件开支,使用了聚合模式bond4,动态的聚合了4X10G网口,使总带宽可达到40G,为了达到40G网络带宽效果,我进行了以下测试,发现来自于同一个IP的流量永远分配到同一个物理的网卡上,也就是说出口流量最多10G, 但是同时使用四个不同的IP的流量就可以平均的分配到4个网卡上,那么这是为什么呢?我们一探究竟。

测试环境:  

server端:  iperf3  -s

client端:   iperf3  -c  server端地址  -t  6000     -i 10

服务器网卡: 4 X 10GB 

bonding模式: 

mode:bond4  

xmit_hash_policy: lay2  默认模式

1. 网卡绑定原理

在正常情况下,网卡的工作模式为直接模式(Direct Model),该模式下的网卡只接收目地址是自己 Mac地址的帧。将别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种混杂模式,可以接收网络上所有的帧。

Bonding运行在这个模式下,使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。物理网卡把相应的数据帧传送给bond驱动程序处理。通过网卡绑定可以实现网络设备的冗余和负载均衡。  

2. 绑定的类别 2.0. Bond0 :Round-robin(平衡轮循策略)

特点:传输数据包顺序是依次传输(即:第1个包走ens33,下一个包就走ens34….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡。

缺点:我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。

2.1. Bond1 :Active-backup(主-备份策略)

特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。Mac地址是外部可见得,从外面看来,bond的Mac地址是唯一的,以避免交换机发生混乱。此模式只提供了容错能力,提供高网络连接的可用性。

缺点:资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N。

2.2. Bond2 :Balance-xor(平衡策略)

特点:基于指定的传输策略传输数据包。通过xmit_hash_policy配置项来确定具体的传输策略。默认为异或哈希负载分担(XOR Hash)。此模式提供负载平衡和容错能力。 异或哈希负载分担规则:选择网卡的序号 = (源MAC地址 XOR 目标MAC地址) % Slave网卡数量。 该策略算法概述:在接收和发送数据时,Bond通过异或哈希算法对需要调度的Slave进行选择,其中使用哈希的目的是为了数据的分布尽量分散到各个Slave上,从而实现负载均衡;使用XOR异或的目的是为了避免哈希冲突(例如我们使用平方取中法等方法目的是为了避免冲突,优化哈希查找效率),从而实现负载均衡的优化。  

# 异或哈希负载均衡工作原理 举个例子: 此时BOND2的MAC为AA,BOND2中有四个Slave,编号为Slave_0,1,2,3 此时BOND2从网络上收到MAC地址为BB的数据帧,根据异或哈希计算出哈希:( AA XOR BB ) % 4 = 1 AA | 1010 1010 BB | 1011 1011 XOR | 0001 0001 -> 16+1 -> 17 #这里使用XOR 取出AA和BB二进制中位数的不同的位置为1,相同为0。 17 % 4 = 1 那么该数据就会交由Slave_1处理,而且之后的同样来自于该MAC地址的数据依然交由Slave_1处理。其他MAC地址的数据将大概率分配到Slave_0,2,3,小概率分配到Slave_1。 对于不同来源的MAC的数据,异或哈希能很平均地分担到各个网卡。 这里AA我们只是简单的示例,真正的MAC地址会是类似这样: 54-89-98-9E-26-6B -----16进制 转化为二进制是:01010100-10001001-10011000-10011110-00100110-01101011 ----2进制 MAC地址的长度为48位(6个字节),通常表示为12个16进制数,如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。只要不更改自己的MAC地址,MAC地址在世界是唯一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性

Q1:为什么是XOR异或,如果用与或呢? A1:因为在数学方面来说,与或的真值分布不均匀,与(同1出1 1的分布为25%),或(同0出 0的分布为25%),而异或能保证50%:50%的分布,可以保证哈希过程中更好的随机性,进而避免了哈希冲突发生的概率。

Q2:既然通过异或哈希实现了负载均衡,那么Bond2怎样实现了冗余? A2:在Bond2中,异或哈希算法是对Slave数量取余,其实是对当前活动的Slave取余,如果对于正常运行状态的4个Slave的Bond2,其中Slave_1宕掉了,此时Slave数量会变为3,同时Slave的顺位也发生变化: [ 0 1 2 3 ] 正常状态-> [ 0 2 3 ] Slave1宕 -> [ 0 1 2 ] 新正常状态 此时原本分配给Slave_1的数据由新的Slave_1接收。  

Bond2中通过xmit_hash_policy指定Slave调度策略,默认为上边讲到的layer2,即仅用MAC地址作为区分数据分配的依据。可以增加对IP层,应用层的过滤,保证来自不同IP的数据,甚至来自不同端口的数据都能分配到不同的Slave当中去,进而实现更好的负载均衡,当然也要更具服务器的具体情况来设置最合适的负载均衡策略。至于该配置项在哪里进行配置,在后边的绑定实现中会讲。  

xmit_hash_policy配置项: xmit_hash_policy=layer2 (source MAC XOR destination MAC) % slave数量 解释:使用硬件MAC地址的XOR来生成哈希 xmit_hash_policy=layer2+3 (((source IP XOR destination IP) AND 0xffff) XOR ( source MAC XOR destination MAC )) % slave数量 解释:使用硬件 MAC 地址及 IP 地址生成哈希 xmit_hash_policy=layer3+4 ((source port XOR dest port) XOR((source IP XOR dest IP) AND 0xffff)% slave数量 解释:使用硬件 端口号 及 IP 地址生成哈希

2.3. Bond3 :Broadcast(广播策略)

特点:所有包从所有网络接口发出,此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。需要和交换机的聚合强制不协商方式配合。 缺点:只有冗余机制,但过于浪费网络中的资源及本机的网络设备资源。

2.4. Bond4 :IEEE 802.3ad(动态链接聚合)

特点:启动时会根据IEEE 802.3ad规范创建一个聚合组。使用动态链接聚合策略,所有Slave网卡共享同样的速率和双工设定。 ​ 必要条件: ​ 1.支持使用ethtool工具获取每个slave网卡的速率和双工设定; ​ 2.需要交换机支持IEEE 802.3ad 动态链路聚合(Dynamic link aggregation)模式 ​ IEEE 802.3ad规范: ​ IEEE 802.3ad主要是对链路聚合控制协议进行了一定的标准和规范。

​ 链路聚合,又称端口聚合、端口捆绑技术。功能是将交换机的多个低带宽端口捆绑成一条高带宽链路,同时通过几个端口进行链路负载均衡,避免链路出现拥塞现象。

2.5. Bond5 :Balance-tlb(适配器传输负载均衡)

特点:是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave。该模式要求slave接口的设备驱动有ethtool支持。​不需要交换机支持。在每个slave上根据当前的负载(根据速度计算)分配外出流量。 ​必要条件:ethtool支持获取每个slave的速率。 缺点:不支持发送负载均衡

2.6. Bond6 :Balance-alb(适配器适应性负载均衡)  

特点:该模式包含了Bond5模式,同时加上接收负载均衡(receive load balance),同样不需要交换机的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。

缺点:ARP协商中存在一些问题(未深入了解,仅列出)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有