当前位置: 首页 > news >正文

LACP协议解析

LACP 协议透析

1.基础知识
LACP(Link Aggregation Control Protocol,链路汇聚控制协议)是基于IEEE802.3ad标准的链路聚合协议(该标准在2008年转入IEEE 802.1ax)。该协议将2个或多个物理链路组合在一起形成一条逻辑的链路从而增加在两网络节点之间的带宽,将属于这几个端口的带宽合并,给端口提供一个几倍于独立端口的独享的高带宽。在网络出现故障或其他原因断开其中一条或多条链路时,剩下的链路还可以工作,或者启用备份链路。(即增加带宽和链路备份功能)
在这里插入图片描述

图 1 链路聚合示意图

LACP包括静态汇聚和动态汇聚两种。注意区分手工汇聚和静态汇聚,

除了LACP外,Cisco 的私有PAgP(port Aggregation Protocol,端口聚合协议) 协议也可以进行端口汇聚。

汇聚的方式
汇聚方式差异 手工汇聚 静态LACP汇聚 动态LACP汇聚
操作对象 人工 人工 自动
限制 不允许系统自动添加或删除汇聚组中的端口,汇聚组中至少包含一个端口;
只包含一个端口是,不能将该端口从汇聚组中删除; 不允许系统自动添加或删除汇聚组中的端口,汇聚组中至少包含一个端口;
禁止用户关闭静态汇聚端口的LACP协议;
只包含一个端口时,不能将该端口从汇聚组中删除;
静态汇聚组被删除时,其成员端口仍将形成一个或多个动态LACP汇聚。 系统自动创建/删除汇聚组,不允许用户增加或删除动态LACP汇聚中的成员端口。
端口LACP状态 关闭 启用 启用
是否判断端口是否可聚合 不会进行判断一个聚合组中的端口是否可以真的被聚合在一起 进行LACP协议来判断在一个聚合组中的端口是否可以真的被聚合不在一起 同静态LACP汇聚
汇聚主端口 汇聚组中处于Selected状态且端口号最小的端口 汇聚组中处于Selected状态且端口号最小的端口 汇聚组中处于Selected状态且端口号最小的端口

汇聚组类型:
负载分担汇聚组、非负载分担汇聚组
异同 负载分担汇聚组 非负载分担汇聚组
Selected 端口个数 至少2个 最多一个,其余均为standby端口

注意:
同一汇聚组中端口的基本配置(如STP、QoS、VLAN、端口属性等)必须保持一致

2.基本概念
2.1聚合组
将多个以太网接口捆绑在一起形成的组合称为聚合组。
2.2成员端口
聚合组中的以太网接口称为该聚合组的成员端口。
成员端口具有选中(Selected)、非选(Unselected)中两种状态。
 选中(Selected)状态:此状态下的成员端口可以参与用户数据的转发,处于此状态的成员端口简称为“选中端口”。
 非选中(Unselected)状态:此状态下的成员端口不能参与用户数据的转发,处于此状态的成员端口简称为“非选中端口”。

2.3聚合接口
每个聚合组唯一对应着一个逻辑接口,称为聚合接口。
二层聚合组/二层聚合接口
二层聚合组的成员端口全部为二层以太网接口。其对应的聚合接口称为二层聚合接口(Bridge-aggregation Interface,BAGG)
三层聚合组/三层聚合接口
三层聚合组的成员端口全部为三层以太网接口。其对应的聚合接口称为三层聚合接口(Route-aggregation Interface,RAGG)

2.4操作Key
操作Key是系统在进行链路聚合时用来表征成员端口聚合能力的一个数值,它是根据成员端口上的一些信息(包括该端口的速率、双工模式等)的组合自动计算生成的,这个信息组合中任何一项的变化都会引起操作Key的重新计算。在同一聚合组中,所有的选中端口都必须具有相同的操作Key。
影响操作key计算的端口信息包括:
 聚合组ID
 端口速率
 端口双工模式
 端口硬件限制值
 端口聚合相关配置
