一种自动生成网络数据转发面驱动代码的方法技术

技术编号:34812257 阅读:16 留言:0更新日期:2022-09-03 20:21
本发明专利技术提供一种自动生成网络数据转发面驱动代码的方法,包括步骤如下:S1:提取P4代码中查找表的元信息;S2:为查找表分配空间,生成表项起始地址;S3:根据查找表的元信息生成软件驱动代码中的表项和查找表数据结构;S4:初始化全局查找表的表项和表的起始地址,封装参数数据结构;S5:根据查找表的算法类型,生成查找算法正文,自动生成操作表项API;S6:生成每个查找表的操作编程接口,关联查找算法正文。本发明专利技术自动生成网络数据转发面驱动代码的方法,自动生成相适配的驱动代码,简化了开发到功能验证的过程,省去人工适配过程,节省公司宝贵的人力资源,提高了开发效率。提高了开发效率。提高了开发效率。

【技术实现步骤摘要】
一种自动生成网络数据转发面驱动代码的方法


[0001]本专利技术涉及可编程网络数据转发面的
,具体涉及一种自动生成网络数据转发面驱动代码的方法。

技术介绍

[0002]P4是一种协议无关的数据包处理编程语言,常用于网络数据转发平面功能设计,来实现网络可编程功能,提高网络灵活性。开发人员使用P4完成功能设计后,使用前端编译器生成IR文件和P4info文件,其中IR文件为中间文件,供后端编译器生成硬件使用的比特文件,IR文件简称为中间文件;P4info文件为描述查找表信息、执行动作等信息文件,P4info文件简称为信息文件。
[0003]在SDN网络(软件定义网络)中,控制器通过加载P4info文件,识别每个查找表的所有描述信息,通过P4 Runtime提供的编程接口下发控制信息,实现对P4设备的灵活配置。这些操作API(Application Programming Interface,应用程序编程接口)传输的是符合protobuf协议的数据交换格式的通用数据。但是当操作的P4目标设备为FPGA、ASIC等其他实现时,由于P4 Runtime并没有明确定义或者实现了具体的软件驱动,对接到配置P4实现的某个查找表表项时,需要根据P4程序实现相关驱动,这个软件驱动包括对每个查找表项的新增、修改、获取、删除等操作。
[0004]其中Protobuf(Protocol Buffers)是谷歌开发的一款与语言无关,平台无关,可扩展,轻量级高效的序列化结构的数据格式,用于将自定义数据结构序列化成字节流,和将字节流反序列化为数据结构。
[0005]现有的自动化生成驱动代码的方法如CN201210497957.2、CN201810629021.8、CN201110432630.2和CN201710813453.X等,这些方案并不适用于自动生成可编程转发面驱动,或者需要大量修改自动生成代码的逻辑,过程较为繁琐。现提出由P4代码,解析并自动生成驱动代码的方法。

技术实现思路

