以太网报文替换编辑的方法及系统与流程

文档序号:11148022阅读:547来源:国知局
以太网报文替换编辑的方法及系统与制造工艺

本发明涉及网络通信领域,尤其涉及一种以太网报文替换编辑的方法及系统。



背景技术:

以太网交换芯片作为网络信息传递的重要节点,非常有利于网络信息的高速发展;以太网交换芯片将接收到的报文进行解析、路由,得到报文下一转发节点的信息,并按照网络协议将报文中的特定字段进行替换,最后将报文发送至下一转发节点。

标准以太网报文组成格式由二层头、三层头、四层头及负载四个部分组成;其中二层头、三层头、四层头统称为报文头;以太网报文按照其应用分成多种类型,每个类型的以太网报文对应二层头、三层头、四层头的内容以及长度都是不相同的,同时二层头、三层头、四层头都有各自最大限制长度,而且这三个部分长度之和也有最大限制长度;通常情况下,上述内容均可以通过芯片里面有逻辑来识别;例如:识别出每个报文的三层头,四层头在报文中的起始位置,分别以L3Offset和L4Offset来标识。

以太网交换芯片会根据报文类型,在将报文发送前,根据应用要求将报文头的某些特定字段进行替换,因此在以太网交换芯片设计中需要有逻辑来满足对报文进行替换编辑,在报文长度可变的情况下,高效的对报文进行替换。

通常情况下,所述替换编辑请求包括如下信息:指定替换部分的位置,替换字段的偏移量,以及替换内容;所述替换偏移量表示替换的可变范围,其可以根据需求具体设定,在此不做详细赘述。现在技术中,对报文替换编辑方法中,通常情况下,根据替换编辑请求的偏移量,采用穷举法将可能的字段均进行替换,最后挑出期望的结果;然而,由于针对报文的替换编辑请求又较多,导致响应每个替换编辑请求,均需要使用一次穷举法进行报文替换编辑操作。如此,传统的报文替换编辑操作需要消耗大量的逻辑资源,而且在后端实现时会产生布线拥塞,影响芯片的实现。



技术实现要素:

本发明的目的在于提供一种以太网报文替换编辑的方法及系统。

为实现上述目的之一,本发明一实施方式的以太网报文替换编辑的方法,所述方法包括:获取并解析转发的原始的以太网报文,所述以太网报文的组成格式包括报文头以及负载,所述报文头包括三层,依次为二层头、三层头、四层头;

依据所述以太网报文的应用类型,将所述以太网报文头分解为三个预估子部分,分别为第一预估子部分、第二预估子部分和第三预估子部分;

所述第一预估子部分包括至少包括二层头,所述第二预估子部分包括至少包括三层头,所述第三预估子部分包括至少包括四层头;

从各个所述预估子部分中临时抽离出其对应的有效子部分;所述有效子部分依次为:第一有效子部分、第二有效子部分以及第三有效子部分;

接收替换编辑请求,分别在所述三个预估子部分的基础上,对其对应的有效子部分进行替换编辑;所述替换编辑请求包括:指定替换部分的位置,替换字段的偏移量,以及替换内容;

在完成全部的替换编辑请求后,从各个经过替换编辑后的所述预估子部分中抽离出各自的有效子部分,并将三个有效子部分按照分解顺序重新拼装,形成替换编辑后的以太网报文。

作为本发明一实施方式的进一步改进,“依据所述以太网报文的应用类型,将所述以太网报文头分解为三个预估子部分”具体包括:

分别获取原始的以太网报文头中每层报文头的起始数据段,以及每层报文头对应的最大限制长度;

分别以每层报文头对应的起始数据段以及最大限制长度获取对应的预估子部分。

作为本发明一实施方式的进一步改进,“分别以每层报文头对应的起始数据段标识以及最大限制长度获取对应的预估子部分”具体包括:

获取的所述二层头的起始数据段为报文传递的第一个数据,最大限制长度为Length2,所述三层头的起始数据段为L3Offset,最大限制长度为Length3,所述四层头的起始数据段为L4Offset,最大限制长度为Length4;

则所述第一预估子部分的数据包括报文传递的第一个数据以及其之后Length2-1个数据,所述第二预估子部分的数据包括L3Offset以及其之后Length3-1个数据,所述第三预估子部分的数据包括L4Offset以及其之后Length4-1个数据。

作为本发明一实施方式的进一步改进,“从各个所述预估子部分中临时抽离出其对应的有效子部分”具体包括:

