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

時(shí)間:2022-09-11 03:33:00

導(dǎo)語:P2P-SIP網(wǎng)絡(luò)電話論文一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

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

混合結(jié)構(gòu)允許用戶在她的提供者可用的情況下用她的提供者注冊(cè),也可以用p2p-sip網(wǎng)絡(luò)。呼叫建立在可以用DNS解析時(shí)被發(fā)送到SIP目的地,同樣也可以用P2P-SIP網(wǎng)絡(luò)。

3設(shè)計(jì)和實(shí)現(xiàn)

3.1命名

結(jié)點(diǎn)和用戶標(biāo)識(shí)符是用SIP通用資源標(biāo)志符(URI)表示的。例如,如果一個(gè)結(jié)點(diǎn)在傳輸?shù)刂?92.1.2.3:8054上監(jiān)聽SIP消息并且Chord的哈希函數(shù)給出的鍵值是17,結(jié)點(diǎn)的URI就是sip:17@192.1.2.3:8054。域中的一個(gè)不知道傳輸?shù)刂返慕Y(jié)點(diǎn)標(biāo)識(shí)符或鍵值(例如10)表示為sip:10@。每一個(gè)局部的P2P-SIP網(wǎng)絡(luò)用一個(gè)DNS域名表示,example.invalid用于沒有域的鍵,例如全局DHT中的鍵。這樣的結(jié)點(diǎn)標(biāo)識(shí)符對(duì)于DHT的維護(hù)是有用的,例如,查詢另外一個(gè)結(jié)點(diǎn)的傳輸?shù)刂穪沓蔀檫@個(gè)結(jié)點(diǎn)的指針表的入口。

用戶標(biāo)識(shí)符可以由系統(tǒng)隨機(jī)分配,或由用戶選擇一個(gè)鑒定名(如,alice172@)或者用戶選擇她的有效email地址(如alice@)。前兩種方法允許用戶選擇密碼,但是不清楚P2P結(jié)點(diǎn)怎樣從用戶那里得到密碼。我們使用最后一種方法,因?yàn)樗试S系統(tǒng)產(chǎn)生一個(gè)隨機(jī)密碼并email給用戶用作驗(yàn)證。前兩種方法,如果密碼由系統(tǒng)隨機(jī)產(chǎn)生并且SIPREGISTER請(qǐng)求消息的連接頭里有email地址,密碼可以發(fā)給用戶。

3.2認(rèn)證

當(dāng)一個(gè)用戶第一次登陸P2P-SIP網(wǎng)絡(luò)時(shí),我們需要驗(yàn)證用戶的標(biāo)識(shí)符是有效的并且確實(shí)屬于該用戶。沒有公共密鑰結(jié)構(gòu)(PKI),系統(tǒng)可以產(chǎn)生一個(gè)新的密碼并用email發(fā)送給用戶。這個(gè)密碼在后來的撥入當(dāng)中用于注冊(cè)驗(yàn)證??梢允褂靡粋€(gè)可用的生存時(shí)間,比如一個(gè)月。當(dāng)用戶隨后再登陸時(shí)這些信息被刷新。

3.3SIP消息

SIPREGISTER消息被結(jié)點(diǎn)既用于用戶注冊(cè)也用于DHT的維護(hù)。用戶注冊(cè)消息類似于基于服務(wù)器的注冊(cè),To頭表示用戶標(biāo)識(shí)符,Contact頭表示用戶的聯(lián)系位置。

結(jié)點(diǎn)將SIPREGISTER消息用于兩種情況:查詢和更新。如果消息中有Contact頭,則是更新請(qǐng)求表示發(fā)送者想更新To頭中用戶標(biāo)識(shí)符的綁定;否則就是一個(gè)查詢請(qǐng)求,發(fā)送者請(qǐng)求獲得To頭中用戶標(biāo)識(shí)符的Contact信息;在一個(gè)P2P-SIP結(jié)點(diǎn)的Chord網(wǎng)絡(luò)中結(jié)點(diǎn)的Contact信息包括它自己的傳輸?shù)刂罚罄^結(jié)點(diǎn)地址和前導(dǎo)結(jié)點(diǎn)地址。

3.4DHT發(fā)現(xiàn)和加入

