Lacp实现状态机
- 格式:pdf
- 大小:4.42 MB
- 文档页数:5
lacp协议原理LACP(Link Aggregation Control Protocol)是一种用于组成和管理网络中的链路聚合的协议。
链路聚合是将多个物理链路绑定在一起,形成一个逻辑链路,以增加网络的带宽和提高冗余性。
1. LACP的概述LACP是IEEE 802.3ad标准中定义的一种链路聚合协议。
通过LACP协议,网络设备(如交换机、路由器)可以自动协商并动态地组成链路聚合组,这样多个物理链路就可以作为一个逻辑链路来传输数据。
2. LACP的工作原理LACP协议通过LACP信息交换来建立和管理链路聚合组。
在LACP信息交换中,主要包括LACP协商阶段和LACP活动阶段两个阶段。
在LACP协商阶段,网络设备之间发送LACP协商报文,以确定链路聚合组的成员关系和工作模式。
在这个阶段,设备之间会互相交换自身的LACP能力和优先级信息,并根据这些信息来决定是否组成链路聚合组。
在LACP活动阶段,链路聚合组中的成员链路会周期性地发送LACP链路状态报文,以通知其他成员链路自身的状态。
这些状态信息包括链路的活跃性、代价以及发送端口的优先级等。
通过这些状态信息的交换和比较,链路聚合组中的成员链路可以进行状态的同步和调整。
3. LACP的工作模式LACP协议定义了两种工作模式,分别为主动模式和被动模式。
在主动模式下,设备主动地发送LACP协商报文,以寻找链路聚合组。
如果其他设备也处于主动模式并且具备组成链路聚合组的条件,那么它们就会自动地形成一个链路聚合组。
如果其他设备处于被动模式,则只有在接收到主动设备的LACP协商报文后才会组成链路聚合组。
在被动模式下,设备只有在接收到其他设备的LACP协商报文后才能组成链路聚合组。
4. LACP的优先级与端口选择算法LACP协议中,每个端口都有一个优先级值,范围为0-65535,数值越低表示优先级越高。
当设备需要选择参与链路聚合的链路时,会优先选择具有最高优先级值的链路。
【实验】静态LACP的链路聚合静态LACP模式也称为M∶N模式。
这种⽅式同时可以实现链路负载分担和链路冗余备份的双重功能。
在链路聚合组中M条链路处于活动状态,这些链路负责转发数据并进⾏负载分担,另外N条链路处于⾮活动状态作为备份链路,不转发数据。
当M条链路中有链路出现故障时,系统会从N条备份链路中选择优先级最⾼的接替出现故障的链路,同时这条替换故障链路的备份链路状态变为活动状态开始转发数据。
静态LACP模式与⼿⼯负载分担模式的主要区别为:静态LACP模式有备份链路,⽽⼿⼯负载分担模式所有成员接⼝均处于转发状态,分担负载流量【配置】interface Eth-Trunk10mode lacp-static //配置lacp⽅式的链路聚合trunkport GigabitEthernet 0/0/1 to 0/0/4 //加⼊物理成员接⼝least active-linknumber link-number,配置链路聚合活动接⼝数下限阈值。
//保证最少要有⼏个成员接⼝存活缺省情况下,活动接⼝数下限阈值为1[sw4-Eth-Trunk10]max active-linknumber 3 //配置活动接⼝数⽬上限阀值实际接⼝数量多于阀值时多出来的就是备份链路//抢占延迟是为了链路稳定后才开始真正的抢占[sw4-Eth-Trunk10]dis eth-trunk 10Eth-Trunk10's state information is:Local:LAG ID: 10 WorkingMode: STATICPreempt Delay: Disabled Hash arithmetic: According to SIP-XOR-DIPSystem Priority: 32768 System ID: 4c1f-ccbf-59f7Least Active-linknumber: 2 Max Active-linknumber: 3Operate status: up Number Of Up Port In Trunk: 3 //最⼤三个--------------------------------------------------------------------------------ActorPortName Status PortType PortPri PortNo PortKey PortState WeightGigabitEthernet0/0/1 Selected 1GE 32768 2 2609 10111100 1GigabitEthernet0/0/2 Selected 1GE 32768 3 2609 10111100 1GigabitEthernet0/0/3 Selected 1GE 32768 4 2609 10111100 1GigabitEthernet0/0/4 Unselect 1GE 32768 5 2609 10100000 1 //那么有⼀个就作为备份了Partner:--------------------------------------------------------------------------------ActorPortName SysPri SystemID PortPri PortNo PortKey PortStateGigabitEthernet0/0/1 32768 4c1f-ccca-6c8c 32768 2 2609 10111100GigabitEthernet0/0/2 32768 4c1f-ccca-6c8c 32768 3 2609 10111100GigabitEthernet0/0/3 32768 4c1f-ccca-6c8c 32768 4 2609 10111100GigabitEthernet0/0/4 32768 4c1f-ccca-6c8c 32768 5 2609 10110000[sw4]lacp priority 0配置lacp的系统优先级主要是为了区别谁作为链路聚合的主动端优先级默认32768 如果优先级⼀致⽐较系统MAC MAC地址⼩的优先[sw4]interface GigabitEthernet 0/0/3[sw4-GigabitEthernet0/0/3]lacp priority 4096 //配置接⼝优先级链路起来的时候它会优先选择到eth-trunk【交换机两边都需要配置】[sw4]int Eth-Trunk 10[sw4-Eth-Trunk10]lacp preempt enable //开启抢占[sw4-Eth-Trunk10]lacp preempt delay 10 //延迟10s 默认30s当再次开启接⼝抢占成功。
lacp负载分担方式-回复LACP(Link Aggregation Control Protocol)是一种网络协议,用于将多个物理链路组合为一个逻辑链路,实现链路负载分担和冗余备份。
在本文中,将详细介绍LACP的负载分担方式。
LACP负载分担方式主要有两种:基于MAC地址的负载分担和基于IP 地址的负载分担。
下面我们将逐步介绍这两种方式。
第一种方式是基于MAC地址的负载分担。
在这种方式下,交换机和主机之间的链路将被划分为多个虚拟链路,每个虚拟链路都有一个唯一的MAC地址。
交换机通过查看数据帧中的源MAC地址来确定将其发送到哪个虚拟链路上。
具体的负载分担算法包括以下几种:1. 基于源MAC地址的负载分担:交换机根据数据帧中的源MAC地址将数据发送到相应的虚拟链路上。
这样可以确保相同源MAC地址的数据帧发送到同一个虚拟链路上,实现负载的均衡分担。
2. 基于目的MAC地址的负载分担:交换机根据数据帧中的目的MAC 地址将数据发送到相应的虚拟链路上。
这样可以确保相同目的MAC地址的数据帧发送到同一个虚拟链路上,实现负载的均衡分担。
3. 基于源目的MAC地址对的负载分担:交换机根据数据帧中的源MAC地址和目的MAC地址对将数据发送到相应的虚拟链路上。
这样可以确保相同源MAC地址和目的MAC地址对的数据帧发送到同一个虚拟链路上,实现负载的均衡分担。
基于MAC地址的负载分担方式在交换机和主机之间实现了链路负载的均衡,可以提高网络的吞吐量和性能。
第二种方式是基于IP地址的负载分担。
在这种方式下,交换机和主机之间的链路将被划分为多个虚拟链路,每个虚拟链路都有一个唯一的IP地址。
交换机通过查看数据包中的源IP地址或目的IP地址来确定将其发送到哪个虚拟链路上。
具体的负载分担算法包括以下几种:1. 基于源IP地址的负载分担:交换机根据数据包中的源IP地址将数据发送到相应的虚拟链路上。
这样可以确保相同源IP地址的数据包发送到同一个虚拟链路上,实现负载的均衡分担。
实验二:02静态LACP模式链路聚合一、实验目的实验目的:了解并熟悉Switch交换机之间的配置活动接口数阈值、配置接口优先级确定主动端及活动链路、及静态LACP模式链路聚合,保证数据传输的可靠性。
二、实验内容实验内容:通过在两台交换机设备上配置静态LACP模式链路聚合组,提高两设备之间的带宽与可靠性。
三、实验原理实验原理:通过在两台交换机设备上配置静态LACP模式链路聚合组,并在交换机设备上创建及配置eth-Trunk为静态LACP模式,将成员接口加入,配置交换机活动接口数阈值、接口优先级确定主动端及活动链路,使得有2条活动链路具有负载分担能力,1条成为备份链路具有替代故障链路,以达到保持数据传输的可靠性。
四、实验器材实验器材:电脑Windows 7一台,华为虚拟机(eNSP)一个,2台LSW交换机,3根网线五、实验步骤实验步骤:第一步:建立好拓扑第二步:启动所有的设备服务第三步:双击进入到LSW1交换机的命令界面第四步:给交换机重新命名为Rou-SwitchA,并创建eth-Trunk 1第五步:配置eth-Trunk 1的工作模式为静态LACP模式第六步:分别进入接口G0/0/1、G0/0/2和G0/0/3后将这三个接口加入到eth-Trunk 1内。
第七步:配置Rou-SwitchA系统优先级为100(lacp priority 100),使其成为主动端第八步:配置Rou-SwitchA活动接口上限阀值为2(max active-linknumber 2)。
第九步:配置Rou-SwitchA上的G0/0/1和G0/0/2接口优先级为100来确定活动链路。
第十步:查看Rou-SwitchA优先级是否为100,G0/0/1和G0/0/2是否成为活动接口,G0/0/3是否成为备份接口(display eth-Trunk 1)。
第十一步:双击进入到LSW2交换机的命令界面,给交换机重新命名为Rou-SwitchB,并创建eth-Trunk 1第十二步:配置eth-Trunk 1的工作模式为静态LACP模式第十三步:分别进入接口G0/0/1、G0/0/2和G0/0/3后将这三个接口加入eth-Trunk 1内。
LabVIEW中的状态机设计和实现LabVIEW是一种用于控制与测量应用程序的编程环境,其独特之处在于可以通过图形化编程语言来编写程序。
在LabVIEW中,状态机是一种常用的设计模式,可以帮助我们实现复杂的控制逻辑和状态转换。
本文将介绍LabVIEW中的状态机的设计和实现方法。
一、状态机的概念与原理状态机是一种数学模型,用于描述系统或对象在不同状态之间的转换规则。
在LabVIEW中,状态机可以帮助我们实现程序的控制逻辑,使程序能够根据当前的状态做出相应的操作。
状态机通常包含以下几个基本元素:1. 状态(State):表示系统或对象所处的状态,可以是一个具体的状态值或者是一个状态变量。
2. 事件(Event):表示系统或对象发生的事件,触发状态的转换。
3. 动作(Action):表示状态转换时需要执行的操作或行为。
4. 转换(Transition):表示状态之间的转换关系,通常由事件和动作组成。
状态机的原理是根据当前的状态和接收到的事件,通过状态转换来改变系统或对象的状态,以实现程序的控制逻辑。
二、状态机的设计步骤在LabVIEW中,设计状态机可以按照以下步骤进行:1. 确定系统或对象的不同状态:根据实际需求确定系统或对象的不同状态,并为每个状态定义一个独特的标识符或变量。
2. 确定系统或对象可能的事件:根据实际需求确定系统或对象可能发生的事件,并为每个事件定义一个独特的标识符或变量。
3. 定义状态之间的转换关系:根据系统或对象的行为规则,确定不同状态之间的转换条件,并为每个转换条件定义一个独特的标识符或变量。
4. 实现状态转换的动作:根据实际需求,在状态之间的转换时执行相应的动作或操作。
5. 实现状态机的控制逻辑:根据定义的状态、事件、转换和动作,使用LabVIEW的图形化编程语言实现状态机的控制逻辑。
三、LabVIEW中的状态机实现示例下面以一个简单的灯控制系统为例,介绍如何在LabVIEW中实现状态机。
端口汇聚是将多个端口聚合在一起形成1 个汇聚组,以实现出/入负荷在各成员端口中的分担,同时也提供了更高的连接可靠性。
端口汇聚可以分为手工汇聚、动态LACP 汇聚和静态LACP 汇聚。
同一个汇聚组中端口的基本配置应该保持一致,即如果某端口为Trunk 端口,则其他端口也配置为Trunk 端口;如该端口的链路类型改为Access 端口,则其他端口的链路类型也改为Access 端口。
端口的基本配置主要包括STP、QoS、VLAN、端口等相关配置。
其中STP 配置包括:端口的STP使能/关闭、与端口相连的链路属性(如点对点或非点对点)、STP优先级、路径开销、报文发送速率限制、是否环路保护、是否根保护、是否为边缘端口。
QoS 配置包括:流量限速、优先级标记、缺省的802.1p 优先级、带宽保证、拥塞避免、流重定向、流量统计等。
VLAN 配置包括:端口上允许通过的VLAN、端口缺省VLAN ID。
端口配置包括:端口的链路类型,如Trunk、Hybrid、Ac c ess属性。
端口汇聚可以分为手工汇聚、动态LACP 汇聚和静态LACP 汇聚。
1. 手工聚合和静态LACP 聚合手工聚合和静态LACP 聚合都是人为配置的聚合组,不允许系统自动添加或删除手工或静态聚合端口。
手工或静态聚合组必须包含一个端口,当聚合组只有一个端口时,只能通过删除聚合组的方式将该端口从聚合组中删除。
手工聚合端口的LACP协议为关闭状态,禁止用户使能手工聚合端口的LACP 协议。
静态聚合端口的LA CP 协议为使能状态,当一个静态聚合组被删除时,其成员端口将形成一个或多个动态LACP 聚合,并保持LACP 使能。
禁止用户关闭静态聚合端口的LACP 协议。
在手工和静态聚合组中,端口可能处于两种状态:Active 和Inactive。
其中,只有Active 状态的端口能够收发用户业务报文,而Inactive 状态的端口不能收发用户业务报文。
LACP学习笔记一、LACP简介1、LACP协议简介基于 IEEE802.3ad 标准的LACP(Link Aggregation Control Protocol,链路汇聚控制协议)是一种实现链路动态汇聚与解汇聚的协议。
LACP 协议通过LACPDU(Link Aggregation Control Protocol Data Unit,链路汇聚控制协议数据单元)与对端交互信息。
使能某端口的 LACP 协议后,该端口将通过发送LACPDU 向对端通告自己的系统优先级、系统MAC、端口优先级、端口号和操作Key。
对端接收到这些信息后,将这些信息与其它端口所保存的信息比较以选择能够汇聚的端口,从而双方可以对端口加入或退出某个动态汇聚组达成一致。
2、LACP报文主要字段介绍:Actor_Port/Partner_Port:本端/对端接口信息。
Actor_State/Partner_State:本端/对端状态。
Actor_System_Priority/Partner_System_Priority:本端/对端系统优先级。
Actor_System/Partner_System:本端/对端系统ID。
Actor_Key/Partner_Key:本端/对端操作Key,各接口的该值相同才能够聚合。
Actor_Port_Priority/Partner_Port_Priority:本端/对端接口优先级。
二、链路聚合的分类1、手工负载分担模式链路聚合1)手工汇聚概述手工负载分担模式是一种最基本的链路聚合方式,在该模式下,Eth-Trunk 接口的建立,成员接口的加入完全由手工来配置,没有链路聚合控制协议的参与。
该模式下所有成员接口(selected)都参与数据的转发,分担负载流量,因此称为手工负载分担模式。
手工汇聚端口的 LACP 协议为关闭状态,禁止用户使能手工汇聚端口的LACP 协议。
2)手工汇聚组中的端口状态在手工汇聚组中,端口可能处于两种状态:Selected 或Standby。
华为交换机CPU进程说明 输出display cpu-usage 结果⽐对: 1 DARP Arp任务 2 CFSN Snmp set执⾏任务 3 DHCC DHCP客户端主任务 4 DHCP DHCP和DHCP中继主任务 5 DLSW DLSW主任务 6 vtxx EXEC配置任务 7 FP** ftp写flash任务 8 FTPS ftp服务器任务 9 FC** ftp客户端任务 10 HT** http⼦任务⼊⼝ 11 HSFF http服务器任务 12 HS** http客户端任务 13 VIDL 空闲任务 14 TICK 时钟任务 15 vt0 Exec配置任务 16 INFO 信息处理中⼼任务 17 ROUT 路由管理及路由协议任务 18 SapT Stun sap任务 19 SOCK 报⽂转发任务 20 VSIF 底层报⽂转发任务 21 VTYD telnet服务器任务 22 IPSP Ipsec任务 23 IKE Ike任务 24 TAC Tacacs+任务 25 SC 服务控制任务 26 RDS Radius任务 27 ACM Acm模块任务 28 LSSO Local server任务 29 TRAP Trap任务 30 NTPT Ntp任务 31 PIMT 组播接收发送任务 32 LSPM MPLS LSPM Task 33 L2V MPLS L2VPN任务 34 IPP Ipp任务 35 SIP Sip任务 36 RMON Rmon任务 display cpu-usage命令输出信息描述 CPU Usage Stat. Cycle CPU占⽤率统计周期。
CPU Usage CPU占⽤率 · Current:当前值 · Max:最⼤值 CPU Usage Stat. Time CPU占⽤率的统计时间,即当前时间。
CPU utilization for five seconds 5秒钟内CPU占⽤率的平均值。
8LACP 配置 8.1 链路聚合控制路聚合控制协议协议协议概概述IEEE 802.3ad 标准的LACP(Link Aggregation Control Protocol, 链路聚合控制协议)是一个关于动态链路聚合的协议,它通过协议报文 LACPDU(Link Aggregation Control Protocol Data Unit, 链路聚合控制协议数据单元)和相连的设备交互信息。
当端口启用LACP 协议后,端口通过发送LACPDU 来通告自己的系统优先级,系统MAC ,端口的优先级,端口号和操作key 等。
相连设备收到该报文后,根据所存储的其他端口的信息,选择端口进行相应的聚合操作,从而可以使双方在端口退出或者加入聚合组上达到一致。
8.2 动态链动态链路聚合的模式路聚合的模式端口有3种聚合模式:主动(Active)模式、被动模式(Passive)和静态模式。
其中主动模式的端口会主动发起LACP 报文协商;被动模式的端口则只会对收到的LACP 报文做应答;静态模式不会发出LACP 报文进行协商,具体配置请参见静态AP 配置指南《AP-SCG.doc 》的说明。
各个聚合模式的相邻端口聚合模式要求如下: 表1相邻端口聚合模式要求 8.3 LACP 端口的端口的状状态聚合组内的成员有可能处于3种状态: 1. 当端口的链路状态处于Down 时,端口不可能转发任何数据报文,显示为”down”状态。
2. 端口链路处于Up 状态,并经过LACP 协商后,端口被置于聚合状态(端口被作为一个聚合组的一个成员参与聚合组的数据报文转发),显示为“bndl ”状态。
3. 当端口链路处于UP 状态,但是由于对端没有启用LACP ,或者因为端口属性和主端口不一致等一些因素导致经过报文协商端口被置于挂起状态(处于挂起状态的端口不参与数据报文转发),显示为“sups ”状态。
8.4 动态链动态链路聚合的路聚合的路聚合的优优先级关级关系系8.4.1 LACP 的系的系统统ID端口模式相邻端口聚合模式要求 主动模式主动模式或者被动模式 被动模式主动模式 静态模式静态模式说明只有全双工的端口才能进行聚合成员端口的速率、流控、介质类型以及成员端口的二 三层属性必须一致才能聚合端口聚合后修改端口的上述属性将导致同个聚合组内的其他端口也无法聚合每台设备仅能配置一个LACP聚合系统。
LACP协议的链路聚合与网络带宽扩展随着互联网的迅速发展,网络流量的增长带来了对网络带宽的需求不断提升的问题。
为了满足这一需求,网络管理员们开始寻求使用链路聚合技术来扩展网络带宽。
本文将重点介绍LACP(链路聚合控制协议)的原理及其在网络带宽扩展中的应用。
一、LACP协议的基本原理LACP是一种用于多个物理链接之间的链路聚合协议,旨在提供高带宽、高可靠性的解决方案。
LACP协议基于IEEE 802.3ad标准,通过将多个物理链路绑定在一个逻辑链路上来扩展带宽并提供冗余。
它利用链路聚合控制器(LAC)和链路聚合协议数据单元(LACPDU)来实现链路的聚合。
1.1 链路聚合控制器(LAC)的作用LAC是LACP协议的关键组件,负责处理来自LACP活动端口的链路聚合请求和响应。
当多个物理端口被LAC绑定为聚合组时,LAC会为该聚合组分配一个唯一的聚合组标识,以便于对链路进行管理和监控。
1.2 链路聚合协议数据单元(LACPDU)的作用LACPDU是LACP协议中用于交换链路聚合信息的数据单元。
它包含了链路聚合请求、响应以及协议配置信息等。
通过LACPDU的交换,不同的LAC能够协调彼此之间的链路聚合操作。
二、链路聚合的网络带宽扩展链路聚合技术通过同时利用多个物理链路来增加传输带宽,从而实现网络带宽的扩展。
它能够提供更高的数据吞吐量和更好的负载均衡。
2.1 数据吞吐量的提升链路聚合技术可以将多个物理链路聚合为一个逻辑链路,实现数据的并行传输。
当网络中的数据流量增加时,链路聚合可以根据策略将数据流量均匀地分散到不同的物理链路上,从而提升整体的数据吞吐量。
2.2 负载均衡的优化通过链路聚合,网络管理员可以配置策略来实现更好的负载均衡。
例如,可以根据源IP地址、目的IP地址、源端口号等因素来决定将数据流量发送到哪个物理链路上。
这样可以避免某个物理链路过载而导致性能下降,实现更好的负载均衡。
2.3 接口冗余和容错性的提高链路聚合还可以提高网络的冗余性和容错性。
计 算 机 系 统 应 用 2010 年 第19卷 第 5 期104 研究开发 R es earch and Devel op ment基于LACP 协议的链路聚合状态机模块的实现①郑 涛 郭裕顺 (杭州电子科技大学 电子信息学院 浙江 杭州 310018)摘 要: 首先介绍了链路聚合技术的背景和基本概念,接着说明了LACP 协议(Link Aggregation ControlProtocol)的内容和原理,其中LACP 状态机模块控制着整个LACP 协议的运转,是保证基于LACP 协议的链路聚合可以有效工作的核心和关键模块。
最后以802.3ad 的LACP 协议为基础,利用有限状态机的设计方法,实现并优化了LACP 协议状态机模块的功能。
经测试,该模块功能运行正常,能够正确处理协议运行的各种情况。
关键词: Link Aggregation ;动态链路聚合;LACP ;有限状态机;网络协议Design of Link Aggregation Finite State Machine Module Based on LACPZHENG Tao, GUO Yu-Shun(School of Electronics & Information, Hangzhou Dianzi University , Hangzhou 310018, C hina)Abstract: This article f irst introduces the background and the basic concepts of link aggregation technology. It thendescribes the contents and principles of LACP. LACP state machine module controls the operation of the LACP. It is the core and key module to ensure LACP work effectively. Finally the LACP protocol state machine module f unction is implemented and optimized based on LACP and Finite state machine design method. In testing, the module operates normally. It can handle all circumstances correctly when the pro- tocol is running.Keywords: link aggregation; dynamic link aggregation; LACP; f inite state machine; network protocol网络技术的快速发展使得网络需要传输的数据量急剧增加,网络的带宽成为提高网络服务质量的主要瓶颈之一,越来越多的用户面临网络带宽不足的问题,最直接的手段当然是把旧网络升级成新网络来增加网络带宽。
但是这种方法成本太高,而链路聚合技术提供了一种更廉价的选择。
链路聚合(Link Aggrega- tion)技术简言之就是将多条物理链路聚合成一条带宽更高的逻辑链路,该逻辑链路的带宽等于被聚合在一起的多条物理链路的带宽之和。
聚合在一起的物理链路的条数可以根据业务的带宽需求来配置。
因此链路聚合具有成本低,配置灵活的优点,此外,链路聚合还具有链路冗余备份的功能,聚合在一起的链路彼此动态备份,提高了网络的稳定性。
早期链路聚合技术的实现没有统一的标准,各厂商都有自己私有的解决方案,功能不完全相同,也互不兼容。
因此,IEEE① 收稿时间:2009-09-07;收到修改稿时间:2009-10-26专门制定了链路聚合的标准,目前链路聚合技术的正式标准为IEEE Standard 802.3ad ,而LACP 是该标准的主要内容之一,是一种实现链路动态聚合的协议[1]。
1 LACP 的原理采用LACP 聚合的双方(分别称为Actor 和Partner)通过称之为LACPDU(LACP Data Unit)的协议报文来交互本端(Actor)和对端(Partner)的聚合信息,以对整个链路聚合的认识达成一致。
协议报文主要包含以下信息:本端和对端系统优先级、本端和对端系统ID 、本端和对端的端口操作key 、本端和对端的端口优先级、本端和对端的端口ID 、本端和对端的端口状态[2]。
聚合的双方就根据这些信息,按照一定的选择算法选择合适的链路,控制聚合的状态。
被选中的成员链路可以正常转发流量,而未被选中的成员2010 年 第19卷 第 5 期 计 算 机 系 统 应 用Research and Development 研究开发 105链路将被置为阻塞状态,不能转发任何流量。
聚合链路的总带宽等于被选中的成员链路的带宽之和,并且聚合链路上的流量会按照一定的规则分担到各个选中的成员链路上,由于LACPDU 是周期性交互,即聚合的双方每隔一段时间便互发一次协议报文,所以当有选中成员链路因为某种原因不能工作时,链路聚合可以很快的感知到,并重设链路状态,置该链路为阻塞,流量被重分配给其他选中成员链路。
这样就实现了增加带宽,链路动态备份的功能。
2 LACP 协议状态机的实现动态链路聚合是一个完全的事件驱动系统,它的整个工作过程中的每个动作都是由事件触发的,并且这些事件的发生的顺序和时间是随机的,事件能以任何顺序、在任何时刻出现。
而对于这种系统,有限状态机是一种最直观和有效的方法[3]。
为了能够高效稳定的控制动态链路聚合的运行,本文以802.3ad 的LACP 协议为基础,运用有限状态机方法,通过一组状态机来管理和控制LACP 协议的运转,主要有RX 状态机(Receive machine)、PTX 状态机(Periodic Transmission machine)、MUX 状态机(Mux machine)和TX 状态机(Transmit machine)。
它们在加入聚合链路的每个成员端口都会运行,这一组状态机控制LACP 的各个方面,包括本端LACP 协议报文的发送及发送的周期、解析收到的对端LACP 协议报文、调整链路的状态、处理各种异常情况等等。
它是实现动态链路聚合的核心模块之一。
2.1 状态机模块整体结构图1 状态机模块整体结构图整体状态机模块的结构如图1所示,为了降低模块间的耦合性,用状态机调度子模块作为处理状态机外部事件的统一接口。
这些外部事件包括定时器超时事件、端口事件等等。
各个状态机将无法直接响应这些外部事件。
状态机调度子模块根据不同的事件激励相应的状态机。
比如当收到LACPDU 时,状态机调度模块首先处理,再激励RX 状态机,RX 状态机解析报文中的信息后调用选择逻辑模块设置端口的选中状态,选择逻辑模块负责通过一定的选择算法选择合适的端口,只有被选中的端口才可以转发数据。
这一组协议状态机和状态机调度模块有机的结合,分工合作,完成对协议运行的控制。
各个状态机的具体功能在下一小节介绍。
2.2 状态机的功能与设计 2.2.1 RX 状态机RX 状态机(接收状态机):主要用来处理接收到的LACP 协议报文,解析报文,记录对端的聚合相关信息,并调用选择逻辑模块来设置端口的选中状态,根据对端的信息,设置链路聚合的相关数据,以及判断本端所保存的对端聚合相关的数据是否老化并做相应的处理,并且激励LACP 协议的其它状态机运行,它是LACP 协议这一组状态机的核心。
状态转换图如图2所示。
图2 RX 状态机状态转换图(1) INITIALIZE 状态:LACP 启动时进入这个状态,完成整个状态机数据的初始化。
激励MUX 状态机,完成后直接转换到PORT_DISABLED 状态。
(2) PORT_DISABLED 状态:设置未同步标记,激励MUX 状态机运行。
当事件Evt_PartnerPortMove (对端端口移除)发生时,转换到INITIALIZE 状态。
当端口up 但是工作于半双工模式时,转换到LACP_DISABLED 状态。
若端口up 且是全双工模式则进入EXPIRED 状态。
(3) LACP_DISABLED 状态:设置端口为非选中,清零保存的对端信息同时将对端信息记为默认值。
当事件Evt_ProtFullDuplex(端口变成全双工)发生时,转化到EXPIRED 状态。
(4) EXPIRED 状态:进入该状态时会启动短接收计 算 机 系 统 应 用 2010 年 第19卷 第 5 期106研究开发 Research and Development 定时器,如果在该定时器超时之前还没有收到对端发送的LACP 报文(即事件Evt_RxTimerExpired 发生),就进入DEFAULTED 状态。
反之,若在此之前收到了对端的LACPDU(即事件Evt_ReceivePdu),则进入CURRENT 状态。
(5) DEFAULTED 状态:设置端口为非选中,激励MUX 状态机,当接收到对端的协议报文时(即事件Evt_ReceivePdu),进入CURRENT 状态。
(6) CURRENT 状态:解析接收到的LACPDU ,解析报文,得到当前对端的聚合相关信息,并与之前保存的对端信息相比较,如果不同,表示对端已发生了变化。
此时要调用选择逻辑模块重新计算端口的选中状态。
如果相同,则无需重新计算。
另外还要判断接收到的对端的LACPDU 的发送状态。
如果是长周期发送,则启动长接收定时器。
如果是短周期发送则启动短接收定时器。
当定时器超时时(即事件Evt_Rx- TimerExpired 发生),进入EXPIRED 状态。
如果在定时器超时之前接收到LACPDU(即事件Evt_Receive- Pdu 发生),重新进入CURRENT 状态。
2.2.2 TX 状态机TX 状态机:它负责填充LACP 协议报文的内容并处理协议报文的发送,当收到通知时,TX 状态机马上调用报文发送模块发送报文,由于LACP 协议属于慢速协议,每秒最多允许发送10个LACP 协议报文。
TX 状态机要确保这个要求,所以TX 状态机内部维护NTT(Need To Transmit)标志和全局变量ucSend- PduNum(用来记录已发送报文的个数),每隔1秒ucSendPduNum 会被清零,处理流程见图3。
图3 TX 状态机处理流程图2.2.3 PTX 状态机PTX 状态机:维护周期发送定时器的发送周期,即用来控制Actor 和Partner 交互LACPDU 的频率。