一种剥离可变长GRE头部的方法及装置制造方法及图纸

技术编号:24333955 阅读:51 留言:0更新日期:2020-05-29 21:15
本发明专利技术揭示了一种剥离可变长GRE头部的方法及装置,方法包括:接收报文并匹配出GRE报文;根据所述GRE报文获取基础偏移值,及GRE头部中前半个字节内1的数量;根据GRE头部中前半个字节内1的数量计算获得调整偏移值;根据基础偏移值和调整偏移值,获得剥离GRE头部的长度并对根据该长度对GRE头部进行剥离。本发明专利技术能够对可变长GRE头部的报文进行处理,且在不增加报文转发延时的同时节约芯片表项资源。

A method and device for stripping variable length GRE head

【技术实现步骤摘要】
一种剥离可变长GRE头部的方法及装置
本专利技术涉及网络通信
,尤其是涉及一种剥离可变长GRE头部的方法及装置。
技术介绍
GRE(GenericRoutingEncapsulation,通用路由封装)协议可以对某些网络层协议(如IPX、ATM、IPv6等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输。图1所示为GRE报文格式,其中,GRE头部(GREHeader)包括多个字段,如C字段、K字段、S字段,即Checksum(校验和)字段、Reserved1(保留)字段、Key(关键字)字段和序列号(Sequencenumber)字段,并且Checksum字段和Reserved1字段同步存在,其中,C/K/S字段分别标示GRE头部中是否携带Checksum字段、Key字段和Sequencenumber字段,当C/K/S置1时,标示GRE头部中携带相应字段,如当K字段置1时,GRE头部中携带Key字段。由于Checksum字段、Key字段和Sequencenumber字段是可选择地,因此,GRE头部的长度可变,如当Checksum字段、Key字段和Sequencenumber字段均不存在时,GRE头部的最小长度为4字节,当均存在时,GRE头部最大长度为16字节。在传统的应用场景中,一条GRE隧道头部封装已由两端明确定义,也即GRE头部中是否携带Checksum字段、Key字段和Sequencenumber字段已经明确。但在TAP(TestAccessPoint,测试接入点)/NPB(NetworkPacketBroker,网络报文代理)应用场景中,由于组网的复杂性,无法预先约定所有网络设备使用相同长度的GRE头部,因此,NPB设备会接收到不同长度GRE头部的报文,也即接收携带Checksum字段/Key字段/Sequencenumber字段的报文。而NPB设备用于正确识别隧道报文封装格式,并准确的剔除隧道报文头部,并将原始数据报文转发给分析设备,传统的NPB设备仅支持以一种固定长度对GRE头部进行剥离,也即NPB设备的芯片表项一般不具备匹配GRE头部中详细特征字段,如C/K/S字段,仅能够根据协议类型0x47匹配GRE报文,进而输出剥离报文头部长度的固定偏移值,对于接收到的不同长度GRE头部的报文则无法准确处理。另外,一些NPB设备芯片支持UDF匹配,即一次查表:通过UDF匹配GRE头部的特征字段,如C/K/S字段,输出匹配的偏移值,用于下一次查表匹配;二次查表:根据协议类型0x47匹配GRE报文及根据UDF输出的偏移值匹配具体字段,进而输出剥离报文头部长度的正确固定偏移值,但此种方案存在如下缺点:(1)两次查表会增加报文转发时间,使报文延时转发;(2)由于UDF匹配需要精确匹配每个字段,对于GRE头部而言,存在3个字段匹配,因此,需建立8条匹配规则,每个规则分别输出相应的偏移值,如UDP匹配GRE头部半字节值为0b0000时,表示未携带相应字段,因此,剥离GRE头部长度4字节;UDP匹配GRE头部半字节值为0b1000时,表示携带Checksum字段,因此,剥离GRE头部长度8字节,同理,UDP匹配GRE头部半字节值分别为0b0010、0b0001、0b0011、0b1001、0b1010、0b1011时,剥离GRE头部长度分别为8、8、12、12、12、16字节。
技术实现思路
本专利技术的目的在于克服现有技术的缺陷,提供一种剥离可变长GRE头部的方法,能够对可变长GRE头部的报文进行处理,且在不增加报文转发延时的同时节约芯片表项资源。为实现上述目的,本专利技术提出如下技术方案:一种剥离可变长GRE头部的方法,包括如下步骤:步骤S100,接收报文并匹配出GRE报文;步骤S200,根据所述GRE报文获取基础偏移值,及GRE头部中前半个字节内1的数量,所述基础偏移值为所述GRE报文中传输头部的长度;步骤S300,根据所述GRE头部中前半个字节内1的数量计算获得调整偏移值;步骤S400,根据所述基础偏移值和调整偏移值,获得剥离GRE头部的长度并进一步对GRE头部进行剥离。优选地,在步骤S100中,根据协议类型0x47匹配出GRE报文。优选地,在步骤S300中,根据如下公式计算获得调整偏移值:4+N×4,其中,N为GRE头部中前半个字节内1的数量,且N大于等于0,小于等于3。优选地,所述GRE头部的前半字节中,第二个比特位的值为0。本专利技术还揭示了一种剥离可变长GRE头部的装置,包括匹配模块,用于接收报文并匹配出GRE报文;获取模块,用于根据所述GRE报文获取基础偏移值,及GRE头中前半个字节内1的数量,所述基础偏移值为GRE报文中传输头部的长度;计算模块,用于根据GRE头部中前半个字节内1的数量计算获得调整偏移值;剥离模块,用于根据基础偏移值和调整偏移值,获得剥离GRE头部的长度并进一步对GRE头部进行剥离。优选地,所述匹配模块根据协议类型0x47匹配出GRE报文。优选地,所述计算模块根据如下公式计算获得调整偏移值:4+N×4,其中,N为GRE头部中前半个字节内1的数量,且N大于等于0,小于等于3。优选地,所述GRE头部中前半个字节内的第二比特位的值为0。本专利技术的有益效果是:(1)本专利技术的灵活偏移调整逻辑,也即灵活的计算调整偏移值,在对可变长GRE头部的报文进行处理时,可有效节约芯片表项资源,仅需配置一条芯片表项即可;(2)由于报文进入芯片在匹配过程中即可获得解析结果,查表和灵活偏移调整逻辑可并行处理,因而不会增加报文的转发延时。附图说明图1是GRE报文结构示意图;图2是本专利技术的方法流程图示意图;图3是本专利技术的装置结构框图示意图。具体实施方式下面将结合本专利技术的附图,对本专利技术实施例的技术方案进行清楚、完整的描述。本专利技术所揭示的一种剥离可变长GRE头部的方法,能够对可变长GRE头部的报文进行处理,并在不增加报文转发延时的同时节约芯片表项资源。结合图1和图2所示,本专利技术所揭示的一种剥离可变长GRE头部的方法,包括如下步骤:步骤S100,接收报文并匹配出GRE报文;具体地,芯片可接收并能处理多种报文,当芯片接收到报文后首先匹配出GRE报文,实施时,芯片对接收到的报文进行解析,并根据协议类型0x47匹配出GRE报文,如图1所示,对于GRE报文,在传输头部(DeliveryHeader)头部中携带的协议类型为0x47,因此,可根据协议类型是否为0x47进行报文的匹配。步骤S200,根据所述GRE报文获取基础偏移值,及GRE头部中前半个字节内1的数量,所述基础偏移值为所述GRE报文中传输头部的长度;具体地,当匹配出GRE报文后,获取所述GRE报文中传输头部(DeliveryHeader)的长度,也即隧道所处网络本文档来自技高网
...

【技术保护点】
1.一种剥离可变长GRE头部的方法,其特征在于,包括如下步骤:/n步骤S100,接收报文并匹配出GRE报文;/n步骤S200,根据所述GRE报文获取基础偏移值,及GRE头部中前半个字节内1的数量,所述基础偏移值为所述GRE报文中传输头部的长度;/n步骤S300,根据所述GRE头部中前半个字节内1的数量计算获得调整偏移值;/n步骤S400,根据所述基础偏移值和调整偏移值,获得剥离GRE头部的长度并进一步对GRE头部进行剥离。/n

【技术特征摘要】
1.一种剥离可变长GRE头部的方法,其特征在于,包括如下步骤:
步骤S100,接收报文并匹配出GRE报文;
步骤S200,根据所述GRE报文获取基础偏移值,及GRE头部中前半个字节内1的数量,所述基础偏移值为所述GRE报文中传输头部的长度;
步骤S300,根据所述GRE头部中前半个字节内1的数量计算获得调整偏移值;
步骤S400,根据所述基础偏移值和调整偏移值,获得剥离GRE头部的长度并进一步对GRE头部进行剥离。


2.根据权利要求1所述的方法,其特征在于,在步骤S100中,根据协议类型0x47匹配出GRE报文。


3.根据权利要求1所述的方法,其特征在于,在步骤S300中,根据如下公式计算获得调整偏移值:
4+N×4,
其中,N为GRE头部中前半个字节内1的数量,且N大于等于0,小于等于3。


4.根据权利要求1所述的方法,其特征在于,所述GRE头部的前半字节中,第二个比特位的值...

【专利技术属性】
技术研发人员:杨鹤志龚海东余兆国
申请(专利权)人:盛科网络苏州有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1