彭 風(fēng) ,潘小山 ,朱小蘭 ,余 紅
(1.河南信陽(yáng)供電公司 信陽(yáng) 450003;2.華北電力大學(xué) 北京 102206)
在用電信息采集系統(tǒng)中,本地通信采用的是短距離無(wú)線通信方式,由于受距離的限制,集中器并不能與所有的采集器直接通信,因此引入無(wú)線網(wǎng)狀網(wǎng)。它可將多個(gè)采集終端節(jié)點(diǎn)隨機(jī)組成無(wú)線自組織網(wǎng)絡(luò),將采集到的數(shù)據(jù)以多跳的方式發(fā)送到集中器中,由集中器實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)和遠(yuǎn)程傳送[1]。路由問(wèn)題是無(wú)線傳感網(wǎng)絡(luò)網(wǎng)絡(luò)層的核心問(wèn)題,也是現(xiàn)階段國(guó)內(nèi)外研究的熱點(diǎn)。因?yàn)槁酚伤惴ㄖ苯記Q定數(shù)據(jù)如何中繼和路由,而路徑的選取直接影響表的工作時(shí)間,進(jìn)而影響功耗。因此,對(duì)用電信息采集系統(tǒng)中的路由問(wèn)題進(jìn)行研究是十分必要的。
目前,對(duì)無(wú)線網(wǎng)狀網(wǎng)路由算法的研究主要是將應(yīng)用于傳統(tǒng)Ad-hoc網(wǎng)絡(luò)的路由算法進(jìn)行改進(jìn),使其符合無(wú)線網(wǎng)狀網(wǎng)的特性。傳統(tǒng)的路由算法有DSDV、DSR、AODV算法等[2],其中AODV算法最具代表性。它是一種典型的按需路由算法,業(yè)界已經(jīng)提出了很多其改進(jìn)算法[3],在開(kāi)銷、延時(shí)、分組投遞率等方面得到了改善。
在用電信息采集中,由于無(wú)線信道的帶寬有限,在數(shù)據(jù)傳輸過(guò)程中可能造成擁塞,這將導(dǎo)致網(wǎng)絡(luò)延時(shí),不利于抄表工作的順利進(jìn)行。另外,在國(guó)家大力倡導(dǎo)節(jié)能低碳的今日,盡可能地降低功耗也是路由算法需要考慮的問(wèn)題。因此本文將根據(jù)用電信息采集系統(tǒng)的特點(diǎn),在傳統(tǒng)AODV算法的基礎(chǔ)上,采用擁塞控制機(jī)制的同時(shí),對(duì)網(wǎng)絡(luò)層進(jìn)行功率控制,提出了一種基于擁塞控制與功耗最小的路由選擇算法。
由于各個(gè)小區(qū)居民樓布局不同,地理位置分布迥異,居民樓內(nèi)電表的布局位置也各有不同,因此存在多種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。下面以一種小區(qū)拓?fù)浣Y(jié)構(gòu)舉例說(shuō)明,如圖1所示。每幢居民樓有6層,分為4個(gè)單元,每個(gè)單元每層樓有2個(gè)用戶,2個(gè)用戶的電表集中放在本層樓樓道里的電表箱中,每個(gè)電表箱都配有一個(gè)采集器,通過(guò)RS-485總線與電表相連,這樣,每層樓有4臺(tái)采集器。集中器的位置不定,戶內(nèi)戶外均可,可以根據(jù)實(shí)際情況任意確定。本小區(qū)將集中器設(shè)在A樓的一層,作為一臺(tái)采集器使用,不僅便于數(shù)據(jù)采集,還節(jié)約了成本。為了使通信可靠進(jìn)行,還裝有中繼終端進(jìn)行中繼轉(zhuǎn)發(fā)。圖1中虛線表示兩個(gè)設(shè)備可以直接互聯(lián)(這兩個(gè)設(shè)備叫做鄰居節(jié)點(diǎn),兩者可以直接通信,不需要由其他節(jié)點(diǎn)轉(zhuǎn)發(fā)),兩個(gè)設(shè)備之間若沒(méi)有惟一的直線連接,則表示兩者無(wú)法實(shí)現(xiàn)直接互聯(lián),只能靠中繼轉(zhuǎn)發(fā)?,F(xiàn)實(shí)中的網(wǎng)絡(luò)是錯(cuò)綜復(fù)雜的,為了便于說(shuō)明,圖中只標(biāo)出了有限的連接。
從圖中可以看出,若A樓的采集器A5要將用電信息發(fā)往集中器,其通信路徑可以是A5—A6—A7—集中器或A5—A2—A3—集中器,可見(jiàn)需要通信的設(shè)備之間有多條通路,該如何選擇最佳的通路呢?這即是無(wú)線傳感網(wǎng)的路由問(wèn)題,需要設(shè)計(jì)一種算法來(lái)指導(dǎo)其選擇最佳路徑傳輸數(shù)據(jù)。路由算法的選擇對(duì)于數(shù)據(jù)傳輸?shù)目煽啃院陀行灾陵P(guān)重要。路由算法設(shè)計(jì)時(shí)須考慮的因素很多,如節(jié)點(diǎn)移動(dòng)性、節(jié)點(diǎn)能量、負(fù)載均衡等,其路由判據(jù)也有最小跳數(shù)、最小開(kāi)銷、最小功耗等多種,因此需要根據(jù)不同的場(chǎng)景設(shè)計(jì)出適合該環(huán)境的路由算法,以達(dá)到最佳路由性能。
在用電信息采集系統(tǒng)中,所有采集器、電能表的位置都是固定的,因此路由算法不用考慮節(jié)點(diǎn)的移動(dòng)性。由于該系統(tǒng)受干擾沖突、通信距離等因素的影響,如果僅以最小跳數(shù)作為路由判據(jù),而不考慮路徑上的業(yè)務(wù)通信量,抄表過(guò)程中可能會(huì)因?yàn)樵O(shè)備同時(shí)上電進(jìn)行數(shù)據(jù)傳輸而造成擁塞,使該路徑的鏈路質(zhì)量惡化,更甚者造成數(shù)據(jù)丟包,網(wǎng)絡(luò)的吞吐量下降。數(shù)據(jù)丟包數(shù)越多,就不能滿足用電信息采集系統(tǒng)中對(duì)電表數(shù)據(jù)抄收率的要求。因此,在設(shè)計(jì)路由算法的時(shí)候,使算法具有擁塞自適應(yīng)功能是非常必要的。
另外,對(duì)于發(fā)送節(jié)點(diǎn)的某一發(fā)射功率,接收節(jié)點(diǎn)的信號(hào)強(qiáng)度與傳輸過(guò)程中的信道衰減有關(guān)。用電信息采集系統(tǒng)中各通信設(shè)備之間進(jìn)行數(shù)據(jù)傳輸?shù)倪^(guò)程中,途中會(huì)遇到墻、門(mén)、金屬等多種阻礙,這都將造成信號(hào)衰減。信號(hào)衰減過(guò)大,將影響網(wǎng)絡(luò)通信質(zhì)量,可能導(dǎo)致數(shù)據(jù)丟失,不能保證用電數(shù)據(jù)的抄收率。因此,在網(wǎng)絡(luò)層路由算法中進(jìn)行適當(dāng)?shù)墓β士刂?,不僅能減小信道干擾從而提高通信鏈路質(zhì)量,而且能減少鏈路功耗以滿足節(jié)能低碳經(jīng)濟(jì)的要求。
因此,根據(jù)用電信息采集系統(tǒng)的需求特點(diǎn),下面將提出一種基于擁塞控制與功率控制的AODV改進(jìn)算法。它依據(jù)節(jié)點(diǎn)的擁塞狀況來(lái)決定數(shù)據(jù)分組的發(fā)送,并根據(jù)消息的優(yōu)先級(jí)來(lái)確定數(shù)據(jù)發(fā)送的順序。在路由選擇問(wèn)題上,通過(guò)對(duì)網(wǎng)絡(luò)層的功率控制進(jìn)行研究,改變傳統(tǒng)以最短路徑為路由判據(jù)的思想,選擇功耗最小的路徑進(jìn)行數(shù)據(jù)傳輸,使其能更好地滿足用電小區(qū)的抄表要求。
AODV算法是一種按需路由協(xié)議,它僅在需要路由時(shí)才由源節(jié)點(diǎn)啟動(dòng)路由發(fā)現(xiàn)過(guò)程。算法的基本過(guò)程如下:當(dāng)源節(jié)點(diǎn)S要發(fā)送信息給目的節(jié)點(diǎn)D時(shí),如果發(fā)現(xiàn)自己路由表中沒(méi)有到目的節(jié)點(diǎn)D的路由,S便發(fā)送路由請(qǐng)求RREQ包給所有的鄰居節(jié)點(diǎn),請(qǐng)求其鄰居節(jié)點(diǎn)幫忙查找到節(jié)點(diǎn)D的路徑。每個(gè)接收到RREQ包的節(jié)點(diǎn),都記錄下上一跳節(jié)點(diǎn)信息,若自身不是目的節(jié)點(diǎn),則廣播RREQ包。通過(guò)這種洪泛方式,RREQ包會(huì)被廣播轉(zhuǎn)發(fā)至目的節(jié)點(diǎn)D。目的節(jié)點(diǎn)D接收到RREQ包后,反向沿著該RREQ包傳來(lái)的路徑通過(guò)單播的形式發(fā)送路由回復(fù)RREP(route reply)包,同時(shí)在中間節(jié)點(diǎn)記錄下到達(dá)目的節(jié)點(diǎn)的下一跳,當(dāng)S收到RREP包時(shí),從源節(jié)點(diǎn)到目的節(jié)點(diǎn)的路徑已經(jīng)建立起來(lái)。為了維護(hù)路由信息,節(jié)點(diǎn)通過(guò)周期性地廣播Hello消息來(lái)檢測(cè)鏈路是否失效。當(dāng)某節(jié)點(diǎn)在規(guī)定的時(shí)間內(nèi)沒(méi)有收到響應(yīng)時(shí),說(shuō)明鏈路發(fā)生中斷,當(dāng)下次有數(shù)據(jù)要發(fā)送給目的節(jié)點(diǎn)D時(shí),原路徑失效,要重新發(fā)起路由請(qǐng)求過(guò)程[4]。
AODV算法簡(jiǎn)單易行、避免了路由環(huán)路選擇最短路徑來(lái)傳輸數(shù)據(jù)。但它的路由過(guò)程沒(méi)有考慮節(jié)點(diǎn)的擁塞狀況,從而很容易導(dǎo)致整個(gè)網(wǎng)絡(luò)的擁塞,減少了網(wǎng)絡(luò)生存時(shí)間。本文將采用擁塞控制機(jī)制,并將功耗作為一個(gè)約束條件來(lái)選擇最佳路由,從而優(yōu)化AODV算法的性能。
3.2.1 擁塞狀態(tài)判別
當(dāng)源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間的路由建立后,就可以對(duì)此路由中間節(jié)點(diǎn)的擁塞狀態(tài)進(jìn)行監(jiān)測(cè)。判斷一個(gè)節(jié)點(diǎn)的擁塞程度可以有不同的衡量參數(shù)如鏈路帶寬、丟包率、平均隊(duì)列長(zhǎng)度、緩沖區(qū)溢出量、重傳分組的數(shù)量、分組的平均時(shí)延等[5]。本文選擇節(jié)點(diǎn)的平均隊(duì)列長(zhǎng)度L作為衡量擁塞程度的指標(biāo)。平均隊(duì)列長(zhǎng)度L定義為節(jié)點(diǎn)隊(duì)列瞬間長(zhǎng)度與隊(duì)列總長(zhǎng)度之比。給L設(shè)定上下限值:Lmin和Lmax,根據(jù)L值確定節(jié)點(diǎn)的3種擁塞狀態(tài):當(dāng)0
3.2.2 發(fā)射功率的計(jì)算
為了在算法中進(jìn)行功率控制,需要分別計(jì)算出鏈路中各節(jié)點(diǎn)間傳輸分組所需的功率,然后將整條鏈路上發(fā)射功率的總和作為QoS路由的代價(jià)函數(shù)[6]。路由建立后,節(jié)點(diǎn)就按照它們計(jì)算出的發(fā)射功率來(lái)傳輸數(shù)據(jù)分組。如果節(jié)點(diǎn)A要給節(jié)點(diǎn)B通信,A以最大的功率Pmax發(fā)送RTS,節(jié)點(diǎn)B收到A的RTS后仍然以最大功率Pmax發(fā)送CTS,當(dāng)節(jié)點(diǎn)A接收到CTS時(shí),根據(jù)它的接收功率Pr和它的發(fā)送功率Pmax計(jì)算它發(fā)送數(shù)據(jù)的功率Pds,公式如下:
其中,Pmin是所必需的最小接收功率,c為常量。節(jié)點(diǎn)A就按計(jì)算出的Pds發(fā)送數(shù)據(jù)。Pds一般比Pmax要小,從而達(dá)到節(jié)能的目的。
設(shè)從源節(jié)點(diǎn)到目的節(jié)點(diǎn)有M條路徑,依次為R1,…,Rm,N1,…Nk為某一條路徑Ri上的節(jié)點(diǎn)。則代價(jià)函數(shù)計(jì)算如下:
最后,我們選擇代價(jià)函數(shù)cost值最小也即功耗最小的一條路徑進(jìn)行數(shù)據(jù)傳輸,有效地減少節(jié)點(diǎn)的能量,從而延長(zhǎng)節(jié)點(diǎn)的工作時(shí)間。
3.2.3 路由發(fā)現(xiàn)過(guò)程
當(dāng)源節(jié)點(diǎn)S需要和目的節(jié)點(diǎn)D通信,而其路由表中又沒(méi)有到目的節(jié)點(diǎn)的有效路徑時(shí),它會(huì)啟動(dòng)一個(gè)路由發(fā)現(xiàn)過(guò)程。源節(jié)點(diǎn)便向鄰居節(jié)點(diǎn)廣播路由請(qǐng)求RREQ分組。在原AODV算法基礎(chǔ)上,需要在路由請(qǐng)求分組RREQ中為每個(gè)節(jié)點(diǎn)增加一個(gè)擁塞狀態(tài)信息及其發(fā)射功率Pds值。每個(gè)收到RREQ分組的中間節(jié)點(diǎn)根據(jù)自己的擁塞狀態(tài)來(lái)進(jìn)行相應(yīng)的響應(yīng):(1)如果節(jié)點(diǎn)狀態(tài)為normal,并且是第一次收到該分組,則記錄上游節(jié)點(diǎn)地址、擁塞狀態(tài)和Pds等信息,該節(jié)點(diǎn)按照式 (1)計(jì)算其發(fā)送功率Pds值,將Pds值加入到RREQ分組中,并察看路由表中是否有到達(dá)目的節(jié)點(diǎn)且序列號(hào)大于等于RREQ分組中的序列號(hào)的無(wú)擁塞路由,若無(wú),節(jié)點(diǎn)記錄報(bào)文并以Pds作為發(fā)射功率轉(zhuǎn)發(fā)此RREQ分組;若有或該節(jié)點(diǎn)就是目的節(jié)點(diǎn),則將RREQ分組的信息復(fù)制到路由應(yīng)答分組RREP中,并向源節(jié)點(diǎn)發(fā)送RREP分組;(2)如果當(dāng)前節(jié)點(diǎn)擁塞狀態(tài)為 congestion,延遲一段時(shí)間DELAY-TIME之后,再進(jìn)行如(1)步驟中的相同操作,在這段延遲時(shí)間中若存在其他狀態(tài)較好的鏈路則提前建立起路由[7];(3)如果當(dāng)前節(jié)點(diǎn)擁塞狀態(tài)為 serious,不管有沒(méi)有到目的節(jié)點(diǎn)的有效路由都直接丟掉該RREQ分組,并向源節(jié)點(diǎn)發(fā)送反向抑制報(bào)文抑制擁塞。中間節(jié)點(diǎn)轉(zhuǎn)發(fā)RREQ分組,直到目的節(jié)點(diǎn)收到RREQ分組,此時(shí)路由發(fā)現(xiàn)過(guò)程結(jié)束,RREQ分組所經(jīng)過(guò)的路徑即為可行路徑。最后到達(dá)目的節(jié)點(diǎn)的路徑可能有多條,本文選擇代價(jià)函數(shù)即功耗最小的那條作為最佳路徑,目的節(jié)點(diǎn)沿可行路徑向源節(jié)點(diǎn)發(fā)送路由應(yīng)答分組RREP。當(dāng)源節(jié)點(diǎn)S收到RREP分組后,連接即建立。路由發(fā)現(xiàn)過(guò)程流程如圖2所示。
本算法中,為了更好地進(jìn)行擁塞控制,還采用了基于事件驅(qū)動(dòng)的多優(yōu)先級(jí)擁塞控制策略,即根據(jù)需要傳送數(shù)據(jù)的緊急程度來(lái)設(shè)定優(yōu)先級(jí)。用電信息采集系統(tǒng)中,可能因?yàn)槟撤N原因主站突然想采集某一居民用戶的即時(shí)用電數(shù)據(jù),此事件為緊急事件,設(shè)為高優(yōu)先級(jí)級(jí)別,需要得到快速處理及響應(yīng)。而通常情況下的對(duì)每戶用電數(shù)據(jù)進(jìn)行周期性的采集,設(shè)為低優(yōu)先級(jí)級(jí)別,可以滯后處理。在每個(gè)數(shù)據(jù)包中都攜帶其優(yōu)先級(jí)別信息,當(dāng)很多數(shù)據(jù)包在某一節(jié)點(diǎn)排隊(duì)等候發(fā)送的時(shí)候,節(jié)點(diǎn)可以先判別數(shù)據(jù)包的優(yōu)先級(jí)別,先發(fā)送優(yōu)先級(jí)別高的,再處理優(yōu)先級(jí)別低的,這樣可以有效地降低節(jié)點(diǎn)的擁塞度,從而提高系統(tǒng)運(yùn)行效率。
3.2.4 路由維護(hù)過(guò)程
在進(jìn)行用電信息采集的通信過(guò)程中,可能會(huì)由于斷電或故障引起某些設(shè)備無(wú)法正常工作,從而導(dǎo)致鏈路斷開(kāi),原先建立的路由失效,這樣會(huì)使通信中斷。此時(shí)如果仍按原路由發(fā)送數(shù)據(jù),就會(huì)導(dǎo)致數(shù)據(jù)丟失。為了保證電表數(shù)據(jù)的抄收率,每一輪抄表結(jié)束后都需要對(duì)路由進(jìn)行維護(hù),從而保證下一輪抄表過(guò)程正常進(jìn)行。
在用電信息采集系統(tǒng)中,集中器輪詢抄表間隔一般為5 min,因此路由維護(hù)的周期選擇為4.5 min。即每次抄表結(jié)束后,節(jié)點(diǎn)以4.5 min為周期廣播Hello消息來(lái)檢測(cè)鏈路是否失效。當(dāng)某節(jié)點(diǎn)在有限的時(shí)間內(nèi)沒(méi)有收到任何響應(yīng)時(shí),說(shuō)明鏈路發(fā)生中斷。當(dāng)某節(jié)點(diǎn)檢測(cè)到鏈路斷開(kāi)后,不是直接進(jìn)行本地修復(fù),而是根據(jù)自己當(dāng)前的擁塞狀態(tài)來(lái)確定是局部修復(fù)還是向上游報(bào)錯(cuò):(1)如果節(jié)點(diǎn)處于normal或congestion狀態(tài),就可以進(jìn)行本地修復(fù),在本地尋找新的路由;(2)如果節(jié)點(diǎn)處于 serious狀態(tài),則直接向上游節(jié)點(diǎn)發(fā)送路由出錯(cuò)分組RERR,由上游無(wú)擁塞節(jié)點(diǎn)進(jìn)行路由重建,從而修復(fù)路由。
為了修復(fù)失效路由,本算法引入動(dòng)態(tài)功率控制機(jī)制,即動(dòng)態(tài)地改變節(jié)點(diǎn)的發(fā)射功率,從而調(diào)整網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)和選路,使全網(wǎng)性能得到優(yōu)化。節(jié)點(diǎn)的發(fā)射功率與其通信距離是緊密相關(guān)的,發(fā)射功率越大,在其他因素相同的情況下,其通信距離越遠(yuǎn)[5]。因此,當(dāng)某一節(jié)點(diǎn)檢測(cè)到路由失效后,其上游節(jié)點(diǎn)收到RERR分組后,就可以動(dòng)態(tài)地增大自身的發(fā)射功率,使其通信距離變遠(yuǎn),足夠跳過(guò)失效的節(jié)點(diǎn),避免因信號(hào)強(qiáng)度過(guò)小所帶來(lái)的重新選路和連接等過(guò)程,從而保證數(shù)據(jù)的可靠傳輸。如圖3所示,當(dāng)藍(lán)色的節(jié)點(diǎn)失效后,其他節(jié)點(diǎn)可以通過(guò)加大其發(fā)射功率,越過(guò)失效節(jié)點(diǎn),從而修復(fù)路由。當(dāng)然,如果某節(jié)點(diǎn)經(jīng)維護(hù)后又重新能正常運(yùn)行了,此時(shí),在滿足通信要求的情況下,又可以適當(dāng)?shù)亟档推浒l(fā)射功率,以達(dá)到節(jié)能的目的。
針對(duì)用電信息采集系統(tǒng)的網(wǎng)絡(luò)拓?fù)涮攸c(diǎn),本文在原有AODV路由算法的基礎(chǔ)上進(jìn)行了改進(jìn),路由發(fā)現(xiàn)階段基于事件驅(qū)動(dòng)的多優(yōu)先級(jí)擁塞控制機(jī)制,減少數(shù)據(jù)丟包率,保證了數(shù)據(jù)傳輸?shù)目煽啃?。并且考慮了鏈路間的功率損耗,以最小功耗作為路由判據(jù),達(dá)到了節(jié)能的目的,有效地延長(zhǎng)了設(shè)備的工作時(shí)間。路由維護(hù)過(guò)程采用動(dòng)態(tài)功率控制策略,與傳統(tǒng)路由算法相比,減少了路由修復(fù)的時(shí)間。因此,將該路由算法應(yīng)用于用電信息采集系統(tǒng)中,能達(dá)到較好的路由性能。由于設(shè)計(jì)路由需要考慮的因素眾多,比如負(fù)載均衡、網(wǎng)絡(luò)容錯(cuò)等因素本文都沒(méi)有涉及,在以后的工作中,要對(duì)其他因素深入研究,使得網(wǎng)絡(luò)路由更加優(yōu)化。
1 于飛,胡繼珍.低壓電力無(wú)線集抄系統(tǒng)數(shù)據(jù)傳輸路由算法研究.電力系統(tǒng)保護(hù)與控制,2010,38(1):66~69
2 洪錫軍,張激.無(wú)線自組網(wǎng)路由協(xié)議研究.計(jì)算機(jī)工程,2005,31(8):105~107
3 薛楠,張靖.Ad-hoc網(wǎng)絡(luò)中AODV路由算法的改進(jìn).哈爾濱商業(yè)大學(xué)學(xué)報(bào),2006,22(3):39~41
4 王斌.無(wú)線傳感器網(wǎng)絡(luò)AODV路由協(xié)議的實(shí)現(xiàn).計(jì)算機(jī)與現(xiàn)代化,2009,(1):86~89
5 劉桂開(kāi),王洪江.一種基于輔助路由的擁塞自適應(yīng)協(xié)議.系統(tǒng)工程與電子技術(shù),2010,32(5):1070~1077
6 梁云,魏明.基于AODV有功率控制功能的QoS路由協(xié)議PCQ_AODV.通信技術(shù),2008,41(4):84~86
7 吳建新,朱翠濤.聯(lián)合擁塞控制的AODV路由算法研究.光通信研究,2009,(3):61~64