基于PCIE接口的IPSec加速SoC设计
杭彦希;徐金甫;南龙梅;杨宇航;王周闯
【摘 要】为达到IPSec实现的高速性、灵活性以及安全性,设计一个IPSec加速SoC.引入高速PCIE接口突破主机与SoC通信速度瓶颈;采取多核设计技术和层次化存储结构,构建以交叉存储为主的高速数据交换区和以邮箱为主的引擎间状态通信区;采用指令级并行和流水线并行技术,对IPSec协议算法进行多核映射.实验结果表明,该SoC对于IPSec中典型分组密码算法AES的吞吐率可达1 Gbps,对于认证算法SM3可达2 Gbps,较好地满足了高速网络处理需求.%To achieve the high speed, flexibility and security in the implementation of IPSec protocol, an accelerating SoC for the IPSec protocol was designed.High-speed PCIE interface was introduced to break the bottleneck of the communication between the host computer and external SoC.The multi-core design technology and hierarchical storage structure were adopted to build the exchange area for high-speed data based on cross storage and the communication area for engine state based on email boxes.Instruction level parallelism and pipelining parallel technology was used to map the
multicore.Experimental results show that the throughput of the typical block cipher AES in IPSec protocol can reach 1 Gbps, while the authentication algorithm SM3 can reach 2 Gbps, which can better meet the requirements of high-speed network processing.
【期刊名称】《计算机工程与设计》
【年(卷),期】2017(038)005
【总页数】5页(P1212-1215,1257)
公务员工资标准表【关键词】IPSec协议;SoC;高速;多核;PCIE接口
【作 者】杭彦希;徐金甫;南龙梅;杨宇航;王周闯
【作者单位】张若昀女友信息工程大学,河南 郑州 450001;信息工程大学,河南 郑州 450001;信息工程大学,河南 郑州 450001;信息工程大学,河南 郑州 450001;信息工程大学,河南 郑州 450001
【正文语种】中 文
【中图分类】TP336
目前IPsec协议主要有3种实现方式,软件实现、硬件实现和软硬件协同实现。软件实现一般指主机CPU通过内核算法实现。然而,该种方式效率低,需要耗费大量的系统资源,导致了网络吞吐率下降、包延迟时间增加[1]。硬件实现指开发专用的网络安全协议处理器,集成协议处理的每个环节[2,3],但是因其具有开发周期长、专用性强、难以二次开发等缺点,不能得到广泛应用。最近几年国内更专注于软硬件的协同实现,即由主机CPU实现协议解析、数据包封装等计算复杂型操作,而由加密卡实现加解密、认证等计算密集型操作[1],但是这种方式实现密码算法速率仍然不够高,不能很好地满足高速网络应用的需求。
PCIE全称为PCI Express,是第三代的I/O总线技术,利用了高速差分总线以及双向传输总线,最高传输速率可以达到5.0 Gb/s。本文设计了一个基于高速PCIE接口的IPSec加速SoC。提出IPSec协议加速处理引擎设计方案,利用多核技术加快密码算法的执行,保证IPSec协议中密码算法处理的高速性。设计了密码运算单元,可支持不同的加解密以及认证算法,保证IPSec协议实现的灵活性。将IPSec协议中的加解密及认证过程移植到外部加速SoC中利用硬件实现,可在一定程度上防止软件攻击,保证了IPSec协议实现的安全性。
服务理念当通信双方需要使用IPSec协议进行通信时,首先完成网络密钥交换协议(简称IKE),构建双方共用的安全联盟(简称SA,包括操作模式、密码算法、密钥等约定)。当双方数据包经由TCP/IP传输层到达IPSec协议处理部分时,使用已经协商好的SA完成一系列的加解密以及认证操作,处理完毕后交由网络层进行传输。整个处理过程对于用户来讲是透明的,完整的工作过程如图1所示。
若采取主机CPU纯软件实现方式,在IPSec协议处理进程中,加解密和认证过程占用了大约60%到70%的处理时间,消耗了CPU大量的资源,严重时甚至可能会堵塞网络。若将这部分工作交由外置硬件加速卡处理,不仅能提高网络处理带宽,还能在一定程度上防止软件攻击,保证IPSec协议处理过程中数据安全。
目前主要有两种IPSec外置卡的实现方式:主控芯片与接口芯片组合实现方式、专用SoC实现方式。第一种实现方式数据交互复杂、信号延迟较大,难以满足高速处理需求。第二种实现方式将各个模块集成到SoC中即单芯片实现,数据交互快,可以满足高速需求。因此本文选择第二种实现方式,即设计一个轻量级IPSec加速SoC。
在SoC内部集成了双向高速64位AXI总线,在AXI总线上挂接一个通用CPU、一个PCIE核
以及一个程序存储器SRAM0。CPU选用目前处理性能较高的嵌入式国产处理器CK810[4],作为SoC内部主控制器完成SoC内部数据调度。PCIE接口选择PCIE 2.0版本的IP核。DMA模块、中断控制器INTC以及定时器TIMER等低速模块,与速率较低的AHB总线相连,再通过一个X2H总线转换桥挂接在高速AXI总线上。为保证协议处理高速性,将IPSec协议加速处理引擎挂接在一条单独的高速AXI总线上,即AXI1,并通过一个共享数据存储器SRAM1连接到AXI0和AHB上。SoC的整体架构如图2所示。
什么是私募基金IPSec协议加速引擎的主要功能是对协议中的加解密以及认证过程进行硬件加速。为达到这个目标,本文设计了可支持不同密码算法的运算单元,采用指令压缩技术和扩展超长指令字(VLIW)密码专用指令实现。在通用VLIW架构的基础上增加了指令识别单元、指令解压缩单元和超长指令字执行单元。其中超长指令字执行单元支持位宽为64 bit、128 bit和256 bit以内的密码算法运算。密码运算单元主要包含I/O接口单元、控制电路和数据通路3部分。数据通路主要包含通用寄存器堆、取指单元、指令识别单元、译码及指令解压缩单元、执行及超长指令字执行单元和回写单元。密码运算单元的结构如图3所示。
为了解决IPsec协议中密码算法硬件高速实现的问题,本文提出一种多核高效数据交互机制。
采用交叉存储区,能够有效解决各算法处理单元的读写数据冲突问题。采用快速比特级状态传输单元邮箱,以点对点的方式实现各算法处理单元间状态位的访问,高效完成了算法处理单元之间进程的同步。通过将密码算法同时映射到多个密码运算单元,达到了密码算法的并行运算。以上3种措施有效提高了密码算法的硬件实现速度。多核高效数据交互机制实现框架如图4所示。
同时对于IPSec协议中的认证算法,考虑到算法本身具有一定的并行性,采用了功能单元并行映射的方式。例如对于SM3认证算法,采用的功能单元并行映射流程如图5所示。
SoC与外部数据交互的性能优劣,直接影响着IPSec协议处理的效率。如图2所示,本文引入高速PCIE接口打破IPSec协议处理引擎与外部进行数据交互的瓶颈,最大限度发挥高速AXI总线以及IPSec协议处理引擎的性能。
具体的实现方式是在AHB总线上挂接存储器SRAM1,并通过扩展桥挂接到AXI0和AXI1总线上。外部主机通过PCIE与SoC内部SRAM数据交互分为以下两种情况:
(1)数据输入:外部主机通过高速PCIE接口将待处理数据包以DMA写方式发送到SRAM1,
同时中断通知CPU,CPU转入中断服务程序,通知IPSec协议处理引擎以DMA读方式读取数据包。
(2)数据输出:IPSec协议处理引擎对获取到的数据包完成相应的算法操作,以DMA写方式将数据发送到SRAM1中,并中断通知CPU,CPU接收到处理完成中断后将相应的状态字置位并以中断通知主机以DMA读方式将SRAM1上的数据取走。外部主机与SoC交互原理如图6所示。
赞颂老师的名言主机上层的软件设计必须适配前文所述的硬件设计,以最小的软件代价发挥硬件设计的最大优势。设计重点在于如何在IPSec工作时,调用外部SoC加速完成协议中的加解密以及认证过程,同时也不影响协议中的其它过程正常执行。