802.1ax学习之LACP

802.1ax学习之LACP

文档位于《802.1ax-2008.pdf》中P25~P96,但是在76页之后的协议内容是另外一种叫Marker Protocol协议但也是用于端口汇聚的,这里暂时不加进来讨论。

1、文档结构翻译

整个文档的结构我们翻译如下:

5.1 综述

5.1.1 状态图的约定

5.1.1.1 状态块的功能

5.1.1.2 状态图变量

5.1.1.3 状态转换

5.1.1.4 操作符

5.1.2 目标与目的

5.1.3 链路汇聚在整个IEEE 802.3架构中的位置

5.2 链路汇聚的操作

5.2.1 链路汇聚的原则

5.2.2 服务接口

5.2.3 帧收集器

5.2.3.1 帧收集器的状态图

5.2.3.1.1 常量

5.2.3.1.2 变量

5.2.3.1.3 信息

5.2.3.1.4 状态图

5.2.4 帧分发器

5.2.4.1 帧分发器的状态图

5.2.4.1.1 变量

5.2.4.1.2 信息

5.2.4.1.3 状态图

5.2.5 标识的产生者或接收者(可选)

5.2.6 标识的回应者

5.2.7 汇聚分析器或多路转换器

5.2.7.1 汇聚分析器状态图

5.2.7.1.1 常量

5.2.7.1.2 变量

5.2.7.1.3 信息

5.2.8 汇聚器

5.2.8.1 状态图

5.2.9 控制分析器或多路转换器

5.2.9.1 控制分析器的状态图

5.2.9.1.1 常量

5.2.9.1.2 变量

5.2.9.1.3 信息

5.2.9.1.4 状态图

5.2.10 寻址

5.3 链路汇聚控制

5.3.1 链路汇聚控制的特性

5.3.2 系统识别

5.3.3 汇聚器识别

5.3.4 端口识别

5.3.5 性能识别

5.3.6 链路汇聚组识别

5.3.6.1 链路汇聚组识别器的结构

5.3.6.2 链路汇聚组识别器的特征

5.3.7 选择一个链路汇聚组

5.3.8 允许所选择的链路汇聚组

5.3.9 连接到一个汇聚器上

5.3.10 发送一个准备就绪的信号给用户数据

5.3.11 使能接受与分发功能

5.3.12 监控链路汇聚组的成员

5.3.13 当不再使用时从汇聚器中解除链接

5.3.14 配置和管理链路汇聚的控制

5.3.15 链路汇聚控制信息

5.4 链路汇聚控制协议

5.4.1 LACP设计原理

5.4.2 LACPDU的结构体与编码

5.4.2.1 octets的传输与表示方式

5.4.2.2 LACPDU的结构体

5.4.3 LACP状态机概述

5.4.4 常量

5.4.5 与系统有关的变量

5.4.6 与每个汇聚器有关的变量

5.4.7 与端口有关的变量

5.4.8 用于管理状态机操作的相关变量

5.4.9 函数

5.4.10 时钟

5.4.11 信息

5.4.12 接收状态机

5.4.13 定期传输状态机

5.4.14 选择逻辑

5.4.14.1选择逻辑---要求

5.4.14.2选择逻辑---建议默认的操作

5.4.15 MUX状态机

5.4.16 传输状态机

5.4.17 抖动检测状态机

2、从文档结构中学到什么?

那么从上面的这些目录结构我们可以学到写什么呢?这便是我写这个笔记的原因。学习这个802.1ax全英文版的资料,你如果不先从整体架构来学,那么简单地看了内容后你只会凭借惊人的记忆力来背熟这些东西。但是如果你从目录着手,然后熟悉整个框架,之后尽管一些细节你记不住了,但从整体上你还是能够清楚地讲出这个协议的精髓来。

从每一个二级标题可以看出,这份协议要你从学习些什么:首先是了解链路汇聚是个什么东东以及这个有什么用处,总之就是概述了,所以这部分的内容可以浏览一遍带过;其次知道如何操作链路汇聚,然后是怎么控制链路汇聚。当我们知道这些表面的后就可以学习原理了,所以最后一节安排了LACP协议原理的学习。这个就是整个框架。

3LACP学习

3.1LACP的概述

第一小节的内容就不赘述了。

3.2LACP的操作

5.2 链路汇聚的操作

5.2.1 链路汇聚的原则

5.2.2 服务接口

