丁繼存 楊 澎 高明玉
(1.中國礦業(yè)大學信息與電氣工程學院,江蘇省徐州市,221008;2.兗州煤業(yè)股份有限公司濟寧三號煤礦,山東省濟寧市,272169;3.兗州煤業(yè)股份有限公司興隆莊煤礦,山東省濟寧市,272169)
基于IEEE802.11的礦井Mesh網(wǎng)絡路由節(jié)點設計
丁繼存1,2楊 澎2高明玉3
(1.中國礦業(yè)大學信息與電氣工程學院,江蘇省徐州市,221008;2.兗州煤業(yè)股份有限公司濟寧三號煤礦,山東省濟寧市,272169;3.兗州煤業(yè)股份有限公司興隆莊煤礦,山東省濟寧市,272169)
介紹了一種基于ARM的視頻監(jiān)控系統(tǒng)無線路由器裝置,該裝置在S3C2440嵌入式開發(fā)平臺上通過無線網(wǎng)絡模塊實現(xiàn)視頻客戶端的接入,能夠?qū)ΦV井Mesh網(wǎng)絡骨干鏈路的數(shù)據(jù)進行分組。分析了該裝置的總體結構、硬件結構,并重點闡述了監(jiān)控無線路由器裝置的內(nèi)核空間、用戶空間等幾個核心模塊的軟件設計與實現(xiàn)。
視頻監(jiān)控 無線路由器 ARM
目前在井下視頻監(jiān)控領域普遍通過鋪設大量光纖傳輸線路來實現(xiàn)對井下的實時監(jiān)控,不僅增加了施工的復雜度,還造成了大量的資源浪費,無法滿足煤礦信息化和智能化發(fā)展的需求,而Mesh網(wǎng)絡(無線網(wǎng)格網(wǎng)絡)具有組建方便、構建成本低、網(wǎng)絡容量大、覆蓋能力強和傳輸距離遠等優(yōu)勢,因此Mesh網(wǎng)絡在井下視頻監(jiān)控領域具有很好的發(fā)展?jié)摿Α1疚脑诰孪锏赖奶厥猸h(huán)境中,針對無線Mesh骨干鏈路網(wǎng)絡傳輸性能受跳數(shù)影響的問題,對井下Mesh網(wǎng)絡多接口多信道路由節(jié)點進行了研究。
構成Mesh網(wǎng)絡的主體骨干鏈路的Mesh網(wǎng)絡路由節(jié)點(MR)不僅要實現(xiàn)本地覆蓋(即為客戶終端提供接入的功能),而且還要為相鄰的無線Mesh路由節(jié)點提供數(shù)據(jù)分組的接收和發(fā)送。對于傳統(tǒng)的無線路由節(jié)點而言,它們都是串行傳輸?shù)?。為了提高Mesh網(wǎng)絡骨干鏈路的網(wǎng)絡吞吐量,設計的Mesh網(wǎng)絡路由節(jié)點結構如圖1所示。
從圖1中可知,Mesh網(wǎng)絡路由節(jié)點的構成分別為1個接入模塊、2個數(shù)據(jù)回程模塊,并且這些模塊使用的都是無線的方式。接入模塊用于本地覆蓋并且專門用來接入視頻終端,由于目前無線接入終端的無線網(wǎng)卡大多使用IEEE802.11b/g協(xié)議,所以用來接入視頻終端的無線模塊也采用相同的協(xié)議?;爻棠K使用IEEE802.11a的協(xié)議模式作為骨干鏈路回傳,分別用于接收和發(fā)送數(shù)據(jù)分組。因為該協(xié)議的信道中可以提供相互正交的信道有12個,這樣可以更合理地為各個路由節(jié)點分配接口信道,提高骨干鏈路的網(wǎng)絡吞吐量。
圖1 多模Mesh網(wǎng)絡路由節(jié)點結構
本文基于北京凌陽愛普科技有限公司設計的嵌入式開發(fā)板,搭建了Mesh網(wǎng)絡路由節(jié)點的硬件平臺。Mesh網(wǎng)絡路由節(jié)點的總體電路設計如圖2所示。
圖2 Mesh網(wǎng)絡路由節(jié)點的總體電路設計
微處理器S3C2440采用ARM公司的16/32位ARM920TRISC處理器核,具有PLL時鐘發(fā)生器、16kB指令Cache、16kB數(shù)據(jù)Cache和存儲管理單元MMU,主頻最高可達533MHz。平臺配置了32 MB Nand Flash和64MB SDRAM、主從USB口、RTC電路、JTAG通用接口、音頻模塊、觸摸屏、支持MPEG4的編解碼、32位數(shù)據(jù)總線等。
因為S3C2440微處理芯片自身不帶PCI總線接口,采用的無線網(wǎng)卡vt6656是具有PCI接口的,因此需要在開發(fā)板上擴展該接口功能。這里采用外圍的PCI總線控制芯片PCI9054方式實現(xiàn)系統(tǒng)總線的擴展,從而可以通過PCI總線實現(xiàn)無線網(wǎng)絡接口來滿足用戶遠距離數(shù)據(jù)傳輸?shù)囊?。S3C2440的引腳與PCI9054的本地總線引腳相連接,為該芯片提供數(shù)據(jù)和地址的存儲空間以及對各種信號的控制功能。
本文在AODV路由協(xié)議的基礎上,在現(xiàn)有的、成熟的應用框架下對其進行改進,使之成為基于Linux操作系統(tǒng)的Mesh_aodv的路由算法。將Mesh_aodv路由協(xié)議設計成兩個塊:Mesh_aodv內(nèi)核空間模塊主要是查找路由表、處理錯誤信息以及提供相應的接口;Mesh_aodv用戶空間模塊主要是數(shù)據(jù)幀的生成、收發(fā)、處理和更新路由表,Mesh_aodv路由協(xié)議設計實現(xiàn)框圖如圖3所示。
圖3 Mesh_aodv路由協(xié)議設計實現(xiàn)框圖
對于Mesh網(wǎng)絡,由于網(wǎng)絡拓撲的易變性,需要對每條路由設定一定的生存時間,即如果超過該時間而路徑?jīng)]得到有效的更新,那么該條路徑會被刪除,從而保證其可用性。因此在內(nèi)核設計中,由內(nèi)核定時器列表和生存路由定時器鏈表構成路由的過期事件。其中生存路由定時器鏈表的內(nèi)容包括路由生存的標志、過期時間、目的地址和下一跳轉地址等。當觸發(fā)過期路由事件時,會在生存路由定時器鏈表和內(nèi)核定時器列表中分別插入一個表項和定時事件,其中內(nèi)核定時器列表的添加由函數(shù)timer_add(struct timer*t)完成,參數(shù)“*t”是個定時器結構體“struct timer”的對象。
內(nèi)核空間需要對流過的數(shù)據(jù)包進行過濾判斷,確??梢垣@得該協(xié)議正常運行時需要的信息,即上層協(xié)議發(fā)送數(shù)據(jù)包時首先會查找路由表是否有該路由選項,如果有相匹配的路由時,會根據(jù)IP數(shù)據(jù)包中的目的地址判斷是否為本地節(jié)點,當發(fā)現(xiàn)不是時,該數(shù)據(jù)包就會被轉發(fā);如果沒有相匹配的路由時,會在用戶守護進程中發(fā)送路由請求(RREQ)幀,并且將用戶數(shù)據(jù)緩存到用戶空間,等到收到相應的路由應答(RREP)幀再進行發(fā)送,或者在超時后就銷毀該隊列釋放內(nèi)存空間。以上這些都是由加載Kaodv_hook函數(shù)來完成的。
為了便于對照原協(xié)議,系統(tǒng)Kaodv_hook函數(shù)的設計采用將3個掛載點(PRE_ROUTING、POST_ROUTING和LOCAL_OUT)的處理函數(shù)放在一塊,以不同的標志位來進行區(qū)分。PRE_ROUTING的hook(鉤子)點用來處理其它節(jié)點輸入的數(shù)據(jù)分組,先對流入數(shù)據(jù)包進行路由更新,然后判斷IP數(shù)據(jù)包的目的地址是否為本地節(jié)點,如果是就提交上層處理,如果不是就轉發(fā)該數(shù)據(jù)包;POST_ROUTING的hook點用來處理輸出到其它節(jié)點的數(shù)據(jù)分組,只需對目的地址更新其路由生存時間;LOCAL_OUT的hook點用來處理本地節(jié)點發(fā)出的數(shù)據(jù)分組。當內(nèi)存的路由緩沖中不存在數(shù)據(jù)包的目的地址的路由路徑時,將會在用戶空間將該數(shù)據(jù)包進行緩存,觸發(fā)用戶守護進程中路由請求(RREQ)幀的生成和發(fā)送。
3.2.1 用戶守護進程設計
根據(jù)實際需要,路由用戶進程應設計為可以穩(wěn)定地在后臺運行。由于Linux操作系統(tǒng)的守護進程是Linux中的后臺服務進程,通常獨立于控制終端并且周期性地執(zhí)行某種任務或等待處理某些發(fā)生的事件,所以將Mesh_aodv路由用戶程序設計為一個守護(deamon)進程。
圖4 用戶守護進程流程
Mesh_aodv路由協(xié)議的用戶守護進程主要是初始化系統(tǒng)的硬件和軟件,收發(fā)Mesh_aodv協(xié)議中各種數(shù)據(jù)幀的收發(fā)以及設定其參數(shù)等。用戶守護進程主要由以下幾個主要模塊構成:Mesh_aodv協(xié)議的HELLO、RREQ、RREP、RERR幀的生成、收發(fā)和處理模塊;Mesh_aodv socket接口,負責Mesh_aodv協(xié)議的所有控制幀的傳輸接口;Mesh_aodv內(nèi)核路由表netlink接口,負責對內(nèi)核路由表進行處理;初始化Mesh_aodv路由協(xié)議運行參數(shù),如路由生存時間、生存時間(TTL)初始值和最大值等等;定時器隊列,通過向其添加或刪除定時器來表明Mesh_aodv路由協(xié)議中事件,即當某定時器發(fā)生中斷時,該系統(tǒng)便會觸發(fā)該事件的函數(shù)對其處理。用戶守護進程流程如圖4所示。
3.2.2 后臺進程Aodvd
后臺進程Aodvd主要是用于路由查找以及建立和維護與其他節(jié)點之間的路由信息。當本地節(jié)點需要轉發(fā)數(shù)據(jù)分組時,開始會在內(nèi)核路由緩沖表中查找,該數(shù)據(jù)分組會被傳送出去;如果不存在的話,就會使用內(nèi)核掛載點的掛載函數(shù)處理該數(shù)據(jù)包,也就是將該包經(jīng)raw socket接口發(fā)送到用戶空間并進行緩存,并且Aodvd調(diào)用路由算法程序?qū)で舐酚?,當該路由建立的時候,會將該數(shù)據(jù)分組經(jīng)raw socket接口再次傳送到Mesh_aodv的內(nèi)核空間;如果路由查找完畢仍沒發(fā)現(xiàn)該路徑,就會將用戶空間的緩存數(shù)據(jù)包丟棄(drop)。
本文針對當前煤礦井下視頻傳輸存在的移動性差、覆蓋范圍小、傳輸質(zhì)量不高等問題,設計了一種基于ARM的視頻監(jiān)控系統(tǒng)無線路由器裝置。本系統(tǒng)能夠很好的適應無線網(wǎng)絡,并在PC機上對視頻監(jiān)控程序進行了測試,視頻清晰無失真。該裝置的設計解決了綜采工作面遠程可視化開采的一個實際難題,對下一步綜采工作面的信息化推進具有一定的實際意義。
[1] 楊水清,張劍,施云飛等.Linux系統(tǒng)開發(fā)技術詳解[M].北京:電子工業(yè)出版社,2008
[2] 王懷新,楊合法等.礦井安全生產(chǎn)無線網(wǎng)絡信息系統(tǒng)在鄭煤集團公司的應用[J].中國煤炭,2004(2)
[3] 李建忠.基于ARM的家庭自動化系統(tǒng)的研究[D].南京理工大學,2008
[4] 韋東山.嵌入式Linux應用開發(fā)完全手冊[M].北京:人民郵電出版社,2010
Design of mine wireless Mesh network routing node based on IEEE802.11
Ding Jicun1,2,Yang Peng2,Gao Mingyu1
(1.School of Information and Electrical Engineering,CUMT,Xuzhou,Jiangsu 221008,China;2.Jining No.3Mine,Yanzhou Coal Mining Co.,Ltd.,Jining,Shandong 272169,China;3.Xinglongzhuang Mine,Yanzhou Coal Mining Co.,Ltd.,Jining,Shandong 272169,China)
A kind of wireless router device of video monitoring system based on the ARM is introduced.Based on the embedded S3C2440development platform,through the wireless network module,the device realizes the access of video clients and the data packet transmission in backbone links of mine Mesh network.This paper analyzes the overall structure and hardware structure of the wireless router,and elaborates the software design and implementation of several core modules such as the kernel space and user space of the wireless router device.
video monitoring,wireless router,ARM
TD655.3
A
丁繼存(1982-),男,山東兗州人,工程師,在讀碩士,研究方向為控制工程。
(責任編輯 王雅琴)