目录
一、理论
1.链路聚合
2.bond模式
3.team模式
4.bond和team区别
二、实验
1.实现bond网络接口
2.实现team网络接口
三、总结
一、理论
1.链路聚合
(1)概念
链路聚合(Link Aggregation),它是一个计算机网络术语,指将多个物理端口汇聚在一起,形成一个逻辑端口,以实现出/入流量吞吐量在各成员端口的负荷分担,交换机根据用户配置的端口负荷分担策略决定网络封包从哪个成员端口发送到对端的交换机。当交换机检测到其中一个成员端口的链路发生故障时,就停止在此端口上发送封包,并根据负荷分担策略在剩下的链路中重新计算报文的发送端口,故障端口恢复后再次担任收发端口。链路聚合在增加链路带宽、实现链路传输弹性和工程冗余等方面是一项很重要的技术。
(2)原理
多个物理的端口绑定在一起当成一个逻辑端口来使用,提高带宽,实现负载平衡或高可用的功能
(3)应用场景: 网卡的链路聚合就是将多块网卡连接起来,当一块网卡损坏时,其余网卡仍工作,网络依旧可以正常运行,可以有效的防止因为网卡损坏带来的损失,同时也可以提高网络访问速度,其余网卡作为替补,防患于未然.
(3)配置模式
网卡的链路聚合常用的有 bond 和 team 两种模式,bond模式最多可以添加两块网卡,team模式最多可以添加八块网卡。
2.bond模式
(1)概念
将2块网卡虚拟成为一块网卡,使其具有相同的ip地址,来实现提升主机的网络吞吐量或者是提高可用性,这种技术被称作bonding。
(2)聚合方式:
表1 bond聚合方式
服务器网卡绑定模式 | 交换机对接方式 | 说明 | |
mod=0 | (balance-rr) Round-robin policy(轮询) | 配置手工模式链路聚合路聚合与之对接。 | 服务器所绑定的网卡被修改成相同的MAC地址,需要交换机通过手工模式链路聚合与之对接。 |
mod=1 | (active-backup) Active-backup policy(主-备份策略) | 配置对接接口在同一个VLAN | 服务器采用双网卡时, 一个处于主状态, 一个处于从状态,所有数据都通过主状态的端口传输。当主状态端口对应链路出现故障时,数据通过从状态端口传输。因此交换机对应的两个端口建议配置在同一个VLAN。 |
mod=2 | (balance-xor) XOR policy(平衡策略) | 配置手工模式链路聚合 | 服务器的多网卡基于指定的HASH策略传输数据包,需要交换机配置手工模式链路聚合与之对接。 |
mod=3 | broadcast(广播策略) | 采用两台交换机对接且配置在不同VLAN | 服务器的多网卡对于同一份报文会复制两份分别从两个端口传输,建议使用式链路聚合与之对接。 |
mod=4 | (802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合) | 配置LACP链路聚合 | 服务器的多网卡采用L ACP模式绑定,对应交换机应采用L ACP模式的链路聚合与之对接。 |
mod=5 | (balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡) | 采用两台交换机对接 | 服务器的多网卡采用适配器传输负载均衡,交换机上不需进行配置。 |
mod=6 | (balance-alb) Adaptive load balancing(适配器适应性负载均衡) | 采用两台交换机对接 | 服务器的多网卡采用适配器适应性负载均衡,交换机上不需要进行配置。 |
(3) 内核加载bond模块并查看
3.team模式
(1)概念
链路聚合的一种方式,最多支持8块网卡,相比 bond 更加稳定可靠。
(2)聚合方式:
表2 team聚合方式
种类 | 名称 |
broadcast | 广播容错 |
round-robin | 平衡轮叫 |
active-backup | 主备 |
load-balance | 负载均衡 |
4.bond和team区别
bond只能是双网卡绑定,team不需要手动加载相应内核模块和有更强的拓展性,最高可以绑定8块网卡。
其他参数区别:
表3 bond和team对比
聚合方式 | bond模式 | team模式 |
broadcast TX policy | Yes | Yes |
round-robin TX policy | Yes | Yes |
active-backup TX policy | Yes | Yes |
LACP (802.3ad) support | Yes | Yes |
hash-based TX policy | Yes | Yes |
TX load-balancing support (TLB) | Yes | Yes |
VLAN support | Yes | Yes |
LACP hash port select | Yes | Yes |
Ethtool link monitoring | Yes | Yes |
ARP link monitoring | Yes | Yes |
ports up/down delays | Yes | Yes |
configurable via Network Manager (gui, tui, and cli) | Yes | Yes |
multiple device stacking | Yes | Yes |
highly customizable hash function setup | No | Yes |
D-Bus interface | No | Yes |
ØMQ interface | No | Yes |
port priorities and stickiness (“primary” option enhancement) | No | Yes |
separate per-port link monitoring setup | No | Yes |
logic in user-space | No | Yes |
modular design | No | Yes |
NS/NA (IPV6) link monitoring | No | Yes |
load-balancing for LACP support | No | Yes |
lockless TX/RX path | No | Yes |
user-space runtime control | Limited | Full |
multiple link monitoring setup | Limited | Yes |
extensibility | Hard | Easy |
performance overhead | Low | Very Low |
RX load-balancing support (ALB) | Yes | Planned |
RX load-balancing support (ALB) in bridge or OVS | No | Planned |
5.桥接
(1)概念
桥接是虚拟网卡,默认主机是没有网桥的(内核不开放的),虚拟机内核和系统和真机的内核和系统是相互独立的。
真机上网是通过内核调用网卡与外界进行联系的,而虚拟机的网卡是虚拟化的,不能直接上网。所以在真机的内核上面开一个网络桥接的口,将虚拟机的内核和真机的网卡连接在一起,从而虚拟机可以通过真机的网卡上网。
即在网卡上开一个接口,而该接口绑定一个IP,同一网段的虚拟机直接通过此接口绑定的IP与外界通信,相当于在虚拟机和真机上面架了一个桥,不需要受内核路由的控制,直接可以与外界通信
NAT和网桥的对比 :
表4 NAT和网桥对比
序号 | 对比 |
1 | 相对于NAT,网桥不需要地址伪装,也不需要路由转发,也不需要配置网关,就可以与外界通信(配置的繁琐性) |
2 | 网桥是工作在数据链路层(不需要IP,通过MAC通信),而NAT是在网络层(需要IP),所以前者的速度比后者快 |
二、实验
1.实现bond网络接口
(1)添加网卡
(2)ifconfig查看网卡
NAME=bond1
TYPE=bond
DEVICE=bond1
BOOTPROTO=none
IPADDR=192.168.204.150
NETMASK=255.255.255.0
GATEWAY=192.168.204.2
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
(3)创建bond设备文件
切换目录创建文件
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-bond1
配置文件
NAME="bond1"
TYPE="bond"
DEVICE="bond1"
BOOTPROTO="static"
NM_CONTROLLED="no"
ONBOOT="yes"
IPADDR=192.168.204.150
NETMASK=255.255.255.0
GATEWAY=192.168.204.2
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
(4)进入主网卡ens33配置主bond
[root@localhost network-scripts]# vim ifcfg-ens33
BOOTPROTO="static"
TYPE=Ethernet
NAME="ens33"
DEVICE="ens33"
ONBOOT="no"
MASTER="bond1"
SLAVE="yes"
(5)进入备网卡ens36配置从属bond
[root@localhost network-scripts]# vim ifcfg-ens36
NAME="ens36"
TYPE=Ethernet
DEVICE="bond1"
BOOTPROTO="none"
MASTER=bond1
SLAVE="yes"
ONBOOT="no"
(6)重启网卡使用另一台主机进行ping操作,在本主机使用ifdown ens33关闭ens33网卡
结果:ping过程中关闭ens33网卡依然能ping通
(7)使用ifup ens33开启ens33网卡,然后使用另一台主机进行ping操作,在本主机使用ifdown ens36关闭ens36网卡
结果:ping过程中关闭ens36网卡依然能ping通
(8)使用ifup ens36开启ens36网卡,然后使用另一台主机进行ping操作,在本主机分别关闭ens33网卡、ens36网卡。
结果:2个网卡都关闭后ping的主机会卡顿然后报错未发现此地址
(9)分别开启ens33、ens36网卡。然后使用cat /proc/net/bonding/bond1查看bond1信息,此bond1名称为配置文件中配置的bond名称
cat /proc/net/bonding/bond1
2.实现team网络接口
(1)备份
[root@localhost network-scripts]# mv /etc/sysconfig/network-scripts/ifcfg-ens* /etc/sysconfig/network-scripts/backup
(2)查看设备状态
nmcli device status
(3)重启网络
systemctl restart network
(4)创建链路聚合,模式为 loadbalance
nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"loadbalance"}}'
(5) 查看网卡状态
nmcli connection show
(6)开启team0-1与team0-2
(7)添加team0 网卡配置
(8)开启team0
(9)查看生成了三个有关team模式的配置文件,主接口和两个子接口配置 ifcfg-team0 ifcfg-team0-1 ifcfg-team0-2 ...
(10)查看team0链路状态
(11)查看当前工作网卡
如果是主备模式可以查看是当前工作的网卡
关闭备设备并查看
启动备设备并查看
三、总结
Linux配置链路聚合的两种方式 ,网卡的链路聚合一般常用的有"bond"和"team"两种模式,"bond"模式最多可以添加两块网卡,"team"模式最多可以添加八块网卡。
在网卡绑定选项上可以根据操作系统来选择,team模式是 CentOS7 加上的,如果是 CentOS7及以上系统可选用team模式绑定,支持更多拓展性以及更节省资源。另外如果是要做桥接网络的话,目前测试只能使用bond模式,team模式无法桥接。