基于链路聚合的以太环保护倒换的设计与实现

2021-07-30 07:57罗志成李明春
电子设计工程 2021年14期
关键词:以太网报文端口

张 洁,罗志成,李明春

(1.武汉邮电科学研究院,湖北武汉 430074;2.烽火通信科技股份有限公司,湖北武汉 430074)

随着网络技术的快速发展,网络中部署的业务量不断增多[1-2]。以太网链路聚合将多个物理接口绑定为一个逻辑接口,有效提高了设备之间链路的可靠性和数据传输能力[3-5]。以太网通常使用环形拓扑为网络提供冗余保护,但存在广播风暴等故障现象,生成树协议(Spanning Tree Protocol,STP)将环形网络修剪成一个无环的树型网络,但是网络收敛时间在秒级,无法满足高服务质量要求的业务[6-7]。与STP协议相比,ERPS 通过阻塞特定的端口达到消除环路的目的[8-10],收敛时间在50 ms 以内,可满足电信级可靠性。

文中设计和实现了基于以太网链路聚合开启ERPS 协议,正常情况下,用户流量完好;当链路聚合组中出现链路故障时,可以通过备份链路保证链路带宽;当整个聚合组不工作时,ERPS 协议发生保护倒换,放开RPL 端口恢复通信,故障中断时间控制在50 ms以内。

1 协议原理与实现

1.1 以太网链路聚合

以太网链路聚合是将多个物理端口汇聚在一起,形成一个逻辑端口,以实现出入流量吞吐量在各成员端口的负载分担。如高速公路上的单车道,扩建为双向八车道,那么高速公路的通过能力将变得更强[11-12]。

两台设备之间通过多条物理链路连接,称为链路聚合组(Trunk),被捆绑在一起的每一个物理接口称为该链路聚合组的成员接口,其中用来转发数据的接口为活动接口,处于选中(Selected)状态,而非活动接口不参与数据的转发,处于非选中(Unselected)状态。

以太网链路聚合根据是否启用链路聚合控制协议(Link Aggregation Control Protocol,LACP)分为手工链路聚合和LACP 链路聚合。手工链路聚合只能在同厂商设备上使用,而LACP 链路聚合方式符合国际标准,因此可以实现不同厂商之间的互通。

1.2 ERPS

ERPS 是ITU_T 定义的二层破环协议,通过环自动保护倒换协议数据单元(Ring Auto Protection Switching Protocol Data Unit,R-APS PDU)与对端交互。由一个主节点和若干个普通节点组成的ERPS环是ERPS 协议的基本组成单位,其中主节点是ERPS 的主要决策和控制节点,每个环上有且仅有一个,除此之外的节点为普通节点(Common)。每个节点最多仅有两个端口加入同一个ERPS 环,在ERPS协议中,需要指定主节点上其中一个端口角色为RPL,在正常状态下RPL 端口状态为阻塞(Blocking),只处理协议报文,不转发数据报文,除此之外的端口角色为Common,端口状态为转发(Forwarding),此状态下端口既可转发数据,也可以接收和转发协议报文。传输协议报文和数据报文的虚拟局域网(Virtual Local Area Network,VLAN)需要映射在保护实例中,同一个ERPS 环上的设备配置相同的控制VLAN,控制VLAN 用于传输ERPS 协议报文,数据VLAN 用于转发用户流量[13-14]。

设备A~C 组成一个ERPS 环,设备A 为主节点,PA1 的端口角色为RPL,其他设备为普通节点,端口角色为Common。正常状态下,主节点A 将端口PA1的状态置为Blocking,不参与用户数据的转发,在物理成环的情况下阻塞端口达到破环的目的,保护用户数据;当环路发生故障,如设备B-C 间链路故障,则主节点A 打开阻塞端口PA1,端口状态变为Forwarding,可参与用户数据的转发,实现了对用户数据的切换;故障恢复后,重新阻塞主节点A 的端口PA1,避免网络成环。

2 方案设计

基于以太网链路聚合实现ERPS 协议在OLT 设备上的运行,需要在命令行增加链路聚合组的配置和查询,保证ERPS 协议可以基于链路聚合组对普通端口进行操作。另外是两个协议之间的互相通告,如链路聚合组中成员端口的添加(ADD)和删除(DEL)、链路聚合组的连接(up)/断开(down)事件,需要通知ERPS 协议模块作处理,ERPS 协议运行后的结果也需要通知以太网链路聚合模块,更新链路聚合组的状态[15-16]。上述事件的处理和完成要求收敛速度足够快,达到电信级可靠性。

2.1 命令行配置

配置命令为erps ring <ring-id>primary-linkaggregation <trunkid>role [common|rpl-port]和erps ring <ring-id>secondry-link-aggregation <trunkid>role [common|rpl-port],查询命令为show erps ring <ring-id>trunk <trunkid>。其中,ring-id 是环ID,根据环ID 区分不同的逻辑环,trunkid 代表链路聚合组号,端口角色有两种:common 和rpl-port,由用户自行设置,确保环中设备上有一个端口为rpl-port。

