金東方,趙文,蘇先海,史建
(中國電子科技集團公司第三十研究所,成都 610041)
對于當前IEEE 802.15.4標準來講,減少網絡節點能量消耗進而提高能量效率的有效方法之一就是利用超幀中定義的休眠模式,從而使節點能夠在超幀競爭訪問周期(CAP)內進入低功耗的工作模式。本文給出了較為詳細仿真的試驗流程、網絡模擬器的實現及計算網絡性能指標所使用的算法,通過選取一個典型的網絡場景,對網絡活躍時段進入休眠模式、減小競爭窗口長度及原始標準的網絡性能進行了分析和比較,驗證了相關措施在低速率傳輸時的良好效果。
圖1描述了本文仿真的處理結構,為了生成最終的統計結果,設計了一些腳本和程序,也解釋了仿真用到的這些腳本和程序的內部依賴關系。在用NS2運行wpan.tcl腳本進行仿真之前,需要嵌入節點場景文件和數據流文件,這些文件包含的內容也可以直接存在于wpan.tcl腳本中,但為了使TCL腳本更簡明和便于閱讀,通常會把節點場景文件和數據流文件分別單獨放到文件wpan.scn和traffic中保存。
首先,分別用scen_gen和cbrgen_star兩個小程序生成節點場景文件wpan.scn和cbr數據流文件traffic,
并在wpan.tcl腳本中用source命令嵌入這兩個文件;然后用NS2運行wpan.tcl腳本,生成包含有網絡仿真過程中發生的各種事件信息的跟蹤文件wpan.tr和作為NAM輸入文件的wpan.nam。最后,用awk腳本文件performance.awk并以wpan.tr作為輸入生成分析統計結果,每次仿真的性能指標就可由此得出。

圖1 仿真分析處理結構
本文仿真的網絡場景有以下特點:
(1)拓撲結構為一跳的星型網絡,周邊節點與無線個域網(WPAN)協調器以無線方式連接,并直接與其通信;
(2)所有節點都相互在其載波監聽范圍之內,這樣就消除了網絡內隱藏節點的存在及其造成的數據包沖突;
(3)不使用MAC層對數據包的確認機制;
(4)節點在競爭訪問周期(CAP)內無數據傳輸時進入休眠,而不是只在非競爭訪問周期(CFP)內才進行休眠;
(5)使用修改過的AODV路由協議。
結合本文設定的網絡場景需求,修改NS2中的網絡模擬器,使其支持休眠狀態及休眠-空閑和空閑-休眠的過度狀態,并具備在沒有數據包傳輸時節點自我關閉的能力。
同時,根據本文研究設定的網絡場景,下面的一些修改有助于提高仿真的準確性:
(1)修改./wpan/p802_15_4phy.cc文件中的Phy802_15_4::CarrierSenser()函 數 ,增 加 能 量 接 收 閾 值EDThresh_參數,用來衡量一個信道的狀態,并將其設置為大于接收器接收靈敏度10dB的值[1],如果能量檢測值大于該值,將認為信道忙。
(2)由于本文中網絡場景節點是直接且只與PAN協調器進行通信,并不需要路由協議的路由表查詢和路由發現機制功能,所以這里修改了NS2中的AODV路由協議,使它的下一跳的節點地址就是目標本身[2],可通過修改./aodv/aodv.cc文件中的recv()函數和forward()函數實現。
(3)由于修改了路由協議,需要對ARP協議做一些簡單改動,即使目標節點的地址映射信息不存在,也不再發送任何請求信息,而是假設地址映射信息總是存在于arp表中,通過修改mac/arp.cc文件中的arplookup()函數實現。
(4)在文獻[3]中,作者對ACK機制給網絡仿真的影響進行了分析,本文所重點討論的網絡場景不使用ACK確認機制,對IEEE 802.15.4模擬器中的ACK機制進行修改,設定一個較長些的ACK持續時間,根據網絡場景頻段,將其設定為55個符號周期[4],通過修改./wpan/p802_15_4def.h文件中 macAckWaitDuration的取值來實現。
在對IEEE 802.15.4模擬器進行了上述修改后,仿真流程并沒有變化,而網絡仿真過程中的內部處理卻發生了改變。為了驗證對IEEE 802.15.4模擬器修改后的效果,構建了一個簡單的網絡環境,在40s后開始傳輸40Bytes大小的cbr數據包。