获取每层报文头对应的下一层报文头的起始数据段的地址,以及当前的以太网报文的报文头编辑的最大限制长度,根据其分别获得各个所述预估子部分对应的有效子部分的长度;

依据各个有效子部分的长度从所述预估子部分中抽离其对应的有效子部分。

作为本发明一实施方式的进一步改进,所述方法具体包括:

获取所述二层头的下一层报文头的起始数据段的地址为L3Offset的地址L3Offsetad,所述三层头的下一层报文头的起始数据段标识地址为L4Offset的地址L4Offsetad,当前的以太网报文的报文头编辑的最大限制长度Length all;

则所述第一有效子部分的长度为L2HdrLen=L3Offsetad-1,所述第二有效子部分的长度为L3HdrLen=L4Offsetad- L3Offsetad ,所述第三有效子部分的长度为L4HdrLen=Length all-L4Offsetad+1;

依据各个有效子部分的长度从所述预估子部分的第一个数据开始,依次抽离对应的有效数据形成各个有效子部分。

为实现上述目的之一,本发明一实施方式的以太网报文替换编辑的系统,所述系统包括:所述系统包括:

数据获取解析模块,用于获取并解析转发的原始的以太网报文,所述以太网报文的组成格式包括报文头以及负载,所述报文头包括三层,依次为二层头、三层头、四层头;

数据分解模块,用于依据所述以太网报文的应用类型,将所述以太网报文头分解为三个预估子部分,分别为第一预估子部分、第二预估子部分和第三预估子部分;

所述第一预估子部分包括至少包括二层头,所述第二预估子部分包括至少包括三层头,所述第三预估子部分包括至少包括四层头;

数据抽离模块,用于从各个所述预估子部分中临时抽离出其对应的有效子部分;所述有效子部分依次为:第一有效子部分、第二有效子部分以及第三有效子部分;

数据替换模块,用于接收替换编辑请求,分别在所述三个预估子部分的基础上,对其对应的有效子部分进行替换编辑;所述替换编辑请求包括:指定替换部分的位置,替换字段的偏移量,以及替换内容;

数据拼接模块,用于在完成全部的替换编辑请求后,从各个经过替换编辑后的所述预估子部分中抽离出各自的有效子部分,并将三个有效子部分按照分解顺序重新拼装,形成替换编辑后的以太网报文。

作为本发明一实施方式的进一步改进,所述数据分解模块具体用于:

分别获取原始的以太网报文头中每层报文头的起始数据段,以及每层报文头对应的最大限制长度;

分别以每层报文头对应的起始数据段以及最大限制长度获取对应的预估子部分。

作为本发明一实施方式的进一步改进,所述数据分解模块具体用于:

获取的所述二层头的起始数据段为报文传递的第一个数据,最大限制长度为Length2,所述三层头的起始数据段为L3Offset,最大限制长度为Length3,所述四层头的起始数据段为L4Offset,最大限制长度为Length4;

则所述第一预估子部分的数据包括报文传递的第一个数据以及其之后Length2-1个数据,所述第二预估子部分的数据包括L3Offset以及其之后Length3-1个数据,所述第三预估子部分的数据包括L4Offset以及其之后Length4-1个数据。

作为本发明一实施方式的进一步改进,所述数据抽离模块具体用于:

获取每层报文头对应的下一层报文头的起始数据段的地址,以及当前的以太网报文的报文头编辑的最大限制长度,根据其分别获得各个所述预估子部分对应的有效子部分的长度;

依据各个有效子部分的长度从所述预估子部分中抽离其对应的有效子部分。

作为本发明一实施方式的进一步改进,所述数据抽离模块具体用于:

获取所述二层头的下一层报文头的起始数据段的地址为L3Offset的地址L3Offsetad,所述三层头的下一层报文头的起始数据段标识地址为L4Offset的地址L4Offsetad,当前的以太网报文的报文头编辑的最大限制长度Length all;

则所述第一有效子部分的长度为L2HdrLen=L3Offsetad-1,所述第二有效子部分的长度为L3HdrLen=L4Offsetad- L3Offsetad ,所述第三有效子部分的长度为L4HdrLen=Length all-L4Offsetad+1;

依据各个有效子部分的长度从所述预估子部分的第一个数据开始,依次抽离对应的有效数据形成各个有效子部分。

与现有技术相比,本发明的有益效果是:本发明的以太网报文替换编辑的方法及系统,根据以太网报文的组成特点,将报文头临时分割为多个部分,以分别对每个部分做精准的替换编辑,最后,将经过替换编辑后的数据重新拼接,可以节省大量的芯片逻辑开销,避免后端出现布线拥塞,更能节省芯片的面积。