配置命令的实现流程图如图1 所示。设备开启ERPS 协议时会进行模块初始化,创建一个ERPS 协议的轮询任务erp_task,这个任务中根据消息类型触发状态机的运转。基于以太网链路聚合配置ERPS协议时,首先需要检查命令行中输入参数的合法性,当输入参数合法且链路聚合组存在的情况下,将配置信息写入数据库,遍历聚合组内普通端口,设置端口状态并刷新端口的转发数据表(Forwarding Data Base,FDB)。

图1 命令行配置流程

查询命令的实现与配置命令类似,当命令中有输入参数时先判断参数的合法性,参数合法时判断聚合组是否存在,若存在则从数据库中获取聚合组的信息并显示。

2.2 Trunk组成员变动

Trunk 组内成员的变动,包括成员添加或者删除,ERPS 协议模块设置一个钩子函数,当Trunk 组内成员变动时,注册的钩子函数将通知ERPS 模块进行处理,处理流程如图2 所示。

图2 Trunk组成员变动处理流程

在ERPS 轮询任务中,若删除Trunk 组中成员,如Trunk 组中某一条链路故障或者人为删除Trunk组中某一条链路,此时需要将端口信息(端口默认转发状态、速率、双工模式等)恢复为默认值。若Trunk组中添加成员,如链路带宽不足需要增加带宽,那么新加入的链路端口信息需要与链路聚合组保持一致,因此,需要先查询新端口加入链路聚合组的信息,并根据该信息对新端口进行设置,设置后新端口将更新自己的端口状态并刷新FDB 表。

2.3 Trunk组up/down

Trunk 组up/down 的处理流程涉及到报文交互和定时器的设计,IDLE 表示正常状态,Protection 表示保护状态,设备A 是主节点RPL Owner。

Trunk 组故障时的操作如图3 所示,步骤如下。

图3 链路故障时的操作

A:正常状态;

B:节点B 和节点C 之间链路故障;

C:节点B 和C 检测到本地信号故障,打开Holdoff Timer 定时器,阻塞故障端口并执行刷新FDB 操作;

D:当SF (Signal Failed)条件存在的情况下,节点B 和C 周期性地发送SF R-APS 报文,为了快速进行保护倒换,前3 个报文的发送间隔为3.3 ms;

E:所有节点接收到SF R-APS 报文后刷新FDB表,主节点接收到SF R-APS 报文后,放开RPL 端口并刷新FDB;

F、G:环上SF 信号稳定存在时,不会触发进一步操作。

Trunk 组链路恢复时的操作如图4 所示,步骤如下。

图4 故障恢复

A:稳定的SF 条件;

B:链路故障恢复;

C:节点B 和C 检测到本地SF 条件清除,启动Guard Timer 定时器,并周期性向外发送NR(No Request)R-APS 报文;

D:当主节点接收到NR 报文后,启动WTR(Wait to Restore)timer 定时器;

E:当节点B 和C 上Guard Timer 超时后,就可接收新的R-APS 报文;

F:主节点上的WTR timer 超时后,阻塞RPL 端口,并发送NR、RB(No Request,RPL Blocked) R-APS报文,刷新FDB。

G:当节点B 和C 收到NR、RB R-APS 报文后,将放开阻塞的端口并停止发送NR 报文。

3 场景设计与实现

根据上述原理与方案设计,在OLT 上开发实现了基于以太网链路聚合的环网保护倒换。使用3 台OLT 和一台流量测试仪(TestCenter)搭建图5 所示的网络拓扑图进行测试。

图5 测试拓扑图

设备A 为主节点,设备A 的Trunk 组2 的角色为RPL,其他设备为普通节点,Trunk 组的角色为Common。正常收敛状态下,由测试仪口1 向口2 模拟发送用户数据,测试仪口2 可以正常接收,说明环路中设备运行正常,各端口状态正确。依次断开AC、BC、AB 间链路聚合组中成员端口,然后重新连接,依次将AC、BC、AB 间链路聚合组断开连接后再重新连接,观察环路中的链路切换,记录流量测试仪的丢包数。测量多组数据后取平均值,如表1 所示,流量测试仪的发包速率为1 000 Frames/s。

表1 测试结果

正常状态下,数据流向为:仪表口1-A-B-C-仪表口2,从表1 可以看出,AC 之间链路的改变不会造成丢包,BC 和AB 之间链路的改变、保护倒换时间均在50 ms 以内,因此可知,方案设计合理,该机制切实可行。

4 结束语

文中提出了将以太网链路聚合与ERPS 协议相结合,在普通端口的基础上增加对聚合组的操作,不仅拓宽了网络带宽,增加了数据的传输能力,而且实现了环网的保护倒换,提高了网络的可靠性。

猜你喜欢
以太网报文端口
基于J1939 协议多包报文的时序研究及应用
一种端口故障的解决方案
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
端口阻塞与优先级
谈实时以太网EtherCAT技术在变电站自动化中的应用
ATS与列车通信报文分析
一种90W高功率以太网供电系统的设计
浅谈EPON与工业以太网在贵遵高速公路中的应用