基于ARM7的GPRS無線VPN路由器設(shè)計(jì)
關(guān)鍵詞: GPRS; ARM7; VPN; 無線VPN路由器
1 概 述
1.1 ARM簡介
ARM (Advanced RISC Machines) ,既可以認(rèn)為是一個(gè)公司的名字,也可以認(rèn)為是對一類微處理器的通稱,還可以認(rèn)為是一種技術(shù)的名字。1991年ARM公司成立于英國劍橋, ARM公司是專門從事基于RISC技術(shù)芯片設(shè)計(jì)開發(fā)的公司,作為知識產(chǎn)權(quán)供應(yīng)商,本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計(jì)許可由合作公司生產(chǎn)各具特色的芯片,世界各大半導(dǎo)體生產(chǎn)商從ARM公司購買其設(shè)計(jì)的ARM微處理器核,根據(jù)各自不同的應(yīng)用領(lǐng)域,加入適當(dāng)?shù)耐鈬娐?從而形成自己的ARM微處理器芯片進(jìn)入市場。ARM微處理器目前包括下面幾個(gè)系列, ARM7系列、ARM9系列、ARM9E系列、ARM10E系列、SecurCore系列、Intel 的Xscale以及StrongARM。它們共同構(gòu)成了當(dāng)今嵌入式領(lǐng)域的主流微處理器。
1.2 GPRS簡介
GPRS(General Packet Radio Service)是通用分組無線業(yè)務(wù)的簡稱,是在GSM基礎(chǔ)上發(fā)展起來的一種分組交換的數(shù)據(jù)承載和傳輸方式。與原有的GSM比較, GPRS在數(shù)據(jù)業(yè)務(wù)的承載和支持上具有非常明顯的優(yōu)勢:通過多個(gè)GSM時(shí)隙的復(fù)用,支持的數(shù)據(jù)傳輸速率更高,理論峰值達(dá)115kbps;不同的網(wǎng)絡(luò)用戶共享同一組GPRS信道,但只有當(dāng)某一個(gè)用戶需要發(fā)送或接收數(shù)據(jù)時(shí)才會(huì)占用信道資源。這樣,通過多用戶的業(yè)務(wù)復(fù)用,更有效地利用無線網(wǎng)絡(luò)信道資源,特別適合突發(fā)性、頻繁的小流量數(shù)據(jù)傳輸,很好地適應(yīng)數(shù)據(jù)業(yè)務(wù)的突發(fā)性特點(diǎn); GPRS計(jì)費(fèi)方式更加靈活,可以支持按數(shù)據(jù)流量來進(jìn)行計(jì)費(fèi);與無線應(yīng)用協(xié)議(WAP)技術(shù)不同, GPRS能夠隨時(shí)為用戶提供透明的IP通道,可直接訪問Internet中的所有站點(diǎn)和資源;采用信道復(fù)用技術(shù),每一個(gè)GPRS用戶都能夠?qū)崿F(xiàn)永遠(yuǎn)在線。
2 硬件部分
2.1 設(shè)計(jì)思路
無線路由器電路板通過無線通信模塊連接GPRS移動(dòng)網(wǎng)絡(luò),通過以太口連接內(nèi)部終端設(shè)備或者內(nèi)部局域網(wǎng)。無線路由器具備網(wǎng)絡(luò)路由功能,能夠在兩個(gè)網(wǎng)絡(luò)之間轉(zhuǎn)發(fā)數(shù)據(jù)。各種終端設(shè)備發(fā)出的數(shù)據(jù)通過以太口被處理器接收,處理器對數(shù)據(jù)進(jìn)行相應(yīng)處理后(例如加/解密)再通過串行口發(fā)送給無線通信模塊,由它轉(zhuǎn)發(fā)到GPRS網(wǎng)絡(luò)中。同理,反向的數(shù)據(jù)經(jīng)過相反的路徑最終送回終端設(shè)備。
2.2 硬件設(shè)計(jì)
嵌入式處理器采用三星公司的S3C4510B,它是基于以太網(wǎng)應(yīng)用系統(tǒng)的高性價(jià)比的16/32位RISC微控制器,內(nèi)含一個(gè)由ARM公司設(shè)計(jì)的16/32位ARM7TDMI RISC處理器核。通過GPRS網(wǎng)進(jìn)行數(shù)據(jù)傳輸需要使用GPRS模塊。目前, GPRS模塊一般是指帶有GPRS功能的GSM模塊,模塊通過外接天線與蜂窩小區(qū)基站通信, 收發(fā)無線數(shù)據(jù)。本設(shè)計(jì)中GPRS 模塊采用Wavecom公司的W ISMO Quik Q2400系列.其他各部分基本功能描述如下:
串行接口電路用于S3C4510B與GPRS模塊以及其他應(yīng)用系統(tǒng)進(jìn)行短距離雙向串行通訊; 復(fù)位電路可完成系統(tǒng)上電復(fù)位和在系統(tǒng)工作時(shí)用戶按鍵復(fù)位;電源電路為整個(gè)系統(tǒng)提供工作所需的電壓,包括5V, 3.6V以及3.3V;10MHz有源晶振為系統(tǒng)提供工作時(shí)鐘; FLASH存儲器可存放已調(diào)試好的應(yīng)用程序、嵌入式操作系統(tǒng)或其他在系統(tǒng)掉電后需要保存的用戶數(shù)據(jù)等;
SDRAM存儲器作為系統(tǒng)運(yùn)行時(shí)的主要區(qū)域,系統(tǒng)及用戶數(shù)據(jù)、堆棧均位于SDRAM存儲器中;10M/100M以太網(wǎng)接口為系統(tǒng)提供以太網(wǎng)接入的物理通道;I2C存儲器可存儲少量需要長期保存的用戶數(shù)據(jù).
2.3 硬件連接
完整的硬件連接圖如圖1所示。
圖1 硬件連接圖
3 軟件部分
在此無線路由器中使用的操作系統(tǒng)是uClinux,它是專門應(yīng)用于沒有MMU的微控制器上的操作系統(tǒng)。uClinux操作系統(tǒng)中已經(jīng)內(nèi)嵌了TCP/IP網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)代碼,在內(nèi)核中設(shè)置“IP轉(zhuǎn)發(fā)”就能實(shí)現(xiàn)靜態(tài)路由功能。為了實(shí)現(xiàn)撥號登錄移動(dòng)網(wǎng)絡(luò)以及VPN的功能,則需要用到2個(gè)網(wǎng)絡(luò)應(yīng)用程序: PPP應(yīng)用程序和IPSec應(yīng)用程序。圖2是整個(gè)系統(tǒng)的軟件結(jié)構(gòu)層次圖。
圖2 軟件結(jié)構(gòu)層次圖
3. 1 uClinux 的移植
uClinux 的源代碼和開發(fā)工具可以免費(fèi)從http: //www.uclinux.org上下載得到。www.uclinux.org上定期為新推出的Linux內(nèi)核推出相應(yīng)的源碼包。最新的版本為uClinux-dist-20040408.tar.gz,也可以從該網(wǎng)站上免費(fèi)下載得到。這個(gè)源碼包里包含了uCL inux -2.6.2、uCL inux-2.4.24、2.0.39、uClibc和已經(jīng)移植到uClinux下的用戶應(yīng)用程序。tar xzvf uClinux-dist-20040408.tar.bz將其解壓縮到/home/uClinux-dist下。另外還需要從www.uclinux.org/pub/uClinux/arm-elf -tools/上下載ARM 交叉編譯器: arm-elf-tools-20030314.sh,執(zhí)行以建立uClinux-ARM的交叉編譯環(huán)境。為了使uClinux能順利地在無線路由器上跑起來,需要針對此硬件平臺對uClinux再進(jìn)行修改。在/home/uClinux-dist/linux-2.4.x/include/asm-armnommu/下的hardware.h文件包含了S3C4510B片內(nèi)特殊功能寄存器以及其他相關(guān)硬件信息的定義。可以在此對其進(jìn)行修改。另外還可以在make xconfig的時(shí)候?qū)endor選為Samsung,并選中Customize Kernel Settings一項(xiàng),之后可以在出現(xiàn)的System Type中對相關(guān)參數(shù)進(jìn)行修改,主要包括系統(tǒng)的主時(shí)鐘頻率、FLASH和SDRAM的起始地址及大小等。最終通過編譯即可得到無線路由器運(yùn)行所需要的image.rom和image.ram。
3. 2 PPP應(yīng)用程序
PPP應(yīng)用程序用來通過無線通信模塊撥號登錄移動(dòng)網(wǎng)絡(luò),登錄過程遵循PPP (Point-to-Point Protocol)通信協(xié)議。目前uClinux操作系統(tǒng)中已包含的多種應(yīng)用程序中有一種實(shí)現(xiàn)PPP協(xié)議的程序pppd,只需要根據(jù)無線移動(dòng)網(wǎng)絡(luò)通信的特征,修改pppd源代碼中的部分配置參數(shù),就能夠得到需要的PPP應(yīng)用程序。以下是進(jìn)行撥號登陸移動(dòng)網(wǎng)絡(luò)的腳本程序:
#! /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
其中用來實(shí)現(xiàn)撥號和掛斷的腳本gprs-connect-chat和gprs-disconnect-chat分別如下:
gprs-connect-chat
#! /bin/sh
exec/usr/sbin/chat
TIMEOUT 5
ECHO ON
ABORT ’BUSY r’
ABORT ’ERROR ’
ABORT ’NO ANSWER ’
ABORT ’NO DIALTONE r’
ABORT ’R INGING rRINGING r’
SAY "Press CTRL-C to close the connection at any stage!"
SAY"defining PDP context. . . "
" " ’+ + + ’
" " ’ATH’
OK ’AT +CGDCONT = 1,"IP" , "cmnet" ’
OK ’ATDT3 993 3 3 1#’
TIMEOUT 10
SAY" waiting for connect. . . "
CONNECT" "
SAY"Connected. "
SAY"If the following ppp negotiations fail, "
SAY"try restarting the phone."
gprs-disconnect
#!/bin/sh
/usr/sbin/chat
TIMEOUT 5
ECHO ON
ABORT ’NO CARR IER’
ABORT ’ERROR’
ABORT ’NO DIALTONE’
SAY "Sending break to the modem "
" " ’dd + + + d d’
" " ’ATH’
" " OK
SAY"PDP context detached "
3. 3 IPSec應(yīng)用程序
IPSec應(yīng)用程序用來在路由器上建立基于IPSec( IP Security)協(xié)議的虛擬專用網(wǎng)VPN (Virtual PrivateNetwork) , IPSec 是IETF( Internet Engineer TaskForce)制定的安全標(biāo)準(zhǔn),它把幾種安全技術(shù)結(jié)合在一起形成了一個(gè)較為完整的體系。它通過對數(shù)據(jù)進(jìn)行加密、認(rèn)證、完整性檢查來保證數(shù)據(jù)傳輸?shù)目煽啃浴⑺接行院捅C苄?。IPSec提供IP層的安全性,由于所有支持TCP/IP協(xié)議的主機(jī)進(jìn)行通信時(shí)都要經(jīng)過IP層的處理,所以提供了IP層的安全性就相當(dāng)于為整個(gè)網(wǎng)絡(luò)提供了安全通信的保障。IPSec由認(rèn)證頭AH (Authentication Header) 、安全封裝載荷ESP( Encap sulated Security Payload)和密鑰管理協(xié)議組成。IPSec應(yīng)用程序的設(shè)計(jì)就是將IPSec協(xié)議用計(jì)算機(jī)語言代碼來實(shí)現(xiàn)。uClinux 操作系統(tǒng)中的FreeSWAN應(yīng)用程序就是用來實(shí)現(xiàn)IPSec協(xié)議的一種公開源代碼軟件,通過對相關(guān)部分的修改和配置,就可以在無線路由器上運(yùn)行。最新版本的uClinux中已經(jīng)包含了FreeSWAN1.97。
對FreeSWAN 的配置主要是對/ etc / ipsec.conf和/ etc/ipsec.secrets 這兩個(gè)文件進(jìn)行相應(yīng)的編輯。/etc /ipsec.conf中包含了對應(yīng)不同連接的相關(guān)配置信息,而/etc/ipsec.secrets中則包含了RSA密鑰對以及預(yù)共享秘密等用來進(jìn)行認(rèn)證的密鑰信息。在無線路由器上執(zhí)行# ipsec showhostkey―――left,以獲得該主機(jī)的RSA 公鑰,然后編輯/etc/ ipsec.conf,增加了一個(gè)名為“net - net”的新連接。
conn net-net left = x. x. x. x ,填入無線路由器撥號所獲得的對外IP地址leftsubnet = 192.168.1.0/24 ,無線路由器網(wǎng)關(guān)保護(hù)子網(wǎng)的IP地址范圍leftrsasigkey = 0s1LgR7 /oUM. . . ,將剛才得到的left RSA公鑰填入right = x. x. x. x ,填入VPN服務(wù)器的對外IP地址rightsubnet=192.168.5.0/24 ,另一方保護(hù)的子網(wǎng)IP地址范圍rightrsasigkey = 0sAQOqH55O. . . ,將VPN服務(wù)器的right RSA公鑰填入auto=add ,啟動(dòng)時(shí)并不自動(dòng)建立連接雙方重新啟動(dòng)ipsec后,該連接就被Pluto加載, 并做好建立連接的準(zhǔn)備了。在無線路由器上執(zhí)行# ipsec auto―――up net-net即可看到一系列的連接建立過程。
4 連接方法及應(yīng)用
無線路由器對終端設(shè)備提供兩個(gè)接口,分別是以太網(wǎng)接口和RS-232 串行接口。無線路由器中的路由軟件將來自設(shè)備的數(shù)據(jù)自動(dòng)轉(zhuǎn)發(fā)到GPRS網(wǎng)絡(luò),或者接收來自GPRS網(wǎng)絡(luò)的數(shù)據(jù)并轉(zhuǎn)發(fā)給設(shè)備。終端設(shè)備只要通過以太網(wǎng)口或RS-232串行口連接到無線路由器,并將默認(rèn)網(wǎng)關(guān)設(shè)置成無線路由器的IP地址,就可以接入到GPRS網(wǎng)絡(luò)。
圖3 網(wǎng)絡(luò)規(guī)劃和設(shè)計(jì)圖
使用通信專線將移動(dòng)網(wǎng)絡(luò)與行業(yè)的數(shù)據(jù)中心相連;在數(shù)據(jù)中心放置VPN服務(wù)器,與各網(wǎng)點(diǎn)的無線路由器進(jìn)行VPN連接;修改現(xiàn)有網(wǎng)絡(luò)中各設(shè)備的網(wǎng)絡(luò)配置,利用移動(dòng)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通信。其適用場合包括: 銀行:營業(yè)網(wǎng)點(diǎn)、ATM機(jī)、pos機(jī); 醫(yī)院:醫(yī)保中心聯(lián)網(wǎng)、流動(dòng)救護(hù)車; 保險(xiǎn):保險(xiǎn)公司網(wǎng)點(diǎn)聯(lián)網(wǎng); 超市、連鎖店:M IS系統(tǒng)互連; 移動(dòng)場所:電力搶修、治安警車等; 環(huán)保:現(xiàn)場監(jiān)控、聯(lián)網(wǎng)。
5 總結(jié)
本文較為詳細(xì)地介紹了一種新型無線VPN路由器的設(shè)計(jì)方法。首先從硬件構(gòu)造上進(jìn)行剖析,提供了詳細(xì)的硬件開發(fā)方案。然后重點(diǎn)闡述了軟件設(shè)計(jì)方法,包括操作系統(tǒng)的移植,實(shí)現(xiàn)無線網(wǎng)絡(luò)連接的PPP撥號程序以及實(shí)現(xiàn)VPN 的IPSEC應(yīng)用程序。通過使用本文中所提出的方法,可以很好的滿足很多行業(yè)的應(yīng)用需求。
評論