一種具有多跳功能的無(wú)線VoIP終端設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
傳統(tǒng)的工廠生產(chǎn)線調(diào)度系統(tǒng)通信都是通過(guò)有線電話實(shí)現(xiàn)的。這種有線連接方式存在著無(wú)法滿足移動(dòng)通信需求,線纜設(shè)施易受損,且布設(shè)和維護(hù)成本高等諸多問(wèn)題。基于IEEE 802.11協(xié)議的無(wú)線局域網(wǎng)接入技術(shù)擁有廣泛的應(yīng)用基礎(chǔ),具有傳輸速率快,覆蓋范圍廣等突出優(yōu)勢(shì),可以很好地解決這些問(wèn)題。
為了能在基于IEEE 802.11協(xié)議的無(wú)線局域網(wǎng)上實(shí)現(xiàn)語(yǔ)音通信目的,必須采用無(wú)線VoIP(Voice overIP)技術(shù)。考慮到一般工廠的通信范圍為l km左右,目前采用基于IEEE 802.11的技術(shù),在空曠地帶的傳輸距離只有大約200 m,因此考慮采用多跳的方式增加通信的覆蓋范圍。本文提出了一種基于IEEE 802.11協(xié)議的無(wú)線VoIP終端設(shè)計(jì)方案,并通過(guò)在嵌入式終端上實(shí)現(xiàn)Ad Hoc路由協(xié)議AODV(Ad hoc On-demand Distance Vector,按需距離矢量路由協(xié)議),使終端具有了多跳通話功能。
1 相關(guān)技術(shù)及協(xié)議
1.1 VoIP
VoIP是利用IP網(wǎng)絡(luò)實(shí)現(xiàn)語(yǔ)音通信的一種先進(jìn)通信手段,是基于IP網(wǎng)絡(luò)的語(yǔ)音傳輸技術(shù)。其基本原理是利用電話網(wǎng)關(guān)服務(wù)器之類(lèi)的設(shè)備將電話語(yǔ)音數(shù)字化,將數(shù)據(jù)壓縮后打包成數(shù)據(jù)包,然后把這些語(yǔ)音數(shù)據(jù)按IP等相關(guān)協(xié)議進(jìn)行打包并通過(guò)IP網(wǎng)絡(luò)把數(shù)據(jù)包傳輸?shù)侥康牡?,目的地收到這一串?dāng)?shù)據(jù)包后,將數(shù)據(jù)重組、解壓縮后再還原成原來(lái)的語(yǔ)音信號(hào),這樣就達(dá)到了通過(guò)網(wǎng)絡(luò)傳送語(yǔ)音的目的。
采用VoIP技術(shù)進(jìn)行語(yǔ)音傳輸?shù)淖畲髢?yōu)勢(shì)在于能夠以報(bào)文的形式傳遞音頻數(shù)據(jù),不占用固定信道,并且采用了先進(jìn)的數(shù)字信號(hào)處理技術(shù),以降低數(shù)據(jù)量,可以將傳統(tǒng)的64 Kb/s語(yǔ)音信號(hào)壓縮成6~8 Kb/s,從而有效地節(jié)省了帶寬,同時(shí)由于不需要單獨(dú)建立通信網(wǎng)絡(luò),大大降低了通信費(fèi)用。
1.2 IEEE 802.11無(wú)線技術(shù)
IEEE 802.11是由IEEE定義的無(wú)線網(wǎng)絡(luò)通信工業(yè)標(biāo)準(zhǔn),目前主流的IEEE 802.11協(xié)議主要有IEEE 802.11a,IEEE 802.11b和IEEE 802.11g。IEEE 802.1la工作于5 GHz頻段,使用正交頻分復(fù)用(OFDM)調(diào)制技術(shù)作為傳輸方案,支持6~54 Mb/s的傳輸速率,802.11a的優(yōu)勢(shì)在于傳輸速率快(最高達(dá)54 Mb/s)且干擾少,但價(jià)格相對(duì)較高。IEEE 802.11b工作于2.4 GHz頻段,使用補(bǔ)碼鍵控(CCK)調(diào)制和直序列調(diào)頻(DSSS)技術(shù),支持1~11 Mb/s的傳輸速率,802.11b的優(yōu)勢(shì)在于價(jià)格低廉,但速率較低(最高為11 Mb/s)。IEEE 802.11g構(gòu)建在已有的IEEE 802.11b物理層與介質(zhì)訪問(wèn)控制層標(biāo)準(zhǔn)基礎(chǔ)上,同樣選擇2.4 GHz作為工作頻段,由于采用了OFDM調(diào)制技術(shù),可實(shí)現(xiàn)最高54 Mb/s的傳輸數(shù)率。由于其仍然工作在2.4 GHz頻段,并且保留了IEEE 802.11b所采用的CCK技術(shù),可與IEEE 802.11b的產(chǎn)品保持兼容。
1.3 AODV路由協(xié)議
AODV是一種基于距離矢量的按需路由算法,是專(zhuān)為移動(dòng)Ad Hoc網(wǎng)絡(luò)設(shè)計(jì)的路由協(xié)議,它的處理過(guò)程簡(jiǎn)單,路由開(kāi)銷(xiāo)以及存儲(chǔ)開(kāi)銷(xiāo)都較小,能對(duì)鏈路狀態(tài)的變化做出快速反應(yīng),并通過(guò)在控制報(bào)文中引入序列號(hào),確保在任何時(shí)候都不會(huì)形成路由環(huán)。由于AODV路由協(xié)議性能優(yōu)越,且實(shí)現(xiàn)復(fù)雜度低,被IETF(InternetEngineering Task Force)的MANET工作組認(rèn)為是無(wú)線自組網(wǎng)最好的候選路由協(xié)議之一。因此,本設(shè)計(jì)采用AODV作為路由協(xié)議的實(shí)現(xiàn)方案。
2 終端硬件設(shè)計(jì)
終端的硬件架構(gòu)如圖1所示,采用英飛凌公司的高速率ADM5120嵌入式微處理器作為主要器件,同時(shí)在終端集成了存儲(chǔ)器模塊、語(yǔ)音處理模塊、FXS連接模塊、IEEE 802.11b/g無(wú)線模塊等共同構(gòu)建終端的硬件平臺(tái)。
(1)處理器ADM5120
ADM5120是一種基于MIPS構(gòu)架的高度集成、高度靈活的SoC處理器,內(nèi)置了MIPS 32內(nèi)核,工作主頻最高可達(dá)175 MHz,內(nèi)部集成了8 KB指令緩存和8 KB數(shù)據(jù)緩存,對(duì)外提供8/16位的LOCAL BUS(支持標(biāo)準(zhǔn)的ROM/FLASH接口)、32位的SDRAM接口,1路UART接口。ADM5120內(nèi)部還集成了1個(gè)Switch引擎、5路10/100 Mb/s的PHY芯片,可對(duì)外提供5個(gè)10/100 Mb/s的以太網(wǎng)接口。ADM5120是終端通信控制和管理的核心,主要用于完成操作系統(tǒng)的運(yùn)行、資源的管理和分配、與各個(gè)模塊的接口和通信等功能。
(2)語(yǔ)音處理模塊
采用了高性能的DSP(VINETIC-2CPE),具有很強(qiáng)大的數(shù)字信號(hào)處理能力。用于完成處理模擬電話信號(hào),語(yǔ)音壓縮包,并提供實(shí)時(shí)壓縮包的緩沖,自適應(yīng)回聲抵消,靜音檢測(cè),DTMF信號(hào)產(chǎn)生、譯碼等功能,且不需要另外的存儲(chǔ)單元。
(3)FXS連接模塊
終端通過(guò)一個(gè)帶有DC/DC轉(zhuǎn)換功能的SLIC-DC芯片連接模擬電話線路。通信過(guò)程中,模擬話音信號(hào)通過(guò)RJ-11電話接口經(jīng)SLIC和CODEC電路轉(zhuǎn)換后,將產(chǎn)生的PCM流送到語(yǔ)音處理模塊中進(jìn)行處理。SLIC即用戶(hù)線接口電路,主要完成用戶(hù)狀態(tài)檢測(cè)和語(yǔ)音信號(hào)輸入輸出。它能夠檢測(cè)電話為掛機(jī)狀態(tài)還是摘機(jī)狀態(tài),并產(chǎn)生高電壓驅(qū)動(dòng)振鈴。CODEC(編解碼電路)由ADC與DAC電路構(gòu)成。ADC將模擬電話中的模擬信號(hào)轉(zhuǎn)換為可通過(guò)’VoIP網(wǎng)絡(luò)傳輸?shù)臄?shù)字信號(hào)。DAC將數(shù)字信號(hào)轉(zhuǎn)換為模擬電平,以驅(qū)動(dòng)模擬電話。
(4)IEEE 802.11b/g無(wú)線模塊
IEEE 802.11b/g無(wú)線模塊實(shí)現(xiàn)空中無(wú)線接口,完成無(wú)線局域網(wǎng)的接入功能。終端提供一個(gè)MiniPCI接口,采用的是美國(guó)Atheros公司AR2413芯片組的無(wú)線網(wǎng)卡WMIA-165G,支持IEEE 802.11b/g標(biāo)準(zhǔn),可提供54 Mb/s高速無(wú)線連接。
3 終端軟件設(shè)計(jì)
終端采用了主流的嵌入式Linux操作系統(tǒng),Linux具有源碼開(kāi)放,穩(wěn)定性與安全性較高,移植和擴(kuò)展能力較好的特點(diǎn)。如圖2所示,采用模塊化的設(shè)計(jì)思想對(duì)終端軟件進(jìn)行設(shè)計(jì)。
硬件驅(qū)動(dòng)層:主要功能是實(shí)現(xiàn)對(duì)IEEE 802.11b/g無(wú)線模塊、DSP芯片、以太網(wǎng)接口及串口等底層硬件設(shè)備的驅(qū)動(dòng)控制。針對(duì)終端的無(wú)線網(wǎng)卡類(lèi)型,IEEE 802.11b/g無(wú)線模塊中采用了madwifi(Multiband Atheros Driverfor wifi)驅(qū)動(dòng)。madwifi是為Atheros系列芯片IEEE802.11a/b/g無(wú)線網(wǎng)卡在Linux系統(tǒng)下實(shí)現(xiàn)的驅(qū)動(dòng)程序。
Linux內(nèi)核層:為語(yǔ)音數(shù)據(jù)的壓縮處理和語(yǔ)音包的實(shí)時(shí)傳輸提供了保證。TCP/IP協(xié)議軟件棧提供了對(duì)TCP/IP的支持,考慮到語(yǔ)音數(shù)據(jù)的實(shí)時(shí)性要求,終端的語(yǔ)音傳輸采用UDP方式實(shí)現(xiàn)。建立在UDP之上的RTP協(xié)議用于保障數(shù)據(jù)流的實(shí)時(shí)可靠傳輸。語(yǔ)音處理模塊提供了對(duì)G.723等音頻編解碼軟件的支持。在網(wǎng)絡(luò)協(xié)議棧中包括了實(shí)現(xiàn)多跳通話功能的AODV路由協(xié)議。
應(yīng)用程序?qū)樱喊娫拺?yīng)用程序接口TAPI(Telephony Application Program Interface)3.0和Web服務(wù)器兩部分。TAPI 3.0集成了傳統(tǒng)電話的媒體流控制功能,并封裝了對(duì)底層電話硬件進(jìn)行操作的功能,通過(guò)將呼叫控制的功能抽象出來(lái),達(dá)到屏蔽不同的、不兼容的通信協(xié)議的目的。通過(guò)TAPI 3.0,的編程接口可以方便地自定義信令協(xié)議,完成點(diǎn)對(duì)點(diǎn)的撥號(hào)過(guò)程。同時(shí)為了便于使用,在終端中植入了一個(gè)支持CGI的、非常適合于嵌入式系統(tǒng)的Boa Web Server,使用戶(hù)可以通過(guò)Web頁(yè)面的用戶(hù)接口輸入?yún)?shù)來(lái)配置終端的參數(shù)。[!--empirenews.page--]
3.1 無(wú)線模塊驅(qū)動(dòng)編譯
所有的Atheros芯片無(wú)線網(wǎng)卡基本都可以使用madwifi驅(qū)動(dòng),驅(qū)動(dòng)程序源碼madwifi-0.9.4.tar.gz可以從http://madwifi.org/上下載。在進(jìn)行無(wú)線模塊驅(qū)動(dòng)開(kāi)發(fā)時(shí),首先要配置并編譯Linux內(nèi)核,使其支持MiniPCI網(wǎng)卡,然后針對(duì)終端環(huán)境修改madwifi-0.9.4目錄下的Makefile,再使用make命令進(jìn)行編譯,生成適用于MIPS的驅(qū)動(dòng)程序模塊,并使用insmod命令將模塊在終端的Linux中進(jìn)行加載。加載成功后,用Linux下的無(wú)線局域網(wǎng)工具命令iwconfig對(duì)無(wú)線網(wǎng)卡進(jìn)行配置,注意配置時(shí)要將無(wú)線網(wǎng)卡的工作模式設(shè)定成為Ad Hoc模式。
./wlanconfig ath0 destroy
./wlanconfig ath0 create wlandev wifi0 wlanmode adhoc
3.2 AODV路由協(xié)議的實(shí)現(xiàn)
Linux操作系統(tǒng)的內(nèi)核并不直接支持按需路由,因此要實(shí)現(xiàn)AODV路由協(xié)議需要對(duì)操作系統(tǒng)進(jìn)行相應(yīng)的擴(kuò)充和修改。
Linux操作系統(tǒng)的路由體系結(jié)構(gòu)按功能可分為轉(zhuǎn)發(fā)功能模塊和路由功能模塊,可以在轉(zhuǎn)發(fā)功能模塊保持不變的情況下,通過(guò)修改路由功能模塊,實(shí)現(xiàn)不同的路由協(xié)議。轉(zhuǎn)發(fā)功能在Linux內(nèi)核中實(shí)現(xiàn),根據(jù)需要發(fā)送的數(shù)據(jù)分組目的地址;查找路由表,按照最長(zhǎng)前綴匹配原則尋找與目的地址匹配的表項(xiàng),如果找到匹配項(xiàng),則將數(shù)據(jù)分組發(fā)送到相應(yīng)的網(wǎng)絡(luò)接口;否則就丟棄該分組。路由功能模塊作為后臺(tái)進(jìn)程在用戶(hù)空間運(yùn)行,主要負(fù)責(zé)與其他網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行信息交流,采用適當(dāng)?shù)穆酚伤惴ń⒙酚?,更新和維護(hù)內(nèi)核路由表。
目前發(fā)布的針對(duì)AODV協(xié)議的實(shí)現(xiàn)方案中多數(shù)協(xié)議的實(shí)現(xiàn)都采用了Netfilter功能框架。Netfilter是Linux核心中的一個(gè)通用架構(gòu),用于實(shí)現(xiàn)數(shù)據(jù)包過(guò)濾、狀態(tài)保持、NAT以及安全等多種網(wǎng)絡(luò)功能。Netfilter結(jié)構(gòu)提供了一系列的“列表”(tables),每個(gè)列表由若干個(gè)“鏈”(chains)組成,而每條鏈中又可以有一條或數(shù)條規(guī)則(rules)進(jìn)行規(guī)范,規(guī)則的定義采用“如果數(shù)據(jù)包頭符合這樣的條件,就這樣處理該數(shù)據(jù)包”。當(dāng)一個(gè)數(shù)據(jù)包到達(dá)一個(gè)鏈時(shí),系統(tǒng)就會(huì)從第一條規(guī)則開(kāi)始查看是否符合該規(guī)則所定義的條件。如果滿足,系統(tǒng)將根據(jù)該條規(guī)則所定義的方法處理該數(shù)據(jù)包;否則,繼續(xù)檢查下一條規(guī)則。如果該數(shù)據(jù)包不符合該鏈中任何一條規(guī)則的定義,系統(tǒng)就會(huì)根據(jù)該鏈的缺省策略處理該報(bào)文。
Linux在內(nèi)核2.4版本以上的系統(tǒng)中提供了五個(gè)hook注冊(cè)點(diǎn),這些hook點(diǎn)處在數(shù)據(jù)分組流經(jīng)協(xié)議棧的幾個(gè)關(guān)鍵位置,用戶(hù)可以在這些位置注冊(cè)自己定義的操作函數(shù),流經(jīng)hook點(diǎn)的數(shù)據(jù)分組將執(zhí)行函數(shù)的操作。如圖3所示,Netfilter便由處于Linux協(xié)議棧中的五個(gè)hook函數(shù)組成。
在AODV協(xié)議的實(shí)現(xiàn)過(guò)程中,Netfilter的配置是協(xié)議正常運(yùn)行的前提,需要在內(nèi)核中注冊(cè)hook函數(shù),但并不是所有的Linux系統(tǒng)都默認(rèn)啟用Netfilter,因此需要在內(nèi)核配置選項(xiàng)中進(jìn)行配置并編譯進(jìn)內(nèi)核。進(jìn)入Linux內(nèi)核源代碼安裝目錄,輸入make manuconfig命令進(jìn)入內(nèi)核配置主菜單,通過(guò)空格鍵選擇:
Networking options-->[*]Network packet filtering(replaces ipchains)
IP:Netfilter Configuration--><*>Userspaee queueing via NETLINK
4 結(jié)語(yǔ)
結(jié)合IEEE 802.11無(wú)線技術(shù)和VoIP技術(shù)的優(yōu)勢(shì),采用了高性能的微處理器ADM5120和功能穩(wěn)定強(qiáng)大的嵌入式Linux操作系統(tǒng)作為軟件平臺(tái),構(gòu)建了一個(gè)基于IEEE 802.11b/g技術(shù)的無(wú)線VoIP便攜式終端。通過(guò)在終端的系統(tǒng)上加載AODV路由協(xié)議實(shí)現(xiàn)了多跳的功能。經(jīng)過(guò)三臺(tái)終端的聯(lián)合測(cè)試,多跳通話可以保證良好的語(yǔ)音效果。