附图说明

图1是本发明一实施方式中以太网报文替换编辑的方法的流程图;

图2是本发明一实施方式中以太网报文替换编辑的系统的模块图;

图3A-3D是本发明一具体应用示例的结构示意图。

具体实施方式

以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。

如图1所示,在本发明的一实施方式中,以太网报文替换编辑的方法,包括:

S1、获取并解析转发的原始的以太网报文,所述以太网报文的组成格式包括报文头以及负载,所述报文头包括三层,依次为二层头、三层头、四层头。

进一步的,所述方法还包括:

S2、依据所述以太网报文的应用类型,将所述以太网报文头分解为三个预估子部分,分别为第一预估子部分、第二预估子部分和第三预估子部分;

所述第一预估子部分包括至少包括二层头;所述第二预估子部分包括至少包括三层头;所述第三预估子部分包括至少包括四层头;

所述以太网报文按照其应用分为多个类型,对应每个类型的以太网报文,其均具有二层头、三层头、四层头以及负载,对于每个类型的以太网报文,其区别在于,每层报文头以及负载的长度及内容会发生相应变化,在此不再详细赘述。

本发明一优选实施方式中,所述步骤S2具体包括:

分别获取原始的以太网报文头中每层报文头的起始数据段,以及每层报文头对应的最大限制长度;

分别以每层报文头对应的起始数据段以及最大限制长度获取对应的预估子部分;并将各个预估子部分分别作为实行替换编辑请求的基础。

相应的,获取的所述二层头的起始数据段为报文传递的第一个数据,最大限制长度为Length2,所述三层头的起始数据段为L3Offset,最大限制长度为Length3,所述四层头的起始数据段为L4Offset,最大限制长度为Length4;

则所述第一预估子部分的数据包括报文传递的第一个数据以及其之后Length2-1个数据;所述第二预估子部分的数据包括L3Offset以及其之后Length3-1个数据;所述第三预估子部分的数据包括L4Offset以及其之后Length4-1个数据。

结合图3A所示,为了方便理解,本发明一具体示例中,二层头、三层头以及四层头的最大限制长度依次为50字节、48字节、32字节;获取的三层头的起始数据段为L3Offset,所述四层头的起始数据段为L4Offset;

从当前传递的报文头中获取传递的第一个数据以及其之后的49个字节数据,组成50字节的第一预估子部分;

获取L3Offset以及其之后的47个字节数据,组成48字节的第二预估子部分;

获取L4Offset以及其之后的31个字节数据,组成32字节的第三预估子部分。

可以理解的是,所述报文中的各层报文头,其有效数值并不一定等于每层报文头的最大限制长度,其有效数值通常小于等于各层报文头的最大限制长度,如此,以第一预估子部分为例,当二层头的有效长度小于其最大限制长度时,所述第一预估子部分中还有可能包含三层头,或三层头+四层头的数据。

另外,需要说明的是,报文传递过程中,每次发送的报文所携带的信息大小均可能发生变化,但对于一固定类型,其每层报文头携带的最大长度,以及报文头的总长度一定,因此,在设计阶段,可以在芯片中设计一组缓存寄存器,用于存储各个预估子部分,而各个预估子部分被配置的空间大小与每层报文头携带的最大长度相同,在此不做详细赘述。

进一步的,为了更直接有效的对报文头的各层进行替换编辑处理,进一步的,所述方法还包括:

S3、从各个所述预估子部分中临时抽离出其对应的有效子部分;所述有效子部分依次为:第一有效子部分、第二有效子部分以及第三有效子部分;

本发明一优选实施方式中,所述步骤S3具体包括:

获取每层报文头对应的下一层报文头的起始数据段的地址,以及当前的以太网报文的报文头编辑的最大限制长度,根据其分别获得各个所述预估子部分对应的有效子部分的长度;

依据各个有效子部分的长度从所述预估子部分中抽离其对应的有效子部分。

相应的,所述二层头的下一层报文头的起始数据段的地址为L3Offset的地址Layer3Offsetad,所述三层头的下一层报文头的起始数据段标识地址为L4Offset的地址L4Offsetad,当前的以太网报文的报文头编辑的最大限制长度Length all;

则所述第一有效子部分的长度为L2HdrLen=L3Offsetad-1;

所述第二有效子部分的长度为L3HdrLen=L4Offsetad-1;

所述第三有效子部分的长度为L4HdrLen=Length all-L4Offsetad+1。

