一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

报文修改方法、装置、计算机设备、介质与流程

2022-03-19 14:39:51 来源:中国专利 TAG:


1.本公开涉及以太网转发和传输通讯领域,具体涉及一种报文修改方法、一种报文修改装置、一种计算机设备及一种计算机可读介质。


背景技术:

2.通信网络的实质是数据交换,sdn(network defined software,软件定义网络)提出三层架构,即应用层、控制层和转发层,sdn具有可编程性。openflow(使用类似于应用程序接口进程配置网络交换机的协议)协议运行在控制层和转发层之间。在openflow架构的以太网转发交换系统中,报文的转发下一跳路径由sdn控制器和流表决策,并通过微引擎的指令进行报文的封装信息更新,实现不同网络设备之间的报文交换。
3.openflow架构的微引擎设计通常采用vliw(超长指令集,very long instruction word),实现单条指令集索引触发多个指令单元的执行。vliw是一种非常长的指令组合,它把许多条指令连在一起,增加了运算的速度。报文的封装信息更新时,指令一般采用串行执行,指令的串行执行周期会随着超长指令集中总指令个数的增多而加速增加。这里的串行执行是指一条微码指令只能对与报文封装信息相关的字段的某一段连续的内容进行修改,对不同位置字段的修改需要多条微码指令。微码指令指的是用软件技术来实现硬件设计的一种技术,它一般驻留在高速存储器中并将机器指令翻译成详细的电路操作序列。
4.如何对与报文封装信息相关的字段进行修改是本领域亟待解决的技术问题。


技术实现要素:

