链路聚合

概念

什么是链路聚合

在现网中,设备间如果通过一条链路连接,如果这条链路故障了,那么设备两端的终端就不能够通信了。有什么办法可以解决该问题呢?答案是——链路聚合

从端口的角度定义:

链路聚合(Link Aggregation)是指将多个物理端口汇聚在一起,形成一个逻辑端口,以实现出/入流量吞吐量在各成员端口的负荷分担,交换机根据用户配置的端口负载分担方式决定数据包从哪个成员端口发送到对端的交换机。

从链路的角度定义:

链路聚合(Link Aggregation)是把两台设备之间的多条物理链路聚合在一起,当做一条逻辑链路来使用。这两台设备可以是一对路由器,一对交换机,或者是一台路由器和一台交换机。一条聚合链路可以包含多条成员链路,默认最多为8条。

链路聚合的作用

  • 链路聚合能够提高链路带宽。理论上,通过聚合几条链路,一个聚合口的带宽可以扩展为所有成员口带宽的总和,这样就有效地增加了逻辑链路的带宽。
  • 链路聚合为网络提供了高可靠性。配置了链路聚合之后,如果一个成员接口发生故障,该成员口的物理链路会把流量切换到另一条成员链路上。
  • 链路聚合在一个聚合口上实现负载均衡。一个聚合口可以把流量分散到多个不同的成员口上,通过成员链路把流量发送到同一个目的地,将网络产生拥塞的可能性降到最低。

三. 链路聚合的工作原理:

应用场景:

链路聚合一般部署在核心结点,以便提升整个网络的数据吞吐量。

链路聚合能够提高链路带宽,增强网络可靠、可用性,支持负载分担。

链路聚合模式:

链路聚合包含两种模式:手动负载均衡模式静态LACP(Link Aggregation Control Protocol)模式。

  1. 手工负载分担模式:
  • 手工负载分担模式下,Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议的参与。
  • 该模式下所有活动链路都参与数据的转发,平均分担流量,因此称为负载分担模式。如果某条活动链路故障,链路聚合组自动在剩余的活动链路中平均分担流量。

使用场景:

当需要在两个直连设备间提供一个较大的链路带宽而设备又不支持LACP协议时,可以使用手工负载分担模式。

2. 静态LACP模式:

  • 在静态LACP模式中,链路两端的设备相互发送LACP报文,协商聚合参数。协商完成后,两台设备确定活动接口和非活动接口。
  • 在静态LACP模式中,需要手动创建一个Eth-Trunk口,并添加成员口。
  • 静态LACP模式也叫M:N模式。M代表活动成员链路,用于在负载均衡模式中转发数据。N代表非活动链路,用于冗余备份。
  • 如果一条活动链路发生故障,该链路传输的数据被切换到一条优先级最高的备份链路上,这条备份链路转变为活动状态。

两种链路聚合模式的主要区别:

  • 静态LACP模式中,一些链路充当备份链路。
  • 手动负载均衡模式中,所有的成员口都处于转发状态。
维度 手工模式 LACP模式
Eth-Trunk的建立方式 Eth-Trunk接口的创建、成员接口的加入由手工配置,没有链路聚合控制协议的参与。 Eth-Trunk接口的创建、成员接口的加入由手工配置,LACP协议参与链路动态调整,负责链路状态维护。在聚合条件发生变化时,自动调整或解散链路聚合。
设备是否需要支持LACP协议 不需要 需要
数据转发 正常情况下,所有链路都是活动链路。所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在剩余的活动链路中分担流量。 正常情况下,部分链路是活动链路。所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在非活动链路中选择一条链路作为活动链路,参与数据转发的链路数目不变。
检测故障 只能检测到同一聚合组内的成员链路有断路等故障,无法检测到链路断连、错连等故障。 不仅能够检测到同一聚合组内的成员链路有断路等故障,还可以检测到链路故障、链路错连等故障。

数据流控制:

Eth-trunk链路两端相连的物理接口的数量、速率、双工方式、流控方式必须一致。

优先级

0-65535

默认32768

小的优先

优先级一样,看mac,mac小的优先

配置

juhetuopu31207160429

配置手工链路聚合

# 创建Eth-Trunk接口

[S1]interface Eth-Trunk 1

interface eth-trunk命令用来进入已经存在的Eth-Trunk接口,或创建并进入Eth-Trunk接口。数字“1”代表接口编号,编号范围根据设备情况有所不同。

