一、链路聚合原理
1.1 原理简述
链路聚合能够提高链路带宽,增强网络可用性,支持负载分担。
链路聚合是把两台设备之间的多条物理链路聚合在一起,当做一条逻辑链路来使用。这两台设备可以是一对路由器,一对交换机,或者是一台路由器和一台交换机。一条聚合链路可以包含多条成员链路,默认最多为8条。链路聚合能够提高链路带宽。理论上,通过聚合几条链路,一个聚合口的带宽可以扩展为所有成员口带宽的总和,这样就有效地增加了逻辑链路的带宽。链路聚合为网络提供了高可靠性。配置了链路聚合之后,如果一个成员接口发生故障,该成员口的物理链路会把流量切换到另一条成员链路上。链路聚合还可以在一个聚合口上实现负载均衡,一个聚合口可以把流量分散到多个不同的成员口上,通过成员链路把流量发送到同一个目的地,将网络产生拥塞的可能性降到最低。
1.2 链路聚合模式
链路聚合包含两种模式:手动负载均衡模式和静态LACP(Link Aggregation Control Protocol)模式。
1.2.1 手工负载均衡模式
- 手工负载分担模式下所有活动接口都参与数据的转发,分担负载流量。
手工负载分担模式下,Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议的参与。该模式下所有活动链路都参与数据的转发,平均分担流量,因此称为负载分担模式。如果某条活动链路故障,链路聚合组自动在剩余的活动链路中平均分担流量。当需要在两个直连设备间提供一个较大的链路带宽而设备又不支持LACP协议时,可以使用手工负载分担模式。ARG3系列路由器和X7系列交换机可以基于目的MAC地址,源MAC地址,或者基于源MAC地址和目的MAC地址,源IP地址,目的IP地址,或者基于源IP地址和目的IP地址进行负载均衡。
1.2.2 静态LACP(Link Aggregation Control Protocol)模式
- LACP模式支持链路备份。
在静态LACP模式中,链路两端的设备相互发送LACP报文,协商聚合参数。协商完成后,两台设备确定活动接口和非活动接口。在静态LACP模式中,需要手动创建一个Eth-Trunk口,并添加成员口。LACP协商选举活动接口和非活动接口。静态LACP模式也叫M:N模式。M代表活动成员链路,用于在负载均衡模式中转发数据。N代表非活动链路,用于冗余备份。如果一条活动链路发生故障,该链路传输的数据被切换到一条优先级最高的备份链路上,这条备份链路转变为活动状态。
在静态LACP模式的Eth-Trunk中加入成员端口后,这些端口将向对端通告自己的优先级、mac地址、接口优先级、接口ID等信息,对端接受到这些信息后,将这些信息与自身接口所保存的信息进行比较以选择出能够聚合的端口双方对那些端口能够达成一致,确定活动链路。
在两端设备中选择优先级较高的一端作为主动端,如果系统LACP优先级相同则选择Mac地址较小的一端作为主动端(注:系统优先级的值越小,优先级越高,默认是32768)
接口LACP的值越小优先级越高,如果接口LACP的值相同,接口ID小的优先级被选为活动接口(注:接口LACP优先级是为了区分同一个Eth-Trunk中不同接口被选为活动接口的有限程度,优先级越高的接口被选择为活动接口)
静态LACP的抢占机制:
LACP抢占延时设置:LACP抢占发生时,处于备份状态的链路将会等待一段时间后,再切换到转发状态,这就是抢占延时配置抢占延时是为了避免由于某些链路频繁变化而导致的Eth-trunk数据传输不稳定的情况发生,在链路恢复正常,若系统使能了LACP抢占延时,端口重新切换回活动端口的状态就需要经过抢占延时的时间。
1.3 流量控制
- Eth-Trunk链路两端相连的物理接口的数量、速率、双工方式、流控方式必须一致。
在一个聚合口中,聚合链路两端的物理口(即成员口)的所有参数必须一致,包括物理口的数量,传输速率,双工模式和流量控制模式。成员口可以是二层接口或三层接口。数据流在聚合链路上传输,数据顺序必须保持不变。一个数据流可以看做是一组MAC地址和IP地址相同的帧。例如,两台设备间的Telnet或FTP连接可以看做一个数据流。如果未配置链路聚合,只是用一条物理链路来传输数据,那么一个数据流中的帧总是能按正确的顺序到达目的地。配置了链路聚合后,多条物理链路被绑定成一条聚合链路,一个数据流中的帧通过不同的物理链路传输。如果第一个帧通过一条物理链路传输,第二个帧通过另外一条物理链路传输,这样一来同一数据流的第二个数据帧就有可能比第一个数据帧先到达对端设备,从而产生接收数据包乱序的情况。为了避免这种情况的发生,Eth-Trunk采用逐流负载分担的机制,这种机制把数据帧中的地址通过HASH算法生成HASH-KEY值,然后根据这个数值在Eth-Trunk转发表中寻找对应的出接口,不同的MAC或IP地址HASH得出的HASH-KEY值不同,从而出接口也就不同,这样既保证了同一数据流的帧在同一条物理链路转发,又实现了流量在聚合组内各物理链路上的负载分担,即逐流的负载分担。逐流负载分担能保证包的顺序,但不能保证带宽利用率。
负载分担的类型主要包括以下几种,用户可以根据具体应用选择不同的负载分担类型。
- 根据报文的源MAC地址进行负载分担;
- 根据报文的目的MAC地址进行负载分担;
- 根据报文的源IP地址进行负载分担;
- 根据报文的目的IP地址进行负载分担;
- 根据报文的源MAC地址和目的MAC地址进行负载分担;
- 根据报文的源IP地址和目的IP地址进行负载分担;
- 根据报文的VLAN、源物理端口等对L2、IPv4、IPv6和MPLS报文进行增强型负载分担。
二、链路聚合配置
配置Eth-Trunk口和成员口,需要注意以下规则:
- 只能删除不包含任何成员口的Eth-Trunk口。
- 把接口加入Eth-Trunk口时,二层Eth-Trunk口的成员口必须是二层接口,三层Eth-Trunk口的成员口必须是三层接口。
- 一个Eth-Trunk口最多可以加入8个成员口。
- 加入Eth-Trunk口的接口必须是hybrid接口(默认的接口类型)。
- 一个Eth-Trunk口不能充当其他Eth-Trunk口的成员口。
- 一个以太接口只能加入一个Eth-Trunk口。如果把一个以太接口加入另一个Eth-Trunk口,必须先把该以太接口从当前所属的Eth-Trunk口中删除。
- 一个Eth-Trunk口的成员口类型必须相同。例如,一个快速以太口(FE口)和一个千兆以太口(GE口)不能加入同一个Eth-Trunk。
- 位于不同接口板(LPU)上的以太口可以加入同一个Eth-Trunk口。如果一个对端接口直接和本端Eth-Trunk口的一个成员口相连,该对端接口也必须加入一个Eth-Trunk口。否则两端无法通信。
- 如果成员口的速率不同,速率较低的接口可能会拥塞,报文可能会被丢弃。
- 接口加入Eth-Trunk口后,Eth-Trunk口学习MAC地址,成员口不再 学习。
- 如果要在路由器上配置三层链路聚合,需要首先创建Eth-Trunk接口,然后在Eth-Trunk逻辑口上执行undo portswitch命令,把聚合链路从二层转为三层链路。执行undo portswitch命令后,可以为Eth-Trunk逻辑口分配一个IP地址。
[Huawei]interface Eth-Trunk 1
[Huawei-Eth-Trunk1]interface GigabitEthernet0/0/1
[Huawei-GigabitEthernet0/0/1]eth-trunk 1
[Huawei-GigabitEthernet0/0/1]interface GigabitEthernet0/0/2
[Huawei-GigabitEthernet0/0/2]eth-trunk 1
2.1 手工负载分担模式:
实验拓扑:
<Huawei>system-view
[Huawei]vlan batch 10 20
[Huawei]interface Eth-Trunk 1
[Huawei-Eth-Trunk1]trunkport GigabitEthernet 0/0/1 to 0/0/2
[Huawei-Eth-Trunk1]mode manual load-balance
[Huawei-Eth-Trunk1]portswitch
[Huawei-Eth-Trunk1]load-balance src-dst-ip
[Huawei-Eth-Trunk1]port link-type trunk
[Huawei-Eth-Trunk1]port trunk allow-pass vlan 10 20
LSW2配置相同。
2.2静态LACP
实验拓扑:
LSW1:
<Huawei>system-view
[Huawei]vlan batch 10 20
[Huawei]interface Eth-Trunk 1
[Huawei-Eth-Trunk1]trunkport GigabitEthernet 0/0/1 to 0/0/3
[Huawei-Eth-Trunk1]mode lacp-static
[Huawei-Eth-Trunk1]load-balance src-dst-mac # 设置负载分担模式
[Huawei-Eth-Trunk1]max active-linknumber 2 # 设置活动链路为2条
[Huawei-Eth-Trunk1]max bandwidth-affected-linknumber 3 # 设置最大链路数量为3
[Huawei-Eth-Trunk1]lacp preempt enable # 开启LACP抢占
[Huawei-Eth-Trunk1]lacp preempt delay 10 # 设置LACP抢占延时
[Huawei-Eth-Trunk1]port link-type trunk
[Huawei-Eth-Trunk1]port trunk allow-pass vlan 10 20
[Huawei-Eth-Trunk1]quit
[Huawei]interface GigabitEthernet 0/0/4
[Huawei-GigabitEthernet0/0/4]port link-type access
[Huawei-GigabitEthernet0/0/4]port default vlan 10
[Huawei-GigabitEthernet0/0/4]quit
[Huawei]interface GigabitEthernet 0/0/5
[Huawei-GigabitEthernet0/0/5]port link-type access
[Huawei-GigabitEthernet0/0/5]port default vlan 20
[Huawei-GigabitEthernet0/0/5]quit
LSW2配置相同。