官术网_书友最值得收藏!

5.2.2 無線傳感器網絡傳輸層協議分析

1. 基于擁塞控制的傳輸層協議

1)PECR協議

PECR是一種能夠自適應調整的擁塞控制機制,在保證可靠性的基礎上,能夠最大限度地節省能量。PECR作為一種擁塞控制機制,包括兩個階段,即擁塞檢測和擁塞控制。

具體過程如下。首先,PECR在網絡初始化時根據最小跳數路由協議來確定整個網絡的路由表,使得每個節點都能夠確定每個節點的父節點和子節點。節點周期性地檢測節點隊列緩存區的占用率和節點的剩余能量值,假設當前時間為t,當前節點的擁塞度為Ct(i),當前節點的剩余能量值為Pt(i),其中i為節點編號。節點將當前的擁塞度Ct(i)和節點剩余能量值Pt(i)通過明文方式向其上游節點反饋,上游節點比較其所有的下一跳節點的擁塞度Ct(i)和剩余能量值Pt(i)來實現分流。檢測下一跳節點擁塞度是為了使分流之后形成的鏈路不會形成新的擁塞,從而浪費時間和能量。檢測下一跳節點的剩余能量值是為了避免新鏈路形成以后節點因為能量耗盡而導致鏈路失效的情況發生,從而需要再次尋找鏈路,再次計算路由信息值,影響網絡性能。

(1)擁塞檢測。對于擁塞控制傳輸協議來說,擁塞檢測是實現擁塞控制的重要組成部分。就現在提出的協議而言,主要有兩種方法來進行擁塞檢測:基于信道采樣的方法和節點緩存占用情況的方法,第一種方法需要節點時刻保持偵聽狀態,耗費大量的能量,因此PECR協議采用節點緩存占用情況的方法來檢測擁塞。

假設節點在第k個時間采樣點的緩存占用大小為b(k),因此在k-1到k個時間采樣點之間,數據增量C(k)為

C(k)=b(k)-b(k-1)

由于節點的緩存占用率既可以增加,也可以減少,因此數據增量C(k)的值可正可負:當它為正時,表示節點接收數據速率大于發送速率;為負時表示節點接收數據速率小于發送速率,節點的緩存占用率正在變小。

節點在第k-1個時間點和第k個時間點的時間間隔為

在網絡流量沒發生明顯變化時,即假設在第k個到第k+1個時間點內數據的增量等于k?1到k時間點內數據的增量,即

將數據增量考慮在內以后,可以計算k+1個時間點緩存區的擁塞度,即

若在時刻k+1處擁塞度CGT>aa為擁塞閾值,則顯示該節點處于擁塞狀態,通過廣播的形式發送一個擁塞通告,告訴其上游節點不再對其發送信息,采用減慢發送速率的方法或者采取分流機制。

根據上述分析我們知道,擁塞閾值a決定著無線傳感器網絡的準確度和擁塞緩解的效率,如果擁塞閾值a設置得過大,節點對于擁塞不能快速反應,可能會導致緩存區滿,發生溢出等現象,造成數據包的丟失,影響網絡的性能。如果擁塞閾值a設置得太小,造成節點緩存區浪費,不能實現最優路徑傳輸,耗費能量和資源,降低網絡的使用壽命。因此,在確定擁塞閾值a的大小時,必須首先考慮網絡所需要實現的目標,綜合考慮節點緩存區隊列的大小、網絡規模和傳輸速率等復雜因素。

(2)分流調節。考慮到節點的能量有限,無線傳感器網絡的傳輸協議必須簡單易行,最大限度地降低其運算復雜度,減少處理時間,提高其時延性能。其中擁塞控制方法有兩種:減速和分流調節機制。采用速率調節的方法來進行擁塞控制所需要的代價較大,所需算法比較復雜,但是速率調節又是最有效的調節擁塞的方法,因此PECR協議采用的方法是,當源節點檢測到擁塞時,立即采用分流機制來控制擁塞。PECR協議采用的是減速分流調節機制,PECR協議流程如圖5.2所示。

