链路聚合简介
1、链路聚合介绍
链路聚合(英语:Link Aggregation)是一个计算机网络术语,指将多个物理端口汇聚在一起,形成一个逻辑端口,以实现出/入流量吞吐量在各成员端口的负荷分担,交换机根据用户配置的端口负荷分担策略决定网络封包从哪个成员端口发送到对端的交换机。当交换机检测到其中一个成员端口的链路发生故障时,就停止在此端口上发送封包,并根据负荷分担策略在剩下的链路中重新计算报文的发送端口,故障端口恢复后再次担任收发端口。链路聚合在增加链路带宽、实现链路传输弹性和工程冗余等方面是一项很重要的技术。
2、Linux配置链路聚合的两种方式
网卡的链路聚合一般常用的有"bond"和"team"两种模式,"bond"模式最多可以添加两块网卡,"team"模式最多可以添加八块网卡。
练习-网卡链路聚合
(1)bonding一共有7种工作模式
0:(balance-rr) Round-robin policy: (平衡轮询策略):传输数据包顺序是依次传输,直到最后一个传输完毕, 此模式提供负载平衡和容错能力。
1:(active-backup) Active-backup policy:(活动备份策略):只有一个设备处于活动状态。 一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。 此模式提供了容错能力。
2:(balance-xor) XOR policy:(平衡策略):传输根据[(源MAC地址xor目标MAC地址)mod 设备数量]的布尔值选择传输设备。 此模式提供负载平衡和容错能力。
3:(broadcast) Broadcast policy:(广播策略):将所有数据包传输给所有设备。 此模式提供了容错能力。
4:(802.3ad) IEEE 802.3ad Dynamic link aggregation. IEEE 802.3ad 动态链接聚合:创建共享相同的速度和双工设置的聚合组。此模式提供了容错能力。每个设备需要基于驱动的重新获取速度和全双工支持;如果使用交换机,交换机也需启用 802.3ad 模式。
5:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡):通道绑定不需要专用的交换机支持。发出的流量根据当前负载分给每一个设备。由当前设备处理接收,如果接受的设备传不通就用另一个设备接管当前设备正在处理的mac地址。
6:(balance-alb) Adaptive load balancing: (适配器负载均衡):包括mode5,由 ARP 协商完成接收的负载。bonding驱动程序截获 ARP 在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。
在deepin系统中添加2块新的网卡(这里在虚拟机中添加网卡)
nmcli device show | grep DEVICE #发现新增2块网卡ens38和ens39
root@fff-PC:~# nmcli device
DEVICE TYPE STATE CONNECTION
ens33 ethernet 已连接 test
nm-bond bond 已连接 bond0
ens38 ethernet 已连接 ens38
ens39 ethernet 已连接 ens39
lo loopback 未托
此时,系统上有三块网卡。
2)新建bond
命令如下:
nmcli connection add type bond con-name bond0 mode active-backup ipv4.addresses 192.168.58.166/24" #表示添加一个bond,名称为bond0,工作模式为主备,IP为"192.168.58.166"。
nmcli connection add con-name ens38 ifname ens39 type bond-slave master bond0
#将ens33网卡连接添加到这个bond中。
nmcli connection add con-name ens37 ifname ens39 type bond-slave master bond0
#将ens37网卡连接添加到这个bond中。
nmcli connection up ens33 #启动bond-slave ens33
nmcli connection up ens37 #启动bond-slave ens37
nmcli connection up bond0 #启动bond0
ip a #查看ens33和ens37网卡mac地址相同
cat /proc/net/bonding/nm-bond #查看bond已生效
结果如下:
root@fff-PC:~# nmcli connection
NAME UUID TYPE DEVICE
bond0 43653f36-5d14-4822-935c-61ed6aa51387 bond nm-bond
ens38 35aad3cc-b249-4892-9ff3-a8a817f4104c ethernet ens38
ens39 9ec6fe9d-1a9f-46df-b6ff-d36a6a546498 ethernet ens39
test 9c60fbe4-ef58-419e-9fab-2060311b6301 ethernet ens33
root@fff-PC:~# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:1b:d8:95 brd ff:ff:ff:ff:ff:ff
inet 192.168.58.106/24 brd 192.168.58.255 scope global dynamic noprefixroute ens33
valid_lft 84865sec preferred_lft 84865sec
inet6 fe80::cc68:b46a:5012:8ed6/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master nm-bond state UP group default qlen 1000
link/ether 00:0c:29:1b:d8:9f brd ff:ff:ff:ff:ff:ff
4: ens39: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master nm-bond state UP group default qlen 1000
link/ether 00:0c:29:1b:d8:9f brd ff:ff:ff:ff:ff:ff
5: nm-bond: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:1b:d8:9f brd ff:ff:ff:ff:ff:ff
inet 192.168.58.105/24 brd 192.168.58.255 scope global dynamic noprefixroute nm-bond
valid_lft 85633sec preferred_lft 85633sec
inet 192.168.58.166/24 brd 192.168.58.255 scope global secondary noprefixroute nm-bond
valid_lft forever preferred_lft forever
inet6 fe80::cea3:7ebf:9534:1396/64 scope link noprefixroute
valid_lft forever preferred_lft forever
root@fff-PC:~#
root@fff-PC:~# cat -n /proc/net/bonding/nm-bond
1 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
2
3 Bonding Mode: fault-tolerance (active-backup)
4 Primary Slave: None
5 Currently Active Slave: ens38
6 MII Status: up
7 MII Polling Interval (ms): 100
8 Up Delay (ms): 0
9 Down Delay (ms): 0
10 Peer Notification Delay (ms): 0
11
12 Slave Interface: ens38
13 MII Status: up
14 Speed: 1000 Mbps
15 Duplex: full
16 Link Failure Count: 0
17 Permanent HW addr: 00:0c:29:1b:d8:9f
18 Slave queue ID: 0
19
20 Slave Interface: ens39
21 MII Status: up
22 Speed: 1000 Mbps
23 Duplex: full
24 Link Failure Count: 0
25 Permanent HW addr: 00:0c:29:1b:d8:a9
26 Slave queue ID: 0
(4)删除bond模式的链路聚合
命令如下:
nmcli connection delete bond0
nmcli connection delete ens38
nmcli connection delete ens39
systemctl restart NetworkManager
2、练习-桥接
还原虚拟机到初始状态
创建桥接网络连接 test-br:
root@fff-PC:~# nmcli connection add type bridge con-name test-br ifname bridge
连接 "test-br" (539bcc2b-ba2f-43f5-8934-d9702d57ca09) 已成功添加。
root@fff-PC:~#
修改test-br ip 地址:
root@fff-PC:~# nmcli connection modify test-br ipv4.method manual ipv4.addresses 192.168.58.166/24 ipv4.gateway 192.168.58.1 ipv4.dns 114.114.114.114
root@fff-PC:~#
将网卡ens38桥接到test-br:
nmcli connection add con-name uosbrslave1 type bridge-slave ifname ens38 master test-br
启动桥接网路配置:
nmcli connection up test-br
重启网络配置服务:
systemctl restart NetworkManager
查看:
nmcli connection show #如果出现重名的uosbr配置文件,需要删除错误的uuid,再nmcli connection up uosbr和systemctl restart NetworkManager
ping -I uosbr 192.168.100.202 #-I表示从哪块网卡发出ping包
3、实验-删除虚拟桥接网卡virbr0
方法1
apt-get remove -y libvirt-*
reboot
nmcli connection show #虚拟桥接网卡virbr0已删除
方法2
virsh net-list #查看虚拟网络设备
virsh net-destroy default #删除名为default的设备
virsh net-undefine default #删除配置文件中的相关信息
systemctl restart libvirtd
nmcli connection show #虚拟桥接网卡virbr0已删除