网卡绑定简介

   Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,

通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项 技术在SunCisco中早已存在,被称为TrunkingEtherchannel技术,在Linux2.4.x的内核中也采用这这种技术,被称为bonding

现在一般的企业都会使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多。

linux有七种网卡绑定模式:

0. round robin           

1.active-backup          

2.load balancing (xor)

3.fault-tolerance (broadcast)

4.lacp 

5.transmit load balancing

6.adaptive load balancing

第一种:bond0:round robin

特点:(1)所有链路处于负载均衡状态,轮询方式往每条链路发送报文,基于per packet方式发送。服务上ping 一个相同地址:1.1.1.1 双网卡的两个网卡都有流量发出。负载到两条链路上,说明是基于per packet方式 ,进行轮询发送。

2)这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。

注意:应用拓扑:交换机端需要配置聚合口,ciscoport channel

实验步骤

1、编辑文件

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=dhcp

ONBOOT=yes

vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTPROTO=dhcp            ##网卡没有地址

ONBOOT=yes                    ##开机启动激活

2、产生额外的一块网卡

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-bond0

3、配置产生的网卡

[root@localhost network-scripts]# vim ifcfg-bond0

DEVICE=bond0

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.10.10

NETMASK=255.255.255.0

加载bonding模块

modprobe bonding

查看模块信息

modinfo    bonding

编辑模块的配置文件  

vim /etc/modprobe.conf

alias bond0 bonding             ##别名bond0使用的模块是bonding

options bond0 miimon=100 mode=0  ##对别名bond0  模式0  

4、在开机脚本中声明bond0绑定的网卡

touch /var/lock/subsys/local

ifenslave bond0 eth0 eth1        ##把多个辅助网卡绑定成一个网卡

重启系统查看

cat /proc/net/bonding/bond0

[root@localhost ~]# cat /proc/net/bonding/bond0

Bonding Mode: load balancing (round-robin)   ##轮循模式

MII Status: up

MII Polling Interval (ms): 100           eth0.eth1

Up Delay (ms): 0

Down Delay (ms): 0

 

Slave Interface: eth0

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:0c:29:5f:b3:a1

 

Slave Interface: eth1

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:0c:29:5f:b3:ab

当期中一条链路不正常时,链路会迅速把数据信息转到另一条链路

 

第二种:bond1:active-backup

特点:一个端口处于主状态 ,一个处于从状态,所有流量都在主链路上处理,从不会有任何流量。当主端口down掉时,从端口接手主状态。

内核中网卡绑定的情况

cat /proc/net/bonding/bond0

[root@localhost ~]# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.2.5 (March 21, 2008)

 

Bonding Mode: fault-tolerance (active-backup)    ##主备模式

Primary Slave: None

Currently Active Slave: eth0                  ##激活的物理网卡eth0

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

 

Slave Interface: eth0                         ##两个物理网卡

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:0c:29:5f:b3:a1

 

Slave Interface: eth1

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:0c:29:5f:b3:ab

假设eth0的网卡的线路断掉了,是什么情况呢

 

再看网卡绑定信息

cat /proc/net/bonding/bond0

 

Currently Active Slave: eth1

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

 

Slave Interface: eth0

MII Status: down

Link Failure Count: 1                   ##eth0关闭了,eth1被激活

Permanent HW addr: 00:0c:29:5f:b3:a1

 

Slave Interface: eth1

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:0c:29:5f:b3:ab

eth0线路正常时,eth1,仍然处于被激活状态

第三种:bond2:load balancing (xor)

特点:该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。如果所有流量是通过单个路由器(比如 “网关”型网络配置,只有一个网关时,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。),那该模式就不是最好的选择。和balance-rr一样,交换机端口需要能配置为“port channel”。这模式是通过源和目标machash因子来做xor算法来选路的。

[root@localhost ~]# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.2.5 (March 21, 2008)

 

Bonding Mode: load balancing (xor)

Transmit Hash Policy: layer2 (0)

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

 

Slave Interface: eth0

MII Status: up

Link Failure Count: 1

Permanent HW addr: 00:0c:29:5f:b3:a1

 

Slave Interface: eth1

MII Status: up

Link Failure Count: 1

Permanent HW addr: 00:0c:29:5f:b3:ab

第四种:bond3:fault-tolerance (broadcast)

特点:这种模式的特点是一个报文会复制两份往bond下的两个接口分别发送出去,当有对端交换机失效,我们感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容错机制。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。

[root@localhost ~]# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.2.5 (March 21, 2008)

Bonding Mode: fault-tolerance (broadcast)

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

 

Slave Interface: eth0

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:0c:29:5f:b3:a1

 

Slave Interface: eth1

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:0c:29:5f:b3:ab

 注:其他几种方式可以按照上述方法自己配置,不一一列举!