LACP笔记.docx
- 文档编号:23049823
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:17
- 大小:161.01KB
LACP笔记.docx
《LACP笔记.docx》由会员分享,可在线阅读,更多相关《LACP笔记.docx(17页珍藏版)》请在冰豆网上搜索。
LACP笔记
lacp笔记
1 LACP协议的作用
LACP的作用是根据系统本地信息以及与对端系统动态交换的信息,自动形成链路的汇聚或解汇聚,并控制链路的报文收发状态。
没有运行LACP的聚合,称之为手工聚合,由管理员指定聚合成员,并根据端口的up/down状态来确定是否聚合。
但是链路两端缺少交互,因此这种聚合可能会引起问题,例如,如果用户错误地将物理链路连接到不同的设备上或者同一设备的不能形成聚合的端口上,则系统无法发现。
聚合控制包括以下活动:
1) 检查候选链路是否能真正被聚合
2) 控制聚合组链路的增加,甚至是聚合组的创建
3) 监测链路状态,保证聚合的可用性
4) 聚合成员不可用时删除相应的聚合组链路,如果没有任何成员了则删除聚合组。
2 术语
只有速率和双工属性相同、端口基本配置相同、连接到同一个设备、并且对端端口也满足以上条件时,才能被动态聚合在一起。
因此LACP的计算需要如下参数:
l 系统标识
参与聚合的每个系统有全局唯一标识,其值为:
系统优先级(高2字节)+MAC地址(低6字节)
l 聚合组标识
聚合组有一个全局的MAC标识,一般为聚合组中某个端口的MAC。
聚合组也有一个唯一的整数标识,用来识别系统内的聚合组
l 端口标识
LAC使用的端口标识由端口优先级和端口号组成。
高两位是端口优化级,低两位是端口号
l 能力集标识
标识端口和聚合组能力集(速率、双工等)。
一个端口的聚合能力集由一个整数表示,也就是Key.这有利于设备聚合能力的通信和比较,其值取决于以下几个因素:
a)端口物理特征,如速率、双工、点对点或共享介质。
b)网络管理员设置的配置约束
c)高层协议使能的端口号(如网络层分配的)
d)端口自己的特征或约束
每个端口有一个运行Key和管理key。
运行key是当前活动聚合的参数组成的key,管理key是管理员配置的key值。
系统需要可以指定某条链路不能和其它链路聚合,称之为独立链路(individuallink)。
聚合组同样也有管理key和运行key。
key组的成员都必须有同样的运行key值。
所有的key都是16bit。
非0值都为有效值
初始化时有两种可选方案
1.所有端口都分配不同的key,这样默认都是独立的链路
2.所有端口都分配相同的key,随时准备聚合
3 端口聚合过程
3.1 选择聚合组
端口对聚合组的选择有两种,一是由管理员指定,二是由端口自动选择。
选择算法可自行实现。
一般是根据端口的运行key来选择,具体算法在后面的SelectionLogic中描述。
3.2 两端达成一致
本地和对端系统都同意加入聚合组后才可开始数据帧的转发。
3.3 添加到聚合组
对可以聚合的端口下发到硬件
3.4 使能收发
在双方准备好聚合之前,端口都是不转发数据报文的。
端口从一个聚合组切到另一个聚合组时,需要确定之前的聚合组上没有数据发送。
在新的聚合组上发送数据之前也需要通知对端。
只在双方都协商好后,才开始收发数据报文。
3.5 聚合成员监测
实时监测每条链路以确保每个链路的两端仍然对链路的聚合达成一致。
3.6 解汇聚
链路事件等原因引起的端口运行key变化可能引起一个端需要从聚合组中删除。
这时,先要disable数据报文的收发,然后通知对端系统,再重新选择聚合组。
4 LACP帧格式
开启LACP协议的端口会定期发送LACPDU。
发送端称为Actor,接收端称为Partner。
支持主从模式(Active/Passive),处于Active的一端可主动发送LACPDU,Passive只在对端为Active时才发送。
发送周期分为快发送和慢发送,可由管理配置。
除了周期发送,可会由事件触发发送,如定时器超时、端口状态变化、管理员下发配置、协议报文收发等。
LACP帧格式如下:
Octets
DestinationAddress
6
SourceAddress
6
Length/Type(slow:
0x8809)
2
Subtype=LACP(0x01)
1
VersionNumber(0x01)
1
TLV_type=ActorInformation=1
1
Actor_Information_Length=20
1
Actor_System_Priority
2
Actor_System(MAC)
6
Actor_Key
2
Actor_Port_Priority
2
Actor_Port
2
Actor_State
1
3Reserved
3
TLV_type=PartnerInformation=2
1
Partner_Information_Length=20
1
Partner_System_Priority
2
Partner_System(MAC)
6
Partner_Key
2
Partner_Port_Priority
2
Partner_Port
2
Partner_State
1
3Reserved
3
TLV_type=CollectorInformation
1
Collector_Information_Length=16
1
CollectorMaxDelay
2
Reserved
12
TLV_type=Terminator
1
Terminator_Length=0
1
Reserved
50
FCS
4
a) DestinationAddress(DA):
使用的是慢协议组播地址01:
80:
c2:
00:
00:
02
b) SourceAddress(SA):
发送LACP协议报文的端口MAC地址
c) Length/Type:
慢协议类型值0x8809
d) Subtype:
LACP协议子类型为0x01
e) VersionNumber:
标识LACP协议的版本号,目前为0x01
f) TLV_Type=ActorInformation.值为0x01
g) Actor_Information_Length:
Actor的信息TLV长度,固定为0x14
h) Actor_System_Priority:
Actor管理员配置的系统优化级
i) Actor_System:
Actor的系统MAC地址
j) Actor_Key:
Actor的运行key
k) Actor_Port_Priority:
发出此PDU的端口优先级
l) Actor_Port:
发出此PDU的端口编号
m) Actor_State:
Actor的端口状态,为8bit的bit位图,编码见Figure 4.1
0
1
2
3
4
5
6
7
LACP_Activity
LACP_Timeout
Aggregation
Synchronization
Collecting
Distributing
Expired
Defaulted
Figure 4.1Actor_State和Partner_State字段的比特编码
1) LACP_Activity:
端口在链路控制中的主从状态,0表示Passive,1表示Active。
2) LACP_Timeout:
超时时间,0表示长超时,1表示短超时
3) Aggregation:
表示端口的聚合能力。
TRUE
(1)表示链路是可聚合的,FALSE(0)表示链路是独立链路,不可聚合
4) Synchronization:
表示端口当前聚合是否完成。
TRUE
(1)表示发送的链路处于IN_SYNC状态,即端口已被分配到正确的聚合组中,FALSE(0)表示链路为OUT_OF_SYNC状态,即端口还没有选择正确的聚合组
5) Collecting:
TRUE
(1)表示当前链路收包enable,否则为FALSE(0)
6) Distributing:
TRUE
(1)表示当前链路发包enable,否则为FALSE(0)
7) Defaulted:
TRUE
(1)表示Actor使用的Partner信息来自管理员配置的默认值。
FALSE(0)表示Actor使用的Partner信息来自接收的LACPDU
8) Expired:
TRUE
(1)表示ActorRX状态机处于超时状态,否则不在超时状态。
说明:
Defaulted和Expired是作调试用.
n) Reserved:
保留
o) TLV_Type=PartnerInformation.值为0x02
p) Partner_Information_Length:
Partner的信息TLV长度,固定为0x14
q) Partner_System_Priority:
Partner管理员配置的系统优化级
r) Partner_System:
Partner的系统MAC地址
s) Partner_Key:
Partner的运行key
t) Partner_Port_Priority:
Partner的端口优先级
u) Partner_Port:
Partner的端口编号
v) Partner_State:
Actor认为的Partner状态,编码见Figure 4.1
w) Reserved:
保留
x) TLV_Type=CollectorInformation.值为0x03
y) Collector_Information_Length:
端口Collector信息TLV长度,固定为0x10
z) CollectorMaxDelay:
发送端的帧从聚合解析层到MAC客户端的发送延迟,单位为10ms
aa) Reserved:
保留
bb) TLV_Type=Terminator.endofmessage值为0x00
cc) Terminator_Length:
使用固定值0x00
dd) Reserved:
保留
ee) FCS:
帧校验序列
5 LACP状态机
LACP由6个状态机组成,包括Receivemachine,PeriodicTransmissionmachine,SelectionLogic,Muxmachine,Transmitmachine,ActorChurnDetection.这6个状态机都是基于端口的,维护各个端口及其对端端口的信息,计算每个端口的聚合状态,与其它交换机交换LACP协议报文,调用聚合接口进行聚合组以及聚合成员管理。
状态机由事件驱动进行状态迁移,事件包括定时器超时、端口事件、报文收发、用户下发配置等。
状态机简要描述如下:
a) Receivemachine:
处理接收到的LACP协议报文,解析报文,记录对端的聚合相关信息,如果本端的状态有改变,则触发TX发送LACPDU.如果对端状态有改变则置端口为UNSELECT状态.如果接收超时,则启用默认Partner配置。
b) PeriodicTransmissionmachine:
周期发送LACPDU。
根据LACP_Activity、LACP_Enable、port_enable几个值决定是否周期发送,如果双方的LACP_Activity都为FALSE则不需要发送,如果有一方的LACP_Enable或者port_enable为FALSE则不需要发送,其它情况需要发送。
发送时间取决于对端的LACP_Timeout,分快速发送和慢速发送两个定时器,当Parterner要求长时间超时时,就进入慢发送状态,反之,进入快发送状态。
c) SelectionLogic:
作用是将处于DETACHED(分离)状态的端口选择加入一个聚合组。
d) MUX machine:
根据本端端口和对端端口的SELECT状态将端口绑定或剥离聚合组(下底层驱动),根据双方的同步状态控制端口接收和发送数据功能的开启和关闭(设置端口的STP状态为Forward/Block)。
e) Transmitmachine:
根据其它状态机的要求,周期地处理LACPDU的发送,当LACPenable且NTT为TRUE时才发送报文,发送次数不大于3次。
每次LACPDU发送完毕后,状态变量NTT应该置为FALSE
f) ActorChurnDetection:
抖动检测状态机,若链路在抖动检测时间内仍不能同步则认为出现抖动。
这种情况可能是设备故障或设备不支持配置。
Figure5.1状态机之间的关系
5.1 Receivemachine
5.1.1CURRENT状态
收到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状态不变。
Receivemachine只能设置端口选择状态为UNSELECTED,只有SelectionLogic才可以设置端口选择状态为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,此值管理员可配。
5.1.2EXPIRED状态
如果current_while_timer时间内没有收到LACPDU,则状态机迁至EXPIRED状态。
超时后与对端同步状态置为不同步(Partner_Oper_Port_State.Synchronization=FALSE)。
为了快速地与对端取得联系,因此设置超时为短时间,即快发送(Partner_State.LACP_Timeout=Short_Timeout_Time)。
启动current_while_timer定时器,超时时间为Short_Timeout_Time。
5.1.3DEFAULTED状态
如果current_while_timer超时后仍没有收到LACPDU则进入DEFAULTED状态。
update_Default_Selected函数判断默认的Partner参数与当前Partner运行参数是否一致,不一致则设置端口为UNSELECTED。
recordDefault函数用配置管理下发的数据作为当前Partner的运行参数。
这保证了即使没有协议对端存在时,聚合仍可继续运行。
由于Partner运行参数使用了管理值,因此不存在与对端不一致的情况,所以置Partner同步状态置为同步(Partner_Oper_Port_State.Synchronization=TRUE)
5.1.4PORT_DISABLED状态
如果端口的管理状态为DISABLE且BEGIN事件没有发生过,则进入PORT_DISABLED状态。
置Partner同步状态置为不同步(Partner_Oper_Port_State.Synchronization=FALSE)。
设置这个状态的原因是,当端口的物理连接不变,但操作状态变可ENABLE时,当前的选择状态保持不变,高层也不用重新计算。
如果从另外一个端口收到了同样的Actor系统ID和端口ID,则表示物理连接发生了改变,此时要进入INITIALIZE状态。
5.1.5INITIALIZE状态
BEGIN事件发生或PORT_DISABLED状态时检查到端口物理连接发生改变,则进入INITIALIZE状态。
置端口选择状态为UNSELECTED,这样MUX状态机就会将此端口从聚合组中删除。
recordDefault函数用默认的Partner管理参数作为当前Partner运行参数。
port_moved置为FALSE。
这样端口可以快速地进入PORT_DISABLE状态。
5.1.6LACP_DISABLE状态
如果端口在半双工状态下,则LACP为关闭状态,状态机迁移至LACP_DISABLE状态。
此时端口为作一个独立链路参与LACP运行。
5.2 PeriodicTransmissionmachine
5.2.1NO_PERIODIC
初始化时,周期性发送是disabled的。
当双方的LACP_Activity为Passive时,进入此状态。
5.2.2FAST_PERIODIC
快发送状态
5.2.3SLOW_PERIODIC
慢发送状态
5.2.4PERIODIC_TX
暂态。
置NTT为TRUE,然后根据Partner的LACP_Timeout(Partner_Oper_Port_State.LACP_Timeout),决定迁移至FAST_PERIODIC或者SLOW_PERIODIC。
5.3 SelectionLogic
选择逻辑可以自行实现。
目前应用较多的是管理员手工添加端口到聚合组。
标准推荐了一种端口自动选择聚合组的算法:
初始化时,每个端口对应一个聚合组,这样系统中的聚合组数与端口数相等。
如果端口是独立链路,则端口总是选择自己的聚合器,否则,端口从可以选择的所有聚合组中选择优先级最高的,优先级最高意味着以下值最小
1) Actor的系统ID
2) Actor的操作key
3) Partner的系统ID
4) Partner的操作key
5) 链路能力集支持可聚合
然后置端口状态为SELECTED或者STANDBY。
5.4 Muxmachine
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LACP 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)