链路聚合工作原理 -- kummer话你知

链路聚合,是将多个物理二层链路捆绑为一个逻辑二层链路的技术。不同的厂商有不同的叫法:

  • Zte:Smartgroup,简称SG
  • Cisco称作Ether Channel、简称EC
  • Brocade称作Brocade LAG,简称LAG
  • 华为,华三:Link Aggregation group,简称LAG,或者Trunk,如果这些接口都是以太网接口,则称为Eth-Trunk

链路聚合解决什么问题

  • 增加链路带宽:多个小带宽链路汇聚为一个大带宽链路,一般采用负荷分担模式:符合分担是基于流来进行的,避免乱序。
  • 增加链路的可靠性:通过冗余的多个链路,一条物理链路出问题,不影响整个逻辑链路。

相关术语

  • **链路聚合: ** 将—组物理接口捆绑在一起作为一个逻辑接口来增加带宽及可靠性的方法。
  • 链路聚合组:将若干条物理链路捆绑在一起所形成的逻辑链路称之为链路聚合组(LAG)或者Trunk。这儿的LAG(Trunk)就是我们所说的逻辑上的二层接口。
  • 以太网链路聚合组:如果这些被捆绑链路都是以太网链路,该聚合组被称为以太网链路聚合组,简写为Eth-Trunk。该聚合组接口称之为Eth-Trunk接口。组成Eth-Trunk的各个接口称之为成员接口。
    Eth-Trunk接口可以作为普通的以太网接口来使用,它与普通以太网接口的差别只在于:转发的时候Eth-Trunk需要从众多成员接口中选择一个或多个接口来进行转发。所以,除了一些必须在物理接口下配置的特性,可以像配置普通以太网接口那样配置Eth-Trunk逻辑接口。
    注:不能把已有的Eth-Trunk成员接口再捆绑成为其它Eth-Trunk的成员。
  • 活动接口(Selected)和非活动接口(Standby):链路聚合存在活动接口和非活动接口两种。转发数据的接口称为活动接口,而不转发数据的接口称为非活动接口。
    活动接口对应的链路称为活动链路,非活动接口对应的链路称为非活动链路。
  • 活动接口数上限阈值:在Eth-Trunk中,如果配置了活动接口数上限阈值,当活动接口数达到这个值后,再向Eth-Trunk中添加成员接口,不会增加Eth-Trunk活动接口的数目。
  • 活动接口数下限阈值: 设置活动接口数下限阈值主要目的是保证Eth-Trunk链路的带宽。防止由于活动接口数目过少而使这些链路负载过大,出现传输数据丢包的情况。在Eth-Trunk中,如果配置了活动接口数下限阈值,当活动接口数目低于该值时,Eth-Trunk接口状态将变为Down,此时所有Eth-Trunk中的成员接口不再转发数据。
  • 备份链路:在链路聚合中为了提高链路的可靠性,引入了备份链路的机制。而这些备份链路对应的接口通常情况下担当了非活动接口的角色,只有当前活动接口出现故障时,备份的接口才可以由非活动接口转变为活动接口。
  • 成员端口间M:N备份:静态LACP模式链路聚合是一种利用LACP协议进行参数协商选取活动链路的聚合模式。该模式由LACP协议确定聚合组中的活动和非活动链路,又称为M:N模式,即M条活动链路与N条备份链路的模式。这种模式提供了更高的链路可靠性,并且可以在M条链路中实现不同方式的负载均衡。如图2所示,两台设备间有M+N条属性相同的链路,在聚合链路上发送流量时在M条链路上负载分担,即主链路。不在另外的N条链路发送流量,这N条链路提供备份功能,即备份链路。此时链路的实际带宽为M条链路的总和,但是能提供的最大带宽为M+N的总和。
    当M条链路中有一条链路故障时,LACP会从N条备份链路中找出一条正常链路替换有故障的链路,形成M:N备份。此时链路的实际带宽还是M条链路的总和,但是能提供的最大带宽就变为M+N-1条链路的总和。
链路聚合工作原理 -- kummer话你知_第1张图片
M:N备份示意图

这种场景主要应用在我们只想向用户提供M条链路的带宽,同时又希望提供一定的故障保护能力。当有一条链路出现故障时,系统能够自动选择一条优先级最高且可以使用的链路加到当前的聚合组中。
如果在备用链路中无法找到可以激活的链路,并且目前处于Up状态的链路数目低于配置活动接口数下限阈值,那么系统将会把汇聚端口关闭。