2.5 配置分类
根据对成员端口状态的影响不同,我们可以将成员端口上的配置分为以下三类:
(1) 端口属性类配置:包含速率、双工模式和链路状态(up/down)这三项配置内容,是成员端口上最基础的配置内容。
(2) 第二类配置:包含的配置内容如表 1所示。在聚合组中,只有与对应聚合接口的第二类配置完全相同的成员端口才能够成为选中端口。
表 1 第二类配置的内容
配置项 内容
端口隔离 端口是否加入隔离组、端口所属的端口隔离组
QinQ配置 端口的QinQ功能开启/关闭状态、VLAN Tag的TPID值、添加的外层VLAN Tag、内外层VLAN优先级映射关系、不同内层VLAN ID添加外层VLAN Tag的策略、内层VLAN ID替换关系
VLAN配置 端口上允许通过的VLAN、端口缺省VLAN ID、端口的链路类型(即Trunk、Hybrid、Access类型)、基于IP子网的VLAN配置、基于协议的VLAN配置、VLAN报文是否带Tag配置
MAC地址学习配置 是否具有MAC地址学习功能、端口是否具有最大学习MAC地址个数的限制、MAC地址表满后是否继续转发

 在聚合接口上所作的第二类配置,将被自动同步到对应聚合组内的所有成员端口上。当聚合接口被删除后,这些配置仍将保留在这些成员端口上。
 由于成员端口上第二类配置的改变可能导致其选中/非选中状态发生变化,进而对业务产生影响,因此当在成员端口上进行此类配置时,系统将给出提示信息,由用户来决定是否继续执行该配置。

(3) 第一类配置:是相对于第二类配置而言的,包含的配置内容有GVRP、MSTP等。在聚合组中,即使某成员端口与对应聚合接口的第一类配置存在不同,也不会影响该成员端口成为选中端口。

在成员端口上所作的第一类配置,只有当该成员端口退出聚合组后才能生效。

2.6参考端口
参考端口从成员端口中选出,其端口属性类配置和第二类配置将作为同一聚合组内的其它成员端口的参照,以确定这些成员端口的状态。
2.7聚合模式
根据成员端口上是否启用了LACP协议,可以将链路聚合分为静态聚合和动态聚合两种模式,它们各自的特点如下表所示
聚合模式 成员端口是否开启LACP协议 优点 缺点
静态聚合模式 否
一旦配置好后,端口的选中/非选中状态就不会受网络环境的影响,比较稳定 不能根据对端的状态调整端口的选中/非选中状态,不够灵活
动态聚合模式 是 能够根据对端和本端的信息调整端口的选中/非选中状态,比较灵活 端口的选中/非选中状态容易受网络环境的影响,不够稳定
表 不同聚合模式的特点

处于静态聚合模式和动态聚合模式下的聚合组分别称为静态聚合组和动态聚合组,动态聚合组内的选中端口以及处于up状态、与对应聚合接口的第二类配置相同的非选中端口均可以收发LACPDU。

2.8LACP抢占
使能LACP抢占后,聚合组会始终保持高优先级的接口作为活动接口的状态。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接口成为备份接口。
以下两种情况需要使能LACP的抢占功能。
 GE1/0/1接口出现故障而后又恢复了正常。当接口GE1/0/1出现故障时被GE1/0/3所取代,如果在Eth-Trunk接口下未使能抢占,则故障恢复时GE1/0/1仍然保持备份接口状态;如果使能了LACP抢占,当GE1/0/1故障恢复时可以重新成为活动接口,GE1/0/3再次成为备份接口。
 如果用户希望GE1/0/3接口替换GE1/0/1、GE1/0/2中的一个接口成为活动接口,可以通过更改GE1/0/3的接口LACP优先级为8或更小的数值来实现,但前提条件是已经使能了LACP抢占功能。如果没有使能LACP抢占功能,即使将备份接口的优先级调整为高于当前活动接口的优先级,系统也不会进行重新选择活动接口的过程,不切换活动接口。

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

  1. LACP协议细节
    基于IEEE802.3ad标准的LACP(Link Aggregation Control Protocol,链路聚合控制协议)协议是一种实现链路动态聚合的协议,运行该协议的设备之间通过互发LACPDU(Link Aggregation Control Protocol Data Unit,链路聚合控制协议数据单元)来交互链路聚合的相关信息。

链路聚合子层在OSI模型中的位置

3.1 链路聚合子层

Frame distribution:
基于帧分配器采用帧分配算法,负责处理被MAC client提交的帧,并把该帧传输到合适的端口。帧分配器也包含一个可选的Marker Generator/Receiver 用于Marker 协议。

