基于状态检测技术的NAT设计与FPGA实现
2019-07-10卢宇浩
◆卢宇浩 廖 游
基于状态检测技术的NAT设计与FPGA实现
◆卢宇浩 廖 游
(中国电子科技集团第三十研究所 四川 610000)
随着互联网的快速发展,网络地址资源需求也在不断增长,网络地址转换(NAT) 依然是缓解网络地址紧缺问题非常有效手段,新形势下网络安全设备对于使用国产化芯片的需求越来越高,本文提出了一种基于状态检测技术的NAT设计,并在国产CPU和FPGA的平台上进行了试验和验证。
网络地址转换(NAT);状态检测;可编程逻辑阵列(FPGA);国产化平台
0 引言
随着互联网的快速发展,互联网用户数量、终端以及业务类型都在飞速增加,网络地址资源需求也在不断增长[1],虽然业界提出从IPV4过渡到IPV6,将网络协议中的IP地址从32bits增加到128bits,彻底解决网络地址资源紧缺问题[2],但是由于IPV6的全面推广过程较慢,而5G、物联网等技术突飞猛进,网络地址紧缺的现象并没有缓解,网络地址转换(NAT) 依然是缓解网络地址紧缺问题非常有效手段[3]。
2019年,中美贸易战再次升级,网络安全设备中的进口芯片已成为“卡脖子”问题,新形势下网络安全设备芯片自主可控势在必行,然而由于国产处理器网络数据包处理性能较低,使用国产FPGA来实现硬件加速,提升国产化平台的整体处理性能就显得非常重要。
1 NAT原理和状态检测技术
NAT(Network Address Translation,网络地址转换)技术的基本功能是用一个或几个公网IP地址来实现一个局域网网络上所有主机都可以访问公网[4]。NAT实现的方式有很多,包括源地址转换(SNAT)、目的地址转换(DNAT)以及双向地址转换(双向NAT)。本文设计将支持以上所有NAT转换方式。各转换方式基本功能和特点如下:
源地址转换(SNAT):用于将符合条件的数据进行源IP地址转换,最常用的是设备部署在公网出口时,代理内网用户上网,需要设置源地址转换规则进行源地址转换。内部网络中的所有主机均可共享一个或者多个合法外部网络地址实现对外网的访问[5]。
目标地址转换(DNAT):用于对经过设备的数据做目标地址转换。通过将内外服务器的服务映射到公网,使外网用户通过访问防火墙上的公网IP访问到内网服务器。
双向地址转换(双向NAT):指在对经过设备的数据同时作含源地址和目标地址转换,用于内外用户通过公网IP或者域名访问内网的服务器的情况。
状态检测技术:是当今防火墙市场中普遍采用的主流技术,是一种基于会话连接的状态检测机制,将属于同一会话的所有包作为一个整体的数据流看待[6],构成会话状态表,通过规则表与状态表的共同配合,对表中的各个连接状态因素加以识别[7],对数据报文进行丢弃或放行。
2 业务流程设计
本文设计的具体业务流程如图1所示,包括FPGA业务流程和CPU业务流程。
2.1 FPGA业务流程
报文进行FPGA的会话表过滤模块后,提取报文中的五元组信息查表,若未能匹配表项,则表明此数据报文为整个会话首包,需将此报文上传CPU,进入CPU业务流程,若匹配到表项,则进入到下一级会话表过滤流程;模块根据返回的动作action判断报文是否需要丢弃,若不需丢弃,则判断是否需要进行NAT转换,若需要则根据返回的80bits替换信息将报文中对应的源IP+目的IP+源端口+目的端口进行转换后重新计算IP首部的校验和更新后,整个过程结束,报文发出。
2.2 CPU业务流程
CPU收到FPGA上传的首包后,开始进入会话跟踪流程,判断报文是否通过状态检测,若未通过,则报文丢弃,并下发丢弃规则表项到FPGA,此会话后续数据报文由FPGA丢弃,若通过,则判断是否需要进行NAT转换,若不需要,则直接发走,若需要,则进行对应转换、更新首部校验以及将报文发出,并将对应的转换内容表项下发到FPGA,后续由FPGA执行转换工作。
图1 基于状态检测技术的NAT功能业务流程图
3 FPGA实现
本文使用软硬件结合(CPU+FPGA)的方式实现NAT功能,在状态检查技术的基础上,加入NAT判断分支,结合状态检测技术中的会话表五元组提取、查表、状态跟踪、表项下发等流程,将SNAT、DNAT、双向NAT等多种转换方式的NAT功能直接抽象为利用FPGA的并行处理能力,将数据报文中的源IP+目的IP+源端口+目的端口(共80bits)全部进行转换。软件负责下发80位的内容,其中若不需更改的内容填成原有内容,FPGA通过查表查出数据报文所需的新源IP+目的IP+源端口+目的端口,并进行对位转换,最后计算更新IP首部校验和,发送到下一级模块,完成整个NAT功能。具体FPGA实现架构如图2。
会话表过滤模块:模块包括状态检测技术中会话表过滤功能,数据报文进入模块后,提取报文中的五元组信息(源IP+目的IP+源端口+目的端口+协议)进行匹配查表,若无匹配表项,则将该数据报文上传CPU处理,若匹配到表项,则更具返回的action动作将数据报文转发相应的处理模块。
action动作的具体含义如表1。
图2 FPGA实现架构图
表1 动作action的具体含义
搜索引擎接口模块:负责搜索引擎芯片初始化,表项配置管理、查表调度等功能;
主控模块:(1)将会话表过滤模块上报的数据报文上传到CPU;(2)将CPU下发的会话表表项发送到搜索引擎接口模块;(3)根据搜索引擎返回的index查找片内SRAM,得到处理动作action以及NAT转换需要的nat_ip、nat_port等信息。
片内SRAM:利用FPGA中的block ram资源生成的SRAM,用于存储五元组表项对应的动作action以及NAT转换需要的nat_ip、nat_port等信息。
NAT转换模块:只对数据报文的源IP+目的IP+源端口+目的端口进行转换,用主控发来80位数据按位置进行相应替换操作。
更新IP首部校验和模块:对NAT转换后的数据报文重新计算IP首部校验和,并更新。
4 试验与结论
根据本文提出的设计方法,在龙芯2h处理器+紫光国微2V6000 FPGA的全国产软硬件平台上进行了验证,采用TestCenter网络测试仪进行网络吞吐率测试(表2),测试结果充分表明基于状态检测技术的NAT功能利用FPGA硬件加速能力,在全国产化平台上性能得到了极大的提升,64字节小包提升18倍,大包接近千兆线速水平。
表2 吞吐率测试结果
[1]赵胜颖,高广春.基于FPGA的网络地址转换(NAT)的实现[J].仪器仪表学报,2008(8):370-373.
[2]张祖林,徐国洪,印成清.计算机组装与联网技术[M].华中科技大学出版社,2005.
[3]林满.基于以太网技术的宽带IP城域网建设[D].厦门大学,2002.
[4]张广德.基于SIP的NAT穿越防火墙的研究与设计[D].上海交通大学,2010.
[5]秦添.P2P网络中NAT穿透方法的研究与实现[D].湖南大学,2009.
[6]何飞雄.基于Filter-hook网络防火墙的设计与实现[D].华东师范大学,2010.
[7]秦志光.基于网络处理器的IPV6状态跟踪防火墙设计与实现[D].电子科技大学,2006.