5.2.3 帧收集器

5.2.4 帧分发器

5.2.5 标识的产生者或接收者(可选)

5.2.6 标识的回应者

5.2.7 汇聚分析器或多路转换器

5.2.8 汇聚器

5.2.9 控制分析器或多路转换器

5.2.10 寻址

26页中可以看到链路汇聚的操作包含了以下模块:帧的分发、帧的收集、汇聚分析器、汇聚器、汇聚器的控制、控制分析器等。具体每一个模块负责什么内容我简单讲一下:帧的分发是负责接收从MAC Client传送过来的帧并通过分发算法发送到合适的端口;帧的收集是指从各个端口接收到的帧传递到MAC Client中去;汇聚分析器分为两个:在发送端,它是从分发器中简单地传送帧到合适地端口,应该就是分发算法地执行所在;在接收端则是区分Marker RequestMarker Responder等并传递给各个实体(如Marker Responder, Marker Receiver, and Collector,respectively);而汇聚器则是指上面三个模块的集合体;汇聚控制模块则是配置和控制汇聚器工作的模块;控制分析器很类似上面的汇聚分析器,也从发送和接受端来说不一样,这里不再赘述!

然后是链路汇聚的原则,总共十点,不详细讲了!

有一个图很好地解释了上面各个模块之间地工作关系:

802.1ax学习之LACP_第1张图片

1、链路汇聚层模块框图

之后就是对各个模块进行详细地解释。

每个模块都是一个模板,先从常量(有的没有)讲起再者是变量,然后信息最后给出状态图。其实这部分很容易理解,所以不讲了。关键是你在服务接口的那一小节读懂,记住它在这个协议的一些约定俗成的记号就行了。在帧分发模块中有一点值得翻译出来注意一下,原文如下:

This standard does not mandate any particular distribution algorithm(s); however, any distribution algorithm shall ensure that, when frames are received by a Frame Collector as specified in 5.2.3, the algorithm shall not cause

a) Misordering of frames that are part of any given conversation, or

b) Duplication of frames.

意思是讲标准并没有指定哪种分发算法,但是这个分发算法必须能够做到:第一、不会对帧的顺序进行重排,第二、不会复制帧;

之后的我感觉更应该关注汇聚器,因为在一个链路汇聚组中汇聚器包含一组的帧收集函数和一组帧分发函数,还有至少一组的汇聚分析器函数。大概这一小节就这些了,其他的内容需要以后发现重要时再补充。

3.3LACP的控制

5.3 链路汇聚控制

5.3.1 链路汇聚控制的特性

5.3.2 系统识别

5.3.3 汇聚器识别

5.3.4 端口识别

5.3.5 性能识别

5.3.6 链路汇聚组识别

5.3.7 选择一个链路汇聚组

5.3.8 允许所选择的链路汇聚组

5.3.9 连接到一个汇聚器上

5.3.10 发送一个准备就绪的信号给用户数据

5.3.11 使能接受与分发功能

5.3.12 监控链路汇聚组的成员

5.3.13 当不再使用时从汇聚器中解除链接

5.3.14 配置和管理链路汇聚的控制

5.3.15 链路汇聚控制信息

首先是这个定义:Link Aggregation Control configures and controls the Link Aggregation sublayer using static information local to the control function and dynamic information exchanged by means of the Link Aggregation Control Protocol。翻译过来就是:LACP配置和控制链路汇聚子层使用静态的信息来定位控制函数和利用LACP来进行动态信息的交流。那它到底负责哪些东西呢?    

下面罗列的是链路控制主要要做的事情:

1、 检查候选的链接确实已经被汇聚了;

2、 控制增加到链路汇聚组的链接,如果需要增加组数的话;

3、 监控汇聚链路的状态,确保汇聚是可用的;

4、 如果它的某个成员不再有效应该从链接组中移除,如果某个组没有成员的话直接删掉该组。

还有其他一些工作,这里不详细讲了。

接下去讲的是系统、汇聚器、端口、性能等的鉴定,其中都是包含几个字节的内容。看着会懂的。

倒是在链路汇聚组识别的形式中标准规定了一些东西,还举了个例子:

1、 所有的字段都是十六进制,按照严格的格式,每个字节两个数字。

2、 字节是按照顺序从左到右排列,每个字段里都有数字的重要意义,最重要的字节排在最前,最不重要的字节排在最后面。