依据各个有效子部分的长度从所述预估子部分的第一个数据开始,依次抽离对应的有效数据形成各个有效子部分。

结合图3B所示,为了方便理解,本发明一具体示例中,本示例中,假设L3Offset的地址L3Offsetad为第41个字节, L4Offset的地址L4Offsetad为第73个字节,当前的以太网报文的报文头编辑的最大限制长度Length all为96个字节;

则,所述第一有效子部分的长度为L2HdrLen=L3Offsetad-1=41-1=40字节;

所述第二有效子部分的长度为L3HdrLen=L4Offsetad- L3Offsetad-1=73-41=32字节;

所述第三有效子部分的长度为L4HdrLen=Length all-L4Offsetad+1=96-73+1

=24字节。

相应的,所述第一有效子部分包括:报文传递的第一个数据以及其之后的39个字节数据,共40字节的有效数据;

所述第二有效子部分包括:第41个字节数据以及其之后的31个字节数据,共32字节的有效数据;

所述第三有效子部分包括:第73个字节数据以及其之后的23个字节数据,共24字节的有效数据。

进一步的,所述方法还包括:

S4、接收替换编辑请求,分别在所述三个预估子部分的基础上,对其对应的有效子部分进行替换编辑;

所述替换编辑请求包括:指定替换部分的位置,替换字段的偏移量,以及替换内容;所述替换偏移量表示替换的可变范围,其可以根据需求具体设定,在此不做详细赘述。

结合图3C所示,本发明一具体实施方式中,仅以其中的三层头替换编辑请求为例做具体介绍,该示例中,对于三层头的替换编辑请求为两个,分别对其第12字节和第16字节发送替换编辑请求;

相应的,如上所述,直接对第二有效子部分中的前32字节中查找做替换编辑请求的相应位置。具体的,从41个字节开始,向后查找第二有效子部分的第12字节,即对第52个字节完成替换编辑,以响应第一次发出的替换编辑请求;

进一步的,再次从41个字节开始,向后查找第二有效子部分的第16字节,即对第56个字节完成替换编辑,以响应第二次发出的替换编辑请求;

进一步的,所述方法还包括:

S5、在完成全部的替换编辑请求后,从各个经过替换编辑后的所述预估子部分中抽离出各自的有效子部分,并将三个有效子部分按照分解顺序重新拼装,形成替换编辑后的以太网报文。

从各个经过替换编辑后的所述预估子部分中抽离出各自的有效子部分的过程可以参照上述步骤S2、S3在此不再继续赘述,如上可知,同样以二层头为例 ,由于二层头的最大限制长度为50,因此,拼接逻辑仅需要实现1~50的穷举,即可以得到其对应的有效数据。

本发明优选实施方式中,按照从后向前的顺序进行拼接,即:

首先从经过替换编辑请求后的第二预估子部分中抽取其对应的第二有效子部分,将其拼接在第三有效子部分的数据前面;

之后再从经过替换编辑请求后的第一预估子部分中抽取其对应的第一有效子部分,将其拼接在第二有效子部分的数据前面;

继续上述示例,结合图3D所示,该具体示例中,首先从经过替换编辑后的各预估子部分中,抽离其对应的有效子部分数据,之后将第二有效子部分的32字节有效数据拼接至第三有效子部分前面,组成56字节的有效数据;最后将第一有效子部分的40字节有效数据拼接在上述56字节有效数据的前面形成96字节的新的以太网报文。

结合图3所示,本发明一实施方式中,所述以太网报文替换编辑的系统包括:数据获取解析模块100、数据分解模块200、数据抽离模块300、数据替换模块400以及数据拼接模块500。

数据获取解析模块100用于获取并解析转发的原始的以太网报文,所述以太网报文的组成格式包括报文头以及负载,所述报文头包括三层,依次为二层头、三层头、四层头。

数据分解模块200用于依据所述以太网报文的应用类型,将所述以太网报文头分解为三个预估子部分,分别为第一预估子部分、第二预估子部分和第三预估子部分;

所述第一预估子部分包括至少包括二层头;所述第二预估子部分包括至少包括三层头;所述第三预估子部分包括至少包括四层头;

所述以太网报文按照其应用分为多个类型,对应每个类型的以太网报文,其均具有二层头、三层头、四层头以及负载,对于每个类型的以太网报文,其区别在于,每层报文头以及负载的长度及内容会发生相应变化,在此不再详细赘述。

