CN117278403A - 一种基于异构设备的增量式编译方法和系统 - Google Patents
一种基于异构设备的增量式编译方法和系统 Download PDFInfo
- Publication number
- CN117278403A CN117278403A CN202311201936.6A CN202311201936A CN117278403A CN 117278403 A CN117278403 A CN 117278403A CN 202311201936 A CN202311201936 A CN 202311201936A CN 117278403 A CN117278403 A CN 117278403A
- Authority
- CN
- China
- Prior art keywords
- representing
- heterogeneous
- asic
- unit
- rule
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000006870 function Effects 0.000 claims abstract description 102
- 230000014509 gene expression Effects 0.000 claims abstract description 82
- 230000004048 modification Effects 0.000 claims description 15
- 238000012986 modification Methods 0.000 claims description 15
- 238000012217 deletion Methods 0.000 claims description 12
- 230000037430 deletion Effects 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 230000009471 action Effects 0.000 claims description 7
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 4
- 230000001172 regenerating effect Effects 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 3
- 230000009466 transformation Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 12
- 230000008569 process Effects 0.000 abstract description 5
- 238000007792 addition Methods 0.000 description 4
- 230000007547 defect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/082—Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于异构设备的增量式编译方法和系统。包括:用户使用P4开发网络程序,对网络程序进行语法语义检查并将其转化为中间表示;根据异构设备的功能、资源等约束分配中间表示文件;再根据异构设备约束以及流表项等将网络程序转化为异构设备的不同规则表达,并加载至目标设备上;当用户需要增量部署网络功能时,用户只需要编写新增的网络程序,重新生成规则表达;通过对比分析新旧两次规则表达,形成可加载至异构设备上的规则表达,实现网络功能的增量部署。本发明在加载新增网络功能的过程中,能实现旧的网络功能的不中断处理,在不中断的网络功能的前提下,在异构设备上实现网络功能的增量部署。
Description
技术领域
本发明涉及计算机网络技术领域,尤其涉及一种基于异构设备的增量式编译方法和系统。
背景技术
近年来网络数据平面的可编程性得到了一定程度的发展,用户开发网络功能后,编译器将程序编译后下发到可编程设备,从而实现对应的网络功能,网络应用与网络设备硬件不再紧耦合,当网络功能改变时,用户不需要等待设备厂商数月级的产品迭代。但是现有的实现方式依然存在不足,这种可编程性是静态的,经过一段编译和安装后,并不能在运行时新增网络功能;而在运行时新增网络功能则需要重新进行编译并加载至可编程设备上,这不可避免地会造成程序的中断,进而无法实现网络应用的无缝升级。
发明内容
本发明的目的在于针对现有技术的不足,提供了一种基于异构设备的增量式编译方法和系统。
为实现上述目的,本发明提供了一种基于异构设备的增量式编译方法,包括如下步骤:
(1)通过P4开发网络程序,并对网络程序进行基本的语法语义检查,将其转化为中间表示;
(2)对异构设备的功能约束、资源约束进行建模;根据异构设备的功能约束、资源约束信息,将中间表示分配到不同的异构设备单元上;所述异构设备单元包括ASIC单元和FPGA单元;
(3)不同的异构设备单元根据功能映射转换规则和流表信息,生成针对异构设备的不同规则表达,再将规则表达加载至异构设备上;
(4)通过P4开发包含新网络功能的网络程序,通过步骤(1)-步骤(3)重新生成新网络功能的规则表达;对比分析新旧两次规则表达,形成能加载至异构设备上的规则表达,完成网络功能的增量部署。
进一步地,所述步骤(2)中,所述ASIC单元和FPGA单元之间通过内置的Serdes接口相连。
进一步地,所述步骤(2)包括以下子步骤:
(2.1)对异构设备的功能约束、资源约束进行建模,包括对异构设备中的ASIC单元和FPGA单元的功能约束、资源约束进行建模;
(2.2)根据异构设备的功能约束、资源约束信息,基于ASIC单元优先分配原则将中间表示分配到异构设备的不同单元上。
进一步地,所述子步骤(2.1)中,对异构设备中的ASIC单元的功能约束、资源约束进行建模具体为:
对ASIC单元的增加、删除功能做约束,Taw表示增加操作偏移的起始位置长度,Tdw表示删除操作偏移的起始位置长度,TAW表示ASIC单元支持增加操作的最大偏移量,TDW表示ASIC单元支持删除操作的最大偏移量,Tas表示所增加的数据段长度,Tds表示所删除的数据段长度,TAS表示ASIC单元支持增加的数据段的最大长度,TDS表示ASIC单元支持删除的数据段的最大长度,FAH表示增加数据包头部字段操作,FDH表示删除数据包头部字段操作,m表示放置在异构设备上的功能单元,xm,A∈{0,1}表示m是否放置在ASIC单元上;则ASIC单元的增加、删除功能约束表达如下:
对ASIC单元的修改功能做约束,Tcw表示增加操作偏移的起始位置长度,TCW表示ASIC单元支持修改操作的最大偏移量,Tcs表示所修改的数据段长度,TCS表示ASIC单元支持修改的数据段的最大长度,FCH表示增加数据包头部字段操作,则ASIC单元的修改功能约束表达如下:
对ASIC单元的UDF资源进行建模,LK∈[0,14,34]表示不同匹配偏移的起始位置所占的偏移长度;SL表示匹配偏移的长度,ML表示匹配的长度,ILA表示ASIC单元支持匹配的数据包头部字段的范围最大值,ap,A∈{0,1}表示p是否放置在ASIC单元上,NMA表示ASIC单元能支持的最大匹配数量,Θ(x)是指标函数,MA表示ASIC单元能支持的最大匹配长度,Mm表示功能单元m实际需要匹配的长度,FET表示精确匹配表,FLTT表示三元匹配表;则ASIC单元的匹配资源约束表达如下:
进一步地,所述子步骤(2.1)中,对异构设备中的FPGA单元的资源约束、功能约束进行建模具体为:
对FPGA单元的功能进行约束建模,针对FPGA单元对数据包头部字段的增加、修改和删除功能进行约束;FIL表示增加的数据段长度,FCL表示修改的数据段长度,FDL表示删除的数据段长度,GIL表示FPGA单元支持增加的数据段的最大长度,GCL表示FPGA单元支持修改的数据段的最大长度,GDL表示FPGA单元支持删除的数据段的最大长度,FheaderG表示FPGA单元支持的动作;则FPGA单元的功能约束表达如下:
对FPGA单元的解析和匹配资源进行约束建模,Lparser表示FPGA单元能支持的最大跳转长度,Sh表示在FPGA单元部署的头部的集合,V(h)表示头部字段h的有效性,V(h)=1表示该头部字段有效,反之无效;则对FPGA单元头部解析的约束表达如下:
对FPGA单元的匹配资源进行约束建模,KG表示FPGA单元支持匹配的最大长度,Km表示功能单元m的实际匹配长度,NMG表示FPGA能支持的最大匹配数量,ap,G∈{0,1}表示p是否应放置在FPGA单元上,xm,G∈{0,1}表示m是否放置在FPGA单元上;MG表示放置在FPGA单元上的所有功能单元的集合;则对FPGA单元的匹配资源的约束表达如下:
进一步地,所述步骤(3)中,所述功能映射转换规则具体为:将分配给异构设备不同单元的中间表示,结合对应的流表转换成json格式信息,再转换为异构设备的规则表达。
进一步地,所述步骤(4)包括以下子步骤:
(4.1)通过P4开发包含新网络功能的网络程序,重新生成新网络功能的规则表达;
(4.2)对比分析新旧两次规则表达;若新旧网络功能的规则表达不产生交集,则直接将新网络功能的规则表达下发至对应异构设备单元上,形成能加载至异构设备上的规则表达,实现网络功能的增量部署;若新旧网络功能的规则表达产生交集,则对比分析新旧两次规则表达,将相应的规则表达进行合并或者拆分,形成能加载至异构设备上的规则表达,完成网络的增量部署。
为实现上述目的,本发明还提供了一种基于异构设备的增量式编译系统,包括:
前端编译模块,用于对网络程序进行基本的语法语义检查,并将其转化为中间表示;
中端分配模块,用于将中间表示分配到不同的异构设备单元上;所述异构设备单元包括ASIC单元和FPGA单元;
后端编译模块,用于根据功能映射转换规则和流表信息,生成针对异构设备的不同规则表达,再将规则表达加载至异构设备上;
规则表达策略模块,用于对比分析新旧两次规则表达,形成能加载至异构设备上的规则表达。
为实现上述目的,本发明还提供了一种电子设备,包括存储器和处理器,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现上述的基于异构设备的增量式编译方法。
为实现上述目的,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述的基于异构设备的增量式编译方法。
与现有技术相比,本发明的有益效果是:本发明使用异构硬件设备,通过中端分配模块和规则表达策略模块等的协作,解决了传统设备在运行时新增网络功能会产生中断的问题,实现了网络功能的热更新,不影响原有业务。本发明相对于现有的技术,在新增网络功能时不需要重新编译全部功能程序加载至平台,造成原有业务的中断,仅编译新增的功能程序,将新增的功能加载至异构设备中,无缝升级网络功能。同时本发明通过对异构设备资源和功能约束的合理建模,实现了异构设备中异构单元的协同工作,解决了网络开发人员需要使用不同的开发语言为不同架构的设备分别开发网络功能的问题,本发明为网络开发者屏蔽了底层异构单元的差异,让网络编程人员可以使用统一的P4网络编程语言,在不中断的网络功能的前提下,在异构硬件设备上实现网络功能的增量部署。本发明的实现方法简便,用户使用门槛低,网络功能服务质量能得到显著保证。
附图说明
图1为本发明方法的流程图;
图2为本发明系统的流程图;
图3为本发明中端分配模块处理流程图;
图4为本发明ASIC后端编译模块的处理流程图;
图5为一种电子设备的示意图。
具体实施方式
下面结合附图,对本发明进行详细说明。在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
实施例1
参见图1,本发明提供的一种基于异构设备的增量式编译方法,包括以下步骤:
步骤一:用户通过协议无关的网络数据平面编程语言(Programming Protocol-independent Packet Processors,P4)开发网络程序,然后通过前端编译模块对P4开发的网络程序完成基本的语法语义检查,并将其转化为中间表示(IntermediateRepresentation,IR)。
步骤二:对异构设备的资源约束、功能约束等信息进行建模;中端分配模块根据异构设备的资源约束、功能约束等信息将中间表示IR分配到不同的异构设备单元上;这里的异构设备单元包括ASIC单元和FPGA单元;其中ASIC单元具备可编程解析功能,FPGA单元具备可编程数据包处理功能,ASIC单元和FPGA单元之间通过内置的Serdes接口相连。
如图3所示,所述步骤二通过以下子步骤来实现:
(2.1)对异构设备的资源约束、功能约束等信息进行建模。ASIC单元通过UDF实现对数据包的可编程解析,通过ACL和FlexE实现对数据包头部字段的增加,删除,修改等操作。ASIC单元中的资源和特定功能信息包括:UDF的种类和数量,其中种类包括匹配偏移量、匹配长度范围,即通过偏移起始位置、偏移长度来确定要匹配的数据字段在数据包头部的位置,通过匹配提取长度和流表信息来确定目标匹配数据包字段的值;ACL功能包括重定向、镜像、组播等,主要完成对数据包转发路径的修改,并不改变数据包字段的值;可编程编辑功能包括支持从数据包的二层头部、三层头部、四层头部开始,在指定偏移量位置增加、修改、删除指定长度的数据段,即通过指定偏移起始位置、偏移长度来确定要修改数据字段在数据包头部的位置,通过提取的长度和流表信息来确定需要修改字段的目标值。FPGA单元主要通过LUT、寄存器和RAM的组合实现对数据包的可编程解析,利用LUT实现整数加减运算,利用RAM资源实现对数据包头部字段的增加删除和修改操作,同时FPGA单元也支持对数据包的基本操作:重定向,组播,丢弃等功能。
(2.1.1)针对异构设备的ASIC单元的资源、特定功能约束进行建模。首先针对ASIC单元的功能进行约束建模,ASIC单元支持的功能包括两大类:一个是不改变数据包头部字段值(重定向、镜像、组播);另一个是对数据包头部字段的增加、删除、修改等操作,因为前者不受资源限制,这里主要对后者做约束。对ASIC单元的增加和删除功能做约束,Taw表示增加操作偏移的起始位置长度,Taw∈[0,14,34](0表示从二层头部开始偏移,14表示从三层头部开始偏移,34表示从四层头部开始偏移),Tdw表示删除操作偏移的起始位置长度,TAW表示ASIC单元支持增加操作的最大偏移量,在本实施例中TAW=126B,B表示字节,TDW表示ASIC单元支持删除操作的最大偏移量,在本实施例中TDW=126B,Tas表示所增加的数据段长度,Tds表示所删除的数据段长度,TAs表示ASIC单元支持增加的数据段的最大长度,在本实施例中TAS=48B,TDS表示ASIC单元支持删除的数据段的最大长度,在本实施例中TDS=48B,FAH表示增加数据包头部字段操作,FDH表示删除数据包头部字段操作,m表示放置在异构设备上的功能单元,xm,A∈{0,1}表示m是否应放置在ASIC单元上;则ASIC单元的增加、删除功能的约束表达如下:
对ASIC单元的修改功能做约束,Tcw表示增加操作偏移的起始位置长度,Tcw∈[0,14,34](0表示从二层头部开始偏移,14表示从三层头部开始偏移,34表示从四层头部开始偏移),TCW表示ASIC单元支持修改操作的最大偏移量,在本实施例中TCW=96B,Tcs表示所修改的数据段长度,TCS表示ASIC单元支持修改的数据段的最大长度,在本实施例中TCS=16B,FCH表示增加数据包头部字段操作,则ASIC单元的修改功能的约束表达如下:
即当需要增加、删除、修改的数据包字段的长度大于ASIC单元可以支持的最大长度,以及偏移超过ASIC单元可以支持的最大偏移量时,则该增加、删除和修改数据包字段的功能单元在ASIC单元上为0,也就是功能单元对应的中间表示IR不能分配到ASIC单元上实现。
其次针对ASIC单元的UDF资源进行建模,LK∈[0,14,34]表示不同匹配偏移的起始位置所占的偏移长度(0表示从二层头部开始偏移,14表示从三层头部开始偏移,34表示从四层头部开始偏移);SL表示匹配偏移的长度,ML表示匹配的长度,ILA表示ASIC单元支持匹配的数据包头部字段的范围最大值,在本实施例中ILA=128B;ap,A∈{0,1}表示p是否应放置在ASIC单元上,其中p∈m,xm,A∈{0,1}表示m是否应放置在ASIC单元上;NMA表示ASIC单元能支持的最大匹配数量,在本实施例中NMA=112。Θ(x)是指标函数,当x满足时等于1,不满足时等于0,MA表示ASIC单元能支持的最大匹配长度,Mm表示功能单元m实际需要匹配的长度,FET表示精确匹配表,FLTT表示三元匹配表;则ASIC单元的匹配的资源约束表达如下:
(2.1.2)针对异构设备中FPGA单元的资源、功能约束进行建模。首先针对FPGA单元的功能进行约束建模,与ASIC单元一样,主要针对FPGA对数据包头部字段的增加、修改和删除功能进行约束;FIL表示增加的数据段长度,FCL表示修改的数据段长度,FDL表示删除的数据段长度,GIL表示FPGA单元支持增加的数据段的最大长度,GCL表示FPGA单元支持修改的数据段的最大长度,GDL表示FPGA单元支持删除的数据段的最大长度,FheaderG表示FPGA单元支持的动作,FheaderG={FAH,FCH,FDH},FAH表示增加数据包头部字段操作,FCH表示增加数据包头部字段操作,FDH表示删除数据包头部字段操作;则FPGA单元的功能约束表达如下:
其次针对FPGA单元的解析和匹配资源进行约束建模,P4的头部解析过程可以看做是状态机的跳转,FPGA能支持的最大跳转长度为Lparser,Sh表示在FPGA单元部署的头部的集合,V(h)表示头部字段h的有效性,V(h)=1表示该头部字段有效,反之无效。对FPGA单元的头部解析的约束表达如下:
对FPGA的匹配资源进行约束建模,KG表示FPGA单元支持匹配的最大长度,Km表示功能单元m的实际匹配长度,NMG表示FPGA能支持的最大匹配数量,ap,G∈{0,1}表示p是否应放置在FPGA单元上,其中p∈m,m表示放置在异构设备上的功能单元,xm,G∈{0,1}表示m是否应放置在FPGA单元上;MG表示放置FPGA上的所有功能单元的集合,对FPGA单元的匹配资源的约束表达如下:
(2.2)中端分配模块根据异构设备的资源约束、功能约束等信息,基于ASIC单元优先分配原则将中间表示IR分配到异构设备的不同单元上;即在ASIC单元和FPGA单元都可以运行功能单元的情况下,优先将功能单元分配给ASIC单元。
步骤三:异构设备不同单元的后端编译模块根据功能映射转换规则和流表信息等,生成针对异构设备的不同规则表达,最后将规则表达加载至异构设备上,实现用户功能的加载。其中功能映射转换规则具体为:后端编译模块将分配给异构设备不同单元的中间表示IR,结合对应的流表信息转换成json格式信息,再转换为异构设备的规则表达。如图4所示,以中端分配模块分配给ASIC单元的中间表示IR为例,用户以P4语言编写的代码如下:
key=hdr.ipv4.dst_addr,action;
ipv4_set_egress_port(bit<9>port){standard_metadata.egress_spec=port;},
前端编译模块会将以上代码编译为中间表示IR,中端分配模块将中间表示IR分配给ASIC单元,ASIC单元的后端编译器结合对应的流表信息转化为json格式信息;即将p4.IngressPipeImpl.ipv4_exact.add_with_ipv4_set_egress_port(dst_addr=0x0A000003,port=3),匹配目的IP地址为10.0.0.3的数据包,从端口3转发,转化成json格式信息具体为:
其中key:dst_addr中的user_offset指的是匹配偏移的长度,即SL=240bits,length指的是匹配的长度,即ML=32bits,start=L2,表示LK=0;key:etherType中的SL=96bits,ML=16bits,LK=0;两个key都满足子步骤(2.2)中对ASIC单元的UDF资源约束;action动作是重定向,即映射为关键字redirect,满足子步骤(2.2)中对ASIC单元的功能约束。rule 1udf base L2 offset96match 0x0800 mask ffff interface 1,其中rule 1表示规则1,UDF的匹配从L2开始偏移12字节,因为掩码是ffff,则表示精确匹配0x0800字段,即etherType=0x0800,且该规则与端口1绑定,实现对IPv4数据包的可编程解析识别;将目的IP地址为10.0.0.3的数据包重定向到端口3,转化为ASIC的特定功能表达为:rule 2udfbase L2 offset 240match 0a000003mask ffffffff action redirect interface 3,其中rule 2表示规则2,UDF的匹配从L2开始偏移240bits,匹配目的IP地址为0a000003,即10.0.0.3的数据包,进行重定向(redirect)操作,转发到端口3。
步骤四:如果要新增网络功能,则用户只需要编写新的网络程序,然后经过前端编译模块、中端分配模块、后端编译模块重新生成新网络功能的规则表达。规则表达策略模块会对比分析新旧两次规则表达,结合异构设备的能力形成可加载至异构设备上的规则表达,实现网络功能的增量部署。
所述步骤四通过以下子步骤来实现:
(4.1)如果要新增网络功能,则用户只需要编写新的程序,然后经过前端编译模块、中端分配模块、后端编译模块生成新网络功能的规则表达。
(4.2)规则表达策略模块会对比分析新旧两次规则表达。在这里可能会出现两种情况:第一种情况是:新旧网络功能的规则表达不产生交集,则规则表达策略模块会直接将新网络功能的规则表达下发至对应异构设备单元上,实现网络功能的增量部署。第二种情况是:新旧网络功能的规则表达产生交集,则规则表达策略模块会对比分析新旧两次规则表达,将相应的规则表达进行合并或者拆分,以实现新旧网络功能的并存,完成网络的增量部署。
实施例2
在多模态网络中,需要实现网络模态的动态增加,当网络中一开始运行身份标识网络模态,实现身份标识数据包的单播转发。后面根据业务需求,需要增加对IPv4模态的单播转发,本发明提出的基于异构设备的增量式编译方法实现了动态无中断实现网络模态的增加。
步骤一:用户通过P4开发身份标识网络数据面功能程序,主要完成根据身份标识,即全局唯一标识符(GUID,Globally Unique IDentifier),GUID=101,进行网络寻址。前端编译模块完成基本的语法语义检查,并转化为IR。
步骤二:中端分配模块会根据ASIC单元和FPGA单元的资源约束、特定功能约束进行分配,因为身份标识网络数据面功能程序,主要完成对身份标识数据包的解析、对身份标识数据包的GUID匹配后重定向等功能,中端分配模块在满足ASIC单元约束条件下,根据ASIC单元优先分配的原则,将IR分配到ASIC上。
步骤三:ASIC单元的后端编译模块会根据ASIC单元的功能映射转换规则和流表信息生成针对ASIC的规则表达,在ASIC单元上可以实现2级UDF匹配,首先对数据包的类型进行判断,即rule 1udf base L2 offset 96match 0x27c0 mask ffff interface 2,其中rule 1表示规则1,UDF的匹配从L2开始偏移96bits,即偏移至etherType字段,因为掩码是ffff,则表示精确匹配0x27c0,且该规则与端口2绑定,实现对身份标识数据包的可编程解析识别;其次根据json信息实现对特定数据包的处理,将GUID=101的身份标识数据包进行网络寻址,即将数据包重定向到端口3,转化为ASIC的特定功能表达为:rule 2udf base L2offset 178match0x00000065mask ffffffff action redirect interface 3,其中rule 2表示规则2,UDF的匹配从L2开始偏移178bits,精确匹配0x00000065字段,即101,redirectinterface 3表示将GUID=101的数据包重定向到端口3。
步骤四:当用户需要新增网络模态时,即新增加对IPv4数据包的解析处理,用户只需要使用P4语言编写IPv4数据面程序,然后经过前端编译模块完成基本的语法语义检查,并转化为IR,在编写对IPV4数据包的操作时,实现IPv4的TTL字段减1的操作,而此操作在ASIC的特定功能约束条件外,即ASIC无法完成整数的加减运算,所以中端分配模块将IR转化为FPGA单元的规则表达。以上两次规则表达针对不同的子单元,不产生交集,所以可直接将新增的针对IPv4解析处理功能的规则表达加载至FPGA单元,实现网络功能的增量部署。
实施例3
与前述的基于异构设备的增量式编译方法的实施例相对应,本申请还提供了一种基于异构设备的增量式编译系统的实施例。
参见图2,该系统可以包括:
前端编译模块,用于对网络程序进行基本的语法语义检查,并将其转化为中间表示;
中端分配模块,用于将中间表示分配到不同的异构设备单元上;所述异构设备单元包括ASIC单元和FPGA单元;
后端编译模块,用于根据功能映射转换规则和流表信息,生成针对异构设备的不同规则表达,再将规则表达加载至异构设备上;
规则表达策略模块,用于对比分析新旧两次规则表达,形成能加载至异构设备上的规则表达。
关于上述实施例中的系统,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
实施例4
与前述基于异构设备的增量式编译方法的实施例相对应,本申请实施例还提供一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的基于异构设备的增量式编译方法。如图5所示,为本申请实施例提供的基于异构设备的增量式编译方法所在任意具备数据处理能力的设备的一种硬件结构图,除了图5所示的处理器、内存、DMA控制器、磁盘、以及非易失内存之外,实施例中系统所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
实施例5
与前述基于异构设备的增量式编译方法的实施例相对应,本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的基于异构设备的增量式编译方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
以上实施例仅用于说明本发明的设计思想和特点,其目的在于使本领域内的技术人员能够了解本发明的内容并据以实施,本发明的保护范围不限于上述实施例。所以,凡依据本发明所揭示的原理、设计思路所作的等同变化或修饰,均在本发明的保护范围之内。
Claims (10)
1.一种基于异构设备的增量式编译方法,其特征在于,包括如下步骤:
(1)通过P4开发网络程序,并对网络程序进行基本的语法语义检查,将其转化为中间表示;
(2)对异构设备的功能约束、资源约束进行建模;根据异构设备的功能约束、资源约束信息,将中间表示分配到不同的异构设备单元上;所述异构设备单元包括ASIC单元和FPGA单元;
(3)不同的异构设备单元根据功能映射转换规则和流表信息,生成针对异构设备的不同规则表达,再将规则表达加载至异构设备上;
(4)通过P4开发包含新网络功能的网络程序,通过步骤(1)-步骤(3)重新生成新网络功能的规则表达;对比分析新旧两次规则表达,形成能加载至异构设备上的规则表达,完成网络功能的增量部署。
2.根据权利要求1所述的基于异构设备的增量式编译方法,其特征在于,所述步骤(2)中,所述ASIC单元和FPGA单元之间通过内置的Serdes接口相连。
3.根据权利要求1所述的基于异构设备的增量式编译方法,其特征在于,所述步骤(2)包括以下子步骤:
(2.1)对异构设备的功能约束、资源约束进行建模,包括对异构设备中的ASIC单元和FPGA单元的功能约束、资源约束进行建模;
(2.2)根据异构设备的功能约束、资源约束信息,基于ASIC单元优先分配原则将中间表示分配到异构设备的不同单元上。
4.根据权利要求3所述的基于异构设备的增量式编译方法,其特征在于,所述子步骤(2.1)中,对异构设备中的ASIC单元的功能约束、资源约束进行建模具体为:
对ASIC单元的增加、删除功能做约束,Taw表示增加操作偏移的起始位置长度,Tdw表示删除操作偏移的起始位置长度,TAW表示ASIC单元支持增加操作的最大偏移量,TDW表示ASIC单元支持删除操作的最大偏移量,Tas表示所增加的数据段长度,TdS表示所删除的数据段长度,TAS表示ASIC单元支持增加的数据段的最大长度,TDS表示ASIC单元支持删除的数据段的最大长度,FAH表示增加数据包头部字段操作,FDH表示删除数据包头部字段操作,m表示放置在异构设备上的功能单元,xm,A∈{0,1表示m是否放置在ASIC单元上;则ASIC单元的增加、删除功能约束表达如下:
对ASIC单元的修改功能做约束,Tcw表示增加操作偏移的起始位置长度,TCW表示ASIC单元支持修改操作的最大偏移量,Tcs表示所修改的数据段长度,TCS表示ASIC单元支持修改的数据段的最大长度,FCH表示增加数据包头部字段操作,则ASIC单元的修改功能约束表达如下:
对ASIC单元的UDF资源进行建模,LK∈[0,14,34表示不同匹配偏移的起始位置所占的偏移长度;SL表示匹配偏移的长度,ML表示匹配的长度,ILA表示ASIC单元支持匹配的数据包头部字段的范围最大值,ap,A∈{0,1表示p是否放置在ASIC单元上,NMA表示ASIC单元能支持的最大匹配数量,Θ(x是指标函数,MA表示ASIC单元能支持的最大匹配长度,Mm表示功能单元m实际需要匹配的长度,FET表示精确匹配表,FLTT表示三元匹配表;则ASIC单元的匹配资源约束表达如下:
5.根据权利要求3所述的基于异构设备的增量式编译方法,其特征在于,所述子步骤(2.1)中,对异构设备中的FPGA单元的资源约束、功能约束进行建模具体为:
对FPGA单元的功能进行约束建模,针对FPGA单元对数据包头部字段的增加、修改和删除功能进行约束;FIL表示增加的数据段长度,FCL表示修改的数据段长度,FDL表示删除的数据段长度,GIL表示FPGA单元支持增加的数据段的最大长度,GCL表示FPGA单元支持修改的数据段的最大长度,GDL表示FPGA单元支持删除的数据段的最大长度,FheaderG表示FPGA单元支持的动作;则FPGA单元的功能约束表达如下:
对FPGA单元的解析和匹配资源进行约束建模,Lparser表示FPGA单元能支持的最大跳转长度,Sh表示在FPGA单元部署的头部的集合,V(h)表示头部字段h的有效性,V(h=1表示该头部字段有效,反之无效;则对FPGA单元头部解析的约束表达如下:
对FPGA单元的匹配资源进行约束建模,KG表示FPGA单元支持匹配的最大长度,Km表示功能单元m的实际匹配长度,NMG表示FPGA能支持的最大匹配数量,ap,G∈{0,1表示p是否应放置在FPGA单元上,xm,G∈{0,1表示m是否放置在FPGA单元上;MG表示放置在FPGA单元上的所有功能单元的集合;则对FPGA单元的匹配资源的约束表达如下:
6.根据权利要求1所述的基于异构设备的增量式编译方法,其特征在于,所述步骤(3)中,所述功能映射转换规则具体为:将分配给异构设备不同单元的中间表示,结合对应的流表转换成json格式信息,再转换为异构设备的规则表达。
7.根据权利要求1所述的基于异构设备的增量式编译方法,其特征在于,所述步骤(4)包括以下子步骤:
(4.1)通过P4开发包含新网络功能的网络程序,重新生成新网络功能的规则表达;
(4.2)对比分析新旧两次规则表达;若新旧网络功能的规则表达不产生交集,则直接将新网络功能的规则表达下发至对应异构设备单元上,形成能加载至异构设备上的规则表达,实现网络功能的增量部署;若新旧网络功能的规则表达产生交集,则对比分析新旧两次规则表达,将相应的规则表达进行合并或者拆分,形成能加载至异构设备上的规则表达,完成网络的增量部署。
8.一种基于异构设备的增量式编译系统,其特征在于,包括:
前端编译模块,用于对网络程序进行基本的语法语义检查,并将其转化为中间表示;
中端分配模块,用于将中间表示分配到不同的异构设备单元上;所述异构设备单元包括ASIC单元和FPGA单元;
后端编译模块,用于根据功能映射转换规则和流表信息,生成针对异构设备的不同规则表达,再将规则表达加载至异构设备上;
规则表达策略模块,用于对比分析新旧两次规则表达,形成能加载至异构设备上的规则表达。
9.一种电子设备,包括存储器和处理器,其特征在于,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现上述权利要求1-7任一项所述的基于异构设备的增量式编译方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7任一项所述的基于异构设备的增量式编译方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311201936.6A CN117278403B (zh) | 2023-09-18 | 2023-09-18 | 一种基于异构设备的增量式编译方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311201936.6A CN117278403B (zh) | 2023-09-18 | 2023-09-18 | 一种基于异构设备的增量式编译方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117278403A true CN117278403A (zh) | 2023-12-22 |
CN117278403B CN117278403B (zh) | 2024-05-24 |
Family
ID=89211578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311201936.6A Active CN117278403B (zh) | 2023-09-18 | 2023-09-18 | 一种基于异构设备的增量式编译方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117278403B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016077393A1 (en) * | 2014-11-12 | 2016-05-19 | Xilinx, Inc. | Heterogeneous multiprocessor program compilation targeting programmable integrated circuits |
CN106533966A (zh) * | 2016-05-27 | 2017-03-22 | 清华大学 | 一种网络服务的资源编排方法及装置 |
CN111343025A (zh) * | 2020-03-04 | 2020-06-26 | 中国科学技术大学苏州研究院 | 功能虚拟化网络中可扩展的服务器部署方法 |
CN112804152A (zh) * | 2020-12-30 | 2021-05-14 | 佛山赛思禅科技有限公司 | 一种支持分组通信网络寻址路由标识不断演进的方法及系统 |
CN114416150A (zh) * | 2022-01-18 | 2022-04-29 | 清华大学 | 可编程数据平面在运行时的更新方法及装置 |
CN114885047A (zh) * | 2022-07-12 | 2022-08-09 | 之江实验室 | 一种可编程网络的协议解析方法、系统和可读存储介质 |
-
2023
- 2023-09-18 CN CN202311201936.6A patent/CN117278403B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016077393A1 (en) * | 2014-11-12 | 2016-05-19 | Xilinx, Inc. | Heterogeneous multiprocessor program compilation targeting programmable integrated circuits |
CN107111663A (zh) * | 2014-11-12 | 2017-08-29 | 赛灵思公司 | 目标为可编程集成电路的异构型多处理器程序编译 |
CN106533966A (zh) * | 2016-05-27 | 2017-03-22 | 清华大学 | 一种网络服务的资源编排方法及装置 |
CN111343025A (zh) * | 2020-03-04 | 2020-06-26 | 中国科学技术大学苏州研究院 | 功能虚拟化网络中可扩展的服务器部署方法 |
CN112804152A (zh) * | 2020-12-30 | 2021-05-14 | 佛山赛思禅科技有限公司 | 一种支持分组通信网络寻址路由标识不断演进的方法及系统 |
CN114416150A (zh) * | 2022-01-18 | 2022-04-29 | 清华大学 | 可编程数据平面在运行时的更新方法及装置 |
WO2023138215A1 (zh) * | 2022-01-18 | 2023-07-27 | 清华大学 | 可编程数据平面在运行时的更新方法及装置 |
CN114885047A (zh) * | 2022-07-12 | 2022-08-09 | 之江实验室 | 一种可编程网络的协议解析方法、系统和可读存储介质 |
Non-Patent Citations (1)
Title |
---|
李超雷;向忠清;: "基于Ceilometer Alarm API的操作设计和实现", 计算机系统应用, no. 07, 15 July 2017 (2017-07-15) * |
Also Published As
Publication number | Publication date |
---|---|
CN117278403B (zh) | 2024-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110187885B (zh) | 一种量子程序编译的中间代码生成方法及装置 | |
Marrón et al. | FlexCup: A flexible and efficient code update mechanism for sensor networks | |
Dang et al. | Paxos made switch-y | |
US10819634B2 (en) | Packet edit processing method and related device | |
US12032933B2 (en) | Compiling system and compiling method for programmable network element | |
CN103218294B (zh) | 一种嵌入式系统的调试方法、调试转换装置和系统 | |
Bouchez et al. | Register allocation: What does the NP-completeness proof of Chaitin et al. really prove? or revisiting register allocation: Why and how | |
WO2011054223A1 (zh) | 一种可重定位文件动态加载的方法及装置 | |
KR20150047551A (ko) | 고성능 인터커넥트 코히어런스 프로토콜 | |
JP4041248B2 (ja) | コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法 | |
CN105553851A (zh) | 基于sdn的网络处理器微码和流表实现装置及方法 | |
CN107025115B (zh) | 一种适配多种接口采集的方法 | |
CN108804100B (zh) | 创建界面元素的方法、装置、存储介质及移动终端 | |
CN114327477A (zh) | 智能合约执行方法、装置、电子装置和存储介质 | |
CN116974580A (zh) | 多模态网络编译方法、系统和存储介质 | |
CN116088861A (zh) | 面向可编程交换芯片的p4后端编译方法及系统 | |
CN115442366A (zh) | 报文转发方法、装置、设备及介质 | |
CN117278403B (zh) | 一种基于异构设备的增量式编译方法和系统 | |
CN106484375B (zh) | 一种指令块加载方法、软交换设备及系统 | |
CN114924767A (zh) | 一种基于对齐空洞的内核数据类型动态扩展热补方法 | |
Ling et al. | Flow processing optimization with accelerated flow actions on high speed programmable data plane | |
US20200319875A1 (en) | Dynamic runtime programming of hardware tables | |
CN114257560A (zh) | 一种基于kni的交换机网络数据缓存实现方法 | |
WO2016085213A1 (ko) | 컴퓨터 수행 가능한 모델 역공학 방법 및 장치 | |
Yamamoto et al. | Component-based mruby platform for IoT devices |
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 |