当前位置: 首页 > 专利查询>李远平专利>正文

基于FPGA可编程会话表的处理方法、逻辑电路和设备技术

技术编号:30080849 阅读:14 留言:0更新日期:2021-09-18 08:38
本发明专利技术提供了一种基于FPGA可编程会话表的处理方法、逻辑电路和设备,该处理方法包括如下步骤:从输入信号的包头信息选择查找关键字,然后使用查找关键字进行会话表查找,计算会话表的HASH桶索引号,并使用HASH桶索引号读取DDR内存中的多个会话表项,接着使用查找关键字和读取的多个会话表项中的匹配关键字进行比较,如果相同则认为会话表匹配,根据匹配会话表中的操作数,执行修改包头信息、元数据信息、会话表操作数的动作,最后将修改后的包头信息、元数据信息送给后续的包转发模块,将修改后的会话表项回写到DDR内存中。采用本发明专利技术的技术方案,大大降低了FPGA会话管理的设计难度,显著缩短了研发周期。显著缩短了研发周期。显著缩短了研发周期。

【技术实现步骤摘要】
基于FPGA可编程会话表的处理方法、逻辑电路和设备


[0001]本专利技术属于电子信息
,尤其涉及一种基于FPGA(Field Programmable Gate Array,现场可编程门阵列)可编程会话表的处理方法、逻辑电路和设备。

技术介绍

[0002]在网络中,会话是两个通信设备之间的信息交换,会话在某个时间点建立,然后在稍后的某个时间点被结束。在TCP/IP协议中,一条会话由五元组(源IP地址、目的IP地址、源端口号、目的端口号、协议类型)唯一标识,基于五元组建立的查找表称为会话表。会话表在网络设备中有广泛的应用,例如在防火墙中建立会话表,可实现TCP的状态检测以及内网和外网IP地址的转换;在DPI(深度报文检测)设备中建立会话表,可实现上下行流量统计和TCP重传包统计;在四层负载均衡设备中建立会话表,利用会话表中的服务器外部和内部IP地址映射关系,可将同一条会话的所有数据包转发到被选中的同一个内部服务器,保证了内部服务器对同一条服务请求响应的完整性;在5G核心网的UPF网元中建立会话表,可实现基于会话的GTP隧道封装解封装、流量统计、计费信息发送以及路由转发等功能。
[0003]随着5G、物联网、云计算、AR与VR等技术的应用,全球网络流量面临爆发式增长,网络设备的接口带宽向着25G、40G,甚至100G演进,网络设备需要处理的会话新建速率达到了每秒百万条以上,并发会话数达到了千万甚至上亿条。对于传统的基于X86架构的纯软件网络设备,CPU无法将成千上万条会话表缓存到cache中,只能存储到DDR内存,而现在计算机的内存运行速度只有CPU速度的400分之一,软件收到的每个包都需要读取内存查询会话表,并且需要再次写内存更新会话表,这耗费了大量CPU运算资源,整个系统的性能也会随着会话表数量的增加而急剧下降。
[0004]采用NP(网络处理器)管理会话表,NP本质上还是CPU对指令代码的执行,因此和X86架构一样,需要先读取内存查询会话表,然后根据会话表内容执行动作,最后需要写内存更新会话表,CPU对指令的串行执行,以及对DDR内存的频繁读写,同样造成了会话表管理的性能瓶颈。
[0005]采用FPGA管理会话表,可以充分利用FPGA在并行处理能力方面的优势,将会话表查询、会话表动作执行、会话表更新做为流水线的不同处理阶段,实现并行处理,这大大提高了会话表处理的性能,很容易实现百万级新建,千万级并发的会话表管理。但采用FPGA管理会话表的难点在于设计难度较大,功能移植和升级困难,目前FPGA设计需要使用专用的硬件描述语言Verilog或VHDL,从电路级设计整个系统,存在开发门槛高、设计复杂、工作量大的困难,并且一旦基于FPGA的会话表管理功能设计、验证完成后,如果需要修改会话表功能或者改变DDR内存接口,则又要面对硬件电路的重新设计和验证,其开发周期远大于软件设计。在保证FPGA高性能管理会话表的同时,需要找到一种方法降低FPGA会话表管理设计和修改的难度,增强会话表管理功能的可移植性。P4是一种协议无关的数据包处理编程高级语言,用于网络的数据平面编程。P4语言支持对报文解析器(Parser),匹配