圖5.2 PECR協議流程圖

① 節點根據最小跳數協議初始化自己的路由表信息,確定每個節點的下一跳節點,若節點個數比較少,路由表信息可直接依據節點分布情況給出。

② 節點周期性地檢測緩存占用率并將其作為擁塞信息寫入反饋數據包中,并向其相鄰節點發送此報文,報文包含節點用戶編號User ID、擁塞度Ck(i)、剩余能量Pk(i)等信息。

③ 源節點收到下游節點反饋的擁塞信息后,立即將此擁塞信息寫入本地緩存的相鄰節點擁塞表內。

④ 進入分流過程,節點將檢測自己選擇的下一跳節點是否滿足擁塞度和剩余能量值的要求,若滿足則選擇此節點作為下一跳節點;若不滿足,則進入選擇下一跳節點階段。

⑤ 排除④中選擇的下一跳節點,檢測自己所有的下游節點,確定一個節點的集合,這些節點同時滿足擁塞度小于系統預先設定的擁塞度,且剩余能量值高于指定的閾值,這個集合為

比較集合里面所有節點的擁塞度,選擇最低的那個節點作為分流的下一跳節點,暫時按照這個路由開始轉發數據包,網絡內其他節點也依此來尋找符合條件的下一跳節點,直到建立一條最優新路徑為止。

⑥ 如果存在極值情況,節點所有的下一跳節點都不滿足要求,擁塞度過大或者剩余能量值太小,節點將轉回無線傳感器網絡的網絡層,讓網絡層來尋找最優的路徑轉發節點,當然這不屬于本協議討論的范圍。由于路由表更新或者擁塞解除之后,通過反饋機制通知節點轉回原來的最優路徑,避免使用臨時路徑浪費能量,影響傳輸時延。

2)CODE

CODE是一種擁塞控制協議,中文名稱為擁塞的發現與避免,包括一個擁塞檢測機制和兩個擁塞緩解機制,也是基于逐跳的保證機制。

(1)擁塞檢測機制。CODE是一個比較成熟的無線傳感器網絡傳輸層協議,采用的擁塞檢測方法是信道監聽和緩存隊列檢測相結合的方式。源節點在發送之前首先檢測發送隊列中數據的占用情況,若為非空則開始偵聽信道情況,檢測到信道為空閑狀態則開始發送數據;若檢測到擁塞,則通過反饋機制通知上游節點擁塞信息,節點開始進入擁塞控制階段。

(2)開環控制機制。若節點檢測到擁塞后,立即以廣播的形式將擁塞消息通知所有的相鄰節點,節點收到反饋信息后,立即進入擁塞控制階段,根據具體情況,節點可能丟棄一些本應該傳輸的數據分組或者減慢發送速率,情況嚴重的話可以停止一段時間后再發送數據包。

(3)閉環調節反應機制。在無線傳感器網絡中,越靠近Sink節點的地方,數據流量越大,越容易發生擁塞。若只采用開環控制機制,在反饋結束后,源節點將繼續以原速率發送數據,很容易再次造成擁塞,因此,在靠近Sink節點的地方擁塞控制必須是持續不斷的,CODE機制采用的就是閉環調節反應機制,當靠近Sink節點時,發送源節點會定時檢測信道占用率,若信道占用率超過信道容量的給定比率,源節點會進入閉環調節反應機制,速率調整依據AIMD調整方式來進行,靠近Sink節點的各個方向的數據包發送速率將會有所不同,以此來減輕Sink節點附近的負擔。

2. 基于可靠性傳輸層協議

1)PSFQ

PSFQ協議提出得比較早,是逐跳可靠性保證的傳輸協議,PSFQ(Pump Slowly Fetch Quickly)也稱快取慢充協議,“快取”即節點向它的相鄰節點快速索取數據,“慢充”即等到所有的數據接收完整后再發送給它的下一跳節點。

(1)基本思想。

