《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動態(tài) > P2P SIP技術(shù)的研究

P2P SIP技術(shù)的研究

2008-04-21
作者:隋晉光1,2, 魯士文3

  摘 要: 在闡述P2P和SIP技術(shù)的基礎(chǔ)上,引出了一種二者融合的新技術(shù)——P2P SIP,提出了采用P2P SIP技術(shù)系統(tǒng)的體系結(jié)構(gòu)、工作方式,并且對P2P SIP技術(shù)的安全性問題進行了分析。
  關(guān)鍵詞: P2P SIP DHT


  P2P(peer-to-peer)是一種“人人為我、我為人人”的開放與共享的思想, 也是一種基于對等的計算模型和基于對等的應(yīng)用層重疊網(wǎng)絡(luò)架構(gòu)。由于沒有中央服務(wù)器并且網(wǎng)絡(luò)是自己管理的這種特殊結(jié)構(gòu),P2P系統(tǒng)天生就擁有高擴展性、健壯性和高容錯性的特點。
  傳統(tǒng)的P2P系統(tǒng)大致分為三種:(1)中心化P2P,索引服務(wù)放在一個中心服務(wù)器上,但是參與者之間的數(shù)據(jù)交換是對等的,例如Napster;(2)純P2P,索引服務(wù)存儲在每一個參與者上,通過發(fā)起洪泛式的請求來實現(xiàn)信息查詢,效率較低,例如Gnutella;(3)混合式P2P,索引服務(wù)放在一些超級節(jié)點" title="超級節(jié)點">超級節(jié)點上,通過向超級節(jié)點發(fā)起請求來實現(xiàn)信息查詢,例如Kazza。
  為了進一步提高效率,越來越多的P2P系統(tǒng)采用分布式散列表(DHT)實現(xiàn)查詢,這類系統(tǒng)也稱之為結(jié)構(gòu)化P2P系統(tǒng)。結(jié)構(gòu)化P2P系統(tǒng)(如Chord、CAN等)把精力主要集中在優(yōu)化P2P的查詢延遲以及對節(jié)點加入、離開的維護,從而代替大量發(fā)起請求這種低效率的模式。
  SIP(Session Initiation Protocol)是一個類似于HTTP 和SMTP 的基于文本的信令協(xié)議, 在IP分組網(wǎng)絡(luò)中處理端點之間的多媒體會話呼叫的建立、控制和終結(jié)等過程, 主要被用來開發(fā)和實現(xiàn)VoIP、語音/視頻會議、文本聊天、即時消息、交互游戲等業(yè)務(wù)的系統(tǒng)和終端,尤其在VoIP 和IM系統(tǒng)中得到了廣泛的應(yīng)用。
  目前有不少研究機構(gòu)已經(jīng)嘗試將P2P和SIP的優(yōu)勢進行互補和結(jié)合。本文提出的這種P2P SIP技術(shù),主要采用基于DHT的P2P方法來實現(xiàn)SIP的注冊以及資源定位,這里的DHT采用目前比較流行的CHORD算法。
1 體系結(jié)構(gòu)
1.1 節(jié)點功能
  在基于SIP的通信系統(tǒng)中,當呼叫建立之后,兩個peer之間的媒體交流是直接進行的,所以從這個角度看似乎是P2P 構(gòu)架。然而,在呼叫建立之前,用戶的注冊、定位以及呼叫路由都不能缺少服務(wù)器的參與,因此傳統(tǒng)的SIP系統(tǒng)采用的是C/S構(gòu)架。而本文采用P2P SIP技術(shù)的系統(tǒng)不需要中心服務(wù)器,在這種系統(tǒng)中,peer可以直接連接到其他的peer建立通信提供服務(wù)。因此,參與的節(jié)點不僅類似于傳統(tǒng)的SIP客戶端滿足用戶接打電話,而且將所有的peer作為一個整體來看,它們還起到了傳統(tǒng)SIP網(wǎng)絡(luò)中注冊機和代理務(wù)器的作用,實現(xiàn)了資源定位、維持現(xiàn)有信息以及呼叫路由等功能。
  如上所述,P2P SIP節(jié)點提供很多功能,超過了傳統(tǒng)SIP體系結(jié)構(gòu)中的任何單一實體。因此,每個節(jié)點必須是整個系統(tǒng)中活動的一員,必須提供一些類似于SIP系統(tǒng)中服務(wù)器的功能,至少,用來執(zhí)行附加的類似于服務(wù)器以及維持DHT行為的節(jié)點應(yīng)當分布在網(wǎng)絡(luò)中。這樣,一個節(jié)點既扮演服務(wù)器又扮演終端,從而提供了一個可擴展和可靠的服務(wù)器群架構(gòu)。然而,在實際情況中并不是所有節(jié)點的運算能力和性能都一樣。如果采用純P2P構(gòu)架,每個節(jié)點都要扮演兩個角色,則所有的節(jié)點終端都需要改進以滿足要求,這樣勢必會造成資源的極大浪費。因此將節(jié)點按功能的大小分為普通節(jié)點" title="普通節(jié)點">普通節(jié)點和超級節(jié)點。
  選擇一些高性能(帶寬、CPU、內(nèi)存)并且可靠(在線時間、公網(wǎng)地址)的節(jié)點作為超級節(jié)點,這些超級節(jié)點在一起共同構(gòu)成可靠的服務(wù)器群構(gòu)架,通過使用DHT來定位用戶。普通節(jié)點平時連接在這些超級節(jié)點上,通過這些超級節(jié)點來實現(xiàn)注冊、定位。決定成為超級節(jié)點或者普通節(jié)點都在本地實現(xiàn)。當一個節(jié)點啟動時,它首先是普通節(jié)點,當普通節(jié)點檢測到自己有足夠的性能和可靠性,它就可以把自己變?yōu)槌壒?jié)點。當存在的超級節(jié)點離開或者達到它的能力極限時,一個有高性能和可靠性的節(jié)點也可以被迫成為一個超級節(jié)點。此外,一些節(jié)點知道自己足夠強大時,會在啟動過程中就變成超級節(jié)點,同時,存在的節(jié)點也可以影響它的鄰居節(jié)點成為超級節(jié)點。
