一、基本概念
如图所示,DeviceA 与DeviceB 之间通过三条以太网物理链路相连,将这三条链路捆绑在一起,就成为了一条逻辑链路,这条逻辑链路的最大带宽等于原先三条以太网物理链路的带宽总和,从而达到了增加链路带宽的目的;同时,这三条以太网物理链路相互备份,有效地提高了链路的可靠性。
说明:Eth-Trunk 链路两端相连的物理接口的数量、速率、双工方式、jumbo、流控方式必须一致。
链路聚合接口可以作为普通的以太网接口来使用,实现各种路由协议以及其它业务。与普通以太网接口的差别在于:转发的时候链路聚合组需要从成员接口中选择一个或多个接口来进行数据转发。
以下是链路聚合的一些基本概念:
·链路聚合、链路聚合组和链路聚合接口
链路聚合是指将若干条物理接口捆绑在一起作为一个逻辑接口来增加带宽及可靠性的技术。
链路聚合组 LAG(LinkAggregation Group)是指将若干条以太链路捆绑在一起所形成的逻辑链路,简写为 Eth-Trunk。
每个聚合组唯一对应着一个逻辑接口,这个逻辑接口称之为聚合接口或 Eth-Trunk 接口。
·成员接口和成员链路
组成Eth-Trunk 接口的各个物理接口称为成员接口。成员接口对应的链路称为成员链路。
·活动接口和非活动接口、活动链路和非活动链路链路
聚合组的成员接口存在活动接口和非活动接口两种。转发数据的接口称为活动接口,不转发数据的接口称为非活动接口。
活动接口对应的链路称为活动链路,非活动接口对应的链路称为非活动链路。
·活动接口数上限阈值
设置活动接口数上限阈值的目的是在保证带宽的情况下提高网络的可靠性。当前活动链路数目达到上限阈值时,再向Eth-Trunk 中添加成员接口,不会增加 Eth-Trunk活动接口的数目,超过上限阈值的链路状态将被置为 Down,作为备份链路。
例如,有 8 条无故障链路在一个Eth-Trunk 内,每条链路都能提供 1G的带宽,现在最多需要5G 的带宽,那么上限阈值就可以设为5 或者更大的值。其他的链路就自动进入备份状态以提高网络的可靠性。
说明:手工负载分担模式链路聚合不支持活动接口数上限阈值的配置。关于手工负载分担模式,请参见手工负载分担模式链路聚合。
·活动接口数下限阈值
设置活动接口数下限阈值是为了保证最小带宽,当前活动链路数目小于下限阈值时,Eth-Trunk接口的状态转为 Down。
例如,每条物理链路能提供 1G的带宽,现在最小需要 2G 的带宽,那么活动接口数下限阈值必须要大于等于2。
二、转发原理
如图所示, Eth-Trunk 位于MAC 子层与物理层之间,属于数据链路层。
对于 MAC 子层来说,Eth-Trunk 接口可以认为是一个物理接口。因此, MAC子层在传输数据的时候,仅需要把数据提交给 Eth-Trunk 模块即可。Eth-Trunk 模块内部维护一张转发表,这张表由以下两项组成。
·HASH-KEY 值
HASH-KEY 值是根据数据包的MAC 地址或 IP地址等,经 HASH 算法计算得出。
·接口号
Eth-Trunk 转发表表项分布和设备每个Eth-Trunk 支持加入的成员接口数量相关,不同的HASH-KEY值对应不同的出接口。
例如,某设备每 Eth-Trunk 支持最大加入接口数为8 个,将接口 1、2、3、4捆绑为一个 Eth-Trunk接口,此时生成的转发表如图2 所示。其中 HASH-KEY值为 0、1、 2、3、 4、5、 6、7,对应的出接口号分别为 1、2、 3、4、 1、2、3、4。
Eth-Trunk 转发表示例
Eth-Trunk 模块根据转发表转发数据帧的过程如下:
1. Eth-Trunk 模块从MAC 子层接收到一个数据帧后,根据负载分担方式提取数据帧的源MAC地址/IP 地址或目的MAC 地址/IP地址。
2. 根据 HASH算法进行计算,得到 HASH-KEY 值。
3. Eth-Trunk 模块根据HASH-KEY 值在转发表中查找对应的接口,把数据帧从该接口发送出去。
今天讲解下链路聚合的两种模式:
根据是否启用链路聚合控制协议 LACP,链路聚合分为手工负载分担模式和LACP 模式。
一、手工负载分担模式链路聚合
手工负载分担模式下, Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议的参与。
该模式下所有活动链路都参与数据的转发,平均分担流量,因此称为负载分担模式。
如果某条活动链路障,链路聚合组自动在剩余的活动链路中平均分担流量。
当需要在两个直连设备间提供一个较大的链路带宽而设备又不支持LACP 协议时,可以使用手工负载分担模式。
二、LACP 模式链路聚合
背景:
作为链路聚合技术,手工负载分担模式 Eth-Trunk可以完成多个物理接口聚合成一个 Eth-Trunk 口来提高带宽,同时能够检测到同一聚合组内的成员链路有断路等有限故障,但是无法检测到链路层故障、链路错连等故障。
为了提高 Eth-Trunk 的容错性,并且能提供备份功能,保证成员链路的高可靠性,出现了链路聚合控制协议LACP(LinkAggregation Control Protocol), LACP模式就是采用 LACP 的一种链路聚合模式。
LACP 为交换数据的设备提供一种标准的协商方式,以供设备根据自身配置自动形成聚合链路并启动聚合链路收发数据。聚合链路形成以后,LACP 负责维护链路状态,在聚合条件发生变化时,自动调整或解散链路聚合。
如图所示, DeviceA 与DeviceB 之间创建 Eth-Trunk,需要将DeviceA 上的四个接口与 DeviceB捆绑成一个Eth-Trunk。由于错将 DeviceA上的一个接口与 DeviceC 相连,这将会导致DeviceA 向DeviceB传输数据时可能会将本应该发到 DeviceB 的数据发送到DeviceC 上。而手工负载分担模式的 Eth-Trunk不能及时检测到故障。
如果在 DeviceA 和DeviceB 上都启用 LACP协议,经过协商后, Eth-Trunk 就会选择正确连接的链路作为活动链路来转发数据,从而DeviceA 发送的数据能够正确到达 DeviceB。
Eth-Trunk 错连示意图
基本概念
·系统LACP 优先级
系统 LACP 优先级是为了区分两端设备优先级的高低而配置的参数。LACP 模式下,两端设备所选择的活动接口必须保持一致,否则链路聚合组就无法建立。此时可以使其中一端具有更高的优先级,另一端根据高优先级的一端来选择活动接口即可。系统LACP 优先级值越小优先级越高。
·接口LACP 优先级
接口 LACP 优先级是为了区别不同接口被选为活动接口的优先程度,优先级高的接口将优先被选为活动接口。接口LACP优先级值越小,优先级越高。
·成员接口间M:N 备份
LACP 模式链路聚合由LACP 确定聚合组中的活动和非活动链路,又称为 M:N模式,即 M 条活动链路与N 条备份链路的模式。这种模式提供了更高的链路可靠性,并且可以在M 条链中实现不同方式的负载均衡。
如图所示,两台设备间有 M+N条链路,在聚合链路上转发流量时在 M 条链路上分担负载,即活动链路,不在另外的N 条链路转发流量,这 N条链路提供备份功能,即备份链路。此时链路的实际带宽为 M条链路的总和,但是能提供的最大带宽为 M+N 条链路的总和。
当 M 条链路中有一条链路故障时,LACP 会从 N条备份链路中找出一条优先级高的可用链路替换故障链路。此时链路的实际带宽还是 M条链路的总和,但是能提供的最大带宽就变为M+N-1 条链路的总和。
M:N 备份示意图
这种场景主要应用在只向用户提供 M条链路的带宽,同时又希望提供一定的故障保护能力。当有一条链路出现故障时,系统能够自动选择一条优先级最高的可用备份链路变为活动链路。
如果在备份链路中无法找到可用链路,并且目前处于活动状态的链路数目低于配置的活动接口数下限阈值,那么系统将会把聚合接口关闭。
LACP 模式实现原理:
基于 IEEE802.3ad 标准的LACP,链路聚合控制协议是一种实现链路动态聚合与解聚合的协议。
LACP 通过链路聚合控制协议数据单元LACPDU(LinkAggregation Control Protocol Data Unit)与对端交互信息。
在 LACP 模式的Eth-Trunk 中加入成员接口后,这些接口将通过发送 LACPDU向对端通告自己的系统优先级、 MAC 地址、接口优先级、接口号和操作Key 等信息。对端接收到这些信息后,将这些信息与自身接口所保存的信息比较以选择能够聚合的接口,双方对哪些接口能够成为活动接口达成一致,确定活动链路。
LACPDU 报文详细信息如图所示。
LACP 模式 Eth-Trunk 建立的过程如下:
1. 两端互相发送 LACPDU报文。如图所示,在DeviceA 和 DeviceB上创建 Eth-Trunk 并配置为LACP 模式,然后向Eth-Trunk中手工加入成员接口。此时成员接口上便启用了 LACP 协议,两端互发LACPDU报文。
2. 确定主动端和活动链路。
如图所示,两端设备均会收到对端发来的 LACPDU报文。以 DeviceB 为例,当DeviceB收到 DeviceA发送的报文时,DeviceB 会查看并记录对端信息,并且比较系统优先级字段,如果DeviceA 的系统优先级高于本端的系统优先级,则确定DeviceA为 LACP主动端。
选出主动端后,两端都会以主动端的接口优先级来选择活动接口,两端设备选择了一致的活动接口,活动链路组便可以建立起来,从这些活动链路中以负载分担的方式转发数据。
·LACP 抢占
使能LACP 抢占后,聚合组会始终保持高优先级的接口作为活动接口的状态。
如图 所示,接口 port1、port2 和 port3为 Eth-Trunk 的成员接口,设备A 为主动端,活动接口数上限阈值为 2,三个接口的LACP 优先级分别为 10、20、 30。当通过LACP 协议协商完毕后,接口 port1和 port2 因为优先级较高被选作活动接口,port3 成为备份接口。
以下两种情况需要使能 LACP的抢占功能。§port1 接口出现故障而后又恢复了正常。当接口 port1出现故障时被 port3所取代,如果在Eth-Trunk 接口下未使能抢占,则故障恢复时 port1将处于备份状态;如果使能了 LACP抢占,当port1故障恢复时,由于接口优先级比 port3高,将重新成为活动接口, port3再次成为备份接口。
如果希望 port3 接口替换port1、 port2中的一个接口成为活动接口,可以配置 port3 的接口LACP 优先级较高,但前提条件是已经使能了 LACP抢占功能。如果没有使能 LACP抢占功能,即使将备份接口的优先级调整为高于当前活动接口的优先级,系统也不会进行重新选择活动接口的过程,不切换活动接口。
LACP 抢占延时
LACP 抢占发生时,处于备用状态的链路将会等待一段时间后再切换到转发状态,这就是抢占延时。配置抢占延时是为了避免由于某些链路状态频繁变化而导致Eth-Trunk 数据传输不稳定的情况。
如图所示, port1 由于链路故障切换为非活动接口,此后该链路又恢复了正常。若系统使能了LACP 抢占并配置了抢占延时, port1重新切换回活动状态就需要经过抢占延时的时间。
活动链路与非活动链路切换
LACP 模式链路聚合组两端设备中任何一端检测到以下事件,都会触发聚合组的链路切换:
§链路 Down 事件。
§以太网 OAM 检测到链路失效。
§LACP 协议发现链路故障。
§接口不可用。
§在使能了 LACP 抢占前提下,更改备份接口的优先级高于当前活动接口的优先级。
当满足上述切换条件其中之一时,按照如下步骤进行切换:
1. 关闭故障链路。
2. 从N 条备份链路中选择优先级最高的链路接替活动链路中的故障链路。
3. 优先级最高的备份链路转为活动状态并转发数据,完成切换。
使用链路聚合进行负载分担
数据流是指一组具有某个或某些相同属性的数据包。这些属性有源 MAC地址、目的 MAC 地址、源IP 地址、目的 IP地址、 TCP/UDP 的源端口号、TCP/UDP 的目的端口号等。
在使用 Eth-Trunk 转发数据时,由于聚合组两端设备之间有多条物理链路,就会产生同一数据流的第一个数据帧在一条物理链路上传输,而第二个数据帧在另外一条物理链路上传输的情况。这样一来同一数据流的第二个数据帧就有可能比第一个数据帧先到达对端设备,从而产生接收数据包乱序的情况。
为了避免这种情况的发生, 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链路聚合支持流量本地转发机制和特殊的链路聚合e-trunk。
一、Eth-Trunk 支持接口流量本地优先转发(堆叠)
基本概念
·堆叠设备
将多台设备通过专用的堆叠电缆连接起来,对外呈现为一台逻辑设备。
·跨框 Eth-Trunk 接口
将堆叠设备不同设备中的物理接口聚合到一个逻辑接口 Eth-Trunk接口中。当堆叠设备中某台设备故障或加入 Eth-Trunk接口中的物理成员口故障,可通过堆叠设备间线缆跨设备传输数据流量,从而保证了数据流量的可靠传输,同时实现了设备间的备份。
·接口流量本地优先转发
在网络无故障的情况下从堆叠设备中上来的流量,通过本设备中的成员口转发,而不是通过堆叠设备间线缆跨设备转发。
在设备堆叠情况下,为了保证流量的可靠传输,流量的出接口设置为 Eth-Trunk接口。那么 Eth-Trunk接口中必定存在跨设备成员口。当堆叠设备转发流量时,Eth-Trunk 接口通过 HASH算法可能会选择跨设备的成员口。由于堆叠设备间线缆带宽有限,跨设备转发流量增加了堆叠设备之间的带宽承载压力,同时也降低了流量转发效率。
DeviceB 和DeviceC 组成堆叠,堆叠设备和 DeviceA之间用 Eth-Trunk 连接。通过在堆叠设备上部署接口流量本地优先转发功能,可实现:入本设备流量从本设备转发
当 Eth-Trunk 接口在DeviceB 有出接口且出接口无故障时, DeviceB的 Eth-Trunk 接口转发表中将只包含DeviceB 的出接口。这样 DeviceB到 DeviceA 的流量在通过HASH 算法选择出接口时只能选中 DeviceB的接口,流量从 DeviceB 本设备转发出去。
入本设备流量跨设备转发当Eth-Trunk 接口在 DeviceB本设备无出接口或者出接口全部故障时, DeviceB 的Eth-Trunk转发表中将包含 Eth-Trunk接口中所有可转发的出接口。这样 DeviceB 到DeviceA 的流量在通过 HASH算法选择出接口时将选中DeviceC上的出接口,流量将通过 DeviceC跨设备转发。
说明:
·接口流量本地优先转发功能只对已知单播有效,不对未知单播、广播和组播生效。
·使能 Eth-Trunk 接口流量本地优先转发功能前必须确保本设备Eth-Trunk 接口出接口的带宽足以承载本设备转发的流量,防止发生丢包。
二、跨设备链路聚合 E-Trunk
E-Trunk(EnhancedTrunk)是一种实现跨设备链路聚合的机制,基于 LACP(单台设备链路聚合的标准)进行了扩展,能够实现多台设备间的链路聚合。从而把链路可靠性从单板级提高到了设备级。
E-Trunk 机制主要应用于CE 双归接入 VPLS、VLL、 PWE3网络时, CE 与PE 间的链路保护以及对 PE设备节点故障的保护。在没有使用 E-Trunk 前,CE 通过 Eth-Trunk链路只能单归到一个 PE设备。如果Eth-Trunk 出现故障或者 PE设备故障, CE 将无法与PE 设备继续进行通信。使用 E-Trunk后,CE 可以双归到 PE上,从而实现设备间保护。
基本概念
·系统 LACP 优先级
系统 LACP 优先级在LACP 中用于区分 Eth-Trunk两端设备的优先级的高低。值越小优先级越高。
·系统 ID
在 LACP 中,系统ID 用于当 Eth-Trunk两端的 LACP 优先级相同时,决策两端设备优先级的高低。系统ID 值较小的优先级更高。系统 ID缺省使用 Eth-Trunk 接口的MAC 地址。
而在 E-Trunk 中,为了使CE 认为对端的 PE是一台设备, E-Trunk 中主备两台设备的系统ID和 LACP优先级都需要保持一致。系统 ID 写成MAC 地址方式。
·E-Trunk 的优先级
E-Trunk 的优先级用于在聚合组中决策两台设备的主备状态。如图所示,假设PE1 的 E-Trunk优先级高于PE2,则 PE1为主用, PE2 为备用。E-Trunk 的优先级取值越小优先级越高。
·E-Trunk 的 ID
E-Trunk 的ID 用于唯一标识一个 E-Trunk。此ID 为整数形式。
·Eth-Trunk 的工作模式
Eth-Trunk 的工作模式只针对加入E-Trunk 的成员 Eth-Trunk而言。加入 E-Trunk 的Eth-Trunk有三种工作模式:
1、自动
2、强制主用
3、强制备用
·超时时间
正常情况下, E-Trunk 中的主用设备和备用设备相互周期性地发送Hello 报文。当备用设备在规定的时间内没有收到Hello报文,则转为主用。
说明:本文中所指的 Eth-Trunk 都为加入E-Trunk 的成员 Eth-Trunk。
E-Trunk 工作原理
E-Trunk 的工作过程如下:
·主备协商
如图所示, CE 分别与PE1 和 PE2直连, PE1 和PE2 之间运行 E-Trunk。
PE 侧:
在 PE1 和PE2 设备上分别创建 ID相同的 E-Trunk 和Eth-Trunk,并将 Eth-Trunk加入到E-Trunk。
CE 侧:
在 CE 设备上配置LACP 模式的 Eth-Trunk,此Eth-Trunk 分别与 PE1和 PE2 设备相连。对CE 设备而言, E-Trunk不可见。
确定 E-Trunk 的主备状态
PE1 与 PE2设备之间通过 E-Trunk 报文进行主备协商,确定E-Trunk 的主备状态。正常情况下两台 PE的协商结果是一个为主用一个为备用。
PE 设备上 E-Trunk主备状态是根据报文中所携带的 E-Trunk 优先级和E-Trunk 系统 ID确定的。优先级的数值越小,优先级越高,优先级高的为主用。如果E-Trunk 优先级相同,那么 E-Trunk系统 ID 小的为主用。
确定成员 Eth-Trunk 的主备状态
由E-Trunk 的主备状态以及对端成员 Eth-Trunk的链路信息,决定本端 E-Trunk 中成员Eth-Trunk的主备状态。
如图所示, E-Trunk 分为PE1 和 PE2两端。如果将 PE1 认为是E-Trunk 的本端,那么 PE2就为 E-Trunk 的对端。
成员 Eth-Trunk 的主备状态确定逻辑如表所示。
正常情况下:
·PE1 为主, PE1的 Eth-Trunk 10 为主,链路状态为Up。
·PE2 为备, PE2的 Eth-Trunk 10 为备,链路状态为Down。
如果 CE 到 PE1 间的链路出现故障:
PE1 会向对端发送 E-Trunk报文,报文中携带 PE1 的Eth-Trunk 10 故障的信息。
PE2 收到 E-Trunk报文后,发现对端 Eth-Trunk 10 故障,则PE2 设备上 Eth-Trunk10的状态将变为主。然后经过 LACP协商,PE2 设备上的 Eth-Trunk10 的状态变为 Up。这样PE2 设备的 Eth-Trunk状态变为 Up,CE 的流量会通过 PE2转发,以达到对 CE 的流量进行保护的目的。
如果 PE1 设备出现故障:
如果 PE 设备上配置了BFD, PE2检测到 BFD 会话状态为Down 后, PE2设备从备用状态变为主用状态, PE2 的Eth-Trunk 10 状态也变为主。
如果 PE 设备上没有配置BFD, PE2设备上的定时器超时后仍然没有收到 PE1设备发送的E-Trunk 报文, PE2设备从备用状态变为主用状态, PE2 的Eth-Trunk10 状态也变为主。
经过 LACP 协商,PE2 设备上的 Eth-Trunk10 的状态变为 Up。CE 的流量会通过 PE2转发,以达到对 CE 的流量进行保护的目的。
E-Trunk 报文的收发
E-Trunk 报文采用本端配置的Source IP 及端口号发送,采用 UDP发送。触发 E-Trunk 报文发送的因素有
1.发送计时器超时。
2.配置改变(E-Trunk 优先级改变、报文发送周期改变、超时时间倍数改变、成员Eth-Trunk的加入/退出和E-Trunk 的源IP或者目的 IP 改变)。
3.成员 Eth-Trunk 故障/恢复。
E-Trunk 报文中需要携带超时时间,对端从报文中获取超时时间作为本端的超时时间。
BFD 快速检测
通过报文接收超时无法快速感知对端是否故障,可以使用快速检测协议 BFD快速感知。每个E-Trunk 都需要指定对端的IP,通过创建检测对端路由是否可达的 BFD会话, E-Trunk 可感知到BFD 通告的故障,并快速处理。
回切机制
当 E-Trunk 的本端设备处于主用状态时,由于本端的Eth-Trunk 的物理状态变为 Down或本端设备故障,经过 E-Trunk和成员Eth-Trunk 的主备状态确定,对端设备变为主用状态,对端的成员 Eth-Trunk的物理状态变为 Up。
当本端故障消除需要恢复为主用状态时,本端 E-Trunk的成员 Eth-Trunk 进入协商状态。在协商期间,本端E-Trunk 收到LACP上报的协商能力 UP 的事件后,启动回切延时定时器。回切延时定时器超时后,本端E-Trunk 的成员 Eth-Trunk恢复为主用状态。经过 LACP 协商后,Eth-Trunk链路状态变为 Up。
E-Trunk 的约束条件
如图所示,为了提高CE 与 PE之间链路的可靠性,使得 CE 直连PE 的链路能够自动切换,必须遵循以下规则:
1、PE1 与 PE2上 E-Trunk 的配置必须一致。PE1 与 CE直连的 Eth-Trunk,与PE2 与 CE直连的Eth-Trunk 的工作速率和双工模式必须相同,即保证key值相同,且必须加入 ID相同的 E-Trunk。
Eth-Trunk 加入E-Trunk 之后,必须保证 PE上的 LACP 优先级、LACP 系统 ID相同。
CE 上直连 PE1 与PE2 的接口应该加入同一 Eth-Trunk,可以和PE 端的 Eth-TrunkID 不相同,如CE 端配置Eth-Trunk 1,两台PE 设备配置 Eth-Trunk10。
2、PE 两台设备所指定的地址互为对端和本端 IP地址,保证三层可达即可,建议使用环回地址。
3、必须配置 E-Trunk 与BFD 会话绑定。·PE 两台设备上设置的报文密码(可配)必须相同
扫描二维码
获取更多精彩
网络工程师