PSFQ協議要求:用戶節點將數據分割成多個報文傳輸,每個報文被單獨當作一個分組,每個報文包含一些基本的消息,如剩余跳數TTL(Time-To-Live)、報告位、當前報文序號、文件所在報文的序號等。每一個用戶節點按照報文分割后的順序,每隔一段固定的時間廣播一個新的報文分組,直到所有的報文都發送出去為止。每個節點接收到數據報文后檢查緩存中是否已經存在該報文,如果不存在則將該報文中的屬性TTL減1,然后刷新緩存;否則將收到的報文丟棄。固定的時間可用tmin來表示,其大小為數據能夠傳送到所有目的接收者所提供的最短時延界限。

PSFQ為了保證網絡的可靠性,采用以下三種機制來確保數據的可靠傳輸:

? 緩存機制,每個中間節點都緩存接收到的數據報文。

? NACK確認機制,相鄰節點收到源節點發出的數據包后,在檢查數據包時發現數據包中序號是不連續的,找出丟失的數據包序號后,相鄰節點通過廣播NACK報文向源節點或者有丟失數據信息的節點索取丟失的數據包。

? 逐跳錯誤恢復機制,節點接收到所有的數據報文之后才向下一跳節點發送數據。

(2)關鍵技術。

① 逐跳錯誤恢復。與傳統的端到端的錯誤恢復機制不同,PSFQ采用一種逐跳的錯誤恢復機制,錯誤的發現和重傳也在相鄰的兩個節點之間進行。逐跳的端到端錯誤恢復機制相對于端到端的錯誤恢復而言,其最大的好處就是信道錯誤率低得多,隨著跳數的增多,錯誤發生的概率也就越高。例如,假設無線信道中的數據包錯誤率為p,那么經過n跳之后數據傳輸成功的概率為(1?p)n,則端到端的傳輸協議的錯誤率要比逐跳的傳輸協議的錯誤率高多了。從這個表達式中,我們可以看出,網絡的規模越大,分布越密集,那么節點經過的跳數就越多,傳輸的錯誤率就越高。一般來說,使用端到端的傳輸協議來傳輸一個單獨的信息基本上是不可能的,因為端到端的錯誤率一般要達到10%以上,在密集的傳感器網絡中甚至更大。

本協議提出的逐跳錯誤恢復機制主要針對中間節點,具有非常大的意義,中間節點的每一跳都負責數據包丟失的監測和恢復算法,這種方法將整條鏈路上的多跳錯誤處理轉移到了每一跳來處理,可減少錯誤的積累,適用于大規模的無線傳感器網絡,錯誤容忍度也更高。

②“取充”之間的關系。對于一個消息恢復機制系統來說,數據的傳輸時延與逐跳間重傳的次數密切相關。重傳的次數越多則時延越大。為了保證數據的實時性,協議設置一個可控的時間幀,在該時間幀內,要盡量保證數據傳輸的成功率足夠高。實現這個目標最直接的方法就是允許節點在下一個數據包來臨之前進行多次重傳,確保數據能夠成功地傳輸出去,這樣在下一個數據來臨之前就能夠將緩存清空,保證數據的時延最小。為了平衡數據傳輸的成功率和時延,本協議提出了一種算法,假設數據包的錯誤率p保持恒定,允許k次重傳,則兩個節點之間數據包能夠成功傳輸的概率為

式中,θ(k)是在k次重傳之內成功恢復的概率,φ(k)是第k次重傳成功傳輸的概率。隨著k值的增加,數據的傳輸成功率也相應地升高,但當k>5時,成功率雖然提高了,時延性能卻急劇下降,因此協議規定重傳次數為5是一個臨界值,即最優的充和取的時間定時器時間之比為1:5。

③ 數據連續發送。在消息確認機制中,如果數據包是按序號來進行傳輸的話,本地丟失的事件可能會傳播到它的下游節點,這樣會浪費大量的能量。丟失數據之后會立即觸發錯誤恢復機制,節點立即發送一個NACK消息用來向它的相鄰節點索取信息,然而其下游相鄰節點沒有丟失的數據包,所以數據包不能夠被恢復,確保中間節點只轉發連續序號的數據。

