当前位置:联邦科技 >> 成功案例 >> 嵌入式VPN路由器软硬件设计与实现

嵌入式VPN路由器软硬件设计与实现

 

 
 
 
  一、硬件部分
  1、设计思路
  无线路由器电路板通过无线通信模块连接GPRS移动网络,通过以太口连接内部终端设备或者内部局域网。无线路由器具备网络路由功能,能够在两个网络之间转发数据。各种终端设备发出的数据通过以太口被处理器接收,处理器对数据进行相应处理后(例如加/解密)再通过串行口发送给无线通信模块,由它转发到GPRS网络中。同理,反向的数据经过相反的路径最终送回终端设备。
  2、硬件设计
  嵌入式处理器采用三星公司的S3C4510B,它是基于以太网应用系统的高性价比的16/32位RISC微控制器,内含一个由ARM公司设计的16/32位ARM7TDMI RISC处理器核。通过GPRS网进行数据传输需要使用GPRS模块。目前, GPRS模块一般是指带有GPRS功能的GSM模块,模块通过外接天线与蜂窝小区基站通信, 收发无线数据。本设计中GPRS 模块采用Wavecom公司的W ISMO Quik Q2400系列.其他各部分基本功能描述如下:
  串行接口电路用于S3C4510B与GPRS模块以及其他应用系统进行短距离双向串行通讯; 复位电路可完成系统上电复位和在系统工作时用户按键复位;电源电路为整个系统提供工作所需的电压,包括5V, 3.6V以及3.3V;10MHz有源晶振为系统提供工作时钟; FLASH存储器可存放已调试好的应用程序、嵌入式操作系统或其他在系统掉电后需要保存的用户数据等;
  SDRAM存储器作为系统运行时的主要区域,系统及用户数据、堆栈均位于SDRAM存储器中;10M/100M以太网接口为系统提供以太网接入的物理通道;I2C存储器可存储少量需要长期保存的用户数据.
  3、硬件连接
  完整的硬件连接图如图1所示。
  基于ARM7GPRS无线VPN路由器设计1
  图1 硬件连接图
  二、软件部分
  在此无线路由器中使用的操作系统是uClinux,它是专门应用于没有MMU的微控制器上的操作系统。uClinux操作系统中已经内嵌了TCP/IP网络协议的实现代码,在内核中设置“IP转发”就能实现静态路由功能。为了实现拨号登录移动网络以及VPN的功能,则需要用到2个网络应用程序: PPP应用程序和IPSec应用程序。图2是整个系统的软件结构层次图。
  基于ARM7GPRS无线VPN路由器设计2
  图2 软件结构层次图
  1、uClinux 的移植
