一种伪线场景下协议报文保护方法、装置及系统技术领域
本发明涉及网络通信技术,尤其涉及一种伪线(PW,Pseudo Wire)场景下
协议报文保护方法、装置及系统。
背景技术
数据通信设备在进行协议报文交互时,宿端设备会将接收到的协议报文,
发送到宿端设备的中央处理器(CPU,Central Processing Unit)进行处理。由于
该CPU的处理能力有限,如果该CPU在一定时间内接收到大量的其他报文,
例如,在受到网络攻击时,宿端设备会在一定时间内接收到大量的攻击报文,
然后,宿端设备会将这些攻击报文发送到CPU,这样会影响CPU对协议报文
的处理,甚至出现协议报文的丢失。
分组传送网(PTN,Packet Transport Network)设备通常需要工作在虚拟专
用网(VPN,Virtual Private Network)中。在一些网络中,例如,基于多协议
标签交换(MPLS,Multiple protocol Label Switching)的VPN中,可利用MPLS
标签来封装协议报文,即将协议报文封装在MPLS标签中,然后,用另一类报
文封装上述封装有协议报文的MPLS标签(这里,将这类封装有MPLS标签的
报文统称为MPLS标签报文),然后,在网络中及网络设备间传输这种MPLS
标签报文,并且利用宿端设备的CPU处理这种MPLS标签报文。
协议报文的报文类型可按照报文格式中的报头来划分,例如在开放式最短
路径优先(OSPF)协议的报文格式中,根据报头的Type(类型)字段,可将
OSPF协议下的协议报文划分为如下的五种类型:Hello(呼叫)报文、DD(数
据库描述)报文、LSR(链路状态请求)报文、LSU(链路状态更新)报文和
LSACK(链路状态确认)报文;正常的报文处理方法中,提供了协议保护限速
机制,即:限制在报文传输通道中单位时间内传输的报文的数量。但是,由于
MPLS标签报文没有在其标签中封装协议报文的报文类型,因此,正常的基于
MPLS标签报文的协议报文处理方法,在MPLS标签报文的处理过程中,不同
类型的MPLS标签报文会互相干扰,进而影响所述CPU对所述MPLS标签报
文的处理,甚至还会出现MPLS标签报文丢失的问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种伪线场景下协议报文保护方法、
装置及系统,减少不同类型的MPLS标签报文之间的互相干扰,进而防止MPLS
标签报文的丢失。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种伪线场景下协议报文保护方法,所述方法包括:
宿端设备接收到封装有协议报文的协议类型的MPLS标签报文后,对所述
MPLS标签报文进行解析,获得所述协议报文的报文类型,并根据所述报文类
型对所述MPLS标签报文进行协议保护限速。
优选地,将所述协议报文的协议类型封装在所述MPLS标签报文中的过程
包括:设置所述MPLS标签报文中伪线控制字的标记字段为与所述协议报文对
应的协议类型编码值。
优选地,所述宿端设备通过解析获得所述协议报文的报文类型的过程具体
包括:
所述宿端设备根据所述MPLS标签报文中伪线控制字的标记字段得到所述
协议报文的协议类型,并根据所述协议类型对所述协议报文的报头进行进一步
解析,得到所述协议报文的报文类型。
优选地,所述协议保护限速的过程具体包括:宿端设备将所述MPLS标签
报文按照所述MPLS标签报文中的协议报文的报文类型进行分类,为每一类
MPLS标签报文都使用单独的限速通道进行协议保护限速。
优选地,使用令牌桶算法进行所述协议保护限速操作。
本发明还提供了一种伪线场景下协议报文保护宿端设备,所述宿端设备包
括:报文接收模块和协议保护模块;其中,
所述报文接收模块,用于接收所述MPLS标签报文,并将所述MPLS标签
报文转发到所述协议保护模块;
所述协议保护模块,用于对所述MPLS标签报文进行解析,获得所述协议
报文的报文类型,并根据所述报文类型对所述MPLS标签报文进行协议保护限
速。
优选地,所述协议保护模块,具体用于:解析伪线控制字的Flags字段值,
并根据记录在宿端设备的通过预先设定或者经过协商获得的协议报文的协议类
型编码值对所述Flags字段值进行反向计算,获得协议报文的协议类型,根据
所述协议类型对所述MPLS标签报文的报头进行进一步解析,获得所述协议报
文的报文类型。
本发明还提供了一种伪线场景下协议报文保护源端设备,所述源端设备包
括:第二协议模块、报文封装模块和报文发送模块;其中,
所述第二协议模块,用于构造协议报文,并将所述协议报文发送到所述报
文封装模块;
所述报文封装模块,用于将所述协议报文和所述协议报文的协议类型封装
在MPLS标签报文中,并将所述MPLS标签报文发送到报文发送模块;
所述报文发送模块,用于将所述MPLS标签报文转发到所述宿端设备。
优选地,所述报文封装模块具体用于:用协议报文的协议类型编码值设置
所述MPLS标签报文中伪线控制字的标记字段,并将所述协议报文封装在所述
MPLS标签报文中,然后将封装后的MPLS标签报文发送给所述报文发送模块。
本发明还提供了一种伪线场景下协议报文保护系统,所述系统包括:源端
设备和宿端设备;其中,
源端设备,用于将所述协议报文和所述协议报文的协议类型封装在MPLS
标签报文中,并将封装后的MPLS标签报文发送给宿端设备;
宿端设备,用于接收封装有协议报文的协议类型的MPLS标签报文,对所
述MPLS标签报文进行解析,获得所述协议报文的报文类型,并根据所述报文
类型对所述MPLS标签报文进行协议保护限速。
本发明提供的伪线场景下协议报文保护方法、装置及系统,利用MPLS标
签报文的伪线控制字封装协议报文的协议类型,使宿端设备在接收到所述
MPLS标签报文后,可通过解析获得协议报文的协议类型,并通过进一步解析
得到协议报文的报文类型,然后,根据所述报文类型对所述MPLS标签报文进
行协议保护限速,所述方法、装置及系统减少或避免了不同类型的MPLS标签
报文之间的互相干扰,进而防止MPLS标签报文的丢失。
附图说明
图1为根据本发明伪线场景下协议报文保护方法的流程示意图;
图2为根据本发明伪线场景下协议报文保护系统的示意图;
图3为根据本发明实施例对协议报文进行封装、收发和协议保护的系统示
意图。
具体实施方式
本发明的基本思想是:宿端设备接收到封装有协议报文协议类型的MPLS
标签报文后,对所述MPLS标签报文进行解析,获得所述协议报文的报文类型,
并根据所述报文类型对所述MPLS标签报文进行协议保护限速。
图1为根据本发明伪线场景下协议报文保护方法的流程示意图,如图1所
示,所述流程包括如下的步骤:
步骤101:源端设备判断自身是否开启了伪线控制字功能,如果所述源端
设备开启了伪线控制字功能,则源端设备将协议报文和该协议报文的协议类型
封装在MPLS标签报文中,并进行接下来的步骤,如果所述源端设备没有开启
伪线控制字功能,则按照正常的协议报文发送和接收流程进行处理;
其中,所述伪线控制字是MPLS标签报文中的数据包,在相关标准中,例
如RFC4385中规定,伪线控制字占4个字节;在本发明中,可利用伪线控制字
的标记(Flags)字段,即:伪线控制字的第4-7位,封装协议报文的协议类型,
具体的过程包括:源端设备将预先设定或者经过协商获得的协议报文的协议类
型编码值填入所述Flags字段中,例如,用二进制的“0001”编码值代表协议
报文的协议类型为IP(互联网协议)报文,或用二进制的“0010”编码值代表
协议报文的协议类型为UDP(用户数据报协议)报文,等等。
步骤102:源端设备将封装后的MPLS标签报文发送到宿端设备。
步骤103:宿端设备接收到所述MPLS标签报文后,判断宿端设备自身是
否开启了伪线控制字功能,如果所述宿端设备开启了伪线控制字功能,则执行
步骤104,如果所述宿端设备没有开启伪线控制字功能,则按照正常的协议报
文发送和接收流程进行处理。
步骤104:所述宿端设备对所述MPLS标签报文进行解析,获得所述协议
报文的报文类型,所述过程具体包括:所述宿端设备判断所述MPLS标签报文
是否封装有伪线控制字,如果所述MPLS标签报文没有封装伪线控制字,则将
所述MPLS标签报文划分为未知报文类型的MPLS标签报文并进行步骤105,
如果所述MPLS标签报文封装有伪线控制字,则解析所述伪线控制字的Flags
字段值,并根据记录在宿端设备的通过预先设定或者经过协商获得的协议报文
的协议类型编码值对所述Flags字段值进行反向计算,获得协议报文的协议类
型,此时,如果获得的协议类型不是已知的类型,即,在宿端设备中没有记录
与解析出的协议类型相对应的协议类型,则将所述MPLS标签报文划分为未知
报文类型的MPLS标签报文,并进行步骤105;然后,根据所述协议类型对所
述MPLS标签报文的报头进行进一步解析,获得所述协议报文的报文类型,同
样,如果通过上述的进一步解析过程获得的协议报文的报文类型不是已知的类
型,即,在宿端设备中没有记录与解析出的报文类型相对应的报文类型,则同
样将这个MPLS标签报文划分为未知报文类型的MPLS标签报文。
步骤105:所述宿端设备,按照解析出的报文类型,对所述MPLS标签报
文进行协议保护限速,从而将所述MPLS标签报文发送给宿端设备的CPU进行
进一步处理,例如获得协议报文的内容并根据所述协议报文的内容进行相应的
处理等;
其中,对所述MPLS标签报文进行协议保护限速的过程具体包括:将所述
MPLS标签报文进行分类,将封装有相同报文类型的MPLS标签报文划分为一
类,并为每一类MPLS标签报文都提供单独的限速通道并进行协议保护限速,
例如,使用令牌桶算法进行协议保护限速,并规定在一个限速通道中,每秒钟
最多允许100条报文通过这个限速通道;这里需要说明的是,在上述分类过程
中,对于未知报文类型的MPLS标签报文,也需要将其划分为一类MPLS标签
报文,并且在协议保护限速的过程中也要为其分配一个限速通道。
图2为根据本发明伪线场景下协议报文保护系统的示意图,如图2所示,
所述系统包括:
源端设备,用于构造所述协议报文,将协议报文和所述协议报文的协议类
型封装在MPLS标签报文中,然后将所述MPLS标签报文发送到宿端设备;
所述宿端设备,用于接收所述MPLS标签报文,对所述MPLS标签报文进
行解析,获得所述协议报文的报文类型,并根据所述报文类型对所述MPLS标
签报文进行协议保护限速。
优选地,所述宿端设备包括:报文接收模块、协议保护模块以及第一协议
模块;其中,
所述报文接收模块,用于接收MPLS标签报文,并将所述MPLS标签报文
转发到所述协议保护模块;
所述协议保护模块,用于对所述MPLS标签报文进行解析,获得所述协议
报文的报文类型,并根据所述报文类型对所述MPLS标签报文进行协议保护限
速,并将所述MPLS标签报文上报给所述第一协议模块;
所述第一协议模块,用于对接收到的MPLS标签报文进行正常的协议报文
处理。
所述协议保护模块,具体用于:解析伪线控制字的Flags字段值,并根据
记录在宿端设备的通过预先设定或者经过协商获得的协议报文的协议类型编码
值对所述Flags字段值进行反向计算,获得协议报文的协议类型,根据所述协
议类型对所述MPLS标签报文的报头进行进一步解析,获得所述协议报文的报
文类型。
优选地,所述源端设备包括:第二协议模块、报文封装模块和报文发送模
块;其中,
所述第二协议模块,用于构造协议报文,并将所述协议报文发送到所述报
文封装模块;
所述报文封装模块,用于将所述协议报文和所述协议报文的协议类型封装
在MPLS标签报文中,并将所述MPLS标签报文发送到报文发送模块;
所述报文发送模块,用于将所述MPLS标签报文转发到所述宿端设备。
所述报文封装模块具体用于:用协议报文的协议类型编码值设置所述
MPLS标签报文中伪线控制字的标记字段,并将所述协议报文封装在所述MPLS
标签报文中,然后将封装后的MPLS标签报文发送给所述报文发送模块。
其中,所述源端设备封装协议报文及协议报文的协议类型的过程,以及所
述宿端设备对所述MPLS标签报文进行解析,从而获得报文类型并根据所述报
文类型进行协议保护限速的具体过程可参照上述步骤101至步骤105中的描述
来进行。
根据本发明的一个实施例,源端设备可包括:两台分布式交换机、两根串
口线、两根双绞线和一台包括两块网卡的计算机,其中,所述两台分布式交换
机中的每一台都包括一主控板和一块线卡板,在所述主控板和线卡板都包括协
议模块,所述线卡板包括报文封装模块、报文发送模块、报文接收模块、以及
协议保护模块。
图3为根据本发明实施例对协议报文进行封装、收发和协议保护的系统示
意图,如图3所示,源端设备包括:报文封装模块,报文发送模块,以及协议
子模块A1、A2和A3;宿端设备包括:报文接收模块,协议保护模块,以及协
议子模块B1、B2和B3。计算机的两块网卡通过两根双绞线分别与两台交换机
的管理口相连,计算机的两个串口通过两根串口线分别与这两台交换机的串口
相连(图3未示出)。其中,协议子模块A1、A2和A3,以及协议子模块B1、
B2和B3分别用于不同报文类型的MPLS标签报文的处理。对协议报文进行封
装、收发和协议保护的流程包括如下步骤:
步骤201:协议子模块A1构造协议报文,将协议报文构造完成消息发送给
主控板,并将协议报文内容和协议报文的协议类型发送到线卡板;
步骤202:线卡板上的报文封装模块将协议报文封装到MPLS标签报文中,
并判断源端设备是否开启了伪线控制字功能,如果开启了伪线控制字功能,则
根据所述预先设定的或者经过协商获得的协议报文的协议类型编码值(这里,
本次协议报文封装使用编码值“0001”代表IP报文)将编码值“0001”设置在
所述MPLS标签报文伪线控制字的Flags字段中,并将所述MPLS标签报文发
送到报文发送模块,如果没有开启伪线控制字功能,则所述线卡板直接通过报
文发送模块将所述封装后的MPLS标签报文发送给报文发送模块;
步骤203:所述报文发送模块将所述MPLS标签报文通过边缘到边缘伪线
仿真(PWE3,Pseudo-Wire Emulation Edge to Edge)协议转发给宿端设备;
步骤204:所述宿端设备线卡板上的报文接收模块接收到所述MPLS标签
报文,并将所述MPLS标签报文转发到协议保护模块;
步骤205:所述协议保护模块对所述MPLS标签报文进行解析,
具体地,判断所述MPLS标签报文是否封装有伪线控制字,如果所述MPLS
标签报文中封装有伪线控制字,则解析所述伪线控制字的Flags字段,并根据
记录在宿端设备的通过预先设定或者经过协商获得的协议报文的协议类型编码
值对所述Flags字段值进行反向计算,获得协议报文的协议类型,并进一步根
据所述MPLS标签报文的报头进行进一步解析,获得所述协议报文的报文类型,
如果所述MPLS标签报文中没有封装伪线控制字则将所述MPLS标签报文的报
文类型划分为未知类型;
步骤206:所述协议保护模块对MPLS标签报文中的协议报文进行进一步
解析,根据所述协议报文中的信息判断出需要将所述MPLS标签报文发送到协
议子模块B1;
步骤207:所述协议保护模块根据报文类型使用通向协议子模块B1的限速
通道对所述MPLS标签报文进行令牌桶限速,从而将所述MPLS标签报文发送
到协议子模块B1;
步骤208:所述协议子模块B1对所述MPLS标签报文进行正常的协议报文
处理。
综上所述,本发明提供的伪线场景下协议报文保护方法、装置及系统,利
用MPLS标签报文的伪线控制字封装协议报文的协议类型,从而宿端设备能够
解析出所述协议报文的报文类型,并根据所述报文类型对MPLS标签报文进行
协议保护限速,使得不同类型的MPLS标签报文之间互不干扰,进而解决了,
例如由于网络攻击或者其他报文量过大的原因而导致MPLS标签报文丢失的问
题。
以上所述,仅为本发明的较佳实施例而已,并非用于限制本发明,对于本
领域的技术人员来说,本发明可以有各种更改和变化。在不违背本发明精神实
质和原则的基础上,所做的各种修改、等同替换以及改进等,均在包含在本发
明的保护范围之内。