一种嵌入式VPN网关系统的设计与实现

时间:2022-10-28 04:18:05

一种嵌入式VPN网关系统的设计与实现

摘要:在分析IPSec协议数据处理基础上,提出采用嵌入式主处理器和协处理器分别处理IPSec协议中控制层面任务和数据层面任务的方案,并实现了一种基于S3C2510网络处理器和μCLinux操作系统的嵌入式IPSec VPN网关系统。

关键词:嵌入式网关;网络处理器;现场可编程门阵列;虚拟专用网;IP安全;外设部件互连;μCLinux

中图分类号:TP393.05

文献标识码:A

0引言

虚拟专用网(Virtual Private Network,VPN)是构建在公网Internet之上的逻辑网络,通过在两台网关设备之间建立一条虚拟专用隧道进行数据传输。通常使用IPSec协议在网络间传输数据,采用HMACSHA1等算法对用户进行认证,并采用DES、AES等算法对数据进行加解密,以保障网络数据传输的安全性、完整性、机密性和可用性。

在VPN实现上,VPN安全网关已成为其中的核心技术,是各个科研机构、网络技术应用公司的研发重点。然而,在VPN技术广泛应用的今天,国内的部分安全网关产品还依旧停留在采用通用PC的基础上,较国外的采用网络处理器的安全网关产品在系统性能方面还有较大的差距。基于高性能网络处理器的安全网关系统,较基于通用PC的安全网关系统,不仅在系统的网络数据吞吐能力方面有很大的优势,而且在系统效率、可靠性等方面也有很大提升。

因此,本文在研究IPSec协议数据处理的基础上,提出并实现了以网络处理器为基础,采用硬件加速技术的嵌入式VPN网关系统。

1体系结构

IPSec在IP层上对数据包进行高强度的安全处理,可在不可信的网络上提供安全的数据传输服务。因此,网络用户不必设计和实现自己的安全机制就可以享用IPSec提供的安全服务,在一定程度上降低了安全漏洞产生的可能性。

从IPSec功能实现上来划分,IPSec协议数据处理任务可以分为两类:控制层面任务(如数据包的封装、安全协商、密钥交换等)和数据层面任务(如数据加解密、消息认证计算等)。若控制层面任务和数据层面任务都采用主处理器来处理,将影响CPU对关键任务的实时性处理,导致网络设备系统性能明显下降。

为了提高系统整体性能,可采用如图1所示的体系结构,用IPSec协议中控制层面任务和数据层面任务分离处理的方法来实现IPSec数据处理。通过网络主处理器处理IPSec数据包封装、安全协商和Internet密钥交换等控制层面任务;而协处理器处理IPSec协议中数据加解密和消息认证处理等数据层面任务,以减少网络设备主处理器的负载。这样,就解决了系统IPSec处理速度瓶颈问题,从系统体系结构方面提高了VPN网关整体性能。

2设计与实现

2.1硬件系统设计与实现

在VPN网关系统具体实现上,采用S3C2510网络处理器作为主处理器, Altera Cyclone 系列FPGA作为协处理器。主处理器主要用来控制系统的运行,协调系统各功能模块的工作,并处理IPSec控制层面任务;协处理器主要用来处理IPSec数据层面任务。主处理器和协处理器采用PCI总线接口连接。

嵌入式VPN网关硬件系统可分为网络处理部分和协处理器部分(加解密、认证部分)。

2.1.1网络处理部分

系统网络处理部分是高速VPN网关系统设计和实现的基础和核心,由基于S3C2510网络处理器的嵌入式系统主板组成。

该嵌入式安全网关系统主板上主要集成了网络处理器S3C2510A、Flash存储器、SDRAM内存、2个独立的10/100M WAN以太网口和2个32位33MHz/66MHz PCI Slot等。主要功能模块可分为处理器模块、Memory模块、网络接口模块、PCI接口模块等。其中:

