學(xué)習(xí)啦 > 論文大全 > 畢業(yè)論文 > 工學(xué)論文 > 通信學(xué) >

P2P-SIP網(wǎng)絡(luò)電話

時間: 任肖麗1 沈富可21 分享
摘要 由于P2P系統(tǒng)中沒有中央服務(wù)器并且網(wǎng)絡(luò)能夠自組織所以P2P系統(tǒng)具有高擴展性,健壯性和容錯性。這些特性是通過在P2P覆蓋網(wǎng)絡(luò)中定位感興趣的源的更高的延遲來獲得的。網(wǎng)絡(luò)電話可以看作是參與者自組P2P覆蓋網(wǎng)來定位其他參與者并與其他參與者交互的一種P2P結(jié)構(gòu)的應(yīng)用。我們提出一種用于基于會話初始化協(xié)議(SIP)的IP電話系統(tǒng)的純P2P結(jié)構(gòu)。我們的P2P-SIP結(jié)構(gòu)既支持 基礎(chǔ)的用戶注冊和呼叫建立也支持離線消息發(fā)送、語音/視頻郵件和多方會議這樣的高級服務(wù)。此外,我們簡要介紹了執(zhí)行情況。
關(guān)鍵詞 P2P,網(wǎng)絡(luò)電話,會話初始化協(xié)議(SIP)
1 引言
現(xiàn)存的基于會話初始化協(xié)議(SIP[1])的用戶/服務(wù)器網(wǎng)絡(luò)電話結(jié)構(gòu)為每個域使用一個注冊服務(wù)器。主要的系統(tǒng)消費是由一個專用系統(tǒng)管理器造成的維護和配置。這意味著在一個小型網(wǎng)絡(luò)中迅速地建立系統(tǒng)(例如,緊急通訊或會議)是很困難的。另一方面,端到端(P2P)系統(tǒng)[2]因為沒有單點錯誤,所以是可測量和可靠的。P2P系統(tǒng)對全局、災(zāi)難性失敗是強壯的,雖然單個的結(jié)點可能會失敗。
我們提出一種使用SIP的P2P網(wǎng)絡(luò)電話結(jié)構(gòu)。P2P-SIP有兩個主要的目標:(1)一個增加健壯性完全的分布式模型;(2)不改變現(xiàn)存的控制結(jié)構(gòu)(如DNS)進行配置的能力。分析了許多可選的設(shè)計,提出使用Chord[3]作為基本的分布式hash表(DHT)的P2P-SIP端點。新的混合結(jié)構(gòu)既允許傳統(tǒng)的SIP電話也允許用戶在本地域沒有SIP服務(wù)器時在P2P網(wǎng)絡(luò)中查找。使用SIP在P2P-SIP中執(zhí)行各種DHT功能,例如端發(fā)現(xiàn),用戶登記,結(jié)點故障發(fā)現(xiàn),用戶定位以及通過用P2P代替DNS[4]用于SIP中的下一跳查找的呼叫建立。
實現(xiàn)了一個P2P-SIP適配器,SIPPEER[5],允許現(xiàn)有的或者新的SIP用戶代理不改變用戶代理就可以連接到P2P-SIP網(wǎng)絡(luò)。例如,SIPPEER在同一臺主機上可以作為基于PC的SIP用戶代理并充當它的輸出代理。SIPPEER也可以作為獨立的SIP用戶代理商,代理人或有命令行用戶界面的注冊服務(wù)器。模塊化的設(shè)計允許組件的重用和替換。例如,Chord可以替換為另一種DHT而不影響其他部分。開放的結(jié)構(gòu)可以不影響現(xiàn)存的設(shè)計安裝新的服務(wù)。例如,一個新的語音郵件模塊可以添加到現(xiàn)存的結(jié)點上。除了P2P的擴展性和可靠性,P2P-SIP還有如下優(yōu)點:
不需要維護或配置:這個系統(tǒng)是開箱即用的,不需要任何冗余的服務(wù)器安裝(包括NAT和防火墻的配置)。我們的工作將TETF零配置網(wǎng)絡(luò)工作組[6]的目標擴展到多媒體通訊和協(xié)作系統(tǒng)。
協(xié)同工作:不像Skype[7]之類的其他P2P系統(tǒng),我們使用SIP與其他端點通訊。這可以很容易的與任何現(xiàn)存的SIP-PSTN網(wǎng)關(guān)的IP電話結(jié)構(gòu)或象Asterisk的基于服務(wù)器的IP PBX一起工作。
這些優(yōu)點是增加資源查找延遲和安全的威脅來得到的。一個不使用集中的元件的用于認證的可靠結(jié)構(gòu)不在這篇文章的討論范圍內(nèi)。
2 結(jié)構(gòu)框架
我們改進了分布式哈希表(DHT)的設(shè)計。一個極端是,這個分布式哈希表可以在服務(wù)器中用于服務(wù)器的領(lǐng)域同時仍然管理客戶/服務(wù)器結(jié)構(gòu)。另一個極端,所有的結(jié)點成為分布式哈希表的一部分。我們選擇如圖1所示的一種中間設(shè)計,具有高的容量(帶寬,CPU,內(nèi)存)和可用性(正常運行時間,公共IP地址)的一些結(jié)點成為超級結(jié)點并組成分布式哈希表,而其他的普通結(jié)點與一個或更多的超級結(jié)點相連而不是成為分布式哈希表的一部分。