另外,協議要求進行數據緩存的管理,這樣能確保數據按照順序發送,從而完成丟失數據的恢復。慢充機制不僅能夠阻止丟失事件向下游節點傳播,也可避免一些不必要的數據丟失引起索取機制的觸發,這樣能提高網絡的容錯度。協議通過將數據丟失事件控制在兩跳相鄰節點之間,并在丟失數據恢復之前不再傳輸序列號更大的數據,跟一般的存儲-轉發形式類似,節點接收到一個完整的數據之后(即所有的數據段全部接收)才將此數據發送給下一節點。這種方法在高錯誤的網絡中尤為有效,因為它將錯誤分段到了每一個單跳傳輸中。

PSFQ采用的多跳傳輸保證機制,能夠在一定程度上保證數據的可靠傳輸,但是采用廣播的形式來傳送數據比較耗費能量,效率也不是很高,要求的數據存儲空間比較大,因此整個網絡的數據流量不是很大,吞吐量也不是很高。

2)ESRT協議

在無線傳感器網絡中,Sink節點作為網絡中最為強大的一個節點,負責調配各節點以最優方式來組織網絡,因此Sink節點關注的是網絡中所有節點的整體狀態。基于這種情況,ERST協議被提出來了,它是一種自適應調整協議,能夠將數據可靠、低能耗地傳送到Sink節點,是一種典型的可靠性協議。

(1)基本思想。

ESRT在綜合考慮節點現有的擁塞情況和可靠性情況下,確定最優策略使網絡性能達到最優。這個協議包括兩部分,一是系統可靠性的測量,二是根據可靠性做出相應的調整。如果系統的可靠性不符合網絡系統所要求的可靠性值,則ESRT會自動調節網絡發送節點的發送速率,使之達到系統所要求的可靠性指標;如果系統的可靠性超過了網絡要求,則ESRT在不犧牲可靠性的條件下,適當地降低源節點的發送速率,減小節點擁塞,最大限度地節省能量。根據這種機制,ESRT可以確定網絡系統的5種狀態:

Si∈{(NC,LR),(NC,HR),OOR,(C,HR),(C,LR)}

其中,N為No(無),C為Congestion(擁塞),L為Low(低),H為High(高),R為Reliability(可靠性),OOR為Optimal Operating Region(最優狀態)。ESRT采用隊列緩沖情況來檢測網絡的擁塞狀況,在事件到Sink節點模型中,節點在一個時間周期內發送的數據包數只跟發送頻率和源節點的個數有關,因此在一定時間間隔內數據包的增量保持恒定。節點通過調節可靠性與擁塞度的平衡情況實現最優狀態。

(2)關鍵技術。

① 可靠性的度量。為了進一步了解ESRT協議,必須理解ESRT協議的運行過程,ESRT是一種可靠的傳輸協議,根據可靠性來相應地調整網絡的狀態,因此可靠性的度量是網絡調整的第一步,占據非常重要的地位。在ESRT協議中,我們假設在一個周期內,節點發送數據分組的頻率為f,Sink節點收到r個時間消息的數據分組,根據應用的要求,Sink節點需要R個事件消息的數據分組才能保證數據的可靠性,η=r/Rη描述的就是當前傳輸的可靠性程度。當η1時,數據的傳輸就是可靠的,當η<1時,當前的傳輸就是不可靠的。事件到Sink節點的可靠性度量如圖5.3所示,圖中展示了可靠性ηf的變化情況。

如圖5.3所示,當f<fmax時,η隨著f的增大而增高;當f>fmax時,η隨著f的增大而相應地進行變化,因為f表示源節點發送數據的頻率,當數據的頻率在不擁塞的情況下增加時,到達Sink節點的數據也相應地增多,因此可靠性保證一定量的增加,但是隨著源節點發送數據頻率的繼續增高,網絡會產生一定的擁塞,到達源節點的數據也相應地減少,可靠性也會產生波動,有時甚至達不到可靠性的要求。網絡的5個狀態如圖5.3所示,在最優狀態(OOR)時,f<fmax,可靠性η的值約為1,其誤差在網絡的可靠性容差之內,其余的幾個狀態在圖5.3中都有表示。

