文/盧慧 李華 吳承勇
一種IPv4和IPv6混合網(wǎng)絡(luò)中P2P通信方法
文/盧慧1李華2吳承勇2
P2P網(wǎng)絡(luò)是一種構(gòu)建在互聯(lián)網(wǎng)上的分布式網(wǎng)絡(luò),打破了傳統(tǒng)的Client/Server模式,在網(wǎng)絡(luò)中的每個結(jié)點(diǎn)的地位都是對等的。每個結(jié)點(diǎn)既充當(dāng)服務(wù)器,為其他結(jié)點(diǎn)提供服務(wù),同時也享用其他結(jié)點(diǎn)提供的服務(wù)。由于P2P網(wǎng)絡(luò)極大提高了Internet中信息、帶寬和計(jì)算資源的利用率,因此得到了迅速發(fā)展。隨著IPv4地址的耗盡,IPv4網(wǎng)絡(luò)向IPv6網(wǎng)絡(luò)過渡成為必然,但I(xiàn)Pv4的發(fā)展已有30多年歷史,現(xiàn)有的大多數(shù)網(wǎng)絡(luò)設(shè)備都是基于IPv4設(shè)計(jì)的,在短時間內(nèi)完全實(shí)現(xiàn)IPv4到IPv6的轉(zhuǎn)換不切實(shí)際,IPv4/ IPv6混合網(wǎng)必然會長時間共存。目前多數(shù)P2P研究都是在兩個P2P結(jié)點(diǎn)之間具有相同通信協(xié)議(如IPv4)的基礎(chǔ)上進(jìn)行的。因此P2P系統(tǒng)中運(yùn)行IPv4協(xié)議的結(jié)點(diǎn)與運(yùn)行IPv6協(xié)議的結(jié)點(diǎn)之間的通信逐漸成為一個問題,如果無法解決好這個問題,P2P技術(shù)的發(fā)展必將受到阻礙。
為解決互聯(lián)網(wǎng)上運(yùn)行IPv4協(xié)議的P2P結(jié)點(diǎn)與運(yùn)行IPv6協(xié)議的P2P結(jié)點(diǎn)之間的相互通信問題,本文結(jié)合IPv4向IPv6三種過渡方案之雙協(xié)議棧技術(shù)和P2P系統(tǒng),提出一種IPv4/IPv6混合網(wǎng)絡(luò)中基于中轉(zhuǎn)結(jié)點(diǎn)的P2P通信方法。
本文賦予運(yùn)行雙協(xié)議棧的結(jié)點(diǎn)雙重角色,即它既是P2P網(wǎng)絡(luò)中的普通結(jié)點(diǎn),可以參與資源共享,又可以作為中轉(zhuǎn)結(jié)點(diǎn),實(shí)現(xiàn)IPv4結(jié)點(diǎn)和IPv6結(jié)點(diǎn)的通信。例如,IPv4結(jié)點(diǎn)需要得到IPv6網(wǎng)絡(luò)的資源時,只要發(fā)送資源轉(zhuǎn)發(fā)請求包到中轉(zhuǎn)結(jié)點(diǎn),由中轉(zhuǎn)結(jié)點(diǎn)獲取資源后發(fā)送給IPv4結(jié)點(diǎn)即可。同理IPv6結(jié)點(diǎn)也可以向中轉(zhuǎn)結(jié)點(diǎn)請求IPv4網(wǎng)絡(luò)的資源。從而實(shí)現(xiàn)IPv4/IPv6混合網(wǎng)絡(luò)中不同協(xié)議結(jié)點(diǎn)之間的通信。此法不需對網(wǎng)絡(luò)硬件做任何改動,只需要結(jié)點(diǎn)自己判斷網(wǎng)絡(luò)類型(純IPv4協(xié)議棧、純IPv6協(xié)議棧、IPv4/IPv6雙協(xié)議棧)來設(shè)定自己的結(jié)點(diǎn)類型。
本文以采用中心化拓?fù)涞腂ittorrent系統(tǒng)為研究背景,整個系統(tǒng)包括兩部分:純IPv4網(wǎng)絡(luò)的P2P子系統(tǒng)和純IPv6網(wǎng)絡(luò)的P2P子系統(tǒng),包含三類結(jié)點(diǎn),即純IPv4結(jié)點(diǎn)Peer_v4、純IPv6結(jié)點(diǎn)Peer_v6、雙協(xié)議棧結(jié)點(diǎn)Peer_v4v6(該類結(jié)點(diǎn)同時支持與IPv4和IPv6結(jié)點(diǎn)的通信),系統(tǒng)還包括安裝雙協(xié)議棧的索引服務(wù)器Tracker_v4v6、安裝雙協(xié)議棧的種子服務(wù)器。系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D如圖1所示。
當(dāng)Peer_v4可以從IPv4網(wǎng)絡(luò)的P2P子系統(tǒng)得到資源分片時,則按照正常的P2P協(xié)議進(jìn)行通信。當(dāng)Peer_v4無法從IPv4網(wǎng)絡(luò)的子系統(tǒng)得到資源分片時,則按隨即選擇策略選擇一個Peer_v4v6作為中轉(zhuǎn)結(jié)點(diǎn),根據(jù)隨機(jī)片段選擇算法挑選一個需要的片段,然后向選擇的Peer_v4v6發(fā)起資源轉(zhuǎn)發(fā)請求,由Peer_v4v6在IPv6網(wǎng)絡(luò)的P2P子系統(tǒng)中請求該資源片段,Peer_v4v6獲得該資源片段后轉(zhuǎn)發(fā)給Peer_v4。反之,Peer_v6同樣可以通過Peer_v4v6請求到來自IPv4網(wǎng)絡(luò)的P2P子系統(tǒng)的資源分片。Peer_v4v6同時在兩個P2P網(wǎng)絡(luò)子系統(tǒng)中下載分片,同時作為中轉(zhuǎn)結(jié)點(diǎn)要優(yōu)先下載來自Peer_v4或Peer_ v6資源轉(zhuǎn)發(fā)請求所要的分片。
下面詳細(xì)說明Peer_v4向Peer_v4v6發(fā)送數(shù)據(jù)中轉(zhuǎn)請求的過程。
假設(shè):圖1所示P2P系統(tǒng)中有IPv4網(wǎng)絡(luò)里的一對等端Peer_v4為機(jī)器P4_1,其IP地址是201.58.170.5;一運(yùn)行IPv4和IPv6雙協(xié)議棧的對等端Peer_v4v6為機(jī)器P46_1,其IPv4地址是201.58.173.3,IPv6地址是2001::1;IPv6網(wǎng)里的一對等端Peer_v6為機(jī)器P6_1,IP地址是2003::3。
圖1 混合網(wǎng)絡(luò)中基于請求轉(zhuǎn)發(fā)機(jī)制的P2P通信網(wǎng)絡(luò)拓?fù)?/p>
1.對等結(jié)點(diǎn)Peer獲取種子文件并向索引服務(wù)器注冊信息。
首先結(jié)點(diǎn)P4_1、P46_1和P6_1從IPv4/IPv6種子服務(wù)器獲取種子文件,并從中提取索引服務(wù)器Tracker_v4v6的信息,向Tracker_v4v6發(fā)起注冊請求,注冊信息包括Peer的結(jié)點(diǎn)標(biāo)識、IP地址(Peer_v4v6需提交IPv4和IPv6兩個地址)、結(jié)點(diǎn)類型和對等通信端口。
Tracker_v4v6收到Peer的請求消息后,保存該P(yáng)eer的信息,并將鄰居結(jié)點(diǎn)信息(包含Peer的結(jié)點(diǎn)標(biāo)識、IP地址、結(jié)點(diǎn)類型和對等通信端口)返回給該P(yáng)eer。這里的鄰居結(jié)點(diǎn)對Peer_v4來說是指IPv4網(wǎng)絡(luò)中P2P子系統(tǒng)中的鄰居結(jié)點(diǎn),包括Peer_v4與Peer_ v4v6。對Peer_v4v6來說是指整個P2P系統(tǒng)中的鄰居結(jié)點(diǎn),包括Peer_v4,Peer_v6與Peer_v4v6。對Peer_v6來說是指IPv6網(wǎng)絡(luò)的P2P子系統(tǒng)中的鄰居結(jié)點(diǎn),包括Peer_v6與Peer_v4v6。
2.Peer_v4向Peer_v4v6發(fā)送數(shù)據(jù)中轉(zhuǎn)請求的過程。
在收到鄰居結(jié)點(diǎn)信息后,P4_1啟動與P46_1的握手交互,同時,P6_1啟動與P46_1的握手交互。當(dāng)P4_1無法從當(dāng)前IPv4 P2P網(wǎng)絡(luò)得到更多新的資源分片,需要從IPv6 P2P網(wǎng)絡(luò)得到資源時,則根據(jù)情況隨機(jī)選擇一個未有的資源分片向隨機(jī)選擇的中轉(zhuǎn)結(jié)點(diǎn)(設(shè)為P46_1)發(fā)送資源轉(zhuǎn)發(fā)請求消息。P46_1通過當(dāng)前接收資源轉(zhuǎn)發(fā)請求的數(shù)目來決定是否接收該請求。如果接收該請求,且本地有該資源則發(fā)送“有資源”(Resources have)消息給P4_1。如果接收請求但本地沒有該資源則向擁有該資源的P6_1發(fā)送“請求資源”(Request)消息。
經(jīng)過一段時間的傳輸,P46_1由IPv6 P2P網(wǎng)絡(luò)從P6_1得到了該資源,通過IPv4 P2P網(wǎng)絡(luò)發(fā)送“有資源”(Resources have)消息給P4_1。P4_1收到“有資源”(Resources have)消息后,判斷自己是否擁有該資源。若有則發(fā)送取消資源轉(zhuǎn)發(fā)請求消息給P46_1,P46_1收到取消資源轉(zhuǎn)發(fā)請求后刪除資源轉(zhuǎn)發(fā)請求記錄。若還沒有該資源則發(fā)送“請求資源”(Request)消息給P46_1。P46_1收到“請求資源”(Request)消息后,發(fā)送資源給P4_1并刪除資源轉(zhuǎn)發(fā)請求記錄。
在P2P通信過程中,P4_1、P6_1和P46_1定時向Tracker_v4v6發(fā)送更新消息,告知進(jìn)度。具體通信流程如圖2所示。
Peer_v6向Peer_v4v6發(fā)送數(shù)據(jù)中轉(zhuǎn)請求的情況與之類似,不再贅述。
圖2 混合網(wǎng)絡(luò)中資源請求通信流程
本文將P2P應(yīng)用BitTorrent部署在IPv4/IPv6混合網(wǎng)絡(luò)中,通過仿真實(shí)驗(yàn)來評估基于中轉(zhuǎn)結(jié)點(diǎn)的P2P通信方法在IPv6發(fā)展過程中,對整個P2P系統(tǒng)性能的影響以及對IPv4用戶和IPv6用戶的P2P性能的影響。經(jīng)過分析,在不同時期,當(dāng)雙協(xié)議棧結(jié)點(diǎn)占純IPv6結(jié)點(diǎn)的比例小于20%時,P2P系統(tǒng)性能明顯較差,雙協(xié)議棧結(jié)點(diǎn)的數(shù)目在IPv6發(fā)展初期影響最為明顯。當(dāng)雙協(xié)議棧結(jié)點(diǎn)占純IPv6結(jié)點(diǎn)的比例大于20%時,系統(tǒng)平均完成時間穩(wěn)定在較低水平。
本方法利用IPv4/IPv6混合網(wǎng)絡(luò)中雙協(xié)議棧結(jié)點(diǎn)來中轉(zhuǎn)IPv4網(wǎng)絡(luò)與IPv6網(wǎng)絡(luò)中P2P結(jié)點(diǎn)間通信的消息,從而實(shí)現(xiàn)IPv4網(wǎng)絡(luò)中P2P結(jié)點(diǎn)與IPv6網(wǎng)絡(luò)中P2P結(jié)點(diǎn)的通信。其效率依賴于雙協(xié)議棧的數(shù)目以及如何合理利用此類結(jié)點(diǎn)進(jìn)行中轉(zhuǎn)資源。
本方法需要在原有P2P協(xié)議中加入資源中轉(zhuǎn)請求處理方面的消息處理,增加了原有協(xié)議的復(fù)雜性。但是對數(shù)據(jù)通信的流量不會有太大影響,側(cè)重于通過信息交互來合理地疏導(dǎo)數(shù)據(jù)流量,從而使文件分布更加迅速有效。
(作者單位:1為內(nèi)蒙古大學(xué)計(jì)算機(jī)學(xué)院,2為內(nèi)蒙古大學(xué)網(wǎng)絡(luò)信息中心)