一种报文生成方法和装置转让专利

申请号 : CN202110992637.3

文献号 : CN113691421B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 曾繁迪王艳芳吴超秦娥

申请人 : 烽火通信科技股份有限公司

摘要 :

本发明公开了一种报文生成方法和装置,方法包括:第一设备的FPGA端口基于业务参数组装第一报文,第一设备预设第一输出端口;第一设备的FPGA端口将第一报文发送给第一设备的转发芯片,将第一报文中的计数戳初始化;第一设备的转发芯片统计第一输出端口的第一发包计数值,并将第一发包计数值填入第一报文的计数戳中,得到第一更新报文;在第一更新报文中添加禁止编辑计数戳标识,得到第二更新报文,将第二更新报文转发到第一设备的第一输入端口;若第二更新报文遵循CFM的报文格式,由第一设备的转发芯片将第二更新报文封装隧道,生成第一设备报文;第一设备报文由第一输出端口发出,第二设备的第二输出端口接收第一设备报文。

权利要求 :

1.一种报文生成方法,其特征在于,方法包括:

第一设备的FPGA端口基于业务参数组装第一报文,所述第一设备预设第一输出端口;

所述第一设备的FPGA端口将所述第一报文发送给所述第一设备的转发芯片,将所述第一报文中的计数戳初始化;

第一设备的转发芯片统计所述第一输出端口的第一发包计数值,并将所述第一发包计数值填入所述第一报文的计数戳中,得到第一更新报文;

在所述第一更新报文中添加禁止编辑计数戳标识,得到第二更新报文,将所述第二更新报文转发到第一设备的第一输入端口;

若第二更新报文遵循CFM的报文格式,由所述第一设备的转发芯片将所述第二更新报文封装隧道,生成第一设备报文;

所述第一设备报文由所述第一输出端口发出,第二设备的第二输出端口接收所述第一设备报文。

2.如权利要求1所述的报文生成方法,其特征在于,所述第二设备的第二输出端口接收所述第一设备报文后,具体方法包括:所述第二设备的转发芯片终结所述第一设备报文中的隧道信息;

若所述第一设备报文遵循CFM的报文格式,所述第二设备的转发芯片统计所述第二输出端口接收到的第一收包计数值,所述第一收包计数值写到第一设备报文头部,得到第三更新报文;

所述第二设备的FPGA端口对所述第三更新报文中的计数戳进行更新,得到第二设备报文;

所述第二设备的FPGA端口将所述第二设备报文发送到所述第二设备的转发芯片。

3.如权利要求1所述的报文生成方法,其特征在于,所述第一设备的FPGA将所述第一报文发送给所述第一设备的转发芯片,将所述第一报文中的计数戳初始化,具体方法包括:所述第一设备的FPGA遵循CFM的报文格式进行所述第一报文的组装;

所述第一设备的FPGA携带的所述第一输出端口信息发送给所述第一设备的转发芯片;

所述第一报文中的计数戳TxFcf、RxFcb和TxFcb的值分别为0。

4.如权利要求1所述的报文生成方法,其特征在于,所述第一设备的转发芯片统计所述第一输出端口的第一发包计数值,并将所述第一发包计数值填入所述第一报文的计数戳中,得到第一更新报文,具体方法包括:所述第一设备的转发芯片解析所述第一报文;

将所述第一发包计数值填入所述第一报文计数戳TxFcf中,所述第一报文计数戳TxFcf的值由0更新为所述第一发包计数值;

所述第一报文计数戳的RxFcb和TxFcb的值为0;

得到第一更新报文。

5.如权利要求1所述的报文生成方法,其特征在于,所述第一设备的转发芯片将所述第二更新报文封装隧道,生成第一设备报文具体方法包括:所述第一设备的转发芯片查询所述第二更新报文的业务转发表项,根据所述第二更新报文的业务转发表项判断是否封装隧道;

所述第二更新报文的业务转发表项中符合封装隧道的隧道类型为MPLS、SRV6或VxLAN中的一种。

6.如权利要求1所述的报文生成方法,其特征在于,若所述第二更新报文不遵循CFM的报文格式或所述第二更新报文带有禁止编辑计数戳标识,所述第二更新报文不进行封装隧道,由所述第一输出端口发出。