3、 在每个含有MAC地址的字段里,连续的字节被分隔符隔开,与MAC地址在标准IEEE Std 802-1990的定义一样。

4、 LAG ID的变量被逗号分隔开来。

3.4LACP的精髓

5.4 链路汇聚控制协议

5.4.1 LACP设计原理

5.4.2 LACPDU的结构体与编码

5.4.3 LACP状态机概述

5.4.4 常量

5.4.5 与系统有关的变量

5.4.6 与每个汇聚器有关的变量

5.4.7 与端口有关的变量

5.4.8 用于管理状态机操作的相关变量

5.4.9 函数

5.4.10 时钟

5.4.11 信息

5.4.12 接收状态机

5.4.13 定期传输状态机

5.4.14 选择逻辑状态机

5.4.15 MUX状态机

5.4.16 传输状态机

5.4.17 抖动检测状态机

3.4.1LACP协议是干嘛的?

LACP协议是干什么的?文档中给出了定义:LACP提供一个标准化的工具去在一个链路中对端系统交换信息去允许他们的链路控制实例在他们属于的链路汇聚组中达成一致的信息,还有链路汇聚组移除链路,使能规范性的传输与接收函数。很抽象的东西,总的来说就是这样:控制端口到聚合组的添加、删除;实现链路的双向保护。数据包的分发,实现负载均衡、链路冗余的过程由交换芯片完成,不需要软件算法的干预,软件只要负责根据协议将相关的聚合情况写入底层驱动即可。

以下因素在开发协议时被考虑进去:

A、 协议时依靠与传递的信息和状态,而不是传递的命令。LACPDUs传递包含自己的状态和对端的状态通过本端到本端知道的对端。

B、 在协议中传递的信息是很重要信息,它让对端决定接下去该干些什么。

C、 LACP_Activity的值决定LACP是主动协商方式还是被动协商方式,每一个端口都有自己的管理控制,能够设为Active LACP 或 Passive LACP。Passive LACP表明端口并不用于传递LACPDU除非它的对端控制值是Active LACP;Active LACP表明端口启用LACP协议中并可以发送LACPDU而不管对端的控制值是什么。

D、 如果本端或对端的LACP_Activity值为Active LACP,那么会定期传送LACPDU包。周期发送LACPDU的间隔是长是短在取决于对端系统的LACP_Timeout的值。

E、 除了定期传送LACPDUs之外,当有信息需要传送给对端时,或当本端的状态改变或是从对端的LACPDUs中表明对端不知道本端的当前状态时,协议都会传送LACPDUs。

F、 协议假设LACPDU包的丢失率很低。

接下去的重点时LACPDU包的结构,这里找了一张图,可以看出它的构造:

802.1ax学习之LACP_第2张图片

图2、LACPDU帧的结构

需要解释的是以下定义:

TLV_type是本端或对端的信息,还有就是collector的信息、终端的信息(这是按顺序来的),一般定义为0x01或0x02或0x03或0x00;

Actor_Information_Length:一般为0x14;

Actor_System :本端系统的ID;

Actor_State:本端状态,八位定义分别如下:

功能如下:

1) LACP_Activity is encoded in bit 0. This flag indicates the Activity control value with regard to

this link. Active LACP is encoded as a 1; Passive LACP is encoded as a 0.(这个标志表明这条链路的的LACP是否是自动协商模式,为1代表是LACP主动协商模式)

2) LACP_Timeout is encoded in bit 1. This flag indicates the Timeout control value with regard to

this link. Short Timeout is encoded as a 1; Long Timeout is encoded as a 0.(该位表明该链路的超时控制值,为1代表短超时)

3) Aggregation is encoded in bit 2. If TRUE (encoded as a 1), this flag indicates that the System

considers this link to be Aggregateable; i.e., a potential candidate for aggregation. If FALSE

(encoded as a 0), the link is considered to be Individual; i.e., this link can be operated only as an

individual link.(如果是TRUE,这个标志位表明系统这位这条链路可以聚合或是有被聚合的可能性;)

4) Synchronization is encoded in bit 3. If TRUE (encoded as a 1), the System considers this link to

be IN_SYNC; i.e., it has been allocated to the correct Link Aggregation Group, the group has

been associated with a compatible Aggregator, and the identity of the Link Aggregation Group

is consistent with the System ID and operational Key information transmitted. If FALSE