1)网络处理器模块和Memory模块(FLASH、SDRAM)组成最小嵌入式系统,用于正常运行整个系统以及高速处理IPSec协议中数据包的封装、安全协商、密钥交换、安全算法替换等控制层面任务。

2)网络接口模块,从网络中接收数据,交给处理器处理,并将处理完后的数据发送出去,以达到线速传输网络数据的功能。

3)PCI接口模块实现系统功能的扩展,实现最小系统和协处理器(PCI加解密卡)数据交换的功能。

2.1.2协处理器部分

基于FPGA协处理器的PCI加解密板卡是高速VPN网关系统中IPSec协议数据处理的核心功能模块,实现IPSec协议中数据加解密、消息认证处理部分的功能。

FPGA协处理器部分主要包括控制模块、PCI核模块、加解密核模块和认证核模块。

1)控制模块接收来自于PCI总线的IPSec协议数据,送至相应处理核(加解密核或认证核)处理,并返回处理后的数据。

2)PCI核模块实现网络主处理器和FPGA协处理器间高速数据传输。

3)加解密核模块实现IPSec协议中数据加解密功能,支持DES、AES等数据加解密算法。

4)认证核模块实现IPSec协议中的消息认证功能,支持HMAC―SHA―1和HMAC―MD5等消息认证算法。

2.2软件系统设计与实现

嵌入式VPN网关系统的ARM μCLinux2.6操作系统软件运行在S3C2510网络主处理器上。为了达到主处理器和协处理器高效协同运行的设计目标,实现了PCI加解密卡在μLinux下的驱动程序。在IPSec VPN功能实现和配置软件上,采用基于Linux―2.6内核的IPSec―tools。

2.2.1PCI加解密卡驱动程序的设计与实现

PCI驱动程序隐藏了PCI加解密板卡的工作细节,并向上层软件提供标准化的接口来实现PCI加解密卡在系统中的功能和作用。在驱动的具体实现上,将驱动程序库以内核库形式装载到Linux内核。

从驱动程序功能上来划分,PCI加解密卡驱动程序可分为以下几个部分:上层软件接口、硬件接口、配置模块和数据处理模块。

1)上层软件接口模块为上层软件(用户态和核心态)提供配置程序接口、加解密程序接口等功能。

2)数据处理模块实现了驱动的主体功能,主要负责接收配置模块的控制信号,设置加/解密密钥,获取上层传递过来的待处理数据,启动加/解密操作,并返回经加解密/认证处理后的数据等。

3)配置模块用于进行加密卡的参数设置,诸如设置加解密算法、消息认证算法、密钥等。

4)硬件接口模块提供对PCI硬件的基本操作,通过对硬件寄存器的控制来操作硬件,诸如配置DMA控制寄存器和启动PCI数据传输等。

2.2.2IPSec VPN软件系统实现

Linux―2.6内核中加入了对IPSec的支持,网络协议栈中提供对IPSec协议簇中AH、ESP、IKE协议和NAT穿透的支持,因而本系统采用基于Linux2.6内核的IPSec功能实现解决方案IPSec―tools,它包括setkey和racoon/racoonctl两个用户程序。

1)Setkey实现对IPSec中SAD和SPD的配置和管理。

2)Racoon/Racoonctl实现IKE与网络中的其他主机建立安全连接安全联盟(Security Association,SA)。

3)PF_ KEY接口是IPsec的重要组成部分。密钥管理进程利用PF_KEY与内核的SADB进行通信,实现SA和SP(Security Policy,安全策略)的管理。

4)IPSec Configuration提供对IPSec协议中诸如密钥产生和密钥交换等密钥管理的配置接口。

5)IPSec安全联合数据库(SAD)中存储了安全关联项SA, IPSec安全策略数据库(SPD)中存储了由用户或系统管理员所制定的安全策略SP;IPSec则根据IPSec安全策略(SP)和IPSec安全联合(SA)来处理数据包。