1.2 網(wǎng)絡(luò)結(jié)構(gòu)
  P2P SIP系統(tǒng)結(jié)構(gòu)圖如圖1所示。


  網(wǎng)絡(luò)由節(jié)點組成,這些節(jié)點在一起共同提供目錄索引服務(wù)以幫助定位資源,例如用戶等。在這里,所有的節(jié)點通過采用基于CHORD算法的DHT P2P結(jié)構(gòu)來組織。CHORD是一個環(huán)形的拓撲結(jié)構(gòu),每個結(jié)點并不需要知道所有其他結(jié)點的信息,在由N個結(jié)點組成的網(wǎng)絡(luò)中,每個結(jié)點只需要維護其他LogN個結(jié)點的信息,查詢的算法時間是O(LogN)。
  每個節(jié)點設(shè)計了一個Node-ID來決定節(jié)點在DHT環(huán)中的位置以及資源的范圍,Node-ID通過hashing節(jié)點的IP地址以及端口號來創(chuàng)建。相應(yīng)地,每個資源也有一個Resource-ID,通過hashing資源的關(guān)鍵字來獲得。Node-ID和Resource-ID應(yīng)當映射到同一數(shù)字空間。
  在CHORD算法中,一個Resource-ID為k的資源將被保存到第一個" title="第一個">第一個Node-ID大于或等于k的節(jié)點上。因此,當節(jié)點進入或離開時,資源就可以保存在不同的節(jié)點上。除此之外,節(jié)點還維護著一張保存其他節(jié)點信息的Finger表,用于快速地定位某一Resource-ID的后繼節(jié)點,提高系統(tǒng)效率。
1.3 SIP消息
  在已有標準SIP協(xié)議的基礎(chǔ)上,P2P SIP盡可能地保持SIP協(xié)議的原貌,因此所有需要維持DHT和定位資源的操作都是通過使用SIP消息來實現(xiàn)的?;旧鲜菫榱藘煞N目的來交換消息的。第一種目的是維持DHT,例如某些消息用來通知網(wǎng)絡(luò)有節(jié)點加入或者離開;第二種目的是用來完成用戶之間的通信,這種消息是大多數(shù)SIP用戶所習慣的,例如:注冊用戶、邀請其他用戶來參加會議等。當使用DHT來實現(xiàn)分布式注冊時,注冊和其他查詢都在DHT內(nèi)來執(zhí)行。一旦目標資源被找到,更深層的通信就直接在用戶代理之間進行,這一點類似于傳統(tǒng)的SIP通信。
  傳統(tǒng)的SIP系統(tǒng)使用“注冊”消息來實現(xiàn)“增加、刪除、請求綁定" title="綁定">綁定”,因此,筆者選擇用“注冊”方法來維持DHT。使用SIP“注冊”消息,不僅是為了在DHT維持操作中把節(jié)點綁定為鄰居,同時也用它綁定資源到相應(yīng)的節(jié)點,這些操作在傳統(tǒng)的SIP系統(tǒng)中是由SIP注冊機來實現(xiàn)的。