Frame collection:
负责处理接收从各种端口到MAC client的帧。也包括一个market Responder,用于marker 协议。
Aggregator Parser/Multiplexers:
On transmit, these blocks simply pass frame transmission requests from the Distributor, Marker Generator, and/or Marker Responder to the appropriate port. On receive, these blocks distinguish among Marker Request, Marker Response, and MAC Client PDUs,and pass each to the appropriate entity (Marker Responder, Marker Receiver, and Collector, respectively).

Aggregator:
The combination of Frame Distribution and Collection, along with the Aggregator Parser/Multiplexers, is referred to as the Aggregator.
Aggregation Control:
This block is responsible for the configuration and control of Link Aggregation.It incorporates a Link Aggregation Control Protocol (LACP) that can be used for automatic communication of aggregation capabilities between Systems and automatic configuration of Link Aggregation.
Control Parser/Multiplexers.
On transmit, these blocks simply pass frame transmission requests from the Aggregator and Control entities to the appropriate port. On receive, these blocks distinguish Link Aggregation Control PDUs from other frames, passing the LACPDUs to the appropriate sublayer entity, and all other frames to the Aggregator.

3.1.1 Frame collection 状态图

3.1.2 Frame Distributor 状态图

3.1.3 Aggregator Parser state diagram

3.1.4 Control Parser 状态图

3.2 报文格式

 Destination Address:目的地址;协议规定为组播MAC地址:01-80-c2-00-00-02;
 Source Address:源地址,协议规定为发送LACPDU端口的MAC地址;
 Length/Type:协议类型;0x8809
 Subtype:子协议类型;0x01
 Version Number:LACP版本号,0x01

Actor端与Partner端均包括以下详细信息:
 端口信息:0x01
 端口信息长度:固定为0x04
 系统优先级:默认为0x8000,即32768
 系统MAC地址:交换机MAC地址
 端口操作Key:系统根据端口的配置组合生成的一个key值;
 端口优先级:默认为0x8000
 端口号:链路聚合组中链路两端的端口编号
 端口状态:占一个字节,详细记录了本端与对端目前的状态信息,Actor_state和Partner_state里的八位都包括以下信息:

LACP_Activity:协议规定,主动发送LACP协议的报文的端口该bit位置1,被动发送或不发送LACP报文的端口该bit置0。即0表示Passive,1表示Active。
LACP_Timeout:这个bit位表示LACP是长超时还是短超时,1代表短超时,0代表长超时;
Aggregation:为1时表明此链路是可聚合的,否则此链路是不可聚合的。
Synchronization:表示链路是否处于同步状态(即聚合是否完成),从对端发送过来的LACPDU中提取Partner信息,查看是否与本端一致。
Collecting: TRUE(1) 表示当前链路收包enable,否则为FALSE(0)
Distributing: TRUE(1) 表示当前链路发包enable, 否则为FALSE(0)
Defaulted: TRUE(1)表示Actor使用的Partner信息来自管理员配置的默认值;FALSE(0)表示Actor使用的Partner信息来自接收到的LACPU。
Expired:TRUE(1) 表示发送端的接收状态机处于超时状态。
 Reserved:保留字段,占3个字节

3.2.1 LACP协议的功能
根据所使用的LACPDU字段的不同,可将LACP协议的功能分为基本功能和扩展功能两大类,如表 2所示。
表 2 LACP协议的
功能分类
类别 说明
基本功能 利用LACPDU的基本字段可以实现LACP协议的基本功能,基本字段包含以下信息:系统LACP优先级、系统MAC地址、端口聚合优先级、端口编号和操作Key。
动态聚合组内的成员端口会自动使能LACP协议,并通过发送LACPDU向对端通告本端的上述信息。当对端收到该LACPDU后,将其中的信息与本端其它成员端口收到的信息进行比较,以选择能够处于选中状态的成员端口,使双方可以对各自接口的选中/非选中状态达成一致,从而决定哪些链路可以加入聚合组以及某链路何时可以加入聚合组。
扩展功能 通过对LACPDU的字段进行扩展,可以实现对LACP协议的扩展。譬如,通过在扩展字段中定义一个新的TLV(Type/Length/Value,类型/长度/值)数据域,可以实现IRF(Intelligent Resilient Framework,智能弹性架构)中的LACP MAD(Multi-Active Detection,多Active检测)机制。对于支持LACP协议扩展功能的设备来说:
 如果同时支持IRF,则该设备可以作为成员设备或中间设备来参与LACP MAD
 如果不支持IRF,则该设备只能作为中间设备来参与LACP MAD

