新聞中心

P2P SIP原理和應(yīng)用

作者: 時(shí)間:2017-06-08 來(lái)源:網(wǎng)絡(luò) 收藏

1 SIP網(wǎng)絡(luò)

會(huì)話發(fā)起協(xié)議(SIP)是互聯(lián)網(wǎng)工程任務(wù)組(IETF)制定的多媒體通信應(yīng)用層控制協(xié)議,用于建立、修改和終止多媒體會(huì)話。SIP協(xié)議借鑒了超文本傳輸協(xié)議(HTTP)、簡(jiǎn)單郵件傳輸協(xié)議(SMTP)等,采用基于文本協(xié)議控制方式,支持代理、重定向、登記定位用戶等功能[1]。

SIP憑借其簡(jiǎn)單、易于擴(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ù)器來(lái)進(jìn)行路由,因此存在SIP服務(wù)器的“單點(diǎn)故障”和“性能瓶頸”等問(wèn)題。

目前有多種提升SIP服務(wù)器處理能力的方案,如采用高處理能力的服務(wù)器、采用多服務(wù)器間的N+1或熱備份方案,或者采用多服務(wù)器負(fù)載均衡技術(shù)。

2 技術(shù)在互聯(lián)網(wǎng)上的應(yīng)用

技術(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也沒(méi)有服務(wù)器或客戶端的概念,任意兩個(gè)節(jié)點(diǎn)之間是平等通信的。隨著互聯(lián)網(wǎng)應(yīng)用的擴(kuò)展,技術(shù)得到了廣泛的應(yīng)用。P2P網(wǎng)絡(luò)采用分布式對(duì)象定位機(jī)制,使得信息或媒體流在節(jié)點(diǎn)之間直接傳送,降低了中轉(zhuǎn)開(kāi)銷(xiāo),從而提高了網(wǎng)絡(luò)的可擴(kuò)展性,節(jié)省了網(wǎng)絡(luò)帶寬。

很多基于P2P技術(shù)如共享MP3格式音樂(lè)文件的Napster服務(wù)、@Home">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ù)器,通過(guò)目錄服務(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)過(guò)中央服務(wù)器。

3.2純P2P網(wǎng)絡(luò)架構(gòu)

純P2P網(wǎng)絡(luò)架構(gòu)采用的是廣播式的P2P模型。在這種架構(gòu)下,沒(méi)有集中的中央服務(wù)器,每個(gè)用戶節(jié)點(diǎn)隨機(jī)接入到網(wǎng)絡(luò),并與自己相鄰的一組節(jié)點(diǎn)通過(guò)端到端連接構(gòu)成一個(gè)邏輯覆蓋的網(wǎng)絡(luò)。節(jié)點(diǎn)之間的內(nèi)容查詢和內(nèi)容共享都是直接通過(guò)相鄰節(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)中心化的問(wèn)題,擴(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)兩類(lèi)。超級(jí)節(jié)點(diǎn)與其臨近的若干普通節(jié)點(diǎn)之間構(gòu)成一個(gè)自治的簇,簇內(nèi)采用基于集中目錄式的P2P模式,而整個(gè)P2P網(wǎng)絡(luò)中各個(gè)不同的簇之間再通過(guò)純P2P的模式將超級(jí)節(jié)點(diǎn)相連。有時(shí)甚至也可以在各個(gè)超級(jí)節(jié)點(diǎn)之間再次選取性能最優(yōu)的節(jié)點(diǎn),或者另外引入一新的性能最優(yōu)的節(jié)點(diǎn)作為索引節(jié)點(diǎn)來(lái)保存整個(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í)再通過(guò)超級(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路由方式之一。

DHT將節(jié)點(diǎn)管理的資源或文檔作為“關(guān)鍵字”,將節(jié)點(diǎn)的IP地址作為“數(shù)值”,組成關(guān)鍵字-數(shù)值對(duì),并能根據(jù)關(guān)鍵字查找數(shù)值。DHT技術(shù)中的存儲(chǔ)和查詢是分布在多個(gè)節(jié)點(diǎn)上進(jìn)行的,對(duì)單一節(jié)點(diǎn)的依賴性低,容易實(shí)現(xiàn)網(wǎng)絡(luò)上任一節(jié)點(diǎn)的無(wú)序加入或退出,對(duì)整個(gè)網(wǎng)絡(luò)性能影響較低。

DHT各節(jié)點(diǎn)并不要維護(hù)整個(gè)網(wǎng)絡(luò)的信息,只需存儲(chǔ)其臨近后繼節(jié)點(diǎn)信息,因此通過(guò)較少的路由就可以到達(dá)目標(biāo)節(jié)點(diǎn)。DHT又取消了泛洪算法,有效地減少了節(jié)點(diǎn)信息的發(fā)送操作數(shù)量,增強(qiáng)了P2P網(wǎng)絡(luò)的擴(kuò)展性。

在實(shí)際應(yīng)用中,出于冗余度以及延時(shí)的考慮,大部分DHT總是在節(jié)點(diǎn)的虛擬標(biāo)識(shí)與關(guān)鍵字最接近的節(jié)點(diǎn)上備份冗余信息,這樣也避免了單一節(jié)點(diǎn)失效的問(wèn)題。

但是基于DHT的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的維護(hù)和修復(fù)也比Gnutella模型和Kazaa模型等無(wú)結(jié)構(gòu)的系統(tǒng)要復(fù)雜得多,有時(shí)甚至出現(xiàn)“繞路”的問(wèn)題。

目前基于DHT的研究項(xiàng)目主要還集中在具有相同能力的較小規(guī)模的網(wǎng)絡(luò)中,對(duì)于大規(guī)模的Internet部署還在研究中。同時(shí)大量實(shí)際的P2P應(yīng)用還大都是基于無(wú)結(jié)構(gòu)的拓?fù)浜头汉閺V播機(jī)制,采用DHT方式的P2P系統(tǒng)缺乏在Internet中大規(guī)模真實(shí)部署的成功實(shí)例。

4 P2PSIP網(wǎng)絡(luò)架構(gòu)

P2P網(wǎng)絡(luò)[3]的優(yōu)點(diǎn)是沒(méi)有中心服務(wù)器,節(jié)點(diǎn)間直接通信、交換資源和文檔,并且可以擴(kuò)展到分布式的負(fù)載分擔(dān)網(wǎng)絡(luò)。從理論分析看,P2P網(wǎng)絡(luò)可以降低C/S結(jié)構(gòu)網(wǎng)絡(luò)中的“單點(diǎn)故障”和“性能瓶頸”問(wèn)題。作為C/S結(jié)構(gòu)網(wǎng)絡(luò)一種的SIP網(wǎng)絡(luò)也可以利用P2P技術(shù)來(lái)實(shí)現(xiàn),并且具有以下特點(diǎn):

去中心化,避免中心SIP服務(wù)器的單點(diǎn)故障隱患;
增強(qiáng)SIP網(wǎng)絡(luò)的擴(kuò)展性,降低網(wǎng)絡(luò)中的存儲(chǔ)、計(jì)算、帶寬等性能瓶頸;
提高網(wǎng)絡(luò)的高可用性,采用P2P網(wǎng)絡(luò)全分布的架構(gòu)來(lái)提高網(wǎng)絡(luò)的健壯性;
降低成本,充分利用節(jié)點(diǎn)閑置的處理能力、存儲(chǔ)和帶寬資源。

P2P SIP網(wǎng)絡(luò)利用SIP協(xié)議的擴(kuò)展和承載來(lái)完成P2P層疊加網(wǎng)絡(luò)節(jié)點(diǎn)的加入、定位、查找和路由,降低P2P私有協(xié)議帶來(lái)的擴(kuò)展性和兼容性問(wèn)題,實(shí)現(xiàn)不同P2P網(wǎng)絡(luò)的互通。

P2P SIP網(wǎng)絡(luò)以SIP協(xié)議為基礎(chǔ),無(wú)需大規(guī)模改動(dòng)現(xiàn)有設(shè)備,并且無(wú)需改動(dòng)VoIP終端設(shè)備,只要升級(jí)現(xiàn)有SIP服務(wù)器的軟件,即可實(shí)現(xiàn)SIP網(wǎng)絡(luò)的P2P化,提升網(wǎng)絡(luò)的處理能力和可用性。

在P2P SIP網(wǎng)絡(luò)中,原來(lái)管理一個(gè)域的單節(jié)點(diǎn)SIP服務(wù)器變成多臺(tái)P2P SIP服務(wù)器(稱為PN節(jié)點(diǎn)),PN之間通過(guò)P2P機(jī)制互聯(lián),彼此分擔(dān)負(fù)載,構(gòu)成一個(gè)邏輯上的重疊網(wǎng)絡(luò)。每個(gè)節(jié)點(diǎn)將和它相連的下一節(jié)點(diǎn)當(dāng)作下一跳PN可以承擔(dān)原來(lái)服務(wù)中壓力最大的部分,比如注冊(cè)、代理和計(jì)費(fèi)。用戶連接到任一PN,都可以有效使用服務(wù)。部分PN的宕機(jī)或故障不會(huì)影響到整個(gè)P2P SIP網(wǎng)絡(luò)的正常運(yùn)行。當(dāng)需要擴(kuò)大P2P SIP網(wǎng)絡(luò)的容量,加入新的PN就可以了[4]。

本文引用地址:http://www.butianyuan.cn/article/201706/351835.htm

P2P SIP網(wǎng)絡(luò)有兩個(gè)重要操作:一是對(duì)P2P節(jié)點(diǎn)的操作,包括節(jié)點(diǎn)注冊(cè)和離開(kāi),實(shí)現(xiàn)重疊網(wǎng)絡(luò)的維護(hù)[5];另一個(gè)是用戶層面的操作,包括用戶的注冊(cè)、資源定位、會(huì)話建立等。

4.1P2PSIP節(jié)點(diǎn)操作

P2P節(jié)點(diǎn)在地理上散布各處,邏輯上根據(jù)選用的P2P機(jī)制的不同可以是環(huán)形的(Chord協(xié)議)、矩陣的(CAN協(xié)議)、網(wǎng)狀的(Pastry協(xié)議和Tapestry協(xié)議)?;镜腜2P節(jié)點(diǎn)至少包括注冊(cè)和代理兩種功能。從運(yùn)營(yíng)角度出發(fā),還需要部署全局認(rèn)證服務(wù)器、全局賬務(wù)服務(wù)器和網(wǎng)管服務(wù)器等等,用于管理全部用戶和所有節(jié)點(diǎn)。

每個(gè)節(jié)點(diǎn)在網(wǎng)絡(luò)中都有一個(gè)節(jié)點(diǎn)ID號(hào),該ID號(hào)由節(jié)點(diǎn)IP地址和端口號(hào)進(jìn)行哈希運(yùn)算獲得,節(jié)點(diǎn)信息被存儲(chǔ)在一張DHT表中。每個(gè)節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)對(duì)應(yīng)信息,如用戶注冊(cè)信息等。