圖2 仿真過程中模擬器的輸出信息
圖2為在進行網絡仿真過程中IEEE 802.15.4模擬器輸出的網絡事件信息的一段截圖,從中可以知道加入休眠機制后,節點在空閑的時候進入了休眠狀態,而當有數據到來時,節點又能夠被喚醒,例如,節點1在555.411808s進入休眠狀態,節點5在555.470080s被喚醒,驗證了所做修改的有效性。
在用NS2進行網絡分析時,要得到網絡模型的性能指標,需要對網絡仿真產生的*.tr文件進行分析,對于本文的網絡應用模型,采用如下所述的算法來分析各網絡指標,用awk腳本求網絡性能指標時的算法基于以下對各指標的描述。
吞吐量是指網絡傳送二進制信息的速率,也稱比特率或帶寬。本文定義吞吐量為單位時間內源節點到目的節點成功傳輸有效載荷的速率,考慮到IEEE 802.15.4標準低速率特點及其能支持的最大速率[5],本文用網絡內節點每秒鐘所成功接收的有效數據比特數來表示吞吐量,而忽略非有效載荷(例如信標及包頭)的數據傳輸。本文計算吞吐量的算法采用先計算網絡節點在運行時間內成功接收到的數據包個數(對于本文網絡模型來說即為PAN協調器節點在網絡運行期間接收到的數據包個數),并計算出相應的接收比特數,然后用這個比特數除以仿真時間,最后算出平均吞吐量[6]。因此,吞吐量可以描述如下:

節點能耗指在全部仿真過程中節點消耗的能量,單位為焦耳。本文關注的節點能耗是指仿真時間內除PAN協調器以外的所有節點的平均能耗。求節點平均能耗的算法為:計算出除PAN協調器外其他節點消耗的能量Ei
endnode_consumed,然后求出這些節點消耗掉的能量總和Esum_consumed,平均能耗Eaverage_consumed即為所有節點消耗的能量與除PAN協調器外的節點個數Nendnode之比[7]。平均能耗用式(2)表示,其中Einitial表示仿真時節點的初始能量,Eifinal表示仿真結束時節點剩余的能量,m為網絡中除PAN協調器外的節點個數。

為了更清楚地表達和研究MAC的能量效率,本文引入單位能量成功傳輸的字節數(單位為Bytes/J)這一性能評估指標[8]。這個指標實際上是網絡成功接收的有效字節總數與除PAN協調器外的其他節點消耗的總能量的比值,表示網絡每消耗1焦耳能量,協調器成功接收到的字節數,單位能量傳輸的字節數越少,表明網絡的能量效率越低[9]。求能量效率的算法可描述為:首先計算出網絡中成功傳輸的數據包個數,進而求出有效載荷的總字節數REsum_bytes,例如成功傳輸的數據包個數為100,數據包有效載荷為70 bytes,那么REsum_bytes等于7000 bytes。然后計算出除PAN協調器外的其他節點消耗的總能量Esum_consumed,能量效率Eefficiency即為REsum_bytes與Esum_consumed的比值。能量效率如式(3)所示:

下面對網絡在IEEE 802.15.4原標準、超幀活躍周期內無數據傳輸時進入休眠和在進入休眠的基礎上縮短競爭窗口長度三種情況下網絡吞吐量、節點能量消耗及與能量效率,以及減小競爭窗口對網絡性能的影響進行仿真分析和比較。