3.2.2 LACP优先级
根据作用的不同,可以将LACP优先级分为系统LACP优先级和端口聚合优先级两类,如表 3所示。
表 3 LACP优先级的分类
类别 说明 比较标准
系统LACP优先级 系统LACP优先级用于区分两端设备优先级的高低。要想使两端设备的选中端口一致,可以使一端具有较高的优先级,另一端则根据优先级较高的一端来选择本端的选中端口 优先级数值越小,优先级越高
端口聚合优先级 端口聚合优先级用于区分各成员端口成为选中端口的优先程度

3.2.3 LACP超时时间
LACP超时时间是指成员端口等待接收LACPDU的超时时间。在三倍LACP超时时间之后,如果本端成员端口仍未收到来自对端的LACPDU,则认为对端成员端口已失效。LACP超时时间只有短超时(1秒)和长超时(30秒)两种取值。

3.3 状态机
LACPDU协议运行机制受五个状态机控制,分别为Receive machine、Perioddic Transmission machine、Selection Logic、Mux machine、Transmit machine。LACP 状态机的描述基于端口,聚合链路本端端口或者对端端口的关键信息发生了变化,都会引起状态机迁移,状态机间的关系如下图所示:

 当端口收到的LACPDU中的partner信息,或者是系统默认的partner信息,通过Receive machine反馈给其他状态机。标记Actor State Information的箭头表示的是状态机更新Actor信息的过程。当periodic Transmission machine控制报文的发送周期到了,或者修改Actor信息需要传输LACPDU给对端,这时通过NTT(need to transmit flag)信号把需要传递LACPDU报文通知给Transmit machine, Transmit machine 发送LACPDU报文。
 Receive machine 接收对端发送来的LACPDU,并记录对端信息。根据对端信息判断对端和本端的协议信息是否已经达成了一致,是否都处于可用状态。如果从对端发送过来的协议信息过期,则Receive machine设置为缺省参数,供其他状态机使用。如果本端的状态有改变,则触发TX发送LACPDU。如果对端状态有改变则置端口为unselect状态,如果接收超时,则启用默认Partner配置。
 Periodic Transmission machine状态机用来决定本端与对端需不需要定期发送LACPDU消息来判断是否继续维持一个聚合组(当对端与本端任意一个被配置为主动LACP,则会定时发送LACPDU消息,若两个都为被动LACP时,则不会传送LACPDU消息)。
根据LACP_Activity、LACP_Enable、port_enable几个值决定是否周期发送。
 Selection Logic 负责为相关的端口选择聚合组。
 Mux machine负责决定端口在指定聚合组中是选中还是非选中,以及根据协议信息,打开或关闭端口的收集和发送状态。
 Transmit machine控制LACPDU的传送(对端要求或者定时发送),当某端的状态信息发生改变或者定时器超时,则会发送LACPDU。通过发送NTT告知Transmit machine需要发送LACPDU信息。

3.3.1 receive machine

 CURRENT状态