7.如权利要求2所述的报文生成方法,其特征在于,所述第二设备的第二输出端口接收业务报文或已完成封装隧道的第一设备报文。

8.如权利要求2所述的报文生成方法,其特征在于,所述第二设备的FPGA端口对所述第三更新报文中的计数戳进行更新,得到第二设备报文,具体方法包括:所述第二设备的FPGA端口解析所述第三更新报文;

将所述第三更新报文的收包计数值填到所述第三更新报文的计数戳RxFcb中;

所述第二设备的FPGA端口将所述第三更新报文的计数戳TxFcf的值复制填写到计数戳TxFcb中,同时将计数戳TxFcf的值归为0,得到第二设备报文。

9.如权利要求2所述的报文生成方法,其特征在于,分别计算所述第一设备报文和第二设备报文的帧丢失量,进行第一设备与第二设备的丢包检测:若帧丢失量均为0,第一设备和第二设备未发生丢包现象;

若帧丢失量不等于0,第一设备和/或第二设备发生丢包现象,发送告警指令。

10.一种报文生成装置,其特征在于,装置包括:

至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行权利要求1‑9任一所述的报文生成方法。

说明书 :

一种报文生成方法和装置

技术领域

[0001] 本发明属于网络通信技术领域,更具体地,涉及一种报文生成方法和装置。

背景技术

[0002] 在通讯网络中,以太网操作维护管理(Operation Administration and Maintenance,简称OAM)技术可以有效提高对以太网的管理和维护能力,保障网络的稳定运行。业务层以太网OAM技术中连接故障管理(Connectivity Fault Management,简称CFM)多应用于网络的接入汇聚层,用于监测整个网络的连通性、定位网络的连通性故障。CFM报文又分为外向连通性故障管理(Down Connectivity Fault Management,DOWNCFM)报文和内向连通性故障管理(Connectivity Fault Management,简称CFM)报文,其中双端丢包检测(Loss Measurement,简称LM)用于性能监测,当两端维护端点(Maintenanceassociation End Point,简称MEP)分别收到从远端发来的携带计数信息的报文,通过比较最近的两次报文数据,即可进行近端和远端丢包度量。
[0003] 双端LM报文中TxFCf当前向远端MEP发送的报文数字段是由转发芯片解析报文后将转发芯片当前向远端MEP发送的报文数填充到此位置上的,但在CFM双端LM报文经过转发芯片封装基于IPv6转发平面的段路由(Segment Routing IPv6,简称SRV6)进入隧道时,因SRV6的帧结构长度太长,而转发芯片的硬件解析编辑报文的能力是有限的,常规CFM报文经过封装SRV6隧道之后再去编辑计数戳编辑深度会发生不足的问题,因此导致CFM双端LM报文中TxFCf无法被转发芯片正确解析编辑。
[0004] 鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。

发明内容

