CN115499312A - 基于fpga后端p4多模态智能网卡的整合配置方法 - Google Patents
基于fpga后端p4多模态智能网卡的整合配置方法 Download PDFInfo
- Publication number
- CN115499312A CN115499312A CN202211409470.4A CN202211409470A CN115499312A CN 115499312 A CN115499312 A CN 115499312A CN 202211409470 A CN202211409470 A CN 202211409470A CN 115499312 A CN115499312 A CN 115499312A
- Authority
- CN
- China
- Prior art keywords
- data
- fpga
- column
- configuration
- loading
- 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
Images
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/20—Network management software packages
-
- 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/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
-
- 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/0866—Checking the configuration
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Logic Circuits (AREA)
Abstract
本发明公开一种基于FPGA后端P4多模态智能网卡的整合配置方法:针对多模态网络场景应用需求,编写数据平面的多模态网络P4代码与控制平面的多模态网络规则文件,FPGA后端P4编译器将多模态网络P4代码编译后生成FPGA配置文件,发送至解析编码模块;解析编码模块接收FPGA配置文件,后读取多模态网络规则文件和FPGA资源利用表;解析编码模块分析FPGA配置文件和多模态网络规则文件,生成文件对应数据;解析编码模块解析文件对应数据,生成数据对应的加载表;配置校验模块读取加载表,生成对应配置表,将配置表配置到FPGA并生成对应的校验格式表,最后依据校验格式表读取配置表,从而生成校验表来验证配置正确性。
Description
技术领域
本发明涉及计算机网络领域,具体涉及一种基于FPGA后端P4多模态智能网卡的整合配置方法。
背景技术
随着现代网络技术的不断发展,网络应用领域的不断扩大与新型多模态智慧网络(以下简称多模态网络)的提出,一般网络设备已无法满足多模态网络技术领域日益增长的性能需求与功能需求。近些年基于P4语言实现网络可编程的网络设备应运而生。基于P4语言实现的网络设备由数据平面与控制平面两个平面协同实现完整的网络可编程功能,以满足多模态网络需求。其中数据平面由P4语言描述,实现多模态网络数据包包处理管道;控制平面用于实现多模态网络规则信息。P4语言的编译器实现分为前端、中端与后端。其中前端由较为通用的开源软件实现,极大丰富了网络技术领域的功能与通用性。但中端与后端由各厂商闭源设计,有着不同的性能表现。基于CPU后端的P4多模态智能网卡不需额外的硬件设计开发难度较低,却很难在网络性能上有所突破。基于ASIC后端的P4多模态智能网卡提高了网络性能,但设计、流片等成本高,且不利于后期维护、功能优化与升级。
基于FPGA后端的P4多模态智能网卡不仅可以提高网络灵活性,也利于后期的维护、功能优化与升级。但由于FPGA实现的P4多模态智能网卡数据平面与控制平面紧耦合,数据面信息与控制面信息均需配置在PFGA逻辑资源实现的各TCAM表与RAM表上,如何将数据平面信息与控制平面信息整合配置到FPGA中(数据平面信息与控制平面信息产生自通用处理器,其数据格式、组织方式与相互之间的依赖关系与FPGA内实际存储运行的数据格式与组织方式有明显区别,而目前基于如TCAM实现的智能网卡一般仅限于控制平面或流表的更新),并在FPGA有限的资源内确保配置信息的正确性(FPGA存储资源与计算资源有限,大部分资源将用于实现多模态网络可编程,常用的类似内存CRC校验技术需要额外存储与计算开销),缺少具体的实现方法。
发明内容
为了解决现有技术中存在的上述技术问题,本发明提出了一种基于FPGA后端P4多模态智能网卡的整合配置方法,将用软件数据结构描述的数据平面信息与控制平面信息重新编码后,基于FPGA资源利用表整合配置FPGA上实现的PARSER-TCAM加载表、PARSER-RAM加载表、MAU-TRAM加载表、MAU-TCAM加载表与MAU-RAM加载表,在完成对所述共5种加载表配置并校验后,FPGA即可正常完成多模态智能网卡的工作任务,其具体技术方案如下:
一种基于FPGA后端P4多模态智能网卡的整合配置方法,包括以下步骤:
步骤一:针对多模态网络场景应用需求,编写数据平面的多模态网络P4代码与控制平面的多模态网络规则文件,FPGA后端P4编译器将多模态网络P4代码编译后生成FPGA配置文件,并发送至解析编码模块;
步骤二:解析编码模块接收FPGA配置文件,后读取多模态网络规则文件,再读取FPGA资源利用表,基于所述FPGA资源利用表初始化FPGA加载表参数;
步骤三:解析编码模块分析FPGA配置文件和多模态网络规则文件,生成文件对应的数据;
步骤四:解析编码模块解析文件对应的数据,生成数据对应的加载表;
步骤五:配置校验模块读取加载表,生成对应配置表,将配置表配置到FPGA并生成对应的校验格式表,最后依据校验格式表读取FPGA中的配置表,从而生成校验表来验证配置正确性。
进一步的,所述步骤二中的FPGA加载表参数,包括:加载表最高层级参数、加载表最高条目参数、加载表标签位宽与加载表基地址参数;其中,加载表包括5类,分别为:PARSER-TCAM加载表、PARSER-RAM加载表、MAU-TRAM加载表、MAU-TCAM加载表与MAU-RAM加载表;
所述加载表最高层级参数、加载表最高条目参数的设定与所采用FPGA芯片逻辑存储资源数量相关,5类加载表有相同的加载表最高层级参数,以及各自独立的最高条目参数;各加载表有独立的数据标签由FPGA后端P4编译器确定,所述加载表标签位宽约束对应的数据标签列中各元素在FPGA内占用比特位宽度;所述加载表基地址参数跟所采用的PFGA芯片型号相关,每层加载表在FPGA内部有其独立的加载基地址。
进一步的,所述步骤三,具体包括:
步骤3.1:解析编码模块分析FPGA配置文件,生成3类数据:组合状态类数据、遍历分支类数据与匹配操作类数据;所述的3类数据均有相同的的数据结构;
步骤3.2:解析编码模块分析多模态网络规则文件,生成网络规则类数据。
进一步的,所述步骤四,具体包括:
步骤4.1:解析编码模块解析组合状态类数据,完成PARSER-TCAM加载表与PARSER-RAM加载表生成;所述PARSER-TCAM加载表行内容与所述PARSER-RAM加载表行内容一一对应,且默认行所在FPGA地址对应FPGA资源利用表中的基地址;
步骤4.2:解析编码模块解析遍历分支类数据,完成MAU-TRAM加载表生成;
步骤4.3:解析编码模块解析整合匹配操作类与网络规则类数据,并对整合后的数据进行编码,完成MAU-TCAM与MAU-RAM加载表生成;所述MAU-TCAM加载表行内容与所述MAU-RAM加载表行内容一一对应。
进一步的,所述步骤4.1,具体包括以下子步骤:
步骤4.1.1:解析编码模块解析组合状态类数据,组合状态类数据为结构体数据,结构体成员包含两类数据:TCAM类数据与RAM类数据;所述两类数据也均为结构体数据,结构体成员均包含三类:数据层级编号、数据标签数组、数据内容数组;
基于TCAM类数据的数据层级编号、数据标签数组与数据内容数组,并结合FPGA资源利用表中对应的PARSER-TCAM加载表标签位宽和PARSER-RAM加载表标签位宽,将所述TCAM类数据转换为多层级的TCAM类二维表,将所述RAM类数据转换为多层级的RAM类二维表;所述的TCAM类二维表和RAM类二维表均带有列标签、列标签位宽与行编号;
步骤4.1.2:步骤4.1.1中所述TCAM类二维表与RAM类二维表在行方向上一一对应,基于所述行方向的对应关系拼接TCAM类二维表与RAM类二维表,并以TCAM类中列标签为默认列的元素数据重排序,将元素数据值为0的行重排序至二维表数据首行,其中TCAM类索引列与实际FPGA内部两表映射相关,不参与重排序;
步骤4.1.3:将步骤4.1.2中拼接后的数据基于TCAM类二维表数据标签与RAM类二维表数据标签重新拆分;基于FPGA资源利用表中的PARSER-TCAM加载表基地址信息,为第一层级的TCAM类二维表创建地址列,所述地址列比特位宽为默认值,所述地址列第一个元素为第一层级的基地址,所述地址列后序元素按步长1累加,并最终生成第一层级的PARSER-TCAM加载表;同理,基于FPGA资源利用表中的PARSER-RAM加载表基地址信息,生成第一层级的PARSER-RAM加载表。
进一步的,所述步骤4.2,具体包括以下子步骤:
步骤4.2.1:解析编码模块解析遍历分支类数据,所述遍历分支类数据包含数据层级编号、数据标签数组、数据内容数组;基于所述遍历分支类数据的数据层级编号、数据标签数组与数据内容数组,并结合FPGA资源利用表中对应的MAU-TRAM加载表标签位宽信息,转换为多层级的TRAM类二维表;
步骤4.2.2:转换TRAM类二维表解析多状态列数据各元素为二进制,并转换二进制比特位长度:若长度不为8的整数倍,则将二进制数据向左补比特0直至长度为8的整数倍;所述得到的8的整数倍长度二进制数若比特位长度小于32,则将二进制数据向右补比特0直至比特位长度为32;所述转换长度后的32比特元素可划分为4个8比特单状态数据;
步骤4.2.3:将解析多状态mulit-parser-state列各元素数据进行单状态比特压缩,提取步骤4.2.2所述单状态数据的高3比特,并对3比特数据依次拼接,得到列元素位宽为12比特二进制数,将12比特二进制数转换为十六进制数得到压缩后多状态列;
步骤4.2.4:重新编码TRAM类二维表选择标识列:将列元素数据转换为二进制,并向左补0至基于列标签位宽约束长度;按比特位顺序反向编码比特数据并重新生成为十六进制;
步骤4.2.5:为TRAM类二维表创建地址列,地址列中各元素数值为步骤4.2.3所述压缩后解析多状态列元素数值加上FPGA资源利用表中MAU-TRAM加载表基地址数值,删除解析多状态列,并最终生成多层级的MAU-TRAM加载表。
进一步的,所述步骤4.3,具体包括以下子步骤:
步骤4.3.1:解析编码模块解析匹配操作类数据,所述匹配操作类数据为结构体数据,结构体成员包含两类:匹配信息类数据与操作信息类数据;所述两类数据也为结构体数据,结构体成员均包含两类:数据标签数组:一维字符串数组,数据内容数组:二维整型数组;基于所述数据标签数组与数据内容数组,将匹配信息类数据转换为匹配信息类二维表,将操作信息类数据转换为操作信息类二维表;
步骤4.3.2:整合步骤4.3.1所述匹配信息类二维表、操作信息类二维表与步骤3.2所述网络规则类数据,并基于FPGA资源利用表中MAU-TCAM加载表标签位宽新建三个列集:匹配码列集、动作码列集与头初始化列集;
其中,新建匹配码列集具体为新建匹配码列与RAM索引列;新建动作码列集具体为新建4组运算列、键列与值列;新建头初始化列集具体为新建4个初始化列和1个长度列;
步骤4.3.3:基于RAM索引列元素0的位置,将所述三个列集划分为多层;
步骤4.3.4:基于FPGA资源利用表中MAU-TCAM加载表标签位宽、基地址与基地址步长,整合通过步骤4.3.3划分的多层匹配码列与RAM索引列,生成多层MAU-TCAM加载表;
步骤4.3.5:基于FPGA资源利用表中的MAU-RAM加载表标签位宽、基地址与基地址步长信息,整合通过步骤4.3.3划分的多层4个运算列、4个键列、4个值列、4个初始化列与长度列,生成多层MAU-RAM加载表。
进一步的,所述步骤五,具体包括:
步骤5.1:配置校验模块读取步骤4.1、步骤4.2与步骤4.3中共5种加载表生成5种对应的配置表,调用FPGA驱动将所述5种配置表配置到FPGA,并生成5种校验格式表,校验格式表与配置表一一对应;
步骤5.2:配置校验模块调用FPGA驱动依据校验格式表读取已配置到FPGA中的配置表,生成校验表,验证步骤5.1配置正确性,正确情况下各校验表与配置表各表项数据一致。
进一步的,所述步骤5.1,具体包括以下子步骤:
步骤5.1.1:配置校验模块为各加载表添加预留列生成配置表,基于各加载表标签位宽信息,预留列的比特位宽与地址列除外的各列比特位宽的总和满足512比特;
步骤5.1.2:配置校验模块逐行读取各配置表,每行包括地址数据与合并后长度为512比特的数据,将地址左移4比特后按步长1累加生成16个连续地址,将对应512比特数据按比特位划分为16个32比特数,所述连续地址与32比特数即为FPGA驱动配置的地址与数据;
步骤5.1.3:配置校验模块生成各校验格式表,校验格式表与步骤5.1.1所述的各配置表一一对应:有相同的列标签,列标签位宽与地址列,余下数据均为0。
进一步的,所述步骤5.2,具体包括以下子步骤:
步骤5.2.1:配置校验模块逐行读取各校验格式表地址列数据,将地址左移4比特后按步长1累加生成16个连续地址,FPGA驱动从FPGA读取16个连续地址的数据,共拼成512比特数据;
步骤5.2.2:配置校验模块生成校验表,各校验表与各校验格式表有相同的列标签、列标签位宽与地址列;将步骤5.2.1所述512比特数据按校验格式表标签位宽信息划分512比特数据,并按校验表中的列标签位宽依次填入;
步骤5.2.3:配置校验模块对比各校验表与配置表内容数据,正确情况下各表项数据一致。
一种基于FPGA后端P4多模态智能网卡的整合配置装置,包括一个或多个处理器,用于实现所述的基于FPGA后端P4多模态智能网卡的整合配置方法。
一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现所述的基于FPGA后端P4多模态智能网卡的整合配置方法。
有益效果:
本发明将P4编译器生成的数据平面信息与用户定义的控制平面信息整合配置到FPGA,解决FPGA实现的P4多模态智能网卡遇到的数据平面与控制平面紧耦合及数据格式匹配,兼顾数据格式校验问题,以实现基于FPGA后端的P4多模态智能网卡功能,在提高网络灵活性的同时,也利于后期的维护、功能优化与升级。
附图说明
图1是本发明的一种基于FPGA后端P4多模态智能网卡的整合配置方法流程框图;
图2是本发明的一种基于FPGA后端P4多模态智能网卡的整合配置方法的主要流程示意图;
图3是本发明实施例的第1层PARSER-TCAM加载表与PARSER-RAM加载表生成示意图;
图4是本发明实施例的第1层MAU-TRAM加载表生成示意图;
图5是本发明实施例的匹配信息类二维表示意图;
图6是本发明实施例的操作信息类二维表与动作数组生成示意图;
图7是本发明实施例的匹配码列集示意图;
图8是本发明实施例的动作码列集示意图;
图9是本发明实施例的操作信息类二维表与初始化数组生成示意图;
图10是本发明实施例的初始化列集示意图;
图11是本发明实施例的第1层MAU-TCAM加载表示意图;
图12是本发明实施例的第1层MAU-RAM加载表示意图;
图13是本发明实施例的第1层级的PARSER-TCAM配置表示意图;
图14是本发明实施例的第1层级PARSER-TCAM校验格式表示意图;
图15是本发明实施例的一种基于FPGA后端P4多模态智能网卡的整合配置装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和技术效果更加清楚明白,以下结合说明书附图和实施例,对本发明作进一步详细说明。
如图1所示,本实施例的一种基于FPGA后端P4多模态智能网卡的整合配置方法的目的为将用软件数据结构描述的数据平面信息(FPGA配置文件)与控制平面信息(多模态规则文件)经过解析编码模块重新编码后,基于FPGA资源利用表生成FPGA上实现的5类加载表:PARSER-TCAM加载表、PARSER-RAM加载表、MAU-TRAM加载表、MAU-TCAM加载表与MAU-RAM加载表,并最终通过配置校验模块将各加载表写入FPGA。
如图2所示,本实施例的方法具体实现方式包括以下步骤:
步骤一:针对多模态网络场景应用需求,编写数据平面的多模态网络P4代码与控制平面的多模态网络规则文件,FPGA后端P4编译器将多模态网络P4代码编译后生成JSON格式的FPGA配置文件,并发送至解析编码模块;
步骤二:解析编码模块在接收到FPGA配置文件后读取PYTHON格式的多模态网络规则文件,再读取FPGA资源利用表,基于所述FPGA资源利用表初始化FPGA加载表参数,所述FPGA加载表参数包括加载表最高层级参数、加载表最高条目参数、加载表标签位宽与加载表基地址参数;
具体的,所述加载表最高层级参数、加载表最高条目参数设定与具体采用的FPGA芯片逻辑存储资源数量相关,所述5类加载表有相同的加载表最高层级参数,所述5类加载表有各自独立的最高条目参数;各加载表有独立的数据标签由FPGA后端P4编译器确定,所述加载表标签位宽约束对应的数据标签列中各元素在FPGA内占用比特位宽度;所述加载表基地址参数跟具体采用PFGA芯片型号相关,每层加载表在FPGA内部有其独立的加载基地址。
本实施例中,基于所述FPGA资源利用表约束5类加载表最高层级参数为4、最高条目参数为128; 基于所述FPGA资源利用表约束PARSER-TCAM加载表数据标签位宽为[1,16,16],约束PARSER-RAM加载表数据标签位宽为[1,16,8,16,8,5,16,8,5,16,8,5,16,8,5,10,8],约束MAU-TRAM加载表数据标签位宽为[0,16] (0标识该列实际不参与MAU-TRAM表生成),约束MAU-TCAM加载表数据标签位宽为[8,16,32,8,16,32,8,16,32,8,16,32,32,32,32,32,8],约束MAU-RAM加载表数据标签位宽为[80,16];基于所述FPGA资源利用表约束PARSER-TCAM加载基地址为0x6011000,基地址步长为0x2000(即第一层PARSER-TCAM加载基地址为0x6011000,第二层PARSER-TCAM加载基地址为0x6011000+1*0x2000,第三层PARSER-TCAM加载基地址为0x6011000+2*0x2000,第四层PARSER-TCAM加载基地址为0x6011000+3*0x2000,下同);约束PARSER-RAM加载基地址为0x6012000,基地址步长为0x2000;约束MAU-TRAM加载基地址为0x6020000,基地址步长为0x4000;约束MAU-TCAM加载基地址为0x6021000,基地址步长为0x4000;约束MAU-RAM加载基地址为0x6022000,基地址步长为0x4000。
步骤三:解析编码模块分析FPGA配置文件和多模态网络规则文件,生成文件对应的数据,具体包括:
步骤3.1:解析编码模块分析JSON格式的FPGA配置文件,生成3类数据。
所述FPGA配置文件中数据先后组织为不同的分段;
所述生成3类数据为依据数据分段将FPGA配置文件中数据分类,具体为: 3类数据按文件层级顺序依次分类为组合状态类、遍历分支类与匹配操作类,所述的3类数据均有相同的的数据结构,以本实施例组合状态类为例,包括:数据层级编号tbl_level、数据标签数组tcam_hdr与数据内容数组tcam_entrys。
步骤3.2:解析编码模块分析PYTHON格式的多模态网络规则文件,生成网络规则类数据。
所述多模态网络规则文件内容描述多模态网络P4代码中的多项表匹配规则;
所述网络规则类数据组织多项表匹配规则,其中每项表匹配规则为多个字典数据结构,包括表名称table、表处理默认选项default_action、表匹配字段match与表处理名称action_name。
步骤四:解析编码模块解析文件对应的数据,生成数据对应的加载表,具体包括:
步骤4.1:解析编码模块解析组合状态类数据,完成PARSER-TCAM加载表与PARSER-RAM加载表的生成,所述PARSER-TCAM加载表行内容与所述PARSER-RAM加载表行内容一一对应,且默认行所在FPGA地址对应FPGA资源利用表中的基地址,具体包括以下子步骤:
步骤4.1.1:解析编码模块解析组合状态类数据,组合状态类数据为结构体数据,结构体成员包含两类数据:TCAM类数据与RAM类数据;所述两类数据也均为结构体数据,结构体成员均包含三类:数据层级编号:整型;数据标签数组:一维字符串数组;数据内容数组:二维整型数组;
基于所述TCAM类数据的数据层级编号、数据标签数组与数据内容数组,并结合FPGA资源利用表中对应的PARSER-TCAM加载表标签位宽和PARSER-RAM加载表标签位宽,将所述TCAM类数据转换为多层级的TCAM类二维表,将所述RAM类数据转换为多层级的RAM类二维表;所述两类二维表均带有列标签、列标签位宽与行编号。
以本实施例第一层TCAM类数据为例,数据层级编号tbl_level=1,数据标签数组tcam_hdr= ["default", "key_data", "index"],数据内容数组tcam_entrys=[[1,16,0],[1,16,1],[1,16,2],[0,32,3]];结合FPGA资源利用表中对应的PARSER-TCAM加载表标签位宽信息 [1,16,16],将本实施例第一层TCAM类数据转换为第一层级的TCAM类二维表,如图3左上二维表所示。类似的,图3右上二维表为本实施例生成的第一层级的RAM类二维表(显示部分列)。
步骤4.1.2:步骤4.1.1中所述TCAM类二维表与RAM类二维表在行方向上一一对应,如图3中间二维表所示,基于所述行方向的对应关系拼接TCAM类二维表与RAM类二维表,并以TCAM类中列标签为默认列default的元素数据重排序,将元素数据值为0的行重排序至二维表数据首行,其中TCAM类index索引列与实际FPGA内部两表映射相关,不参与重排序。
步骤4.1.3:将步骤4.1.2中拼接后的数据基于TCAM类二维表数据标签与RAM类二维表数据标签重新拆分;如图3左下加载表所示,基于FPGA资源利用表中的PARSER-TCAM加载表基地址信息,为第一层级的TCAM类二维表创建地址列addr,所述地址列比特位宽默认为32,所述地址列第一个元素为第一层级的基地址0x6011000,所述地址列后序元素按步长1累加,并最终生成第一层级的PARSER-TCAM加载表;类似的,如图3右下加载表所示,基于FPGA资源利用表中的PARSER-RAM加载表基地址信息0x6012000,生成第一层级的PARSER-RAM加载表。
步骤4.2:解析编码模块解析遍历分支类数据,完成MAU-TRAM加载表生成,具体包括以下子步骤:
步骤4.2.1:解析编码模块解析遍历分支类数据,所述遍历分支类数据包含数据层级编号:整型,数据标签数组:一维字符串数组,数据内容数组:二维整型数组;基于所述遍历分支类数据的数据层级编号、数据标签数组与数据内容数组,并结合FPGA资源利用表中对应的MAU-TRAM加载表标签位宽信息,转换为多层级的TRAM类二维表。
以本实施例第一层遍历分支类数据为例,数据层级编号tbl_level=1;数据标签数组tram_hdr= [" multi_parser_state", "key_map"],数据内容数组tram_entrys=[[197889,3],[769,3],[33752321,17],[131841,17], [33817857,1], [33818113,1],[132097,1], [513,1]];并结合FPGA资源利用表中对应的MAU-TRAM加载表标签位宽信息[0,16](0标识该列实际不参与MAU-TRAM表生成),本实例生成的第一层TRAM类二维表如图4上表所示。
步骤4.2.2:转换TRAM类二维表解析多状态列数据各元素为二进制,并转换二进制比特位长度:若长度不为8的整数倍,则将二进制数据向左补比特0直至长度为8的整数倍;所述得到的8的整数倍长度二进制数若比特位长度小于32,则将二进制数据向右补比特0直至比特位长度为32;所述转换长度后的32比特元素可划分为4个8比特单状态数据。
具体的,转换TRAM类二维表解析多状态multi-parser-state列各元素为4个8比特单状态数据,以本实施例所述列第一个元素转换过程为例,将773转换为二进制1100 000101,转换的二进制数据比特位长度为10比特小于最小8的整数倍16比特,将二进制数据向左补比特0直至长度为16比特得到二进制数为0b0000 0011 0000 0101 ;将得到的16比特长度二进制数向右补比特0直至32比特长度,得到0b0000 0011 0000 0101 0000 0000 00000000;所述转换长度后的32比特二进制数可划分基于比特位置[m*8:(m+1)*8](m=0,1,2,3)划分为4个8比特单状态数据[0b00000011,0b00000101,0b00000000,0b00000000]。
步骤4.2.3:将解析多状态mulit-parser-state列各元素数据进行单状态比特压缩,提取步骤4.2.2所述单状态数据的高3比特,并对3比特数据依次拼接,得到列元素位宽为12比特二进制数,将12比特二进制数转换为十六进制数得到压缩后多状态列。
以本实施例步骤6.2产生的单比特状态数据为例,提取4个8比特单状态数据的高三位,得到[0b011,0b101,0b000,0b000],拼接得到12比特压缩后的多状态数据0b01110100 0000,并转换为16进制0x740。
步骤4.2.4:重新编码TRAM类二维表选择标识列key-map:将列元素数据转换为二进制,并向左补0至基于列标签位宽约束长度;按比特位顺序反向编码比特数据并重新生成为十六进制。
以本实施例所述选择标识列第一个元素转换过程为例,将3转换为二进制11,并向左补比特0至基于列标签位宽约束的长度16得到0b0000 0000 0000 0011,按比特位顺序反向编码比特数据得到0b1100 0000 0000 0000;将反向编码后的数据重新生成为十六进制得到0xc000。
步骤4.2.5:为TRAM类二维表创建地址列addr,地址列addr中各元素数值为步骤4.2.3所述压缩后解析多状态列元素数值加上FPGA资源利用表中MAU-TRAM加载表基地址数值,删除解析多状态列,并最终生成多层级的MAU-TRAM加载表。
以本实施例地址列addr第一个元素生成为例,解析多状态列第一个元素为0x740,MAU-TRAM加载表基地址数值为0x6020000,两者相加得到地址0x6020740;完成地址列addr生成后,删除解析多状态列,最终生成本实施例第一层MAU-TRAM加载表,如图4中下表所示。
步骤4.3:解析编码模块解析整合匹配操作类与网络规则类数据,并对整合后的数据进行编码,完成MAU-TCAM与MAU-RAM加载表生成,所述MAU-TCAM加载表行内容与所述MAU-RAM加载表行内容一一对应,具体包括以下子步骤:
步骤4.3.1:解析编码模块解析匹配操作类数据,所述匹配操作类数据为结构体数据,结构体成员包含两类:匹配信息类数据与操作信息类数据;所述两类数据也为结构体数据,结构体成员均包含两类:数据标签数组:一维字符串数组,数据内容数组:二维整型数组;基于所述数据标签数组与数据内容数组,将匹配信息类数据转换为匹配信息类二维表,将操作信息类数据转换为操作信息类二维表。以本实施例转换得到的匹配信息类二维表如图5所示,转换得到的操作信息类二维表如图6左表所示。
步骤4.3.2:整合步骤4.3.1所述匹配信息类二维表、操作信息类二维表与步骤3.2所述网络规则类数据,并基于FPGA资源利用表中MAU-TCAM加载表标签位宽新建三个列集:匹配码列集、动作码列集与头初始化列集。
具体的,步骤4.3.2中的新建匹配码列集具体为新建匹配码列match_code与RAM索引列ram_index,包括以下子步骤:
步骤a:所述匹配码列match_code元素与网络规则类数据中的表匹配规则一一对应,本实施例共有6项表匹配规则,则所述匹配列共有6个元素;
当所述元素对应表匹配规则中表处理默认选项有效时“default_action“:True,设置所述元素值为0。
步骤b:表匹配规则中的表匹配字段为字典结构,查询字典键在匹配信息类二维表中对应的信息身份标识,并从所述信息身份标识中提取重排序ID,按所述重排序ID值从小到大重排序字典。
具体的,表匹配规则中的表匹配字段为字典结构,例如表匹配规则中的表匹配字段 “match”,查询表匹配字典键“hdr.ethernet.etherType”与“hdr.ipv4.protocol”在匹配信息类二维表中对应的信息身份标识info_id为18446742974197923844与18446742974248256256,并将身份标识info_id转成16进制得到0xffffff0000000004与0xffffff0003000300,拼接所述16进制数的第9、10与16半字得到重排序ID为0x004与0x030,按所述重排序ID值从小到大重排序字典,0x004小于0x030,所述字典顺序保持不变。
步骤c:重排序后的字典值为二元数组,数组左值代表数据值,数组右值代表数据长度,将数据值转换为二进制并向左补比特0至数据长度。
本实施例中,步骤b所述重排序后的字典值为二元数组["ABCD", 16]与["E", 8],其中数组左值"ABCD"与"E"为数据值,数据右值16与8为数据长度,将数据值转换为二进制并向左补比特0至数据长度得到0b1010 1011 1100 1101与0b0000 1110。
步骤d:按比特位拼接步骤c所述的向左补比特0后的值,拼接完成后向右补比特0至 FPGA资源利用表中MAU-TCAM加载表标签位宽约束的长度;将所述向右补比特0后的数据转换为十六进制,即为匹配码列中的元素值。
具体的,在本实施例中,按比特位拼接步骤7.2.3所述0b1010 1011 1100 1101与0b0000 1110得到0b1010 1011 1100 1101 0000 1110,拼接完成后向右补比特0至 FPGA资源利用表中MAU-TCAM加载表标签位宽约束的长度80得到十六进制的匹配码列match_code中元素值0xabcd0e00000000000000,如图7所示。
步骤e:所述RAM索引列ram_index元素与网络规则类数据中的表匹配规则一一对应,当对应表匹配规则中表处理默认选项有效时,设置所述RAM索引列元素为0;RAM索引列剩余元素值按步长1累加;本实施例生成的RAM索引列ram_index如图7所示。
所述步骤4.3.2中的新建动作码列集具体为新建4组运算列opcode、键列key与值列data,具体包括以下子步骤:
步骤f:判断操作信息类二维表中操作码列不涉及新增头的操作,并将所述操作码列与其一一对应的操作左名称、操作左值、操作右名称、操作右值基于匹配信息类二维表转换为动作数组;
具体的,操作信息类二维表中操作码action_code列涉及新增头的操作码为7,将不涉及新增头的操作码action_code,和与其一一对应的操作左名称left_name、操作左值left_const、操作右名称right_name、操作右值right_const基于匹配信息类二维表转换为动作数组列action_group;如图6右表所示,action_group元素为长度为3的数组,数组第1个值与对应的操作码action_code一致;数组第2个值为若左名称left_name非None,则在匹配信息类二维表中查找对应的信息身份标识info_id,并提取拼接info_id十六进制变换后的第8、14与16半字,否则默认为0x1014;数组第3个值为若左名称left_name非None,则将右值right_const转换为十六进制并向右补比特0直至长度为32比特,否则将左值left_const与右值right_const各自转换为十六进制且向左补比特0至16比特长度,并前后拼接为32比特。
步骤g:合并属于同一动作名称action_name下的动作数组action_group,映射动作码列集包括四组运算列opcode[n]、键列key[n]与值列value[n],其中n=0,1,2,3;当所述动作数组数量小于4时,将剩余未映射的值用0代替;图7所示中属于动作名称action_name=“action1”的动作数组元素为['0x1', '0x61', '0x1230000']与['0x1', '0x60', '0x56780000'],映射为动作码列集如图9action_name列action1元素行所示。
所述步骤4.3.2中的新建头初始化列集具体为新建4个初始化列和1个长度列,具体包括以下子步骤:
步骤h:判断操作信息类二维表中操作码列,将涉及新增头操作的信息类二维表中操作码列、操作左名称列、操作左值列、操作右名称列、操作右值列基于匹配信息类二维表转换为带有数据、偏移量与长度信息的数组[数据, [偏移量, 长度]]。
具体的,操作信息类二维表中操作码action_code列涉及新增头的操作码为7,将涉及新增头的操作码action_code,和与其一一对应的操作左名称left_name、操作左值left_const、操作右名称right_name、操作右值right_const基于匹配信息类二维表转换为带有数据d、偏移量o与长度l信息的初始化数组[d, [o, l]];如图9右表所示,数据d对应操作右值right_const,偏移量o与长度l对应图5匹配信息类二维表中查询左名称left_name的偏移量offset与长度length。
步骤i:将步骤h生成的数组内数据转换成二进制,向左补比特0以满足长度要求,并基于偏移量按比特位拼接数组内数据,并计算得到十六进制数据总长度。
具体的,将步骤h生成的初始化数组内数据d转换成二进制,向左补比特0以满足长度l要求,并基于偏移量o按比特位拼接初始化数组内数据d,并计算得到十六进制数据总长度;如图9右表所示,初始化数组[0, [147, 1]]、[1, [148, 12]]、[7, [144, 3]]与[2048,[160, 16]]内各数据d按长度l要求转换为[0b0,[147,1]]、[0b0000 0000 0001, [148,12]]、[0b111, [144, 3]]与[0b0000 1000 0000 0000, [160, 16]],按偏移量o的144、147、148与160拼接数据得到0b111 0 000000000001 0000100000000000;计算数据总长度为1+12+3+16=32比特,转换为十六进制为0x20。
步骤j:将步骤i生成的拼接后数据向右补比特0至128比特长度且转换为十六进制,并按比特顺序填入初始化列集,初始化列集包含4个初始化列和1个长度列,每个初始化列宽度为32比特,长度列对应步骤i所述拼接后的数据总长度;各列内数据相同,行数与步骤4.3.2所述匹配码列一致。
本实施例中,具体为:将步骤i生成的拼接后数据向右补比特0至32*4=128比特长度且转换为十六进制得到0xe0010800 00000000 00000000 00000000,将数据和步骤i所述总长度填入4个初始化列hdr-key0、hdr-key1、hdr-key2、hdr-key3与hdr-lens;各列每行数据相同,行数与图7匹配码列一致,结果如图10所示。
步骤4.3.3:基于RAM索引列元素0的位置,将所述三个列集划分为多层,实施例中,基于图7RAM索引列ram_index元素0的位置,将图7所示匹配码列集,图8所示动作码列集与图10所示头初始化列集分为2层。
步骤4.3.4:基于FPGA资源利用表中MAU-TCAM加载表标签位宽[80,16]、基地址0x6021000与基地址步长0x4000,整合步骤4.3.3所述的多层匹配码列与RAM索引列,生成多层MAU-TCAM加载表,类似步骤4.1的生成2层MAU-TCAM加载表,其中第1层MAU-TCAM加载表如图11所示。
步骤4.3.5:基于FPGA资源利用表中的MAU-RAM加载表标签位宽、基地址与基地址步长信息,整合步骤4.3.3所述的多层4个操作列、4个键列、4个值列、4个初始化列与长度列,生成多层MAU-RAM加载表。
具体的,本实施例中,基于FPGA资源利用表中的MAU-RAM加载表标签位宽[8,16,32,8,16,32,8,16,32,8,16,32,32,32,32,32,8]、基地址0x6022000与基地址步长0x4000,整合步骤4.3.3所述的多层4个操作列opcode、4个键列key、4个值列data、4个初始化列hdr-key与长度列hdr-lens,类似步骤4.1生成2层MAU-RAM加载表,其中第1层MAU-RAM加载表如图12所示。
步骤五:配置校验模块读取加载表,生成对应配置表,将配置表配置到FPGA并生成对应的校验格式表,最后依据校验格式表读取FPGA中的配置表,从而生成校验表来验证配置正确性,正确情况下各校验表与配置表各表项数据一致,具体包括:
步骤5.1:配置校验模块读取步骤4.1、步骤4.2与步骤4.3中共5种加载表生成5种对应的配置表,调用FPGA驱动将所述5种加载表配置到FPGA,并生成5种校验格式表,校验格式表与配置表一一对应,具体包括以下子步骤:
步骤5.1.1:配置校验模块为各加载表添加预留列reserved生成配置表,基于各加载表标签位宽信息,预留列reserved的比特位宽与地址列除外的各列比特位宽的总和满足512比特。
以第1层级的PARSER-TCAM加载表(图3左下表)为例,添加比特位宽为479的预留列reserved,列中值均为0,第1层级的PARSER-TCAM配置表如图13上表所示。
步骤5.1.2:配置校验模块逐行读取各配置表,每行包括地址数据与合并后长度为512比特的数据,将地址左移4比特后按步长1累加生成16个连续地址,将对应512比特数据按比特位划分为16个32比特数,所述连续地址与32比特数即为FPGA驱动配置的地址与数据。第1层级PARSER-TCAM配置表的FPGA驱动配置地址与数据如图13中的表所示。
步骤5.1.3:配置校验模块生成各校验格式表,校验格式表与步骤5.1.1所述的各配置表一一对应:有相同的列标签,列标签位宽与地址列,余下数据均为0。第1层级PARSER-TCAM配置表的校验格式表如图14所示。
步骤5.2:配置校验模块调用FPGA驱动依据校验格式表读取已配置到FPGA中的配置表,生成校验表,验证步骤5.1配置正确性,正确情况下各校验表与配置表各表项数据一致,具体包括以下子步骤:
步骤5.2.1:配置校验模块逐行读取各校验格式表地址列数据,将地址左移4比特后按步长1累加生成16个连续地址,FPGA驱动从FPGA读取16个连续地址的数据,共拼成512比特数据。
步骤5.2.2:配置校验模块生成校验表,各校验表与各校验格式表有相同的列标签、列标签位宽与地址列;将步骤5.2.1所述512比特数据按校验格式表标签位宽信息划分512比特数据,并按校验表中的列标签位宽依次填入。
步骤5.2.3:配置校验模块对比各校验表与配置表内容数据,正确情况下各表项数据应一致。
与前述基于FPGA后端P4多模态智能网卡的整合配置方法的实施例相对应,本发明还提供了基于FPGA后端P4多模态智能网卡的整合配置装置的实施例。
参见图15,本发明实施例提供的一种基于FPGA后端P4多模态智能网卡的整合配置装置,包括一个或多个处理器,用于实现上述实施例中的基于FPGA后端P4多模态智能网卡的整合配置方法。
本发明基于FPGA后端P4多模态智能网卡的整合配置装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图15所示,为本发明基于FPGA后端P4多模态智能网卡的整合配置装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图15所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的基于FPGA后端P4多模态智能网卡的整合配置方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述,仅为本发明的优选实施案例,并非对本发明做任何形式上的限制。虽然前文对本发明的实施过程进行了详细说明,对于熟悉本领域的人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行同等替换。凡在本发明精神和原则之内所做修改、同等替换等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种基于FPGA后端P4多模态智能网卡的整合配置方法,其特征在于,包括以下步骤:
步骤一:针对多模态网络场景应用需求,编写数据平面的多模态网络P4代码与控制平面的多模态网络规则文件,FPGA后端P4编译器将多模态网络P4代码编译后生成FPGA配置文件,并发送至解析编码模块;
步骤二:解析编码模块接收FPGA配置文件,后读取多模态网络规则文件,再读取FPGA资源利用表,基于所述FPGA资源利用表初始化FPGA加载表参数;
步骤三:解析编码模块分析FPGA配置文件和多模态网络规则文件,生成文件对应的数据;
步骤四:解析编码模块解析文件对应的数据,生成数据对应的加载表;
步骤五:配置校验模块读取加载表,生成对应配置表,将配置表配置到FPGA并生成对应的校验格式表,最后依据校验格式表读取FPGA中的配置表,从而生成校验表来验证配置正确性。
2.如权利要求1所述的一种基于FPGA后端P4多模态智能网卡的整合配置方法,其特征在于,所述步骤二中的FPGA加载表参数,包括:加载表最高层级参数、加载表最高条目参数、加载表标签位宽与加载表基地址参数;其中,加载表包括5类,分别为:PARSER-TCAM加载表、PARSER-RAM加载表、MAU-TRAM加载表、MAU-TCAM加载表与MAU-RAM加载表;
所述加载表最高层级参数、加载表最高条目参数的设定与所采用FPGA芯片逻辑存储资源数量相关,5类加载表有相同的加载表最高层级参数,以及各自独立的最高条目参数;各加载表有独立的数据标签由FPGA后端P4编译器确定,所述加载表标签位宽约束对应的数据标签列中各元素在FPGA内占用比特位宽度;所述加载表基地址参数跟所采用的PFGA芯片型号相关,每层加载表在FPGA内部有其独立的加载基地址。
3.如权利要求2所述的一种基于FPGA后端P4多模态智能网卡的整合配置方法,其特征在于,所述步骤三,具体包括:
步骤3.1:解析编码模块分析FPGA配置文件,生成3类数据:组合状态类数据、遍历分支类数据与匹配操作类数据;所述的3类数据均有相同的数据结构;
步骤3.2:解析编码模块分析多模态网络规则文件,生成网络规则类数据。
4.如权利要求3所述的一种基于FPGA后端P4多模态智能网卡的整合配置方法,其特征在于,所述步骤四,具体包括:
步骤4.1:解析编码模块解析组合状态类数据,完成PARSER-TCAM加载表与PARSER-RAM加载表生成;所述PARSER-TCAM加载表行内容与所述PARSER-RAM加载表行内容一一对应,且默认行所在FPGA地址对应FPGA资源利用表中的基地址;
步骤4.2:解析编码模块解析遍历分支类数据,完成MAU-TRAM加载表生成;
步骤4.3:解析编码模块解析整合匹配操作类与网络规则类数据,并对整合后的数据进行编码,完成MAU-TCAM与MAU-RAM加载表生成;所述MAU-TCAM加载表行内容与所述MAU-RAM加载表行内容一一对应。
5.如权利要求4所述的一种基于FPGA后端P4多模态智能网卡的整合配置方法,其特征在于,所述步骤4.1,具体包括以下子步骤:
步骤4.1.1:解析编码模块解析组合状态类数据,组合状态类数据为结构体数据,结构体成员包含两类数据:TCAM类数据与RAM类数据;所述两类数据也均为结构体数据,结构体成员均包含三类:数据层级编号、数据标签数组、数据内容数组;
基于TCAM类数据的数据层级编号、数据标签数组与数据内容数组,并结合FPGA资源利用表中对应的PARSER-TCAM加载表标签位宽和PARSER-RAM加载表标签位宽,将所述TCAM类数据转换为多层级的TCAM类二维表,将所述RAM类数据转换为多层级的RAM类二维表;所述的TCAM类二维表和RAM类二维表均带有列标签、列标签位宽与行编号;
步骤4.1.2:步骤4.1.1中所述TCAM类二维表与RAM类二维表在行方向上一一对应,基于所述行方向的对应关系拼接TCAM类二维表与RAM类二维表,并以TCAM类中列标签为默认列的元素数据重排序,将元素数据值为0的行重排序至二维表数据首行,其中TCAM类索引列与实际FPGA内部两表映射相关,不参与重排序;
步骤4.1.3:将步骤4.1.2中拼接后的数据基于TCAM类二维表数据标签与RAM类二维表数据标签重新拆分;基于FPGA资源利用表中的PARSER-TCAM加载表基地址信息,为第一层级的TCAM类二维表创建地址列,所述地址列比特位宽为默认值,所述地址列第一个元素为第一层级的基地址,所述地址列后序元素按步长1累加,并最终生成第一层级的PARSER-TCAM加载表;同理,基于FPGA资源利用表中的PARSER-RAM加载表基地址信息,生成第一层级的PARSER-RAM加载表。
6.如权利要求5所述的一种基于FPGA后端P4多模态智能网卡的整合配置方法,其特征在于,所述步骤4.2,具体包括以下子步骤:
步骤4.2.1:解析编码模块解析遍历分支类数据,所述遍历分支类数据包含数据层级编号、数据标签数组、数据内容数组;基于所述遍历分支类数据的数据层级编号、数据标签数组与数据内容数组,并结合FPGA资源利用表中对应的MAU-TRAM加载表标签位宽信息,转换为多层级的TRAM类二维表;
步骤4.2.2:转换TRAM类二维表解析多状态列数据各元素为二进制,并转换二进制比特位长度:若长度不为8的整数倍,则将二进制数据向左补比特0直至长度为8的整数倍;所述得到的8的整数倍长度二进制数若比特位长度小于32,则将二进制数据向右补比特0直至比特位长度为32;所述转换长度后的32比特元素可划分为4个8比特单状态数据;
步骤4.2.3:将解析多状态mulit-parser-state列各元素数据进行单状态比特压缩,提取步骤4.2.2所述单状态数据的高3比特,并对3比特数据依次拼接,得到列元素位宽为12比特二进制数,将12比特二进制数转换为十六进制数得到压缩后多状态列;
步骤4.2.4:重新编码TRAM类二维表选择标识列:将列元素数据转换为二进制,并向左补0至基于列标签位宽约束长度;按比特位顺序反向编码比特数据并重新生成为十六进制;
步骤4.2.5:为TRAM类二维表创建地址列,地址列中各元素数值为步骤4.2.3所述压缩后解析多状态列元素数值加上FPGA资源利用表中MAU-TRAM加载表基地址数值,删除解析多状态列,并最终生成多层级的MAU-TRAM加载表。
7.如权利要求6所述的一种基于FPGA后端P4多模态智能网卡的整合配置方法,其特征在于,所述步骤4.3,具体包括以下子步骤:
步骤4.3.1:解析编码模块解析匹配操作类数据,所述匹配操作类数据为结构体数据,结构体成员包含两类:匹配信息类数据与操作信息类数据;所述两类数据也为结构体数据,结构体成员均包含两类:数据标签数组:一维字符串数组,数据内容数组:二维整型数组;基于所述数据标签数组与数据内容数组,将匹配信息类数据转换为匹配信息类二维表,将操作信息类数据转换为操作信息类二维表;
步骤4.3.2:整合步骤4.3.1所述匹配信息类二维表、操作信息类二维表与步骤3.2所述网络规则类数据,并基于FPGA资源利用表中MAU-TCAM加载表标签位宽新建三个列集:匹配码列集、动作码列集与头初始化列集;
其中,新建匹配码列集具体为新建匹配码列与RAM索引列;新建动作码列集具体为新建4组运算列、键列与值列;新建头初始化列集具体为新建4个初始化列和1个长度列;
步骤4.3.3:基于RAM索引列元素0的位置,将所述三个列集划分为多层;
步骤4.3.4:基于FPGA资源利用表中MAU-TCAM加载表标签位宽、基地址与基地址步长,整合通过步骤4.3.3划分的多层匹配码列与RAM索引列,生成多层MAU-TCAM加载表;
步骤4.3.5:基于FPGA资源利用表中的MAU-RAM加载表标签位宽、基地址与基地址步长信息,整合通过步骤4.3.3划分的多层4个运算列、4个键列、4个值列、4个初始化列与长度列,生成多层MAU-RAM加载表。
8.如权利要求7所述的一种基于FPGA后端P4多模态智能网卡的整合配置方法,其特征在于,所述步骤五,具体包括:
步骤5.1:配置校验模块读取步骤4.1、步骤4.2与步骤4.3中共5种加载表生成5种对应的配置表,调用FPGA驱动将所述5种配置表配置到FPGA,并生成5种校验格式表,校验格式表与配置表一一对应;
步骤5.2:配置校验模块调用FPGA驱动依据校验格式表读取已配置到FPGA中的配置表,生成校验表,验证步骤5.1配置正确性,正确情况下各校验表与配置表各表项数据一致。
9.如权利要求8所述的一种基于FPGA后端P4多模态智能网卡的整合配置方法,其特征在于,所述步骤5.1,具体包括以下子步骤:
步骤5.1.1:配置校验模块为各加载表添加预留列生成配置表,基于各加载表标签位宽信息,预留列的比特位宽与地址列除外的各列比特位宽的总和满足512比特;
步骤5.1.2:配置校验模块逐行读取各配置表,每行包括地址数据与合并后长度为512比特的数据,将地址左移4比特后按步长1累加生成16个连续地址,将对应512比特数据按比特位划分为16个32比特数,所述连续地址与32比特数即为FPGA驱动配置的地址与数据;
步骤5.1.3:配置校验模块生成各校验格式表,校验格式表与步骤5.1.1所述的各配置表一一对应:有相同的列标签,列标签位宽与地址列,余下数据均为0。
10.如权利要求9所述的一种基于FPGA后端P4多模态智能网卡的整合配置方法,其特征在于,所述步骤5.2,具体包括以下子步骤:
步骤5.2.1:配置校验模块逐行读取各校验格式表地址列数据,将地址左移4比特后按步长1累加生成16个连续地址,FPGA驱动从FPGA读取16个连续地址的数据,共拼成512比特数据;
步骤5.2.2:配置校验模块生成校验表,各校验表与各校验格式表有相同的列标签、列标签位宽与地址列;将步骤5.2.1所述512比特数据按校验格式表标签位宽信息划分512比特数据,并按校验表中的列标签位宽依次填入;
步骤5.2.3:配置校验模块对比各校验表与配置表内容数据,正确情况下各表项数据应一致。
11.一种基于FPGA后端P4多模态智能网卡的整合配置装置,其特征在于,包括一个或多个处理器,用于实现权利要求1至10中任意一项所述的基于FPGA后端P4多模态智能网卡的整合配置方法。
12.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现权利要求1至10中任意一项所述的基于FPGA后端P4多模态智能网卡的整合配置方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211409470.4A CN115499312B (zh) | 2022-11-11 | 2022-11-11 | 基于fpga后端p4多模态智能网卡的整合配置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211409470.4A CN115499312B (zh) | 2022-11-11 | 2022-11-11 | 基于fpga后端p4多模态智能网卡的整合配置方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115499312A true CN115499312A (zh) | 2022-12-20 |
CN115499312B CN115499312B (zh) | 2023-05-16 |
Family
ID=85115612
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211409470.4A Active CN115499312B (zh) | 2022-11-11 | 2022-11-11 | 基于fpga后端p4多模态智能网卡的整合配置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115499312B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116074208A (zh) * | 2023-03-24 | 2023-05-05 | 之江实验室 | 一种多模态网络的模态部署方法及模态部署系统 |
CN116166235A (zh) * | 2023-04-26 | 2023-05-26 | 深圳云豹智能有限公司 | 一种P4Target逻辑验证方法与系统 |
CN116860323A (zh) * | 2023-09-05 | 2023-10-10 | 之江实验室 | 一种基于p4的编译及fpga配置方法 |
CN117014235A (zh) * | 2023-10-07 | 2023-11-07 | 之江实验室 | 一种基于fpga灵活后端的智能网卡调度方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170262567A1 (en) * | 2013-11-15 | 2017-09-14 | Scientific Concepts International Corporation | Code partitioning for the array of devices |
CN109120624A (zh) * | 2018-08-27 | 2019-01-01 | 北京计算机技术及应用研究所 | 一种多平面松耦合高带宽数据交换系统 |
WO2020015201A1 (zh) * | 2018-07-14 | 2020-01-23 | 苏州大学张家港工业技术研究院 | 面向多应用pon的fpga收发器的单芯片onu |
CN111107061A (zh) * | 2019-11-30 | 2020-05-05 | 浪潮(北京)电子信息产业有限公司 | 一种智能网卡及其通讯方法 |
US20210049043A1 (en) * | 2019-08-15 | 2021-02-18 | Cisco Technology, Inc. | Dynamic hardware resource shadowing |
CN113746893A (zh) * | 2021-07-16 | 2021-12-03 | 苏州浪潮智能科技有限公司 | 一种基于fpga的智能网卡数据转发方法、系统及终端 |
CN114567688A (zh) * | 2022-03-11 | 2022-05-31 | 之江实验室 | 一种基于fpga的协同网络协议解析方法和装置 |
CN114995878A (zh) * | 2022-06-06 | 2022-09-02 | 深圳市芯源网络科技有限公司 | 一种自动生成网络数据转发面驱动代码的方法 |
CN115297059A (zh) * | 2022-07-18 | 2022-11-04 | 浙江大学 | 一种基于p4的传输层负载均衡系统 |
-
2022
- 2022-11-11 CN CN202211409470.4A patent/CN115499312B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170262567A1 (en) * | 2013-11-15 | 2017-09-14 | Scientific Concepts International Corporation | Code partitioning for the array of devices |
WO2020015201A1 (zh) * | 2018-07-14 | 2020-01-23 | 苏州大学张家港工业技术研究院 | 面向多应用pon的fpga收发器的单芯片onu |
CN109120624A (zh) * | 2018-08-27 | 2019-01-01 | 北京计算机技术及应用研究所 | 一种多平面松耦合高带宽数据交换系统 |
US20210049043A1 (en) * | 2019-08-15 | 2021-02-18 | Cisco Technology, Inc. | Dynamic hardware resource shadowing |
CN111107061A (zh) * | 2019-11-30 | 2020-05-05 | 浪潮(北京)电子信息产业有限公司 | 一种智能网卡及其通讯方法 |
CN113746893A (zh) * | 2021-07-16 | 2021-12-03 | 苏州浪潮智能科技有限公司 | 一种基于fpga的智能网卡数据转发方法、系统及终端 |
CN114567688A (zh) * | 2022-03-11 | 2022-05-31 | 之江实验室 | 一种基于fpga的协同网络协议解析方法和装置 |
CN114995878A (zh) * | 2022-06-06 | 2022-09-02 | 深圳市芯源网络科技有限公司 | 一种自动生成网络数据转发面驱动代码的方法 |
CN115297059A (zh) * | 2022-07-18 | 2022-11-04 | 浙江大学 | 一种基于p4的传输层负载均衡系统 |
Non-Patent Citations (3)
Title |
---|
RALF KUNDEL: "P4-CoDel: Experiences on Programmable Data Plane Hardware" * |
林耘森箫: "基于P4的可编程数据平面研究及其应用" * |
赵敏;田野;: "P4与POF协议无关可编程网络技术比较研究" * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116074208A (zh) * | 2023-03-24 | 2023-05-05 | 之江实验室 | 一种多模态网络的模态部署方法及模态部署系统 |
CN116074208B (zh) * | 2023-03-24 | 2023-07-07 | 之江实验室 | 一种多模态网络的模态部署方法及模态部署系统 |
CN116166235A (zh) * | 2023-04-26 | 2023-05-26 | 深圳云豹智能有限公司 | 一种P4Target逻辑验证方法与系统 |
CN116166235B (zh) * | 2023-04-26 | 2023-08-22 | 深圳云豹智能有限公司 | 一种P4Target逻辑验证方法与系统 |
CN116860323A (zh) * | 2023-09-05 | 2023-10-10 | 之江实验室 | 一种基于p4的编译及fpga配置方法 |
CN116860323B (zh) * | 2023-09-05 | 2023-12-22 | 之江实验室 | 一种基于p4的编译及fpga配置方法 |
CN117014235A (zh) * | 2023-10-07 | 2023-11-07 | 之江实验室 | 一种基于fpga灵活后端的智能网卡调度方法 |
CN117014235B (zh) * | 2023-10-07 | 2024-01-09 | 之江实验室 | 一种基于fpga灵活后端的智能网卡调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115499312B (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115499312B (zh) | 基于fpga后端p4多模态智能网卡的整合配置方法 | |
CN106227668B (zh) | 数据处理方法和装置 | |
CN101329665A (zh) | 解析标记语言文档的方法和解析器 | |
CN1866206A (zh) | 利用马尔可夫链根据uml规范生成性能测试 | |
CN112882974B (zh) | 一种json数据转换方法、装置、计算机设备和存储介质 | |
CN105659274A (zh) | 用于在可重构平台中解码数据流的方法和设备 | |
US20060239562A1 (en) | System and method for binary persistence format for a recognition result lattice | |
CN105450232A (zh) | 编码、解码方法以及编码装置和解码装置 | |
CN1462004A (zh) | 用于产生和使用改进的树形位图数据结构的方法和装置 | |
CN109889205B (zh) | 编码方法及系统、解码方法及系统、编解码方法及系统 | |
CN111249736B (zh) | 代码处理方法及装置 | |
CN107066551B (zh) | 一种树状数据的行式和列式存储方法及系统 | |
CN104252472A (zh) | 用于并行化数据处理的方法和装置 | |
CN106649217A (zh) | 数据的匹配方法及装置 | |
CN102203734B (zh) | 条件处理方法和设备 | |
CN115934147A (zh) | 软件自动修复方法、系统、电子设备及存储介质 | |
CN101202736A (zh) | 一种在通讯网络中实现编解码的方法 | |
US20160259764A1 (en) | Grammar generation for simple datatypes | |
CN106528437A (zh) | 数据储存系统与其相关方法 | |
US9134960B2 (en) | Numerical graphical flow diagram conversion and comparison | |
CN112328594A (zh) | 一种嵌入式装置模型数据管理方法及装置 | |
CN117216461A (zh) | 一种搭建遗传优化算法计算平台的方法及平台使用方法 | |
CN108073709A (zh) | 一种数据记录的操作方法、装置、设备和存储介质 | |
CN103226551A (zh) | 基于tcam的非确定性有限自动机的匹配方法和装置 | |
CN115310445A (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 |