当接收到一个LACP报文后进行CURRENT状态。
update_Selected函数判断接收的LACP报文里的以下字段(Actor_Port, Actor_Port_Priority, Actor_System, Actor_System_Priority, Actor_Key, Actor_State.Aggregation), 如果与本端口的(Partner_Oper_Port_Number, Partner_Oper_Port_Priority,Partner_Oper_System, Partner_Oper_System_Priority, Partner_Oper_Key, Partner_Oper_State.Aggregation)值不一致,则认为对端信息发生了变化,就会设置本端口为UNSELECT状态。否则,SELECT状态不变。Receive machine只能设置端口选择状态为UNSELECTED,只有Selection Logic才可以设置端口选择状态为SELECTED和STANDBY.
updateNTT函数判断是否需要发送协议报文, 根据LACP报文里的以下字段(Partner_Port, Partner _Port_Priority, Partner _System, Partner _System_Priority, Partner _Key, Partner _State.LACP_Activity, Partner_State.LACP_Timeout, Partner_State.Synchronization, Partner_State.Aggregation), 如果与本端口的(Actor_Port_Number, Actor_Port_Priority, Actor_System, Actor_System_Priority, Actor_Oper_Key, Actor_Oper_State.LACP_Activity, Actor_Oper_State.LACP_Timeout, Actor_Oper_State…Synchronization, Actor_Oper_State.Aggregation)值不一致,则认为对端所知信息已过时,需要重新告知对方,置NTT为TRUE。否则NTT值不变。
recordPDU函数记录LACPDU中的信息到本端口的Partner信息。将报文中的Actor信息(Actor_Port, Actor_Port_Priority, Actor_System, Actor_System_Priority, Actor_Key, Actor_State)作为当前的Partner运行信息(Partner_Oper_Port_Number, Partner_Oper_Port_Priority,Partner_Oper_System, Partner_Oper_System_Priority, Partner_Oper_Key, Partner_Oper_State), 除了Synchronization字段, Partner_Oper_State. Synchronization的值计算需要判断报文中的Partner信息与本地的Actor信息是否一致,即比较LACP报文里的以下字段(Partner_Port, Partner _Port_Priority, Partner _System, Partner _System_Priority, Partner _Key, Partner _State.LACP_Activity, Partner_State.LACP_Timeout, Partner_State.Synchronization, Partner_State.Aggregation), 与本端口的(Actor_Port_Number, Actor_Port_Priority, Actor_System, Actor_System_Priority, Actor_Oper_Key, Actor_Oper_State.LACP_Activity, Actor_Oper_State.LACP_Timeout, Actor_Oper_State…Synchronization, Actor_Oper_State.Aggregation)值比较,如果全部匹配且报文中的Actor_State.Synchronization为True且任何一方的LACP_Activity为True,则置Partner_Oper_State. Synchronization为TRUE, 否则置为False。对方是独立链路时(即报文中Actor_State.Aggregation为False)时认为其两者信息一致. 记录这些信息后将Actor_oper_Port_State.Defaulted置为False, 表示本端口所得的Partner信息来自协议报文,而不是管理配置的。.
启动current_while_timer定时器,超时时间取决于本端Actor_Oper_State.LACP_Timeout的值, 其为0表示长超时,超时时间为Long_Timeout_Time, 默认为20s.其值为1表示短超时,超时时间为Short_Timeout_Time,默认为1s, 此值管理员可配。
 EXPIRED状态
如果current_while_timer时间内没有收到LACPDU, 则状态机迁至EXPIRED状态。
超时后与对端同步状态置为不同步(Partner_Oper_Port_State.Synchronization=FALSE)。
为了快速地与对端取得联系,因此设置超时为短时间,即快发送(Partner_State.LACP_Timeout=Short_Timeout_Time)。
启动current_while_timer定时器,超时时间为Short_Timeout_Time。
 DEFAULTED状态
如果current_while_timer超时后仍没有收到LACPDU则进入DEFAULTED状态。
update_Default_Selected函数判断默认的Partner参数与当前Partner运行参数是否一致,不一致则设置端口为UNSELECTED。
recordDefault函数用配置管理下发的数据作为当前Partner的运行参数。这保证了即使没有协议对端存在时,聚合仍可继续运行。
由于Partner运行参数使用了管理值,因此不存在与对端不一致的情况,所以置Partner同步状态置为同步(Partner_Oper_Port_State.Synchronization=TRUE)
 PORT_DISABLED状态
如果端口的管理状态为DISABLE且BEGIN事件没有发生过,则进入PORT_DISABLED状态。
置Partner同步状态置为不同步(Partner_Oper_Port_State.Synchronization=FALSE)。
设置这个状态的原因是,当端口的物理连接不变,但操作状态变可ENABLE时,当前的选择状态保持不变,高层也不用重新计算。
如果从另外一个端口收到了同样的Actor系统ID和端口ID, 则表示物理连接发生了改变,此时要进入INITIALIZE状态。
 INITIALIZE状态
BEGIN事件发生或PORT_DISABLED状态时检查到端口物理连接发生改变,则进入INITIALIZE状态。
置端口选择状态为UNSELECTED,这样MUX状态机就会将此端口从聚合组中删除。
recordDefault函数用默认的Partner管理参数作为当前Partner运行参数。
port_moved置为FALSE。这样端口可以快速地进入PORT_DISABLE状态。
 LACP_DISABLE状态
如果端口在半双工状态下,则LACP为关闭状态,状态机迁移至LACP_DISABLE状态。此时端口为作一个独立链路参与LACP运行。

3.3.2 Periodic Transmission machine

 NO_PERIODIC
初始化时,周期性发送是disabled的。当双方的LACP_Activity为Passive时,进入此状态。
 FAST_PERIODIC
快发送状态
 SLOW_PERIODIC
慢发送状态
 PERIODIC_TX