圖5.3 可靠性ηf變化圖

另外,節點的擁塞度測量采用的是查看節點緩存狀態的方式,如果緩存超過一個固定的閾值,則表明網絡擁塞;如果沒有超過,表示網絡沒有擁塞。擁塞度的表示使用一個擁塞的標志位,將這個擁塞標志位傳送給Sink節點,其對于緩存的測量采用的是預測方法,假設當前節點緩存和上一個周期節點的緩存分別為bkbk-1,上一個數據分組的增量就是bk?bk-1,設這個報文增量為b,可以預測下一個周期的緩存量為bk+b,如果大于閾值,認為網絡發生了擁塞,則進入相應的調整階段。

② 可靠性調節。監測到可靠性之后,一般來說網絡都不是運行在最優狀態的,可靠性和能量也不是處于一個平衡狀態,協議采用一定的調節機制來進行可靠性和擁塞度的調節,以此來最大限度地節省能量,提高系統的性能。

在開始傳輸時,Sink節點發送控制報文,命令源節點以預設的速率來發送數據分組。在每個周期末,Sink節點都會計算這個周期內的可靠性η,并結合節點反饋回來的擁塞標志位來確定節點是否處于擁塞狀態,將這些信息處理之后,確定一個新的發送頻率f',以此來調節此數據的可靠性和擁塞狀態,在周期開始時重新發送一個控制報文,調節源節點的發送速率,達到控制擁塞度和可靠性的目的。根據可靠性和擁塞狀態,f'調節方法如表5.1所示。

表5.1 f'調節方法

ESRT能在擁塞控制的基礎上保證網絡的可靠性和能量效率。通過Sink節點對接收速率的檢測,通知整個網絡調整節點發送速率,從而保證網絡的可靠性,提高能量效率。因為一定時間間隔內數據包增量恒定,根據這個速率可以調整發送速率,最終使網絡達到最優狀態,這時網絡可靠性就是系統所要求的可靠性,發送速率基本上保持恒定。

但是ESRT也有它自己的局限性,例如:

? ESRT要求Sink節點通信范圍必須能夠覆蓋整個網絡,對Sink節點的硬件要求非常高,對于大規模的無線傳感器網絡來說,實現起來比較困難。

? Sink節點沒有考慮到各個節點的優先級信息,對所有節點采取統一的調配方案,假設節點在某個局部地區的任務量突然增加,ESRT就不適用了。

? 對于規模稍微大一些的網絡來說,發生擁塞之后,Sink節點的調配信息經過廣播形式到達源節點后,可能這時已經不擁塞了,因此不適用于大規模網絡。

3. 跨層傳輸層協議設計

無線傳感器網絡中節點的能量有限,節約能量、網絡能量均衡使用,進而延長整個網絡的生存期是傳感器網絡協議設計的重要目標。

一方面,無線傳感器網絡中節點的移動、死亡以及新節點的加入等都會引起網絡拓撲結構的動態變化,導致從數據源節點到目的節點(通常為Sink節點)之間的通信路徑極不穩定,甚至在某些地區會出現路由空洞。傳統的端到端路由進行數據傳輸,是先建立路由,再進行MAC層信道握手,最后進行數據傳輸,這種通信方式不能很好地適應網絡拓撲的動態變化。

另一方面,處于數據鏈路層MAC協議直接控制著耗能最多的無線通信模塊的活動,MAC協議的能效性直接影響著傳感器網絡的節能效果,因此在基于面向應用的事件驅動的傳感器網絡中,如何高效利用無線通信模塊是我們設計傳輸協議時面臨的主要問題。

一種可行的辦法就是采用跨層設計來優化數據傳輸協議,其原理就是在數據傳輸過程中不建立嚴格意義上的端到端路由,而是根據網絡當前的狀態,同步地解決路徑生成和信道使用兩方面的問題,將路由協議與MAC協議進行融合,以適應無線傳感器網絡以數據為中心和拓撲動態變化的特性。在協議中引入啟發喚醒和睡眠機制,該機制使傳感器節點在沒有數據需要發送或接收時處于睡眠狀態,節點的無線通信模塊大部分時間處于關閉狀態,可以有效減少空閑偵聽和串音,從而大大減少節點的功耗。

