华为-6-链路聚合堆叠
当两台交换机使用多条链路连接时,一方面可以避免唯一一条线路故障导致链路中断,另一方面也可以提升两台交换机之间的带宽。为了避免环路的产生,交换机通常会只保留一条链路,其他链路阻塞,这样就造成了带宽浪费。这就要使用到链路聚合。
链路聚合常识
链路聚合带来以下好处:
- 增加带宽:链路聚合接口的最大带宽是其成员接口带宽之和
- 提高可用性:当一条活跃的链路出现故障时,相关流量会自动切换到其他可用的成员链路上
- 负载分担:一个虚拟链路组合中的多条活跃的物理链路可以实现负载分担
链路聚合相关概念:
- 链路聚合组(LAG Link Aggregation Group):多条以太网链路捆绑在一起形成的逻辑链路
- 链路聚合接口(Eth-trunk接口):一个链路聚合组对应一个链路聚合接口,它是由多个物理接口所连接的链路捆绑在一起形成的逻辑接口
- 成员接口和成员链路:Eth-trunk接口的每个物理接口成为成员接口,成员接口所连接的链路成为成员链路
- 活动接口和非活动接口:活动接口负责转发数据,非活动接口不转发数据;活动接口对应的链路被称为活动链路,非活动接口对应的链路被称为非活动链路
- 活动接口上限阈值:一个链路聚合组中的活动接口的数量由管理员根据实际情况设置;当3G带宽的链路聚合组中捆绑了5个1G的物理接口时,管理员可将活动接口上限设置为3,此时有3条链路进入活跃状态,另外两条链路进入非活跃状态并提供备份。手动配置不支持该设置。
- 活动接口下限阈值:为保障最小带宽,管理员可以设置活动接口下线阈值,当活动接口链路数量小于该值时,Eth-trunk接口会进入Down状态
- 链路聚合工作模式:手动模式和LACP(Link Aggregation Control Protocol 链路聚合控制协议)模式
链路聚合模式
将两台交换机的g0/0/10,g0/0/11,g0/0/12接口分别对应连接,此时可以看到3条链路中只有一条链路能够转发数据,其他两条进入阻塞状态。链路聚合配置可以将这3个物理接口捆绑为一个逻辑接口,从而避免STP将物理端口阻塞掉。
1 | [SW1]dis stp brief |
手动模式
以太网链路聚合手动配置需要以下两个步骤:
- interface eth-trunk trunk-id:系统视图命令,创建Eth-Trunk接口并进入接口视图
- mode manual load-balance(可选):接口视图命令,设置链路聚合模式为手工模式
- 接口加入Eth-Trunk:使用两种方式之一添加接口成员
- trunkport interface-type {interface-number} [to interface-number] 添加接口成员,在添加多个接口时,如果某个接口添加失败,则它后面的接口也不会被加入Eth-Trunk
- eth-trunk trunk-id 进入某个接口,将当前接口加入到Eth-Trunk中
- mixed-rate link enable:接口视图命令,把不同速率的端口添加到同一个Eth-Trunk端口中。
交换机端口加入Eth-Trunk时,注意:
- 每个Eth-Trunk接口最多包含8个成员接口
- Eth-Trunk接口的成员接口不能是其他Eth-Trunk接口
- 一个以太网端口只能加入一个Eth-Trunk接口,如果要加入其他的Eth-Trunk接口,需要先退出当前接口
- 当一个以太网端口被配置为Eth-Trunk接口成员后,与其直连的对端以太网端口也必须配置为Eth-Trunk端口,以便两端能正常通信
- Eth-Trunk链路两端的参数必须保持一致,包括物理端口数量,速率,双工方式等
可以使用display eth-trunk trunk-id来查看配置
1 | [SW1]interface Eth-Trunk 1 |
此时查看STP状态,发现STP不在基于每个物理端口进行计算,而是基于Eth-Trunk进行计算
1 | [SW1]dis stp brief |
LACP模式
当两台交换机通过LACP模式搭建Eth-Trunk链路时,它们之间需要先交互LACPDU(LACP Data Unit,LACP数据单元)进行协商,确保对端成员确实属于同一个Eth-Trunk接口。
在更改Eth-Trunk接口的工作模式时,我们需要先删除其中的成员接口(部分交换机不需要,根据配置手册来)。手动模式时,只要Eth-Trunk接口中加入了UP状态的成员接口,Eth-Trunk接口就会进入到UP状态;在LACP模式时,只有当链路两端的配置都完成,并且两端接口参数相同,LACP才会将Eth-Trunk接口进入UP状态。
- mode lacp-static:Eth-Trunk接口视图命令,将本接口配置为LACP模式(默认的工作模式为手动模式 manual)
1 | # 先删除端口,再更改模式 |
最小和最大活动链路数量
- least active-linknumber link-number:Eth-Trunk接口视图命令,设置链路聚合活动接口数量的下限阈值,默认情况是1,当链路两端下限阈值不一致时,以较大的为准。
- max active-linknumber link-number:Eth-Trunk接口视图命令,设置链路聚合活动接口数量的上限阈值,默认情况时8,当链路两端上限不一致时,以较小的为准。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29[SW1]int Eth-Trunk 1
[SW1-Eth-Trunk1]least active-linknumber 2
[SW1-Eth-Trunk1]max active-linknumber 2
# g0/0/12端口进入unselect状态, 尽管SW2的参数未发生改变,SW2的g0/0/12端口也会进入unselect状态,但是配置尽量保持一致
[SW1]dis eth-trunk 1
Eth-Trunk1s state information is:
Local:
LAG ID: 1 WorkingMode: STATIC
Preempt Delay: Disabled Hash arithmetic: According to SIP-XOR-DIP
System Priority: 32768 System ID: 4c1f-ccd5-7970
Least Active-linknumber: 2 Max Active-linknumber: 2
Operate status: up Number Of Up Port In Trunk: 2
--------------------------------------------------------------------------------
ActorPortName Status PortType PortPri PortNo PortKey PortState Weight
GigabitEthernet0/0/10 Selected 1GE 32768 11 305 10111100 1
GigabitEthernet0/0/11 Selected 1GE 32768 12 305 10111100 1
GigabitEthernet0/0/12 Unselect 1GE 32768 13 305 10100000 1
Partner:
--------------------------------------------------------------------------------
ActorPortName SysPri SystemID PortPri PortNo PortKey PortState
GigabitEthernet0/0/10 32768 4c1f-cce9-3ef5 32768 11 305 10111100
GigabitEthernet0/0/11 32768 4c1f-cce9-3ef5 32768 12 305 10111100
GigabitEthernet0/0/12 32768 4c1f-cce9-3ef5 32768 13 305 10110000
[SW2]int Eth-Trunk 1
[SW2-Eth-Trunk1]least active-linknumber 2
[SW2-Eth-Trunk1]max active-linknumber 2
LACP系统优先级
在LACP模式中,链路两端的设备会根据管理员的配置或者默认规则,选择Eth-Trunk中的活动接口,只有当两端选择的活动接口一致时,才能正常工作。LACP系统优先级的作用时设置链路哪端的设备为主动端,并由它来决定活动接口的选择。
- lacp priority priority:系统视图命令,设置当前设备的LACP系统优先级,默认值:32768,值越低,优先级越高。如果优先级相同,则MAC地址较小的一端会成为主动端。
1
2
3
4
5
6
7
8
9
10
11[SW1]lacp priority 30000
# System Priority: 30000 显示更改的值
[SW1]dis eth-trunk 1
Eth-Trunk1's state information is:
Local:
LAG ID: 1 WorkingMode: STATIC
Preempt Delay: Disabled Hash arithmetic: According to SIP-XOR-DIP
System Priority: 30000 System ID: 4c1f-ccd5-7970
Least Active-linknumber: 2 Max Active-linknumber: 2
Operate status: up Number Of Up Port In Trunk: 2
LACP接口优先级
LACP接口优先级是选择活动接口的标准
- lacp priority priority:接口视图命令,设置当前接口的LACP优先级,默认值:32768,值越低,优先级越高。如果优先级相同,接口ID较小的优先级较高。
- **lacp selected {priority|speed}**:接口视图命令,建议具有相同速率的接口捆绑为聚合链路;如果接口速率不同,可能会选择速率较低的接口成为活动接口。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24[SW1]int g0/0/10
[SW1-GigabitEthernet0/0/10]lacp priority 40000
# 发现g0/0/10没有成为非活动接口,此时需要开启LACP抢占功能
[SW1]dis eth-trunk 1
Eth-Trunk1s state information is:
Local:
LAG ID: 1 WorkingMode: STATIC
Preempt Delay: Disabled Hash arithmetic: According to SIP-XOR-DIP
System Priority: 30000 System ID: 4c1f-ccd5-7970
Least Active-linknumber: 2 Max Active-linknumber: 2
Operate status: up Number Of Up Port In Trunk: 2
--------------------------------------------------------------------------------
ActorPortName Status PortType PortPri PortNo PortKey PortState Weight
GigabitEthernet0/0/10 Selected 1GE 40000 11 305 10111100 1
GigabitEthernet0/0/11 Selected 1GE 32768 12 305 10111100 1
GigabitEthernet0/0/12 Unselect 1GE 32768 13 305 10100000 1
Partner:
--------------------------------------------------------------------------------
ActorPortName SysPri SystemID PortPri PortNo PortKey PortState
GigabitEthernet0/0/10 32768 4c1f-cce9-3ef5 32768 11 305 10111100
GigabitEthernet0/0/11 32768 4c1f-cce9-3ef5 32768 12 305 10111100
GigabitEthernet0/0/12 32768 4c1f-cce9-3ef5 32768 13 305 1010000
LACP抢占功能
LACP抢占功能可以使优先级较高的接口总是能够成为活动接口。当高优先级接口由于故障切换到非活动状态再次恢复时,抢占功能可以使高优先级接口抢占低优先级接口,成为活动接口。
配置抢占功能的同时,为其配置一个时延,也就是非活动接口切换为活动接口之前需要等待的时间,避免链路切换导致Eth-Trunk中的数据传输不稳定
- lacp preempt enable:Eth-Trunk接口视图命令,为当前Eth-trunk接口启用LACP的抢占功能
- lacp preempt delay delay-time:Eth-Trunk接口视图命令,为当前Eth-trunk配置LACP抢占时延,默认时延是30s
链路两端都进行相同的配置时,才会触发抢占功能。
1 | [SW1]interface Eth-Trunk 1 |
测试LACP备用接口
通过模拟SW1的g0/0/11接口故障,观察Eth-Trunk中活动的接口的切换。当SW1的g0/0/11故障(关闭)时,Eth-Trunk状态迅速完成了切换,g0/0/10从非活跃状态切换为活跃状态,无须等待10s,只要当g0/0/11恢复后,由于g0/0/11的优先级高于g0/0/10而要抢占活动接口,LACP抢占才会时延10s。即:发生故障立即切换不等待,故障恢复抢占需等待时间
1 | [SW1]int g0/0/11 |
测试活动链路阈值
前面设定Eth-Trunk 1 的活动链路下限阈值是2,如果当前配置关闭两个端口g0/0/11和g0/0/12,只留下一个端口g0/0/10,会导致Eth-Trunk 1变为down状态。
- display trunkmembership eth-trunk 1:查看Eth-Trunk接口的状态以及成员接口的状态
1 | [SW1]int g0/0/11 |
再次开启g0/0/11和g0/0/12,Eth-trunk 1恢复正常。
1 | [SW1-GigabitEthernet0/0/11]q |
LACP负载分担方式
可以通过配置LACP负载分担方式,将不同的数据流分布在不同的活动链路上,为了避免发生数据包乱序情况,应设置通过同一条活动链路发送同一个数据流。使用散列算法生成数据流的散列值,交换机根据散列值在Eth-Trunk中选择对应的出接口,每条数据流计算出的散列值不同,这样既保证了通过同一条链路发送同一个数据流的数据帧,也能够让多条活动链路负载分担不同的数据流。
散列值计算因素:
- 目的IP地址
- 目的MAC地址
- 源IP地址
- 源MAC地址
- 源IP地址异或目的IP地址
- 源MAC地址异或目的MAC地址
Eth-Trunk链路两端设备上的负载分担方式可以不一致,因为负载分担只对本地设备出方向的流量有效果,所以两端配置互相不影响。
- load-balance {dst-ip | dst-mac |src-ip|src-mac|src-dst-ip|src-dst-mac}:Eth-Trunk接口视图命令,配置Eth-Trunk的负载分担方式
1 | [SW1]interface Eth-Trunk 1 |
堆叠模式
多条物理链路可以捆绑为一条虚拟的逻辑链路,多台物理交换机也可以捆绑为一台逻辑上的交换机,以此提升冗余性,这就是堆叠技术。使用堆叠技术的几台交换机可以根据交换机的启动状态,优先级和MAC地址选举一台主交换机,这台主交换机负责管理逻辑交换机,并从其他交换机收集网络拓扑信息,同时选举一台备用交换机,在主交换机故障时接替主交换机。在完成选举后,其他交换机都会同步并运行主交换机的配置文件。管理员只需要对主交换机发起管理就可以管理整个堆叠。
- 集群:使用华为S12700系列的框式交换机完成堆叠,称为CSS(Cluster Switch System)集群交换机系统,只支持两台交换机
- 智能堆叠:使用华为S5700系列的盒式交换机,称为iStack(intelligent Stack)智能堆叠,支持多台交换机