链路聚合工作原理 -- kummer话你知_第2张图片
链路聚合: 增加带宽,提高可靠性

要是链路聚合正常工作,首先需要解决的问题是如何确定哪些接口形成一个逻辑接口(也就是说如何管理一个汇聚接口的成员接口,包括成员接口的加入、离开、是否参与转发等)。

链路聚合成员接口管理的三种形式

  • 手工聚合:管理员手工将多个链路配置为一个聚合链路,这种方式可能出现本端配置了汇聚,对端没有配置,从而流量导致环路等问题。

手工汇聚模式是一种最基本的链路聚合方式,在该模式下,汇聚组的创建、成员接口的加入完全由手工来配置,没有链路聚合控制协议的参与。该模式下所有成员接口(selected)都参与数据的转发,分担负载流量,因此称为手工负载分担模式。手工汇聚端口的 LACP 协议为关闭状态,禁止用户使能手工汇聚端口的LACP 协议。

在手工汇聚组中,端口可能处于两种状态:Selected 或Standby。处于Selected 状态且端口号最小的端口为汇聚组的主端口,其他处于Selected 状态的端口为汇聚组的**成员端口。 **

由于设备所能支持的汇聚组中的最大端口数有限制,如果处于Selected 状态的端口数超过设备所能支持的汇聚组中的最大端口数,系统将按照端口号从小到大的顺序选择一些端口为Selected 端口,其他则为Standby 端口。(M:N备份模式)

  • 静态LACP聚合:与手工聚合类似,管理员指定哪些接口加入汇聚链路,但同时启用LACP协议。

静态 LACP模式下,汇聚组的创建、成员接口的加入,都是由手工配置完成的。但与手工负载分担模式链路聚合不同的是,该模式下LACP协议报文参与活动接口的选择。也就是说,当把一组接口加入汇聚组,这些成员接口中哪些接口作为活动接口,哪些接口作为非活动接口还需要经过LACP 协议报文的协商确定。

静态LACP由协议确定聚合组中的活动和非活动链路,又称为M:N模式,即M条活动链路与N条备份链路的模式。这种模式提供了更高的链路可靠性,并且可以在M 条链路中实现不同方式的负载均衡。M:N模式的聚合组中M和N的值可以通过配置活动接口数上限阈值来确定。

  • 动态LACP聚合:通过LACP协议决定将那些链路聚合。

LACP根据设备端口的配置(即速率、双工、基本配置、管理Key)形成聚合链路并启动聚合链路收发数据。聚合链路形成后,LACP负责维护链路状态,在聚合条件发生变化时,自动调整或解散链路聚合,从而使两端设备对端口加入或退出某个动态汇聚组达成一致。

动态LACP汇聚是一种系统自动创建/删除的汇聚,不允许用户增加或删除动态LACP汇聚中的成员端口,只有速率和双工属性相同、连接到同一个设备、有相同基本配置的端口才能被动态汇聚在一起。即使只有一个端口也可以创建动态汇聚,此时为单端口汇聚。动态汇聚中,端口的LACP协议处于使能状态。
端口使能动态LACP协议只需要在端口上使能LACP就可以了,不必为端口指定汇聚组,使能动态LACP协议的端口需要自己寻找动态汇聚组,如果找到了与自己信息(包括自己的对端信息)一致的汇聚组,直接加入;如果没有找到与自己信息一致的汇聚组,创建一个新的汇聚组。

链路聚合的接口要求

由于最终的汇聚链路表现为一个逻辑上的二层链路,所以整个逻辑链路需要有相同的二层配置,否则聚合链路的工作可能会出现混乱。这些配置包括:

  • STP配置
  • QOS配置
  • VLAN配置
  • 链路类型:Access,Trunk,Hybrid
  • 端口速率,全双工模式

工作原理:

七层模型中的位置

根据IEEE,链路层分为两个子层,MAC和LLC:

  • MAC:媒体访问控制子层:这一层与物理层密切相关,比如以太网和令牌环网络,其MAC层的实现时完全不同的。
  • LLC:逻辑链路控制子层:这一层则是独立的,与物理层关系不大,用来提供链路的聚合等逻辑功能。链路聚合工作在这一层。(在没有链路汇聚等功能时,LLC这一层并不是必须的,可以裁剪)
链路聚合工作原理 -- kummer话你知_第3张图片
IEEE七层协议-逻辑链路控制子层

链路聚合工作原理 -- kummer话你知_第4张图片
聚合链路所在的协议层次