圖1與DHT中超級結(jié)點相連的普通結(jié)點

圖2 P2P-SIP結(jié)點中的塊算法
圖2給出了P2P-SIP結(jié)點中不同部件的算法。結(jié)點啟動和用戶用標識符登記時,發(fā)現(xiàn)模塊被激活用于初始化網(wǎng)絡(luò)地址翻譯和防火墻探測[8],點發(fā)現(xiàn)和 SIP注冊。組播SIP注冊、上一引導(dǎo)周期存儲的端地址和預(yù)配置的自舉地址被用來初始化結(jié)點集。用戶界面模塊記錄用戶的“朋友列表”并調(diào)用用戶定位模塊定位這些朋友。用戶定位模塊使用SIP模塊,或者,如果這個結(jié)點加入了DHT就使用DHT模塊。DHT模塊維護端信息(例如,Chord指針表)并執(zhí)行像發(fā)現(xiàn)、加入和離開的一些DHT操作。
SIP被用作是定位其他用戶或結(jié)點、加入DHT、注冊用戶、呼叫建立和即時消息的基礎(chǔ)協(xié)議。一旦用戶被定位,呼叫建立或即時消息就可以直接經(jīng)由SIP模塊發(fā)送到用戶的電話。SIP REGISTER更新和OPTIONS消息用于探測結(jié)點失敗。當一個超級結(jié)點關(guān)閉或者失敗,注冊被發(fā)送到DHT中的其他適當?shù)某壗Y(jié)點。其他的SIP功能例如第三方呼叫控制和呼叫傳輸可以用相同的方法實現(xiàn)。媒介路徑(音頻設(shè)備,編解碼器和傳輸)獨立于P2P-SIP操作。
一些分布式哈希表允許對多端點并行搜索,不像Chord中的順序搜索。在這種情況下超級結(jié)點可以擔(dān)當背靠背用戶代理并向鄰居端點傳播SIP消息。然而,除非是像美國的911這種緊急呼叫路由的情況,應(yīng)該避免并行搜索以免網(wǎng)絡(luò)中發(fā)生泛洪。
在實際的實施中允許多種P2P-SIP網(wǎng)絡(luò)(分布式哈希表)相互連接是非常有用的。我們的混合結(jié)構(gòu)允許P2P-SIP網(wǎng)絡(luò)群和基于服務(wù)器的SIP結(jié)構(gòu)共存。有兩種方法:將一個網(wǎng)絡(luò)中所有的用戶與所有其他網(wǎng)絡(luò)交互注冊或者在呼叫建立的過程中在其余的網(wǎng)絡(luò)中定位用戶。前一種方法工作在少量的已知的P2P- SIP網(wǎng)絡(luò)。后一種方法可以使用一個像DNS這樣的全局命名服務(wù)器或?qū)哟位腜2P-SIP網(wǎng)絡(luò)實現(xiàn)。第一種情況,每一個P2P-SIP網(wǎng)絡(luò)用一個域名表示。這與基于服務(wù)器的SIP網(wǎng)絡(luò)是沒有區(qū)別的,域名在那個網(wǎng)絡(luò)中解析一個或多個自舉結(jié)點[4]。第二種情況,用P2P-SIP代替DNS來解析域名。例如,單獨的大的組織可以有本地P2P-SIP網(wǎng)絡(luò)與全局(公共)P2P-SIP網(wǎng)絡(luò)連接,如圖3所示。本地特定域的DHT有典型的服務(wù)結(jié)點,這些結(jié)點在全局DHT中也是可達的。例如, private.com在全局DHT中映射到結(jié)點A和C。特定域DHT中的任何結(jié)點可以到達全局DHT,全局DHT中的任何結(jié)點可以經(jīng)由域中的典型服務(wù)結(jié)點到達特定域DHT。
圖3 混合系統(tǒng)舉例
混合結(jié)構(gòu)允許用戶在她的提供者可用的情況下用她的提供者注冊,也可以用P2P-SIP網(wǎng)絡(luò)。呼叫建立在可以用DNS解析時被發(fā)送到SIP目的地,同樣也可以用P2P-SIP網(wǎng)絡(luò)。
3 設(shè)計和實現(xiàn)
3.1命名
結(jié)點和用戶標識符是用SIP通用資源標志符(URI)表示的。例如,如果一個結(jié)點在傳輸?shù)刂?92.1.2.3:8054上監(jiān)聽SIP消息并且Chord 的哈希函數(shù)給出的鍵值是17,結(jié)點的URI就是sip:17@192.1.2.3:8054。域example.com中的一個不知道傳輸?shù)刂返慕Y(jié)點標識符或鍵值(例如10)表示為sip:10@example.com。每一個局部的P2P-SIP網(wǎng)絡(luò)用一個DNS域名表示,example.invalid用于沒有域的鍵,例如全局DHT中的鍵。這樣的結(jié)點標識符對于DHT的維護是有用的,例如,查詢另外一個結(jié)點的傳輸?shù)刂穪沓蔀檫@個結(jié)點的指針表的入口。
用戶標識符可以由系統(tǒng)隨機分配,或由用戶選擇一個鑒定名(如,alice172@sippeer.net)或者用戶選擇她的有效email地址(如alice@example.com)。前兩種方法允許用戶選擇密碼,但是不清楚P2P結(jié)點怎樣從用戶那里得到密碼。我們使用最后一種方法,因為它允許系統(tǒng)產(chǎn)生一個隨機密碼并email給用戶用作驗證。前兩種方法,如果密碼由系統(tǒng)隨機產(chǎn)生并且SIP REGISTER請求消息的連接頭里有email地址,密碼可以發(fā)給用戶。
3.2認證
當一個用戶第一次登陸P2P-SIP網(wǎng)絡(luò)時,我們需要驗證用戶的標識符是有效的并且確實屬于該用戶。沒有公共密鑰結(jié)構(gòu)(PKI),系統(tǒng)可以產(chǎn)生一個新的密碼并用email發(fā)送給用戶。這個密碼在后來的撥入當中用于注冊驗證。可以使用一個可用的生存時間,比如一個月。當用戶隨后再登陸時這些信息被刷新。
3.3 SIP消息
SIP REGISTER消息被結(jié)點既用于用戶注冊也用于DHT的維護。用戶注冊消息類似于基于服務(wù)器的注冊,To頭表示用戶標識符,Contact頭表示用戶的聯(lián)系位置。
結(jié)點將SIP REGISTER消息用于兩種情況:查詢和更新。如果消息中有Contact頭,則是更新請求表示發(fā)送者想更新To頭中用戶標識符的綁定;否則就是一個查詢請求,發(fā)送者請求獲得To頭中用戶標識符的Contact信息;在一個P2P-SIP結(jié)點的Chord網(wǎng)絡(luò)中結(jié)點的Contact信息包括它自己的傳輸?shù)刂?,后繼結(jié)點地址和前導(dǎo)結(jié)點地址。
3.4 DHT發(fā)現(xiàn)和加入
結(jié)點發(fā)送SIP REGISTER消息使用sip:224.0.1.75(SIP REGISTER組播IPv4地址)作為請求URI ,To頭作為本地結(jié)點標識符來發(fā)現(xiàn)本地網(wǎng)絡(luò)中的其他P2P-SIP端點。也可以使用像服務(wù)定位協(xié)議(SLP)和預(yù)配置的自舉結(jié)點地址這樣的額外機制。結(jié)點存儲發(fā)現(xiàn)的端點地址列表用于以后的重新啟動。
一旦結(jié)點發(fā)現(xiàn)一個端點,它通過發(fā)送一個以To頭作為此結(jié)點標識符的SIP REGISTER查詢給那個端點加入DHT。成功的應(yīng)答包括現(xiàn)存的DHT中的此結(jié)點的后繼和前導(dǎo),結(jié)點可以用來更新它的Chord數(shù)據(jù)結(jié)構(gòu)。
結(jié)點一旦知道它在Chord環(huán)里的鄰居,就向它們(后繼和前導(dǎo))發(fā)送SIP REGISTER更新,這樣就可以更新它們的數(shù)據(jù)結(jié)構(gòu)。
Chord的穩(wěn)定性是通過周期性的發(fā)送SIP REGISTER消息更新后繼和前導(dǎo)的數(shù)據(jù)結(jié)構(gòu)以及查詢指針表入口以校驗本地數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)的。
3.5 SIP消息路由
Chord里的每個結(jié)點對基于它在Chord環(huán)里的位置的鍵空間的一個子集負責(zé)。當結(jié)點收到一個SIP請求,它提取出目標鍵作為REGISTER請求的 To頭URI和其他任何請求的請求URI。對REGISTER請求,如果目的鍵值屬于這個結(jié)點的鍵空間,則這個結(jié)點應(yīng)該是目的鍵的登記者。如果這個鍵的用戶記錄存在,則發(fā)送一個成功的應(yīng)答,否則就發(fā)送一個失敗的應(yīng)答。成功的應(yīng)答包含用戶的連接位置或結(jié)點聯(lián)系(本地傳輸?shù)刂?,后繼和前導(dǎo)地址)分別用于用戶或結(jié)點注冊。如果結(jié)點收到一個非REGISTER請求,它為目標用戶提供代理或?qū)⒄埱笾囟ㄏ虻娇捎玫挠脩暨B接位置。如果目標鍵值不屬于這個結(jié)點的鍵空間,則請求被代理到基于Chord算法和數(shù)據(jù)結(jié)構(gòu)的下一跳結(jié)點。
3.6可靠性
Chord通過存儲N)個后繼地址以及在K(常量)個成功的后繼結(jié)點中復(fù)制鍵來提供結(jié)點失敗時的可靠性。在P2P-SIP中,結(jié)點更新應(yīng)答包含所有N)后繼地址,并且用戶注冊信息被復(fù)制到K個后繼結(jié)點中。
當一個結(jié)點有序地離開網(wǎng)絡(luò)時,它會注銷它的后繼和前導(dǎo)以便他們可以更新Chord數(shù)據(jù)結(jié)構(gòu)。并把所有的注冊轉(zhuǎn)移到它的后繼。當一個結(jié)點異常地失敗時,它的后繼和前導(dǎo)發(fā)現(xiàn)這個失敗并且更新他們的數(shù)據(jù)結(jié)構(gòu)。算法的穩(wěn)定性保證了信息能夠在一段時間內(nèi)傳播到Chord中的其他相應(yīng)的結(jié)點。
注冊信息由結(jié)點A傳到結(jié)點B,如果結(jié)點B信任結(jié)點A就可以鑒定結(jié)點A,否則結(jié)點B重新生成一個密碼并發(fā)送給用戶的email地址。一旦我們擁有一個P2P名譽系統(tǒng),DHT中將只存在可信任的結(jié)點。如果注冊結(jié)點是惡意的則問題仍然存在,而且可能造成拒絕服務(wù)攻擊(DoS)。
存儲用戶注冊信息的P2P-SIP結(jié)點也代理到那個用戶的呼叫請求。一旦呼叫建立完成,呼叫路徑中就不再需要P2P-SIP結(jié)點。
3.7現(xiàn)存SIP電話的適配器
一個SIP用戶代理商可以將P2P-SIP結(jié)點當作是輸出代理參與P2P-SIP網(wǎng)絡(luò)。用各種各樣的SIP用戶代理商,例如哥倫比亞大學(xué)的sipc、思科 IP phone 7960、Pingtel IP phone、Xten Network的X-Lite client v2.0和Microsoft Windows Messenger,測試了P2P-SIP適配器SIPPEER。
一些電話不像SIP規(guī)范[1]中說的輸出代理應(yīng)該被當作預(yù)裝載的路由集那樣執(zhí)行輸出代理。實際上,如果輸出代理不記錄路由最初的INVITE請求,則后來的對話中的請求(例BYE)不應(yīng)該發(fā)送給代理。假定sipc用戶alice@example.com 使用P2P-SIP邀請思科phone用戶bob@example.com。呼叫后,bob掛斷。思科phone發(fā)送BYE請求給輸出代理(P2P- SIP結(jié)點)但是請求URI包含alice@pc2.examole:5060。因為這個URI可能沒有在P2P-SIP網(wǎng)絡(luò)中注冊,P2P-SIP結(jié)點可能不能代理請求,這將引起DHT查找失敗。在SIPPEER中通過在這種情況下代理請求到請求URI代替DHT查找來解決這個問題。
4 結(jié)束語
我們提出了純P2P結(jié)構(gòu)的SIP電話。除了與現(xiàn)存的SIP結(jié)構(gòu)的互操作性,這個結(jié)構(gòu)還提供了可靠性和P2P系統(tǒng)固有的擴展性。今后還需要在像使用P2P的大規(guī)模應(yīng)用層組播會議這樣的高級服務(wù)方面以及像認證和計費之類的與PSTN協(xié)同工作的相關(guān)因素方面做更多的研究。
參考文獻:
[1] J. Rosenberg, H. Schulzrinne, G. Camarillo, A. R. Johnston,J. Peterson, R. Sparks, M. Handley, and E. Schooler. SIP:session initiation protocol. RFC 3261, Internet Engineering Task Force, June 2002.
[2] http://www.hpl.hp.com/techreports/2002/HPL-2002-57.html.
[3] I. Stoica, R. Morris, D. Karger, F. Kaashoek, and H. Balakrishnan. Chord: A scalable peer-to-peer lookup service for internet applications. In SIGCOMM, San Diego,CA, USA, Aug 2001.
[4] J. Rosenberg and H. Schulzrinne. Session initiation protocol(SIP): locating SIP servers. RFC 3263, Internet Engineering Task Force, June 2002.
[5] http://www.cs.columbia.edu/ ˜kns10/publication/sip-p2pdesign.pdf.
[6] http://www.ietf.org/html.charters/zeroconf-charter.html.
[7] http://www.skype.com.
[8] J. Rosenberg. Interactive connectivity establishment (ICE): a methodology for nettwork address translator (NAT) traversal for the session initiation protocol (SIP). Internet draft,
Internet Engineering Task Force, July 2003. Work in progress.
[9] K. Singh and H. Schulzrinne. Peer-to-peer Internet telephony using SIP. Technical Report CUCS-044-04, Department of Computer Science, Columbia University, New York, NY,
Oct. 2004.
[10] http://www.research.earthlink.net/p2p/.
[11] http://www.ctiforum.com/technology/Voip/2005/06/voip0644.htm
2944