6)IPSec协议簇提供了两种独立的IP安全协议:认证头(Authentication Header,AH)和封装安全载荷(Encapsulating Security Payload,ESP)。

7)加解密及认证库存放了多种可选的认证和加解密算法,在处理时将通过安全关联中的算法项来指明所需要使用的算法。本系统中AH/ESP所使用的加解密算法和IKE所需的消息认证计算都通过调用PCI加解密卡或主处理器的IP加解密模块的标准接口来实现。

2.3IPSec VPN网关功能实现

IPSec VPN网关从功能上可分为核心模块和用户模块两部分[4]:

核心模块扩展了IP,使IP层能够支持IPSec协议,包括IKE、AH和ESP等协议的处理以及安全联盟数据库(SAD)和安全策略数据库(SPD)的维护。

用户模块支持以脚本语言方式或图形接口方式来维护SAD和SPD;以及管理用于VPN网关加解密通信的安全连接功能,包括增加、删除、修改、启动和停止安全连接。

2.3.1网关工作流程

参照图4,IPSec VPN网关工作流程如下:

1)创建一个安全策略(SP)时,由SP进程负责管理和维护,并激活IKE进程与对方VPN网关协商一个新SA,由SA进程负责管理和维护。其中IKE进程负责密钥交换,并实现自动的策略管理。

2)发送数据包时,首先构建本地IP包,并将IP包传送到IPSec处理模块,由输出进程根据SA指定的协议(AH或ESP)封装数据报,并按指定的算法,调用驱动提供的加/解密接口函数,将数据包送往PCI加密卡或处理器中的DES/3DES模块处理,加密数据、生成认证数据;再将新生成的IP包传送到IPSec外出处理模块。

3)接收数据包时,将网卡接收的数据包通过IP层预处理,并送到IPSec进入策略处理模块,由输入进程决定如何处理该IP包:对于允许进入网关的IP包,按SA指定的协议(AH或ESP)解封数据报,并按指定的算法,调用驱动提供的加/解密接口函数,将数据包送往PCI加密卡或处理器中的DES/3DES模块处理,解密数据、验证和处理数据;对于转发的IP包,则进行诸如减小TIL等转发处理,并将IP包传送到IPSec外出处理模块。

2.3.2网关性能测试

嵌入式VPN网关系统性能的测试可基于SmartBits6000B数据网络测试平台。在本系统测试中使用IPSec协议,采用ESP隧道模式和AES/SHA1安全机制。

测试方法如下:首先,配置SmartBits 6000B系统的LAN3321A TeraMetrics XD模块和TeraVPN IPSec测试软件;其次,让嵌入式VPN网关系统作为响应设备,SmartBits构造并发送大小不同(例如64,512,1024以及1400等)且指定了包数目(例如10,100,1000等)的数据(例如TCP数据),通过被测设备的转发,在SmartBits另一网络接口处(测试点)接收转发的数据包;最后,根据所测试的选项便可得出嵌入式VPN网关系统的性能等。

测试表明,嵌入式VPN网关系统实现了IPSec协议标准描述的功能,包括AH, ESP和IKE协议功能,具备路由转发功能,在10/100M网络中能达到较高的数据吞吐量,在以线速速率传输数据的同时拥有极低的数据丢包率。

3结语

本文结合具体的工程实践,研究了基于IPSec协议的VPN技术,论述了VPN技术在工程应用中的一种方法,重点讨论了基于网络处理器的嵌入式VPN网关系统硬件组成和软件功能实现。测试显示,该系统性能优越、稳定性高、有很好的可扩展性、适应下一代IPv6网络发展需求。鉴于VPN技术特点和发展趋势,可以考虑在该网关中实现诸如服务质量、网络监控等功能;并且可以考虑改进系统性能,如增强嵌入式系统和IKE的安全性等,以达到系统运行最佳效果。

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

上一篇:基于P2P应用的网络流量特征分析 下一篇:基于基因表达式编程的信用评估模型挖掘方法