(encoded as a 0), then this link is currently OUT_OF_SYNC; i.e., it is not in the right

Aggregation.(如果是TRUE,系统认为这条链路是IN_SYNC,它被分配正确的链路组,该组有已经关联到一个合适的汇聚器中,链路组的Id与系统和操作Key信息是一致的)

5) Collecting is encoded in bit 4. TRUE (encoded as a 1) means collection of incoming frames on

this link is definitely enabled; i.e., collection is currently enabled and is not expected to be

disabled in the absence of administrative changes or changes in received protocol information.

Its value is otherwise FALSE (encoded as a 0).(如果是TRUE意味着在这条链路上收集进来的帧肯定能用的或是收集功能能用,并且不希望被禁用在没有管理者修改的前提下)

6) Distributing is encoded in bit 5. FALSE (encoded as a 0) means distribution of outgoing frames

on this link is definitely disabled; i.e., distribution is currently disabled and is not expected to

be enabled in the absence of administrative changes or changes in received protocol

information. Its value is otherwise TRUE (encoded as a 1).

7) Defaulted is encoded in bit 6. If TRUE (encoded as a 1), this flag indicates that the Actor’s

Receive machine is using Defaulted operational Partner information, administratively

configured for the Partner. If FALSE (encoded as a 0), the operational Partner information in

use has been received in a LACPDU.(如果为TRUE,表明了本端的接收状态机使用默认的操作对端信息,管理性地配置对端。)

8) Expired is encoded in bit 7. If TRUE (encoded as a 1), this flag indicates that the Actor’s

Receive machine is in the EXPIRED state; if FALSE (encoded as a 0), this flag indicates that

the Actor’s Receive machine is not in the EXPIRED state.(如果为TRUE,表明本端地接收状态机处于过期状态中)

NOTE—The received values of Defaulted and Expired state are not used by LACP; however, knowing

their values can be useful when diagnosing protocol problems.(注意:接收到地默认和过期状态值并不用于LACP,但是知道它们地值对于诊断协议问题却很有用)

3.4.2LACP6个状态机综述

• LACP协议的运作由6个状态机来实现,这些状态机是基于每个端口的事件(比如定时器超时或收到LACPDU)会触发状态跃迁和LACPDU的发送,LACPDU的发送分周期性发送和事件(比如定时器超时或收到LACPDU)驱动两种。

• Reecive machine:接收对端来的LACPDU包,记录包里带的信息,并根据LACP_Timeout的值进行。根据对端发来的信息判断该端口是否可以使用了(聚合或独立端口)。若未协商好则继续发LACPDU包给对端;若接收LACPDU包超时,接收状态机就启用缺省配置。

• Periodic Transmission machine:通过周期性发送LACPDU包来维护聚合。

• Selection Logic:负责为各物理端口选择一个聚合器。

• Mux machine:该状态机负责把端口附到选择好的聚合器,或把端口从聚合器剥离,并根据协议信息打开或关闭当前端口的收、发。

• Transmit machine:该状态机根据其它状态机的要求(包括周期性发送状态机)进行LACPDU的发送。

• Actor and Partner Churn Detection machines:这个状态机用于检测本端和对端不能达到一致的状态(比如对端反复发送相矛盾的LACPDU),并上报给网管。 

各个状态机的关系:

1.接收状态机通过比较LACP包信息和本端信息置NTT(need to transmit)和Selected变量(标示端口是否绑定到了聚合组)。本端的状态有改变则置NTT为True,对端的状态有改变则置Selected为False,并根据对方发来的包内容判断双方是否达到同步。

2.Periodic状态机根据本端及对端状态置NTT变量。NTT用于决定是否要发送LACPDU包。

3.Selection logic 根据端口状态把处于unselected的端口选进聚合组,选入后置Selected变量为True。

4.MUX根据Selected变量的值将端口绑定到聚合组或将其从聚合组剥离,双方达到同步后聚合成功,聚合成功后启动端口发送数据帧。

5. TX根据NTT状态决定是否启动LACPDU包的发送。

具体到图是:

802.1ax学习之LACP_第3张图片

36个状态机的工作关系

这里还有一些需要知道的常量:

快速定期发送时间:1s-----两者对应periodic_time

慢速定期发送时间:30s

短超时:3s;两者对应current_while_time

长超时:90s

状态变化侦测时间:60s------对应parnter_churn_timeactor_churn_time

