链路聚合技术
前言:本文撰写于2022.01.27 基于H3C理论体系
0、协议简介
以太网链路聚合通过将多条以太网物理链路捆绑在一起形成一条以太网逻辑链路,实现增加链路带宽的目的,同时这些捆绑在一起的链路通过相互动态备份,可以有效地提高链路的可靠性。
如图1-1所示,Device A与Device B之间通过三条以太网物理链路相连,将这三条链路捆绑在一起,就成为了一条逻辑链路Link aggregation 1。这条逻辑链路的带宽最大可等于三条以太网物理链路的带宽总和,增加了链路的带宽;同时,这三条以太网物理链路相互备份,当其中某条物理链路down,还可以通过其他两条物理链路转发报文。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
1、基本概念
1.1 聚合组、成员端口和聚合接口
链路捆绑是通过接口捆绑实现的,多个以太网接口捆绑在一起后形成一个聚合组,而这些被捆绑在一起的以太网接口就称为该聚合组的成员端口。每个聚合组唯一对应着一个逻辑接口,称为聚合接口。聚合组与聚合接口的编号是相同的,例如聚合组1对应于聚合接口1。
聚合组/聚合接口可以分为以下几种类型:
-
二层聚合组/二层聚合接口:二层聚合组的成员端口全部为二层以太网接口,其对应的聚合接口称为二层聚合接口。
-
三层聚合组/三层聚合接口:三层聚合组的成员端口全部为三层以太网接口,其对应的聚合接口称为三层聚合接口。在创建了三层聚合接口之后,还可继续创建该三层聚合接口的子接口,即三层聚合子接口。三层聚合子接口处理与该子接口编号相同的VLAN的报文。
**注意:**三层聚合子接口需要收发携带子接口编号的VLAN Tag的报文,请不要把该VLAN作为普通VLAN使用。
聚合接口的速率和双工模式取决于对应聚合组内的选中端口:聚合接口的速率等于所有选中端口的速率之和,聚合接口的双工模式则与选中端口的双工模式相同。
1.2 成员端口的状态
聚合组内成员端口具有以下三种状态:
- 选中状态(selected):此状态下的成员端口可以参与用户数据的转发,处于该状态成员端口称之为“选中端口”。
- 非选中状态(unselected):此状态下的成员端口不能参与用户数据的转发,处于该状态成员端口称之为“非选中端口”。
- 独立状态(Individual):此状态下的成员端口可以作为普通端口参与数据的转发。当聚合接口类型配置为聚合边缘接口,其成员端口未收到对端端口发送的LACP报文时,处于该状态。
1.3 操作Key
操作Key为系统在进行链路聚合时用来表征成员聚合能力的一个数值,它是根据成员端口上的一些信息(包括该端口的速率、双工模式等)的组合自动计算生成的,这个信息组合中任何一项的变化都会引起操作Key的重新计算。在同一聚合组中,所有的选中端口都必须具有相同的操作Key。
1.4 配置分类
根据对聚合成员端口状态的影响不同,可以把端口配置分为三类:
-
端口属性类配置:包含速率、双工模式和链路状态(UP/DOWN)这三项配置内容是成员端口上最基础的配置内容,速率和双工会影响参与端口的选举,链路状态会影响成员端口是否被选中。
-
第一类配置:此类配置可以在聚合端口和成员端口上配置,但不参与操作Key计算,如MVRP、MSTP等。成员端口与选举端口若第一类配置不一致,不会导致端口未选中。
-
第二类配置:此类配置参与操作Key计算,包括端口配置、QinQ配置、VLAN配置、MAC地址学习配置。成员端口与选举端口若第二类配置若不一致,将会导致成员端口未选中
配置项 | 内容 |
---|---|
端口隔离 | 端口是否加入隔离组、端口所属的端口隔离组 |
QinQ配置 | 端口的QinQ功能开启/关闭状态、VLAN Tag的TPID值、VLAN透传。 |
VLAN映射 | 端口上配置的各种VLAN映射关系。 |
VLAN配置 | 端口上允许通过的VLAN、端口缺省VLAN、端口的链路类型(即Trunk、Hybrid、Access类型)、端口的工作模式(即promiscuous、trunk promiscuous、host、trunk secondary模式)、基于IP子网的VLAN配置、基于协议的VLAN配置、VLAN报文是否带Tag配置。 |
说明:
第一类:
- 在聚合接口上所作的第一类配置,只在当前聚合接口下生效。
- 在成员端口上所作的第一类配置,只有当该成员端口离组后才能生效。
第二类:
-
聚合接口上第二类配置发生变化时,会同步到成员端口上。
-
同步失败将会导致成员端口变为非选中状态(但不会将聚合端口的配置回退)
-
可以通过修改聚合接口或成员端口上配置,使成员端口重新选择。
-
当聚合端口被删除后,同步成功的配置仍将保留在成员端口上。
2. 聚合模式
链路聚合分为静态聚合和动态聚合两种模式,它们各自的优点如下所示:
-
静态聚合模式:一旦配置好后,端口的选中/非选中状态就不会受网络环境的影响,比较稳定。
-
动态聚合模式:能够根据对端和本端的信息调整端口的选中/非选中状态,比较灵活。
处于静态聚合模式下的聚合组称为静态聚合组,处于动态聚合模式下的聚合组称为动态聚合组。
2.1 静态链路聚合
静态聚合模式的工作机制如下所述。
2.1.1 选举参考端口
参考端口从聚合组的成员端口中选举出,其端口属性类配置和第二类配置(这2个配置产生操作Key)将作为同一聚合组内的其 它成员端口的参照,以确定这些成员端口的状态。
静态聚合组参考端口选举:
由于不与对端设备交互,所以聚合链路的两端各自选举各 自的参考端口
第二类配置与对应聚合相同的前提下,执行如下比较
- 对比接口速率和双工模式,比较:全双工/高速率 --> 全双工/低速率 --> 半/高–> 半/低的优先次序。
- 接口速率和双工模式相同的情况下,比较端口ID小的成员端口将成为选举端口。
**说明:**端口ID=端口LACP优先级+端口编号组成,优先级默认32768。
2.1.2 确认成员端口状态
静态聚合组内成员端口状态的确定流程如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1nzWb9xt-1680308110810)(./images/链路聚合02.png)]
确定静态聚合组内成员端口状态时,需要注意:
- 当一个成员端口的操作Key或第二类配置发生改变时,其所在静态聚合组内各成员端口的选中/非选中状态可能会发生改变。
- 当静态聚合中内选中端口数量已达上线,对于后加入的成员端口和聚合组内选中端口的端口优先级:
- 全部相同时,后加入的成员端口即使满足成为选中端口的所有条件,也不会立即成为选中端口。
- 存在不同时,后加入的成员端口的属性类配置与对应聚合接口相同,且端口优先级高于聚合组内选中端口,则端口优先级高的成员端口将立即取代端口优先级低的选中端口,成为新的选中端口。
2.2 动态链路聚合
动态聚合模式通过LACP协议实现,LACP协议内容及动态聚合模式的工作机制如下所述。
2.2.1 LACP基础
LACP基于IEEE 802.3ad标准,运行LACP协议的设备之间通过互发LACPUD来交互链路聚合的相关信息。动态聚合组内的成员端口可以收发LACPUD,本端通过向对端发送LACPUD通告本端的信息。当对端收到该LACPDU后,将其中的信息与所在端其他成员端口收到的信息进行比较,以选择能够处于选中状态的成员端口,使双方可以对各自接口的选中/非选中状态达成一致。
(1) LACP协议的功能
LACP协议的功能分为基本功能和扩展功能两大类,如表1-2所示。
表1-2 LACP协议的功能分类
类别 | 说明 |
---|---|
基本功能 | 利用LACPDU的基本字段可以实现LACP协议的基本功能。基本字段包含以下信息:系统LACP优先级、系统MAC地址、端口优先级、端口编号和操作Key |
扩展功能 | 通过对LACPDU的字段进行扩展,可以实现对LACP协议的扩展。通过在扩展字段中定义一个新的TLV(Type/Length/Value,类型/长度/值)数据域,可以实现IRF中的LACP MAD机制。 |
(2) LACP工作模式
LACP工作模式分为主动ACTIVE和被动PASSIVE两种。
主动工作模式将会发送LACPDU,被动模式不会发送。若动态聚合组内成员端口LACP为PASSIVE模式,且对端也是如此时,两端将不能发送LACPUD。若双方任意一端LACP工作模式为主动模式时,双方都可以发送LACPDU。
(3) LACP优先级
根据作用的不同,可以将LACP优先级分为系统LACP优先级和端口优先级两类,如下表所示。
表 LACP优先级的分类
类别 | 说明 |
---|---|
系统LACP优先级 | 用于区分两端设备优先级的高低。当两端设备中的一端具有较高优先级时,另一端将根据优先级较高的一端来选择本端的选中端口,这样便使两端设备的选中端口达成了一致 |
端口优先级 | 用于区分各成员端口成为选中端口的优先程度 |
**说明:**优先级数值越小,优先级越高(H3C设备默认32768)
(4) LACP超时时间
链路聚合使能LACP协议后,会启动超时时间,超时后仍未收到对方LACP报文,则判断为对端不可达,本端成员端口立即变为Down,不再转发数据,LACP超时时间同时决定了对端发送LACPDU的发送速率。
-
短超时:若为短超时,则对端将快速发送LACPDU(1秒周期),且短超时为3秒超时
-
长超时:若为长超时,则对端将慢速发送LACPDU(30秒周期),且长超时为90秒超时。
说明:H3C默认LACP超时时间为长超时。
2.2.2 选举参考端口
参考端口从聚合链路两端的成员端口中选举出,其操作Key和属性类配置将作为同一聚合组内其他成员端口的参照,只有操作Key和第二类配置与参考端口一致的成员端口才能被选中。
动态聚合组参考端口选举:
- 从聚合链路两端中选出设备ID较小一端:即先比较系统LACP优先级,再比较MAC
- 在设备ID较小端中比较各成员端口ID:即先比较端口优先级,再比较端口号
- 端口ID最小、且属性类配置与对应聚合接口相同的端口作为参考端口。
**说明:**设备ID由系统LACP优先级+系统MAC地址组成;端口ID由端口LACP优先级和端口编号组成;端口和设备LACP优先级默认32768。
2.2.3 确定成员端口状态
在设备ID较小的一端,动态聚合组内成员端口状态的确定流程如下图所示:
图 动态聚合组内成员端口状态的确定流程
与此同时,设备ID较大的一端也会随着对端成员端口状态的变化,随时调整本端各成员端口的状态,以确保聚合链路两端成员端口状态的一致。
确定动态聚合组内成员端口状态时,需要注意:
-
仅全双工端口可成为选中端口。
-
当一个成员端口的操作Key或属性类配置改变时,其所在动态聚合组内各成员端口的选中/非选中状态可能会发生改变。
-
当本端端口的选中/非选中状态发生改变时,其对端端口的选中/非选中状态也将随之改变。
-
当动态聚合组内选中端口的数量已达到上限时,后加入的成员端口一旦满足成为选中端口的所有条件,就会立刻取代已不满足条件的端口成为选中端口。
2.2.4 聚合边缘接口
在网络设备与服务器终端设备相连接场景中,当网络设备配置了动态聚合,而终端设备未配置动态聚合模式时,聚合链路不能成功建立,网络设备与终端设备相连多条链路中只能有一条作为普通链路正常转发报文,因而链路间无法形成备份。当该普通链路发生故障时,可能会造成报文丢失。
若要求在终端设备未配置动态聚合模式时,该终端设备与网络设备间的链路可以形成备份,我们可配置网络设备聚合接口为聚合边缘接口,使该聚合组内所有成员端口都作为普通物理口转发报文,从而保证终端设备与网络设备间的多条链路可以相互备份,增加可靠性。
而当终端设备完成动态聚合模式配置时,其聚合成员端口正常发送LACP报文后,网络设备上符合选中条件的聚合成员端口会自动被选中,从而使聚合链路恢复正常工作。
说明:与终端设备连接时,防止终端设备因为没配置动态聚合而聚合链路无法建立,聚合链路无法全部启用,可以通过配置边缘端口使成员链路均为普通物理口转发报文,而若终端设备完成动态聚合配置并成员端口正常发送LACPUD后,网络设备上符合选中条件的聚合成员会自动选中,从而使聚合链路恢复正常工作。
2.2.5 聚合负载分担类型
通过采用不同的聚合负载分担类型,可以实现灵活地对聚合组内流量进行负载分担。聚合负载分担的类型可以归为以下几类:
-
逐流负载分担:按照报文的源/目的MAC地址、源/目的服务端口、入端口、源/目的IP地址或MPLS标签中的一种或某几种的组合区分流,使属于同一数据流的报文从同一条成员链路上通过。
-
按照报文类型(如二层协议报文、IPv4报文、IPv6报文、MPLS报文等)自动选择所采用的聚合负载分担类型。
**说明:**系统缺省按照报文类型自动采取聚合分担类型
IPv4单播报文:按照五元组源IP地址、目的IP地址、源端口号、目的端口号、协议类型负载分担
- 二层报文:按照源MAC地址、目的MAC地址、以太网封装类型、VLAN ID、源端口负载分担
- IPv4组播报文:按照源IP地址和目的IP地址方式负载分担
- 其他报文,对于IP报文按照源IP地址和目的IP地址方式负载分担;对于非IP报文按照源MAC地址和目的MAC地址负载分担
2.3 端口忽略VLAN
未配置二层聚合接口的忽略VLAN时,只有当其成员端口上关于VLAN允许通过的配置(包括是否允许VLAN通过,以及通过的方式)与该二层聚合接口的配置完全相同时,该成员端口才有可能成为选中端口;配置了二层聚合接口的忽略VLAN后,即使其成员端口上关于这些VLAN允许通过的配置与该二层聚合接口上的配置不一致,也不影响该成员端口成为选中端口。
面试追问:
静态链路聚合和动态链路聚合的区别:
静态:端口不与对端交互信息,只在自己的设备上选参考端口,聚合好后端口的选中不受网络的影响
动态:
3、知识拓展
LACP MAD
请见文章:IRF文章中MAD分裂检测章节
面试问答
-
静态聚合和动态聚合的区别
答:静态聚合无需与对端交互信息,只在自己设备上选举参考端口。不能根据对端的状态调整选中/非选中状态,不够灵活。
动态聚合与对端交互LACP报文,根据对端以及本端信息选出一个参考端口。能够根据对端和本段信息调整接口选择/非选中状态,比较灵活,但端口的选中和非选中状态容易受网络环境的影响,不够稳定。
配置命令
配置:
[H3C] lacp system-priority 32678
#配置系统LACP优先级,默认32768,修改LACP优先级将会影响动态聚合组成员端口的选中/非选中端口
[H3C] int rang g1/0/1 to g1/0/3 #进入二层以太网接口
[H3C-if-range] port link-aggregation group group-id [force]
#若指定force参数,会将聚合空上的第二类配置同步给该接口
[H3C-if-range] link-aggregation port-priority 32768
#配置端口优先级,缺省32768
[H3C-if-range] lacp mode passive 或 undo lacp mode
#缺省LACP为ACTIVE模式
[H3C-if-range] lacp period short
#配置超时时间为短超时(默认长超时)
创建二层静态聚合组:
[H3C]int Bridge-Aggregation 1 #创建二层聚合组1
[H3C-Bridge-Aggregation1]quit
创建三层动态聚合组:
[H3C] int interface route-aggregation #创建三层聚合接口
[H3C-Bridge-Aggregation1]link-ag mode dynamic #配置动态聚合模式
[H3C-Bridge-Aggregation1]quit
忽略VLAN配置:
[H3C] int br1
[H3C-Bridge-Aggregation1] link-ag ignore vlan 100
[H3C-Bridge-Aggregation1] quit
限制聚合组中选中端口数量:
[H3C] int br1
[H3C-Bridge-Aggregation1]link-ag selected-port minimum ? #配置最小数量
INTEGER<1-32> Configure the minimum number settings
percentage Specify the minimum percentage of Selected ports #百分比,根据选中端口最小百分比
[H3C-Bridge-Aggregation1]link-ag selected-port minimum
[H3C-Bridge-Aggregation1]link-ag selected-port maximum ? #配置最大数量
INTEGER<1-32> Specify the maximum number
LACP边缘端口:
[H3C] int br1
[H3C-Bridge-Aggregation1]lacp edge-port #启用边缘端口
配置负载模式:
[H3C]link-aggregation load-sharing mode local-first #配置聚合负载分担本地优先,缺省本地优先
[H3C]link-ag global load mod ? #配置全局负载分担模式
destination-ip Destination IP address
destination-mac Destination MAC address
destination-port Destination port
ingress-port Ingress port
source-ip Source IP address
source-mac Source MAC address
source-port Source port
[H3C]int br1 #进入二层聚合组
[H3C-Bridge-Aggregation1]link-ag load m ? #配置聚合组负载分担模式
destination-ip Destination IP address
destination-mac Destination MAC address
source-ip Source IP address
source-mac Source MAC address
配置流量重定向:
[H3C] int br1
[H3C] link-aggregation lacp traffic-redirect-notification enable
#配置全局流量重定向
[H3C]int br1 #进入二层聚合组
[H3C-Bridge-Aggregation1] link-aggregation lacp traffic-redirect-notification enable
#配置聚合组流量重定向
案例配置:创建二层聚合组,并配置成动态聚合模式并调整接口优先级
[H3C]int Bridge-Aggregation 1 #创建二层聚合组1
[H3C-Bridge-Aggregation1]link-ag mode dynamic #配置动态聚合模式
[H3C-Bridge-Aggregation1]quit
[H3C]int rang g1/0/1 to g1/0/3
[H3C-if-range]port link-aggregation group 1 #配置进入二层聚合组1
[H3C-if-range]link-ag port-priority 60000 #调整接口优先级
[H3C-if-range]
[H3C]int Bridge-Aggregation 1 #创建二层聚合组1
[H3C-Bridge-Aggregation1]port link-type trunk #配置为trunk模式
Configuring GigabitEthernet1/0/1 done. #配置同步成功
Configuring GigabitEthernet1/0/2 done.
Configuring GigabitEthernet1/0/3 done.
[H3C-Bridge-Aggregation1]quit
多厂商支持
一般建议跨厂商设备使用静态聚合,因为不同厂商对接可能因为协议报文的处理机制不同而产生对接异常,而静态聚合则无需担心协商的问题。文章来源:https://www.toymoban.com/news/detail-497382.html
参考致谢
HCIE路由交换学习指南
HedEx产品文档
知了社区文章来源地址https://www.toymoban.com/news/detail-497382.html
到了这里,关于【H3C】链路聚合技术基本原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!