目录
1.Eth-Trunk原理
以太网链路聚合Eth-Trunk简称链路聚合,它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。同时,这些捆绑在一起的链路通过相互间的动态备份,可以有效地提高链路的可靠性。
Trunk接口连接的链路可以看成是一条点到点的直连链路,在一个Trunk内,可以实现流量负载分担,同时也提供了更高的连接可靠性和更大的带宽。用户通过对逻辑口进行配置,实现各种路由协议以及其它业务部署。
链路聚合技术主要有以下优势:
-
增加带宽
-
提高可靠性
-
负载分担
链路聚合组和成员接口
链路聚合组LAG是指将若干条以太链路捆绑在一起所形成的的逻辑链路。组成Eth-Trunk接口的各个 物理接口称为成员接口。
活动接口和非活动接口、活动链路和非活动链路
链路聚合组的成员接口存在活动接口和非活动接口两种。转发数据的接口称为活动接口,不转发数据的接口称为非活动接口。活动接口对应的链路称为活动链路,非活动接口对应的链路称为非活动链路。
活动接口数上限阈值
当前活动链路数目达到上限阈值时,再向Eth-Trunk中添加成员接口,不会增加Eth-Trunk活动接口的数目,超过上限阈值的链路状态将被置为Down,作为备份链路。
活动接口数下限阈值
设置活动接口数下限阈值是为了保证最小带宽,当前活动链路数目小于下限阈值时,Eth-Trunk接口的状态转为Down。
设备支持的链路聚合方式
- 同板︰是指链路聚合时,同一聚合组的成员接口分布在同一单板上。
- 跨板︰是指链路聚合时,同一聚合组的成员接口分布在不同的单板上。
- 跨框︰是指在集群场景下,成员接口分布在集群的各个成员设备上。
- 跨设备︰是指E-Trunk基于LACP进行了扩展,能够实现多台设备间的链路聚合。
1.1 转发原理
Eth-Trunk位于MAC与LLC子层之间,属于数据链路层。
Eth-Trunk模块内维护一张转发表,这张表由以下两项组成。
- HASH-KEY值:HASH-KEY值是根据数据包的MAC地址或IP地址等,经HASH算法计算得出。
- 接口号:Eth-Trunk转发表表项分布和设备每个Eth-Trunk支持加入的成员接口数量相关,不同的HASH-KEY值对应不同的出接口
Eth-Trunk模块根据转发表转发数据帧的过程如下:
- Eth-Trunk模块从MAC子层接收到一帧数据之后,根据负载分担方式提取数据帧的源MAC地址/IP地址或目的MAC地址/IP地址。
- 根据HASH算法进行计算,得到HASH-KEY值。
- 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采用逐流负载分担的机制,其中如何转发数据则由于选择不同的负载分担的方式而有所差别。负载分担的方式主要包括以下几种,用户可以自由选择:
- 根据报文的源MAC地址进行负载分担;
- 根据报文的目的MAC地址进行负载分担;
- 根据报文的源IP地址进行负载分担;
- 根据报文的目的IP地址进行负载分担;
- 根据报文的源MAC地址和目的MAC地址进行负载分担;
- 根据报文的源IP地址和目的IP地址进行负载分担;
- 根据报文的Vlan、源物理端口等对L2、IPV4、IPV6和MPLS报文进行增强型负载分担
2.Eth-Trunk实现方式
2.1 手工模式链路聚合
手工模式下,Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议LACP的参与。如图所示,DeviceA与DeviceB之间创建Eth-Trunk,手工模式下三条活动链路都参与数据转发并分担流量。当一条链路故障时,故障链路无法转发数据 ,链路聚合组自动在剩余的两条活动链路中分担流量。
2.2 LACP模式链路聚合
为了提高Eth-Trunk的容错性,并且能提供备份功能,保证成员链路的高可靠性,出现了链路聚合控制协议LACP ( Link Aggregation Control Protocol )。聚合链路形成以后,LACP负责维护链路状态,在聚合条件发生变化时,自动调整或解散链路聚合。
LACP模式Eth-Trunk建立的过程如下:
- 两端互相发送LACPDU报文。在DeviceA和DeviceB上创建Eth-Trunk并配置为LACP模式,然后向Eth-Trunk中手工加入成员接口。此时成员接口上便启用了LACP协议,两端互发LACPDU报文。
- 确定主动端和活动链路。
如图所示,两端设备均会收到对端发来的LACPDU报文。以DeviceB为例,当DeviceB收到DeviceA发送的报文时,DeviceB会查看并记录对端信息,然后比较系统优先级字段,如果DeviceA的系统优先级高于本端的系统优先级,则确定DeviceA为LACP主动端。如果DeviceA和DeviceB的系统优先级相同,比较两端设备的MAC地址,确定MAC地址小的一端为LACP主动端。
选出主动端后,两端都会以主动端的接口优先级来选择活动接口,如果主动端的接口优先级都相同则选择接口编号比较小的为活动接口。两端设备选择了一致的活动接口,活动链路组便可以建立起来,从这些活动链路中以负载分担的方式转发数据。
注:只有在LACP模式下,Eth-Trunk才支持优先级抢占功能,可以执行lacp preempt enable命令使能优先级抢占功能。在LACP模式下,当活动链路中出现故障链路时,系统会从备用链路中选择优先级最高的链路替代故障链路;如果被替代的故障链路恢复了正常,而且该链路的优先级又高于替代自己的链路,这种情况下,如果使能了LACP优先级抢占功能,高优先级链路会抢占低优先级链路,回切到活动状态。要求Eth-Trunk两端LACP抢占功能使能情况配置一致,即∶统一使能或不使能。
2.3 配置
手工模式链路聚合:
[SwitchA] interface eth-trunk 1 //创建Eth-Trunk接口,并进入Eth-Trunk接口视图
[SwitchA-Eth-Trunk1] mode manual load-balance //配置链路聚合模式为手工模式
[SwitchA-Eth-Trunk1] trunkport gigabitethernet O/0/1 to 0/0/3 //将成员接口加入聚合组
LACP模式的链路聚合:
[SwitchA] interface eth-trunk 1
[SwitchA-Eth-Trunk1] mode lacp //配置链路聚合模式为LACP模式
[SwitchA-Eth-Trunk1] max active-linknumber 2 //配置活动接口上限阈值为2
[SwitchA] interface gigabitethernet O/0/1 //将成员接口加入聚合组
[SwitchA-GigabitEthernet0/0/1]eth-trunk 1
[SwitchA] interface gigabitethernet O/0/2
[SwitchA-GigabitEthernet0/0/2] eth-trunk 1
[SwitchA] interface gigabitethernet O/0/3
[SwitchA-GigabitEthernet0/0/3]eth-trunk 1
2.4 集群环境下的链路聚合
将集群设备不同的设备中物理接口聚合到一个逻辑接口Eth-Trunk中。当集群中某台设备故障或加入Eth-Trunk接口中的物理成员口故障,可通过集群设备间线缆跨框传输数据流量,从而保证了数据流量的可靠传输,同时实现了设备间的备份。
在网络无故障的情况下从Device B或Device C上来的流量,通过本设备中的成员口优先本地转发,而不是像A图中的那样通过集群设备间线缆跨框转发。
在设备集群情况下,为了保证流量的可靠传输,流量的出接口设置为Eth-Trunk接口。那么Eth-Trunk接口中必定存在跨框成员口。当集群设备转发流量时,Eth-Trunk接口通过HASH算法可能会选择跨框的成员口。由于集群设备间线缆带宽有限,跨框转发流量增加了集群设备之间的带宽承载压力,同时也降低了流量转发效率。为了解决这个问题,可以使能Eth-Trunk接口流量本地优先转发。
如上图所示,Device B和Device C组成集群,集群设备和Device A之间用Eth-Trunk连接,通过在集群设备上部署接口流量本地优先转发功能,可实现:
- 入本设备流量从本设备转发
- 入本设备流量跨框转发
3.E-Trunk(Enhanced Trunk)
E-Trunk(Enhanced Trunk)是一种实现跨设备链路聚合的机制,基于LACP(单台链路聚合的标准)进行了扩展,能够实现多台设备间的链路聚合,从而把链路可靠性从单板机提高到了设备级。
如图所示,CE双归接入PE1和PE2,通过在PE节点部署E-Trunk,当CE至PE1的链路或者PE1节点故障时,流量可以切换到CE至PE2的链路,从而实现设备级保护。
如图,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不可见。
PE1与PE2设备之间通过E-Trunk报文进行主备协商,确定E-Trunk的主备状态。正常情况下两台PE的协商结果是一个为主用一个为备用。PE设备上E-Trunk主备状态是根据报文中所携带的E-Trunk优先级和E-Trunk系统ID确定的。优先级的数值越小,优先级越高,优先级高的为主用。如果E-Trunk优先级相同,那么E-Trunk系统ID小的为主用。PE1为主,PE1的Eth-Trunk 10为主,链路状态为Up。PE2为备,PE2的Eth-Trunk 10为备,链路状态为DoWn。
如果CE到PE1间的链路出现故障:PE1会向对端发送E-Trunk报文,报文中携带PE1的Eth-Trunk10故障的信息。PE2收到E-Trunk报文后,发现对端Eth-Trunk 10故障,则PE2设备上Eth-Trunk10的状态将变为主。然后经过LACP协商,PE2设备上的Eth-Trunk 10的状态变为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-Trunk 10状态也变为主。经过LACP协商,PE2设备上的Eth-Trunk 10的状态变为UP。CE的流量会通过PE2转发,以达到对CE流量进行保护的目的。