[0006]本专利技术的目的在于提供一种自动生成网络数据转发面驱动代码的方法,可以自动生成相适配的驱动代码和简化了开发到功能验证的过程。
[0007]本专利技术提供一种自动生成网络数据转发面驱动代码的方法,包括步骤如下:
[0008]S1:提取P4代码中查找表的元信息;
[0009]S2:为查找表分配空间,生成表项起始地址;
[0010]S3:根据查找表的元信息生成软件驱动代码中的表项和查找表数据结构;
[0011]S4:初始化全局查找表的表项和表的起始地址,封装参数数据结构;
[0012]S5:根据查找表的算法类型,生成查找算法正文,自动生成操作表项API,包括表项的获取、新增、删除等操作;
[0013]S6:生成每个查找表的操作编程接口,关联查找算法正文;对每个查找表都生成多
种操作编程接口,操作编程接口包括新增表项、删除表项和获取表项。
[0014]进一步地,P4代码由一P4编译器编译,P4编译器包括前端编译器和后端编译器,前端编译器对P4代码编译生成中间文件,后端编译器以该中间文件作为输入,编译生成硬件使用的硬件比特文件,同时自动生成相适配的软件驱动代码;其中中间文件具有P4代码的查找表信息和执行动作的信息文件。
[0015]进一步地,步骤S1的具体方法为:后端编译器以中间文件作为输入源,解析出中间文件内的每个查找表的元信息,表的元信息包括表的名称、查找表的大小、字段名称、每个字段的位宽、每个字段的类型和查找算法类型。
[0016]进一步地,步骤S2的具体方法为:在后端编译器生成硬件比特文件时,为每个查找表分配一段物理空间,这段物理空间由物理起始地址和长度组成,这个物理起始地址就是表的起始地址,查找表的起始地址和步骤S1解析出的查找表的元信息组成了完整的查找表描述信息。
[0017]进一步地,步骤S3的具体方法为:对每个查找表的描述信息,生成一份对应的查找表数据结构;查找表的描述信息和查找表数据结构是一一对应关系,查找表数据结构定义了表项和查找表的起始地址;其中表项定义了查找表所有的元信息。
[0018]进一步地,生成表项过程具体为:遍历表中的所有字段,根据字段的顺序和字段的位宽,对字段进行拼接或者切分,使其满足4字节对齐,当最后一个字段没满足4字节宽度时,使用一个占位的字段来填充使其满足对齐。
[0019]进一步地,对步骤S3生成的每个查找表数据结构,创建这种查找表数据结构类型的一个全局变量,并且依据查找表的描述信息初始化该全局变量的起始地址和所有表项;根据查找表的元信息,按照参数类型对需传参的参数进行封装,生成相应的封装参数数据结构。
[0020]进一步地,查找表为二层查找表,其中查找表的查找关键字为网络数据包的目的MAC地址,查找算法类型为精确匹配;对匹配查找表表项的数据包执行转发操作,对不匹配的数据包执行丢弃操作;对于步骤S3中“根据查找表的元信息生成软件驱动代码中的表项”的具体方法为:以二层查找表的元信息作为依据,生成软件驱动代码且定义名称为二层查找表表项的数据结构类型。
[0021]进一步地,步骤S4的“初始化全局查找表的表项和表的起始地址”的具体方法为:以二层查找表的元信息作为依据,生成驱动代码中类型为二层转发查找表的数据结构。
[0022]进一步地,步骤S6的“生成每个查找表的操作编程接口,关联查找算法正文”的具体方法为:根据查找表的查找算法类型,生成和硬件查找表一致的查找算法正文,此次生成的是精确匹配的查找正文,生成操作表项的API函数,并将操作API函数和查找算法正文关联起来。
[0023]本专利技术自动生成网络数据转发面驱动代码的方法,自动生成相适配的驱动代码,简化了开发到功能验证的过程,省去人工适配过程,节省公司宝贵的人力资源,提高了开发效率;提高了代码质量,能够自动适配对P4代码中对查找表的改动,避免人工适配过程中不必要的人为编写错误;支持已有网络功能与创新的网络功能,大大提高了网络功能设计的灵活性;能够显著缩短由研发到功能验证的时间,提高产品研发效率。
附图说明
[0024]后文将参照附图以示例性而非限制性的方式详细描述本专利技术的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
[0025]图1是本专利技术实施例实现自动生成驱动代码的功能结构图;
[0026]图2是本专利技术一种自动生成网络数据转发面驱动代码的方法的过程图。
具体实施方式
[0027]本专利技术公开一种自动生成网络数据转发面驱动代码的方法,本专利技术采用的P4语言是一种协议无关的数据包处理编程语言。
[0028]如图1所示为由P4代码自动生成驱动代码的功能结构图,P4代码为使用P4语言编写的代码,P4代码由一P4编译器编译,P4编译器包括前端编译器和后端编译器,开发人员采用P4语言进行网络数据转发面的功能设计,前本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种自动生成网络数据转发面驱动代码的方法,其特征在于,包括步骤如下:S1:提取P4代码中查找表的元信息;S2:为查找表分配空间,生成表项起始地址;S3:根据查找表的元信息生成软件驱动代码中的表项和查找表数据结构;S4:初始化全局查找表的表项和表的起始地址,封装参数数据结构;S5:根据查找表的算法类型,生成查找算法正文,自动生成操作表项API,包括表项的获取、新增、删除等操作;S6:生成每个查找表的操作编程接口,关联查找算法正文;对每个查找表都生成多种操作编程接口,操作编程接口包括新增表项、删除表项和获取表项。2.根据权利要求1所述的自动生成网络数据转发面驱动代码的方法,其特征在于,P4代码由一P4编译器编译,P4编译器包括前端编译器和后端编译器,前端编译器对P4代码编译生成中间文件,后端编译器以该中间文件作为输入,编译生成硬件使用的硬件比特文件,同时自动生成相适配的软件驱动代码;其中中间文件具有P4代码的查找表信息和执行动作的信息文件。3.根据权利要求2所述的自动生成网络数据转发面驱动代码的方法,其特征在于,步骤S1的具体方法为:后端编译器以中间文件作为输入源,解析出中间文件内的每个查找表的元信息,表的元信息包括表的名称、查找表的大小、字段名称、每个字段的位宽、每个字段的类型和查找算法类型。4.根据权利要求2所述的自动生成网络数据转发面驱动代码的方法,其特征在于,步骤S2的具体方法为:在后端编译器生成硬件比特文件时,为每个查找表分配一段物理空间,这段物理空间由物理起始地址和长度组成,这个物理起始地址就是表的起始地址,查找表的起始地址和步骤S1解析出的查找表的元信息组成了完整的查找表描述信息。5.根据权利要求2所述的自动生成网络数据转发面驱动代码的方法,其特征在于,步骤S3的具体方法为:对每个查找表的描述信息,生成一份对应的查找表数据结构;查找表的描述信息和查找表数据结构是...

【专利技术属性】
技术研发人员:李广松
申请(专利权)人:深圳市芯源网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1