結(jié)點(diǎn)發(fā)送SIPREGISTER消息使用sip:224.0.1.75(SIPREGISTER組播IPv4地址)作為請(qǐng)求URI,To頭作為本地結(jié)點(diǎn)標(biāo)識(shí)符來發(fā)現(xiàn)本地網(wǎng)絡(luò)中的其他P2P-SIP端點(diǎn)。也可以使用像服務(wù)定位協(xié)議(SLP)和預(yù)配置的自舉結(jié)點(diǎn)地址這樣的額外機(jī)制。結(jié)點(diǎn)存儲(chǔ)發(fā)現(xiàn)的端點(diǎn)地址列表用于以后的重新啟動(dòng)。

一旦結(jié)點(diǎn)發(fā)現(xiàn)一個(gè)端點(diǎn),它通過發(fā)送一個(gè)以To頭作為此結(jié)點(diǎn)標(biāo)識(shí)符的SIPREGISTER查詢給那個(gè)端點(diǎn)加入DHT。成功的應(yīng)答包括現(xiàn)存的DHT中的此結(jié)點(diǎn)的后繼和前導(dǎo),結(jié)點(diǎn)可以用來更新它的Chord數(shù)據(jù)結(jié)構(gòu)。

結(jié)點(diǎn)一旦知道它在Chord環(huán)里的鄰居,就向它們(后繼和前導(dǎo))發(fā)送SIPREGISTER更新,這樣就可以更新它們的數(shù)據(jù)結(jié)構(gòu)。

Chord的穩(wěn)定性是通過周期性的發(fā)送SIPREGISTER消息更新后繼和前導(dǎo)的數(shù)據(jù)結(jié)構(gòu)以及查詢指針表入口以校驗(yàn)本地?cái)?shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)的。

3.5SIP消息路由

Chord里的每個(gè)結(jié)點(diǎn)對(duì)基于它在Chord環(huán)里的位置的鍵空間的一個(gè)子集負(fù)責(zé)。當(dāng)結(jié)點(diǎn)收到一個(gè)SIP請(qǐng)求,它提取出目標(biāo)鍵作為REGISTER請(qǐng)求的To頭URI和其他任何請(qǐng)求的請(qǐng)求URI。對(duì)REGISTER請(qǐng)求,如果目的鍵值屬于這個(gè)結(jié)點(diǎn)的鍵空間,則這個(gè)結(jié)點(diǎn)應(yīng)該是目的鍵的登記者。如果這個(gè)鍵的用戶記錄存在,則發(fā)送一個(gè)成功的應(yīng)答,否則就發(fā)送一個(gè)失敗的應(yīng)答。成功的應(yīng)答包含用戶的連接位置或結(jié)點(diǎn)聯(lián)系(本地傳輸?shù)刂?,后繼和前導(dǎo)地址)分別用于用戶或結(jié)點(diǎn)注冊(cè)。如果結(jié)點(diǎn)收到一個(gè)非REGISTER請(qǐng)求,它為目標(biāo)用戶提供或?qū)⒄?qǐng)求重定向到可用的用戶連接位置。如果目標(biāo)鍵值不屬于這個(gè)結(jié)點(diǎn)的鍵空間,則請(qǐng)求被到基于Chord算法和數(shù)據(jù)結(jié)構(gòu)的下一跳結(jié)點(diǎn)。

3.6可靠性

Chord通過存儲(chǔ)㏒(N)個(gè)后繼地址以及在K(常量)個(gè)成功的后繼結(jié)點(diǎn)中復(fù)制鍵來提供結(jié)點(diǎn)失敗時(shí)的可靠性。在P2P-SIP中,結(jié)點(diǎn)更新應(yīng)答包含所有㏒(N)后繼地址,并且用戶注冊(cè)信息被復(fù)制到K個(gè)后繼結(jié)點(diǎn)中。

當(dāng)一個(gè)結(jié)點(diǎn)有序地離開網(wǎng)絡(luò)時(shí),它會(huì)注銷它的后繼和前導(dǎo)以便他們可以更新Chord數(shù)據(jù)結(jié)構(gòu)。并把所有的注冊(cè)轉(zhuǎn)移到它的后繼。當(dāng)一個(gè)結(jié)點(diǎn)異常地失敗時(shí),它的后繼和前導(dǎo)發(fā)現(xiàn)這個(gè)失敗并且更新他們的數(shù)據(jù)結(jié)構(gòu)。算法的穩(wěn)定性保證了信息能夠在一段時(shí)間內(nèi)傳播到Chord中的其他相應(yīng)的結(jié)點(diǎn)。

