張涌逸
摘 要:PECR協(xié)議中對(duì)下游節(jié)點(diǎn)是否擁塞僅僅是一種預(yù)測(cè),這種預(yù)測(cè)有時(shí)是不準(zhǔn)確的,且在下游節(jié)點(diǎn)沒(méi)有滿足條件擁塞度和剩余能量的時(shí)候,傳輸層的問(wèn)題要回到網(wǎng)絡(luò)層去處理。為了解決PECR協(xié)議中存在的這些問(wèn)題,文章引入了具有發(fā)送優(yōu)先級(jí)的兩個(gè)隊(duì)列,優(yōu)先發(fā)送優(yōu)先級(jí)高的數(shù)據(jù),在實(shí)際出現(xiàn)擁塞時(shí)會(huì)通知上游節(jié)點(diǎn)減少發(fā)送速率,并先拋棄掉優(yōu)先級(jí)低的數(shù)據(jù)。在擁塞嚴(yán)重的時(shí)候也會(huì)拋棄掉優(yōu)先級(jí)高的數(shù)據(jù),但不會(huì)再回到網(wǎng)絡(luò)層去處理問(wèn)題。
關(guān)鍵詞:擁塞控制;可靠性;擁塞度;隊(duì)列
無(wú)線傳感器網(wǎng)絡(luò)在剛出現(xiàn)的時(shí)候由于數(shù)據(jù)傳輸量小,基本不需要傳輸層協(xié)議。無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)傳輸量的增加,對(duì)傳輸層提出了新的要求,人們也提出了各種各樣的傳輸層協(xié)議。這些協(xié)議主要是用來(lái)提供可靠性保證和進(jìn)行擁塞控制的。提供可靠性保證的協(xié)議有速率單調(diào)小任務(wù)(Rate Monotonic Small Task,RMST)、無(wú)線承載控制(Radio Bearer Control,RBC)、協(xié)議地極方向(Conventional Terrestrial Pole,CTP)、保留和終止計(jì)劃的執(zhí)行(Executive Retention and Termination Plan,ERTP)和慢存入快取出(Pump Slowly Fetch Quickly,PSFQ)等,進(jìn)行擁塞控制的有CODE,CCF,PCCP和基于能量?jī)?yōu)先的阻塞緩解機(jī)制(Priority of Energy Congestion Relief,PECR)等。PECR協(xié)議也能提供一定的可靠性。利用緩存來(lái)進(jìn)行擁塞檢測(cè),通過(guò)對(duì)過(guò)去緩存的變化來(lái)預(yù)測(cè)下一次的變化,進(jìn)而確定是否出現(xiàn)了擁塞。由于使用前一次的變化值來(lái)預(yù)測(cè)下一單位時(shí)間間隔的變化值,這會(huì)發(fā)生沒(méi)有擁塞而預(yù)測(cè)出現(xiàn)擁塞的情況,也會(huì)在有擁塞出現(xiàn)而預(yù)測(cè)到?jīng)]有擁塞的情況。PECR協(xié)議在出現(xiàn)擁塞的時(shí)候沒(méi)有任何的處理方法,甚至在出現(xiàn)擁塞度和剩余能量不能滿足選擇下一跳的時(shí)候還要把任務(wù)交到網(wǎng)絡(luò)層去處理,這是不合實(shí)際的[1-3]。因?yàn)榫W(wǎng)絡(luò)層實(shí)際上已把最合理的下一跳路由傳達(dá)給節(jié)點(diǎn)了。為了解決上述的問(wèn)題,文章在傳輸層引入了數(shù)據(jù)傳輸?shù)膬?yōu)先級(jí),通過(guò)傳輸?shù)膬?yōu)先等級(jí)在出現(xiàn)擁塞的時(shí)候能把實(shí)時(shí)信息及時(shí)地傳輸出去,對(duì)于那些不是實(shí)時(shí)的信息可拋棄掉,不需要再把任務(wù)交給網(wǎng)絡(luò)層來(lái)處理。
1 PECR協(xié)議的改進(jìn)
PECR協(xié)議通過(guò)對(duì)過(guò)去數(shù)據(jù)增量[1]:
C(k)=b(k)-b(k-1),b(k)表示在時(shí)刻k緩存占用大小)的考察,來(lái)推測(cè)過(guò)一個(gè)單位時(shí)間間隔緩存數(shù)據(jù)增量仍為C(k)。利用C(k)可預(yù)測(cè)出在下一個(gè)單位時(shí)間間隔緩存的擁塞度:
CGT=(b(k)+ C(k))/B (B為緩存大?。?/p>
當(dāng)CGT>a認(rèn)為出現(xiàn)了擁塞(a擁塞的閾值) 。
既然是預(yù)測(cè)就會(huì)和實(shí)際情況有出入。為了解決PECR協(xié)議預(yù)測(cè)時(shí)出現(xiàn)的問(wèn)題我們提出了利用數(shù)據(jù)發(fā)送的優(yōu)先級(jí)來(lái)解決此問(wèn)題。實(shí)時(shí)信號(hào)的優(yōu)先級(jí)較高,非實(shí)時(shí)信號(hào)的優(yōu)先級(jí)較低。為此,在傳輸層建立了兩個(gè)隊(duì)列用來(lái)存放數(shù)據(jù),每個(gè)隊(duì)列的大小為B。優(yōu)先級(jí)高(比如實(shí)時(shí)信號(hào))的數(shù)據(jù)放在一個(gè)隊(duì)列中,優(yōu)先級(jí)低(比如非實(shí)時(shí)信號(hào))的放在一個(gè)隊(duì)列中。節(jié)點(diǎn)對(duì)接收到的數(shù)據(jù)根據(jù)包頭中的優(yōu)先級(jí)位(可設(shè)為0,1,為1時(shí)數(shù)據(jù)優(yōu)先級(jí)較高)進(jìn)行劃分,把數(shù)據(jù)分配給兩個(gè)隊(duì)列。在發(fā)送的時(shí)候優(yōu)先發(fā)送優(yōu)先級(jí)高的數(shù)據(jù)。具體在實(shí)現(xiàn)的時(shí)候如果可能采取每發(fā)送n個(gè)優(yōu)先級(jí)高的數(shù)據(jù)后才發(fā)送一個(gè)優(yōu)先級(jí)低的數(shù)據(jù);如果出現(xiàn)有一個(gè)隊(duì)列為空,則只發(fā)送另一個(gè)隊(duì)列的數(shù)據(jù)。仍利用PECR協(xié)議來(lái)預(yù)測(cè)擁塞度。利用預(yù)測(cè)的擁塞度來(lái)進(jìn)行分流。在擁塞真的發(fā)生的時(shí)候,先拋棄掉優(yōu)先級(jí)低的數(shù)據(jù),也就是不發(fā)送低優(yōu)先級(jí)的數(shù)據(jù)。當(dāng)然,如果只發(fā)送優(yōu)先級(jí)高的數(shù)據(jù),優(yōu)先級(jí)高的隊(duì)列如果仍舊擁塞,優(yōu)先級(jí)高的隊(duì)列中的數(shù)據(jù)也會(huì)被拋棄。
2 改進(jìn)的BPEC協(xié)議流程
改進(jìn)的BPEC協(xié)議在預(yù)測(cè)到擁塞的時(shí)候會(huì)采取分流、減少數(shù)據(jù)傳輸?shù)乃俾实却胧?。在?shí)際出現(xiàn)擁塞的時(shí)候會(huì)拋棄掉優(yōu)先級(jí)低的數(shù)據(jù),在擁塞嚴(yán)重的時(shí)候優(yōu)先級(jí)高的數(shù)據(jù)也會(huì)被拋棄。為了適應(yīng)無(wú)線傳感器網(wǎng)絡(luò)計(jì)算能力簡(jiǎn)單的特點(diǎn),在計(jì)算擁塞度、在考察節(jié)點(diǎn)是否實(shí)際出現(xiàn)擁塞,只以優(yōu)先級(jí)高的隊(duì)列作為預(yù)測(cè)出現(xiàn)擁塞和實(shí)際出現(xiàn)擁塞的判斷依據(jù)。當(dāng)節(jié)點(diǎn)優(yōu)先級(jí)高的隊(duì)列數(shù)據(jù)超過(guò)一半的時(shí)候,看作節(jié)點(diǎn)實(shí)際出現(xiàn)了擁塞[2];擁塞度仍采用BPEC協(xié)議的計(jì)算方法。
(1)節(jié)點(diǎn)根據(jù)路由表(由網(wǎng)絡(luò)層提供)信息確定自己的下一跳信息;(2)節(jié)點(diǎn)建立兩個(gè)緩存隊(duì)列,一個(gè)隊(duì)列是優(yōu)先級(jí)高的隊(duì)列,一個(gè)隊(duì)列是優(yōu)先級(jí)低的隊(duì)列;(3)節(jié)點(diǎn)對(duì)接收到的數(shù)據(jù)根據(jù)包頭中的優(yōu)先級(jí)位(可設(shè)為0,1,為1時(shí)數(shù)據(jù)優(yōu)先級(jí)較高)進(jìn)行劃分,分別把收到的數(shù)據(jù)按優(yōu)先級(jí)放入兩個(gè)隊(duì)列。優(yōu)先級(jí)高的隊(duì)列數(shù)據(jù)超過(guò)緩存的1/2,不再接收數(shù)據(jù)(也即把接收的數(shù)據(jù)拋棄);優(yōu)先級(jí)低的隊(duì)列數(shù)據(jù)超過(guò)緩存的1/2,不再接收數(shù)據(jù)。(4)每個(gè)節(jié)點(diǎn)確定自己的C(k),CGT、剩余能量等信息,然后周期性地向其鄰居節(jié)點(diǎn)進(jìn)行廣播。(5)根據(jù)自己的下游節(jié)點(diǎn)C(k),CGT、剩余能量等信息確定是否需要分流。如果現(xiàn)在的下一跳節(jié)點(diǎn)的剩余能量及預(yù)測(cè)的擁塞值不超過(guò)a,仍選擇此節(jié)點(diǎn)作為下一跳節(jié)點(diǎn);否則,要重新確定下一跳節(jié)點(diǎn)。(6)除去(5)中的下一跳節(jié)點(diǎn),在自己的其余的下游節(jié)點(diǎn)中,選擇一個(gè)節(jié)點(diǎn),使得剩余能量>p(p為可做路由節(jié)點(diǎn)剩余能量的閾值),并且取這些節(jié)點(diǎn)中擁塞度CGT最小的節(jié)點(diǎn)作為自己的下一跳節(jié)點(diǎn)。(7)如果優(yōu)先級(jí)高的隊(duì)列數(shù)據(jù)超過(guò)緩存的1/2,向其鄰居節(jié)點(diǎn)通報(bào)出現(xiàn)了擁塞,上游節(jié)點(diǎn)的發(fā)送速率減半。此時(shí),向下一跳節(jié)點(diǎn)不再發(fā)送低優(yōu)先級(jí)隊(duì)列中的數(shù)據(jù),只發(fā)送高優(yōu)先級(jí)隊(duì)列中的數(shù)據(jù)。如果沒(méi)出現(xiàn)擁塞,向下一跳節(jié)點(diǎn)每發(fā)送n個(gè)優(yōu)先級(jí)高的數(shù)據(jù)包才發(fā)送一個(gè)優(yōu)先級(jí)低的數(shù)據(jù)包,如果有一個(gè)隊(duì)列為空,只發(fā)送另一個(gè)隊(duì)列中的數(shù)據(jù)。
3 結(jié)語(yǔ)
隨著無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)通信量的增加,人們對(duì)傳輸層的研究越來(lái)越多。PECR協(xié)議是一種較早提出的傳輸層協(xié)議,能自適應(yīng)地進(jìn)行擁塞控制,也能有一定可靠性保證,還能節(jié)約能量。但PECR協(xié)議進(jìn)行擁塞控制時(shí)采用的是根據(jù)現(xiàn)在緩存的情況來(lái)預(yù)測(cè)下一單位時(shí)間間隔緩存情況的方法。僅用這種方法會(huì)帶來(lái)預(yù)測(cè)不準(zhǔn)確的問(wèn)題,并在實(shí)際出現(xiàn)擁塞時(shí)PECR協(xié)議也不會(huì)采取任何措施,有時(shí)還需要回到網(wǎng)絡(luò)層去處理。本文在PECR協(xié)議的基礎(chǔ)上引入了兩個(gè)隊(duì)列,采用優(yōu)先發(fā)送實(shí)時(shí)信息的方式來(lái)發(fā)送優(yōu)先級(jí)高的信息,在實(shí)際發(fā)生擁塞的時(shí)候先拋棄優(yōu)先級(jí)低的信息,并通知上游節(jié)點(diǎn)減小發(fā)送速率的方法來(lái)解決這些問(wèn)題,且不再需要網(wǎng)絡(luò)層的參與。
[參考文獻(xiàn)]
[1]蔣禧,齊建東,曹永潔,等.能量?jī)?yōu)先的無(wú)線傳感器網(wǎng)絡(luò)擁塞緩解機(jī)制[J].計(jì)算機(jī)工程與設(shè)計(jì),2011(2):416-419.
[2]卜長(zhǎng)清.無(wú)線傳感器網(wǎng)絡(luò)實(shí)時(shí)傳輸協(xié)議的研究和實(shí)現(xiàn)[D].重慶:重慶大學(xué),2009.
[3]劉偉榮,何云.物聯(lián)網(wǎng)與無(wú)線傳感器網(wǎng)絡(luò)技術(shù)[M].北京:電子工業(yè)出版社,2013.endprint