摘 要: 針對移動Ad hoc網絡中節點自私性問題,提出了一種基于節點狀態的節點協作激勵機制NSIM。利用虛擬貨幣來激勵中間節點轉發數據,節點的報價是綜合考慮節點狀態計算得出的,避免資源緊張的節點參與數據轉發;在節點中引入安全模塊和加密機制,防止節點篡改其他節點的報價和非法增加虛擬貨幣。仿真實驗表明,NSIM機制減小了時延,提高了分組投遞率。
關鍵詞: 移動Ad hoc網絡;自私性;激勵機制;虛擬貨幣
在Ad hoc網絡[1]中,由于節點自身的處理能力、電池容量和存儲空間等各種資源都是有限制的,因此節點往往表現出一定的自私性,即不愿意幫助其他節點轉發數據,以達到節省自身資源的目的,從而影響了網絡的性能。激勵自私節點進行合作是Ad hoc網絡迫切需要解決的問題,目前已有的節點激勵策略主要可以分為基于信任度的機制和基于合作博弈的機制兩類。但是這些激勵機制只是盲目地激勵節點參與消息轉發,并沒有進一步考慮節點狀態,即節點自身的資源以及對節點行為的影響,比如資源有限但負載相對過大的節點會因能量耗盡而過早地“死亡”,或因發生擁塞而造成丟包,因此不考慮節點狀態的激勵機制具有一定的盲目性,會造成資源的過度使用而導致網絡性能退化。參考文獻[2]提出的基于買賣模型的節點激勵策略,雖然考慮到了節點自身的狀態,但是這個策略實現的前提是節點根據定價機制真實地定價和報價,因此不具備防策略性。
本文綜合考慮網絡中節點擁有的有限資源,提出一種基于節點狀態的節點協作激勵機制NSIM(Node Status based Incentive Mechanism)。
1 基于節點狀態的激勵機制
NSIM機制中,節點各自管理自己的虛擬貨幣。為了避免資源緊張的節點參與數據轉發,節點的報價是根據節點的剩余能量、剩余空間及財富狀態綜合計算得出的。源節點發送數據時選擇一條轉發價格最低的路徑,并且在發送的數據包中攜帶虛擬貨幣用以支付報酬給該路徑上的節點。源節點至少要保證節點自身的財富值為正數,才可能有足夠的貨幣支付中間節點的報酬。中間節點可以通過轉發數據包獲得報酬,這樣就能激勵每一個節點去增加其財富值。節點中設置了安全模塊管理虛擬貨幣,并且在路由發現和數據包發送過程中引入加密機制,防止節點篡改其他節點的報價以及防止節點隨意增加虛擬貨幣值,保證數據包的完整性和正確性。
本文采用參考文獻[3]中的安全模塊及公鑰機制。
2 節點成本價格計算
節點的成本價格受節點的剩余能量、緩存空間及節點的財富三方面的影響。節點的報價越高,節點被選中的機會越小。當節點的剩余能量過低時,應盡量減少節點被選中的機會,防止節點因能量過早耗盡而退出;當節點緩存空間較小時,也應盡量避免節點被選中,防止丟包發生;當節點財富值較低時,應增加節點被選中的機會,因為只有幫助其他節點轉發信息才能積累財富值,才能支付其他節點幫忙轉發信息的報酬。因此,節點的成本價格綜合這三個方面考慮。
2.1 剩余能量百分比
節點的剩余能量情況用剩余能量百分比表示,定義為:
其中,Ei是節點i的剩余能量百分比;Bi是節點i的剩余空間百分比;Vi是節點i的財富狀態;是三個權重值,表示節點i的剩余能量百分比、剩余空間百分比、財富狀態對于成本價格計算的重要性。
3 數據轉發
3.1 安全模塊維護信息
安全模塊(假設用A表示)存儲了以下幾個數據:A的標識符,A所在節點的貨幣計數器,A的私鑰,由A的制造商簽發的A的公鑰證書,由A的制造商簽發的所有其他安全模塊制造商的公鑰證書,A的制造商的公鑰。
另外,安全模塊維護一個表,用來表示與鄰居節點的關系。這個表包含標識符、會話密鑰、序列號。
3.2 錢包頭和確認信息說明
(1)錢包頭
每個包必須攜帶一些虛擬貨幣值,以支付中間節點轉發包的報酬。這些貨幣值存在錢包頭PH(Purse Header)中,PH位于MAC層頭部和網絡層頭部之間。PH被安全模塊創建和操作。為了防止偽造貨幣值和非法修改貨幣值,PH被加密保護。
假設一個節點的安全模塊A創建了一個PH,PH中包含idA、idB、cA→B、n、PAC。其中,idA為當前節點安全模塊A的標識符;idB為下一跳節點安全模塊B的標識符;cA→B為發送序列號;n為虛擬貨幣值;PAC為錢包認證碼(Purse Authentication Code),其值是g(idA、idB、cA→B、n、network PDU),其中network PDU表示網絡層的協議數據單元,g是帶密鑰的哈希函數,密鑰為kAB,是安全模塊A、B的對稱會話密鑰。
(2)確認信息
當節點nB收到來自節點nA的一個包,它必須發送一個確認信息ACK,確認信息被nB的安全模塊B創建,被放在MAC層確認信息里。ACK包括idA、idB、cA→B、AAC。其中,cA→B指PH中收到的發送序列號;AAC即確認信息認證碼,值為g(PH)。
3.3 包發送協議
假設節點nB收到從nA發來的一個包,并且知道下一步是節點nC。nB首先將收到的PH、下一跳安全模塊C的標識符及network PDU的值交給它的安全模塊B。
B首先驗證PH,通過重新計算PAC,并將計算出的值和收到的值進行對比,如果一樣,則B知道這個PH確實是被A創建的,并且沒有被修改。然后驗證PH中的發送序列號cA→B是否比它收到的接收序列號cB←A大,如果是,則這個PH不是重復的,B將cB←A的值設置為PH中的發送序列號cA→B的值。
成功認證之后,B創建一個新的PH,包括:B和C的標識符、發送序列號cB→C、虛擬貨幣值(PH中貨幣的值減去nB的報價值)、新的PAC。B存儲新的PH,并將其復本交給節點nB。
nB將新的PH附加到包上,傳送給nC。nC必須確認接收到這個包。nC將PH交給它的安全模塊C,C創建ACK并交給nC。nC發送ACK給nB。
當nB收到ACK,交給B,通過ACK中C的標識符和發送序列號,B在內存中尋找到相應的PH,如果B找到相應的PH,則驗證ACK,通過對PH重新計算AAC,并將其與ACK中的值進行對比,如果相等,則B增加貨幣值。將PH從內存中刪除。
4 實驗仿真與結果
4.1 實驗場景和性能指標
本文以ONE[4]作為仿真平臺,驗證NSIM機制的有效性。設置以下三種方案,對比其網絡性能。
(1)SC方案。網絡中沒有自私節點,所有節點都會轉發接收到的消息。
(2)SS方案。網絡中全是自私節點,中間節點拒絕轉發消息,只有當源節點和目的節點在通信范圍內時,才能將消息發送給目的節點。
(3)SS+NSIM方案。網絡中都是自私節點,但是每個節點收到消息后會按照NSIM機制轉發。
4.2 仿真結果及分析
(1)緩存空間、初始能量對分組投遞率的影響
分組投遞率隨緩存空間和初始能量的變化如圖1和圖2所示。由圖1、圖2可見,SC、SS和SS+NSIM的分組投遞率均隨緩存空間、初始能量的增加而增大;當緩存空間和初始能量分別受限時,SS+NSIM可以獲得較高的分組投遞率。此外,當緩存空間和初始能量較少時,SC的分組投遞率低于SS的分組投遞率,或幾乎與SS的分組投遞率相同。
(2)緩存空間、初始能量對平均端到端時延的影響
平均端到端時延隨緩存空間和初始能量的變化如圖3和圖4所示。由圖3、圖4可見,SC和SS+NSIM方案中,隨著緩存空間和初始能量的增加,平均相對時延降低;SS的時延最大,SS+NSIM的時延最小。
本文針對Ad hoc中節點自私性的問題,綜合考慮網絡中節點自身狀態,提出一種基于節點狀態的節點協作激勵機制NSIM。仿真實驗表明,NSIM機制能夠有效地激勵節點參與消息轉發,同時又能解決節點無條件合作帶來的網絡性能退化的問題,從而達到減小時延、降低耗能、提高分組投遞率的目的。
參考文獻
[1] RFC2501.Mobile Ad hoc networking(MANET):routing pro-tocol performance issues and evaluation considerations[S].1999.
[2] 李云,于季弘,尤肖虎.資源受限的機會網絡節點激勵策略研究[J].計算機學報,2013,36(5):947-956.
[3] BUTTYAN L,HUBAUX J.Nuglets:a virtual currency to stimulate cooperation in self-organized ad hoc networks[R].Technical Report EPFL,DSC,2001.
[4] KERIFANEN A,OTT J.The one simulator for DTN protocolevaluation[C].Proceedings of the 2nd International Confer-ence on Simulation Tools and Techniques,Brussels,Belgium,2009:1-10.