注冊(cè)信息由結(jié)點(diǎn)A傳到結(jié)點(diǎn)B,如果結(jié)點(diǎn)B信任結(jié)點(diǎn)A就可以鑒定結(jié)點(diǎn)A,否則結(jié)點(diǎn)B重新生成一個(gè)密碼并發(fā)送給用戶的email地址。一旦我們擁有一個(gè)P2P名譽(yù)系統(tǒng),DHT中將只存在可信任的結(jié)點(diǎn)。如果注冊(cè)結(jié)點(diǎn)是惡意的則問題仍然存在,而且可能造成拒絕服務(wù)攻擊(DoS)。

存儲(chǔ)用戶注冊(cè)信息的P2P-SIP結(jié)點(diǎn)也到那個(gè)用戶的呼叫請(qǐng)求。一旦呼叫建立完成,呼叫路徑中就不再需要P2P-SIP結(jié)點(diǎn)。

3.7現(xiàn)存SIP電話的適配器

一個(gè)SIP用戶商可以將P2P-SIP結(jié)點(diǎn)當(dāng)作是輸出參與P2P-SIP網(wǎng)絡(luò)。用各種各樣的SIP用戶商,例如哥倫比亞大學(xué)的sipc、思科IPphone7960、PingtelIPphone、XtenNetwork的X-Liteclientv2.0和MicrosoftWindowsMessenger,測(cè)試了P2P-SIP適配器SIPPEER。

一些電話不像SIP規(guī)范[1]中說的輸出應(yīng)該被當(dāng)作預(yù)裝載的路由集那樣執(zhí)行輸出。實(shí)際上,如果輸出不記錄路由最初的INVITE請(qǐng)求,則后來的對(duì)話中的請(qǐng)求(例BYE)不應(yīng)該發(fā)送給。假定sipc用戶alice@使用P2P-SIP邀請(qǐng)思科phone用戶bob@。呼叫后,bob掛斷。思科phone發(fā)送BYE請(qǐng)求給輸出(P2P-SIP結(jié)點(diǎn))但是請(qǐng)求URI包含alice@pc2.examole:5060。因?yàn)檫@個(gè)URI可能沒有在P2P-SIP網(wǎng)絡(luò)中注冊(cè),P2P-SIP結(jié)點(diǎn)可能不能請(qǐng)求,這將引起DHT查找失敗。在SIPPEER中通過在這種情況下請(qǐng)求到請(qǐng)求URI代替DHT查找來解決這個(gè)問題。

4結(jié)束語

我們提出了純P2P結(jié)構(gòu)的SIP電話。除了與現(xiàn)存的SIP結(jié)構(gòu)的互操作性,這個(gè)結(jié)構(gòu)還提供了可靠性和P2P系統(tǒng)固有的擴(kuò)展性。今后還需要在像使用P2P的大規(guī)模應(yīng)用層組播會(huì)議這樣的高級(jí)服務(wù)方面以及像認(rèn)證和計(jì)費(fèi)之類的與PSTN協(xié)同工作的相關(guān)因素方面做更多的研究。

參考文獻(xiàn):

[1]J.Rosenberg,H.Schulzrinne,G.Camarillo,A.R.Johnston,J.Peterson,R.Sparks,M.Handley,andE.Schooler.SIP:sessioninitiationprotocol.RFC3261,InternetEngineeringTaskForce,June2002.

[2]/techreports/2002/HPL-2002-57.html.

[3]I.Stoica,R.Morris,D.Karger,F.Kaashoek,andH.Balakrishnan.Chord:Ascalablepeer-to-peerlookupserviceforinternetapplications.InSIGCOMM,SanDiego,CA,USA,Aug2001.

[4]J.RosenbergandH.Schulzrinne.Sessioninitiationprotocol(SIP):locatingSIPservers.RFC3263,InternetEngineeringTaskForce,June2002.

[5]www.cs.columbia.edu/˜kns10/publication/sip-p2pdesign.pdf.

[6]/html.charters/zeroconf-charter.html.

[7].

[8]J.Rosenberg.Interactiveconnectivityestablishment(ICE):amethodologyfornettworkaddresstranslator(NAT)traversalforthesessioninitiationprotocol(SIP).Internetdraft,

InternetEngineeringTaskForce,July2003.Workinprogress.

[9]K.SinghandH.Schulzrinne.Peer-to-peerInternettelephonyusingSIP.TechnicalReportCUCS-044-04,DepartmentofComputerScience,ColumbiaUniversity,NewYork,NY,

Oct.2004.

[10]/p2p/.

[11]/technology/Voip/2005/06/voip0644.htm