P2P SIP原理和應(yīng)用
1 SIP網(wǎng)絡(luò)
會話發(fā)起協(xié)議(SIP)是互聯(lián)網(wǎng)工程任務(wù)組(IETF)制定的多媒體通信應(yīng)用層控制協(xié)議,用于建立、修改和終止多媒體會話。SIP協(xié)議借鑒了超文本傳輸協(xié)議(HTTP)、簡單郵件傳輸協(xié)議(SMTP)等,采用基于文本協(xié)議控制方式,支持代理、重定向、登記定位用戶等功能[1]。
SIP憑借其簡單、易于擴展、便于實現(xiàn)等諸多優(yōu)點而得到了廣泛應(yīng)用。3GPP等標準化組織已經(jīng)選擇SIP作為下一代網(wǎng)絡(luò)(NGN)和3G多媒體子系統(tǒng)(IMS)中的通信協(xié)議,業(yè)界已廣泛應(yīng)用了多種基于SIP的多媒體業(yè)務(wù)[2]。
SIP網(wǎng)絡(luò)采用客戶端/服務(wù)器(C/S)的網(wǎng)絡(luò)架構(gòu),按域劃分用戶。每個域的SIP服務(wù)器管理著本域內(nèi)的用戶,用戶在使用SIP業(yè)務(wù)時,需要注冊到SIP服務(wù)器。各用戶之間的通信需要由SIP服務(wù)器來進行路由,因此存在SIP服務(wù)器的“單點故障”和“性能瓶頸”等問題。
目前有多種提升SIP服務(wù)器處理能力的方案,如采用高處理能力的服務(wù)器、采用多服務(wù)器間的N+1或熱備份方案,或者采用多服務(wù)器負載均衡技術(shù)。
2 P2P技術(shù)在互聯(lián)網(wǎng)上的應(yīng)用
P2P技術(shù)本身并不是新的概念或技術(shù),它的原理是將網(wǎng)絡(luò)上的通信節(jié)點作為平等的通信終端,任意兩個通信節(jié)點之間既互為“服務(wù)器”又互為“客戶端”。這一點與互聯(lián)網(wǎng)的基礎(chǔ)協(xié)議TCP/IP一致,TCP/IP也沒有服務(wù)器或客戶端的概念,任意兩個節(jié)點之間是平等通信的。隨著互聯(lián)網(wǎng)應(yīng)用的擴展,P2P技術(shù)得到了廣泛的應(yīng)用。P2P網(wǎng)絡(luò)采用分布式對象定位機制,使得信息或媒體流在節(jié)點之間直接傳送,降低了中轉(zhuǎn)開銷,從而提高了網(wǎng)絡(luò)的可擴展性,節(jié)省了網(wǎng)絡(luò)帶寬。
很多基于P2P技術(shù)如共享MP3格式音樂文件的Napster服務(wù)、@Home">SETI@Home計劃,尤其是Skype應(yīng)用的成功,使得P2P技術(shù)成為業(yè)界關(guān)注的焦點。
3 P2P網(wǎng)絡(luò)架構(gòu)
P2P 網(wǎng)絡(luò)的技術(shù)核心是解決分布式節(jié)點之間的資源定位,這需要合適的網(wǎng)絡(luò)架構(gòu),發(fā)展至今共經(jīng)歷了3代網(wǎng)絡(luò)架構(gòu)。
3.1集中目錄式網(wǎng)絡(luò)架構(gòu)
最早出現(xiàn)的P2P應(yīng)用模式就是集中目錄式P2P網(wǎng)絡(luò),Napster是該架構(gòu)模型最典型的代表。用戶需要登錄到中心目錄服務(wù)器,通過目錄服務(wù)器查詢存儲各個節(jié)點的資源信息。這種結(jié)構(gòu)的最大特點是所有的資料都是存貯在各個用戶節(jié)點中。用戶獲取資源時,節(jié)點根據(jù)網(wǎng)絡(luò)流量和延遲等信息選擇合適的節(jié)點建立直接連接,而不必經(jīng)過中央服務(wù)器。
3.2純P2P網(wǎng)絡(luò)架構(gòu)
純P2P網(wǎng)絡(luò)架構(gòu)采用的是廣播式的P2P模型。在這種架構(gòu)下,沒有集中的中央服務(wù)器,每個用戶節(jié)點隨機接入到網(wǎng)絡(luò),并與自己相鄰的一組節(jié)點通過端到端連接構(gòu)成一個邏輯覆蓋的網(wǎng)絡(luò)。節(jié)點之間的內(nèi)容查詢和內(nèi)容共享都是直接通過相鄰節(jié)點以廣播方式接力傳遞。為了避免循環(huán)搜索現(xiàn)象,每個節(jié)點會記錄其搜索軌跡。
Gnutella模型是現(xiàn)在應(yīng)用最廣泛的純P2P網(wǎng)絡(luò)架構(gòu),采用泛洪式的節(jié)點搜索算法,解決了網(wǎng)絡(luò)結(jié)構(gòu)中心化的問題,擴展性和容錯性較好。但是Gnutella網(wǎng)絡(luò)可用性較差,易被病毒攻擊,并且極大地消耗了網(wǎng)絡(luò)帶寬,很容易造成網(wǎng)絡(luò)擁塞與不穩(wěn)定。
3.3混合式P2P網(wǎng)絡(luò)架構(gòu)
混合式P2P網(wǎng)絡(luò)在純P2P網(wǎng)絡(luò)架構(gòu)基礎(chǔ)上加入了超級節(jié)點的概念。在這種網(wǎng)絡(luò)下,將節(jié)點按能力 (計算能力、內(nèi)存大小、連接帶寬、網(wǎng)絡(luò)滯留時間等)不同區(qū)分為普通節(jié)點和超級節(jié)點兩類。超級節(jié)點與其臨近的若干普通節(jié)點之間構(gòu)成一個自治的簇,簇內(nèi)采用基于集中目錄式的P2P模式,而整個P2P網(wǎng)絡(luò)中各個不同的簇之間再通過純P2P的模式將超級節(jié)點相連。有時甚至也可以在各個超級節(jié)點之間再次選取性能最優(yōu)的節(jié)點,或者另外引入一新的性能最優(yōu)的節(jié)點作為索引節(jié)點來保存整個網(wǎng)絡(luò)中可以利用的超級節(jié)點信息,并且負責維護整個網(wǎng)絡(luò)的結(jié)構(gòu)。
普通節(jié)點的文件搜索先在本簇內(nèi)進行,只有查詢結(jié)果不充分時再通過超級節(jié)點之間進行有限的泛洪。同時,每個簇中的超級節(jié)點監(jiān)控著所有普通節(jié)點的行為,從而確保一些惡意的攻擊行為能在網(wǎng)絡(luò)局部得到控制,也在一定程度上提高了整個網(wǎng)絡(luò)的負載平衡。
混合式P2P網(wǎng)絡(luò)架構(gòu)綜合了集中目錄式P2P快速查找和純P2P去中心化的優(yōu)勢,Kazaa模型是P2P混合模型的典型代表。
然而,由于超級節(jié)點本身的脆弱性也可能導致其簇內(nèi)的節(jié)點處于孤立狀態(tài),因此這種局部索引的方法仍然存在一定的局限性。這導致了結(jié)構(gòu)化的P2P網(wǎng)絡(luò)模型的出現(xiàn)。
3.4結(jié)構(gòu)化P2P網(wǎng)絡(luò)架構(gòu)
結(jié)構(gòu)化P2P架構(gòu)采用純分布式的消息傳遞機制,根據(jù)關(guān)鍵字進行節(jié)點查找定位。目前結(jié)構(gòu)化網(wǎng)絡(luò)的主流查詢定位方法是采用分布式哈希表(DHT)技術(shù),這也是目前擴展性最好的P2P路由方式之一。
DHT將節(jié)點管理的資源或文檔作為“關(guān)鍵字”,將節(jié)點的IP地址作為“數(shù)值”,組成關(guān)鍵字-數(shù)值對,并能根據(jù)關(guān)鍵字查找數(shù)值。DHT技術(shù)中的存儲和查詢是分布在多個節(jié)點上進行的,對單一節(jié)點的依賴性低,容易實現(xiàn)網(wǎng)絡(luò)上任一節(jié)點的無序加入或退出,對整個網(wǎng)絡(luò)性能影響較低。
DHT各節(jié)點并不要維護整個網(wǎng)絡(luò)的信息,只需存儲其臨近后繼節(jié)點信息,因此通過較少的路由就可以到達目標節(jié)點。DHT又取消了泛洪算法,有效地減少了節(jié)點信息的發(fā)送操作數(shù)量,增強了P2P網(wǎng)絡(luò)的擴展性。
在實際應(yīng)用中,出于冗余度以及延時的考慮,大部分DHT總是在節(jié)點的虛擬標識與關(guān)鍵字最接近的節(jié)點上備份冗余信息,這樣也避免了單一節(jié)點失效的問題。
但是基于DHT的網(wǎng)絡(luò)拓撲結(jié)構(gòu)的維護和修復也比Gnutella模型和Kazaa模型等無結(jié)構(gòu)的系統(tǒng)要復雜得多,有時甚至出現(xiàn)“繞路”的問題。
目前基于DHT的研究項目主要還集中在具有相同能力的較小規(guī)模的網(wǎng)絡(luò)中,對于大規(guī)模的Internet部署還在研究中。同時大量實際的P2P應(yīng)用還大都是基于無結(jié)構(gòu)的拓撲和泛洪廣播機制,采用DHT方式的P2P系統(tǒng)缺乏在Internet中大規(guī)模真實部署的成功實例。
4 P2PSIP網(wǎng)絡(luò)架構(gòu)
P2P網(wǎng)絡(luò)[3]的優(yōu)點是沒有中心服務(wù)器,節(jié)點間直接通信、交換資源和文檔,并且可以擴展到分布式的負載分擔網(wǎng)絡(luò)。從理論分析看,P2P網(wǎng)絡(luò)可以降低C/S結(jié)構(gòu)網(wǎng)絡(luò)中的“單點故障”和“性能瓶頸”問題。作為C/S結(jié)構(gòu)網(wǎng)絡(luò)一種的SIP網(wǎng)絡(luò)也可以利用P2P技術(shù)來實現(xiàn),并且具有以下特點:
去中心化,避免中心SIP服務(wù)器的單點故障隱患;
增強SIP網(wǎng)絡(luò)的擴展性,降低網(wǎng)絡(luò)中的存儲、計算、帶寬等性能瓶頸;
提高網(wǎng)絡(luò)的高可用性,采用P2P網(wǎng)絡(luò)全分布的架構(gòu)來提高網(wǎng)絡(luò)的健壯性;
降低成本,充分利用節(jié)點閑置的處理能力、存儲和帶寬資源。
P2P SIP網(wǎng)絡(luò)利用SIP協(xié)議的擴展和承載來完成P2P層疊加網(wǎng)絡(luò)節(jié)點的加入、定位、查找和路由,降低P2P私有協(xié)議帶來的擴展性和兼容性問題,實現(xiàn)不同P2P網(wǎng)絡(luò)的互通。
P2P SIP網(wǎng)絡(luò)以SIP協(xié)議為基礎(chǔ),無需大規(guī)模改動現(xiàn)有設(shè)備,并且無需改動VoIP終端設(shè)備,只要升級現(xiàn)有SIP服務(wù)器的軟件,即可實現(xiàn)SIP網(wǎng)絡(luò)的P2P化,提升網(wǎng)絡(luò)的處理能力和可用性。
在P2P SIP網(wǎng)絡(luò)中,原來管理一個域的單節(jié)點SIP服務(wù)器變成多臺P2P SIP服務(wù)器(稱為PN節(jié)點),PN之間通過P2P機制互聯(lián),彼此分擔負載,構(gòu)成一個邏輯上的重疊網(wǎng)絡(luò)。每個節(jié)點將和它相連的下一節(jié)點當作下一跳PN可以承擔原來服務(wù)中壓力最大的部分,比如注冊、代理和計費。用戶連接到任一PN,都可以有效使用服務(wù)。部分PN的宕機或故障不會影響到整個P2P SIP網(wǎng)絡(luò)的正常運行。當需要擴大P2P SIP網(wǎng)絡(luò)的容量,加入新的PN就可以了[4]。
P2P SIP網(wǎng)絡(luò)有兩個重要操作:一是對P2P節(jié)點的操作,包括節(jié)點注冊和離開,實現(xiàn)重疊網(wǎng)絡(luò)的維護[5];另一個是用戶層面的操作,包括用戶的注冊、資源定位、會話建立等。
4.1P2PSIP節(jié)點操作
P2P節(jié)點在地理上散布各處,邏輯上根據(jù)選用的P2P機制的不同可以是環(huán)形的(Chord協(xié)議)、矩陣的(CAN協(xié)議)、網(wǎng)狀的(Pastry協(xié)議和Tapestry協(xié)議)?;镜腜2P節(jié)點至少包括注冊和代理兩種功能。從運營角度出發(fā),還需要部署全局認證服務(wù)器、全局賬務(wù)服務(wù)器和網(wǎng)管服務(wù)器等等,用于管理全部用戶和所有節(jié)點。
每個節(jié)點在網(wǎng)絡(luò)中都有一個節(jié)點ID號,該ID號由節(jié)點IP地址和端口號進行哈希運算獲得,節(jié)點信息被存儲在一張DHT表中。每個節(jié)點負責存儲對應(yīng)信息,如用戶注冊信息等。
當一個節(jié)點申請加入網(wǎng)絡(luò)中時,先定位一個缺省的網(wǎng)絡(luò)節(jié)點,并發(fā)送SIP REGISTER消息給該缺省節(jié)點,申請加入網(wǎng)絡(luò)。如果該缺省節(jié)點是負責對應(yīng)區(qū)域的節(jié)點,則響應(yīng)200OK消息,并允許新加入節(jié)點加入網(wǎng)絡(luò)。響應(yīng)消息中包含鄰近節(jié)點的信息。
如果缺省節(jié)點不是負責對應(yīng)信息區(qū)域的節(jié)點,則通過SIP 302響應(yīng)提供新加入節(jié)點前轉(zhuǎn)的網(wǎng)絡(luò)節(jié)點。新加入節(jié)點向前轉(zhuǎn)節(jié)點發(fā)送SIP REGISTER消息,申請加入。前轉(zhuǎn)節(jié)點根據(jù)自己是否是負責該區(qū)域的節(jié)點對REGISTER消息進行處理。上述過程一直持續(xù)到找到對應(yīng)的節(jié)點為止。
當新加入節(jié)點成功加入網(wǎng)絡(luò)后,新加入節(jié)點存儲所需要負責的用戶信息如用戶注冊信息,同時通知網(wǎng)絡(luò)中其它節(jié)點更新自己的信息。
4.2P2PSIP用戶注冊操作
在P2P SIP網(wǎng)絡(luò)中,每個用戶被看成是一個資源,以資源ID標識,資源ID由資源名稱經(jīng)哈希運算獲得。
當用戶申請注冊時,首先生成對應(yīng)的資源ID。用戶所在的節(jié)點通過查找路由表,找到一個資源ID和節(jié)點ID最接近的節(jié)點,并向該節(jié)點發(fā)送REGISTER消息。如果該最近節(jié)點是負責該資源ID的節(jié)點,它會將用戶名稱和IP地址存儲在注冊表中,并回送200OK消息給用戶節(jié)點。
如果該最近節(jié)點不是負責該資源ID的節(jié)點,則通過302消息通知用戶節(jié)點需要注冊到下一節(jié)點。下一節(jié)點按照和上一節(jié)點同樣的方式進行處理,直至找到對應(yīng)的處理節(jié)點。對應(yīng)的處理節(jié)點發(fā)送200OK消息給用戶節(jié)點,并存儲用戶的名字和IP地址。
4.3P2PSIP會話建立操作
用戶注冊成功后,可以和其他用戶進行會話。在會話前,會議發(fā)起方需要確定會話接收方的地址。發(fā)起方首先生成接收方的資源ID,并確定一個和資源ID最近的節(jié)點。然后發(fā)送INVITE消息給該最近節(jié)點,直到查找到負責接收方的節(jié)點。如果接收方用戶沒有注冊,則負責節(jié)點通知發(fā)送方停止會話;如果接收方已正常注冊,負責節(jié)點將接收方用戶的IP地址通過302響應(yīng)通過發(fā)送方。
在獲得了接收方的IP地址后,發(fā)起方和接收方就可以按照傳統(tǒng)SIP協(xié)議的方式建立會議。
5 結(jié)束語
利用P2P技術(shù)的分布處理和無中心的架構(gòu)來建設(shè)SIP網(wǎng)絡(luò)是網(wǎng)絡(luò)發(fā)展的一個重要方向。從現(xiàn)在的P2P SIP網(wǎng)絡(luò)的應(yīng)用和實踐看,這種結(jié)合方案還有很多挑戰(zhàn),主要表現(xiàn)在:
P2P技術(shù)還不成熟,資源動態(tài)分布的優(yōu)化,資源恢復技術(shù)還在進一步研究中?,F(xiàn)有的P2P應(yīng)用主要還是集中在非實時的互聯(lián)網(wǎng)數(shù)據(jù)應(yīng)用上,對于實時的通信節(jié)點,以及資源的快速分配定位,還有很多需要P2PSIP網(wǎng)絡(luò)研究的領(lǐng)域。
P2P的成功應(yīng)用目前還只是在互聯(lián)網(wǎng)領(lǐng)域的非實時應(yīng)用,對于SIP應(yīng)用,特別是實時通信要求高的呼叫處理而言,基于P2P的SIP網(wǎng)絡(luò)還需要進行優(yōu)化。P2PSIP網(wǎng)絡(luò)利用在去中心化的節(jié)點群集來代替原SIP網(wǎng)絡(luò)中的服務(wù)器,現(xiàn)有的P2P技術(shù)發(fā)現(xiàn),在P2PSIP網(wǎng)絡(luò)中對等通信方的查找時間原大于普通SIP網(wǎng)絡(luò)的對等通信方查找時間。實驗發(fā)現(xiàn),兩種網(wǎng)絡(luò)的查找實驗時間比超過4倍。
P2P對于帶寬和資源的消耗,路由效率低下是P2P技術(shù)取得成功應(yīng)用的難點?,F(xiàn)有的成功的P2P應(yīng)用大都利用“免費”的互聯(lián)網(wǎng)資源,包括帶寬、存儲、計算能力等。對于一個可運營可管理的P2PSIP網(wǎng)絡(luò)而言,需要提高P2P網(wǎng)絡(luò)技術(shù)對資源的使用效率。
P2PSIP網(wǎng)絡(luò)結(jié)構(gòu)復雜,對于運營商的管理帶來了很大的困難。如何實現(xiàn)可運營可管理的P2PSIP網(wǎng)絡(luò)是目前業(yè)界的一個重要課題。
評論