以太网链路聚合Eth-Trunk简称链路聚合,它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。同时,这些捆绑在一起的链路通过相互间的动态备份,可以有效地提高链路的可靠性。
目的:
随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出越来越高的要求。在传统技术中,常用更换高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够灵活。
采用链路聚合技术可以在不进行硬件升级的条件下,通过将多个物理接口捆绑为一个逻辑接口,达到增加链路带宽的目的。在实现增大带宽目的的同时,链路聚合采用备份链路的机制,可以有效的提高设备之间链路的可靠性。
链路聚合主要有以下三个优势:
基本概念:
如在两个设备之间通过三条以太网物理链路相连,将这三条链路捆绑在一起,就成为了一条逻辑链路。这条逻辑链路的最大带宽等于原先三条以太网物理链路的带宽总和,从而达到了增加链路带宽的目的;同时,这三条以太网物理链路相互备份,有效地提高了链路的可靠性。
链路聚合的一些基本概念:
维度手工模式LACP模式定义Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议的参与。Eth-Trunk的建立是基于LACP协议的,LACP为交换数据的设备提供一种标准的协商方式,以供系统根据自身配置自动形成聚合链路并启动聚合链路收发数据。聚合链路形成以后,负责维护链路状态。在聚合条件发生变化时,自动调整或解散链路聚合。设备是否需要支持LACP协议不需要需要数据转发一般情况下,所有链路都是活动链路。所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在剩余的活动链路中分担流量。一般情况下,部分链路是活动链路。所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在非活动链路中选择一条链路作为活动链路,参与数据转发的链路数目不变。是否支持跨设备的链路聚合不支持支持检测故障只能检测到同一聚合组内的成员链路有断路等有限故障,但是无法检测到链路故障、链路错连等故障。不仅能够检测到同一聚合组内的成员链路有断路等有限故障,还可以检测到链路故障、链路错连等故障。
根据是否启用链路聚合控制协议LACP,链路聚合分为手工模式和LACP模式。
手工模式下,Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议LACP的参与。当需要在两个直连设备之间提供一个较大的链路带宽而设备又不支持LACP协议时,可以使用手工模式。手工模式可以实现增加带宽、提高可靠性和负载分担的目的。
作为链路聚合技术,手工负载分担模式Eth-Trunk可以完成多个物理接口聚合成一个Eth-Trunk口来提高带宽,同时能够检测到同一聚合组内的成员链路有断路等有限故障,但是无法检测到链路层故障、链路错连等故障。
为了提高Eth-Trunk的容错性,并且能提供备份功能,保证成员链路的高可靠性,出现了链路聚合控制协议LACP(Link Aggregation Control Protocol),LACP模式就是采用LACP的一种链路聚合模式。
LACP为交换数据的设备提供一种标准的协商方式,以供设备根据自身配置自动形成聚合链路并启动聚合链路收发数据。聚合链路形成以后,LACP负责维护链路状态,在聚合条件发生变化时,自动调整或解散链路聚合。
基于IEEE802.3ad标准的LACP是一种实现链路动态聚合与解聚合的协议。LACP通过链路聚合控制协议数据单元LACPDU(Link Aggregation Control Protocol Data Unit)与对端交互信息。
在LACP模式的Eth-Trunk中加入成员接口后,这些接口将通过发送LACPDU向对端通告自己的系统优先级、MAC地址、接口优先级、接口号和操作Key等信息。对端接收到这些信息后,将这些信息与自身接口所保存的信息比较,用以选择能够聚合的接口,双方对哪些接口能够成为活动接口达成一致,确定活动链路。
报文字段说明:
字段长度说明Destination Address6字节目的MAC地址,是一个组播地址(01-80-C2-00-00-02)Source Address6字节源MAC地址,发送端口的MAC地址Length/Type2字节协议类型:0x8809Subtype1字节报文子类型:0x01,说明是LACP报文Version Number1字节协议版本号:0x01TLV_type1字节0x00代表Terminator字段0x01代表Actor字段0x02代表Partner字段0x03代表Collector字段Actor_Information_Length1字节actor信息字段长度,为20字节Actor_Port2字节端口号,根据算法生成,由接口所在的槽位号、子卡号和端口号决定Actor_State1字节本端状态信息:LACP_Activity:代表链路所在的聚合组参与LACP协商的方式。主动的LACP被编码为1,主动方式下会主动发送LACPDU报文给对方,被动方式不会主动发送协商报文,除非收到协商报文才会参与。LACP_Timeout:代表链路接收LACPDU报文的周期,有两种,快周期1s和慢周期30s,超时时间为周期的3倍。短超时被编码为1,长超时被编码为0。Aggregation:标识该链路能否被聚合组聚合。如果编码为0,该链路被认为是独立的,不能被聚合,即,这个链路只能作为一个个体链路运行。Synchronization:代表该链路是否已被分配到一个正确的链路聚合组,如果该链路已经关联了一个兼容的聚合器,那么该链路聚合组的识别与系统ID和被发送的运行Key信息是一致的。编码为0,代表链路当前不在正确的聚合里。Collecting:帧的收集使能位,假如编码为1,表示在这个链路上进来的帧的收集是明确使能的;即收集当前被使能,并且不期望在没有管理变化或接收协议信息变化的情况下被禁止。其它情况下这个值编码为0。Distributing:帧的分配使能位,假如编码为0,意味着在这个链路上的外出帧的分配被明确禁止,并且不期望在没有管理变化或接收协议信息变化的情况下被使能。其它情况下这个值编码为1。Default:诊断调试时使用,编码为1,代表接收到的对端的信息是管理配置的。假如编码为0,正在使用的运行伙伴信息在接收到的LACPDU里。该值不被正常LACP协议使用,仅用于诊断协议问题。Expired:诊断调试时使用,编码为1,代表本端的接收机是处于EXPIRED超时状态;假如编码为0,本端接收状态机处于正常状态。该值不被正常LACP协议使用,仅用于诊断协议问题。Actor_System_Priority2字节本端系统优先级,可以设置,默认情况下为32768Actor_System6字节系统ID,本端系统的MAC地址Actor_key2字节端口KEY值,系统根据端口的配置生成,是端口能否成为聚合组中的一员的关 键因素,影响Key值得因素有trunk ID、接口的速率和双工模式Actor_Port_Priority2字节接口优先级,可以配置,默认为0x8000Reserved3字节保留字段,可用于功能调试以及扩展Partner_Information_Length1字节Partner信息字段长度。Partner字段代表了链路接口接收到对端的系统信息、接口信息和状态信息,与actor字段含义一致。在协商最开始未收到对端信息时,partner字段填充0,接收到对端信息后会把收到的对端信息补充到partner字段当中。Partner_Port2字节对端端口号Partner_State2字节对端状态信息Partner_System_Priority2字节对端系统优先级Partner_System6字节对端系统ID,对端系统的MAC地址Partner_key2字节对端端口KEY值Partner_Port_Priority2字节对端接口优先级Reserved2字节保留字段Collector_Information_Length1字节Collector信息字段长度:0x10CollectorMaxDelay2字节最大延时:默认情况下为0xffffReserved12字节保留字段Terminator_Length1字节Terminator信息字段长度:0x00Reserved50字节保留字段,全置0FCS4字节用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。
抓包示例:
报文字段说明:
Destination Address6字节目的MAC地址,是一个组播地址(01-80-C2-00-00-02)Source Address6字节源MAC地址,发送端口的MAC地址Length/Type2字节协议类型:0x8809Subtype1字节报文子类型:0x01,说明是LACP报文Version Number1字节协议版本号:0x01TLV_type1字节0x00代表Terminator字段0x01代表Actor字段0x02代表Partner字段0x03代表Collector字段Actor_Information_Length1字节actor信息字段长度,为20字节Actor_Port2字节端口号,根据算法生成,由接口所在的槽位号、子卡号和端口号决定Actor_State1字节本端状态信息:LACP_Activity:代表链路所在的聚合组参与LACP协商的方式。主动的LACP被编码为1,主动方式下会主动发送LACPDU报文给对方,被动方式不会主动发送协商报文,除非收到协商报文才会参与。LACP_Timeout:代表链路接收LACPDU报文的周期,有两种,快周期1s和慢周期30s,超时时间为周期的3倍。短超时被编码为1,长超时被编码为0。Aggregation:标识该链路能否被聚合组聚合。如果编码为0,该链路被认为是独立的,不能被聚合,即,这个链路只能作为一个个体链路运行。Synchronization:代表该链路是否已被分配到一个正确的链路聚合组,如果该链路已经关联了一个兼容的聚合器,那么该链路聚合组的识别与系统ID和被发送的运行Key信息是一致的。编码为0,代表链路当前不在正确的聚合里。Collecting:帧的收集使能位,假如编码为1,表示在这个链路上进来的帧的收集是明确使能的;即收集当前被使能,并且不期望在没有管理变化或接收协议信息变化的情况下被禁止。其它情况下这个值编码为0。Distributing:帧的分配使能位,假如编码为0,意味着在这个链路上的外出帧的分配被明确禁止,并且不期望在没有管理变化或接收协议信息变化的情况下被使能。其它情况下这个值编码为1。Default:诊断调试时使用,编码为1,代表接收到的对端的信息是管理配置的。假如编码为0,正在使用的运行伙伴信息在接收到的LACPDU里。该值不被正常LACP协议使用,仅用于诊断协议问题。Expired:诊断调试时使用,编码为1,代表本端的接收机是处于EXPIRED超时状态;假如编码为0,本端接收状态机处于正常状态。该值不被正常LACP协议使用,仅用于诊断协议问题。Actor_System_Priority2字节本端系统优先级,可以设置,默认情况下为32768Actor_System6字节系统ID,本端系统的MAC地址Actor_key2字节端口KEY值,系统根据端口的配置生成,是端口能否成为聚合组中的一员的关 键因素,影响Key值得因素有trunk ID、接口的速率和双工模式Actor_Port_Priority2字节接口优先级,可以配置,默认为0x8000Reserved3字节保留字段,可用于功能调试以及扩展Partner_Information_Length1字节Partner信息字段长度。Partner字段代表了链路接口接收到对端的系统信息、接口信息和状态信息,与actor字段含义一致。在协商最开始未收到对端信息时,partner字段填充0,接收到对端信息后会把收到的对端信息补充到partner字段当中。Partner_Port2字节对端端口号Partner_State2字节对端状态信息Partner_System_Priority2字节对端系统优先级Partner_System6字节对端系统ID,对端系统的MAC地址Partner_key2字节对端端口KEY值Partner_Port_Priority2字节对端接口优先级Reserved2字节保留字段Collector_Information_Length1字节Collector信息字段长度:0x10CollectorMaxDelay2字节最大延时:默认情况下为0xffffReserved12字节保留字段Terminator_Length1字节Terminator信息字段长度:0x00Reserved50字节保留字段,全置0FCS4字节用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。
抓包示例:
抓包示例:
图:LACP报文抓包示例
LACP模式Eth-Trunk建立过程如下:
1. 两端互相发送LACPDU报文。
如下图所示,在DeviceA和DeviceB上创建Eth-Trunk并配置为LACP模式,然后向Eth-Trunk中手工加入成员接口。此时成员接口上便启用了LACP协议,两端互发LACPDU报文。
2. 确定主动端和活动链路。
如下图所示,两端设备均会收到对端发来的LACPDU报文。以DeviceB为例,当DeviceB收到DeviceA发送的报文时,DeviceB会查看并记录对端信息,然后比较系统优先级字段,如果DeviceA的系统优先级高于本端的系统优先级,则确定DeviceA为LACP主动端。如果DeviceA和DeviceB的系统优先级相同,比较两端设备的MAC地址,确定MAC地址小的一端为LACP主动端。
选出主动端后,两端都会以主动端的接口优先级来选择活动接口,两端设备选择了一致的活动接口,活动链路组便可以建立起来,从这些活动链路中以负载分担的方式转发数据。
3. LACP抢占:
使能LACP抢占功能后,聚合组会始终保持高优先级的接口作为活动接口的状态。
图:抢占功能演示
以下两种情况需要使能LAXP的抢占功能:
LACP抢占延时:
抢占延时是LACP抢占发生时,处于备用状态的链路将会等待一段时间后再切换到转发状态。配置抢占延时是为了避免由于某些链路状态频繁变化而导致Eth-Trunk数据传输不稳定的情况。
活动链路与非活动链路的切换:
LACP模式链路聚合组两端设备中任何一端检测到以下事件,都会触发聚合组的链路切换:
当满足上述切换条件其中之一时,按照如下步骤进行切换:
链路聚合负载分担方式:
背景:
数据流是指一组具有某个或某些相同属性的数据包。这些属性有源MAC地址、目的MAC地址、源IP地址、目的IP地址、TCP/UDP的源端口号、TCP/UDP的目的端口号等。
对于负载分担,可以分为逐包的负载分担和逐流的负载分担。
注:目前AR系列路由器仅支持逐流的负载分担。
转发原理:
Eth-Trunk位于MAC与LLC子层之间,属于数据链路层。
Eth-Trunk模块内部维护一张转发表,这张表由以下两项组成。
HASH-KEY值是根据数据包的MAC地址或IP地址等,经HASH算法计算得出。
Eth-Trunk转发表表项分布和设备每个Eth-Trunk支持加入的成员接口数量相关,不同的HASH-KEY值对应不同的出接口。
Eth-Trunk模块根据转发表转发数据帧的过程如下:
负载分担方式:
为了避免数据包乱序情况的发生,Eth-Trunk采用逐流负载分担的机制,其中如何转发数据则由于选择不同的负载分担方式而有所差别。
负载分担的方式主要包括以下几种,用户可以根据具体应用选择不同的负载分担方式。
配置负载分担方式时,请注意:
例如,数据报文的目的MAC和IP地址只有一个,则应选择根据报文的源MAC和IP地址进行负载分担,如果选择根据报文的目的MAC和IP地址进行负载分担则会造成流量只在一条链路上传输,造成流量拥堵。
链路聚合前:
以太网类型和速率不同的接口不能加入同一个Eth-Trunk接口,如GE接口和FE接口不能加入同一个Eth-Trunk接口,GE电接口和GE光接口不能加入同一个Eth-Trunk接口。
链路聚合后:
缺省配置:
参数缺省值链路聚合模式手工负载分担模式活动接口数上限阈值8活动接口数下限阈值1系统LACP优先级32768接口LACP优先级32768LACP抢占去使能LACP抢占等待时间30s接收LACP报文超时时间90s
配置手工负载分担模式:
如下图,交换机1和2都有VLAN10,20.通过在两个交换机之间配置链路聚合提高链路带宽,以及增加一定的可靠性。
图:配置手工负载模式
配置命令行:
两个交换机配置相同
[SW1]dis current-configuration
#
sysname SW1
#
vlan batch 10 20
#
interface Eth-Trunk1
port link-type trunk
port trunk allow-pass vlan 10 20
#
interface GigabitEthernet0/0/1
eth-trunk 1 //加入Eth-trunk接口
#
interface GigabitEthernet0/0/2
eth-trunk 1 //加入Eth-trunk接口
#
interface GigabitEthernet0/0/3
eth-trunk 1 //加入Eth-trunk接口
#
执行:display eth-trunk 1,查看配置结果:
图:手工负载模式配置情况
配置LACP模式链路聚合:
如下图,在两台设备上配置LACP模式链路聚合组,提高两设备之间的带宽与可靠性,具体要求如下:
图:LACP模式
页面更新:2024-05-04
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号