本发明一优选实施方式中,所述数据分解模块200具体用于:分别获取原始的以太网报文头中每层报文头的起始数据段,以及每层报文头对应的最大限制长度;

分别以每层报文头对应的起始数据段以及最大限制长度获取对应的预估子部分;并将各个预估子部分分别作为实行替换编辑请求的基础。

相应的,获取的所述二层头的起始数据段为报文传递的第一个数据,最大限制长度为Length2,所述三层头的起始数据段为L3Offset,最大限制长度为Length3,所述四层头的起始数据段为L4Offset,最大限制长度为Length4;

则所述第一预估子部分的数据包括报文传递的第一个数据以及其之后Length2-1个数据;所述第二预估子部分的数据包括L3Offset以及其之后Length3-1个数据;所述第三预估子部分的数据包括L4Offset以及其之后Length4-1个数据。

可以理解的是,所述报文中的各层报文头,其有效数值并不一定等于每层报文头的最大限制长度,其有效数值通常小于等于各层报文头的最大限制长度,如此,以第一预估子部分为例,当二层头的有效长度小于其最大限制长度时,所述第一预估子部分中还有可能包含三层头,或三层头+四层头的数据。

另外,需要说明的是,报文传递过程中,每次发送的报文所携带的信息大小均可能发生变化,但对于一固定类型,其每层报文头携带的最大长度,以及报文头的总长度一定,因此,在设计阶段,可以在芯片中设计一组缓存寄存器,用于存储各个预估子部分,而各个预估子部分被配置的空间大小与每层报文头携带的最大长度相同,在此不做详细赘述。

进一步的,为了更直接有效的对报文头的各层进行替换编辑处理,数据抽离模块300用于从各个所述预估子部分中临时抽离出其对应的有效子部分;所述有效子部分依次为:第一有效子部分、第二有效子部分以及第三有效子部分;

本发明一优选实施方式中,数据抽离模块300具体用于:获取每层报文头对应的下一层报文头的起始数据段的地址,以及当前的以太网报文的报文头编辑的最大限制长度,根据其分别获得各个所述预估子部分对应的有效子部分的长度;

依据各个有效子部分的长度从所述预估子部分中抽离其对应的有效子部分。

相应的,所述二层头的下一层报文头的起始数据段的地址为L3Offset的地址Layer3Offsetad,所述三层头的下一层报文头的起始数据段标识地址为L4Offset的地址L4Offsetad,当前的以太网报文的报文头编辑的最大限制长度Length all;

则所述第一有效子部分的长度为L2HdrLen=L3Offsetad-1;

所述第二有效子部分的长度为L3HdrLen=L4Offsetad-1;

所述第三有效子部分的长度为L4HdrLen=Length all-L4Offsetad+1。

依据各个有效子部分的长度从所述预估子部分的第一个数据开始,依次抽离对应的有效数据形成各个有效子部分。

数据替换模块400用于:接收替换编辑请求,分别在所述三个预估子部分的基础上,对其对应的有效子部分进行替换编辑;

所述替换编辑请求包括:指定替换部分的位置,替换字段的偏移量,以及替换内容;所述替换偏移量表示替换的可变范围,其可以根据需求具体设定,在此不做详细赘述。

数据拼接模块500用于:在完成全部的替换编辑请求后,从各个经过替换编辑后的所述预估子部分中抽离出各自的有效子部分,并将三个有效子部分按照分解顺序重新拼装,形成替换编辑后的以太网报文。

从各个经过替换编辑后的所述预估子部分中抽离出各自的有效子部分的过程可以参照上述过程,在此不再继续赘述,如上可知,同样以二层头为例 ,由于二层头的最大限制长度为50,因此,拼接逻辑仅需要实现1~50的穷举,即可以得到其对应的有效数据。

本发明优选实施方式中,数据拼接模块500按照从后向前的顺序进行拼接,即:

首先从经过替换编辑请求后的第二预估子部分中抽取其对应的第二有效子部分,将其拼接在第三有效子部分的数据前面;

之后再从经过替换编辑请求后的第一预估子部分中抽取其对应的第一有效子部分,将其拼接在第二有效子部分的数据前面;

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和模块的具体工作过程,可参考前述方法实施方式中的对应过程,在此不再赘述。

综上所述,本发明的以太网报文替换编辑的方法及系统,根据以太网报文的组成特点,将报文头临时分割为多个部分,以分别对每个部分做精准的替换编辑,最后,将经过替换编辑后的数据重新拼接,可以节省大量的芯片逻辑开销,避免后端出现布线拥塞,更能节省芯片的面积。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。

以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1