摘要:多網(wǎng)卡多信道技術(shù)是當(dāng)前無(wú)線Mesh網(wǎng)絡(luò)中的研究熱點(diǎn)。利用多網(wǎng)卡多信道的技術(shù)可以大大提高網(wǎng)絡(luò)的整體性能,但采用多網(wǎng)卡多信道技術(shù)的無(wú)線Mesh網(wǎng)絡(luò)存在容易受到來(lái)自網(wǎng)絡(luò)內(nèi)部的自身干擾等問(wèn)題。文章設(shè)計(jì)了一種無(wú)線Mesh網(wǎng)絡(luò)的路由器體系結(jié)構(gòu),解決了兩個(gè)關(guān)鍵領(lǐng)域的問(wèn)題:第一,給出了能夠使用一般硬件實(shí)現(xiàn)分離無(wú)線路由器(separated Wireless Router,簡(jiǎn)稱(chēng)SWR)的架構(gòu);第二,設(shè)計(jì)了一個(gè)集中式的信道分配算法,這個(gè)算法考慮了信道分配和路由的相互影響,從而能使網(wǎng)絡(luò)達(dá)到最大吞吐量。
關(guān)鍵詞:Mesh;分離無(wú)線路由器;RU;SWR;ETT
0 引言
無(wú)線Mesh網(wǎng)絡(luò)(Wireless Mesh Network,簡(jiǎn)稱(chēng)WMN)是一種與傳統(tǒng)的無(wú)線網(wǎng)絡(luò)完全不同的網(wǎng)絡(luò),是一種高速率、高容量的多點(diǎn)對(duì)多點(diǎn)網(wǎng)絡(luò)。由于具有不需要集中式的網(wǎng)絡(luò)管理和基礎(chǔ)設(shè)施等特點(diǎn),無(wú)線Mesh網(wǎng)在近年來(lái)受到越來(lái)越多的關(guān)注。為了提高WMN的穩(wěn)定性及容量等,多網(wǎng)卡多信道技術(shù)被普遍應(yīng)用,是當(dāng)前WMN中的研究熱點(diǎn)。但是多接口多信道技術(shù)的應(yīng)用,也為研究工作帶來(lái)了許多新問(wèn)題。例如,多接口多信道的WMN容易受到來(lái)自外界和網(wǎng)絡(luò)內(nèi)部其它相同頻率信道的無(wú)線干擾,導(dǎo)致網(wǎng)絡(luò)吞吐量和穩(wěn)定性的大幅度下降。如何有效地避免鄰節(jié)點(diǎn)的干擾以及如何進(jìn)行信道分配,已經(jīng)成為當(dāng)前WMN研究的關(guān)鍵技術(shù)之一。
Chandra和Bahl發(fā)明了一種被稱(chēng)為Multinet的多網(wǎng)卡體系結(jié)構(gòu)。Multinet是專(zhuān)為有單一網(wǎng)卡的節(jié)點(diǎn)設(shè)計(jì)的。它把單一的物理網(wǎng)卡接到兩個(gè)虛擬網(wǎng)卡中,一個(gè)虛擬網(wǎng)卡用于連接網(wǎng)絡(luò)基礎(chǔ)設(shè)施,另—個(gè)用于連接Mesh網(wǎng)絡(luò)。但Multinet不能提供支持多信道間網(wǎng)卡轉(zhuǎn)換的所有條件,有其一定的局限性。
Chereddi等人建議利用Linux內(nèi)核的系統(tǒng)擴(kuò)展來(lái)支持多網(wǎng)卡的信道切換。但是,他們沒(méi)有考慮到信道分配和多網(wǎng)卡Mesh網(wǎng)部署的系統(tǒng)評(píng)估。
由于802.11提供了正交多信道,WMN路由器可裝備多個(gè)網(wǎng)卡。通過(guò)把網(wǎng)卡調(diào)諧到正交信道上去,路由器之間可以進(jìn)行受到最小干擾程度的通信,而且容量問(wèn)題也可以得到減輕,本文以此設(shè)計(jì)了一種WMN路由器的體系結(jié)構(gòu)。該體系結(jié)構(gòu)包括硬件結(jié)構(gòu)和軟件結(jié)構(gòu)兩方面。
1 硬件結(jié)構(gòu)
常用的802.11無(wú)線網(wǎng)卡的自身干涉問(wèn)題之所以發(fā)生,是常用網(wǎng)卡對(duì)相鄰節(jié)點(diǎn)的影響,網(wǎng)卡內(nèi)部電路串話和輻射泄漏敏感等問(wèn)題引起的,另外還有硬件不理想的原因。Raniwala等人通過(guò)將網(wǎng)卡之間的天線分離來(lái)減少干涉的影響。然而,實(shí)驗(yàn)證明,當(dāng)每個(gè)節(jié)點(diǎn)有多于兩個(gè)網(wǎng)卡工作于相同的頻率時(shí),這個(gè)方法是無(wú)效的。
WMN硬件結(jié)構(gòu)源于市場(chǎng)上最新型的路由硬件。在這種硬件中,模塊化的設(shè)計(jì)使得一個(gè)路由單元可以支持不同的技術(shù),從而使得無(wú)線路由器也能使用不同的無(wú)線技術(shù),比如802.11和WiMAX。SWR是根據(jù)自身內(nèi)部的干擾問(wèn)題得來(lái)的。每個(gè)SWR包含三個(gè)網(wǎng)卡,每個(gè)網(wǎng)卡位于一個(gè)獨(dú)立的處理節(jié)點(diǎn)(如圖1)。
我們將一個(gè)網(wǎng)卡和它的處理節(jié)點(diǎn)定義為一個(gè)網(wǎng)卡單元(Ru)。網(wǎng)卡間通過(guò)超寬帶無(wú)線技術(shù)(UWB)進(jìn)行連接,從而構(gòu)成一個(gè)內(nèi)部回饋網(wǎng)絡(luò)。一個(gè)需要通過(guò)相鄰RU發(fā)送的包被回饋網(wǎng)絡(luò)發(fā)送到該RU,然后該節(jié)點(diǎn)通過(guò)無(wú)線媒介將其發(fā)送。據(jù)觀察,在SWR中安裝常用802.11無(wú)線網(wǎng)卡并在其之間有3厘米的間隔距離時(shí),所獲得的吞吐量在信道間隔為40MHZ時(shí)只有51%,在信道間隔為最大的625MHZ時(shí)也低于80%。在大約0.5米或更大(由于硬件設(shè)計(jì)的需求,此距離應(yīng)小于1米)的物理分隔時(shí),自身干涉的影響能夠有效地減小,而這種分隔在SWR中能很容易地實(shí)現(xiàn)。有了適當(dāng)?shù)匚锢矸指?,能有效地減少相鄰干擾問(wèn)題,并且電路串話和輻射泄漏等問(wèn)題也能得到解決。通過(guò)測(cè)量,網(wǎng)卡之間間距大約為0.6米,頻帶間隔至少50MHZ時(shí),吞吐量高于理想中的87%。因此,我們的SWR結(jié)構(gòu)使得多網(wǎng)卡路由器能夠裝置同頻帶的無(wú)線網(wǎng)卡。
2 軟件結(jié)構(gòu)
在分離路由器的軟件體系結(jié)構(gòu)設(shè)計(jì)中我們有兩個(gè)目標(biāo)。第一,每個(gè)分離路由器要作為一個(gè)獨(dú)立單元路由器并裝置著多個(gè)接口。這種抽象很重要,否則由于路由協(xié)議和網(wǎng)絡(luò)管理工具屬于分離無(wú)線路由器,就需要進(jìn)行修改來(lái)識(shí)別個(gè)別的可視RU。第二個(gè)目標(biāo)是支持現(xiàn)有軟件的運(yùn)行,比如路由協(xié)議不需要改變。
SWR的軟件體系結(jié)構(gòu)如圖2所示。分離無(wú)線路由器中的一介RU被指定為主網(wǎng)卡單元。在分離無(wú)線路由器中,每個(gè)RU處理相應(yīng)的硬件抽象層。它運(yùn)行在內(nèi)核層,以此將發(fā)現(xiàn)的RU作為本地接口告訴每個(gè)用戶(hù)空間的應(yīng)用程序。RU的動(dòng)態(tài)發(fā)現(xiàn)過(guò)程如下:分離無(wú)線路由器的每個(gè)RU在回饋網(wǎng)絡(luò)上周期性地廣播它的身份使大家知道它的存在。在我們的實(shí)現(xiàn)中,廣播每分鐘一次。RU的列表由軟狀態(tài)保持,每三分鐘超時(shí)。
硬件抽象層還揭露了兩個(gè)基本的前置單元——為了單播和廣播發(fā)送——在無(wú)線路由器上運(yùn)行著,沒(méi)有作更改。這個(gè)前置比如路由協(xié)議等是軟件的根本。單播單元確保去往下一跳路由器的包準(zhǔn)確地通過(guò)分離無(wú)線路由器運(yùn)送到一個(gè)鄰近的RU,然后該RU通過(guò)無(wú)線媒介將包傳送到下一跳。
為了支持這個(gè)前置單元,分離路由器里的所有RU周期性地通過(guò)回饋網(wǎng)絡(luò)改變它們觀察到的相鄰節(jié)點(diǎn)的設(shè)置。在我們的實(shí)現(xiàn)中,這種改變每秒一次。每個(gè)節(jié)點(diǎn)保持鄰節(jié)點(diǎn)信息作為軟狀態(tài)。這個(gè)狀態(tài)在鄰節(jié)點(diǎn)暫停時(shí)間后結(jié)束,我們將這個(gè)時(shí)間設(shè)置為2秒。同樣,廣播單元確保了那些要求mesh—wide分發(fā)的包由每個(gè)RU廣播和接收。
3 實(shí)現(xiàn)
分離無(wú)線路由器通過(guò)Linux的Netfilter內(nèi)核模塊實(shí)現(xiàn),該內(nèi)核模塊支持ETT度量。ETT的計(jì)算公式是根據(jù)De Couto等人提出的期望傳輸次數(shù)(ETX,Expected Transmission Count)得來(lái)的:
ETT=ETX×S/B
式中,S表示數(shù)據(jù)包的大小(例如,1024比特),B表示鏈路的帶寬(原始數(shù)據(jù)率)。ETT計(jì)算的結(jié)果每5秒向信道分配服務(wù)器(CAS)報(bào)告一次,CAS位于Mesh網(wǎng)絡(luò)網(wǎng)關(guān)的位置。
我們使用SRCR作為路由協(xié)議,以WCETT作為路由選擇的度量。在實(shí)驗(yàn)中,把WCETT的B參數(shù)設(shè)置為0.5。這樣就賦予了路徑的信道多樣化和其包傳輸延遲以同樣的權(quán)重。
我們用最短路徑算法(Dijkstra)實(shí)現(xiàn)信道分配。其算法描述如下:
1:輸入:
P=AP目錄;m=Mesh沖突圖:T=鄰居連通圖
2:while notAIIAPsFound{P}do
3: d=head(P)
4: n=findGateway(d)
5: 從n到d的Dijkstra搜索中讓PQ成為優(yōu)先隊(duì)列
6: while true dO
7:
makePermanent(n)
8: for all ri such that ri is a radio Of n dO
9:
for all ri such that rj is a neighbor of n do
10:
neigh=getRelayContainingRadio(rj)
11:
使用m選擇沒(méi)有沖突的信道c作為鏈路(ri;rj)
12:
if c不存在then
13:
選擇一個(gè)隨機(jī)信道為鏈路(ri;rj)
14:
end if
15:
cost=computePathCostWithNewLink(d,(ri,rj)),c)
16:
if cost 17: visit(neigh) 18: setTentativeChannelForLink((ri;rj)),c) 19: addToPriorityQueue(PQ,neigh) 20: end if 21: end for 22: end for 23: r=findMinimuminPriodtyQueue(PQ) 24: if r=d then 25: finalizeChannelsOnPathTo(r) 26: break 27: end if 28: end while 29:end while 30:給沒(méi)有被分配到持久的信道的網(wǎng)卡分配信道 CAS調(diào)用拓?fù)浒l(fā)現(xiàn)的周期為5分鐘(我們發(fā)現(xiàn),周期為5分鐘對(duì)了解鏈路長(zhǎng)遠(yuǎn)的性能特點(diǎn)是足夠的)。通過(guò)上述算法可以發(fā)現(xiàn),AP的次序可以影響到Mesh中信息之間的干擾。作為下一步的工作,我們計(jì)劃探索利用AP次序進(jìn)一步優(yōu)化TIC性能的技術(shù)。