摘要:SIP協議是當前VoIP和IM等多媒體協議的呼叫建立協議。P2P技術提供了分布式的網絡架構中通信節點之間得對等通信能力,P2P網絡架構經歷了集中目錄式網絡架構、純P2P網絡架構、混合式P2P網絡架構和結構化P2P網絡架構。通過引入P2P技術,SIP網絡的能力可以得到增強。P2P SIP網絡主要有兩個重要的操作:對P2P節點的操作和用戶層面的操作。
關鍵詞:SIP;P2P;P2P SIP 網絡
Abstract:Session Initiation Protocol(SIP) is a fundamental protocol to initiate multi-media conversation such as Instant Messaging(IM) and Voice over IP(VOIP). P2P technologies realize P2P communications to spread in distributed networks. The P2P network architecture undergoes centralized directory network architecture, pure P2P network architecture, mixed P2P network architecture, and structural P2P network architecture. By incorporating P2P technologies, SIP network can be improved. There are two kinds of key operations for P2P SIP network: operations on P2P nodes and operations for users.
Key words: SIP; P2P; P2P SIP network
1 SIP網絡
會話發起協議(SIP)是互聯網工程任務組(IETF)制定的多媒體通信應用層控制協議,用于建立、修改和終止多媒體會話。SIP協議借鑒了超文本傳輸協議(HTTP)、簡單郵件傳輸協議(SMTP)等,采用基于文本協議控制方式,支持代理、重定向、登記定位用戶等功能[1]。
SIP憑借其簡單、易于擴展、便于實現等諸多優點而得到了廣泛應用。3GPP等標準化組織已經選擇SIP作為下一代網絡(NGN)和3G多媒體子系統(IMS)中的通信協議,業界已廣泛應用了多種基于SIP的多媒體業務[2]。
SIP網絡采用客戶端/服務器(C/S)的網絡架構,按域劃分用戶。每個域的SIP服務器管理著本域內的用戶,用戶在使用SIP業務時,需要注冊到SIP服務器。各用戶之間的通信需要由SIP服務器來進行路由,因此存在SIP服務器的“單點故障”和“性能瓶頸”等問題。
目前有多種提升SIP服務器處理能力的方案,如采用高處理能力的服務器、采用多服務器間的N+1或熱備份方案,或者采用多服務器負載均衡技術。
2 P2P技術在互聯網上的
應用
P2P技術本身并不是新的概念或技術,它的原理是將網絡上的通信節點作為平等的通信終端,任意兩個通信節點之間既互為“服務器”又互為“客戶端”。這一點與互聯網的基礎協議TCP/IP一致,TCP/IP也沒有服務器或客戶端的概念,任意兩個節點之間是平等通信的。隨著互聯網應用的擴展,P2P技術得到了廣泛的應用。P2P網絡采用分布式對象定位機制,使得信息或媒體流在節點之間直接傳送,降低了中轉開銷,從而提高了網絡的可擴展性,節省了網絡帶寬。
很多基于P2P技術如共享MP3格式音樂文件的Napster服務、SETI@Home計劃,尤其是Skype應用的成功,使得P2P技術成為業界關注的焦點。
3 P2P網絡架構
P2P 網絡的技術核心是解決分布式節點之間的資源定位,這需要合適的網絡架構,發展至今共經歷了3代網絡架構。
3.1 集中目錄式網絡架構
最早出現的P2P應用模式就是集中目錄式P2P網絡,Napster是該架構模型最典型的代表。用戶需要登錄到中心目錄服務器,通過目錄服務器查詢存儲各個節點的資源信息。這種結構的最大特點是所有的資料都是存貯在各個用戶節點中。用戶獲取資源時,節點根據網絡流量和延遲等信息選擇合適的節點建立直接連接,而不必經過中央服務器。
3.2 純P2P網絡架構
純P2P網絡架構采用的是廣播式的P2P模型。在這種架構下,沒有集中的中央服務器,每個用戶節點隨機接入到網絡,并與自己相鄰的一組節點通過端到端連接構成一個邏輯覆蓋的網絡。節點之間的內容查詢和內容共享都是直接通過相鄰節點以廣播方式接力傳遞。為了避免循環搜索現象,每個節點會記錄其搜索軌跡。
Gnutella模型是現在應用最廣泛的純P2P網絡架構,采用泛洪式的節點搜索算法,解決了網絡結構中心化的問題,擴展性和容錯性較好。但是Gnutella網絡可用性較差,易被病毒攻擊,并且極大地消耗了網絡帶寬,很容易造成網絡擁塞與不穩定。
3.3 混合式P2P網絡架構
混合式P2P網絡在純P2P網絡架構基礎上加入了超級節點的概念。在這種網絡下,將節點按能力 (計算能力、內存大小、連接帶寬、網絡滯留時間等)不同區分為普通節點和超級節點兩類。超級節點與其臨近的若干普通節點之間構成一個自治的簇,簇內采用基于集中目錄式的P2P模式,而整個P2P網絡中各個不同的簇之間再通過純P2P的模式將超級節點相連。有時甚至也可以在各個超級節點之間再次選取性能最優的節點,或者另外引入一新的性能最優的節點作為索引節點來保存整個網絡中可以利用的超級節點信息,并且負責維護整個網絡的結構。
普通節點的文件搜索先在本簇內進行,只有查詢結果不充分時再通過超級節點之間進行有限的泛洪。同時,每個簇中的超級節點監控著所有普通節點的行為,從而確保一些惡意的攻擊行為能在網絡局部得到控制,也在一定程度上提高了整個網絡的負載平衡。
混合式P2P網絡架構綜合了集中目錄式P2P快速查找和純P2P去中心化的優勢,Kazaa模型是P2P混合模型的典型代表。
然而,由于超級節點本身的脆弱性也可能導致其簇內的節點處于孤立狀態,因此這種局部索引的方法仍然存在一定的局限性。這導致了結構化的P2P網絡模型的出現。
3.4 結構化P2P網絡架構
結構化P2P架構采用純分布式的消息傳遞機制,根據關鍵字進行節點查找定位。目前結構化網絡的主流查詢定位方法是采用分布式哈希表(DHT)技術,這也是目前擴展性最好的P2P路由方式之一。
DHT將節點管理的資源或文檔作為“關鍵字”,將節點的IP地址作為“數值”,組成關鍵字-數值對,并能根據關鍵字查找數值。DHT技術中的存儲和查詢是分布在多個節點上進行的,對單一節點的依賴性低,容易實現網絡上任一節點的無序加入或退出,對整個網絡性能影響較低。
DHT各節點并不要維護整個網絡的信息,只需存儲其臨近后繼節點信息,因此通過較少的路由就可以到達目標節點。DHT又取消了泛洪算法,有效地減少了節點信息的發送操作數量,增強了P2P網絡的擴展性。
在實際應用中,出于冗余度以及延時的考慮,大部分DHT總是在節點的虛擬標識與關鍵字最接近的節點上備份冗余信息,這樣也避免了單一節點失效的問題。
但是基于DHT的網絡拓撲結構的維護和修復也比Gnutella模型和Kazaa模型等無結構的系統要復雜得多,有時甚至出現“繞路”的問題。
目前基于DHT的研究項目主要還集中在具有相同能力的較小規模的網絡中,對于大規模的Internet部署還在研究中。同時大量實際的P2P應用還大都是基于無結構的拓撲和泛洪廣播機制,采用DHT方式的P2P系統缺乏在Internet中大規模真實部署的成功實例。
4 P2P SIP網絡架構
P2P網絡[3]的優點是沒有中心服務器,節點間直接通信、交換資源和文檔,并且可以擴展到分布式的負載分擔網絡。從理論分析看,P2P網絡可以降低C/S結構網絡中的“單點故障”和“性能瓶頸”問題。作為C/S結構網絡一種的SIP網絡也可以利用P2P技術來實現,并且具有以下特點:
去中心化,避免中心SIP服務器的單點故障隱患;
增強SIP網絡的擴展性,降低網絡中的存儲、計算、帶寬等性能瓶頸;
提高網絡的高可用性,采用P2P網絡全分布的架構來提高網絡的健壯性;
降低成本,充分利用節點閑置的處理能力、存儲和帶寬資源。
P2P SIP網絡利用SIP協議的擴展和承載來完成P2P層疊加網絡節點的加入、定位、查找和路由,降低P2P私有協議帶來的擴展性和兼容性問題,實現不同P2P網絡的互通。
P2P SIP網絡以SIP協議為基礎,無需大規模改動現有設備,并且無需改動VoIP終端設備,只要升級現有SIP服務器的軟件,即可實現SIP網絡的P2P化,提升網絡的處理能力和可用性。
在P2P SIP網絡中,原來管理一個域的單節點SIP服務器變成多臺P2P SIP服務器(稱為PN節點),PN之間通過P2P機制互聯,彼此分擔負載,構成一個邏輯上的重疊網絡。每個節點將和它相連的下一節點當作下一跳PN可以承擔原來服務中壓力最大的部分,比如注冊、代理和計費。用戶連接到任一PN,都可以有效使用服務。部分PN的宕機或故障不會影響到整個P2P SIP網絡的正常運行。當需要擴大P2P SIP網絡的容量,加入新的PN就可以了[4]。
P2P SIP網絡有兩個重要操作:一是對P2P節點的操作,包括節點注冊和離開,實現重疊網絡的維護[5];另一個是用戶層面的操作,包括用戶的注冊、資源定位、會話建立等。
4.1 P2P SIP節點操作
P2P節點在地理上散布各處,邏輯上根據選用的P2P機制的不同可以是環形的(Chord協議)、矩陣的(CAN協議)、網狀的(Pastry協議和Tapestry協議)。基本的P2P節點至少包括注冊和代理兩種功能。從運營角度出發,還需要部署全局認證服務器、全局賬務服務器和網管服務器等等,用于管理全部用戶和所有節點。
每個節點在網絡中都有一個節點ID號,該ID號由節點IP地址和端口號進行哈希運算獲得,節點信息被存儲在一張DHT表中。每個節點負責存儲對應信息,如用戶注冊信息等。
當一個節點申請加入網絡中時,先定位一個缺省的網絡節點,并發送SIP REGISTER消息給該缺省節點,申請加入網絡。如果該缺省節點是負責對應區域的節點,則響應200OK消息,并允許新加入節點加入網絡。響應消息中包含鄰近節點的信息。
如果缺省節點不是負責對應信息區域的節點,則通過SIP 302響應提供新加入節點前轉的網絡節點。新加入節點向前轉節點發送SIP REGISTER消息,申請加入。前轉節點根據自己是否是負責該區域的節點對REGISTER消息進行處理。上述過程一直持續到找到對應的節點為止。
當新加入節點成功加入網絡后,新加入節點存儲所需要負責的用戶信息如用戶注冊信息,同時通知網絡中其它節點更新自己的信息。
4.2 P2P SIP用戶注冊操作
在P2P SIP網絡中,每個用戶被看成是一個資源,以資源ID標識,資源ID由資源名稱經哈希運算獲得。
當用戶申請注冊時,首先生成對應的資源ID。用戶所在的節點通過查找路由表,找到一個資源ID和節點ID最接近的節點,并向該節點發送REGISTER消息。如果該最近節點是負責該資源ID的節點,它會將用戶名稱和IP地址存儲在注冊表中,并回送200OK消息給用戶節點。
如果該最近節點不是負責該資源ID的節點,則通過302消息通知用戶節點需要注冊到下一節點。下一節點按照和上一節點同樣的方式進行處理,直至找到對應的處理節點。對應的處理節點發送200OK消息給用戶節點,并存儲用戶的名字和IP地址。
4.3 P2P SIP會話建立操作
用戶注冊成功后,可以和其他用戶進行會話。在會話前,會議發起方需要確定會話接收方的地址。發起方首先生成接收方的資源ID,并確定一個和資源ID最近的節點。然后發送INVITE消息給該最近節點,直到查找到負責接收方的節點。如果接收方用戶沒有注冊,則負責節點通知發送方停止會話;如果接收方已正常注冊,負責節點將接收方用戶的IP地址通過302響應通過發送方。
在獲得了接收方的IP地址后,發起方和接收方就可以按照傳統SIP協議的方式建立會議。
5 結束語
利用P2P技術的分布處理和無中心的架構來建設SIP網絡是網絡發展的一個重要方向。從現在的P2P SIP網絡的應用和實踐看,這種結合方案還有很多挑戰,主要表現在:
P2P技術還不成熟,資源動態分布的優化,資源恢復技術還在進一步研究中。現有的P2P應用主要還是集中在非實時的互聯網數據應用上,對于實時的通信節點,以及資源的快速分配定位,還有很多需要P2P SIP網絡研究的領域。
P2P的成功應用目前還只是在互聯網領域的非實時應用,對于SIP應用,特別是實時通信要求高的呼叫處理而言,基于P2P的SIP網絡還需要進行優化。P2P SIP網絡利用在去中心化的節點群集來代替原SIP網絡中的服務器,現有的P2P技術發現,在P2P SIP網絡中對等通信方的查找時間原大于普通SIP網絡的對等通信方查找時間。實驗發現,兩種網絡的查找實驗時間比超過4倍。
P2P對于帶寬和資源的消耗,路由效率低下是P2P技術取得成功應用的難點。現有的成功的P2P應用大都利用“免費”的互聯網資源,包括帶寬、存儲、計算能力等。對于一個可運營可管理的P2P SIP網絡而言,需要提高P2P網絡技術對資源的使用效率。
P2P SIP網絡結構復雜,對于運營商的管理帶來了很大的困難。如何實現可運營可管理的P2P SIP網絡是目前業界的一個重要課題。
6 參考文獻
[1] ROSENBERG J, SCHULZRINNE H, CAMANILO G. SIP: Session initiation protocol [S]. RFC3261. 2002.
[2] Campbell b, Rosenberg j, Schulzrinne h, et al. Session initiation protocol (SIP) extension for instant messaging[S]. RFC 3428. 2002.
[3] Willis D. Concepts and terminology for peer to peer SIP [EB/OL].draft-willis-p2psip-concepts-03 (Work in progress), 2006.
[4] Bryan d, Lowekamp b, Jennings c. SOSIMPLE: A serverless, standard based, P2P SIP communication system[C]// Proceedings of International Workshop on Advanced Architectures and Algorithms for Internet Delivery and Applications( AAA-IDEA 2005), Jul 15, 2005, Orlando, FL, USA. 2005.
[5] Bryan d, Lowekamp b, Jennings c. Dsip: A P2P approach to SIP registration and resource location [EB/OL]. http://www.ietf.org/internet-drafts/draft-bryan-p2psip-dsip-00.txt, 2007.
收稿日期:2007-09-20
戚晨,碩士畢業于浙江大學光電與科學儀器專業。現任中興通訊股份有限公司業務產品總工,從事智能網和增值業務的研發設計工作。研究方向為IN技術、信令網絡、開放業務平臺、IMS業務,多次代表中興通訊參加國內國際標準協議的起草工作。參與設計的智能網平臺產品獲深圳市、廣東省和江蘇省科技進步獎。
董振江,碩士畢業于哈爾濱工業大學。現任中興通訊股份有限公司一級主任高工、業務產品總工、公司技術專家委員會任務組組長。研究方向為SDP、P2P、業務引擎、3G業務和ICT等。發表過多篇智能網、客服、業務引擎和增值業務相關論文。