[S2]interface Eth-Trunk 1

# 设置Eth-Trunk接口的聚合模式

[S1-Eth-Trunk1]mode manual load-balance

mode命令用来配置Eth-Trunk的工作模式,有LACP模式和手工负载分担模式(手工模式)两种,缺省情况下,Eth-Trunk的工作模式为手工负载分担模式。此处S1上的模式配置仅为示范目的,实际操作时不需要。

# 将成员接口加入聚合组

[S1]interface GigabitEthernet 0/0/10

[S1-GigabitEthernet0/0/10]eth-trunk 1

Info: This operation may take a few seconds. Please wait for a moment…done.

[S1-GigabitEthernet0/0/10]quit

[S1]interface GigabitEthernet 0/0/11

[S1-GigabitEthernet0/0/11]eth-trunk 1

Info: This operation may take a few seconds. Please wait for a moment…done.

[S1-GigabitEthernet0/0/11]quit

[S1]interface GigabitEthernet 0/0/12

[S1-GigabitEthernet0/0/12]eth-trunk 1

Info: This operation may take a few seconds. Please wait for a moment…done.

[S1-GigabitEthernet0/0/12]quit

可进入到成员接口的接口视图下,逐一添加到Eth-Trunk接口。也可以在Eth-Trunk接口视图下通过trunkport命令批量添加接口。

[S2]interface Eth-Trunk 1

[S2-Eth-Trunk1]trunkport GigabitEthernet 0/0/10 to 0/0/12

Info: This operation may take a few seconds. Please wait for a moment…done.

将成员接口加入Eth-Trunk时,需要注意以下问题:

• 每个Eth-Trunk接口下最多可以包含8个成员接口。

• Eth-Trunk接口不能嵌套,即Eth-Trunk接口的成员接口不能是Eth-Trunk接口。

• 一个以太网接口只能加入到一个Eth-Trunk接口,如果需要加入其它Eth-Trunk接口,必须先退出原来的Eth-Trunk接口。

• 如果本地设备使用了Eth-Trunk,与成员接口直连的对端接口也必须捆绑为Eth-Trunk接口,两端才能正常通信。

Eth-Trunk链路两端相连的物理接口的数量、速率、双工方式等必须一致。

#查看Eth-Trunk接口状态

dis eth-trunk 1

配置LACP模式

# 删除现有Eth-Trunk接口下的成员接口

[S1]interface Eth-Trunk 1

[S1-Eth-Trunk1]undo trunkport GigabitEthernet 0/0/10 to 0/0/12

[S2]interface Eth-Trunk 1

[S2-Eth-Trunk1]undo trunkport GigabitEthernet 0/0/10 to 0/0/12

在修改Eth-Trunk接口的聚合模式之前,需要确保Eth-Trunk中没有任何成员接口。

# 修改聚合模式

[S1]interface Eth-Trunk 1

[S1-Eth-Trunk1]mode lacp

mode lacp 指定Eth-Trunk工作模式为LACP模式。

注:部分版本的设备命令为 mode lacp-static

[S2]interface Eth-Trunk 1

[S2-Eth-Trunk1]mode lacp

# 将成员接口加入聚合组

[S1]interface Eth-Trunk 1

[S1-Eth-Trunk1]trunkport GigabitEthernet 0/0/10 to 0/0/12

[S2]interface Eth-Trunk 1

[S2-Eth-Trunk1]trunkport GigabitEthernet 0/0/10 to 0/0/12

查看

1chakan1207160903

注意此时三个接口都是Select的状态

选择接口

​ 考虑到网络流量情况,当网络正常时,只需要GigabitEthernet0/0/11和GigabitEthernet0/0/12接口处于转发状态,GigabitEthernet0/0/10接口作为备份。但当活动接口数量少于2时,直接关闭整个Eth-Trunk接口。

全局配置优先级选举主动方,主动方设备的端口上配置接口优先级选举活动端口

# 配置设备S1的LACP优先级,使其成为主动端设备

[S1]lacp priority 100

# 配置接口优先级,优选GigabitEthernet0/0/11和GigabitEthernet0/0/12接口

[S1]interface GigabitEthernet 0/0/10

[S1-GigabitEthernet0/0/10]lacp priority 40000

