專利名稱:一種p2p客戶端數(shù)據(jù)發(fā)送管理算法的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種使因特網(wǎng)中P2P文件交換能充分利用自身網(wǎng)絡(luò)資源的P2P客戶端算法, 適用于互聯(lián)網(wǎng)P2P文件交換領(lǐng)域。
二、 背景技術(shù)-
近年來,隨著Internet的迅速發(fā)展,對等網(wǎng)絡(luò)技術(shù)(peer to peer,簡稱P2P)已經(jīng)逐 漸成為各方關(guān)注的熱門話題。P2P作為一種網(wǎng)絡(luò)模型,其中所有的節(jié)點是對等的,這些對等 的節(jié)點稱為對等點。對等點之間通過直接互聯(lián)共享信息資源、處理器資源、存儲資源甚至高 速緩存資源等,無需依賴集中式服務(wù)器或資源就可完成。與傳統(tǒng)的C / S模式相比,該模 式?jīng)]有明顯的客戶端/服務(wù)器之分,P2P模式的任何一端都可以認為同時具有服務(wù)器和客戶 端的功能,這樣,單臺PC機在從多臺機器接收數(shù)據(jù)流的同時也能向多臺機器發(fā)送數(shù)據(jù)流。 P2P下載和P2P視頻點播直播是兩種主要的P2P應(yīng)用方式,它們充分利用了客戶端的主機及 網(wǎng)絡(luò)資源,突破了傳統(tǒng)C/S模式同時在線人數(shù)的瓶頸,同時傳輸一個文件的人數(shù)越多,速度 反而越快。
由于客戶端在下載數(shù)據(jù)的同時又給其它客戶端上傳數(shù)據(jù),而眾多客戶端的網(wǎng)絡(luò)能力又 相對有限,所以客戶端要同時連接大量其它的對等客戶端同時進行數(shù)據(jù)傳輸,這必然造成用 戶端資源緊張,如果管理不好眾多的上傳數(shù)據(jù)連接,必將影響到用戶的數(shù)據(jù)下載,尤其是會 影響到P2P視頻點播直播這樣的實時性要求比較高的應(yīng)用。如果單純的降低用戶本身的上傳 數(shù)據(jù)量,將會使整個P2P系統(tǒng)性能下降,不能體現(xiàn)P2P的優(yōu)勢。
基亍以上背景,本發(fā)明提出一種P2P客戶端的發(fā)送管理算法,這種方法的基本思想是 在客戶端發(fā)送隊列中區(qū)分開數(shù)據(jù)優(yōu)先級,以保證用戶的實時下載請求及時發(fā)送出去,同時對 客戶端的發(fā)送能力進行負反饋測試,盡量提高客戶端的上傳帶寬利用率。通過這種方法,一 方面用戶的—F載請求可以被及時發(fā)出,保證了用戶體驗,另一方面客戶端充分利用了自己的 上傳帶寬,可以盡可能的為其它用戶提供上傳服務(wù),使整個P2P系統(tǒng)更加有效。
三
發(fā)明內(nèi)容
a) 發(fā)明目的
本發(fā)明的目的是提供一種可以使P2P用戶的下載請求能及時發(fā)出,同時又能充分用戶上 傳帶寬的P2P客戶端數(shù)據(jù)發(fā)送管理算法,使用這種方法后,能夠保證P2P用戶下載、點播以 及直播的服務(wù)質(zhì)量,同時充分利用客戶端的上傳帶寬,提高整個P2P系統(tǒng)的有效性。
b) 技術(shù)方案
本發(fā)明所述的客戶端算法包括兩個機制P2P客戶端發(fā)送隊列的數(shù)據(jù)優(yōu)先分級和P2P客 戶端發(fā)送能力的負反饋測試。其中P2P客戶端發(fā)送隊列數(shù)據(jù)優(yōu)先分級,對客戶端發(fā)送隊列中 的所有數(shù)據(jù)區(qū)分優(yōu)先級,優(yōu)先級高的數(shù)據(jù)先于優(yōu)先級低的數(shù)據(jù)發(fā)送;P2P客戶端發(fā)送能力的 負反饋測試將可以獲得P2P客戶端的最大上傳能力,充分利用客戶端上傳帶寬提供上傳服 務(wù)。通過這兩個機制的協(xié)調(diào)作用,可以達到P2P客戶端下載及時性和充分上傳服務(wù)的平衡。
P2P客戶端發(fā)送隊列的數(shù)據(jù)優(yōu)先分級機制的使用包括如下步驟
步驟1:對客戶端發(fā)送數(shù)據(jù)進行分類,將其分為一般數(shù)據(jù)、下載請求、緊急請求。"緊 急請求"指的是視頻點播直播的數(shù)據(jù)下載請求;"下載請求"指除了視頻點播直播這樣的實時性要求高的下載請求外的一般P2P下載請求;"一般數(shù)據(jù)"包括除了以上兩種以外的上傳 數(shù)據(jù)。對二種上傳數(shù)據(jù)附加不同標志位U (urgent), 0代表一般數(shù)據(jù),1代表下載請求,2 代表緊急請求。數(shù)字越大優(yōu)先級越高。
步驟2:將欲發(fā)送的數(shù)據(jù)插入發(fā)送隊列之中。插入規(guī)則如下順序掃描發(fā)送隊列中的 等待發(fā)送數(shù)據(jù),將欲發(fā)送數(shù)據(jù)插入到掃描時發(fā)現(xiàn)的第一個優(yōu)先級比欲發(fā)送數(shù)據(jù)低的數(shù)據(jù)之 月ij。
步驟3:按照當(dāng)前數(shù)據(jù)發(fā)送速度,在發(fā)送隊列中從前往后順序發(fā)送數(shù)據(jù)。
循環(huán)執(zhí)行步驟2和步驟3。
下面舉例說明將數(shù)據(jù)插入發(fā)送隊列的方法和效果。
假設(shè)順序產(chǎn)生優(yōu)先級分別為1, 0, 2, 1, 0的5個數(shù)據(jù)包,逐一將這5個數(shù)據(jù)包插入 發(fā)送隊列,發(fā)送隊列變化如下表1所示
發(fā)送隊列插入數(shù)據(jù)插入位置
隊列位置12345
111
1002
21021
211013
2110005
表l:將5個數(shù)據(jù)包插入發(fā)送隊列
P2P客戶端發(fā)送能力負反饋測試機制的使用包括如下步驟 (由于每次發(fā)送的數(shù)據(jù)包大小固定,可以以單位時間內(nèi)發(fā)送的數(shù)據(jù)包數(shù)量來表示數(shù)據(jù) 發(fā)送速度,下面使用的對發(fā)送速度的表示和計算都是以數(shù)據(jù)包為單位。)
步驟l:假設(shè)ISP提供的網(wǎng)絡(luò)接入的最大下行速度為v0,最大上行速度為vl,那么可 設(shè)定初始發(fā)送速度為v2 = v1/ 10,最大發(fā)送速度上限為v3 = v0 * 2。設(shè)定最高發(fā)送速度 上限v3的原因是可能本機發(fā)送能力很高,而ISP提供的網(wǎng)絡(luò)接入不能提供相應(yīng)的速度,所 以可能測出來的最大發(fā)送速度不能滿足。下面的步驟中增大發(fā)送速度的前提是增大后的速度 要小于v3,否則設(shè)定增大后的發(fā)送速度v2 = v3,繼續(xù)測試。
步驟2:在探測周期內(nèi)按設(shè)定的發(fā)送速度v2發(fā)送數(shù)據(jù)包。計算探測周期內(nèi)收到的發(fā)送 數(shù)據(jù)成功的callback數(shù)量。比較當(dāng)前發(fā)送數(shù)據(jù)包數(shù)量與callback數(shù)量R。
步驟3:當(dāng)callback數(shù)量等于發(fā)送數(shù)據(jù)包數(shù)量時,表明發(fā)送速度小于或等于上傳最大 速度,按指數(shù)增長方式增大v2,即設(shè)定v2 = vl * 2。
循環(huán)執(zhí)行步驟2和步驟3,直至callback數(shù)量第一次小于發(fā)送數(shù)據(jù)包數(shù)量時執(zhí)行步驟4。
步驟4:當(dāng)callback數(shù)量第一次小于發(fā)送數(shù)據(jù)包數(shù)量時,表明發(fā)送速度大于上傳最大 速度,v2回退一步,即設(shè)定v2 = v2 / 2。
步驟5:線性增加發(fā)送速度v2,即設(shè)定v2 = v2 + 1。
循環(huán)執(zhí)行步驟2和步驟5,直至callback數(shù)量再次小于發(fā)送數(shù)據(jù)包數(shù)量時執(zhí)行步驟6。 步驟6: callback數(shù)量再次小于發(fā)送數(shù)據(jù)包數(shù)量,表明發(fā)送速度大于上傳最大速度, v2回退一步,即設(shè)定v2 = v2 -1。
一次客戶端發(fā)送能力負反饋測試結(jié)束,設(shè)定的v2即為可估計最大上傳速度。 P2P客戶端發(fā)送能力負反饋測試流程如下圖1所示
由于網(wǎng)絡(luò)狀態(tài)的不穩(wěn)定以及用戶使用網(wǎng)絡(luò)的情況不同,經(jīng)過一段時間按最大上傳速度 發(fā)送數(shù)據(jù)之后,有可能會造成客戶端發(fā)送緩沖區(qū)累積很多數(shù)據(jù)等待發(fā)送。可以設(shè)定一個發(fā)送 確認閾值,即發(fā)送出去的數(shù)據(jù)量與收到的的發(fā)送確認callback數(shù)量的最大差值M,當(dāng)數(shù)據(jù)
4累積超過此值的時候,減小發(fā)送速度v2,包括如下步驟
步驟l:設(shè)定發(fā)送速度v2 = v2 / 2,按新的發(fā)送速度繼續(xù)發(fā)送數(shù)據(jù)。記錄發(fā)送出去的數(shù)據(jù)量與收到的發(fā)送確認callback數(shù)量的差值m。
步驟2:比較m與M。
如果m大于或等于M,則循環(huán)執(zhí)行步驟l和步驟2直至m小于M為止,之后按之前所述方法線性增長v2,找到新的最大發(fā)送速度,然后按這個速度發(fā)送數(shù)據(jù)。P2P客戶端降低發(fā)送速度流程如下圖2所示
經(jīng)過一定時間T的數(shù)據(jù)傳送后,定時啟動客戶端發(fā)送能力負反饋測試,以當(dāng)前發(fā)送速度為初始發(fā)送速度啟動負反饋測試,找到新的最大上傳速度,以保證上傳帶寬的合理利用。特殊情況處理
由亍P2P視頻點播和直播的數(shù)據(jù)請求是逐個發(fā)送的,所以P2P客戶端發(fā)送數(shù)據(jù)時是在各條鏈路上逐條鏈路循環(huán)發(fā)送,每條鏈路逐個包發(fā)送,進而在進行負反饋測試時要考慮各條鏈路的發(fā)送情況。
鏈路質(zhì)量的優(yōu)劣可以用ISP提供的最大上行速度除以鏈路總條數(shù)得到的一個平均鏈路最大速度作為參數(shù)來衡量,假如得到的平均鏈路最大速度為v4,而測得的某條鏈路的上傳速度小于v4 / 10,則可以判定該鏈路質(zhì)量差。
如果大部分的鏈路質(zhì)量都很好,只有少數(shù)質(zhì)量差,而且在檢測上行速度時同時參與測試的鏈路數(shù)量比較多,那么這些差的鏈路對于最后的計算結(jié)果影響較小,可以忽略這種微小的影響。如果同時參與測試的鏈路數(shù)比較少,那么需要處理這種對測試結(jié)果造成比較顯著影響的情況。此次參與測試的鏈路剛好是質(zhì)量差的鏈路,此時不能將這個鏈路的測試結(jié)果做為最終結(jié)果,需要對其他鏈路分別做測試,如果多數(shù)鏈路的質(zhì)量測試情況都優(yōu)于質(zhì)量差的鏈路,則可以忽略差鏈路的測試結(jié)果,以優(yōu)質(zhì)鏈路的測試結(jié)果做為最終速度。如果所有參與測試的鏈路質(zhì)量都比較差,那么即使客戶端本身的網(wǎng)絡(luò)情況較好,由于其所連接的都是鏈路差的節(jié)點,那么也只能以這個差的結(jié)果做為最終發(fā)送速度。c)有益效果
使用本發(fā)明的算法一方面可以滿足P2P客戶端的實時性數(shù)據(jù)請求及時發(fā)出,從而保證下載、點播和直播的服務(wù)質(zhì)量不被上傳所影響;另一方面又盡可能的利用了P2P客戶端的上傳帶寬,有效的提高了P2P系統(tǒng)的效率,從而使整個P2P系統(tǒng)的服務(wù)質(zhì)量得到了提升。
四
圖1: P2P客戶端發(fā)送能力負反饋測試流程圖2: P2P客戶端降低發(fā)送速度流程
五、 具體實現(xiàn)示例-
PPCDN系統(tǒng)客戶端采用了該算法。
當(dāng)客戶端運行一段時間后,隨著本地緩存數(shù)據(jù)的增加,其他客戶端向其發(fā)出的數(shù)據(jù)請求逐漸增多,通過網(wǎng)絡(luò)流量監(jiān)測工具發(fā)現(xiàn),上行流量逐漸增加,最后保持在一個穩(wěn)定的水平。通過與F載速率進行對比發(fā)現(xiàn),上行速率基本達到最大上傳速率。
PPCDN客戶端通過采用本算法,避免了在沒有上行流量控制時出現(xiàn)的大量數(shù)據(jù)擁塞網(wǎng)絡(luò)出口,造成數(shù)據(jù)請求無法正常發(fā)送的情況。同時通過對上行帶寬的管理,客戶端能夠清楚地知道當(dāng)前自己的上傳能力,當(dāng)自己的上傳能力達到極限時,對于新來的數(shù)據(jù)請求可以及時通知對方自己目前無法提供服務(wù),這樣發(fā)出數(shù)據(jù)請求客戶端能夠迅速向其他客戶端重新發(fā)出請求,從而快速取得需要的數(shù)據(jù)。
權(quán)利要求
1、一種P2P客戶端數(shù)據(jù)發(fā)送管理算法,其特征如下1)數(shù)據(jù)請求分優(yōu)先級,保證緊急數(shù)據(jù)的快速傳輸2)上傳能力探測負反饋機制,保證最大限度使用網(wǎng)絡(luò)的上行帶寬3)周期性探測機制,提高客戶端抗網(wǎng)絡(luò)抖動能力。
2、 根據(jù)權(quán)力要求1所述的一種P2P客戶端數(shù)據(jù)發(fā)送管理算法,其特征是提高了客戶端的數(shù)據(jù)上傳能力,使整個P2P網(wǎng)絡(luò)環(huán)境得到優(yōu)化,明顯改善了用戶下載體驗。
全文摘要
本發(fā)明提出一種P2P客戶端數(shù)據(jù)發(fā)送管理算法。該算法采用了以下方案1.數(shù)據(jù)請求定義了優(yōu)先級,保證緊急數(shù)據(jù)能夠優(yōu)先被發(fā)送;2.采用負反饋方式檢測網(wǎng)絡(luò)的上傳能力,探測算法在接近網(wǎng)絡(luò)上行最大能力時收斂,從而最大限度地利用了網(wǎng)絡(luò)的上行帶寬;3.周期性檢測上行帶寬情況,及時調(diào)整參數(shù),增強了客戶端抗抖動能力通過采用該算法,在不影響客戶端下載能力的同時,最大限度利用了網(wǎng)絡(luò)的上行帶寬,使整個P2P生態(tài)環(huán)境得到優(yōu)化,大大提高了用戶的使用體驗。
文檔編號H04L29/08GK101478558SQ20081011136
公開日2009年7月8日 申請日期2008年5月29日 優(yōu)先權(quán)日2008年5月29日
發(fā)明者暉 唐 申請人:北京東方網(wǎng)信科技有限公司