暂态。置NTT为TRUE,然后根据Partner的LACP_Timeout(Partner_Oper_Port_State.LACP_Timeout), 决定迁移至FAST_PERIODIC或者SLOW_PERIODIC。
3.3.3 Selection Logic
选择逻辑可以自行实现。目前应用较多的是管理员手工添加端口到聚合组。
标准推荐了一种端口自动选择聚合组的算法:

初始化时,每个端口对应一个聚合组,这样系统中的聚合组数与端口数相等。如果端口是独立链路,则端口总是选择自己的聚合器,否则,端口从可以选择的所有聚合组中选择优先级最高的,优先级最高意味着以下值最小

  1.     Actor的系统ID
    
  2.     Actor的操作key
    
  3.     Partner的系统ID
    
  4.     Partner的操作key
    
  5.     链路能力集支持可聚合
    

然后置端口状态为SELECTED或者STANDBY。

3.3.4 Mux machine
以收发绑定的系统为例。

 DETACHED状态
初始化时为此状态,此时端口不属于任何聚合组(有必要的话将其所在的端口组删除),端口收发处于禁止状态。
 WAITING状态
如果Selection Logic设置端口状态为SELECTED或者STANDBY,则从DETACHEd状态迁移至WAITING状态。在此状态会启动wait_while_timer定时器。
WAITING状态存在的意义:

  1. 如果选择状态为SELECTED, wait_while_timer会强制延时一会,以以其它端口的重配置同时进行。wait_while_timer超时且其它汇聚到此聚合组的所有端口都超时后,端口汇聚到此聚合组的处理就可以开始进行了。状态机迁移到ATTACHED状态.
  2. 如果选择状态为STANDBY, 则端口在端口选择参数变化时,会保持在WAITING状态一段时间,以使端口选择状态重新评估。如果选择状态变成了UNSELECTED,则端口重新进入DETACHED状态。如果端口状态变成了SELECTED,则执行1)描述的操作。这样做的好处是可以让端口选择状态变成SELECTED时经过最小的延迟。
     ATTACHED状态
    将端口加到聚合组中,完成此操作后,置Actor同步状态为TRUE,此时仍禁止端口收发数据报文。
     COLLECTING_DISTRIBUTING状态
    在ATTACHED状态时,如果Partner的Sync也为TRUE,则会进入到COLLECTING_DISTRIBUTING状态,此状态端口收发数据报文变为enable。
    在此状态期间,如果端口选择状态变为UNSELECTED或者STANDBY,或者Partner的Sync变为FALSE,则选择至ATTACHED状态。

3.3.5 Transmit machine
当LACP_Enable为TRUE, 且NTT为TRUE时Transmit状态机构造正确的LACPDU并且发送出去。发送后NTT置为FALSE。一个快发送周期内发送的报文数不能超过3.如果超过了,则要等到此限制被解除的时候再发送,且发送时的报文是根据实时状态来构造的,而不是首次置NTT时候的状态。也就是说,非队列式的发送,而是根据发送时机的发送。
LACP_Enable为FALSE时,不发送协议报文。

3.3.6 Churn Detection machine
此状态机是作为诊断功能用的。当两端长时间达不到一致时,意味着设置故障或设备未按照标准协议运行或配置错误。还有可能是系统一端或两端的聚合限制导致的,Churn Detection machine就是用来检测这种情况的,用来提示管理员用来诊断和纠正错误。

3.4 LACP 处理框图

见P126 (43.4 Link Aggregation Control Protocol (LACP))

  1. LACP协议实现

4.1 配置任务
根据H3C交换机的配置案例分析。罗列出需要实现的条款。整理成如下表格。有待进一步整理调整。参考H3C交换机配置。
汇聚方式 配置任务 参考命令 备注
手工 创建汇聚组 Link-aggregation group agg-id mode manual agg-id取值1~464
将端口加入汇聚组 Link-aggregation interface-type interface-number to interface-type interface-number [both] to 指定一组连续的端口
设置汇聚组描述符 Link-aggregation group agg-id description agg-name 默认无描述符(可选配置)
端口加入到指定汇聚组 Port Link-aggregation group agg-id 在端口视图中配置
静态LACP 创建汇聚组 Link-aggregation group agg-id mode static agg-id取值1~464
设置汇聚组描述符 同手工汇聚
端口加入到指定汇聚组 同手工汇聚
动态LACP 设置汇聚组描述符 同手工汇聚
设置当前交换机的LACP协议优先级 Lacp system-priority system-priority system-priority 取值0~65535,默认32768
端口启用LACP Lacp enable 在端口视图中
配置端口的LACP协议优先级 Lacp port-priority port-priority 在端口视图中; porty-priority 取值0~65535,默认32768
配置聚合组抢占功能 Lacp preempt enable 在eth-Trunk接口视图中进行配置
配置聚合组抢占延时 Lacp preempt delay delay-time delay-time ,默认30s, 取值10s~180s