链路聚合的控制面协议 - LACP

LACP为交换数据的设备提供一种标准的协商方式,以供系统根据自身配置自动形成聚合链路并启动聚合链路收发数据。聚合链路形成以后,负责维护链路状态。在聚合条件发生变化时,自动调整或解散链路聚合。LACP工作的基本流程如下:

  1. 邻居发现:在设备SwitchA和SwitchB上创建Eth-Trunk并配置为静态LACP模式,然后向Eth-Trunk中手工加入成员接口。此时成员接口上便启用了LACP协议,两端互相发出LACPDU报文。

    链路聚合工作原理 -- kummer话你知_第5张图片
    1. 邻居发现

  2. 确定主动端:两端设备均会收到对端发来的LACP报文。以SwitchB为例,当SwitchB收到SwitchA发送的LACP报文时,SwitchB会查看并记录对端信息,并且比较系统优先级字段,如果对端设备SwitchA的系统优先级高于本端设备SwitchB的系统优先级,则确定SwitchA为LACP主动端,SwitchB将按照SwitchA的接口优先级选择活动接口,从而两端设备对于活动接口的选择达成一致。

    链路聚合工作原理 -- kummer话你知_第6张图片
    2. 确定主动端

  3. 确定活动端口:两端设备选出主动端后,两端都会以主动端的接口优先级来选择活动接口。两端设备选择了一致的活动接口,活动链路组便可以建立起来,从这些活动链路中以负载分担的方式转发数据。

    链路聚合工作原理 -- kummer话你知_第7张图片
    3. 确定活动端口的全过程

4.** 链路的保护与切换:**

  • 切换时机:静态模式链路聚合组两端设备中任何一端检测到以下事件,都会触发聚合组的链路切换:
  • 链路Down事件。
  • ETH-OAM检测到链路失效。LACP协议发现链路故障。接口不可用。
  • 在使能了LACP抢占前提下,更改备份接口的优先级高于当前活动接口的优先级后,会发生切换的过程。
  • 切换流程:当满足上述切换条件其中之一时,按照如下步骤进行切换:
  1. 关闭故障链路。

  2. 从N条备份链路中选择优先级最高的链路接替活动链路中的故障链路。

  3. 优先级最高的备份链路转为活动状态并转发数据,完成切换。

  4. 链路抢占:使能LACP抢占后,聚合组会始终保持高优先级的接口作为活动接口的状态。如下图所示,GE1/0/1、GE1/0/2和GE1/0/3为Eth-Trunk 1的成员接口,活动接口数最大上限阈值为2,配置GE1/0/1和GE1/0/2接口的LACP优先级分别为9和10,GE1/0/3保持缺省接口LACP优先级。当通过LACP协议协商完毕后,GE1/0/1、GE1/0/2接口因为优先级较高被选作活动接口,GE1/0/3接口成为备份接口。

链路聚合工作原理 -- kummer话你知_第8张图片
活动接口与备份接口

以下两种情况需要使能LACP的抢占功能。

  1. GE1/0/1接口出现故障而后又恢复了正常。当接口GE1/0/1出现故障时被GE1/0/3所取代,如果在Eth-Trunk接口下未使能抢占,则故障恢复时GE1/0/1仍然保持备份接口状态;如果使能了LACP抢占,当GE1/0/1故障恢复时可以重新成为活动接口,GE1/0/3再次成为备份接口。

  2. 如果用户希望GE1/0/3接口替换GE1/0/1、GE1/0/2中的一个接口成为活动接口,可以通过更改GE1/0/3的接口LACP优先级为8或更小的数值来实现,但前提条件是已经使能了LACP抢占功能。如果没有使能LACP抢占功能,即使将备份接口的优先级调整为高于当前活动接口的优先级,系统也不会进行重新选择活动接口的过程,不切换活动接口。

  3. 抢占延时的概念:LACP抢占发生时,处于备用状态的链路将会等待一段时间后再切换到转发状态,这就是抢占延时。抢占延时是一个可配置的值,默认为30s,可配置范围为10s~180s。
    配置抢占延时是为了避免由于某些链路状态频繁变化而导致整个Eth-Trunk数据传输不稳定。如图8所示,GE1/0/1由于链路故障切换为非活动接口,此后该链路又恢复了正常。由于系统使能了LACP抢占,经过抢占延时后,GE1/0/1会重新切换到活动状态。

附录

聚合链路 E-trunk和Eth-trunk 区别

你可能感兴趣的:(链路聚合工作原理 -- kummer话你知)