聚合等待时间:2s----对应wait_while_time

和系统有关的变量:本端系统(占48位)和本端系统优先级;

和每个汇聚器有关的变量:汇聚器的MAC地址,汇聚器的识别信息(用于唯一鉴定在一个系统是汇聚组的标识),Individual_Aggregator,本端管理汇聚器关键字,本端操作汇聚器关键字,对端系统,对端系统优先级,对端操作汇聚器关键字,接收状态,传送状态,链路汇聚组的端口。

与每个端口相关的变量:本端端口数目,本端端口优先级,本端端口汇聚器识别(标识该端口是否绑定到汇聚组中),NTT,本端管理端口关键字,本端操作端口关键字,本端管理端口状态,本端操作端口关键字,对端管理系统,对端操作系统,对端管理系统优先级,对端操作系统优先级,对端操作系统关键字,对端管理端口关键字,对端操作端口数目,对端管理端口数目,对端管理端口优先级,对端操作端口优先级,对端管理端口状态对端操作端口状态,端口使能。

管理操作状态机的变量:BEGIN、LACP_Enabled、actor_churn、partner_churn、Ready_N、Ready、Selected、port_moved

相关函数有:recordPDU、recordDefault、update_Selected、update_Default_Selected、update_NTT、Attach_Mux_To_Aggregator、Detach_Mux_From_Aggregator、Enable_Collecting、Disable_Collecting、Enable_Distributing、Disable_Distributing、Enable_Collecting_Distributing、Disable_Collecting_Distributing。

3.4.3、接收状态机:

接收状态机主要包括以下4个状态:

• 超时状态:EXPIRED

• 缺省状态:DEFAULTED

• 当前状态:CURRENT

• LACP禁止状态:LACP_DISABLED

关于整个状态机的执行流程如下图所示。图中有关说明:

• RecordPDU:记录协议包关于对端的属性参数,并根据协议数据包含的信息设定对端是否处于同步状态(针对本端,比较新旧本端信息)

• recordDefult:把本端端口的各状态属性设置为缺省值,缺省值在初始化给出

• update_Selected:利用接收来的协议数据包含的信息更新本端的选择变量(针对对端,比较新旧对端信息)

• update_Default_Selected:利用缺省值更新选择变量(针对对端,比较新旧对端信息)

• update_NTT:根据接收来包的决定是否发送表示当前状态的协议包(针对本端,比较新旧本端信息) 

接收状态机执行流程:

802.1ax学习之LACP_第4张图片

4、接收状态机的工作流程

各个状态解释:

• INITIALIZE状态:初始化状态,本端口采用配置值作为对端信息,并置选择变量为未选择;然后无条件转移到PORT_DISABLED状态;

• PORT_DISABLED状态:如果端口和LACP已使能,则进入超时(EXPIRED)状态;否则如果本端口记录的parner SystemIDparner端口号与另外一个端口上记录的parner SystemIDparner端口号相等,则认为物理连接发生改变,重新返回初始化(INITIALIZE)状态;否则如果端口已使能但是LACP未使能则进入LACP禁用(LACP DISABLED)状态;

• EXPIRED状态:在EXPIRED状态下,再等待一个短超时时间,若定时器又超时则进入缺省(DEFAULT)状态,对端值用配置值代替;若收到LACPDU包,则进入当前(CURRENT)状态。

• CURRENT状态:在当前状态下,根据本端的LACP_Timeout启动超时定时器,若定时器超时则进入超时(EXPIRED)状态。

• LACP DISABLED状态:在此状态下,也将对端值用配置值代替,并置对端的聚合状态为不许聚合,强制本端口成为一个独立端口。在此状态下,若出现Begin事件(用户配置端口加入聚合组或端口退出聚合组配置时)则进入INITIALIZE状态,若出现Port Disable事件则进入PORT_DISBALED状态。

• DEFAULTED状态:通过比较配置值和对端值更新缺省的selected变量,再以配置值作为对端值。在此状态下若收到LACPDU包则进入CURRENT状态。 

3.4.4、定期发送状态机:

定期发送状态机定期发送状态机根据对端的LACP_Timeout来设置发送周期,包括4个状态:

• 无周期状态:NO_PERIODIC,模块处于该状态,则定期发送协议包处于无效状态。