[0005] 针对现有技术的以上缺陷或改进需求,本发明提供了一种报文生成方法和装置,其目的在于通过修改双端丢包检测报文生成方式,避免发生转发芯片在封装隧道之后无法编辑计数戳的情况。
[0006] 为实现上述目的,按照本发明的一个方面,提供了一种报文生成方法,方法包括:
[0007] 第一设备的FPGA端口基于业务参数组装第一报文,所述第一设备预设第一输出端口;
[0008] 所述第一设备的FPGA端口将所述第一报文发送给所述第一设备的转发芯片,将所述第一报文中的计数戳初始化;
[0009] 第一设备的转发芯片统计所述第一输出端口的第一发包计数值,并将所述第一发包计数值填入所述第一报文的计数戳中,得到第一更新报文;
[0010] 在所述第一更新报文中添加禁止编辑计数戳标识,得到第二更新报文,将所述第二更新报文转发到第一设备的第一输入端口;
[0011] 若第二更新报文遵循CFM的报文格式,由所述第一设备的转发芯片将所述第二更新报文封装隧道,生成第一设备报文;
[0012] 所述第一设备报文由所述第一输出端口发出,所述第二设备的第二输出端口接收所述第一设备报文。
[0013] 优选地,所述第二设备的第二输出端口接收所述第一设备报文后,具体方法包括:
[0014] 所述第二设备的转发芯片终结所述第一设备报文中的隧道信息;
[0015] 若所述第一设备报文遵循CFM的报文格式,所述第二设备的转发芯片统计所述第二输出端口接收到的第一收包计数值,所述第一收包计数值写到第一设备报文头部,得到第三更新报文;
[0016] 所述第二设备的FPGA端口对所述第三更新报文中的计数戳进行更新,得到第二设备报文;
[0017] 所述第二设备的FPGA端口将所述第二设备报文发送到所述第二设备的转发芯片。
[0018] 优选地,所述第一设备的FPGA将所述第一报文发送给所述第一设备的转发芯片,将所述第一报文中的计数戳初始化,具体方法包括:
[0019] 所述第一设备的FPGA遵循CFM的报文格式进行所述第一报文的组装;
[0020] 所述第一设备的FPGA携带的所述第一输出端口信息发送给所述第一设备的转发芯片;
[0021] 所述第一报文中的计数戳TxFcf、RxFcb和TxFcb的值分别为0。
[0022] 优选地,所述第一设备的转发芯片统计所述第一输出端口的第一发包计数值,并将所述第一发包计数值填入所述第一报文的计数戳中,得到第一更新报文,具体方法包括:
[0023] 所述第一设备的转发芯片解析所述第一报文;
[0024] 将所述第一发包计数值填入所述第一报文计数戳TxFcf中,所述第一报文计数戳TxFcf的值由0更新为所述第一发包计数值;
[0025] 所述第一报文计数戳的RxFcb和TxFcb的值为0;
[0026] 得到第一更新报文。
[0027] 优选地,所述第一设备的转发芯片将所述第二更新报文封装隧道,生成第一设备报文具体方法包括:
[0028] 所述第一设备的转发芯片查询所述第二更新报文的业务转发表项,根据所述第二更新报文的业务转发表项判断是否封装隧道;
[0029] 所述第二更新报文的业务转发表项中符合封装隧道的隧道类型为MPLS、SRV6或VxLAN中的一种。
[0030] 优选地,若所述第二更新报文不遵循CFM的报文格式或所述第二更新报文带有禁止编辑计数戳标识,所述第二更新报文不进行封装隧道,由所述第一输出端口发出。
[0031] 优选地,所述第二设备的第二输出端口接收业务报文或已完成封装隧道的第一设备报文。
[0032] 优选地,所述第二设备的FPGA端口对所述第三更新报文中的计数戳进行更新,得到第二设备报文,具体方法包括:
[0033] 所述第二设备的FPGA端口解析所述第三更新报文;
[0034] 将所述第三更新报文的收包计数值填到所述第三更新报文的计数戳RxFcb中;
[0035] 所述第二设备的FPGA端口将所述第三更新报文的计数戳TxFcf的值复制填写到计数戳TxFcb中,同时将计数戳TxFcf的值归为0,得到第二设备报文。
[0036] 优选地,分别计算所述第一设备报文和第二设备报文的帧丢失量,进行第一设备与第二设备的丢包检测:
[0037] 若帧丢失量均为0,第一设备和第二设备未发生丢包现象;
[0038] 若帧丢失量不等于0,第一设备和/或第二设备发生丢包现象,发送告警指令。
[0039] 按照本发明的另一方面,提供了一种报文生成装置,装置包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行第一方面所述的报文生成方法。
[0040] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
[0041] 通过本发明提供的报文生成方法和装置,不必考虑转发芯片是否满足各个封装隧道下解析编辑报文的能力,也不必考虑隧道场景类型是否满足报文的生成方式,同时便于后期对报文进行丢包检测,易于推动落地及快速实现。

附图说明

[0042] 图1是本实施例一提供的一种报文的生成方法流程示意图;
[0043] 图2是本实施例一中第一设备上生成并发送报文方法流程示意图;
[0044] 图3是本实施例一中第二设备上接收并发送报文方法流程示意图;
[0045] 图4是本实施例二中生成的报文封装格式示意图;
[0046] 图5是本实施例二中第一设备发送报文流程图;
[0047] 图6是本实施例二中第二设备接收并发送报文流程图;
[0048] 图7是本实施例三中提供的一种报文生成装置示意图。