當(dāng)一個(gè)節(jié)點(diǎn)申請(qǐng)加入網(wǎng)絡(luò)中時(shí),先定位一個(gè)缺省的網(wǎng)絡(luò)節(jié)點(diǎn),并發(fā)送SIP REGISTER消息給該缺省節(jié)點(diǎn),申請(qǐng)加入網(wǎng)絡(luò)。如果該缺省節(jié)點(diǎn)是負(fù)責(zé)對(duì)應(yīng)區(qū)域的節(jié)點(diǎn),則響應(yīng)200OK消息,并允許新加入節(jié)點(diǎn)加入網(wǎng)絡(luò)。響應(yīng)消息中包含鄰近節(jié)點(diǎn)的信息。

如果缺省節(jié)點(diǎn)不是負(fù)責(zé)對(duì)應(yīng)信息區(qū)域的節(jié)點(diǎn),則通過(guò)SIP 302響應(yīng)提供新加入節(jié)點(diǎn)前轉(zhuǎn)的網(wǎng)絡(luò)節(jié)點(diǎn)。新加入節(jié)點(diǎn)向前轉(zhuǎn)節(jié)點(diǎn)發(fā)送SIP REGISTER消息,申請(qǐng)加入。前轉(zhuǎn)節(jié)點(diǎn)根據(jù)自己是否是負(fù)責(zé)該區(qū)域的節(jié)點(diǎn)對(duì)REGISTER消息進(jìn)行處理。上述過(guò)程一直持續(xù)到找到對(duì)應(yīng)的節(jié)點(diǎn)為止。