5.本公开针对现有技术中存在的上述不足,提供一种报文修改方法、一种报文修改装置、一种计算机设备及一种计算机可读介质。
6.第一方面,本公开实施例提供一种报文修改方法,包括:
7.将与报文封装信息相关的待修改字段划分为m个容器;
8.对执行修改命令的超长指令集进行指令提取,得出n组初始指令,其中,2≤n≤m;
9.对n组所述初始指令进行处理,得到n组源操作数和n组修改字段配置信息;
10.根据所述n组修改字段配置信息分别确定n组源操作数匹配的n个容器;
11.根据所述n组源操作数分别修改匹配的n个容器。
12.在一些实施例中,将与报文封装信息相关的待修改字段划分为m个容器,包括:
13.将所述待修改字段划分为m个字段,并将每个字段配置成一个容器。
14.在一些实施例中,所述初始指令包括算数逻辑运算单元alu指令,对执行修改命令的超长指令集进行指令提取,得到n组初始指令,包括:
15.根据所述超长指令集的索引查询alu bitmap ram,得到多组n位宽alu bitmap信息;
16.对所述多组n位宽alu bitmap信息进行同位数拼接,得到n组同位数的第一拼接结果;
17.根据所述第一拼接结果,确定相应的指令索引;
18.根据所述指令索引和动态配置ram指令表,得到n组alu指令。
19.在一些实施例中,所述待修改字段包括报文字段,对初始指令进行处理,包括:
20.对所述初始指令进行解析,得到配置信息,所述配置信息中包括修改字段配置信息;
21.根据所述配置信息和动态配置ram指令表提取出所述源操作数。
22.在一些实施例中,所述待修改字段包括元框架描述符meta-frame字段,对初始指令进行处理,还包括:
23.对所述初始指令进行解析,得到配置信息,所述配置信息中包括修改字段配置信息;
24.对meta-frame字段进行压缩,得到压缩后meta-frame配置数据;
25.根据所述压缩后meta-frame配置数据、所述配置信息和动态配置ram指令表提取出所述源操作数。
26.在一些实施例中,对所述初始指令进行解析,得到配置信息,包括:
27.根据微码配置规则对所述初始指令进行解析,得到回调函数action源操作数配置信息、立即数源操作数配置信息、meta-frame源操作数配置信息、指令类型配置信息和修改字段配置信息。
28.在一些实施例中,根据所述配置信息和动态配置ram指令表提取出所述源操作数,包括:
29.查询所述动态配置ram指令表中的action配置数据和立即数配置数据;
30.对所述action配置数据和所述action源操作数配置信息进行计算提取出action源操作数,并对所述立即数配置数据和所述立即数源操作数配置信息进行计算提取出立即数源操作数;
31.根据所述指令类型配置参数对所述action源操作数和n组立即数源操作数进行处理,提取出所述源操作数。
32.在一些实施例中,根据所述压缩后meta-frame配置数据、所述配置信息和动态配置ram指令表提取出所述源操作数,包括:
33.查询所述动态配置ram指令表中的action配置数据和立即数配置数据;
34.对所述action配置数据和所述action源操作数配置信息进行计算提取出action源操作数,并对所述压缩后meta-frame配置数据和所述meta-frame源操作数配置信息进行计算提取出meta-frame源操作数,并对所述立即数配置数据和所述立即数源操作数配置信息进行计算提取出立即数源操作数;
35.根据所述指令类型配置参数对所述action源操作数、meta-frame源操作数和立即数源操作数进行处理,提取出所述源操作数。
36.在一些实施例中,对meta-frame字段进行压缩,得到压缩后meta-frame配置数据,包括:
37.通过间接寄存器获取空分交换网络banyan的n组配置信息;
38.获取meta-frame字段划分的n个字段;
39.将所述banyan的n组配置信息和所述n个字段进行拼接,得到第二拼接结果;
40.将所述第二拼接结果发送到所述banyan;
41.通过所述banyan获取压缩后meta-frame配置数据。
42.在一些实施例中,通过所述banyan获取压缩后meta-frame配置数据,包括:
43.按照从低位到高位的顺序取出所述banyan返回的部分数据;
44.将所述部分数据进行拼接得到所述压缩后meta-frame配置数据。
45.在一些实施例中,根据所述n组源操作数分别修改匹配的n个容器,包括:
46.根据所述修改字段配置信息中的修改位置和修改字段长度信息确定匹配的容器中的待修改字段内容;
47.根据所述n组源操作数中的每一组源操作数分别对匹配的容器中的待修改字段内容进行修改,每一组源操作数位数均小于匹配的容器支持最大修改的比特位数。
48.第二方面,本公开实施例提供一种报文修改装置,包括:
49.划分模块,用于将与报文封装信息相关的待修改字段划分为m个容器;
50.提取模块,用于对执行修改命令的超长指令集进行指令提取,得出n组初始指令,其中,2≤n≤m;
51.处理模块,用于对n组所述初始指令进行处理,得到n组源操作数和n组修改字段配置信息;
52.确定模块,用于根据所述n组修改字段配置信息分别确定n组源操作数匹配的n个容器;
53.修改模块,用于根据所述n组源操作数分别修改匹配的n个容器。
54.第三方面,本公开实施例提供一种计算机设备,包括:
55.一个或多个处理器;
56.存储装置,其上存储有一个或多个程序;
57.当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述的报文修改方法。
58.第四方面,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,其中,所述程序被执行时实现如上述的报文修改方法。
59.本公开实施例中,将与报文封装信息相关的待修改字段划分为m个容器。对执行修改命令的超长指令集进行提取,得到n组初始指令(2≤n≤m)。并对n组初始指令进行处理,得到n组源操作数和n组修改字段配置信息,根据n组修改字段配置信息分别确定n组源操作数匹配的n个容器,每一组源操作数都要对一个匹配的容器进行修改。在可编程技术的基础上,n组初始指令间为互不交叉的直接寻址,通过对n组初始指令处理获得的n组源操作数,对连续的待修改字段划分出的n个容器进行并行修改,完成对报文封装信息的修改。使得一个周期可以执行一个超长指令集,采用并行修改,相较于串行修改能够明显降低指令操作延时。
附图说明
60.图1是本公开实施例提供的一种报文修改方法的流程图;
61.图2是本公开实施例提供的一种报文修改方法的另一流程图;
62.图3是本公开实施例提供的一种报文修改方法的另一流程图;
63.图4是本公开实施例提供的一种报文修改方法的另一流程图;
64.图5是本公开实施例提供的一种报文修改方法的另一流程图;
65.图6是本公开实施例提供的一种报文修改方法的另一流程图;
66.图7是本公开实施例提供的一种报文修改装置的结构示意图。
具体实施方式
67.为使本领域的技术人员更好地理解本公开的技术方案,下面结合附图对本公开提供的一种报文修改方法、一种报文修改装置、一种计算机设备及一种计算机可读介质进行详细描述。
68.在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。
69.在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
70.如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
71.本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由
……
制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。
72.除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
73.目前常用于修改与报文封装信息相关的字段的场景为硬转发固定报文内容修改。在硬转发芯片的报文修改设计中,基于转发芯片的业务流向,先进行报文解析,再进行二层mac(medium/media access control,用来标识互联网上每一个站点的标识符)业务处理或mpls(multi-protocol label switching,多协议标签交换)标签业务处理或ip(internet protocol,网络之间互连的协议)路由业务处理,最后进行报文封装。在业务处理过程中随路完成了对与报文封装信息相关的字段的修改,在所有模块的业务处理完之后,完成一次对与报文封装信息相关的字段的完整修改。
74.在可编程指令修改技术中,可编程的架构又区分为并行rtc(real time clock,实时时钟模块)和串行流表结构。串行流表结构采用超长指令集的指令方式。在采用超长指令集的可编程架构前提下,与报文封装信息相关的字段的修改功能可由软件指定一条超长指令集的多个指令单元进行。每一个指令单元执行一条指令,在执行指令时可以对与报文封装信息相关的字段中某一连续字段进行修改。按照每个执行指令的周期为1个周期计算,一条超长指令集串行执行完毕需要多个周期完成。
75.为了解决以上问题,本公开提出一种报文修改方法、一种报文修改装置、一种计算机设备及一种计算机可读介质。
76.图1示出本公开实施例提供的报文修改方法的流程图。该报文修改方法可应用于
报文修改装置。如图1所示,本实施例提供的报文修改方法包括以下步骤。
77.在步骤s101中,将与报文封装信息相关的待修改字段划分为m个容器。
78.在该步骤中,报文修改装置将与报文封装信息相关的待修改字段划分为m个容器,各个容器按顺序排列,每个容器都有对应的容器号,即第m号容器。
79.其中,所述待修改字段为连续字段,用于对报文下一跳的报文封装信息进行修改。
80.需要说明的是,所述容器支持最大修改的比特位数包括以下任意一种:8位、16位、32位。划分出的各个容器分别为4byte容器、2byte容器和1byte容器,依次支持最大修改的比特位数为32位、16位和8位。
81.在步骤s102,对执行修改命令的超长指令集进行指令提取,得到n组初始指令。
82.在该步骤中,报文修改装置对执行修改命令的超长指令集进行指令提取,即对超长指令集进行分析计算得出新的提取出的指令集,包括n组初始指令。其中,2≤n≤m。n小于等于容器的个数,保证所有的指令都用于修改待修改字段划分出的各个容器。现有技术中需要多个周期执行所述超长指令集,在本公开实施例中,一个周期执行完上述n组初始指令。
83.现有技术中对待修改字段进行修改的超长指令集的各指令间为相互交叉的间接寻址,即操作数有效地址存放在寄存器中,从寄存器中获取的值操作数的地址,指令中包括寄存器的地址。而本公开中,所述n组初始指令为互不交叉的直接寻址的指令,即操作数存储在寄存器中,从寄存器中直接获取操作数,n组初始指令中包括操作数的有效地址。
84.在步骤s103中,对n组初始指令进行处理,得到n组源操作数和n组修改字段配置信息。
85.在该步骤中,报文修改装置对提取出的n组初始指令进行处理,n组初始指令中包括的操作数的有效地址,根据该操作数的有效地址可以直接获取操作数。报文修改装置对n组初始指令进行处理,得到n组源操作数和n组修改字段配置信息。所述修改字段配置信息中包括每个初始指令对应修改的容器号。每一组初始指令对应一组源操作数,对应一组修改字段配置信息,对应一个容器号。操作数为运算符作用于的实体,是表达式中的一个组成部分,它规定了指令中进行数字运算的量。源操作数,指要处理的操作数。
86.在步骤s104中,根据n组修改字段配置信息分别确定n组源操作数匹配的n个容器。
87.在该步骤中,所述修改字段配置信息中包括每个初始指令对应修改的容器号,n组初始指令中的每一组初始指令对应一组源操作数,所以根据修改字段配置信息可以确定每一组源操作数匹配的容器。
88.在步骤s105中,根据n组源操作数分别修改匹配的n个容器。
89.在该步骤中,报文修改装置根据n组源操作数中的每一组源操作对于该源操作数匹配的容器进行修改,即用源操作数替换容器中的待修改字段内容,完成报文回写,完成对报文封装信息的修改。在对n个容器进行修改之后,可以将n个容器按照容器划分规则进行重新组合,组成报文下一跳信息的报文封装信息。
90.需要说明的是,在对容器进行修改时,可以修改容器的全部位数的数据,也可以修改几位的数据。
91.本公开实施例中,将与报文封装信息相关的待修改字段划分为m个容器。对执行修改命令的超长指令集进行提取,得到n组初始指令(2≤n≤m)。并对n组初始指令进行处理,
得到n组源操作数和n组修改字段配置信息,根据n组修改字段配置信息分别确定n组源操作数匹配的n个容器,每一组源操作数都要对一个匹配的容器进行修改。在可编程技术的基础上,n组初始指令间为互不交叉的直接寻址,实现对连续的待修改字段划分出的n个容器进行并行修改,完成对报文封装信息的修改。使得一个周期可以执行一个超长指令集,采用并行修改,相较于串行修改能够明显降低指令操作延时。
92.进一步的,将与报文封装信息相关的待修改字段划分为m个容器(即步骤101),包括:将待修改字段划分为m个字段,并将每个字段配置成一个容器。
93.在该步骤中,执行修改命令的超长指令集用于修改所述待修改字段,划分规则由超长指令集对应的微码指令决定。将待修改字段按照划分规则划分为m个字段,每个字段即是一个容器,一共划分出m个容器。
94.本公开实施例中,采用报文分段处理技术,是实现超长指令集对待修改字段并行修改的前提和基础。
95.图2示出本公开实施例提供的报文修改方法的另一流程图。进一步的,如图2所示,所述初始指令包括算数逻辑运算单元alu指令,对执行修改命令的超长指令集进行指令提取,n组初始指令(即步骤102),包括:
96.步骤201,根据超长指令集的索引查询alu bitmap ram,得到多组n位宽alu bitmap信息。
97.其中,bitmap中的每个元素在内存占2-32位,bitmap信息在内存中的标识可以为一列由1和0组成的二进制数。例如,若bitmap中的每个元素在内存占8位,可以对应表示8个十进制数,bitmap[0],可表示0-7;bitmap[1],可表示8-15;bitmap[2],可表示16-23。bitmap[0]中,00000010表示1,01000000表示6。
[0098]
在该步骤中,alu bitmap ram中的每个元素都有对应的索引,报文修改装置根据多组超长指令集的索引查询alu bitmap ram,得到多组n位宽alu bitmap信息,2≤n≤32。例如,得到多组8位bitmap中的二进制数。
[0099]
步骤202,对多组n位宽alu bitmap信息进行同位数拼接,得到n组同位数的第一拼接结果。
[0100]
在该步骤中,报文修改装置对多组n位宽alu bitmap信息进行同位数拼接,即处于一位上的数字串行连接,得到n组同位数的第一拼接结果。例如,多组n位宽alu bitmap信息均为8位bitmap中的二进制数,将每一位上的多个数字串行拼接,得到8组同位数的第一拼接结果。多组n位宽alu bitmap信息为bitmap[0]下的00000010、01000000、10000000、00010000,则8组4位的第一拼接结果为0010、0100、0000、0001、0000、0000、0100、0000。第一拼接结果的位数应小于32位。
[0101]
在步骤s203中,根据第一拼接结果,确定相应的指令索引。
[0102]
在该步骤中,alu bitmap ram中的每个元素都有对应的索引,第一拼接结果也可以在bitmap中找到,根据第一拼接结果查找对应的指令索引。
[0103]
在步骤s204中,根据指令索引和动态配置ram指令表,得到n组alu指令,确定为提取出的指令集。
[0104]
在该步骤中,报文修改装置根据n组指令索引逐条查找ram指令表,得到n组alu指令,即为提取出的指令集。
[0105]
在本公开实施例中,所述待修改字段包括报文字段或meta-frame字段。报文字段主要是报文头。meta-frame字段是指与元框架相关联的一组数据或数据结构,即元框架描述符字段,meta-frame字段是对多个属性运用相同存取逻辑的字段。在转发芯片中,会对报文字段或meta-frame字段都进行修改,报文字段和meta-frame字段都用于对报文的下一跳信息的报文封装信息进行修改。
[0106]
图3示出本公开实施例提供的报文修改方法的另一流程图。进一步的,如图3所示,所述待修改字段包括报文字段,对初始指令进行处理(即步骤103),包括:
[0107]
在步骤s301中,对初始指令进行解析,得到配置信息。
[0108]
在步骤s302中,根据配置信息和动态配置ram指令表提取出源操作数。
[0109]
在步骤301-步骤302中,当所述待修改字段包括报文字段时,先对初始指令进行解析,得到配置信息,再结合配置信息和动态配置ram指令表提取出对应的一组源操作数。所述配置信息中包括修改字段配置信息。
[0110]
图4示出本公开实施例提供的报文修改方法的另一流程图。进一步的,如图4所示,所述待修改字段包括元框架描述符meta-frame字段,对初始指令进行处理(即步骤s103),还包括:
[0111]
在步骤s401中,对初始指令进行解析,得到配置信息。
[0112]
在步骤s402中,对meta-frame字段进行压缩,得到压缩后meta-frame配置数据。
[0113]
在步骤s403中,根据压缩后meta-frame配置数据、配置信息和动态配置ram指令表提取出源操作数。
[0114]
在步骤s401-步骤s403中,当所述待修改字段包括meta-frame字段时,先对初始指令进行解析,得到配置信息,再对meta-frame字段进行压缩,得到压缩后meta-frame配置数据,最后结合配置信息、压缩后meta-frame配置数据和动态配置ram指令表提取出对应的一组源操作数。所述配置信息中包括修改字段配置信息。
[0115]
进一步的,对所述初始指令进行解析,得到配置信息(即步骤301或步骤401),包括:
[0116]
根据微码配置规则对初始指令进行解析,得到回调函数action源操作数配置信息、立即数源操作数配置信息、meta-frame源操作数配置信息、指令类型配置信息和修改字段配置信息。
[0117]
在该步骤中,报文修改装置根据微码配置规则对提取出的n组初始指令进行解析,即进行解码、相应字段截取,截取出n组配置信息。n组配置信息中包括n组回调函数action源操作数配置信息、n组立即数源操作数配置信息、n组meta-frame源操作数配置信息、n组指令类型配置信息和n组修改字段配置信息。
[0118]
进一步的,根据所述配置信息和动态配置ram指令表提取出所述源操作数(即步骤302),包括:查询动态配置ram指令表中的action配置数据和立即数配置数据。对action配置数据和action源操作数配置信息进行计算提取出action源操作数,并对立即数配置数据和立即数源操作数配置信息进行计算提取出立即数源操作数。根据指令类型配置参数对action源操作数和n组立即数源操作数进行处理,提取出源操作数。
[0119]
在该步骤中,报文修改装置依据配置信息中的n组action源操作数配置信息、n组立即数源操作数配置信息结合动态配置ram指令表中的action配置数据以及立即数配置数
据进行计算,并行提取出两类n组源操作数。
[0120]
进一步的,根据压缩后meta-frame配置数据、配置信息和动态配置ram指令表提取出源操作数(即步骤s403),包括:查询动态配置ram指令表中的action配置数据和立即数配置数据;对action配置数据和action源操作数配置信息进行计算提取出action源操作数,并对压缩后meta-frame配置数据和meta-frame源操作数配置信息进行计算提取出meta-frame源操作数,并对立即数配置数据和立即数源操作数配置信息进行计算提取出立即数源操作数;根据指令类型配置参数对action源操作数、meta-frame源操作数和立即数源操作数进行处理,提取出源操作数。
[0121]
在该步骤中,报文修改装置依据n组配置信息中的n组回调函数action源操作数配置信息、n组meta-frame源操作数配置信息、n组立即数源操作数配置信息结合动态配置ram指令表中的action配置数据、压缩后meta-frame配置数据以及立即数配置数据进行计算,并行提取出三类n组源操作数。
[0122]
至此,针对两种待修改字段的n组初始指令,都能获得每一组初始指令解析出的一组源操作数,每一组源操作数可以用于修改对应的一组初始指令匹配的容器。每一组源操作数的位数小于修改的容器支持最大修改的位数,才能对容器进行修改。因为2≤n≤32,所以本公开中最多只能对32个容器进行修改。
[0123]
本公开实施例中,采用可编程技术,可支持指令种类多,配置灵活。可基于多个条目对指令进行动态配置,实现可编程修改相应字段;且能够支持多种不同指令类型。
[0124]
图5示出本公开实施例提供的报文修改方法的另一流程图。进一步的,如图5所示,对meta-frame字段进行压缩,得到压缩后meta-frame配置数据,(即步骤s402),包括:
[0125]
在步骤s501中,通过间接寄存器获取banyan的n组配置信息。
[0126]
在步骤s502中,获取meta-frame字段划分的n个字段。
[0127]
在步骤s503中,将banyan的n组配置信息和n个字段进行拼接,得到第二拼接结果。
[0128]
在步骤s504,将第二拼接结果发送到banyan。
[0129]
在步骤s501-步骤s504中,对banyan的入口作静态配置。通过间接寄存器获取banyan的n组配置信息和meta-frame字段划分的n个字段拼接后,得到第二拼接结果。将第二拼接结果作为入口数据接到banyan的入口处。
[0130]
步骤s505,通过banyan获取压缩后meta-frame配置数据。
[0131]
在该步骤中,banyan网络具有唯一路径特性,唯一路径特性指任何一条入线和任何一条出线之间存在一条通路。通过banyan获取压缩后meta-frame配置数据。
[0132]
进一步的,通过banyan获取压缩后meta-frame配置数据(即步骤s505),包括:
[0133]
按照从低位到高位的顺序取出banyan返回的部分数据;将部分数据进行拼接得到压缩后meta-frame配置数据。报文修改装置按照从低位到高位的顺序取出banyan出口的部分数据,并对部分数据进行拼接,得到压缩后meta-frame配置数据,完成对meta-frame的压缩。
[0134]
本公开实施例中,采用压缩后meta-frame配置数据作为源操作数提取源,相较于使用原meta-frame极大地降低取源操作数的复杂度和资源使用量。
[0135]
图6示出本公开实施例提供的报文修改方法的另一流程图。进一步的,如图6所示,根据所述n组源操作数分别修改匹配的n个容器(即步骤s105),包括:
[0136]
在步骤s601中,根据修改字段配置信息中的修改位置和修改字段长度信息确定匹配的容器中的待修改字段内容。
[0137]
在该步骤中,待修改字段划分出的容器支持最大修改的比特位数包括以下任意一种:8位、16位、32位,可以对容器的全部位数进行修改,也可以对容器的部分位数进行修改。根据修改字段配置信息中的修改位置和修改字段长度信息确定匹配的容器中的待修改字段内容,待修改字段内容可以是容器的全部位数,也可以是容器的部分位数。
[0138]
在步骤s602中,根据n组源操作数中的每一组源操作数分别对匹配的容器中的待修改字段内容进行修改。
[0139]
在该步骤中,每一组源操作数位数均小于匹配的容器支持最大修改的比特位数,才能对相应的容器进行修改。根据n组源操作数中的每一组源操作数分别对匹配的容器中的待修改字段内容进行修改,完成对n个容器的并行修改。
[0140]
图7示出本公开实施例提供的报文修改装置的结构示意图。基于与图1对应的实施例相同的技术构思,如图7所示,本公开实施例提供的报文修改装置,包括如下模块。
[0141]
划分模块11,用于将与报文封装信息相关的待修改字段划分为m个容器。
[0142]
提取模块12,用于对执行修改命令的超长指令集进行指令提取,得出n组初始指令,其中,2≤n≤m。
[0143]
处理模块13,用于对n组所述初始指令进行处理,得到n组源操作数和n组修改字段配置信息。
[0144]
确定模块14,用于根据所述n组修改字段配置信息分别确定n组源操作数匹配的n个容器。
[0145]
修改模块15,用于根据所述n组源操作数分别修改匹配的n个容器。
[0146]
在一些实施例中,将划分模块11,具体用于:
[0147]
将所述待修改字段划分为m个字段,并将每个字段配置成一个容器。
[0148]
在一些实施例中,所述初始指令包括算数逻辑运算单元alu指令,所述提取模块12,具体用于:
[0149]
根据所述超长指令集的索引查询alu bitmap ram,得到多组n位宽alu bitmap信息。
[0150]
对所述多组n位宽alu bitmap信息进行同位数拼接,得到n组同位数的第一拼接结果。
[0151]
根据所述第一拼接结果,确定相应的指令索引。
[0152]
根据所述指令索引和动态配置ram指令表,得到n组alu指令,确定为提取出的指令集。
[0153]
在一些实施例中,所述待修改字段包括报文字段,所述处理模块13,具体用于:
[0154]
对所述初始指令进行解析,得到配置信息,所述配置信息中包括修改字段配置信息。
[0155]
根据所述配置信息和动态配置ram指令表提取出所述源操作数。
[0156]
在一些实施例中,所述待修改字段包括元框架描述符meta-frame字段,所述处理模块13,具体用于:
[0157]
对所述初始指令进行解析,得到配置信息,所述配置信息中包括修改字段配置信
息。
[0158]
对meta-frame字段进行压缩,得到压缩后meta-frame配置数据。
[0159]
根据所述压缩后meta-frame配置数据、所述配置信息和动态配置ram指令表提取出所述源操作数。
[0160]
在一些实施例中,所述处理模块13,具体用于:
[0161]
根据微码配置规则对所述初始指令进行解析,得到回调函数action源操作数配置信息、立即数源操作数配置信息、meta-frame源操作数配置信息、指令类型配置信息和修改字段配置信息。
[0162]
在一些实施例中,所述处理模块13,具体用于:
[0163]
查询所述动态配置ram指令表中的action配置数据和立即数配置数据。
[0164]
对所述action配置数据和所述action源操作数配置信息进行计算提取出action源操作数,并对所述立即数配置数据和所述立即数源操作数配置信息进行计算提取出立即数源操作数。
[0165]
根据所述指令类型配置参数对所述action源操作数和n组立即数源操作数进行处理,提取出所述源操作数。
[0166]
在一些实施例中,所述处理模块13,具体用于:
[0167]
查询所述动态配置ram指令表中的action配置数据和立即数配置数据。
[0168]
对所述action配置数据和所述action源操作数配置信息进行计算提取出action源操作数,并对所述压缩后meta-frame配置数据和所述meta-frame源操作数配置信息进行计算提取出meta-frame源操作数,并对所述立即数配置数据和所述立即数源操作数配置信息进行计算提取出立即数源操作数。
[0169]
根据所述指令类型配置参数对所述action源操作数、meta-frame源操作数和立即数源操作数进行处理,提取出所述源操作数。
[0170]
在一些实施例中,所述处理模块13,具体用于:
[0171]
通过间接寄存器获取空分交换网络banyan的n组配置信息。
[0172]
获取meta-frame字段划分的n个字段。
[0173]
将所述banyan的n组配置信息和所述n个字段进行拼接,得到第二拼接结果。
[0174]
将所述第二拼接结果发送到所述banyan。
[0175]
通过所述banyan获取压缩后meta-frame配置数据。
[0176]
在一些实施例中,所述处理模块13,具体用于:
[0177]
按照从低位到高位的顺序取出所述banyan返回的部分数据。
[0178]
将所述部分数据进行拼接得到所述压缩后meta-frame配置数据。
[0179]
在一些实施例中,所述修改模块14,具体用于:
[0180]
根据所述修改字段配置信息中的修改位置和修改字段长度信息确定匹配的容器中的待修改字段内容。
[0181]
根据所述n组源操作数中的每一组源操作数分别对匹配的容器中的待修改字段内容进行修改,每一组源操作数位数均小于匹配的容器支持最大修改的比特位数。
[0182]
本公开实施例还提供了一种计算机设备,该计算机设备包括:一个或多个处理器以及存储装置;其中,存储装置上存储有一个或多个程序,当上述一个或多个程序被上述一
个或多个处理器执行时,使得上述一个或多个处理器实现如前述各实施例所提供的报文修改方法。
[0183]
本公开实施例还提供了一种计算机可读介质,其上存储有计算机程序,其中,该计算机程序被执行时实现如前述各实施例所提供的报文修改方法。
[0184]
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
[0185]
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本发明的范围的情况下,可进行各种形式和细节上的改变。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献