引言
無(wú)線路由器是一款基于GPRS/CDMA 1X公用移動(dòng)網(wǎng)絡(luò)平臺(tái),通過(guò)無(wú)線接入Internet或VPDN的網(wǎng)絡(luò)設(shè)備。它能提供可移動(dòng)的、低成本的基于TCP/IP的數(shù)據(jù)傳輸通道。
無(wú)線路由器可廣泛應(yīng)用于金融、保險(xiǎn)、電力、監(jiān)控、交通、氣象、水文監(jiān)測(cè)等行業(yè)。利用穩(wěn)定的GPRS/CDMA 1X無(wú)線網(wǎng)絡(luò),無(wú)線路由器可以代替部分有線以太網(wǎng)路由器、HUB、有線MODEM,實(shí)現(xiàn)數(shù)據(jù)的無(wú)線傳輸。在公用移動(dòng)網(wǎng)絡(luò)覆蓋的條件下,原先采用以太網(wǎng)接口,依靠有線以太網(wǎng)通信系統(tǒng)的各種終端設(shè)備,如PC機(jī)、工控機(jī)、ATM機(jī)、POS機(jī)、網(wǎng)絡(luò)攝像機(jī)等,都可以很方便地通過(guò)無(wú)線路由器接入到GPRS/CDMA 1X網(wǎng)絡(luò)中,利用移動(dòng)互聯(lián)網(wǎng)提供的數(shù)據(jù)服務(wù)來(lái)進(jìn)行數(shù)據(jù)通信。
圖1 模擬器工作原理示意圖
與傳統(tǒng)有線網(wǎng)絡(luò)接入相比,無(wú)線路由器設(shè)備具有以下優(yōu)點(diǎn):
·不受線纜的約束,能迅速提供無(wú)線TCP/IP服務(wù)。
·具有移動(dòng)性,可以安裝在輪船、火車(chē)、汽車(chē)等移動(dòng)載體上。
·靈活可變,根據(jù)需要隨時(shí)增減設(shè)備。
無(wú)線路由器硬件設(shè)計(jì)
無(wú)線路由器由無(wú)線通信模塊、以太網(wǎng)接口、嵌入式處理器及存儲(chǔ)器、電源模塊等四部分組成,如圖1所示,它一端通過(guò)無(wú)線通信模塊經(jīng)天線接入GPRS/CDMA 1X網(wǎng)絡(luò),另一端通過(guò)以太網(wǎng)接口連接網(wǎng)絡(luò)終端設(shè)備,如PC、網(wǎng)絡(luò)攝像機(jī)、多媒體終端等,無(wú)線路由器相當(dāng)于在網(wǎng)絡(luò)終端設(shè)備和互聯(lián)網(wǎng)之間搭起了一座橋梁。無(wú)線通信模塊部分完成接入GPRS/CDMA 1X網(wǎng)絡(luò)的工作,相當(dāng)于一部可以撥號(hào)上網(wǎng)的移動(dòng)調(diào)制解調(diào)器。
無(wú)線路由器通過(guò)無(wú)線通信模塊連接GPRS或CDMA 1X移動(dòng)互聯(lián)網(wǎng)絡(luò),通過(guò)以太網(wǎng)接口連接內(nèi)部網(wǎng)絡(luò)設(shè)備或者內(nèi)部局域網(wǎng)。無(wú)線路由器具備網(wǎng)絡(luò)路由功能,能夠在兩個(gè)網(wǎng)絡(luò)之間轉(zhuǎn)發(fā)數(shù)據(jù)。各種終端設(shè)備發(fā)出的數(shù)據(jù)通過(guò)以太網(wǎng)口被處理器接收,處理器對(duì)數(shù)據(jù)進(jìn)行相應(yīng)處理后再通過(guò)串行口1發(fā)送給無(wú)線通信模塊,由它轉(zhuǎn)發(fā)到GPRS或CDMA網(wǎng)絡(luò)中。同理,從無(wú)線網(wǎng)絡(luò)來(lái)的反向數(shù)據(jù)經(jīng)過(guò)相反的路徑最終送回網(wǎng)絡(luò)終端設(shè)備。
無(wú)線路由器硬件包括嵌入式處理器、存儲(chǔ)器、無(wú)線通信模塊、接口和電源等幾部分,如圖2所示。
圖2 無(wú)線路由器硬件設(shè)計(jì)框圖
處理器
無(wú)線路由器的嵌入式處理器采用ARM處理器S3C4510B,內(nèi)核為ARM7TDMI,主頻為50MHz,它提供2個(gè)UART串行口、1個(gè)I2C總線控制器、1個(gè)實(shí)時(shí)時(shí)鐘和1個(gè)10/100Mbps以太網(wǎng)控制器。
存儲(chǔ)器
FLASH存儲(chǔ)器為1片1M×16位數(shù)據(jù)寬度的HY29LV160,它的容量為16M位(2M字節(jié)),工作電壓為2.7V~3.6V。
SDRAM存儲(chǔ)器為1片16位數(shù)據(jù)寬度的HY57V641620,它的容量為4組×16M位(8M字節(jié)),工作電壓為3.3V。
I2C存儲(chǔ)器為1片AT24C01,它提供了128字節(jié)的EEPROM存儲(chǔ)空間,可用于存放少量在系統(tǒng)掉電時(shí)需要保存的數(shù)據(jù)。
無(wú)線通信模塊
采用Wavecom公司生產(chǎn)的GPRS模塊Q2406B或CDMA 1X模塊Q2358C,嵌入式處理器通過(guò)串行口1與無(wú)線通信模塊的相連,模塊通過(guò)外接天線與公用移動(dòng)網(wǎng)絡(luò)的蜂窩小區(qū)基站通信,收發(fā)無(wú)線數(shù)據(jù)。
對(duì)外接口
路由器對(duì)外有三個(gè)接口:一個(gè)SMA座的天線接口,50Ω阻抗;一個(gè)RJ45座的10M以太網(wǎng)口接口,連接各種網(wǎng)絡(luò)終端設(shè)備;一個(gè)DB9座的RS232串行口,既可以配置成控制臺(tái)接口,用來(lái)設(shè)置參數(shù)和設(shè)備運(yùn)行監(jiān)控,也可配置成串口數(shù)據(jù)轉(zhuǎn)換接口,用于將串口數(shù)據(jù)轉(zhuǎn)換成網(wǎng)口數(shù)據(jù)。
電源
考慮到車(chē)載電瓶電壓大都為+12V,為了方便連接汽車(chē)的點(diǎn)煙器或車(chē)載電瓶,無(wú)線路由器電源模塊采用直流電源+12輸入,輸出4V、2.8V、3.3V,分別供給無(wú)線通信模塊、S3C4510、FLASH等數(shù)字電路部分。
無(wú)線路由器的軟件設(shè)計(jì)
操作系統(tǒng)軟件
mClinux是一個(gè)完全符合GNU/GPL(通用公共許可證)公約的項(xiàng)目和完全開(kāi)放代碼,它是標(biāo)準(zhǔn)Linux的一個(gè)分支,現(xiàn)在由Lineo公司支持維護(hù)。它專門(mén)針對(duì)沒(méi)有MMU的CPU,并且為嵌放式系統(tǒng)做了許多小型化的工作。
無(wú)線路由器的操作系統(tǒng)軟件采用mClinux,它是基于Linux內(nèi)核公開(kāi)源代碼的一種嵌入式操作系統(tǒng)。由于無(wú)線路由器的硬件電路是針對(duì)此應(yīng)用專門(mén)設(shè)計(jì)的,mClinux并不能直接使用,所以重新修改mClinux操作系統(tǒng)軟件中與硬件電路相關(guān)的部分源代碼,使得mClinux操作系統(tǒng)能夠在無(wú)線路由器電路板上正常運(yùn)行,針對(duì)mClinux進(jìn)行的改動(dòng)主要有:
·ARM S3C4510B和存儲(chǔ)器芯片的初始化程序;
·mClinux內(nèi)核的引導(dǎo)程序bootloader;
·無(wú)線路由器各種網(wǎng)絡(luò)應(yīng)用軟件的配置文件;
·針對(duì)ARM S3C4510B處理器,選擇合適的編譯工具和參數(shù)選項(xiàng),重新編譯整個(gè)操作系統(tǒng)。
無(wú)線路由器支持的網(wǎng)絡(luò)協(xié)議
無(wú)線路由器支持的網(wǎng)絡(luò)協(xié)議示于表1。
表1 無(wú)線路由器支持的網(wǎng)絡(luò)協(xié)議
應(yīng)用軟件
無(wú)線路由器的網(wǎng)絡(luò)接口包括有線以太網(wǎng)接口和無(wú)線撥號(hào)上網(wǎng)接口,無(wú)線路由器的作用就是在這兩個(gè)接口之間轉(zhuǎn)發(fā)數(shù)據(jù),提供靜態(tài)路由功能。TCP/IP網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)代碼已經(jīng)內(nèi)嵌在mClinux操作系統(tǒng)中,在內(nèi)核中設(shè)置“IP轉(zhuǎn)發(fā)”和“IP偽裝”就能實(shí)現(xiàn)靜態(tài)路由功能。應(yīng)用軟件設(shè)計(jì)主要包括兩個(gè)網(wǎng)絡(luò)應(yīng)用程序:PPP應(yīng)用程序和iptables應(yīng)用程序。
PPP應(yīng)用程序
PPP應(yīng)用程序用來(lái)通過(guò)無(wú)線通信模塊撥號(hào)登錄GPRS/CDMA 1X移動(dòng)網(wǎng)絡(luò),登錄過(guò)程遵循PPP點(diǎn)到點(diǎn)通信協(xié)議。mClinux操作系統(tǒng)代碼中包含有一個(gè)實(shí)現(xiàn)PPP協(xié)議的程序pppd,但是需要根據(jù)GPRS/CDMA 1X移動(dòng)網(wǎng)絡(luò)通信的要求,修改pppd源代碼中的部分配置參數(shù),如撥號(hào)號(hào)碼、登錄用戶名、登錄密碼,就能夠得到需要的PPP應(yīng)用程序,實(shí)現(xiàn)撥號(hào)登錄移動(dòng)網(wǎng)絡(luò)。
iptables應(yīng)用程序
iptables軟件包支持?jǐn)?shù)據(jù)處理包偽裝和過(guò)濾功能,這種功能被稱為網(wǎng)絡(luò)過(guò)濾器(netfilter)。在無(wú)線路由器中我們使用了"IP轉(zhuǎn)發(fā)"和"IP偽裝"功能。
“IP轉(zhuǎn)發(fā)”功能 :
# echo 1 > /proc/sys/net/ipv4/ipforward
“IP偽裝”功能:
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
“IP偽裝”的工作原理是:當(dāng)路由器撥號(hào)上網(wǎng)后,它擁有的兩個(gè)網(wǎng)絡(luò)接口,它倆分別擁有兩個(gè)IP地址:
a.撥號(hào)網(wǎng)絡(luò)接口ppp0是一個(gè)動(dòng)態(tài)的合法公網(wǎng)IP地址,假定為a.b.c.d;
b.以太網(wǎng)口接口eth0是一個(gè)固定的私網(wǎng)的IP地址,假定為192.168.1.1
假如以太網(wǎng)口連接的是一個(gè)局域網(wǎng)192.168.1.x,通常這個(gè)局域網(wǎng)內(nèi)的設(shè)備是不能訪問(wèn)到公網(wǎng)IP的。局域網(wǎng)終端設(shè)備(假定它的ip地址為192.168.1.22)將無(wú)線路由器以太網(wǎng)口的IP地址192.168.1.1設(shè)定為默認(rèn)網(wǎng)關(guān),當(dāng)無(wú)線路由器收到局域網(wǎng)設(shè)備訪問(wèn)公網(wǎng)的請(qǐng)求數(shù)據(jù)包時(shí),通過(guò)上面的"IP轉(zhuǎn)發(fā)"命令對(duì)其進(jìn)行轉(zhuǎn)發(fā),再通過(guò)的"IP偽裝"命令對(duì)其進(jìn)行改寫(xiě),將數(shù)據(jù)包的源地址192.168.1.22替換為自己的合法IP地址a.b.c.d,將源端口號(hào)port1換成一個(gè)新的端口號(hào)port2,并且對(duì)該過(guò)程進(jìn)行記錄。
當(dāng)無(wú)線路由器收到Internet主機(jī)的響應(yīng)包時(shí),如果目的端口號(hào)正是先前改動(dòng)后的端口號(hào)port2,則再對(duì)該包進(jìn)行反向改寫(xiě),將響應(yīng)包的目的IP(a.b.c.d)及目的端口號(hào)(port2)替換為原來(lái)記錄的局域網(wǎng)設(shè)備的IP地址192.168.1.22和端口號(hào)port1,然后再發(fā)送給局域網(wǎng)設(shè)備。
將私網(wǎng)地址轉(zhuǎn)化為公網(wǎng)地址,是由存儲(chǔ)在基于iptable的無(wú)線路由器上的數(shù)據(jù)庫(kù)完成的。無(wú)線路由器的iptable軟件維護(hù)這個(gè)數(shù)據(jù)庫(kù),因此它知道如何進(jìn)行“逆轉(zhuǎn)換”,所以從公網(wǎng)返回的數(shù)據(jù)就能正確的送到源訪問(wèn)設(shè)備。
終端設(shè)備接入無(wú)線網(wǎng)絡(luò)方式
無(wú)線路由器對(duì)終端設(shè)備提供兩個(gè)接口,分別是以太接口和無(wú)線ppp接口。無(wú)線路由器中的路由軟件將來(lái)自以太口的有線網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)自動(dòng)轉(zhuǎn)發(fā)到GPRS/CDMA網(wǎng)絡(luò),或者接收來(lái)自GPRS/CDMA網(wǎng)絡(luò)的數(shù)據(jù)并轉(zhuǎn)發(fā)給以太口的有線網(wǎng)絡(luò)設(shè)備。這種由無(wú)線路由器的自動(dòng)轉(zhuǎn)發(fā)能力提供了以下三種功能:
·網(wǎng)絡(luò)終端設(shè)備的數(shù)據(jù)轉(zhuǎn)發(fā)
網(wǎng)絡(luò)終端設(shè)備只要通過(guò)以太網(wǎng)口連接到無(wú)線路由器,并將默認(rèn)網(wǎng)關(guān)設(shè)置成無(wú)線路由器的IP地址,就可以接入到GPRS/CDMA網(wǎng)絡(luò)。終端設(shè)備本身的通信軟件無(wú)需作任何的改變。
·網(wǎng)絡(luò)終端設(shè)備的即插即用
無(wú)線路由器內(nèi)置DHCP服務(wù)器。終端設(shè)備只要設(shè)置成自動(dòng)獲取IP地址,通過(guò)以太口連接到無(wú)線路由器,就可以通過(guò)DHCP協(xié)議自動(dòng)獲取動(dòng)態(tài)的IP地址、網(wǎng)關(guān)地址、子網(wǎng)掩碼、DNS等網(wǎng)絡(luò)參數(shù),然后可以接入到GPRS/CDMA網(wǎng)絡(luò)。終端設(shè)備本身的通信軟件無(wú)需作任何的改變,真正做到了即插即用。
·移動(dòng)網(wǎng)絡(luò)自適應(yīng)
無(wú)線路由器內(nèi)置軟件能自動(dòng)識(shí)別路由器硬件配置的無(wú)線通信模塊類型,然后采用不同的撥號(hào)參數(shù),登錄GPRS或者CDMA 1X移動(dòng)網(wǎng)絡(luò)。
圖3 無(wú)線路由器的設(shè)備外形圖
結(jié)語(yǔ)
有線網(wǎng)絡(luò)終端設(shè)備可以利用已有的GPRS/CDMA 1X網(wǎng)絡(luò),無(wú)需鋪設(shè)網(wǎng)線便可通過(guò)無(wú)線路由器完成網(wǎng)絡(luò)無(wú)線接入。CDMA 1X無(wú)線路由器設(shè)備可在高速公路監(jiān)控、防汛指揮、山區(qū)防火、地質(zhì)災(zāi)害等場(chǎng)合作為應(yīng)急通信手段。在偏遠(yuǎn)地區(qū),島嶼、汽車(chē)、三峽游輪、火車(chē)等架設(shè)通信線路困難或架線不經(jīng)濟(jì)的地方,使用GPRS/CDMA 1X無(wú)線路由器接入互聯(lián)網(wǎng)或者專用VPDN是一種迅速、廉價(jià)的解決方法。本設(shè)備已經(jīng)應(yīng)用在太湖流域管理局的太湖水文數(shù)據(jù)監(jiān)控系統(tǒng)中。
總之,在GPRS/CDMA 1X蜂窩網(wǎng)覆蓋的范圍內(nèi),無(wú)線路由器設(shè)備能快速經(jīng)濟(jì)地提供無(wú)線網(wǎng)絡(luò)通信業(yè)務(wù)。本文所提供方法實(shí)現(xiàn)的無(wú)線路由器設(shè)備通用性強(qiáng),能夠高效率地運(yùn)行。
參考文獻(xiàn):
1. James Stanger,Patrick T.Lane著,鐘日紅等譯,Linux黑客防范開(kāi)放源代碼安全指南,機(jī)械電子工業(yè)出版社,2002年
2. Samsung Electronics,S3C4510B USER Manual
3. ARM Architecture Reference Manual,Second Edition,David Seal
4. 李駒光編著,ARM應(yīng)用系統(tǒng)開(kāi)發(fā)詳解(第二版),清華大學(xué)出版社,2004年12月