經(jīng)過(guò)業(yè)界多年的努力,IMS標(biāo)準(zhǔn)已經(jīng)相對(duì)成熟,各主流電信設(shè)備廠家均能提供符合3GPP R6版本的IMS系列產(chǎn)品。全球已經(jīng)部署了100多個(gè)IMS試點(diǎn)和試商用網(wǎng)絡(luò),其中AT&T、Vodafone、BT、Orange/FT、Telecom Italia、匈牙利電信等國(guó)外運(yùn)營(yíng)商已部署了正式商用網(wǎng)絡(luò)。但I(xiàn)MS網(wǎng)絡(luò)架構(gòu)相對(duì)于互聯(lián)網(wǎng)上的VoIP系統(tǒng)仍然比較復(fù)雜,對(duì)網(wǎng)絡(luò)建設(shè)和維護(hù)的要求比較高,難于應(yīng)對(duì)來(lái)自互聯(lián)網(wǎng)方面的競(jìng)爭(zhēng)。近年來(lái),P2P(peer to peer)[1]技術(shù)獲得了明顯的進(jìn)步,基于P2P的VoIP系統(tǒng)取得了顯著的成功,例如,Skype在世界范圍內(nèi)得到了廣泛的使用。本文將結(jié)合P2P技術(shù)的最新研究進(jìn)展,借鑒IMS網(wǎng)絡(luò)的優(yōu)點(diǎn)提出了一種分布式的IMS實(shí)現(xiàn)方案。
2、從P2P到P2P-SIP
2.1 P2P概述
Napster[2]和Gnutella[3]的廣泛應(yīng)用引起了人們對(duì)P2P網(wǎng)絡(luò)越來(lái)越多的關(guān)注,與傳統(tǒng)的C/S計(jì)算模式不同的是,P2P系統(tǒng)中的節(jié)點(diǎn)既可以做服務(wù)器又可以做客戶端,并且P2P利用空閑資源降低了資源共享的開銷,提高了共享資源節(jié)點(diǎn)的自治性和系統(tǒng)的頑健性。同時(shí),P2P可以分散資源,平衡網(wǎng)絡(luò)負(fù)載,避免單點(diǎn)失效問(wèn)題。
P2P自出現(xiàn)以來(lái)就被廣泛應(yīng)用于各個(gè)領(lǐng)域,比如文件共享、科學(xué)計(jì)算與協(xié)作、數(shù)據(jù)存儲(chǔ)以及實(shí)時(shí)通信等。由于P2P的種類繁多,很多研究人員從不同角度對(duì)它們進(jìn)行分類。按照P2P的發(fā)展歷程可以將P2P分為非結(jié)構(gòu)化和結(jié)構(gòu)化。非結(jié)構(gòu)化P2P系統(tǒng)又可以分為集中式和完全分布式的,代表分別是Napster和Gnutella。Napster是最早出現(xiàn)的P2P系統(tǒng)之一,并在短期內(nèi)迅速成長(zhǎng)起來(lái)。Napster采用了集中式的目錄服務(wù)器機(jī)制,用于存放對(duì)等節(jié)點(diǎn)的地址信息和所保存數(shù)據(jù)的信息,能夠?qū)φ?qǐng)求數(shù)據(jù)進(jìn)行查找并返回最合適的目的節(jié)點(diǎn)。與Napster不同,Gnutella采用了完全分布式的策略,利用洪泛算法對(duì)數(shù)據(jù)進(jìn)行查找。Gnutella無(wú)單點(diǎn)失效問(wèn)題,可擴(kuò)展性好,但是定位效率低。由于非結(jié)構(gòu)化的不可擴(kuò)展性,大量的研究集中在如何構(gòu)造高度結(jié)構(gòu)化的系統(tǒng),因此,結(jié)構(gòu)化P2P系統(tǒng)應(yīng)運(yùn)而生。結(jié)構(gòu)化P2P系統(tǒng)將每個(gè)資源定位在確定的節(jié)點(diǎn)上,保證在有限步數(shù)內(nèi)定位到資源,比如Chord[4]、CAN[5]、Pastry[6]等。
2.2 SIP協(xié)議
SIP(session initiation protocol)是一種信令協(xié)議,用于在互聯(lián)網(wǎng)兩個(gè)端點(diǎn)之間建立多媒體會(huì)話的控制信令,由IETF制定。SIP協(xié)議簡(jiǎn)單、可擴(kuò)展性好,被很多互聯(lián)網(wǎng)電話業(yè)務(wù)采用,成為VoIP的兩大協(xié)議之一。通常情況下,兩個(gè)端點(diǎn)使用SIP來(lái)協(xié)商一次“呼叫”,一旦協(xié)商成功,兩個(gè)端點(diǎn)就會(huì)使用選中的方法相互交談,這就與SIP無(wú)關(guān)。
同樣是與傳輸和控制無(wú)關(guān),但與P2P不同的是SIP電話系統(tǒng)仍然是基于C/S模式的。SIP服務(wù)器保存了用戶和他的注冊(cè)IP地址之間的映射關(guān)系。當(dāng)某一用戶發(fā)起呼叫時(shí),SIP服務(wù)器會(huì)把請(qǐng)求直接轉(zhuǎn)發(fā)給呼叫申請(qǐng)用戶,或者SIP可以看作是處理過(guò)的P2P系統(tǒng),這種系統(tǒng)通過(guò)SIP服務(wù)器狀態(tài)設(shè)置超級(jí)節(jié)點(diǎn)(SuperNode),然后基于DNS域名解析發(fā)現(xiàn)節(jié)點(diǎn),而不是像P2P一樣通過(guò)標(biāo)識(shí)符尋找節(jié)點(diǎn)。
隨著用戶的高速增長(zhǎng),現(xiàn)有SIP服務(wù)器也反映出一些不足,即C/S模式帶來(lái)的單點(diǎn)失效和性能瓶頸問(wèn)題。由此可見。使用一個(gè)P2P架構(gòu)代替現(xiàn)有的SIP服務(wù)器狀態(tài)設(shè)置,既可以提高系統(tǒng)的可靠性,又允許系統(tǒng)動(dòng)態(tài)適應(yīng)節(jié)點(diǎn)失效的情況,Skype使用P2P機(jī)制解決了這個(gè)問(wèn)題。Skype網(wǎng)絡(luò)把節(jié)點(diǎn)分為超級(jí)節(jié)點(diǎn)和普通節(jié)點(diǎn),超級(jí)節(jié)點(diǎn)為普通節(jié)點(diǎn)提供注冊(cè)服務(wù),當(dāng)超級(jí)節(jié)點(diǎn)失效時(shí),它所管理的普通節(jié)點(diǎn)會(huì)注冊(cè)到其他超級(jí)節(jié)點(diǎn)0從而避免了單點(diǎn)失效。
然而,P2P系統(tǒng)也有其自身的局限性,主要表現(xiàn)在各種應(yīng)用都采用封閉的軟件,接口是專用的而不是互通的。因此,需要提出二個(gè)開放的體系結(jié)構(gòu),可以支持各種多媒體業(yè)務(wù),IETF借鑒P2P的機(jī)制提升SIP,提出了P2P-SIP。
2.3 P2P-SIP
P2P在VoIP和通信領(lǐng)域的最新發(fā)展是P2P-SIP技術(shù)。P2P-SIP是P2P和SIP技術(shù)的結(jié)合,它的目的是利用P2P的靈活性和負(fù)載均衡的特點(diǎn)改造原有基于SIP韻集中式呼叫控制實(shí)現(xiàn)架構(gòu)。P2P和SIP的結(jié)合有兩種方式:一種是基于P2P實(shí)現(xiàn)SIP,即把SIP的一個(gè)集中維護(hù)配置和控制設(shè)施用P2P變成分布式,達(dá)到降低SIP的成本和改善SIP可靠性的目的;另一種方法是在SIP上運(yùn)行P2P,用SIP協(xié)議的消息傳遞方式實(shí)現(xiàn)P2P算法,其中,前者P2P和SIP之間具有較低的耦合度,實(shí)現(xiàn)起來(lái)更加靈活。因此,本文提出的分布式IMS架構(gòu)基于P2P-SIP。
SIP電話系統(tǒng)是C/S結(jié)構(gòu)的,如圖1(a)所示,代理服務(wù)器A和B啟動(dòng)SIP終端,終端會(huì)在SIP服務(wù)器上注冊(cè)各自的IP地址,DNS會(huì)保存用戶域名和它的IP地址間的映射關(guān)系。當(dāng)某節(jié)點(diǎn)通過(guò)A向另一節(jié)點(diǎn)發(fā)起呼叫時(shí),DNS通過(guò)映射關(guān)系找到相應(yīng)的代理服務(wù)器B,于是把請(qǐng)求轉(zhuǎn)發(fā)給B,隨后A和B之間通過(guò)SIP協(xié)議進(jìn)行通信?梢园l(fā)現(xiàn),SIP電話是基于DNS域名解析來(lái)發(fā)現(xiàn)節(jié)點(diǎn),因此存在單點(diǎn)失效問(wèn)題。圖1(b)給出了基于DHT(distributed hash table)架構(gòu)代替現(xiàn)有SIP服務(wù)器來(lái)提高系統(tǒng)可靠性的架構(gòu)。

