SIP協(xié)議是當(dāng)前VoIP和IM等多媒體協(xié)議的呼叫建立協(xié)議。P2P技術(shù)提供了分布式的網(wǎng)絡(luò)架構(gòu)中通信節(jié)點(diǎn)之間得對(duì)等通信能力,P2P網(wǎng)絡(luò)架構(gòu)經(jīng)歷了集中目錄式網(wǎng)絡(luò)架構(gòu)、純P2P網(wǎng)絡(luò)架構(gòu)、混合式P2P網(wǎng)絡(luò)架構(gòu)和結(jié)構(gòu)化P2P網(wǎng)絡(luò)架構(gòu)。通過引入P2P技術(shù),SIP網(wǎng)絡(luò)的能力可以得到增強(qiáng)。P2PSIP網(wǎng)絡(luò)主要有兩個(gè)重要的操作:對(duì)P2P節(jié)點(diǎn)的操作和用戶層面的操作。
1 SIP網(wǎng)絡(luò)
會(huì)話發(fā)起協(xié)議(SIP)是互聯(lián)網(wǎng)工程任務(wù)組(IETF)制定的多媒體通信應(yīng)用層控制協(xié)議,用于建立、修改和終止多媒體會(huì)話。SIP協(xié)議借鑒了超文本傳輸協(xié)議(HTTP)、簡單郵件傳輸協(xié)議(SMTP)等,采用基于文本協(xié)議控制方式,支持代理、重定向、登記定位用戶等功能[1]。
SIP憑借其簡單、易于擴(kuò)展、便于實(shí)現(xiàn)等諸多優(yōu)點(diǎn)而得到了廣泛應(yīng)用。3GPP等標(biāo)準(zhǔn)化組織已經(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),按域劃分用戶。每個(gè)域的SIP服務(wù)器管理著本域內(nèi)的用戶,用戶在使用SIP業(yè)務(wù)時(shí),需要注冊(cè)到SIP服務(wù)器。各用戶之間的通信需要由SIP服務(wù)器來進(jìn)行路由,因此存在SIP服務(wù)器的“單點(diǎn)故障”和“性能瓶頸”等問題。
目前有多種提升SIP服務(wù)器處理能力的方案,如采用高處理能力的服務(wù)器、采用多服務(wù)器間的N+1或熱備份方案,或者采用多服務(wù)器負(fù)載均衡技術(shù)。
2 P2P技術(shù)在互聯(lián)網(wǎng)上的應(yīng)用
P2P技術(shù)本身并不是新的概念或技術(shù),它的原理是將網(wǎng)絡(luò)上的通信節(jié)點(diǎn)作為平等的通信終端,任意兩個(gè)通信節(jié)點(diǎn)之間既互為“服務(wù)器”又互為“客戶端”。這一點(diǎn)與互聯(lián)網(wǎng)的基礎(chǔ)協(xié)議TCP/IP一致,TCP/IP也沒有服務(wù)器或客戶端的概念,任意兩個(gè)節(jié)點(diǎn)之間是平等通信的。隨著互聯(lián)網(wǎng)應(yīng)用的擴(kuò)展,P2P技術(shù)得到了廣泛的應(yīng)用。P2P網(wǎng)絡(luò)采用分布式對(duì)象定位機(jī)制,使得信息或媒體流在節(jié)點(diǎn)之間直接傳送,降低了中轉(zhuǎn)開銷,從而提高了網(wǎng)絡(luò)的可擴(kuò)展性,節(jié)省了網(wǎng)絡(luò)帶寬。
很多基于P2P技術(shù)如共享MP3格式音樂文件的Napster服務(wù)、SETI@Home計(jì)劃,尤其是Skype應(yīng)用的成功,使得P2P技術(shù)成為業(yè)界關(guān)注的焦點(diǎn)。
3 P2P網(wǎng)絡(luò)架構(gòu)
P2P 網(wǎng)絡(luò)的技術(shù)核心是解決分布式節(jié)點(diǎn)之間的資源定位,這需要合適的網(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ù)器查詢存儲(chǔ)各個(gè)節(jié)點(diǎn)的資源信息。這種結(jié)構(gòu)的最大特點(diǎn)是所有的資料都是存貯在各個(gè)用戶節(jié)點(diǎn)中。用戶獲取資源時(shí),節(jié)點(diǎn)根據(jù)網(wǎng)絡(luò)流量和延遲等信息選擇合適的節(jié)點(diǎn)建立直接連接,而不必經(jīng)過中央服務(wù)器。
3.2純P2P網(wǎng)絡(luò)架構(gòu)
純P2P網(wǎng)絡(luò)架構(gòu)采用的是廣播式的P2P模型。在這種架構(gòu)下,沒有集中的中央服務(wù)器,每個(gè)用戶節(jié)點(diǎn)隨機(jī)接入到網(wǎng)絡(luò),并與自己相鄰的一組節(jié)點(diǎn)通過端到端連接構(gòu)成一個(gè)邏輯覆蓋的網(wǎng)絡(luò)。節(jié)點(diǎn)之間的內(nèi)容查詢和內(nèi)容共享都是直接通過相鄰節(jié)點(diǎn)以廣播方式接力傳遞。為了避免循環(huán)搜索現(xiàn)象,每個(gè)節(jié)點(diǎn)會(huì)記錄其搜索軌跡。
Gnutella模型是現(xiàn)在應(yīng)用最廣泛的純P2P網(wǎng)絡(luò)架構(gòu),采用泛洪式的節(jié)點(diǎn)搜索算法,解決了網(wǎng)絡(luò)結(jié)構(gòu)中心化的問題,擴(kuò)展性和容錯(cuò)性較好。但是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ǔ)上加入了超級(jí)節(jié)點(diǎn)的概念。在這種網(wǎng)絡(luò)下,將節(jié)點(diǎn)按能力 (計(jì)算能力、內(nèi)存大小、連接帶寬、網(wǎng)絡(luò)滯留時(shí)間等)不同區(qū)分為普通節(jié)點(diǎn)和超級(jí)節(jié)點(diǎn)兩類。超級(jí)節(jié)點(diǎn)與其臨近的若干普通節(jié)點(diǎn)之間構(gòu)成一個(gè)自治的簇,簇內(nèi)采用基于集中目錄式的P2P模式,而整個(gè)P2P網(wǎng)絡(luò)中各個(gè)不同的簇之間再通過純P2P的模式將超級(jí)節(jié)點(diǎn)相連。有時(shí)甚至也可以在各個(gè)超級(jí)節(jié)點(diǎn)之間再次選取性能最優(yōu)的節(jié)點(diǎn),或者另外引入一新的性能最優(yōu)的節(jié)點(diǎn)作為索引節(jié)點(diǎn)來保存整個(gè)網(wǎng)絡(luò)中可以利用的超級(jí)節(jié)點(diǎn)信息,并且負(fù)責(zé)維護(hù)整個(gè)網(wǎng)絡(luò)的結(jié)構(gòu)。
普通節(jié)點(diǎn)的文件搜索先在本簇內(nèi)進(jìn)行,只有查詢結(jié)果不充分時(shí)再通過超級(jí)節(jié)點(diǎn)之間進(jìn)行有限的泛洪。同時(shí),每個(gè)簇中的超級(jí)節(jié)點(diǎn)監(jiān)控著所有普通節(jié)點(diǎn)的行為,從而確保一些惡意的攻擊行為能在網(wǎng)絡(luò)局部得到控制,也在一定程度上提高了整個(gè)網(wǎng)絡(luò)的負(fù)載平衡。
混合式P2P網(wǎng)絡(luò)架構(gòu)綜合了集中目錄式P2P快速查找和純P2P去中心化的優(yōu)勢(shì),Kazaa模型是P2P混合模型的典型代表。
然而,由于超級(jí)節(jié)點(diǎn)本身的脆弱性也可能導(dǎo)致其簇內(nèi)的節(jié)點(diǎn)處于孤立狀態(tài),因此這種局部索引的方法仍然存在一定的局限性。這導(dǎo)致了結(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ī)制,根據(jù)關(guān)鍵字進(jìn)行節(jié)點(diǎn)查找定位。目前結(jié)構(gòu)化網(wǎng)絡(luò)的主流查詢定位方法是采用分布式哈希表(DHT)技術(shù),這也是目前擴(kuò)展性最好的P2P路由方式之一。