2 工作原理
2.1 節(jié)點注冊

  一個節(jié)點啟動時,根據(jù)它所處的物理環(huán)境以及它要達到的不同目的,可能會出現(xiàn)兩種情況。第一,當節(jié)點啟動時,用戶輸入它的身份,節(jié)點通過DNS找到可能存在的SIP服務(wù)器地址,并發(fā)送SIP 注冊消息,如果注冊成功,它就可以與傳統(tǒng)的SIP節(jié)點進行通信。第二,一個節(jié)點啟動時,首先計算其Node-ID例如k,然后發(fā)送一個注冊消息給它找到的第一個節(jié)點(bootstrap)請求加入。這個節(jié)點(bootstrap)就會查找它所知道的Node-ID最接近k的其他節(jié)點,并且將要加入的節(jié)點重定向到該節(jié)點。要加入的節(jié)點一直重復(fù)上述操作,直到到達允許它加入的超級節(jié)點,然后這個超級節(jié)點會告知它有哪些鄰居節(jié)點以及應(yīng)該負責保存哪些資源內(nèi)容。節(jié)點加入到P2P SIP網(wǎng)絡(luò)中之后,還會與其他節(jié)點進行定期的消息交換,以了解網(wǎng)絡(luò)中其他節(jié)點的進出情況。
2.2 資源注冊
  節(jié)點注冊時,并沒有將節(jié)點所含資源注冊到P2P SIP網(wǎng)絡(luò)。當一個節(jié)點加入到網(wǎng)絡(luò)中后,它所包含的資源會以傳統(tǒng)SIP系統(tǒng)的注冊方式一樣進行注冊,不同之處在于,傳統(tǒng)SIP系統(tǒng)是將資源保存在服務(wù)器中,而P2P SIP系統(tǒng)是將資源保存到相應(yīng)的節(jié)點上。
2.3 呼叫建立
  建立呼叫的第一步工作是找到資源所在的節(jié)點,首先將目標資源進行相應(yīng)的運算以獲得Resource-ID,然后將一個注冊消息發(fā)送到最接近于Resource-ID的節(jié)點。重復(fù)上述工作,直到目標節(jié)點被找到,該節(jié)點會發(fā)送一個200 OK的連接信息或者一個404未找到的消息。一旦目標資源被找到,兩個節(jié)點上的UA就會直接進行通信,呼叫建立完畢。在呼叫建立的過程中,超級節(jié)點既可以扮演代理服務(wù)器,也可以扮演重定向器的角色。重定向是其首選方式,因為它可排除超級節(jié)點的呼叫循環(huán)情況。然而,在一些特殊情況下(比如有防火墻和NAT),代理就成為惟一選擇。
2.4 節(jié)點關(guān)閉和失效
  當一個普通節(jié)點離開系統(tǒng),它首先發(fā)送注銷消息到超級節(jié)點,然后超級節(jié)點就會依次告知相關(guān)節(jié)點該節(jié)點已經(jīng)注銷,因此一個失效的節(jié)點不會影響系統(tǒng)的其他部分。在任何情況下,超級節(jié)點都可通過周期刷新檢測到失效的普通節(jié)點,它也可以通過發(fā)送選項條件消息到這些失效節(jié)點,查看它們是否還有響應(yīng)。
  當一個超級節(jié)點離開時,所有相關(guān)節(jié)點需要更新到這個超級節(jié)點的DHT鄰居超級節(jié)點上。如果超級節(jié)點關(guān)閉,它會平緩地發(fā)送它的節(jié)點記錄到其他P2P節(jié)點,這樣可以保障當超級節(jié)點關(guān)閉時,其他用戶可以定位到這些記錄。它會發(fā)送SIP注冊消息到DHT節(jié)點(其他的超級節(jié)點),使得這個DHT節(jié)點代替它保持這些用戶記錄。這無需通知普通節(jié)點,所屬的普通節(jié)點將會在下次注冊刷新和查詢時連接到那些保存它們記錄的超級節(jié)點。
  當一個超級節(jié)點意外失敗時,它相鄰的DHT節(jié)點(超級節(jié)點)檢測到失敗并調(diào)整DHT以存儲失敗節(jié)點保留的記錄,但是相關(guān)的映射已經(jīng)丟失了,除非那些原始的節(jié)點重新發(fā)起注冊刷新,注冊刷新轉(zhuǎn)到新的超級節(jié)點才可以處理相應(yīng)的在DHT里的記錄。
3 安全性分析
  安全是P2P系統(tǒng)里最需要解決的重要問題,因為整個系統(tǒng)里有很多潛在的不可信的節(jié)點。因此,在P2P SIP系統(tǒng)當中,也存在很多安全問題亟待解決。