# 配置接口优先级,优选GigabitEthernet0/0/11和GigabitEthernet0/0/12接口

[S1]interface GigabitEthernet 0/0/10

[S1-GigabitEthernet0/0/10]lacp priority 40000

g0/0/10配置了大于32768的优先级4000,所以变为备份端口

之后,g0/0/11和g0/0/12为活动端口

使能了LACP模式链路聚合的两端设备均会收发的LACPDU报文。

首先选举主动端设备:

  1. 比较系统优先级字段,如果对端的系统优先级高于本端的系统优先级(默认为32768,越小越优),则确定对端为LACP主动端。
  2. 如果系统优先级相同,比较两端设备的MAC地址,MAC地址小的一端为LACP主动端。

选出主动端后,两端都会以主动端的接口优先级来选择活动接口,接口优先级越小越优,默认为32768。

# 配置Eth-trunk活动接口数上限阈值和下限阈值

[S1]interface Eth-Trunk 1

[S1-Eth-Trunk1]max active-linknumber 2

[S1-Eth-Trunk1]least active-linknumber 2

在一个Eth-Trunk接口内,活动接口数可以影响到Eth-Trunk接口的状态和带宽。Eth-Trunk接口的带宽是所有处于Up状态的成员口带宽之和。为保证Eth-Trunk接口的状态和带宽,可以设置以下两个阈值,以减小成员链路状态的变化带来的影响。

• 活动接口数下限阈值:当活动接口数小于配置的下限阈值时,Eth-Trunk接口的状态转为Down。设置活动接口数下限阈值的目的是为了保证最小带宽。least active-linknumber命令用来配置链路聚合组活动接口数目的下限阈值。

• 活动接口数上限阈值:当活动接口数达到上限阈值后,之后再发生成员链路状态变为Up都不会使Eth-Trunk接口的带宽增加。设置活动接口数上限阈值的目的是在保证了带宽的情况下提高网络的可靠性。max active-linknumber命令用来配置链路聚合组活动接口数目的上限阈值。

# 开启抢占功能

[S1]interface Eth-Trunk 1

[S1-Eth-Trunk1]lacp preempt enable

在LACP模式下,当活动链路中出现故障链路时,系统会从备用链路中选择优先级最高的链路替代故障链路;如果被替代的故障链路恢复了正常,而且该链路的优先级又高于替代自己的链路。这种情况下,如果使能了LACP优先级抢占功能,高优先级链路会抢占低优先级链路,回切到活动状态。lacp preempt enable命令用来使能LACP模式下LACP优先级抢占的功能,缺省情况下,优先级抢占处于禁止状态。

# 查看当前 Eth-Trunk接口状态

2chakan2207161758

shutdown接口g0/0/11和g0/0/12

查看状态,发现都变为unselect状态

由于设置了Eth-Trunk的活动链路下限阈值为2,所以聚合组中可用活动接口数量少于2时,整个聚合组对应的接口将会被关闭。尽管此时GigabitEthernet0/0/10处于UP状态,但是仍处于Unselect状态。

修改负载分担模式

# 开启上一步中关闭的接口

[S1]inter GigabitEthernet 0/0/11

[S1-GigabitEthernet0/0/11]undo shutdown

[S1-GigabitEthernet0/0/11]quit

[S1]inter GigabitEthernet 0/0/12

[S1-GigabitEthernet0/0/12]undo shutdown

# 大约30秒后,查看当前Eth-Trunk1的接口状态

由于使能了Eth-Trunk接口的抢占功能,所以当GigabitEthernet0/0/11和GigabitEthernet0/0/12接口进入UP状态之后,这两个接口的接口的优先级高于GigabitEthernet0/0/10,所以GigabitEthernet0/0/10会进入unselect状态。同时因为系统为了保证链路的稳定性,默认的抢占延时为30秒,所以要在30秒后才会发生抢占。

# 修改Eth-Trunk接口的负载分担模式为基于目的IP地址

[S1]interface Eth-Trunk 1

[S1-Eth-Trunk1]load-balance dst-ip

当需要将Eth-Trunk接口的流量分散到不同的链路上,最后能到达统一目的地时,使用load-balance命令配置Eth-Trunk接口负载分担模式,以确保出方向的流量在各物理链路间进行合理的负载分担,避免链路阻塞。由于负载分担只对出方向的流量有效,因此链路两端接口的负载分担模式可以不一致,两端互不影响