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