一种基于FPGA的SNAT系统及方法技术方案

技术编号:21777693 阅读:23 留言:0更新日期:2019-08-03 23:21
本发明专利技术提供了一种基于FPGA的SNAT系统及方法,包括RAM块单元、A端口单元、B端口单元和内网接口单元、外网接口单元;RAM块单元用于联合A端口单元进行SNAT转换和SNAT链接跟踪;A端口单元用于FPGA接收内网接口单元或外网接口单元传输的IP数据包,并通过RAM块单元采用HASH散列循环查找的方式进行SNAT转换和SNAT链接跟踪;B端口单元用于进行RAM块单元中SNAT表项的周期维护;内网接口单元和外网接口单元用于接收IP数据包。本发明专利技术通过设计FPGA中的内部资源RAM块单元,采用8个RAM块并行,减少因为没有散列到而浪费的概率,使得RAM资源得到较好的利用,较大发挥了FPGA的性能。

A SNAT System and Method Based on FPGA

【技术实现步骤摘要】
一种基于FPGA的SNAT系统及方法
本专利技术涉及通信
,具体涉及一种基于FPGA的SNAT系统及方法。
技术介绍
SNAT(SourceNetworkAddressTranslation),源地址转换,其作用是将IP数据包的源地址转换成另外一个地址,它永远会在数据包发送包到网络之前完成。例如,当内网的主机数量比较多,但是该组织只有一个合法的IP地址,当内网主机往外发送数据包时,则需要修改数据包的IP地址和TCP/UDP端口号,通过修改IP地址和端口的方法就可以使内网中所有的主机都能访问外网。然而,在内网主机和外网主机的数量均比较多的情况下,SNAT源地址转换的通信过程将更复杂,端口号转换存在冲突和通信效率低等问题将随之而来。因此,如何使内网主机和外网主机之间能够有效可靠地进行SNAT转换,且使得SNAT转换查找冲突降低以及提高通信效率、充分利用内部RAM资源等问题是目前急需解决的问题。为了解决上述所存在的问题,人们一直在寻求一种理想的技术解决方案。
技术实现思路
本专利技术的目的在于针对现有技术中存在的不足,从而提供一种基于FPGA的SNAT系统及方法,通过充分利用FPGA中的内部资源RAM块单元,采用HASH映射查找SNAT表项的方式有效实现SNAT转换和SNAT链接跟踪,解决查找冲突较大的问题,保证内网和外网之间通信的可靠性和效率。为达到上述目的,本专利技术采用的技术方案如下:一种基于FPGA的SNAT系统,包括:RAM块单元、A端口单元、B端口单元和内网接口单元、外网接口单元;所述RAM块单元分别与所述A端口单元、所述B端口单元连接,所述A端口单元分别与所述内网接口单元、所述外网接口单元连接;所述RAM块单元为FPGA的内部资源,包括有SNAT表项,用于联合所述A端口单元进行SNAT转换和SNAT链接跟踪;所述A端口单元用于FPGA接收所述内网接口单元或外网接口单元传输的IP数据包,并通过所述RAM块单元采用HASH散列循环查找的方式进行SNAT转换和SNAT链接跟踪;所述B端口单元用于进行所述RAM块单元中SNAT表项的周期维护;所述内网接口单元和所述外网接口单元用于接收IP数据包,并将所述IP数据包传输至所述A端口单元进行处理。进一步的,所述SNAT表项的内容包括源IP、源端口号、HASH值、协议号、时间戳和有效标识。进一步的,所述RAM块单元的数量为8个,且8个RAM块单元并行。进一步的,所述SNAT表项的周期维护包括通过所述B端口单元周期性进行所述SNAT表项的删除和保留。本专利技术还提供了一种应用权利要求1所述的基于FPGA的SNAT系统的方法,所述方法包括SNAT转换方法和SNAT链接跟踪方法;所述SNAT转换方法的具体步骤包括:步骤1,内网接口单元接收IP数据包并传输至A端口单元进行源IP和源端口号的解析;步骤2,所述A端口单元将所述源IP和源端口号作为输入信息进行HASH映射后得到HSAH值;所述HASH值包括HASH1值、HASH2值、HASH3值和HASH4值;步骤3,通过所述HASH值依次查找所述RAM块单元,若所述RAM块单元中存在包括有所述源IP的SNAT表项,则匹配成功,并将所述源IP和源端口号转换成公有IP和匹配成功的HASH值及所述RAM块单元的RAM号,并通过外网接口单元发送出去;所述RAM块单元有8个,每个RAM块单元对应一个RAM号,分别为RAM1号、RAM2号、RAM3号、RAM4号、RAM5号、RAM6号、RAM7号和RAM8号,所述公有IP是预先分配的;所述SNAT链接跟踪方法具体包括:步骤S1,所述外网接口单元接收服务器返回的IP数据包并通过所述A端口单元解析获得目的IP和目的端口号;所述目的IP和目的端口号为所述步骤3中的所述公有IP和所述匹配成功的HASH值及RAM号;步骤S2,根据所述匹配成功的HASH值直接查找所述RAM号对应的所述RAM块单元中的SNAT表项,将所述目的IP和目的端口号转换成所述源IP和源端口号,并通过所述内网接口单元发送出去。进一步的,所述步骤3的具体实现过程包括:步骤A1,通过所述HASH1值查找所述RAM1号,若所述RAM1号对应的RAM快单元中存在包括有所述源IP的SNAT表项,则匹配成功,并将所述源IP和源端口号转换成公有IP和所述HASH1值及所述RAM1号,并通过所述外网接口单元发送出去;否则通过所述HASH1值依次查找所述RAM2号、所述RAM3号、所述RAM4号、所述RAM5号、所述RAM6号、所述RAM7号和所述RAM8号,若仍未匹配成功,则执行步骤A2;步骤A2,通过将所述HASH1值分别替换为所述HASH2值、所述HASH3值和所述HASH4值依次重复所述步骤A1,若仍未匹配成功,则存在冲突并将所述IP数据包丢弃。进一步的,所述步骤3中将所述源IP和源端口号转换成公有IP和匹配成功的HASH值及RAM号之后还包括将所述匹配成功的RAM号对应的RAM块单元中的SNAT表项的时间戳进行更新。进一步的,所述SNAT表项的时间戳通过B端口周期性轮询,若所述时间戳与当前时间的差值超过预设值,则删除所述SNAT表项;否则,保留所述SNAT表项。本专利技术具有突出的实质性特点和显著的进步,具体的说:(1)通过设计FPGA中的内部资源RAM块单元,采用8个RAM块并行,减少因为没有散列到而浪费的概率,使得RAM资源得到较好的利用,较大发挥了FPGA的性能;(2)通过A端口单元联合RAM块单元采用HASH散列查找IP数据包的SNAT表项内容,对同一个HASH散列值可以进行8次查找,4个HASH散列值可以进行32次查找,能够解决查找存在较大冲突的问题,且保证SNAT转换的可靠性,使得内网和外网之间的通信能够高效完成;(3)通过HASH值查找RAM号对应的RAM块单元中的SNAT表项内容,能够快速获知转换目的IP和目的端口号的源IP和源端口号,保证SNAT链接跟踪的高效性;(4)通过在SNAT表项中设置时间戳信息,并且采用B端口单元周期性轮询SNAT表项进行SNAT表项的删除或保留,使得没有作用的SNAT表项能够及时被删除,不占用内部资源。附图说明图1为本专利技术基于FPGA的SNAT系统的结构框图。具体实施方式为了使本专利技术能够更加清楚,下面通过具体实施方式,对本专利技术的技术方案做进一步的详细描述。公有IP地址:也叫全局地址,是指合法的IP地址,它是由NIC(网络信息中心)或者ISP(网络服务提供商)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻址的地址。SNAT,是源地址转换,其作用是将IP数据包的源地址转换成另外一个地址。内部地址要访问公网上的服务时,内部地址会主动发起连接,由网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。HASH,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。HASH表本文档来自技高网...