• 快周期状态:FAST_ PERIODIC,模块处于该状态,定期发送协议包处于活动状态,且周期定时器使用短间隔时长若对端为长超时,则状态跃迁到慢周期;若超时则进入周期转移状态。(若本端处于短超时状态,而对端处于长超时,则随对端跃迁到长超时;可是一开始就使用长超时,在对端配置为短超时的情况下就不是跃迁就行了,它应该跳到周期转移状态)

• 慢周期状态:SLOW_ PERIODIC,周期定时器使用长间隔时长,若超时或对端改配成了短超时则进入周期转移状态。

• 周期转移状态:PERIODIC_TX,该状态是在周期定时器超时到所处的一种临界状态,在此状态,它执行两个动作:(a)发送一个NTTNeed To Transmit)请求;(b)根据对端的超时(Timeout)设置,进入快周期或慢周期状态。 

• 本端和对端的LACP活动状态、端口的使能、LACP的使能决定了能否启动周期性发送,

• 本端或对端之一或两者为ACTIVE状态、端口和LACP必须是使能状态才能启动周期性发送。发送速度取决于对端的超时模式,对端是长超时则本端使用慢发送。

执行流程如下:

802.1ax学习之LACP_第5张图片

5、定期发送状态机的工作流程

3.4.5、复合状态机:

在该状态机中,包含5个状态:

• 拆离状态:DETACHED,从一个聚合端口中解除对一个物理端口的绑定。

• 绑定状态:ATTACHED,将一个物理端口与它选择的聚合端口进行绑定。

• 收集状态:COLLECTING,打开端口的帧收集功能。

• 分发状态:DISTRIBUTING,打开端口的帧分发功能。

• 等待状态:WAITING,在把物理端口绑定到指定的聚合端口前要等待一段时间,由定时器wait_while_timer2s)来控制。 

复合状态机执行流程:

802.1ax学习之LACP_第6张图片

6、复合状态机的工作流程

复合状态机的名词解释:

• Detach_Mux_From_Aggregator/Attach_Mux_to_Aggregato:将端口退出聚合组操作/将端口与相应的聚合端口绑定(写下底层驱动)。

• Disable_Distributing/Collecting:停止端口发送(接收)数据。

• Enable_Distributing/Collecting:打开端口发送(接收)数据功能。

• 该状态机中有关Selected变量的改变是由选择状态机和接收状态机决定的,选择状态机负责将Selected置为True,接收状态机负责将其置为False。该状态机只读取Selected变量而不会去修改。

• DETEACHED状态:复用状态机初始状。选择逻辑将Selected置为SELECTEDSTANDBY后复用状态机进入WAITING状态。

• WAITING状态:在此状态下提供在聚合信息改变前做一个延时,超时后进入ATTACHED状态。若此时Selected变量变成了UNSELECTED则回退到DETEACHED状态。

• ATTACHED状态:Attach完成后本端进入同步状态,再以收到的LACPDU中的信息为旧,以本地记录的为新,比较新旧本端信息,若一致则认为对端已进入同步状态,则本端进入COLLECTING状态。若此时Selected变量变成了UNSELECTEDSTANDBY状态则回退到DETEACHED状态。 

• COLLECTING状态:若对端也表示进入了COLLECTING状态则本端进入DISTRIBUTING状态。(也可能收发不区分,统一成COLLECTING_DISTRIBUTING状态)。若此时Selected变量变成了UNSELECTEDSTANDBY状态或对端变成了不同步状态则回退到ATTEACHED状态。

• DISTRIBUTING状态:若期间若Selected变量改变或对端变成不同步或对端的收变成了禁止则回退到COLLECTING状态。

• 端口的发禁用是通过设置端口为blocking来实现,不更改Trunk组的配置,发启用是通过设置端口为forwarding来实现。 

3.4.6、发送状态机:

当状态变量LACP_EnableNTT均为“真”时,该状态机就创建一个正确的协议数据单元,然后把它发送出去。根据协议的规定,在一个快周期的时间间隔内,发送协议数据单元的次数应当不大于3次。如果在此限制范围内NTT仍为“真”,那么,协议数据包应当被延迟发送,直到该限制不再有效。每次LACPDU发送完毕后,状态变量NTT应被置为“False”。

3.4.7、选择逻辑状态机:

• 标准没有规定选择逻辑状态机的算法,我们的做法是:哪些端口加在一个聚合组里由用户配置,协议不会额外增加非聚合组内的端口到聚合组中,选择逻辑状态机的作用是将处于DETACHED状态的端口重新加回聚合组。