RCTP協議針對可靠性傳輸協議CTP(匯聚樹協議)進行了一定的改進,采用跨層設計的思想,考慮了網絡層和鏈路層對傳輸層協議的影響,主要考慮了鏈路質量的估計和實時路由以及對上層的友好接口。

1)基本思想

RCTP協議跟CTP協議一樣,使用分簇體系結構,把WSN中的全部節點看成由許多樹組成的森林,每棵樹有一個根節點,簇中的節點需要和其他簇中的節點進行通信的時候必須通過根節點進行通信。RCTP協議跟前文提到的協議有許多類似的地方,也主要是用來保證協議的可靠性和進行有效的擁塞控制,RCTP協議傳輸流程圖如圖5.4所示。

RCTP協議的進行也包括兩個階段,一個是擁塞的監測,另一個是擁塞后的實時調度。擁塞的監測采用緩存檢測的方法,當實時隊列和非實時隊列中任意一個隊列緩存達到一半時,協議認為此時網絡節點擁塞。當擁塞發生后,RCTP協議調用相應的實時調度方法來緩解擁塞,并最終實現數據的轉發。

圖5.4 RCTP協議傳輸流程圖

2)關鍵技術

(1)RCTP協議的實時調度。節點接收到數據后,根據RCTP數據包頭中實時位R對數據包進行實時劃分,R為1的為實時包(RT),進入實時隊列;R為0的為非實時包(NRT),進入非實時隊列。RCTP協議根據隊長比算法在兩個隊列中選擇要發送的下一個數據包,實時調度流程如圖5.5所示。

圖5.5 實時調度流程

(2)隊長比算法。隊長比算法是指調度器按兩個隊列的隊長比例來選擇是從實時隊列還是從非實時隊列選取數據。考慮到傳感器節點有限的計算資源,采用一種最簡單的隊長比算法,基本思路是每發送N個實時數據再發送一個非實時數據,算法描述如下。

① 初始化:RT_Counter=0,NRT_flag=FALSE,RT_Window=N

② 判斷實時隊列是否為空,若否,則轉④;若是,則轉③;

③ 判斷非實時隊列是否為空,若否,則轉⑤;若是,則轉②;

④ 判斷RT_Counter是否大于RT_Window,若否,則轉⑥;若是,設置NRT_flag為TRUE,轉⑤;

⑤ 判斷NRT_flag是否被設置,若為TRUE,則轉⑦;若為FALSE,則轉②;

⑥ 選擇發送實時任務,RT_Counter計數一次,然后跳至②;

⑦ 選擇發送非實時任務,RT_Counter歸零,設置NRT_flag為FALSE,然后跳至②。

(3)優先級算法。優先級算法有兩個作用:一是在數據發送時優先選擇隊列中優先級最高的數據包;二是當擁塞發生時優先丟棄優先級最低的數據包。

RCTP協議采用的隊列是循環隊列,循環隊列大小默認是固定的,值為12,在編譯時可以根據應用需求動態分配,增加長度為offset。

當需要從一個隊列(如實時隊列)選取下一個要發送的數據時,調度算法遍歷循環隊列,選擇優先級最高的數據來發送。

主站蜘蛛池模板: 大荔县| 临澧县| 姚安县| 镇康县| 太湖县| 青龙| 惠东县| 迁西县| 广德县| 朝阳市| 定日县| 西峡县| 三门峡市| 安平县| 江川县| 湖北省| 曲周县| 饶平县| 宜章县| 石渠县| 天祝| 佛学| 盐津县| 琼海市| 安庆市| 甘孜县| 云和县| 娱乐| 商丘市| 绿春县| 广饶县| 图片| 阳西县| 搜索| 京山县| 益阳市| 昭觉县| 安新县| 会东县| 晋城| 合江县|