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