圖1 SIP系統(tǒng)架構(gòu)和P2P-SIP架構(gòu)比較
P2P-SIP使用大量以DHT形式互聯(lián)的分布式服務(wù)器取代集中式的DNS,其作用類似于P2P系統(tǒng)中的超級(jí)節(jié)點(diǎn)。如圖1(b)所示的P2P-SIP網(wǎng)絡(luò)中,原來(lái)管理一個(gè)域的單臺(tái)服務(wù)器變成多個(gè)超級(jí)節(jié)點(diǎn),超級(jí)節(jié)點(diǎn)之間通過(guò)P2P機(jī)制互聯(lián),進(jìn)行負(fù)荷分擔(dān)。超級(jí)節(jié)點(diǎn)可以承擔(dān)注冊(cè)、代理和計(jì)費(fèi)等功能。用戶可以通過(guò)任一超級(jí)節(jié)點(diǎn)使用服務(wù),并且部分超級(jí)節(jié)點(diǎn)的故障不會(huì)影響P2P-SIP網(wǎng)絡(luò)的正常運(yùn)行,增加新的超級(jí)節(jié)點(diǎn)就可以對(duì)服務(wù)器容量進(jìn)行擴(kuò)充,因?yàn)槊總(gè)服務(wù)器的地位是對(duì)等的。
2 Napster website,http://www.napster.com,1999
3 Clip2com.The gnutella protocol specification v0.4,http://rfc-gnutella.sourceforge.net/Development,2001
4 Stoica I,Morris R,et al.A scalable peer-to-peer lookup protocol for Internet applications.IEEE/ACM Transactions on Networking,2003,11(1)
5 Ratnasamy S,F(xiàn)rancis P,et al.A scalable content-addressable network.In:Proceedings of the Acm Sigcomm 2001 Conference on Applications,Technologies Architectures,and Protocols for,Computer Communication,San Diego,CA,USA:ACM Press,2001
6 Rowstron A,Druschel P.Pastry:Scalable,decentralized object location and routing for largescale peer-to-peer systems.In:Proceedings of the IFTP/ACM International Conference on Distributed Systems Platforms (Middleware'01),Heidelberg,Germany:Springer-Verlag,2001
泰爾網(wǎng)