具体实施方式

[0049] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0050] 实施例一:
[0051] 本实施例一中,提供的一种报文的生成方法仅限于生成CFM报文,CFM双端丢包检测报文常规流程是先封装隧道信息,然后更新OAM PDU(OAM Protocol Data Units,OAM协议数据单元)里计数戳TxFCf的数据。特别是在SRV6场景,隧道的长度已到上百字节,经过封装完隧道信息流程后,TxFCf字段会在报文内部非常深的位置,已经超过了转发芯片硬件编辑计数戳的最大长度,若再去编辑计数戳会导致计数戳异常。
[0052] 由于转发芯片的硬件解析编辑报文的能力有限,为了避免CFM双端丢包检测报文中计数戳无法被转发芯片正确解析和编辑的问题,本实施例一提供一种报文生成方法,如图1所示,方法包括:
[0053] S101:第一设备的FPGA端口基于业务参数组装第一报文,所述第一设备预设第一输出端口。
[0054] 本实施例一中,第一设备会在第一输入端口开启CFM功能,业务参数至少包括第一输入端口信息、第一输出端口信息、MAC信息和VLAN信息中的一种。
[0055] S102:所述第一设备的FPGA端口将所述第一报文发送给所述第一设备的转发芯片,将所述第一报文中的计数戳初始化。
[0056] 本实施例一中,第一设备的FPGA端口基于业务对应的基本参数进行报文的组装,同时携带业务参数中第一输出端口信息发送给第一设备的转发芯片。第一报文中的计数戳TxFcf、RxFcb和TxFcb的值分别为0。
[0057] S103:第一设备的转发芯片统计所述第一输出端口的第一发包计数值,并将所述第一发包计数值填入所述第一报文的计数戳中,得到第一更新报文。
[0058] 本实施例一中,第一设备的转发芯片收到FPGA流时,根据FPGA流的以太帧类型(0x8902)和MAC地址的信息以及可选的VLAN信息,辨别FPGA流是否是CFM报文格式,若不是CFM报文格式(可能是信令报文),由第一输出端口发出,属于正常转发流程;如果是CFM报文格式,第一设备的转发芯片将统计从第一输出端口发送出去的业务报文数,并填入到第一报文的TxFcf计数戳中,得到第一更新报文。
[0059] S104:在所述第一更新报文中添加禁止编辑计数戳标识,得到第二更新报文,将所述第二更新报文转发到第一设备的第一输入端口。
[0060] 本实施例一中,第一设备的转发芯片将计数戳TxFcf被刷新后的第一更新报文再转发到第一输入端口,同时添加禁止编辑计数戳标识,得到第二更新报文,让转发芯片判断标识后跳开刷新计数戳流程,避免第二更新报文又走一遍刷新计数戳流程。
[0061] S105:若第二更新报文遵循CFM的报文格式,由所述第一设备的转发芯片将所述第二更新报文封装隧道,生成第一设备报文。
[0062] 本实施例一中,第一设备的转发芯片只需将第二更新报文当成业务报文正常转发到第一输出端口,对第二更新报文进行封装隧道,生成第一设备报文,完成本端CFM报文的生成流程。
[0063] S106:所述第一设备报文由所述第一输出端口发出,所述第二设备的第二输出端口接收所述第一设备报文。
[0064] 本实施例一中,第二设备的第二输出端口接收的是业务报文或已完成封装隧道的第一设备报文。
[0065] 本实施例一提供的报文的生成方法不必考虑转发芯片是否满足各个封装隧道下解析编辑报文的能力,也不必考虑隧道场景类型是否满足报文的生成方式,同时便于后期对报文进行丢包检测,易于推动落地及快速实现。
[0066] 为了在第二设备端对第一设备报文进行解析和更新,以便于对第一设备和第二设备进行丢包检测,结合本发明实施例,还存在一种优选的实现方案,具体的,所述第二设备的第二输出端口接收所述第一设备报文后,具体方法包括:
[0067] 所述第二设备的转发芯片终结所述第一设备报文中的隧道信息。
[0068] 本实施例一中,终结隧道信息后,第二设备的转发芯片可对第一设备报文进行解析,第二设备的FPGA端口可对第一设备报文中进行更新。
[0069] 若所述第一设备报文遵循CFM的报文格式,所述第二设备的转发芯片统计所述第二输出端口接收到的第一收包计数值,所述第一收包计数值写到第一设备报文头部,得到第三更新报文。
[0070] 本实施例一中,若第一设备报文不是CFM的报文格式,由第一输出端口发出,属于正常转发流程,不涉及丢包检测。若第一设备报文是CFM的报文格式,将第一设备报文中的收包计数值写到第一设备报文头部,得到第三更新报文,随后转发到第二设备的FPGA。
[0071] 所述第二设备的FPGA端口对所述第三更新报文中的计数戳进行更新,得到第二设备报文。
[0072] 第二设备的FPGA解析第三更新报文中的头部,将第三更新报文头部的收包计数值写到第二设备报文的RxFCb计数戳中。
[0073] 所述第二设备的FPGA端口将所述第二设备报文发送到所述第二设备的转发芯片。
[0074] 第二设备的FPGA继续编辑第二设备报文,将第二设备报文中TxFcf的值复制填写到第二设备报文的TxFcb中,同时将第二设备报文中的TxFcf值设置为0,接着第二设备的FPGA将第二设备报文再转发回第二设备的转发芯片。
[0075] 本实施例一中,第一设备和第二设备丢包度量通过比较各自最近收到前后两次报文携带的计数信息,即可进行第一设备和第二设备之间的丢包检测。
[0076] 为了便于对报文的计数戳进行更新和对报文进行丢包检测计算,结合本发明实施例,还存在一种优选的实现方案,具体的,所述第一设备的FPGA将所述第一报文发送给所述第一设备的转发芯片,将所述第一报文中的计数戳初始化,具体方法包括:
[0077] 所述第一设备的FPGA遵循CFM的报文格式进行所述第一报文的组装。
[0078] 所述第一设备的FPGA携带的所述第一输出端口信息发送给所述第一设备的转发芯片。
[0079] 所述第一报文中的计数戳TxFcf、RxFcb和TxFcb的值分别为0。
[0080] 本实施例一中,第一设备的FPGA遵循CFM的报文格式进行第一报文的组装。初始阶段,需要将第一报文中的计数戳全部设置为0,便于后期更新数值。
[0081] 为了统计第一输出端口的第一发包计数值并将数值填入到第一报文计数戳TxFcf中,结合本发明实施例,还存在一种优选的实现方案,具体的,所述第一设备的转发芯片统计所述第一输出端口的第一发包计数值,并将所述第一发包计数值填入所述第一报文的计数戳中,得到第一更新报文,具体方法包括:
[0082] 所述第一设备的转发芯片解析所述第一报文。
[0083] 将所述第一发包计数值填入所述第一报文计数戳TxFcf中,所述第一报文计数戳TxFcf的值由0更新为所述第一发包计数值。
[0084] 所述第一报文计数戳的RxFcb和TxFcb的值为0。
[0085] 得到第一更新报文。
[0086] 本实施例一中,通过先将数值填入到第一报文计数戳TxFcf中,再进行报文的封装隧道,可以完全避免转发芯片在封装隧道之后无法编辑计数戳的情况。
[0087] 为了满足多种隧道类型的需求,结合本发明实施例,还存在一种优选的实现方案,具体的,所述第一设备的转发芯片将所述第二更新报文封装隧道,生成第一设备报文具体方法包括:
[0088] 所述第一设备的转发芯片查询所述第二更新报文的业务转发表项,根据所述第二更新报文的业务转发表项判断是否封装隧道;
[0089] 所述第二更新报文的业务转发表项中符合封装隧道的隧道类型为MPLS、SRV6或VxLAN中的一种。
[0090] 本实施例一中,隧道类型为MPLS(Multi‑Protocol Label Switching,全称:多协议标签交换技术)、SRV6(Segment Routing IPv6,全称:基于IPv6转发平面的段路由)或VxLAN(Virtual Extensible Local Area Network,全称:虚拟扩展局域网)中的一种。
[0091] 业务转发表项信息包括报文的入端口是否是FPGA端口并且报文格式是否满足CFM报文,若两个条件同时满足,报文才需要封装隧道。若两个条件不能同时满足,报文不进行隧道封装,直接进行转发。
[0092] 为了能够满足正常业务报文的转发流程,结合本发明实施例,还存在一种优选的实现方案,具体的,若所述第二更新报文不遵循CFM的报文格式或所述第二更新报文带有禁止编辑计数戳标识,所述第二更新报文不进行封装隧道,由所述第一输出端口发出。
[0093] 本实施例一中,若第二更新报文不遵循CFM的报文格式或所述第二更新报文带有禁止编辑计数戳标识,由第一输出端口发出,属于正常转发流程。若第二更新报文同时满足是CFM报文格式且未带有禁止编辑计数戳标识,则转发芯片对其进行解析,FPGA端口对其进行编辑。
[0094] 为了能够满足正常业务报文或CFM报文的转发流程,结合本发明实施例,还存在一种优选的实现方案,具体的,所述第二设备的第二输出端口接收业务报文或已完成封装隧道的第一设备报文。
[0095] 本实施例一中,第二设备的第二输出端口接收业务报文后,由第二设备的第二输入端口发出,不进行丢包检测。第二设备的第二输出端口接收已完成封装隧道的第一设备报文后,第二设备的转发芯片对第一设备报文进行解析,第二设备的FPGA端口对第一设备报文进行编辑,便于后期进行第一设备和第二设备之间的丢包检测。
[0096] 为了对第一设备和第二设备之间进行丢包检测,结合本发明实施例,还存在一种优选的实现方案,具体的,所述第二设备的FPGA端口对所述第三更新报文中的计数戳进行更新,得到第二设备报文,具体方法包括:
[0097] 所述第二设备的FPGA端口解析所述第三更新报文;
[0098] 将所述第三更新报文的收包计数值填到所述第三更新报文的计数戳RxFcb中;
[0099] 所述第二设备的FPGA端口将所述第三更新报文的计数戳TxFcf的值复制填写到计数戳TxFcb中,同时将计数戳TxFcf的值归为0,得到第二设备报文。
[0100] 本实施例一中,第二设备的FPGA端口将第二设备报文转发回第二设备的转发芯片,第二设备的转发芯片再将第二设备报文发送至第二设备的第二输出端口,第二设备的第二输出端口继续将第二设备报文发送至第一设备,第一设备和第二设备分别收到对端发来的携带计数信息的报文,通过比较最近的两次报文数据,即可进行第一设备和第二设备丢包度量。
[0101] 为了方便进行第一设备和第二设备之间的丢包检测,结合本发明实施例,还存在一种优选的实现方案,具体的,分别计算所述第一设备报文和第二设备报文的帧丢失量,进行第一设备与第二设备的丢包检测:
[0102] 若帧丢失量均为0,第一设备和第二设备未发生丢包现象;
[0103] 若帧丢失量不等于0,第一设备和/或第二设备发生丢包现象,发送告警指令。
[0104] 本实施例一中,各个设备的帧丢失计算公式如下所示:
[0105] 第一设备帧丢失=|TxFCf[tc]‑TxFCb[tp]|‑|RxFCI[tc]‑RxFCI[tp]|[0106] 第二设备帧丢失=|TxFCb[tc]‑TxFCb[tp]|‑|RxFCb[tc]‑RxFCb[tp]|[0107] TxFCf[tc]、RxFCb[tc]和TxFCb[tc]分别表示当前设备收到对端发来的报文中计数戳的TxFCf、RxFCb和TxFCb值,RxFCI[tc]表示收到该报文时,当前设备本地存储计数戳的RxFCI中的计数值,tc表示收到该报文的当前时间。
[0108] TxFCf[tp]、RxFCb[tp]和TxFCb[tp]分别表示当前设备收到上一个对端发来的报文中的TxFCf、RxFCb和TxFCb值,RxFCI[tp]表示收到上一个报文时,当前设备本地存储计数戳的RxFCI中的计数值,tp表示收到上一个的报文的时间。
[0109] RxFCI表示记录当前设备从对端设备接收的报文数;TxFCI表示记录当前设备向对端设备发送的报文数。
[0110] 若第一设备帧丢失量和第二设备帧丢失量均为0,第一设备和第二设备未发生丢包现象;
[0111] 若第一设备帧丢失量和第二设备帧丢失量均不为0,第一设备和第二设备发生丢包现象,发送告警指令;
[0112] 若第一设备帧丢失量和第二设备帧丢失量中有一个不为0,第一设备或第二设备发生丢包现象,发生帧丢失的设备发送告警指令。
[0113] 实施例二:
[0114] 如图2所示,第一设备上生成CFM报文的方法包括以下步骤,本实施例二以一种示例性的场景阐述实施例一中报文的生成方法,第一设备上,选用UNI端口作为第一设备的第一输入端口,NNI端口作为第一设备的第一输出端口,先按虚线箭头更新第一报文,再按实线箭头生成第一设备报文。
[0115] S201:FPGA组装报文,将报文发送给转发芯片的输出端口。
[0116] 本实施例二中,第一设备的FPGA端口按照CFM报文格式组装第一报文,将第一报文发送给转发芯片,第一报文默认为CFM报文格式,CFM报文格式如图4所示。将第一报文中计数戳的TxFCf、RxFCb、TxFCb值分别初始化为0。
[0117] CFM报文格式中字段说明:
[0118] TxFcf:当前设备向对端设备发送的报文数;
[0119] RxFcb:当前设备从对端设备接收的报文数;
[0120] TxFcb:上一个从对端设备发来的TxFcf计数值。
[0121] S202:依据报文入端口是否为FPGA端口并且报文格式是否为CFM格式判断是否将报文封装隧道。
[0122] 若报文入端口是FPGA端口并且报文格式是CFM格式,对报文不进行隧道封装,执行S203,若报文入端口不是FPGA端口或报文格式不是CFM格式,对报文进行隧道封装,执行S208。
[0123] 本实施例二中,第一报文的入端口是FPGA端口并且报文格式是CFM格式,因此执行S203。
[0124] S203:隧道不封装。
[0125] S204:判断报文是否是CFM报文且是否需要编辑计数戳。
[0126] 若报文是CFM格式报文且未带有禁止编辑计数戳标识,对报文进行解析和编辑,执行S205,若报文不是CFM格式报文或带有禁止编辑计数戳标识,不对报文进行操作,由NNI端口发出,执行S210。
[0127] 本实施例二中,第一报文是CFM格式报文且未带有禁止编辑计数戳标识,因此执行S205。
[0128] S205:转发芯片解析CFM报文,将统计到目标端口发出的业务报文数填到报文TxFcf字段中。
[0129] 本实施例二中,第一设备的转发芯片统计第一输出端口的第一发包计数值,并将第一发包计数值填入第一报文的计数戳中,得到第一更新报文。
[0130] S206:将报文转发回UNI端口同时加上禁止编辑计数戳标识。
[0131] 本实施例二中,在第一更新报文中添加禁止编辑计数戳标识,得到第二更新报文,将第二更新报文转发到第一设备的第一输入端口。
[0132] S207:UNI端口接收。
[0133] 本实施例二中,UNI端口接收第二更新报文。再进行S202判断。
[0134] S202:依据报文入端口是否为FPGA端口并且报文格式是否为CFM格式判断是否将报文封装隧道。
[0135] 本实施例二中,第二更新报文的入端口是UNI端口,并不是FPGA端口,因此执行S208。
[0136] S208:查业务转发表项。
[0137] 本实施例二中,第一设备的FPGA查询第二更新报文的业务转发表项,查询第二更新报文的隧道信息后,执行S209。
[0138] S209:隧道封装。
[0139] 本实施例二中,对第二更新报文进行隧道封装后,再进行S204的判断。
[0140] S204:判断报文是否是CFM报文且是否需要编辑计数戳。
[0141] 本实施例二中,第二更新报文是CFM报文且带有禁止编辑计数戳的标识,因此执行S210。
[0142] S210:NNI端口发出。
[0143] 本实施例二中,NNI端口发出的是第一设备报文。第一设备报文由NNI端口发出后,第二设备的第二输出端口接收第一设备报文。
[0144] 如图5所示,第一设备发送CFM报文转发走向:
[0145] 1:ETH+OAMPDU(TxFcf=0,RxFcb=0,TxFcb=0)
[0146] 2:ETH+OAMPDU(updateTxFcf,RxFcb=0,TxFcb=0)
[0147] 3:TUNNEL+ETH+OAMPDU(TxFcf=TxFCl[1],RxFcb=0,TxFcb=0)
[0148] 第一设备的转发芯片统计第一输出端口的第一发包计数值为TxFCl[1],TUNNEL代指报文中的隧道信息。
[0149] 第二设备上,选用UNI端口作为第二设备的第二输入端口,NNI端口作为第二设备的第二输出端口。如图3所示,第二设备上接收第一设备报文生成第二设备的报文方法包括以下步骤:
[0150] S301:第二设备的NNI端口接收。
[0151] S302:查业务转发表项,终结隧道信息。
[0152] S303:判断是否是CFM报文。
[0153] S304:第二设备的UNI端口发出。
[0154] S305:转发芯片解析业务收包计数值填到报文头部后转发到FPGA。
[0155] S306:FPGA解析报文头部,收包计数值填到CFM报文的RxFCb中
[0156] S307:FPGA继续编辑报文,将TxFcf的值复制填写到TxFcb中同时将TxFcf的值置为0接着将报文再转发回转发芯。
[0157] 如图6所示,第二设备接收与发送CFM报文转发走向:
[0158] 1:TUNNEL+ETH+OAMPDU(TxFcf=TxFCl[1],RxFcb=0,TxFcb=0)
[0159] 2:ETH+OAMPDU(TxFcf=TxFCl[1],updateRxFcb,updateTxFcb)
[0160] 3:ETH+OAMPDU(TxFcf=0,RxFcb=RxFCI[2],TxFcb=TxFCl[1])
[0161] 4:ETH+OAMPDU(updateTxFcf,RxFcb=RxFCI[2],TxFcb=TxFCl[1])[0162] 5:TUNNEL+ETH+OAMPDU(TxFcf=TxFCl[2],RxFcb=RxFCI[2],TxFcb=TxFCl[1])[0163] 第二设备的转发芯片统计第二输出端口的发包计数值为TxFCl[2]。
[0164] 第二设备的转发芯片统计第二输入端口的收包计数值为RxFCI[2]。
[0165] 第一设备帧丢失=|TxFCf[tc]‑TxFCb[tp]|‑|RxFCI[tc]‑RxFCI[tp]|[0166] 第二设备帧丢失=|TxFCb[tc]‑TxFCb[tp]|‑|RxFCb[tc]‑RxFCb[tp]|[0167] 若第一设备帧丢失量和第二设备帧丢失量均为0,第一设备和第二设备未发生丢包现象;
[0168] 若第一设备帧丢失量和第二设备帧丢失量均不为0,第一设备和第二设备发生丢包现象,发送告警指令;
[0169] 若第一设备帧丢失量和第二设备帧丢失量中有一个不为0,第一设备或第二设备发生丢包现象,发生帧丢失的设备发送告警指令。
[0170] 实施例三:
[0171] 如图7所示,是本发明实施例三中提供的一种报文生成装置示意图。本实施例的一种报文生成装置包括一个或多个处理器21以及存储器22。其中,图7中以一个处理器21为例。
[0172] 处理器21和存储器22可以通过总线或者其他方式连接,图7中以通过总线连接为例。
[0173] 存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例一中的报文生成方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行报文生成方法。
[0174] 存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0175] 所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例一中的报文生成方法,例如,执行以上描述的图1至图3所示的各个步骤。
[0176] 值得说明的是,上述装置和兼容性检查系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0177] 本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
[0178] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。