圖3 與原始IEEE 802.15.4標準吞吐量性能對比
如圖3所示,通過對節點在超幀活躍周期內進入休眠狀態和不進入休眠狀態兩種情況下的性能結果進行比對可知,使用IEEE 802.15.4標準競爭窗口默認值CW為2時,吞吐量并沒有因為節點進入休眠狀態而有較大變化。在相同網絡規模情況下,所有仿真負載值時的吞吐量的變化范圍在±1%內。這是因為:在允許節點進入休眠狀態時,關閉-空閑狀態的轉變是產生延遲的主要原因[10],但即使是在不進入休眠狀態的情況下,從對CSMA/CA機制的討論可知該過渡時間也是以初始化隨機退避延遲的形式存在的,因此,進入休眠狀態時過渡期造成的延遲開銷與停留在空閑狀態的延遲開銷基本相同。當網絡負載較輕時,CW為1和CW為2兩種情況下的網絡吞吐量值并沒有明顯差別,這是由于此時信道多處于空閑狀態,包投遞率很高。然而,隨著負載的增加,CW為1時的吞吐量優勢逐漸變得明顯。吞吐量之所以有些提高是因為競爭窗口長度為1時在一定程度上縮短了信道訪問時所需的時間,即減小了節點在空閑狀態所處的時間,單位時間內節點可以發送的數據包個數增加,從而使信道傳輸數據的效率提高了。由于沒有ACK機制,所以即使是在CW為1時,數據包也不會出現“意外”而與ACK幀沖突。當負載較重時,由于CW為1減小了包發送時間,所以能夠在一定程度上提高包投遞率,從而使網絡吞吐量相對于CW為2時有所提高。

圖4 與原始IEEE 802.15.4標準節點平均能耗對比

圖5 與原始IEEE 802.15.4標準能量效率對比
從圖4可以看出,在低數據速率的情況下,若節點在活動周期內不進入休眠狀態,在仿真時間內節點平均消耗的能量大于1焦耳;而允許節點在活動周期內進入休眠狀態時,節點平均消耗的能量只有0.1焦耳左右,可以推出,低速率的應用中,節點在不活動時進入休眠狀態能夠巨大地降低能量的消耗。而此時無論射頻收發器休眠與否,網絡吞吐量都是相當的,所以負載輕時讓節點休眠能提高能量效率。當通信速率較高時,節點在休眠狀態所花的總時間也較少,所以此時讓射頻芯片進入休眠狀態帶來的能耗降低不必低速率時更有優勢,例如,cbr包間隔時間為200 s時,進入休眠的節點平均能耗只有不進入休眠能耗的1/25,而在cbr包間隔0.01 s時,這一比例為1/5。而實際上,當網絡負載足夠重時,由于休眠-空閑狀態轉換的開銷(啟動射頻芯片增加的時隙數及相關的能量消耗),在活動周期內讓芯片進入休眠狀態比只停留在空閑狀態消耗的能量還要多。
允許射頻芯片進入休眠狀態時,比較CW為2和CW為1兩種情況下的三個指標可知,CW為1時的節點平均能耗比CW為2時要降低5-10%;通信速率高時,CW為1時的吞吐量也會比CW為2時有7-10%的提高;比較圖5中CW為1和CW為2兩種情況對應的各自曲線可知,低數據率時的低能耗及高數據率時的較大吞吐量,使得CW=1時的能量效率比CW=2時有10-15%的提高。
通過修改相關程序代碼,構建本文研究的IEEE 802.15.4網絡場景,可以知道,在超幀活動周期內沒有數據包傳輸時讓射頻芯片進入休眠狀態及CW為1兩種情況下的信道吞吐量與通常情況(活動周期內沒包傳輸時處于空閑狀態)下的吞吐量并沒有明顯差別。這是由于在設計射頻芯片從休眠狀態喚醒時,針對IEEE 802.15.4標準的CSMA/CA初始退避延時做了相關修改,使這一退避時間能夠用于休眠到射頻芯片被激活這一過渡時間,降低能耗的同時并不會吞吐量造成大的消極影響。隨著網絡負載的增加,由于狀態間轉換消耗的能量抵消了因進入休眠狀態而節省的能量,進入休眠狀態帶來的能耗優勢也跟著降低,所以,本文研究采取的措施只適合于低速率的無線網絡應用。