4.2 配置显示和调试命令
操作 命令 备注
显示所有汇聚组的摘要信息 Display link-aggregation summary 显示信息包括:
Actor ID:本端设备ID
AL ID : 汇聚组ID
AL Type: 汇聚组类型,分为动态汇聚、静态汇聚和手工汇聚
Partner ID: 对端设备ID
Select Ports : Selected 端口数
Standby ports : standby 端口数
Share Type: 负载分担类型
Master Port:主端口号
显示指定汇聚组的详细信息 Display link-aggregation verbose agg-id 除摘要信息外(参数显示为全称):
Aggregation description: 汇聚组描述符
Port state: 端口状态
Local:本端其他信息(包括端口编号、端口状态、端口优先级、LACP协议标志、操作key、连接状态)
Remote: 对端详细信息(包括本端的端口编号、对端的端口索引、端口优先级、标志位、操作Key和设备ID)
显示本端设备ID Display lacp system-id 包括系统优先级和系统MAC地址。如:
Actor system IDL 0x8000,00e0-fc00-0100
显示端口的端口汇聚详细信息 Display link-aggregation interface interface-type interface-number |[ to { interface interface-type interface-number }] 包括制定端口所在汇聚组ID;
本端的端口优先级、操作key、LACP协议状态标志;
对端的设备ID、端口号、端口优先级、操作Key、标志;
LACP协议报文统计信息,包含接受的LACP报文数、非法的报文数及发送的LACP报文数
清除端口的LACP统计信息 Reset lacp statustics [interface interface interface-type interface-number [ to interface interface-type interface-number]]

4.3 汇聚方式切换,LACP状态变更表
汇聚切换方式 LACP状态 备注
动态LACP -> 静态LACP 保持开启
动态LACP/静态LACP –> 手工汇聚 自动关闭端口上的LACP协议

4.4 配置保存
保存当前配置后,已噢诶之的手工和静态汇聚组及对应的描述符都会存在,但动态汇聚组将不存在,为其配置的汇聚组描述符也不会恢复。

参考资料

  1. 《H3C 网络之路:HA高可用性专题》
  2. 王达《Ciscp/H3C 交换机配置与管理完全手册第二版》

相关文章:

  • pandoc实战教程(一):安装latex工具
  • 使用 Visual Studio 2022 中的 .http 文件
  • AI与思维模型【67】——元认知
  • Vue3 打印网页内容
  • JavaScript解密实战指南:从基础到进阶技巧
  • Python多任务编程:进程全面详解与实战指南
  • Linux教程-Shell编程系列二
  • 集合框架拓展--stream流的使用
  • 生成式AI对话中提示词策略:明确问题、明确目标和提供背景信息是最有效的策略
  • 一招解决所以Maven找不到依赖包的问题
  • Java优雅实现判空方法
  • 在 QCustomPlot中自定义绘图元素
  • 【CentOs】构建云服务器部署环境
  • ClickHouse核心架构设计
  • day47——平方数之和(LeetCode-633)
  • STM32(M4)入门:GPIO与位带操作(价值 3w + 的嵌入式开发指南)
  • FFmpeg:M3U8的AES加密
  • 《Android 应用开发基础教程》——第三章:布局管理与 UI 组件详解
  • 多模态大语言模型arxiv论文略读(三十一)
  • 机器学习 Day12 集成学习简单介绍
  • 国产手术机器人+5G技术,上海医生同一天远程为五地患者开刀
  • 外交部:制裁在涉港问题上表现恶劣的美方人士是对等反制
  • 三部门:对不裁员少裁员的参保企业实施稳岗返还政策至今年底
  • 宇树的任务已经完成?王兴兴也在等待行业拐点
  • 广发基金刘格崧一季报:首次买入广东宏大、分众传媒,减仓亿纬锂能
  • 临清农商行回应监管处罚:系2023年问题,已经进行了整改