马建鹏 喻崇仁 王施人 侯春雷
(北京计算机技术及应用研究所 北京市 100039)
互联网络技术的迅猛发展,给人们的工作和生活带来了很多便利[1]。然而,由于TCP/IP 协议发展初期,受制于应用场景、技术设备条件等,缺乏安全性考量,导致通过网络传输的信息面临泄露、冒充与篡改等安全风险[2]。
传统基于软件的网络数据加密方案,在高速网络数据传输时,带来了较大的CPU 运算负担,甚至可能影响常规的业务事务处理。基于FPGA 的网络数据安全传输设计,在解放CPU 算力的同时,借助FPGA 丰富的IO 与逻辑等资源,带来了更多设计灵活性,以及更多的可扩展空间[3]。
本系统使用处理器+FPGA 的硬件架构。其中,FPGA 选用美国Xilinx 公司Kintex-7 系列FPGA[4];处理器选用龙芯中科技术股份有限公司的2K1000 处理器[5];千兆以太网PHY 选用裕太微电子股份有限公司的YT8511 系列芯片[6]。
本系统由处理器软件与FPGA 逻辑两部分构成,如图1 所示。其中,处理器软件主要完成应用数据的事务处理;FPGA 逻辑完成收发数据的链路层、IP 层与传输层协议[7]处理、应用数据的加解密处理,以及与处理器软件的传输通信。
图1:系统详细设计
1.2.1 链路层设计
链路层完成TCP/IP 协议栈链路层相关功能,主要包括以太网MAC IP核、MAC接收缓存、MAC发送缓存、以太网MAC IP 核参数控制、接收控制、ARP 控制、发送控制、IP 包发送缓存等模块。
1.2.1.1 以太网MAC IP 核模块以太网MAC IP 核模块主要完成以太网链路层与物理层的快速接入。本模块是一个实例化的TEMAC 核,被配置成1Gbps 的最高接口速率,RGMII 的PHY 接口,自适应的三速匹配模式,以及配置矢量的管理类型。
1.2.1.2 MAC 接收缓存模块
MAC 接收缓存模块对来自以太网MAC IP 核模块的数据进行接收缓存以及跨时域转换,是一个实例化的AXI4-Stream Data FIFO IP 核。
1.2.1.3 MAC 发送缓存模块
MAC 发送缓存模块对发往以太网MAC IP 核模块的数据进行发送缓存以及跨时域转换,是一个实例化的AXI4-Stream Data FIFO IP 核。
1.2.1.4 以太网MAC IP 核参数控制模块
以太网MAC IP 核参数控制模块主要完成对以太网PHY 芯片的复位,以及以太网MAC IP 核模块配置矢量的生成。
以太网MAC IP 核参数控制模块在上电与重连后生成满足以太网PHY 芯片手册要求的复位时序;通过MDIO 接口读取以太网PHY 芯片连接参数,并生成块配置矢量。
1.2.1.5 接收控制模块
接收控制模块在接收控制状态机的控制下,完成报文帧头解析与数据分发。接收控制状态机如图2 所示。
图2:接收控制状态机
状态机在空闲状态,接收到来自MAC 接收缓存模块的data_valid 信号后,进入接收以太网头部状态,并产生data_ready 信号,在该状态下,接收并解析以太网头部长度/类型字段,若为IP 类型,则进入转发IP 数据状态;若为ARP 类型,则进入转发ARP 数据状态;若为其它值,则进入处理其它数据状态。在转发IP 数据状态、转发ARP 数据状态或处理其它数据状态,完成数据转发,则进入接收完成状态;并在一个时钟周期后,进入空闲状态。
1.2.1.6 ARP 控制模块
ARP 控制模块维护一个IP 地址-MAC 地址映射表,完成IP 地址到MAC 地址的遍历匹配,以及ARP 请求帧与响应帧的生成。
对IP 地址-MAC 地址映射表的每一个映射对都进行了编号。匹配成功时,将匹配的映射对编号设置为0,并更新其它编号。匹配失败并获取新的映射关系时,采用LRU 更新策略,将最编号最大的映射对进行替换,设置其编号为0,并更新其它编号。
IP 地址到MAC 地址的遍历匹配过程在MAC 匹配控制状态机的控制下进行,如图3 所示。
图3:MAC 匹配控制状态机
在空闲状态时,接收到MAC 匹配请求后,进入IP地址匹配状态,进行IP 地址-MAC 地址的遍历匹配,若匹配成功,则完成此次匹配过程,回到空闲状态;若匹配失败,则进入等待ARP 请求包发送完成状态,进行ARP 请求帧的生成与传输。在等待ARP 请求包发送完成状态,若收到ARP 请求帧传输完成信号,则进入获取ARP 响应包状态;若收到超时信号,则进入ARP请求超时状态。在获取ARP 响应包状态,若收到MAC匹配成功信号,则进入MAC 地址获取成功状态;若收到超时信号,则进入ARP 请求超时状态。在MAC 地址获取成功状态,收到MAC 地址使用完成信号,则进入空闲状态,完成此次匹配过程。
ARP 请求帧与响应帧的生成过程在ARP 传输控制状态机的控制下进行,如图4 所示。
图4:ARP 传输控制状态机
ARP 传输控制状态机在空闲状态,接收到ARP 请求帧发送请求后,进入ARP 请求帧发送确认状态,并在一个时钟周期后进入ARP 请求帧发送状态,开始ARP 请求帧的生成与传输;在ARP 请求帧发送状态,接收到ARP请求帧传输完成信号后,进入发送完成状态。ARP 传输控制状态机在空闲状态,接收到ARP 请求帧接收信号后,进入ARP 响应帧发送确认状态,并在一个时钟周期后进入ARP 响应帧发送状态,开始ARP 响应帧的生成与传输;在ARP 响应帧发送状态,接收到ARP 响应帧传输完成信号后,进入发送完成状态。在发送完成状态,一个时钟周期后进入空闲状态。
1.2.1.7 发送控制模块
发送控制模块在发送控制状态机的控制下,完成以太网帧的传输。发送控制状态机如图5 所示。
图5:发送控制状态机
发送控制状态机在空闲状态,接收到MAC 地址匹配超时信号与缓存full 信号后,进入丢弃缓存数据状态,进行缓存数据的清除处理再接收到丢弃完成信号,进入空闲状态。在空闲状态,接收到MAC 地址匹配成功信号与缓存full 信号,进入发送缓存数据以太网头部状态,完成以太网头部的生成与传输后,进入发送缓存数据状态,待缓存数据传输完成后,进入空闲状态。在空闲状态,接收到IP 数据就绪信号后,进入获取MAC 地址状态,若接收到MAC 地址匹配失败信号且缓存不满,进入缓存IP 数据状态,并在完成缓存后回到空闲状态;若接收到MAC 地址匹配成功信号,进入发送IP 数据以太网头部状态,完成以太网头部的生成与传输后,进入发送IP 数据状态,并在完成传输后回到空闲状态。在空闲状态,接收到ARP 数据就绪信号后,进入发送ARP 数据状态,并在完成传输后回到空闲状态。
1.2.1.8 IP 包发送缓存模块
IP 包发送缓存模块对来自IP 层功能模块的发送数据进行临时缓存,是一个实例化的AXI4-Stream Data FIFO IP 核。
1.2.2 IP 层设计
IP 层完成TCP/IP 协议栈IP 层相关功能,主要包括IP 层接收控制、ICMP 控制、IP 层发送缓存和IP 事务处理控制等模块。
1.2.2.1 IP 层接收控制模块
IP 层接收控制模块在IP 层接收控制状态机的控制下,完成IP 包的解析与数据分发。IP 层接收控制状态机如图6 所示。
图6:IP 层接收控制状态机
IP 层接收控制状态机在空闲状态,接收到数据有效信号进入接收IP 头部状态,并在头部完成接收后,进入IP 有效性检查状态,对IP 头部进行合规性检测。在IP 有效性检查状态,若IP 头部字段值不合规,则回到空闲状态;若协议类型字段为UDP,则进入转发UDP数据状态,并在完成转发后,进入转发完毕状态;若协议类型字段为ICMP,则进入转发ICMP 数据状态,并在完成转发后,进入转发完毕状态;若协议类型字段为其他值,则进入转发其它数据状态,并在完成转发后,进入转发完毕状态。在转发完毕状态,一个时钟周期后,回到空闲状态。
1.2.2.2 ICMP 控制模块
ICMP 控制模块主要完成ICMP 回显请求报文的接收解析与ICMP 回显响应报文的生成,由ICMP 接收缓存、ICMP 发送缓存与ICMP 传输控制逻辑组成。ICMP控制模块在完成ICMP 回显请求报文的接收解析后,根据请求报文数据内容生成ICMP 回显响应报文。
1.2.2.3 IP 层发送缓存模块
IP 层发送缓存模块对来自IP 层功能模块的发送数据进行缓存,是一个实例化的AXI4-Stream Data FIFO IP 核。
1.2.2.4 IP 事务处理控制模块
IP 事务处理控制模块主要完成数据的IP 协议封装与解析,即对来自链路层的网络接收数据进行IP 协议头部的去除,以及对来自传输层的待传输网络数据进行IP 协议头部的生成。
1.2.3 传输层设计
传输层完成TCP/IP 协议栈传输层相关功能,主要由UDP 事务处理控制模块构成。
UDP 事务处理控制模块主要完成应用数据的分片,以及特定端口号数据的UDP 协议封装与解析,即对来自应用层的数据按照最大路径传输长度进行分片处理并对分片数据进行UDP 数据包的生成,对来自IP 层的网络接收数据进行UDP 协议头部的缓存与UDP 协议数据的传输。
1.2.4 应用层设计
应用层完成TCP/IP 协议栈应用层相关功能,包括应用数据加解密模块、处理器接口控制模块与应用事务处理控制软件。
1.2.4.1 应用数据加密模块
应用数据加密模块对来自传输层的数据使用SM4算法[8]进行解密转发处理,以及对来自处理器接口控制模块的数据使用SM4 算法进行加密处理。
1.2.4.2 处理器接口控制模块
处理器接口控制模块完成对PCIe 接口数据的收发控制与DMA 传输控制,以及收发数据的缓存控制。本模块是一个实例化的XDMA 核。
1.2.4.3 应用事务处理控制软件
应用事务处理控制软件完成分片数据的重组,以及实际的业务处理。
系统测试通过调试计算机进行,如图7 所示。调试计算机与系统硬件通过网线相连。
图7:测试平台
调试计算机为x86 架构,运行Win7 操作系统,IP地址为192.168.1.221,通过CMD 命令或网络调试助手软件产生测试激励,通过WireShark 软件或网络调试助手软件观察系统输出结果。
ping 命令测试,即在命令行界面,通过使用ping命令,产生ICMP 回显请求报文,并期待ICMP 回显响应报文。测试过程如图8 所示。
调试计算机执行ping 命令后,产生ARP 请求帧用以获取IP 目的地址对应的MAC 地址。调试计算机得到合规的ARP 响应帧后,产生ping 命令对应的ICMP 回显请求报文。调试计算机得到合规的ICMP 回显响应报文后,完成一轮交互。由图8 可知,系统通过ping 命令测试。
应用事务测试,即通过网络调试助手软件产生UDP测试报文,并期待系统处理后的UDP 响应报文。测试过程如图9 所示。
图9:应用事务测试
系统接收到测试激励后,提取UDP 报文数据,进行解密处理后,交由处理器进行事务处理;接收到处理器数据后,进行加密处理,再回复调试计算机。由图9可知,系统完成对应用事务的处理测试。
本文在深入分析研究TCP/IP 协议和网络安全控制技术的基础上,提出并实现了基于以太网接口的安全传输系统,并通过了系统仿真和基于调试板卡的半实物验证。测试表明,系统可以完成正常网络协议交互,以及应用数据加解密处理功能。