uClinux 的源代码和开发工具可以免费从http: //www.uclinux.org上下载得到。www.uclinux.org上定期为新推出的Linux内核推出相应的源码包。最新的版本为uClinux-dist-20040408.tar.gz,也可以从该网站上免费下载得到。
另外还需要从www.uclinux.org/pub/uClinux/arm-elf -tools/上下载ARM 交叉编译器: arm-elf-tools-20030314.sh,执行以建立uClinux-ARM的交叉编译环境。为了使uClinux能顺利地在无线路由器上跑起来,需要针对此硬件平台对uClinux再进行修改。在/home/uClinux-dist/linux-2.4.x/include/asm-armnommu/下的hardware.h文件包含了S3C4510B片内特殊功能寄存器以及其他相关硬件信息的定义。可以在此对其进行修改。
另外还可以在make xconfig的时候将vendor选为Samsung,并选中Customize Kernel Settings一项,之后可以在出现的System Type中对相关参数进行修改,主要包括系统的主时钟频率、FLASH和SDRAM的起始地址及大小等。最终通过编译即可得到无线路由器运行所需要的image.rom和image.ram。
  2、PPP应用程序
  PPP应用程序用来通过无线通信模块拨号登录移动网络,登录过程遵循PPP (Point-to-Point Protocol)通信协议。目前uClinux操作系统中已包含的多种应用程序中有一种实现PPP协议的程序pppd,只需要根据无线移动网络通信的特征,修改pppd源代码中的部分配置参数,就能够得到需要的PPP应用程序。以下是进行拨号登陆移动网络的脚本程序:
  #! /bin/sh
  /usr/sbin/pppd\
  nodetach\
  connect"/etc/ppp/peers/gprs-connect-chat"\
  disconnect"/etc/ppp /peers/gprs-disconnect-chat"\
  /dev/ttyS0\
  115200\
  nocrtscts\
  local\
  defaultroute\
  novj\
  nobsdcomp\
  novjccomp\
  nopcomp\
  noaccomp\
  noauth
  其中用来实现拨号和挂断的脚本gprs-connect-chat和gprs-disconnect-chat分别如下:
  gprs-connect-chat
  #! /bin/sh
  exec/usr/sbin/chat\
  TIMEOUT 5\
  ECHO ON\
  ABORT ’\nBUSY\ r’\
  ABORT ’\nERROR \r’\
  ABORT ’\nNO ANSWER \r’\
  ABORT ’\nNO DIALTONE\ r’\
  ABORT ’\nR INGING\ r\n\r\nRINGING\ r’\
  SAY "Press CTRL-C to close the connection at any stage!" \
  SAY"\ndefining PDP context. . . \n"\
  " " ’+ + + ’ \
  " " ’ATH’ \
  OK ’AT +CGDCONT = 1,"IP" , "cmnet" ’ \
  OK ’ATDT3 993 3 3 1#’ \
  TIMEOUT 10 \
  SAY" \nwaiting for connect. . . \n"\
  CONNECT" "\
  SAY"\nConnected. "\
  SAY"\n If the following ppp negotiations fail, \n"\
  SAY"try restarting the phone.\n"
  gprs-disconnect
  #!/bin/sh
  /usr/sbin/chat\
  TIMEOUT 5\
  ECHO ON\
  ABORT ’NO CARR IER’\
  ABORT ’ERROR’\
  ABORT ’NO DIALTONE’\
  SAY "\nSending break to the modem \n"\
  " " ’\d\d + + + \d \d’\
  " " ’ATH’\
  " " OK\
  SAY"\nPDP context detached \n"
  3、IPSec应用程序
  IPSec应用程序用来在路由器上建立基于IPSec( IP Security)协议的虚拟专用网VPN (Virtual PrivateNetwork) , IPSec 是IETF( Internet Engineer TaskForce)制定的安全标准,它把几种安全技术结合在一起形成了一个较为完整的体系。它通过对数据进行加密、认证、完整性检查来保证数据传输的可靠性、私有性和保密性。IPSec提供IP层的安全性,由于所有支持TCP/IP协议的主机进行通信时都要经过IP层的处理,所以提供了IP层的安全性就相当于为整个网络提供了安全通信的保障。IPSec由认证头AH (Authentication Header) 、安全封装载荷ESP( Encap sulated Security Payload)和密钥管理协议组成。IPSec应用程序的设计就是将IPSec协议用计算机语言代码来实现。uClinux 操作系统中的FreeSWAN应用程序就是用来实现IPSec协议的一种公开源代码软件,通过对相关部分的修改和配置,就可以在无线路由器上运行。最新版本的uClinux中已经包含了FreeSWAN1.97。
  对FreeSWAN 的配置主要是对/ etc / ipsec.conf和/ etc/ipsec.secrets 这两个文件进行相应的编辑。/etc /ipsec.conf中包含了对应不同连接的相关配置信息,而/etc/ipsec.secrets中则包含了RSA密钥对以及预共享秘密等用来进行认证的密钥信息。在无线路由器上执行# ipsec showhostkey---left,以获得该主机的RSA 公钥,然后编辑/etc/ ipsec.conf,增加了一个名为“net - net”的新连接。
  conn net-net left = x. x. x. x ,填入无线路由器拨号所获得的对外IP地址leftsubnet = 192.168.1.0/24 ,无线路由器网关保护子网的IP地址范围leftrsasigkey = 0s1LgR7 /oUM. . . ,将刚才得到的left RSA公钥填入right = x. x. x. x ,填入VPN服务器的对外IP地址rightsubnet=192.168.5.0/24 ,另一方保护的子网IP地址范围rightrsasigkey = 0sAQOqH55O. . . ,将VPN服务器的right RSA公钥填入auto=add ,启动时并不自动建立连接双方重新启动ipsec后,该连接就被Pluto加载, 并做好建立连接的准备了。在无线路由器上执行# ipsec auto---up net-net即可看到一系列的连接建立过程。
  三、连接方法及应用
  无线路由器对终端设备提供两个接口,分别是以太网接口和RS-232 串行接口。无线路由器中的路由软件将来自设备的数据自动转发到GPRS网络,或者接收来自GPRS网络的数据并转发给设备。终端设备只要通过以太网口或RS-232串行口连接到无线路由器,并将默认网关设置成无线路由器的IP地址,就可以接入到GPRS网络。
  基于ARM7GPRS无线VPN路由器设计3
  图3 网络规划和设计图
  使用通信专线将移动网络与行业的数据中心相连;在数据中心放置VPN服务器,与各网点的无线路由器进行VPN连接;修改现有网络中各设备的网络配置,利用移动网络进行数据通信。其适用场合包括: 银行:营业网点、ATM机、pos机; 医院:医保中心联网、流动救护车; 保险:保险公司网点联网; 超市、连锁店:M IS系统互连; 移动场所:电力抢修、治安警车等; 环保:现场监控、联网。