【技术保护点】
1.一种基于FPGA的SNAT系统,其特征在于,包括:RAM块单元、A端口单元、B端口单元和内网接口单元、外网接口单元;所述RAM块单元分别与所述A端口单元、所述B端口单元连接,所述A端口单元分别与所述内网接口单元、所述外网接口单元连接;所述RAM块单元为FPGA的内部资源,包括有SNAT表项,用于联合所述A端口单元进行SNAT转换和SNAT链接跟踪;所述A端口单元用于FPGA接收所述内网接口单元或外网接口单元传输的IP数据包,并通过所述RAM块单元采用HASH散列循环查找的方式进行SNAT转换和SNAT链接跟踪;所述B端口单元用于进行所述RAM块单元中SNAT表项的周期维护;所述内网接口单元和所述外网接口单元用于接收IP数据包,并将所述IP数据包传输至所述A端口单元进行处理。

【技术特征摘要】
1.一种基于FPGA的SNAT系统,其特征在于,包括:RAM块单元、A端口单元、B端口单元和内网接口单元、外网接口单元;所述RAM块单元分别与所述A端口单元、所述B端口单元连接,所述A端口单元分别与所述内网接口单元、所述外网接口单元连接;所述RAM块单元为FPGA的内部资源,包括有SNAT表项,用于联合所述A端口单元进行SNAT转换和SNAT链接跟踪;所述A端口单元用于FPGA接收所述内网接口单元或外网接口单元传输的IP数据包,并通过所述RAM块单元采用HASH散列循环查找的方式进行SNAT转换和SNAT链接跟踪;所述B端口单元用于进行所述RAM块单元中SNAT表项的周期维护;所述内网接口单元和所述外网接口单元用于接收IP数据包,并将所述IP数据包传输至所述A端口单元进行处理。2.根据权利要求1所述的基于FPGA的SNAT系统,其特征在于,所述SNAT表项的内容包括源IP、源端口号、HASH值、协议号、时间戳和有效标识。3.根据权利要求1所述的基于FPGA的SNAT系统,其特征在于,所述RAM块单元的数量为8个,且8个RAM块单元并行。4.根据权利要求1所述的基于FPGA的SNAT系统,其特征在于,所述SNAT表项的周期维护包括通过所述B端口单元周期性进行所述SNAT表项的删除和保留。5.一种应用权利要求1所述的基于FPGA的SNAT系统的方法,其特征在于,所述方法包括SNAT转换方法和SNAT链接跟踪方法;所述SNAT转换方法的具体步骤包括:步骤1,内网接口单元接收IP数据包并传输至A端口单元进行源IP和源端口号的解析;步骤2,所述A端口单元将所述源IP和源端口号作为输入信息进行HASH映射后得到HSAH值;所述HASH值包括HASH1值、HASH2值、HASH3值和HASH4值;步骤3,通过所述HASH值依次查找所述RAM块单元,若所述RAM块单元中存在包括有所述源IP的SNAT表项,则匹配成功,并将所述源IP和源端口号转换成公有IP和匹配成功的HASH值及所述RAM块单元的RAM号,并通过...

【专利技术属性】
技术研发人员:苏庆会余军武元杰刘武忠吴世勇王斌杨光李银龙王凯霖徐诺
申请(专利权)人:郑州信大捷安信息技术股份有限公司
类型:发明
国别省市:河南,41

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

1