當(dāng)新加入節(jié)點(diǎn)成功加入網(wǎng)絡(luò)后,新加入節(jié)點(diǎn)存儲(chǔ)所需要負(fù)責(zé)的用戶信息如用戶注冊(cè)信息,同時(shí)通知網(wǎng)絡(luò)中其它節(jié)點(diǎn)更新自己的信息。

4.2P2PSIP用戶注冊(cè)操作

在P2P SIP網(wǎng)絡(luò)中,每個(gè)用戶被看成是一個(gè)資源,以資源ID標(biāo)識(shí),資源ID由資源名稱經(jīng)哈希運(yùn)算獲得。

當(dāng)用戶申請(qǐng)注冊(cè)時(shí),首先生成對(duì)應(yīng)的資源ID。用戶所在的節(jié)點(diǎn)通過(guò)查找路由表,找到一個(gè)資源ID和節(jié)點(diǎn)ID最接近的節(jié)點(diǎn),并向該節(jié)點(diǎn)發(fā)送REGISTER消息。如果該最近節(jié)點(diǎn)是負(fù)責(zé)該資源ID的節(jié)點(diǎn),它會(huì)將用戶名稱和IP地址存儲(chǔ)在注冊(cè)表中,并回送200OK消息給用戶節(jié)點(diǎn)。

