CN116974580B - 多模态网络编译方法、系统和存储介质 - Google Patents
多模态网络编译方法、系统和存储介质 Download PDFInfo
- Publication number
- CN116974580B CN116974580B CN202311235737.7A CN202311235737A CN116974580B CN 116974580 B CN116974580 B CN 116974580B CN 202311235737 A CN202311235737 A CN 202311235737A CN 116974580 B CN116974580 B CN 116974580B
- Authority
- CN
- China
- Prior art keywords
- node
- type
- network
- name
- intermediate representation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 230000009471 action Effects 0.000 claims description 60
- 238000004590 computer program Methods 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 12
- 238000004458 analytical method Methods 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 abstract description 13
- 238000011161 development Methods 0.000 abstract description 3
- 230000015654 memory Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 241000896693 Disa Species 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种多模态网络编译方法、系统和存储介质,通过获取多模态网络的源程序代码的中间表示,提取节点属性,根据用户自定义字段,将节点属性转化为目标网元设备的编程指令序列,将编程指令序列和预设流表文件转化为微码指令,并将微码指令发送至目标网元设备,能够屏蔽网络交换机底层异质硬件资源,将多模态网络程序映射到可编程网元设备中,降低了多模态网络的开发和部署难度,实现了对自定义协议数据包的灵活处理。
Description
技术领域
本申请涉及网络通信领域,特别是涉及一种多模态网络编译方法、系统和存储介质。
背景技术
多模态网络,是一种支持多样化的寻址与路由技术,通过各类标识网络的寻址机理、路由过程、数据报文结构、网元数据交换过程、应用支持方式等元素进行解构与分析,以任意标识空间的工作逻辑以及各自优势为契合点,建立多模态异构标识空间寻址与路由模型。在多模态网络场景中,需要利用可编程网元设备,在设计网元时支持处理未知协议报文。
传统的网络交换机,采用ASIC芯片进行数据交换,将进入交换机的数据流量通过ASIC限速转发出去。ASIC芯片识别报文的逻辑是固定的,只支持固有协议,一旦开发完毕就很难继续扩展其他应用,新功能的添加需要芯片研发公司花费较长开发周期。由于可编程ASIC开发的商用芯片配套编译器未开源,并附有各种保密协议,多模态网络难以部署至可编程网元设备。
针对相关技术中多模态网络在可编程网元设备中部署困难的问题,目前还没有提出有效的解决方案。
发明内容
在本实施例中提供了一种多模态网络编译方法、系统和存储介质,以解决相关技术中多模态网络在可编程网元设备中部署困难的问题。
第一个方面,在本实施例中提供了一种多模态网络编译方法,包括:
获取多模态网络的源程序代码的中间表示;其中,所述中间表示由多个节点组成,每个节点代表一个中间表示元素,节点类型包括以下至少之一:包头、结构体、解析器、动作、匹配动作表、控制程序;
遍历所述中间表示,根据遍历到的节点类型提取节点属性;
根据用户自定义字段,将所述节点属性转化为目标网元设备的编程指令序列;其中,所述目标网元设备支持用户自定义字段和灵活可编程功能;
将所述编程指令序列和预设流表文件转化为微码指令,并将所述微码指令发送至所述目标网元设备;其中,所述预设流表文件携带有转发微码指令的指示信息。
在其中的一些实施例中,遍历所述中间表示,根据遍历到的节点类型提取节点属性,包括:
构建抽象访问者,声明访问具体元素类的接口方法;
实例化所述抽象访问者,得到具体实现访问者,采用所述具体实现访问者实现访问具体元素类的操作。
在其中的一些实施例中,构建抽象访问者,声明访问具体元素类的接口方法,包括:
将每个节点作为抽象节点,定义接受访问者方法,其中,所述接受访问者方法代表每个节点都可以被访问者访问;
将所述节点类型的常量表示作为具体元素类,提供访问所述具体元素类的具体实现。
在其中的一些实施例中,遍历所述中间表示,根据遍历到的节点类型提取节点属性,包括:
按照预设搜索方法遍历至当前节点时,判断当前节点是否已存在于预设集合中;其中,所述预设集合中存储有已访问节点;
若是,则访问下一个节点;
若否,则将当前节点保存至所述预设集合中,并递归访问其余节点。
在其中的一些实施例中,按照预设搜索方法遍历至当前节点,包括:
先遍历根节点,再递归遍历所述根节点的子节点;或者,
对于每一个父节点,先遍历所述父节点的子节点,再遍历所述父节点;或者,
将当前节点移入预设队列,在所述预设队列不为空的情况下,将当前节点移出队列并访问当前节点,在当前节点存在子节点的情况下,将所述子节点依次移入所述预设队列。
在其中的一些实施例中,所述中间表示包括:
包头中间表示,每个节点代表一个包头,节点的属性包括Node_type、name、fields,Node_type为Type_Header常量,name为包头别名,fields为包含包头属性、属性长度的列表集合;
结构体中间表示,每个节点代表一个结构体,节点的属性包括Node_type、name、fields,Node_type为Type_Struct常量,name为自定义结构体名,fields为包含结构体变量类型、变量名、变量长度的列表集合;
解析器中间表示,根节点的属性包括Node_type、name、applyParams、state,Node_type为PolymorphicParser常量,name为自定义解析器名,applyParams节点用于存储形参变量,其中每个形参为一个子节点,state节点用于存储解析语句,其中每条state语句为一个子节点,state子节点的Node_type为ParserState常量,state子节点包含components子节点、selectExpression子节点,components子节点用于存储解析包头所需的方法和参数,selectExpression子节点用于根据当前解析的包头确定下一个待解析的包头;
动作中间表示,节点的属性包括Node_type、name、parameters、body,Node_type为PolymorphicAction常量,name为自定义动作名,parameters节点用于存储形参变量,其中每个形参为一个子节点,body节点用于存储动作执行语句,其中每条动作为一个子节点;
匹配动作表中间表示,节点的属性包括Node_type、name、properties,Node_type为TableProperties常量,name为匹配-动作表名,properties节点包含动作表的条件匹配节点、动作节点、默认动作节点;
控制程序中间表示,节点的属性包括Node_type、components,Node_type为BlockStatement常量,components节点用于存储判断语句,其中每个判断条件为一个子节点,components子节点的Node_type为IfStatement常量,components的属性包括condition子节点、ifTrue子节点、ifFalse子节点。
在其中的一些实施例中,所述动作中间表示、所述匹配动作表中间表示、所述控制程序中间表示,有同一个父节点,所述父节点的属性包括Node_type、name、applyParams、controlLocals、body,Node_type为PolymorphicControl常量,name为自定义控制流水线名,applyParams节点用于存储形参变量,其中每个形参为一个子节点,controlLocals节点由动作中间表示节点、匹配动作表中间表示节点组成,body节点由控制程序中间表示节点组成。
在其中的一些实施例中,遍历所述中间表示,根据遍历到的节点类型提取节点属性,包括:
当遍历到的节点的Node_type为Type_Header常量时,提取当前节点的包头属性、属性长度信息;
当遍历到的节点的Node_type为Type_Struct常量时,提取当前节点的结构体变量类型、变量名、变量长度信息;
当遍历到的节点的Node_type为PolymorphicParser常量时,提取当前节点的解析语句信息;
当遍历到的节点的Node_type为PolymorphicAction常量时,提取当前节点的动作执行信息;
当遍历到的节点的Node_type为TableProperties常量时,提取当前节点的动作表信息;
当遍历到的节点的Node_type为BlockStatement常量时,提取当前节点的判断语句信息。
在其中的一些实施例中,所述目标网元设备的编程指令序列包括键值对,其中,所述用户自定义字段作为键值对的键,所述用户自定义字段所占长度、偏移量、优先级、偏移起点作为键值对的值。
在其中的一些实施例中,将所述编程指令序列和预设流表文件转化为微码指令,并将所述微码指令发送至所述目标网元设备,包括:
从所述流表文件中提取所述用户自定义字段的字段匹配值;
将提取的所述字段匹配值结合所述编程指令序列,生成所述微码指令。
在其中的一些实施例中,所述多模态网络包括以下至少之一:IPV4网络、IPV6网络、移动优先网络、命名数据网络、地理标识网络、工控协议网络。
第二个方面,在本实施例中提供了一种多模态网络编译系统,所述多模态网络编译系统包括:
前端编译器,用于分析多模态网络的源程序代码,生成中间表示;
后端编译器,耦合至所述前端编译器,用于接收所述中间表示,并执行上述第一个方面所述的多模态网络编译方法。
第三个方面,在本实施例中提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一个方面所述的第一个方面所述的多模态网络编译方法。
与相关技术相比,在本实施例中提供的多模态网络编译方法、系统和存储介质,通过获取多模态网络的源程序代码的中间表示,提取节点属性,根据用户自定义字段,将节点属性转化为目标网元设备的编程指令序列,将编程指令序列和预设流表文件转化为微码指令,并将微码指令发送至目标网元设备,能够屏蔽网络交换机底层异质硬件资源,将多模态网络程序映射到可编程网元设备中,降低了多模态网络的开发和部署难度,实现了对自定义协议数据包的灵活处理。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为一个实施例中多模态网络编译方法的终端的硬件结构框图;
图2为一个实施例中多模态网络编译方法的流程图;
图3为一个实施例中遍历中间表示的原理图;
图4为一个实施例中多模态网络编译方法的流程图;
图5为一个实施例中多模态网络编译系统的结构框图;
图6为一个实施例中多模态网络编译系统的结构框图;
图7为一个实施例中多模态网络编译系统的运行方法的流程图;
图8为一个实施例中数据包格式示意图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。
除另作定义外,本申请所涉及的技术术语或者科学术语应具有本申请所属技术领域具备一般技能的人所理解的一般含义。在本申请中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本申请中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本申请中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本申请中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本申请中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
在本实施例中提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。比如在终端上运行,图1是本申请一实施例的多模态网络编译方法的终端的硬件结构框图。如图1所示,终端可以包括一个或多个(图1中仅示出一个)处理器102和用于存储数据的存储器104,其中,处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置。上述终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限制。例如,终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示出的不同配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如在本实施例中的多模态网络编译方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络包括终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(NetworkInterface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在一个实施例中,图2给出了本实施例的多模态网络编译方法的流程图,以该方法运行在图1所示的终端为例进行说明,该流程包括如下步骤:
步骤S201,获取多模态网络的源程序代码的中间表示;其中,中间表示由多个节点组成,每个节点代表一个中间表示元素,节点类型包括以下至少之一:包头、结构体、解析器、动作、匹配动作表、控制程序。
多模态网络,包括IPV4网络、IPV6网络、移动优先网络、命名数据网络、地理标识网络、工控协议网络。
中间表示元素,是指从多模态网络的源程序代码转换至目标代码的过程中的源程序表现形式。中间表示元素包括包头、结构体、解析器、动作、匹配动作表、控制程序。中间表示元素的类型即为节点类型。
中间表示,是指将中间表示元素以图结构形式存储。中间表示可以是有向非循环图。
步骤S202,遍历中间表示,根据遍历到的节点类型提取节点属性。
其中,每个节点的节点属性包括公共属性和特殊属性,其中,公共属性包括节点类型和节点名称,特殊属性根据节点类型不同而有不同的设置。
步骤S203,根据用户自定义字段,将节点属性转化为目标网元设备的编程指令序列;其中,目标网元设备支持用户自定义字段和灵活可编程功能。
目标网元设备,支持用户自定义字段(UDF)和灵活可编程(Flex Edit)功能。UDF支持从报文二层/三层/四层头开始,通过自定义偏移量来指定报文的特定字段,结合访问控制列表(ACL),达到处理特殊报文的目的。FlexEdit支持从报文的二层/三层/四层头开始,在指定偏移位置添加/删除/修改指定长度的数据段,配合UDF功能可以自定义报文内容,更灵活的支持新的协议类型。
目标网元设备的编程指令序列包括键值对,其中,用户自定义字段作为键值对的键,用户自定义字段所占长度、偏移量、优先级、偏移起点作为键值对的值。
步骤S204,将编程指令序列和预设流表文件转化为微码指令,并将微码指令发送至目标网元设备;其中,预设流表文件携带有转发微码指令的指示信息。
具体地,从流表文件中提取用户自定义字段的字段匹配值;将提取的字段匹配值结合编程指令序列,生成微码指令。
在上述步骤S201至S204中,通过获取多模态网络的源程序代码的中间表示,提取节点属性,根据用户自定义字段,将节点属性转化为目标网元设备的编程指令序列,将编程指令序列和预设流表文件转化为微码指令,并将微码指令发送至目标网元设备,能够屏蔽网络交换机底层异质硬件资源,将多模态网络程序映射到可编程网元设备中,降低了多模态网络的开发和部署难度,实现了对自定义协议数据包的灵活处理。
在一个实施例中,给出以下若干种类型的中间表示。
(1)包头中间表示,每个节点代表一个包头,节点的属性包括Node_type、name、fields,Node_type为Type_Header常量,name为包头别名,fields为包含包头属性、属性长度的列表集合。
(2)结构体中间表示,每个节点代表一个结构体,节点的属性包括Node_type、name、fields,Node_type为Type_Struct常量,name为自定义结构体名,fields为包含结构体变量类型、变量名、变量长度的列表集合。
(3)解析器中间表示,根节点的属性包括Node_type、name、applyParams、state,Node_type为PolymorphicParser常量,name为自定义解析器名,applyParams节点用于存储形参变量,其中每个形参为一个子节点,state节点用于存储解析语句,其中每条state语句为一个子节点,state子节点的Node_type为ParserState常量,state子节点包含components子节点、selectExpression子节点,components子节点用于存储解析包头所需的方法和参数,selectExpression子节点用于根据当前解析的包头确定下一个待解析的包头。
(4)动作中间表示,节点的属性包括Node_type、name、parameters、body,Node_type为PolymorphicAction常量,name为自定义动作名,parameters节点用于存储形参变量,其中每个形参为一个子节点,body节点用于存储动作执行语句,其中每条动作为一个子节点。
(5)匹配动作表中间表示,节点的属性包括Node_type、name、properties,Node_type为TableProperties常量,name为匹配-动作表名,properties节点包含动作表的条件匹配节点、动作节点、默认动作节点。
(6)控制程序中间表示,节点的属性包括Node_type、components,Node_type为BlockStatement常量,components节点用于存储判断语句,其中每个判断条件为一个子节点,components子节点的Node_type为IfStatement常量,components的属性包括condition子节点、ifTrue子节点、ifFalse子节点。
进一步地,动作中间表示、匹配动作表中间表示、控制程序中间表示,有同一个父节点,父节点的属性包括Node_type、name、applyParams、controlLocals、body,Node_type为PolymorphicControl常量,name为自定义控制流水线名,applyParams节点用于存储形参变量,其中每个形参为一个子节点,controlLocals节点由动作中间表示节点、匹配动作表中间表示节点组成,body节点由控制程序中间表示节点组成。
在一个实施例中,遍历中间表示,根据遍历到的节点类型提取节点属性,包括:
当遍历到的节点的Node_type为Type_Header常量时,提取当前节点的包头属性、属性长度信息;
当遍历到的节点的Node_type为Type_Struct常量时,提取当前节点的结构体变量类型、变量名、变量长度信息;
当遍历到的节点的Node_type为PolymorphicParser常量时,提取当前节点的解析语句信息;
当遍历到的节点的Node_type为PolymorphicAction常量时,提取当前节点的动作执行信息;
当遍历到的节点的Node_type为TableProperties常量时,提取当前节点的动作表信息;
当遍历到的节点的Node_type为BlockStatement常量时,提取当前节点的判断语句信息。
在一个实施例中,遍历中间表示,根据遍历到的节点类型提取节点属性,包括:构建抽象访问者,声明访问具体元素类的接口方法;实例化抽象访问者,得到具体实现访问者,采用具体实现访问者实现访问具体元素类的操作。
进一步地,构建抽象访问者,声明访问具体元素类的接口方法,包括:将每个节点作为抽象节点,定义接受访问者方法,其中,接受访问者方法代表每个节点都可以被访问者访问;将节点类型的常量表示作为具体元素类,提供访问具体元素类的具体实现。
在本实施例中,通过解耦中间表示和访问动作,使得对中间表示的操作具备可扩展性。例如,对于某一中间表示,后续可能会修改或者增加节点,按照本实施例的中间表示遍历方法,不影响对节点的后续处理。
示例性地,终端包括后端编译器,图3给出了本实施例中遍历中间表示的原理图。如图3所示,后端编译器采用访问者模式遍历有向非循环图,Visitor为抽象访问者,用于声明访问具体元素类的接口方法。backendVisitor为具体实现访问者,用于实现访问具体元素类的操作,确定访问者访问具体元素的操作。Node为抽象节点,定义一个接受访问者方法accept,代表每一个节点都可以被访问者访问。TypeHeaderNode、TypeStructNode、ParserStateNode、PolymorphicActionNode、PolymorphicTableNode、PolymorphicControlNode为具体元素类,提供访问者访问该元素类的具体实现。DAGTree为DAG树,作为一种树形结构,提供让访问者对象遍历容器中所有Node的方法。
在一个实施例中,遍历中间表示,根据遍历到的节点类型提取节点属性,包括:按照预设搜索方法遍历至当前节点时,判断当前节点是否已存在于预设集合中;若是,则访问下一个节点;若否,则将当前节点保存至预设集合中,并递归访问其余节点;其中,预设集合中存储有已访问节点。
进一步地,以下给出3种可选的预设搜索方法。
(1)先遍历根节点,再递归遍历根节点的子节点。
(2)对于每一个父节点,先遍历父节点的子节点,再遍历父节点。
(3)将当前节点移入预设队列,在预设队列不为空的情况下,将当前节点移出队列并访问当前节点,在当前节点存在子节点的情况下,将子节点依次移入预设队列。
在一个实施例中,图4给出了另一种多模态网络编译方法的流程图。如图4所示,该流程包括如下步骤:
步骤S401,获取多模态网络的源程序代码的中间表示;
步骤S402,判断中间表示是否成功生成;若是,则执行步骤S403;若否,则执行步骤S404;
步骤S403,遍历中间表示,根据Node_Type提取节点属性;
步骤S404,按照出错处理;
步骤S405,根据多模态网络的源程序代码与目标代码之间的映射规则,将节点属性转化为目标平台的属性信息;
步骤S406,判断目标平台的属性信息是否存在错误;若是,则返回至步骤S404;若否,则执行步骤S407;
步骤S407,基于目标平台的属性信息,生成目标平台可识别的编程指令序列;
步骤S408,判断编程指令序列是否存在错误;若是,则返回至步骤S404;若否,则执行步骤S409;
步骤S409,将编程指令序列和预设流表文件转化为微码指令,并将微码指令输出至目标文件。
其中,根据Node_type提取节点属性,将其转化为目标平台的属性信息;将网元平台功能形式化为目标平台动作参数集,生成基于用户自定义字段和灵活可编程网元设备的编程指令序列,并输出至目标文件。
在一个实施例中,提供了一种多模态网络编译系统。图5是本实施例的多模态网络编译系统的结构框图。如图5所示,多模态网络编译系统包括:前端编译器和后端编译器。其中,前端编译器,用于分析多模态网络的源程序代码,生成中间表示数据;后端编译器,耦合至前端编译器,用于接收中间表示,并执行上述任一方法实施例的多模态网络编译方法。
在一个实施例中,图6提供了另一种多模态网络编译系统的结构框图。如图6所示,前端编译器包括词法分析模块、语法分析模块、语义分析模块、中间代码生成模块;后端编辑器包括目标代码生成模块。
词法分析模块,用于采用正则表达式匹配的方式,从多模态网络源程序代码中提取单词并进行逐行扫描,识别语法要素。将识别的语法要素存储到哈希表,哈希表的键为类型编码,由关键字、运算符、常量、标识符组成,哈希表的值为标识符名称或常量值。
语法分析模块,用于剔除、合并非关键的多模态网络源程序,例如空格、注释,并生成抽象语法树。
语义分析模块,用于执行语义检查,检查语法分析模块生成的抽象语法树是否和定义的语义保持一致,如果有类型错误、长度越界、重复定义等语义错误,则前端编译器退出编译,输出报错信息。
中间代码生成模块,用于根据抽象语法树信息,生成中间表示的有向非循环图,将公共子表达式归并。
目标代码生成模块,用于将中间表示作为输入,根据多模态网络源程序语言和目标语言的映射规则,生成基于目标语言的指令集,并构建为对应的目标文件输出。
在一个实施例中,提供了多模态网络编译系统的运行方法,图7给出了本实施例的多模态网络编译系统的运行方法的流程图,如图7所示,该流程包括如下步骤:
步骤S501,使用多模态网络程序编程,描述多模态网络的数据包处理逻辑;
步骤S502,使用多模态网络编译系统,将多模态网络程序编译为目标平台可识别的编程指令序列;其中,目标平台包括基于用户自定义字段和灵活可编程的网元设备;
步骤S503,在目标平台上,通过ASIC管理平面驱动,将编程指令序列和流表文件转换为微码指令下发到ASIC芯片。
其中,根据Node_type提取节点属性,将其转化为目标平台的属性信息;将网元平台功能形式化为目标平台动作参数集,生成基于用户自定义字段和灵活可编程网元设备的编程指令序列,并输出至目标文件。
其中,多模态网络,包括IPV4网络、IPV6网络、移动优先网络、命名数据网络、地理标识网络、工控协议网络。
其中,数据包处理逻辑,指多模态网络数据包转发。具体地,建模多模态网络数据包包头;建模多模态网络数据包的包头解析;建模多模态网络的表和动作;建模多模态网络的控制流。以地理标识模态的转发为例,使用多模态网络程序编写地理标识模态程序,通过经纬度、覆盖范围等信息寻址。前端编译器将多模态网络程序转化为目标无关的中间表示,并将中间表示交给后端编译器,后端编译器基于用户自定义字段和灵活可编程,将中间表示转化为编程指令序列。
在一个实施例中,提取到如地理标识模态的match字段如经纬度、长宽、形状等关键字,如下所示:
hdr.gbc.geoAreaPosLat、hdr.gbc.geoAreaPosLon、hdr.gbc.disa、hdr.gbc.disb、hdr.its.stationid;
将这些关键字转化为编程指令序列字段,如下所示:
"key":{"disa":{"length":16,"offset":496,"priority":7,"start":"L2","value":"~/"},"disb":{"length":,"offset":512,"priority":7,"start":"L2","value":"~/"},"etherType":{"length":16,"offset":96,"priority":7,"start":"L2","value":"0x8947"},"geoAreaPosLat":{"length":32,"offset":432,"priority":7,"start":"L2","value":"~/"},"geoAreaPosLon":{"length":32,"offset":464,"priority":7,"start":"L2","value":"~/"},"stationid":{"length":32,"offset":16,"priority":7,"start":"L2","value":"~/"}}。
其中,"length":16表示disa所占的长度为16位,"offset":496表示偏移量为496位,"priority":7表示优先级,"start":"L2"表示从二层头字段开始偏移,"value":"~/"表示匹配的值应根据流表获取。
将编程指令序列同步到ASIC管理平面驱动,同时编写流表文件指导ASIC芯片转发,流表格式如表1所示。其中,ID代表流表编号,TABLE代表表名,KEY代表键值对的键,ACTION代表执行的动作,MATCH代表用户自定义字段,VALUE代表字段匹配值。
表1流表格式
ASIC驱动根据流表文件和编程指令序列转换为微码指令,将微码指令下发到ASIC芯片上,微码指令格式如表2所示。其中,RULE代表微码指令的转发规则。
表2微码指令格式
在一个实施例中,以移动优先网络转发为例,使用多模态网络程序编写移动优先网络模态程序,通过全局唯一的身份标识符GUID作为其转发寻址标志。图8给出了本实施例的数据包格式示意图,如图8所示,其数据包格式包含以太网的目的地址、源地址、类型27c0信息,以及自定义身份标识的身份类型、源身份标识src_guid、目的身份标识dest_guid字段以及负载。
前端编译器将多模态网络程序转化为目标无关的中间表示,并将中间表示交给后端编译器,后端编译器基于用户自定义字段和灵活可编程,将中间表示转化为编程指令序列,当提取到关键字如地理标识模态的match字段:hdr.mf.dest_guid,action字段:change_mac,转化为编程指令序列字段:
"key":{"dest_guid":{"length":32,"offset":176,"priority":7,"start":"L2","value":"~/"}},"action":{"change_mac":{"length":48,"offset":48,"priority":7,"start":"L2","value":"~/"}},其中"length":16表示change_mac所修改字段的长度为48位,"offset":48表示偏移量为48位,"priority":7表示优先级,"start":"L2"表示从二层头字段开始偏移,"value":"~/"表示修改的值应根据流表获取。将编程指令序列同步到ASIC管理平面驱动,同时编写流表文件指导ASIC芯片转发,流表格式如表3所示:
表3流表格式
ASIC驱动根据流表文件和编程指令序列,将微码指令下发到ASIC芯片上,微码指令格式如表4所示:
表4微码指令格式
结合上述实施例中提供的多模态网络编译方法,在本实施例中还可以提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种多模态网络编译方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种多模态网络编译方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应该明白的是,这里描述的具体实施例只是用来解释这个应用,而不是用来对它进行限定。根据本申请提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本申请保护范围。
显然,附图只是本申请的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本申请适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本申请披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本申请公开的内容不足。
“实施例”一词在本申请中指的是结合实施例描述的具体特征、结构或特性可以包括在本申请的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本申请中描述的实施例在没有冲突的情况下,可以与其它实施例结合。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。本申请实施例中涉及对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(FerroelectricRandom Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random AccessMemory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (13)
1.一种多模态网络编译方法,其特征在于,包括:
获取多模态网络的源程序代码的中间表示;其中,所述中间表示由多个节点组成,每个节点代表一个中间表示元素,节点类型包括以下至少之一:包头、结构体、解析器、动作、匹配动作表、控制程序;
遍历所述中间表示,根据遍历到的节点类型提取节点属性;
根据用户自定义字段,将所述节点属性转化为目标网元设备的编程指令序列;其中,所述目标网元设备支持用户自定义字段和灵活可编程功能;
将所述编程指令序列和预设流表文件转化为微码指令,并将所述微码指令发送至所述目标网元设备;其中,所述预设流表文件携带有转发微码指令的指示信息;
其中,所述中间表示元素是指从所述多模态网络的源程序代码转换至目标代码过程中的源程序表现形式,所述中间表示元素包括包头、结构体、解析器、动作、匹配动作表、控制程序。
2.根据权利要求1所述的多模态网络编译方法,其特征在于,遍历所述中间表示,根据遍历到的节点类型提取节点属性,包括:
构建抽象访问者,声明访问具体元素类的接口方法;
实例化所述抽象访问者,得到具体实现访问者,采用所述具体实现访问者实现访问具体元素类的操作。
3.根据权利要求2所述的多模态网络编译方法,其特征在于,构建抽象访问者,声明访问具体元素类的接口方法,包括:
将每个节点作为抽象节点,定义接受访问者方法,其中,所述接受访问者方法代表每个节点都被访问者访问;
将所述节点类型的常量表示作为具体元素类,提供访问所述具体元素类的具体实现。
4.根据权利要求1所述的多模态网络编译方法,其特征在于,遍历所述中间表示,根据遍历到的节点类型提取节点属性,包括:
按照预设搜索方法遍历至当前节点时,判断当前节点是否已存在于预设集合中;其中,所述预设集合中存储有已访问节点;
若是,则访问下一个节点;
若否,则将当前节点保存至所述预设集合中,并递归访问其余节点。
5.根据权利要求4所述的多模态网络编译方法,其特征在于,按照预设搜索方法遍历至当前节点,包括:
先遍历根节点,再递归遍历所述根节点的子节点;或者,
对于每一个父节点,先遍历所述父节点的子节点,再遍历所述父节点;或者,
将当前节点移入预设队列,在所述预设队列不为空的情况下,将当前节点移出队列并访问当前节点,在当前节点存在子节点的情况下,将所述子节点依次移入所述预设队列。
6.根据权利要求1所述的多模态网络编译方法,其特征在于,所述中间表示包括:
包头中间表示,每个节点代表一个包头,节点的属性包括Node_type、name、fields,Node_type为Type_Header常量,name为包头别名,fields为包含包头属性、属性长度的列表集合;
结构体中间表示,每个节点代表一个结构体,节点的属性包括Node_type、name、fields,Node_type为Type_Struct常量,name为自定义结构体名,fields为包含结构体变量类型、变量名、变量长度的列表集合;
解析器中间表示,根节点的属性包括Node_type、name、applyParams、state,Node_type为PolymorphicParser常量,name为自定义解析器名,applyParams节点用于存储形参变量,其中每个形参为一个子节点,state节点用于存储解析语句,其中每条state语句为一个子节点,state子节点的Node_type为ParserState常量,state子节点包含components子节点、selectExpression子节点,components子节点用于存储解析包头所需的方法和参数,selectExpression子节点用于根据当前解析的包头确定下一个待解析的包头;
动作中间表示,节点的属性包括Node_type、name、parameters、body,Node_type为PolymorphicAction常量,name为自定义动作名,parameters节点用于存储形参变量,其中每个形参为一个子节点,body节点用于存储动作执行语句,其中每条动作为一个子节点;
匹配动作表中间表示,节点的属性包括Node_type、name、properties,Node_type为TableProperties常量,name为匹配-动作表名,properties节点包含动作表的条件匹配节点、动作节点、默认动作节点;
控制程序中间表示,节点的属性包括Node_type、components,Node_type为BlockStatement常量,components节点用于存储判断语句,其中每个判断条件为一个子节点,components子节点的Node_type为IfStatement常量,components的属性包括condition子节点、ifTrue子节点、ifFalse子节点。
7.根据权利要求6所述的多模态网络编译方法,其特征在于,所述动作中间表示、所述匹配动作表中间表示、所述控制程序中间表示,有同一个父节点,所述父节点的属性包括Node_type、name、applyParams、controlLocals、body,Node_type为PolymorphicControl常量,name为自定义控制流水线名,applyParams节点用于存储形参变量,其中每个形参为一个子节点,controlLocals节点由动作中间表示节点、匹配动作表中间表示节点组成,body节点由控制程序中间表示节点组成。
8.根据权利要求7所述的多模态网络编译方法,其特征在于,遍历所述中间表示,根据遍历到的节点类型提取节点属性,包括:
当遍历到的节点的Node_type为Type_Header常量时,提取当前节点的包头属性、属性长度信息;
当遍历到的节点的Node_type为Type_Struct常量时,提取当前节点的结构体变量类型、变量名、变量长度信息;
当遍历到的节点的Node_type为PolymorphicParser常量时,提取当前节点的解析语句信息;
当遍历到的节点的Node_type为PolymorphicAction常量时,提取当前节点的动作执行信息;
当遍历到的节点的Node_type为TableProperties常量时,提取当前节点的动作表信息;
当遍历到的节点的Node_type为BlockStatement常量时,提取当前节点的判断语句信息。
9.根据权利要求1所述的多模态网络编译方法,其特征在于,所述目标网元设备的编程指令序列包括键值对,其中,所述用户自定义字段作为键值对的键,所述用户自定义字段所占长度、偏移量、优先级、偏移起点作为键值对的值。
10.根据权利要求9所述的多模态网络编译方法,其特征在于,将所述编程指令序列和预设流表文件转化为微码指令,并将所述微码指令发送至所述目标网元设备,包括:
从所述流表文件中提取所述用户自定义字段的字段匹配值;
将提取的所述字段匹配值结合所述编程指令序列,生成所述微码指令。
11.根据权利要求1所述的多模态网络编译方法,其特征在于,所述多模态网络包括以下至少之一:IPV4网络、IPV6网络、移动优先网络、命名数据网络、地理标识网络、工控协议网络。
12.一种多模态网络编译系统,其特征在于,所述多模态网络编译系统包括:
前端编译器,用于分析多模态网络的源程序代码,生成中间表示;
后端编译器,耦合至所述前端编译器,用于接收所述中间表示,并执行权利要求1至权利要求11中任一项所述的多模态网络编译方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至权利要求11中任一项所述的多模态网络编译方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311235737.7A CN116974580B (zh) | 2023-09-25 | 2023-09-25 | 多模态网络编译方法、系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311235737.7A CN116974580B (zh) | 2023-09-25 | 2023-09-25 | 多模态网络编译方法、系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116974580A CN116974580A (zh) | 2023-10-31 |
CN116974580B true CN116974580B (zh) | 2024-01-09 |
Family
ID=88479977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311235737.7A Active CN116974580B (zh) | 2023-09-25 | 2023-09-25 | 多模态网络编译方法、系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116974580B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118118444B (zh) * | 2024-04-28 | 2024-07-12 | 之江实验室 | 一种基于可编程交换机的计算功能抽象方法及装置 |
CN118550519B (zh) * | 2024-07-29 | 2024-11-05 | 之江实验室 | 一种多模态网络后端编译方法和系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103347013A (zh) * | 2013-06-21 | 2013-10-09 | 北京邮电大学 | 一种增强可编程能力的OpenFlow网络系统和方法 |
CN110764744A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 用于神经网络计算的中间表示生成方法和装置 |
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN113031954A (zh) * | 2019-12-24 | 2021-06-25 | 阿里巴巴集团控股有限公司 | 代码编译方法、装置、电子设备、存储介质及异构系统 |
CN113553054A (zh) * | 2021-07-02 | 2021-10-26 | 北京算能科技有限公司 | 基于异构系统的编译方法、装置、设备及存储介质 |
CN116074208A (zh) * | 2023-03-24 | 2023-05-05 | 之江实验室 | 一种多模态网络的模态部署方法及模态部署系统 |
CN116319390A (zh) * | 2023-02-07 | 2023-06-23 | 之江实验室 | 一种多模态网络资源抽象及编排方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210365253A1 (en) * | 2020-05-22 | 2021-11-25 | Alibaba Group Holding Limited | Heterogeneity-agnostic and topology-agnostic data plane programming |
-
2023
- 2023-09-25 CN CN202311235737.7A patent/CN116974580B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103347013A (zh) * | 2013-06-21 | 2013-10-09 | 北京邮电大学 | 一种增强可编程能力的OpenFlow网络系统和方法 |
CN110764744A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 用于神经网络计算的中间表示生成方法和装置 |
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN113031954A (zh) * | 2019-12-24 | 2021-06-25 | 阿里巴巴集团控股有限公司 | 代码编译方法、装置、电子设备、存储介质及异构系统 |
CN113553054A (zh) * | 2021-07-02 | 2021-10-26 | 北京算能科技有限公司 | 基于异构系统的编译方法、装置、设备及存储介质 |
CN116319390A (zh) * | 2023-02-07 | 2023-06-23 | 之江实验室 | 一种多模态网络资源抽象及编排方法和系统 |
CN116074208A (zh) * | 2023-03-24 | 2023-05-05 | 之江实验室 | 一种多模态网络的模态部署方法及模态部署系统 |
Non-Patent Citations (2)
Title |
---|
基于中间模型的异构数据资源语义映射方法;贾贺;艾中良;刘忠麟;;计算机工程与应用(第03期);133-138 * |
基于领域专用软硬件协同的多模态网络环境构造技术;胡宇翔等;通信学报;第43卷(第4期);3-13 * |
Also Published As
Publication number | Publication date |
---|---|
CN116974580A (zh) | 2023-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116974580B (zh) | 多模态网络编译方法、系统和存储介质 | |
Chu et al. | The design and implementation of a declarative sensor network system | |
US6836890B1 (en) | Methods and systems for message translation and parsing of data structures in a distributed component architecture | |
Saadallah et al. | CCNx for Contiki: implementation details | |
US20110131555A1 (en) | External programmatic interface for ios cli compliant routers | |
CN109739494B (zh) | 一种基于Tree-LSTM的API使用代码生成式推荐方法 | |
CN113051285A (zh) | Sql语句的转换方法、系统、设备及存储介质 | |
CN102195895B (zh) | 一种消息发送、接收处理的方法及其装置 | |
JP4991124B2 (ja) | 分散データモデル | |
Kristensen et al. | Specification and validation of an edge router discovery protocol for mobile ad hoc networks | |
CN114327477A (zh) | 智能合约执行方法、装置、电子装置和存储介质 | |
Thantriwatte et al. | NoSQL query processing system for wireless ad-hoc and sensor networks | |
CN116931910A (zh) | 基于协议框架的开发方法、装置、电子设备及存储介质 | |
CN114385864A (zh) | 一种图搜索方法、装置、设备及存储介质 | |
WO2025065734A1 (zh) | 多模态网络编译方法、系统和存储介质 | |
CN114764330A (zh) | 数据血缘解析方法、装置、电子设备和计算机可读存储介质 | |
CN113676437B (zh) | 参数获取方法、参数设置方法以及装置 | |
Queirós | JSON on Mobile: is there an Efficient Parser? | |
CN118550519B (zh) | 一种多模态网络后端编译方法和系统 | |
Bellemon et al. | Questmonitor: A visualization platform for declarative network protocols | |
De Nicola et al. | Global computing in a dynamic network of tuple spaces | |
Karsai | Structured specification of model interpreters | |
CN118984345B (zh) | 一种适用于物联网的ip报文解析方法及系统 | |
Rerkrai et al. | Unified link-layer API enabling portable protocols and applications for wireless sensor networks | |
CN110231935A (zh) | 一种脚本执行和更新的方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |