摘要:移動自組織網絡(MANET)是當今網絡通信領域的研究熱點,但之前的研究多集中在MANET的物理層、媒體訪問控制(MAC)、路由等方面,對在MANET中提供多媒體通信服務的研究較少。為了利用MANET提供高質量的多媒體通信服務,需要將現有通信架構進行改造,使之適合MANET環境。因此需要利用會話發起協議(SIP)在MANET中構建一個應用層對等網絡(P2P),實現多媒體通信。文章提出了一個新的基于MANET的P2P組網模型——MAP,并在MAP的基礎上,提出了基于MAP的SIP組網架構——MASIP。MASIP可以兼容現有的SIP設施,可以同時提供傳統SIP和MASIP的P2P服務,充分考慮了MANET的自身特點,避免了直接采用SIP或其他P2P架構的缺陷,可以提供靈活、隨時隨地的通信服務。
關鍵詞:移動自組織網絡;會話發起協議;對等網
Abstract: Mobile Ad Hoc Network (MANET) is currently a hot topic in the field of network communications. However, the previous MANET research focuses on the physical layer, Media Access Control (MAC) and routing, and concerns little about delivering multimedia communications services. It is necessary to change the existing communications architecture for offering high-quality multimedia communication services by MANET. Therefore, the Session Initiation Protocol (SIP) is used for building an application-layer Peer-to-Peer (P2P) network in MANET to fulfill multimedia communications. This article proposes a new MANET-based P2P networking model MAP, and a MAP-based SIP networking architecture MASIP. MASIP can be compatible with existing SIP facilities, and offer both traditional SIP and MASIP P2P services. Moreover, it takes MANET’s own features into full consideration, and avoids the defects caused by direct use of SIP or other P2P architecture. Therefore, MASIP can provide flexible communications services at any time and anywhere.
Key words: MANET; SIP; P2P
移動自組織網絡(MANET)[1-2]是當前網絡通信界研究的一個熱點,其主要目的是通過一組帶有無線收發裝置的移動節點組成一個臨時性的、無網絡基礎設施的小型移動網絡,該網絡具有動態拓撲結構,具有臨時性、多跳路由等特征,非常適合于在戰場、緊急救援等需要臨時組網的情況下建立快速、高效的通信網絡。MANET示意圖如圖1所示。但在以往的MANET相關研究中,主要針對的是MANET本身,至于如何利用MANET提供的彈性架構為用戶提供靈活、可擴展、高魯棒性的通信服務,相關研究較少。而在當前熱門的通信協議中,會話發起協議(SIP)[3]是最受關注的一個,因為SIP繼承了Internet中的協議,如超文本傳輸協議(HTTP)、簡單郵件傳輸協議(SMTP),簡潔、高效、可擴展等優點,被認為是最有前途的信令協議。因此,考慮利用SIP在MANET中提供高質量的多媒體通信服務,具有較高的研究價值和實際意義。另外,由于MANET與對等網絡(P2P)存在著相當多的相似之處,在MANET中利用P2P的研究成果也是一個很好的研究方向。
1 基于MANET的P2P組網模型
本文提出一種新的基于MANET的P2P組網模型——MAP,該模型充分考慮了MANET的特點,路由算法簡單,沒有路由繞路問題,適合MANET環境下的P2P應用層組網。
1.1 MAP的設計思想
MANET相對于P2P網絡具有網絡規模小、節點能力(CPU、存儲器、電量等)受限、物理拓撲動態性強等特點,因此應用在MANET上的P2P組網模型必須充分考慮MANET的特征,否則將嚴重限制MANET優勢的發揮。

P2P網絡有4種不同的拓撲結構:中心化拓撲、半分布式拓撲、全分布式結構化拓撲、全分布式非結構化拓撲。下面來看一下哪種P2P網絡拓撲適合布置在MANET環境中。中心化拓撲需要在網絡中布置中央索引服務器,而MANET一般用于快速臨時組網,基本上不可能布置中央索引服務器,因此中心化拓撲不適合基于MANET的P2P組網架構。半分布式拓撲在基于Internet的IP語音(VoIP)服務中有非常出色的表現,但在MANET環境中,各個節點能力有限,如果某個節點被選為超級節點,必將造成該節點電量的迅速耗盡,同時各個節點由于隨機移動,網絡拓撲在不斷變化,無法保證每個節點與超級節點的連接有效性,因此這種拓撲結構也不是很適合MANET環境中的P2P組網。全分布式結構化拓撲是當今在P2P領域最受關注、研究最多的一種拓撲形式,但這種拓撲結構在大規模組網時才能體現其結構化、可擴展的優勢,而MANET是一個臨時組建的小規模無線網絡,因此這種拓撲結構也不是很適合基于MANET的P2P組網。最后只有全分布式非結構化拓撲,這種拓撲與MANET有著更多的相似性,而且維護代價小、資源發現算法簡單,更適合MANET的需求。所以MAP模型采用全分布式非結構化拓撲作為其組網的基本模型。
但以Gnutella系統為代表的全分布式非結構化拓撲由于采用泛洪機制進行資源查詢,在MANET中應用有其固有缺陷:一是泛洪機制會占用大量帶寬,而MANET基于移動無線網絡,帶寬本來就非常有限;二是泛洪機制會消耗移動設備的計算能力,因為每個移動設備都被迫處理所有接收到的請求。
針對全分布式非結構化拓撲在資源定位方面的不足,為了減少泛洪機制造成的額外網絡開銷,MAP采用了一種基于泛洪機制的優化算法:動態N跳索引與基于流言的泛洪機制(DIG)。DIG可以看作是兩種機制:動態N跳索引機制(DNI)和基于流言的泛洪機制(GF)的結合。
1.2 動態N 跳索引機制
泛洪算法的機制是當節點需要查詢某個資源的時候,通過向全網廣播查詢信息獲得所需資源的路徑,為了減少泛洪造成的網絡資源的消耗,讓每個節點維護一張資源索引表,這樣通過本地查詢就可以完成部分資源查詢工作,大大地減少了泛洪造成的額外開銷,但如果網絡動態性高、拓撲結構變化迅速,所維護的索引表有可能提供錯誤的信息,反倒造成更多查詢開銷。因此,DNI的設計思想就是讓P2P網內的每個節點維護一張N跳鄰居節點的資源索引表,并允許每個節點根據周圍環境的動態性實時調整索引表的半徑。當周圍環境動態性高,資源位置變化劇烈時,縮小半徑,提高本地索引信息的準確性;當周圍環境動態性低,資源位置變化不劇烈時,擴大半徑,增加每個節點的索引信息。動態N 跳索引與基于流的泛洪機制如圖2所示。圖中A為示例節點,當網絡動態性高時,節點A的索引范圍如內圓所示,當網絡動態性比較低時,節點A的索引范圍如外圓所示。
通過計算,可以得到,當待查詢的資源在索引范圍內且索引正確時,DNI相對于泛洪算法的性能改善為:
節省查詢時間=RTF-RTDNI=L×t-t=(L-1)t
其中,L為被請求的資源距離請求節點的跳數,t為每個節點搜索本地索引表的平均耗費時間,H為泛洪報文的生存時間(TTL)值,T 為網絡傳輸時延,M為每個節點平均擁有的鄰居節點個數。
但是,只有當節點保存的資源索引表有效并且請求的資源在索引表范圍內,才可以有效的減少泛洪造成的額外開銷。那當索引的資源無效或者請求的資源在索引表范圍之外,怎么辦?對此要采取兩種措施,一是動態調整索引半徑,二是通過泛洪算法進一步查找所需資源。
先來討論怎樣動態調整索引半徑,然后再介紹DIG所使用的優化的泛洪機制GF。
DNI通過計算索引失效率決定是否調整索引半徑,現在分析一下具體的調整標準。
當索引信息失效時,由于根據錯誤的索引信息進行的資源訪問是無效的,因此所消耗的時間和發送的報文都浪費了,還是需要重新進行泛洪查詢,因此相比泛洪算法來說,額外的性能損失是:
如果此時發起資源查詢的節點A的總索引失效率為TIR,要保證查詢時間和發送的報文比泛洪從整體上來說更優越的話,就必需滿足下面的公式。
正確索引節省的時間≥失效索引損失的時間:
由于在一個實際的通信網絡中,網絡時延要大大超過每個節點的本地查詢時間,因此t可以忽略不計,從而正確索引節省的時間可忽略,錯誤索引造成的額外時間損失為2×L×T,與資源距離L 和網絡傳輸時延T 成正比。此時,TIR只與3個參數有關:鄰居節點數M、資源平均距離L和TTL值H,這3個參數的取值取決于具體網絡狀況。因此,要保證索引信息對網絡性能起到正面作用,我們必須保證:
1.3 基于流言的泛洪機制
從上節的分析可以看出,DNI只有當節點保存的資源索引表有效并且請求的資源在索引表范圍內,才可以有效地減少泛洪造成的額外開銷,而當索引的資源無效或者請求的資源在索引表范圍之外時,我們還是不得不使用泛洪算法進行資源的進一步查找,為此,提出GF算法作為優化泛洪效率的一種機制。
流言機制的理論基礎是滲透理論,文獻[4-5]對滲透理論有詳細的介紹。簡單來說,通過流言機制可以使網絡中的節點以一定的概論決定是否向它的鄰居節點廣播當前收到的報文,從而在有效降低網絡負載的情況下獲得與泛洪機制相似的網絡覆蓋性。
基本的流言機制很簡單,源節點以概率1廣播一個消息,當中間節點第一次接收到該消息,以概率p將該消息廣播到鄰居節點,以概率1-p丟棄該消息,若收到重復的消息則直接丟棄,該協議被稱為GOSSIP(p )。文獻[6]提出了4種GOSSIP的變種:
(1)GOSSIP1(p,k),即讓源節點k跳范圍內的節點以概率1傳播消息,k跳范圍外的節點以概率p傳播消息。
(2)GOSSIP2(p 1,k,p 2,n),即讓源節點k跳范圍內的節點以概率1傳播消息,k跳范圍外的節點如果鄰居節點個數少于n,以概率p 2(p 2>p 1)傳播消息,否則以概率p 1傳播消息。
(3)GOSSIP3(p,k,m),即讓源節點k跳范圍內的節點以概率1傳播消息,k跳范圍外的節點首先以概率p計算是否廣播該消息,如果決定廣播,則直接廣播該消息,否則等待一定的時間,如果在這段時間內收到的相同的消息數少于m個,則仍然廣播該消息。該變體的出發點是因為如果消息傳播的概率太小,流言有可能過早消失,防止消息消失的辦法就是讓節點能夠感知消息的傳播情況。假設節點A有n個鄰居節點,當A接收到一個新消息,如果消息不消失,A可以預期所有的鄰居將接收到相同的消息,若消息傳播概率是p,那么A應該接收到大約m(m≤pn)個來自鄰居的相同消息,若A在某個合理的時間間隔內接收到相同消息的數目大大少于m,那么A就可以認為消息正在消失,此時A將廣播該消息。
(4)GOSSIP4(p,k,k’),即從源節點k’跳范圍之外開始以GOSSIP1(p,k)廣播消息。
由于本文的GF機制主要用來解決索引失效或者請求的資源未被索引時的泛洪查詢問題,所以我們采用了兩種GOSSIP算法來分別解決這兩種情況。由于GOSSIP2比GOSSIP1更靈活,并且通過DNI機制,每個節點都知道自己的鄰居節點個數,所以當索引失效時,我們采用GOSSIP2(p 1,k,p 2,n)算法進行泛洪查詢,文獻[6]的仿真結果表明,GOSSIP2(0.6,4,1,6)具有較好的性能,因此我們采用(0.6,4,1,6)作為參數的默認值。而當所請求的資源未被索引時,可以認為該資源在索引半徑之外,所以我們采用GOSSIP4(p,k,k’)算法進行泛洪查詢,參數k’就是索引半徑N,文獻[6]的仿真結果表明,當p =0.65,k =4時,具有較好的性能,因此我們采用(0.65,4,N )作為參數的默認值。由于GOSSIP3(p,k,m)需要等待一段時間才能決定到底要不要廣播消息,在實時應用中這段延時有可能造成呼叫的失敗,因此我們放棄使用GOSSIP3。
由于每個節點是以一定的概率廣播信息,因此很明顯網絡中總的信息發送數量比單純的泛洪要少很多,文獻[6]的仿真結果表明,用GOSSIP算法優化泛洪查詢總體上可以節省35%左右的帶寬消耗。下面我們從數學上定量地分析一下,根據上節的計算,如果采用泛洪算法,一次查詢需要發送的總報文數量為:
即在查詢階段發送的報文總數為個,返回查詢結果發送L個消息報文。
如果采用GOSSIP2(p 1,k,p 2,n)算法,我們設網絡中出現鄰居節點個數少于n 的節點的概率為q,由于前k跳以概率1廣播報文,因此前k跳沒有節約報文發送數量,從第k+1跳開始,每個節點以概率q成為應該以概率p 2發送消息的節點,以概率1-q 成為應該以概率p 1發送消息的節點,即該節點發送消息的概率為 不發送消息的概率為1-Q,所以從第k+1步起節約的報文數MN save為:
由于0≤p 1<p 2≤1,所以0<Q<1,同時H≥L且H必定大于k,所以MN save必定為正值,即GOSSIP2(p 1,k,p 2,n)算法可以節省MN save個消息報文。參數q可以表示網絡的密度,可以認為當網絡密度大時,鄰居節點個數少于n的節點較少,即q 比較小;當網絡密度小時,鄰居節點個數少于n 的節點較多,即q比較大。因為0≤p 1<p 2≤1,所以當p 1、p 2一定時,Q 正比于q。當網絡密度大時,q 較小,因此Q 較小,
MN save較大,可節省的報文數較多;當網絡密度小時,q較大,因此Q 較大,MN save較小,可節省的報文數較少。這和我們的直觀感受是一致的。
如果采用GOSSIP4(p,k,k’)算法,從源節點開始的k’跳沒有采用泛洪機制,一共發送的報文數為Mk’,從k’到k 跳的節點以概率1廣播報文,此時沒有節省帶寬,從k 跳開始以概率p 廣播報文,即以概率1-p不廣播報文,所以節省報文數為第1到第k’跳節省的報文數+第k 跳以后節省的報文數,即:
當H一定時,由于k’ 為了具體實現時簡單,我們考慮將GOSSIP2(p 1,k,p 2,n)和GOSSIP4(p,k,k’)統一起來,提出GOSSIP5(p 1,k,p 2,n,k’),其中各參數的意義與GOSSIP2和GOSSIP4中的意義相同。GOSSIP5的工作方式為,從距離源節點的k’跳的節點開始廣播,k’跳到k跳的節點以概率1廣播報文,k跳之外的節點如果鄰居個數少于n,則概率p 2廣播,否則以概率p 1廣播。很明顯,當k’=0時,GOSSIP5(p 1,k,p 2,n,k’)就等同于GOSSIP2(p 1,k,p 2,n);當n=1時,GOSSIP5(p 1,k,p 2,n,k’)就等同于GOSSIP4(p 1,k,k’)。因此,在實際的設計中,如果用到GOSSIP2(p 1,k,p 2,n),我們就用GOSSIP5(p 1,k,p 2,n,0),如果用到GOSSIP4(p,k,k’),我們就用GOSSIP5(p 1,k,p 2,1,k’)。 到現在為止,我們已經完成了MAP的核心算法DIG的主要設計工作,并分析了相對于全分布式非結構化P2P拓撲通常采用的泛洪算法的性能改善,接下來我們將對SIP進行適當的擴展使之可以完成MAP方式的P2P組網,從而可以在MANET環境中搭建一個SIP通信網絡,完成VoIP、IM等多媒體呼叫服務。 2 基于MAP的SIP架構 本文提出利用SIP實現MANET上的通信應用,為了避免引入新的協議,本文將對SIP進行簡單的擴展,從而實現同時利用SIP來承載P2P通信,該架構稱為MASIP。MASIP節點模塊結構如圖3所示。 每個節點模塊由兩部分組成:SIP用戶代理(SIP UA)模塊、MASIP模塊。SIP UA可以使用現有的SIP客戶端軟件。MASIP模塊的功能包括注冊、請求代理、維護索引表。我們提出代理用戶代理客戶端(AUAC)的概念,當用戶需要通過MASIP發起查詢請求時,就由AUAC構造符合MASIP規范的請求信令發起相應的請求,AUAC還有一個很重要的功能是發起索引更新請求。MASIP模塊里的注冊服務器(Registrar)、Proxy和AUAC都按照MASIP協議棧的規范構造SIP信令,MASIP協議棧是一個經過簡單擴展的SIP協議棧,處理所有與MASIP信令相關的事宜。SIP UA使用現有的SIP客戶端軟件是為了保持兼容性和保障現有的投資和使用習慣,如果用戶知道通信方的地址,SIP支持直接向對方發起呼叫,而一般情況下用戶是不知道對方當前的地址的,所以如果用戶要使用MASIP的Registrar和Proxy功能,只要將SIP客戶端的服務器設置為本機(127.0.0.1:5060,5060是SIP定義的默認監聽端口),并且監聽端口設為除5060外的任意端口(防止與MASIP模塊沖突),MASIP模塊就可以接收到本地UA發出的所有信令,通過對用戶信令的處理,就可以為用戶提供MASIP服務。SIP UA和MASIP模塊是松耦合的,如果只啟動SIP UA,則該UA客戶端可以以傳統SIP流程實現注冊、通信等操作,如果只啟動MASIP模塊則可以作為MASIP邏輯覆蓋網中的一個節點,為其他用戶提供各種路由服務。 本文在數據庫里定義了一張資源索引表——RIT。RIT記錄了本地資源索引和N跳資源索引,當有SIP UA啟動時,向MASIP發送注冊信令(REGISTER),MASIP更新RIT,插入一條跳(Hop)為“0”的資源索引;另外,MASIP會周期性地通過AUAC發送資源更新消息,更新RIT中的N跳資源索引。對于我們這個系統來說,所謂的資源其實主要就是每個UA的統一資源標識符(URI)及其對應的轉交地址(CoA),CoA應該以IP: Port對的形式表示,因此我們定義的RIT的結構如圖4所示。 圖中Hop記錄了該URI距離本機的跳數,下一跳(Next hop)記錄了要到達該URI的下一跳地址,該地址應該與CoA中的IP相同,端口為SIP默認的5060,Expires為該表項的失效時間,單位為秒。 MASIP的主要工作流程有:初始化、RIT更新、用戶查詢,我們將SIP UA的退出和失效作同樣處理,即如果在一定時間內RIT中的相關表項沒有更新,則刪除該表項。 我們定義兩個新的頭域:MASIP_Res(格式為MASIP_Res: res;coa;expires)、Gossip(格式為Gossip: p 1;k;p 2;n ),一個新的選項標簽Masip,用于支持MASIP的相關操作。 由于MASIP架構中,每個節點的SIP UA都以本地注冊的方式連入網絡,如果MASIP模塊收到一個非本地REGISTER消息,必定是網絡中某個節點的查詢消息,因此我們可以將一個MASIP模塊收到一個REGISTER消息的處理過程歸納如下: (1)判斷發起請求的URI是否在本地,如果是,則是注冊或更新消息,將相應信息插入本地RIT并退出,否則執行步驟(2)。 (2)判斷發起請求的節點跳數是否在本機索引范圍內,如果是,執行步驟(3),否則執行步驟(4)。 (3)判斷被請求的URI是否已被索引,如果是,提取相應消息并更新RIT,否則將相應消息插入RIT,執行步驟(4)。 (4)判斷TTL是否大于“0”,如果是,繼續廣播并執行步驟(5),否則直接執行步驟(5)。 (5)將本地資源信息插入200 OK消息并返回給發起請求的節點然后退出。 一個MASIP Proxy收到一個非REGISTER的報文,要么按照標準SIP的方式將其路由到下一跳地址,要么按照MASIP的方式泛洪查詢目的地址,因此我們可以歸納出MASIP Proxy收到一個非REGISTER消息的處理過程如下所示: (1)判斷是否是泛洪消息,如果是,執行步驟(2),否則執行步驟(5)。 (2)判斷被請求URI是否被索引,如果被索引,執行步驟(3),否則執行步驟(4)。 (3)將本機代理地址插入Via頭域并將消息轉發至下一跳節點,啟動計時器,如果有響應,則將響應轉發給上一跳節點并退出,否則返回信息“408 Request Timeout”并退出。 (4)返回信息“404 Not Found”并退出。 (5)判斷被請求URI是否是本地資源,如果是,執行(6),否則執行(7)。 (6)將請求消息轉發至相應地址,如果有響應,則將響應轉發給上一跳節點并退出,否則執行(7)。 (7)判斷發起請求的節點跳數是否小于Gossip頭域中的k 參數,如果小于k,則廣播該消息,否則執行(8)。 (8)判斷本節點的鄰居節點個數是否小于Gossip頭域中的n 參數,如果小于n,則以Gossip頭域中的p 2概率廣播該消息并退出,否則以Gossip頭域中的p 1概率廣播該消息并退出。 3 結束語 MANET是下一代通信網的重要組成部分,能夠為用戶提供無所不在的通信服務。SIP是3GPP以及3GPP2在3G通信系統中采用的IMS核心協議,在下一代通信中占有非常重要的地位。因此,考慮將SIP和MANET相結合,為用戶提供高效的通信服務具有重要意義。本文提出了一個新的基于MANET的P2P組網模型:MAP,在MAP的基礎上,本文進一步提出了基于MAP的SIP組網架構:MASIP。MASIP利用對SIP的擴展,使用SIP在應用層構建基于MAP的P2P網絡:MASIP,MASIP通過增加兩個頭域MASIP_Res、Gossip和一個資源標簽Masip,實現了對MASIP相關機制的有效支持。MASIP通過與SIP UA的分離實現,可以利用現有SIP UA實現MASIP組網,有效兼容了標準SIP和MASIP。本文的設計可以兼容現有的SIP設施,可以同時提供傳統SIP和MASIP的P2P服務,充分考慮了MANET的自身特點,避免了直接采用SIP或其他P2P架構的缺陷,可以提供靈活、隨時隨地的通信服務。但由于時間關系,本設計還有很多沒有考慮到的方面,例如用戶認證機制、抵御外部攻擊、媒體流的服務質量(QoS)等,這些問題的解決有待于今后更深入的研究。 在MANET環境中提供高質量的多媒體服務必將吸引越來越多研究者的目光,只有將MANET與現有的通信應用結合起來,才能真正為用戶提供無所不在的通信服務。由于MANET的全分布式拓撲、無中心控制的特點,使得在MANET中提供安全性變得異常困難,因此在今后的研究工作中,在MANET中提供安全的通信將成為一個有意義的研究方向。另外,MANET的多跳路由機制使得路由發現時間較長,并且由于動態拓撲特征,路徑很不穩定,由于多媒體業務對延時較敏感,怎樣提高路由發現效率及其穩定性也是一個需要盡快解決的研究課題。運營商如果要介入MANET的運營,則怎樣在一個全分布式拓撲的環境中提高網絡的可控性、完善收費機制,也是一個需要思考的問題。 總之,MANET是一個很有前途的組網模式,其先天性的P2P特征使得我們看到了有可能在電信行業發生類似于Internet世界中的“草根”革命,也許有一天,“草根”電信會成為我們生活中的一部分,“人人為我,我為人人”的思想將深入人心,每個人都能享受到自由、低價、無所不在的通信。 4 參考文獻 [1] FRODIGH M, JOHANSSON P. Wireless Ad hoc networking:the art of networking without a network [J]. Ericsson Review, 2000 (4):248-262. [2] 王金龍, 王呈貴, 吳啟暉, 等. Ad Hoc移動無線網絡 [M]. 北京:國防工業出版社, 2004. [3] ROSENBERG J, SCHULZRINNE H, CAMANILO G. SIP: Session Initiation Protocol [R]. RFC3261. 2002. [4] GRIMMETT G. Percolation [M]. New York, NY, USA: Springer-Verlag, 1989. [5] MEESTER R, ROY R. Continuum percolation [M]. Cambridge, UK: Cambridge University Press, 1991. [6] HAAS Z J, HALPERN J Y, LI L. Gossip-based Ad Hoc routing [C]// Proceedings of IEEE INFOCOM: Vol3, Jun 23-27, 2002, New York, NY,USA. Piscataway, NJ,USA:IEEE, 2003:1707-1716. 收稿日期:2007-04-03 “本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”。