• 如果端口的复合状态机处于DETACHED状态,端口处于UNSELECTED状态且不隶属于任何聚合组(即端口聚合组ID0),则对其进行如下操作(否则退出状态机):

• 首先当前端口通过聚合组ID找到所属的聚合组;

• 其次查看该聚合组中的端口个数,若没有端口则直接加入聚合组。若有端口则与已加入聚合组的端口比较,若两者所属聚合组ID、端口速率不同或两者连的对端端口的聚合组ID、端口速率不同或两者连着不同的系统则当前端口不加入聚合组,否则加入聚合组。 

• 端口刚加入聚合组时置端口为STANDBY状态,聚合组中有多个端口则置该端口为SELECTED状态。

3.4.8、抖动检测状态机:

•  在端口已使能的情况下,若链路在抖动检测定时时间内仍不能同步则认为出现抖动,这种情况可能是设备故障或设备不支持或配置。

3.4.9、其他关于端口汇聚应该知道的知识:

• 只有全双工的端口才能参与聚合。

• 1个聚合组不能同时和2个聚合组聚合。

• 链路聚合条件:聚合组中的端口具有相同的物理性质,如同介质、全双工、同速率,具有相同的VLAN配置。

• LACPSTP(生成树协议)的关系:由前面介绍的选择逻辑状态机可知,一旦配置成聚合组(聚合端口),则实际的物理端口对其它协议来说将不复存在,取而代之的是聚合端口。从而对于STP来说,聚合组中的物理端口不参与STP,只有聚合端口将作为虚拟的端口参与STP

• 关于端口聚合成功后,数据包的分发,实现负载均衡、链路冗余的过程由交换芯片完成,不需要软件算法的干预,软件只要负责根据协议将相关的聚合情况写入底层驱动即可。

• 关于聚合端口的状态,如up/down等,将由其包含的物理端口的状态来决定。

• 如果有物理端口成功“绑定”聚合端口后并且其复合状态机处于DISTRIBUTING状态,则聚合端口状态为up;如果没有物理端口绑定聚合端口或绑定的物理端口的复合状态机没有一个处于DISTRIBUTING状态,则聚合端口为down

LACP端口协商模式:

• Passive被动协商模式。不主动发建立链路的请求,但是可以接收和处理LACPDU包。

• Active主动协商模式。主动发起建立链路的请求,若对端是activepassive模式则可以形成链路聚合。

• Hot Standby热备份模式,不支持。意思是当一个聚合组中的端口数超过8个时,只有8个端口可以聚合成功,其它端口都处于热备份模式,当8个端口中的某个失效后,处于热备份模式的某个端口将取代这个端口。

具体取哪个热备份模式的端口根据端口LACP优先级、端口号的优先顺序取,值小的优先。

至少有一方是Active模式才能链路才能聚合成功。缺省是Passive模式。

LACP端口优先级:

在支持Hot standby模式时有用。处于Hot standby模式的端口中,LACP端口优先级值小的端口将被优先选出用于替代聚合组中的失效端口。

LACP系统优先级:

在支持Hot standby模式时有用。只能基于单板配置,用于确定哪些链路为active,哪些链路为standby,系统优先级低的一方有决定权。例如A板和B板有聚合组相连,若A板优先级低则由A板决定哪些链路成为active链路。

• LACP端口超时方式:

• 超时方式有2种:

       Short Timeout  短超时,时间为3秒。

       Long Timeout  长超时,时间为90秒。

超时时间指的是状态机跃迁之前等待对方LACP包的最大时间。

LACP包是周期性发送的,本端有等待时间,相应的,对端有发送时间,周期性发送有快、慢两种,快发送周期为1秒,慢发送周期为30秒,用哪一种取决于对端的端口超时方式

• LACP动态与静态

• 配成动态时,只有收到对端的LACPDU包后本端的端口才能绑定到聚合组。

• 配成静态时,即使没有收到对端的LACPDU包,本端的端口也能绑定到聚合组。

• 在使能了LACP的情况下,配成静态的聚合组能够和未使能LACPTrunk组通业务,而配成动态的则不行。

如有转载,请注明出处,属于原创,谢绝盗版!

小兀,2012.08.18

你可能感兴趣的:(算法,工作,框架,负载均衡,文档,actor)