【技术实现步骤摘要】
基于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中,只能存储到D ...
【技术保护点】
【技术特征摘要】
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的可编程会话表的逻辑电路,其特征在于:所述会...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。