Skip to main content

LACP帧

基于IEEE802.3ad标准的LACP(Link Aggregation Control Protocol),链路汇聚控制协议是一种实现链路动态聚合与解聚合的协议。LACP协议通过LACPDU(Link Aggregation Control Protocol Data Unit)与对端交互信息。LACPDU帧为慢协议(平均每秒发送的协议报文不超过5个),如果接口板收到报文的DMAC是特殊的组播地址0x01-80-c2-00-00-02,二层协议类型字段为0x8809,协议子类型为0x01,则说明此数据报文为LACPDU帧。

帧格式

LACPDU格式
   +-------------------------------+
  |     Destination Address       |
  +-------------------------------+
  |       Source Address         |
  +-------------------------------+
  |         Length/Type           |
  +-------------------------------+
  |       Subtype = LACP         |
  +-------------------------------+
  |       Version Number         |
  +-------------------------------+
  | TLV_type = Actor Information |
  +-------------------------------+
  | Actor_Information_Length = 20 |
  +-------------------------------+
  |   Actor_System_Priority     |
  +-------------------------------+
  |       Actor_System           |
  +-------------------------------+
  |       Actor_key             |
  +-------------------------------+
  |     Actor_Port_Priority     |
  +-------------------------------+
  |         Actor_Port           |
  +-------------------------------+
  |         Actor_State           |
  +-------------------------------+
  |         Reserved             |
  +-------------------------------+
  | TLV_Type=Partner Information |
  +-------------------------------+
  | Partner_Information_length=20 |
  +-------------------------------+
  |   Partner_System_Priority   |
  +-------------------------------+
  |       Partner_System         |
  +-------------------------------+
  |       Partner_Key           |
  +-------------------------------+
  |     Partner_Port_Priority     |
  +-------------------------------+
  |         Partner_Port         |
  +-------------------------------+
  |         Partner_State         |
  +-------------------------------+
  |           Reserved           |
  +-------------------------------+
  | TLV_type=Collector Information|
  +-------------------------------+
  |Collector_Information_Length=16|
  +-------------------------------+
  |     CollectorMaxDelay       |
  +-------------------------------+
  |           Reserved           |
  +-------------------------------+
  |     TLV_type = Terminator   |
  +-------------------------------+
  |     Terminator_Length=0       |
  +-------------------------------+
  |           Reserved           |
  +-------------------------------+
  |               FCS             |
  +-------------------------------+
LACPDU字段解释
字段 长度 说明
Destination Address 6字节 目的MAC地址,是一个组播地址(01-80-C2-00-00-02)。
Source Address 6字节 源MAC地址,发送端口的MAC地址。
Length/Type 2字节 协议类型:0x8809。
Subtype 1字节 报文子类型:0x01,说明是LACP报文。
Version Number 1字节 协议版本号:0x01。
TLV_type = Actor Information 1字节 标识TLV的类型,值为0x01代表Actor字段。
Actor_Information_Length 1字节 actor信息字段长度,取值为20(即0x14),以字节为单位。
Actor_System_Priority 2字节 本端系统优先级,可以设置,默认情况下为32768(即0x8000)。
Actor_System 6字节 系统ID,本端系统的MAC地址。
Actor_key 2字节 端口KEY值,系统根据端口的配置生成,是端口能否成为聚合组中的一员的关键因素,影响Key值的因素有trunk ID、接口的速率和双工模式。
Actor_Port_Priority 2字节 接口优先级,可以配置,默认为0x8000。
Actor_Port 2字节 端口号,根据算法生成,由接口所在的槽位号、子卡号和端口号决定。
Actor_State 1字节

本端状态信息,比特0~7的含义分别为:

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协议使用,仅用于诊断协议问题。

Reserved 3字节 保留字段,可用于功能调试以及扩展。
TLV_type = Partner Information 1字节 标识TLV的类型,值为0x02代表Partner字段。
Partner_Information_Length 1字节 Partner信息字段长度,取值为20(即0x14),以字节为单位。Partner字段代表了链路接口接收到对端的系统信息、接口信息和状态信息,与actor字段含义一致。在协商最开始未收到对端信息时,partner字段填充0,接收到对端信息后会把收到的对端信息补充到partner字段当中。
Partner_System_Priority 2字节 对端系统优先级。
Partner_System 6字节 对端系统ID,对端系统的MAC地址。
Partner_key 2字节 对端端口KEY值。
Partner_Port_Priority 2字节 对端接口优先级。
Partner_Port 2字节 对端端口号。
Partner_State 2字节 对端状态信息。
Reserved 3字节 保留字段,可用于功能调试以及扩展。
TLV_type = Collector Information 1字节 标识TLV的类型,值为0x03代表Collector字段。
Collector_Information_Length 1字节 Collector信息字段长度,取值为16(即0x10),以字节为单位。
CollectorMaxDelay 2字节 最大延时,以10微秒为单位。
Reserved 12字节 保留字段,可用于功能调试以及扩展。
TLV_type = Terminator Information 1字节 标识TLV的类型,值为0x00代表Terminator字段。
Terminator_Length 1字节 Terminator信息字段长度,取值为0(即0x00)。
Reserved 50字节 保留字段,全置0,接收端忽略此字段。
FCS 4字节 用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。

参考标准

标准 描述
IEEE 802.3ad IEEE Standard for Information Technology - Local and Metropolitan Area Networks - Part 3: Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications-Aggregation of Multiple Link Segments