动作表(Match

Action Table)和报文逆解析器
(Deparser)这三个模块的完全可编程,同时也支持调用用户自定义的外部对象(Extern objects),利用P4语言的这个特性,考虑将会话表管理的固定功能做成一个外部对象,然后在P4程序中调用,将会话表管理的可编程功能定义为动作(Action),使用P4语言来描述该动作,这样就可以使用高级语言实现会话表管理功能的设计,达到降低设计难度,增强设计可移植性的目的。

技术实现思路

[0006]针对以上技术问题,本专利技术公开了一种基于FPGA可编程会话表的处理方法、逻辑电路和设备,解决了现有技术中FPGA会话表管理功能开发门槛高、设计复杂且功能固定问题。
[0007]对此,本专利技术采用的技术方案为:一种基于FPGA可编程会话表的处理方法,其特征在于:输入信号包括包头信息和元数据信息;其中包头信息是解析器解析出的包头协议字段;元数据信息是数据包的输入端口号、输出端口号、包长、优先级、多播组号等包信息。
[0008]所述基于FPGA可编程会话表的处理方法包括如下步骤:从输入信号的包头信息选择查找关键字,然后使用查找关键字进行会话表查找,计算会话表的HASH(哈希)桶索引号,并使用HASH桶索引号读取DDR内存中的多个会话表项,接着使用查找关键字和读取的多个会话表项中的匹配关键字进行比较,如果相同则认为会话表匹配,根据匹配会话表中的操作数,执行修改包头信息、元数据信息、会话表操作数的动作,最后将修改后的包头信息、元数据信息送给后续的包转发模块,将修改后的会话表项回写到DDR内存中。
[0009]采用此技术方案,实现了会话表查找、更新的固定功能和查找关键字构造、动作执行的可编程功能的分离,固定功能只需完成一次硬件电路设计,新产品或者已有产品的修改,只需要使用高级语言对查找关键字构造、会话表动作执行编程即可,大大降低了FPGA会话管理的设计难度,显著缩短了研发周期;而且可适配各种规格的DDR内存,提高了会话管理产品的可移植性。
[0010]作为本专利技术的进一步改进,所述会话表查找包括:采用HASH算法,使用预设的CRC32多项式对查找关键字进行CRC运算,得到会话表HASH桶索引号bucket_index,一个HASH桶对应多个会话表项,这些会话表项在内存中连续存放;将输入的HASH桶索引号bucket_index转换为DDR内存起始地址,并从DDR内存起始地址开始,连续发出HASH桶中所有会话表项的读命令;保存输入的查找关键字,在DDR控制器返回会话表项内容后,逐个提取同一HASH桶中会话表项的匹配关键字,与输入的查找关键字lookup_key_cmp信号做比较,如果这两个关键字相等,并且会话表项的有效标志位为1,则判断为会话表匹配,匹配信号置为1,将匹配信号match、匹配会话表项的DDR内存起始地址sess_addr和匹配会话表项内容sess_entry输出;如果没有找到匹配的会话表项,则匹配信号置为0,将匹配信号match、编号最小的空闲会话表项的DDR内存起始地址sess_addr输出。
[0011]作为本专利技术的进一步改进,所述会话表项的内容包括有效标志位、匹配关键字和
操作数,有效标志位表示会话表项有效,匹配关键字用于会话表查找时的关键字比较,操作数是执行会话表动作时用到的变量。
[0012]所述DDR内存起始地址由{HASH桶索引号,HASH桶会话表项编号,会话表项偏移地址}构成。
[0013]读命令时,通过HASH桶会话表项数量参数、会话表项数据位宽和DDR控制器接口数据位宽参数自动计算读DDR命令地址和数量。
[0014]采用先入先出的方式保存查找关键字,当同一HASH桶会话表项的读数据返回时,取一个保存的查找关键字,通过接本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA可编程会话表的处理方法,其特征在于:所述基于FPGA可编程会话表的处理方法包括如下步骤:从输入信号的包头信息选择查找关键字,然后使用查找关键字进行会话表查找,计算会话表的HASH桶索引号,并使用HASH桶索引号读取DDR内存中的多个会话表项,接着使用查找关键字和读取的多个会话表项中的匹配关键字进行比较,如果相同则认为会话表匹配,根据匹配会话表中的操作数,执行修改包头信息、元数据信息、会话表操作数的动作,最后将修改后的包头信息、元数据信息送给后续的包转发模块,将修改后的会话表项回写到DDR内存中。2.根据权利要求1所述的基于FPGA可编程会话表的处理方法,其特征在于:所述会话表查找包括:采用HASH算法,使用预设的CRC32多项式对查找关键字进行CRC运算,得到会话表HASH桶索引号bucket_index,一个HASH桶对应多个会话表项,这些会话表项在内存中连续存放;将输入的HASH桶索引号bucket_index转换为DDR内存起始地址,并从DDR内存起始地址开始,连续发出HASH桶中所有会话表项的读命令;保存输入的查找关键字,在DDR控制器返回会话表项内容后,逐个提取同一HASH桶中会话表项的匹配关键字,与输入的查找关键字lookup_key_cmp信号做比较,如果这两个关键字相等,并且会话表项的有效标志位为1,则判断为会话表匹配,匹配信号置为1,将匹配信号match、匹配会话表项的DDR内存起始地址sess_addr和匹配会话表项内容sess_entry输出;如果没有找到匹配的会话表项,则匹配信号置为0,将匹配信号match、编号最小的空闲会话表项的DDR内存起始地址sess_addr输出。3.根据权利要求2所述的基于FPGA可编程会话表的处理方法,其特征在于:所述会话表项的内容包括有效标志位、匹配关键字和操作数;所述DDR内存起始地址由{HASH桶索引号,HASH桶会话表项编号,会话表项偏移地址}构成;读命令时,通过HASH桶会话表项数量参数、会话表项数据位宽和DDR控制器接口数据位宽参数自动计算读DDR命令地址和数量;采用先入先出的方式保存查找关键字,当同一HASH桶会话表项的读数据返回时,取一个保存的查找关键字,通过接口信号lookup_key_cmp输出进行比较。4.根据权利要求3所述的基于FPGA可编程会话表的处理方法,其特征在于:使用FIFO保存包头信息、元数据信息,当输出匹配结果进行执行时,按照先入先出机制,从FIFO取出一个包的包头信息headers和元数据信息metadata进行执行;所述查找关键字采用高级语言可编程的方式,通过输入包头信息headers_in,将选定的包头信息headers_in中的包头协议字段连线到查找关键字信号,输出查找关键字信号lookup_key,产生会话表查找地址,并进行会话表关键字的比较;所述查找关键字采用五元组:源IP地址、目的IP地址、源端口号、目的端口号、协议类型;其中源IP地址、目的IP地址为IPv4首部或者IPv6首部的源IP地址、目的IP地址,协议类型为IPv4首部的协议字段或者IPv6首部的下一个首部协议字段,对于TCP协议报文,选择TCP首部的源端口号、目的端口号作为五元组的源端口号、目的端口号,对于UDP协议报文,选择UDP首部的源端口号、目的端口号作为五元组的源端口号、目的端口号;
所述会话表查找的输入信号包括查找关键字信号lookup_key、DDR控制器返回的读数据信号read_data,输出信号包括送给DDR控制器的读命令信号read_command,用于动作执行的会话表匹配信号match、会话表起始地址信号sess_addr、会话表项内容sess_entry;所述动作执行的内容包括按照包头信息、元数据信息构造新建会话的表项,对于会话表匹配的情况,按照动作描述代码对包头信息、元数据信息、会话表操作数进行逻辑运算、算术运算和赋值操作;执行完动作后,将修改的包头信息、元数据信息送给后续的包转发模块,由转发模块组装输出数据包,并转发到目的端口;将新建或修改的会话表项内容、会话表项的DDR内存起始地址输出,然后从会话表项的DDR内存起始地址开始,连续发出多个DDR内存地址的写命令,通过设置的DDR控制器接口数据位宽参数,自动计算出写DDR内存命令的数量。5.一种基于FPGA的可编程会话表的逻辑电路,其特征在于,其包括:包信息存储模块,用于输入的包头信息、元数据信息的存储,当需要执行动作时,将包头信息、元数据信息从缓存取出,送给动作执行模块;查找关键字构造模块,用于产生会话表查找关键字,并将查找关键字输出给会话表查找模块;会话表查找模块,用于会话表的查找,并将匹配的会话表项输出给动作执行模块;动作执行模块,用于会话表的动作执行,按照会话表查找模块送来的查找结果,修改并输出包头信息、元数据信息、会话表操作数;写会话表模块,用于完成会话表项的写操作;读写仲裁模块,用于会话表查找模块和写会话表模块的读写请求仲裁,并将读或写命令发送给DDR控制器。6.根据权利要求5所述的一种基于FPGA的可编程会话表的逻辑电路,其特征在于:所述会...

【专利技术属性】
技术研发人员:李远平
申请(专利权)人:李远平
类型:发明
国别省市:

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

1