3.1認證與授權(quán)
  用戶加入P2P 架構(gòu)的疊加層網(wǎng)絡(luò), 尤其是通信類應(yīng)用, 必須保證用戶標識的可認證性和可記憶性, 例如用戶選用號碼或郵件地址作為用戶標識來加入到網(wǎng)絡(luò)。在傳統(tǒng)的SIP網(wǎng)絡(luò)中,有集中的注冊服務(wù)器來對用戶進行鑒權(quán)和授權(quán),可以確保用戶身份不被假冒, 也可以確保用戶的個性化配置和可移動性。而在P2P SIP中,如何對用戶的用戶名、鑒權(quán)密鑰和配置數(shù)據(jù)進行P2P化存儲與服務(wù)是一個問題。對于這個問題,可以考慮采用如下幾種策略來解決:端對端的數(shù)字驗證、逐跳傳輸層安全(TLS)或者端對端S/MIME。
3.2 隱私和機密
  其主要工作是對發(fā)送到不可信賴節(jié)點的信息進行保護以及防止濫用信息。在P2P SIP網(wǎng)絡(luò)中,在用戶定位呼叫里可能包括大量的“不可信”節(jié)點,而不像在傳統(tǒng)的SIP電話系統(tǒng)" title="電話系統(tǒng)">電話系統(tǒng)里那些可信的服務(wù)器。在傳統(tǒng)的基于服務(wù)器的電話系統(tǒng)里,呼叫的雙方都對服務(wù)器是可信的,這樣就沒有安全問題。而在P2P SIP系統(tǒng)中,如何保護那些發(fā)送到不可信賴節(jié)點的信息是一個問題。另外,即使節(jié)點是可信的,但也無法保證呼叫的日志請求不會在以后被居心不良者濫用。
3.3 處理惡意節(jié)點
  假設(shè)在P2P SIP網(wǎng)絡(luò)中有一些惡意的節(jié)點,它有可能把一次呼叫轉(zhuǎn)移到了一個發(fā)起方并不想去的節(jié)點。有一種解決方法就是在逐跳的路由節(jié)點上改變源頭的標示,這樣會防止負責中轉(zhuǎn)的機器知道呼叫的源頭是誰。
3.4 避免“搭便車”
  還有另外一種威脅來自“搭便車”。一些節(jié)點使用P2P呼叫和收信服務(wù),但是拒絕成為超級節(jié)點為他人服務(wù)。系統(tǒng)應(yīng)當制定一些策略來阻止這類節(jié)點。例如,節(jié)點可以通過提供服務(wù)來獲得較高信用等級,從而獲得其他服務(wù)。每個節(jié)點都可以啟動初始信用帳戶,在NAT和防火墻后的節(jié)點,如果不能成為超級節(jié)點,則需要付出自己的信用帳戶的錢來獲得服務(wù)。那些用光了信息額度的節(jié)點、拒絕服務(wù)的節(jié)點將會降低可以獲得服務(wù)的等級,只有很少的服務(wù)可用。
  除以上分析之外,利用P2P SIP技術(shù)還可以實現(xiàn)很多高級服務(wù),不僅僅是基本的通話功能。例如:離線用戶的消息轉(zhuǎn)發(fā)、音頻/視頻郵件、多方參與的會議、穿越NAT和防火墻、數(shù)據(jù)存儲的網(wǎng)絡(luò)化等。雖然P2P SIP還處在學術(shù)研究階段,還存在各種各樣需要解決的問題,但是這種新技術(shù)的出現(xiàn),為今后提供更加方便、自由的服務(wù)創(chuàng)造了可能,因此它的發(fā)展值得人們期待。
參考文獻

[1] MILOJICIC D, KALOGERAKI V, LUKOSE R M,et al.Peer-to-peer computing[EB/OL].http://www.hpl.hp.com/techreports/2002/HPL-2002-57R1.pdf,2002.
[2] ?ROSENBERG J, SCHULZRINNE H, CAMARILLO G,et al.SIP: session initiation protocol [EB/OL]. http://www.ietf.org/rfc/rfc3261.txt, 2002-06.
[3]?ROSENBERG J,SCHULZRINNE H. Session initiation protocol(SIP): locating SIP servers[EB/OL].http://www.ietf.org/rfc/rfc3263.txt, 2002-06.
[4] ?STOICA I, MORRIS R, KARGER D, et al. Chord: A scalable peer-to-peer lookup service for internet applications[EB/OL]. http://pdos.csail.mit.edu/papers/chord:sigcomm01/chord_sigcomm.pdf, 2001-08.
[5] ?CASTRO M, DRUSCHEL P, GANESH A, et al. Security for structured peer-to-peer overlay networks[EB/OL]. http://research.microsoft.com/~antr/PAST/security.pdf, 2002-12.
[6] ?ADAR E, HUBERMAN B A. Free riding on gnutella[EB/OL].http://www.hpl.hp.com/research/idl/papers/gnutella/gnutella.pdf, 2000-10.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。