如果該最近節(jié)點(diǎn)不是負(fù)責(zé)該資源ID的節(jié)點(diǎn),則通過(guò)302消息通知用戶節(jié)點(diǎn)需要注冊(cè)到下一節(jié)點(diǎn)。下一節(jié)點(diǎn)按照和上一節(jié)點(diǎn)同樣的方式進(jìn)行處理,直至找到對(duì)應(yīng)的處理節(jié)點(diǎn)。對(duì)應(yīng)的處理節(jié)點(diǎn)發(fā)送200OK消息給用戶節(jié)點(diǎn),并存儲(chǔ)用戶的名字和IP地址。

4.3P2PSIP會(huì)話建立操作

用戶注冊(cè)成功后,可以和其他用戶進(jìn)行會(huì)話。在會(huì)話前,會(huì)議發(fā)起方需要確定會(huì)話接收方的地址。發(fā)起方首先生成接收方的資源ID,并確定一個(gè)和資源ID最近的節(jié)點(diǎn)。然后發(fā)送INVITE消息給該最近節(jié)點(diǎn),直到查找到負(fù)責(zé)接收方的節(jié)點(diǎn)。如果接收方用戶沒(méi)有注冊(cè),則負(fù)責(zé)節(jié)點(diǎn)通知發(fā)送方停止會(huì)話;如果接收方已正常注冊(cè),負(fù)責(zé)節(jié)點(diǎn)將接收方用戶的IP地址通過(guò)302響應(yīng)通過(guò)發(fā)送方。

在獲得了接收方的IP地址后,發(fā)起方和接收方就可以按照傳統(tǒng)SIP協(xié)議的方式建立會(huì)議。

5 結(jié)束語(yǔ)

利用P2P技術(shù)的分布處理和無(wú)中心的架構(gòu)來(lái)建設(shè)SIP網(wǎng)絡(luò)是網(wǎng)絡(luò)發(fā)展的一個(gè)重要方向。從現(xiàn)在的P2P SIP網(wǎng)絡(luò)的應(yīng)用和實(shí)踐看,這種結(jié)合方案還有很多挑戰(zhàn),主要表現(xiàn)在:

P2P技術(shù)還不成熟,資源動(dòng)態(tài)分布的優(yōu)化,資源恢復(fù)技術(shù)還在進(jìn)一步研究中?,F(xiàn)有的P2P應(yīng)用主要還是集中在非實(shí)時(shí)的互聯(lián)網(wǎng)數(shù)據(jù)應(yīng)用上,對(duì)于實(shí)時(shí)的通信節(jié)點(diǎn),以及資源的快速分配定位,還有很多需要P2PSIP網(wǎng)絡(luò)研究的領(lǐng)域。

P2P的成功應(yīng)用目前還只是在互聯(lián)網(wǎng)領(lǐng)域的非實(shí)時(shí)應(yīng)用,對(duì)于SIP應(yīng)用,特別是實(shí)時(shí)通信要求高的呼叫處理而言,基于P2P的SIP網(wǎng)絡(luò)還需要進(jìn)行優(yōu)化。P2PSIP網(wǎng)絡(luò)利用在去中心化的節(jié)點(diǎn)群集來(lái)代替原SIP網(wǎng)絡(luò)中的服務(wù)器,現(xiàn)有的P2P技術(shù)發(fā)現(xiàn),在P2PSIP網(wǎng)絡(luò)中對(duì)等通信方的查找時(shí)間原大于普通SIP網(wǎng)絡(luò)的對(duì)等通信方查找時(shí)間。實(shí)驗(yàn)發(fā)現(xiàn),兩種網(wǎng)絡(luò)的查找實(shí)驗(yàn)時(shí)間比超過(guò)4倍。

P2P對(duì)于帶寬和資源的消耗,路由效率低下是P2P技術(shù)取得成功應(yīng)用的難點(diǎn)?,F(xiàn)有的成功的P2P應(yīng)用大都利用“免費(fèi)”的互聯(lián)網(wǎng)資源,包括帶寬、存儲(chǔ)、計(jì)算能力等。對(duì)于一個(gè)可運(yùn)營(yíng)可管理的P2PSIP網(wǎng)絡(luò)而言,需要提高P2P網(wǎng)絡(luò)技術(shù)對(duì)資源的使用效率。

P2PSIP網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,對(duì)于運(yùn)營(yíng)商的管理帶來(lái)了很大的困難。如何實(shí)現(xiàn)可運(yùn)營(yíng)可管理的P2PSIP網(wǎng)絡(luò)是目前業(yè)界的一個(gè)重要課題。



關(guān)鍵詞: P2P SiP

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