專利名稱:對(duì)等網(wǎng)絡(luò)中節(jié)點(diǎn)搭便車(chē)行為抑制方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),具體涉及一種對(duì)等(Peer-to-Peer,P2P)網(wǎng)絡(luò)中節(jié)點(diǎn)搭便車(chē)(Free riding)行為抑制方法。
背景技術(shù):
對(duì)等網(wǎng)絡(luò)技術(shù)在提出之初期望各個(gè)節(jié)點(diǎn)竭盡全力為對(duì)等網(wǎng)絡(luò)中的其它節(jié)點(diǎn)服務(wù),對(duì)節(jié)點(diǎn)的自私行為約束機(jī)制較少。然而2000年以來(lái),在全世界范圍內(nèi)對(duì)多個(gè)大型對(duì)等網(wǎng)絡(luò)流量測(cè)量結(jié)果表明,多數(shù)節(jié)點(diǎn)存在嚴(yán)重的自私行為。其自私行為主要表現(xiàn)如下第一、節(jié)點(diǎn)不共享文件或僅僅共享數(shù)量極少的文件;第二、節(jié)點(diǎn)只共享那些幾乎沒(méi)有其它用戶感興趣的文件;第三、節(jié)點(diǎn)不為對(duì)等網(wǎng)絡(luò)提供路由中轉(zhuǎn)服務(wù)或者對(duì)其它用戶發(fā)出的服務(wù)請(qǐng)求不予響應(yīng),以上行為被稱為搭便車(chē)(Free Riding)。
普遍存在的搭便車(chē)現(xiàn)象導(dǎo)致對(duì)等網(wǎng)絡(luò)中節(jié)點(diǎn)服務(wù)負(fù)載出現(xiàn)了嚴(yán)重的不平衡,90%以上的節(jié)點(diǎn)僅僅是享受服務(wù),而不足10%的節(jié)點(diǎn)在為整個(gè)對(duì)等網(wǎng)絡(luò)提供服務(wù)。因此,極少數(shù)節(jié)點(diǎn)維持的對(duì)等網(wǎng)絡(luò)應(yīng)用連接數(shù)極高,工作負(fù)載極大。已有的對(duì)等網(wǎng)絡(luò)經(jīng)濟(jì)理論研究和對(duì)等網(wǎng)絡(luò)實(shí)際測(cè)量結(jié)果均表明搭便車(chē)行為易導(dǎo)致對(duì)等網(wǎng)絡(luò)抗協(xié)同攻擊能力低和生命周期短,特別是少數(shù)高負(fù)載節(jié)點(diǎn)退出將導(dǎo)致對(duì)等網(wǎng)絡(luò)大面積服務(wù)終止,從而網(wǎng)絡(luò)的可靠性和可用性降低。
目前抑制節(jié)點(diǎn)搭便車(chē)行為的主要技術(shù)是基于激勵(lì)機(jī)制的方法和基于博弈論的方法。
激勵(lì)機(jī)制的方法其基本思路是所有節(jié)點(diǎn)在對(duì)等網(wǎng)絡(luò)中能享受的服務(wù)質(zhì)量與其所作貢獻(xiàn)大小成比率關(guān)系。通常節(jié)點(diǎn)加入到對(duì)等網(wǎng)絡(luò)后,立即強(qiáng)制性地成為提供下載服務(wù)的“種子節(jié)點(diǎn)”。種子節(jié)點(diǎn)提供的下載服務(wù)越多,那么它自身能享受的服務(wù)越好。激勵(lì)機(jī)制的方法目前已有較多應(yīng)用,如BitTorrent中即采用了該方法。然而相當(dāng)數(shù)量的對(duì)等網(wǎng)絡(luò)節(jié)點(diǎn)(據(jù)報(bào)道Gnutella網(wǎng)絡(luò)中超過(guò)30%)處于防火墻或NAT(Network Access Translation)后,物理網(wǎng)絡(luò)條件的局限導(dǎo)致這些節(jié)點(diǎn)難以為其它節(jié)點(diǎn)提供下載和路由轉(zhuǎn)發(fā)服務(wù)。根據(jù)基于激勵(lì)機(jī)制的方法,這些節(jié)點(diǎn)能享受的服務(wù)質(zhì)量都很低。較低的服務(wù)質(zhì)量將導(dǎo)致用戶對(duì)該對(duì)等網(wǎng)絡(luò)應(yīng)用興趣降低,用戶數(shù)量下降,不利于對(duì)等網(wǎng)絡(luò)的商業(yè)運(yùn)營(yíng)。另外,基于激勵(lì)機(jī)制的方法在防止節(jié)點(diǎn)惡意欺騙行為方面存在較大困難。
基于博弈論的方法,采用求解Nash均衡的方法分析節(jié)點(diǎn)如何采取有利于自身利益的最優(yōu)行為策略集。該方法計(jì)算復(fù)雜性高且一般需要收集實(shí)時(shí)的對(duì)等網(wǎng)絡(luò)全局狀態(tài)信息,而大型對(duì)等網(wǎng)絡(luò)很難提供全局狀態(tài)信息,因此該方法工程實(shí)現(xiàn)困難,至今還未見(jiàn)其在實(shí)際大型對(duì)等網(wǎng)絡(luò)應(yīng)用的報(bào)道。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種對(duì)等網(wǎng)絡(luò)中節(jié)點(diǎn)搭便車(chē)行為抑制方法。該方法可以盡力向?qū)Φ染W(wǎng)絡(luò)各個(gè)節(jié)點(diǎn)提供較高服務(wù)質(zhì)量、保證整個(gè)對(duì)等網(wǎng)絡(luò)的穩(wěn)定性,減少部分節(jié)點(diǎn)的搭便車(chē)行為。
本發(fā)明提供的對(duì)等網(wǎng)絡(luò)中節(jié)點(diǎn)搭便車(chē)行為抑制方法,其步驟包括(1)獲取節(jié)點(diǎn)的服務(wù)狀態(tài)過(guò)載閾值,服務(wù)狀態(tài)包括對(duì)等網(wǎng)絡(luò)服務(wù)狀態(tài)、計(jì)算資源服務(wù)狀態(tài)和網(wǎng)絡(luò)通信資源服務(wù)狀態(tài);(2)各節(jié)點(diǎn)定期監(jiān)測(cè)所在主機(jī)的服務(wù)狀態(tài)信息,設(shè)采樣周期p;(3)判斷節(jié)點(diǎn)是否處于過(guò)載狀態(tài),如果節(jié)點(diǎn)過(guò)載,進(jìn)入步驟(4);否則進(jìn)入步驟(7);(4)選擇鄰近搭便車(chē)節(jié)點(diǎn)作為共享資源轉(zhuǎn)移的目標(biāo)節(jié)點(diǎn)集;(5)過(guò)載節(jié)點(diǎn)將訪問(wèn)頻率高的共享資源轉(zhuǎn)換到目標(biāo)節(jié)點(diǎn)集;(6)通知對(duì)等網(wǎng)絡(luò)應(yīng)用軟件更新路由,進(jìn)入步驟(8);(7)休眠一個(gè)采樣周期p;(8)重復(fù)步驟(2)-(7),直至節(jié)點(diǎn)退出對(duì)等網(wǎng)絡(luò)。
本發(fā)明逐步地將服務(wù)負(fù)載和共享資源從高負(fù)載節(jié)點(diǎn)轉(zhuǎn)移到鄰近搭便車(chē)節(jié)點(diǎn),迫使部分搭便車(chē)節(jié)點(diǎn)為對(duì)等網(wǎng)絡(luò)作貢獻(xiàn),因此可以抑制對(duì)等網(wǎng)絡(luò)中節(jié)點(diǎn)的搭便車(chē)行為,有效提高對(duì)等網(wǎng)絡(luò)的健壯性、抗協(xié)同攻擊能力和生命周期。另外本發(fā)明還具有以下三個(gè)特征。
第一、本發(fā)明提出的抑制方法對(duì)于對(duì)等網(wǎng)絡(luò)節(jié)點(diǎn)用戶而言,具有高度的透明性。這種透明性表現(xiàn)為首先、用戶不需要在使用軟件之初就必須指定節(jié)點(diǎn)應(yīng)為對(duì)等網(wǎng)絡(luò)作多少貢獻(xiàn),不需要被迫接收享受的服務(wù)質(zhì)量與所作貢獻(xiàn)大小相關(guān)聯(lián)的策略,不需要人為選擇節(jié)點(diǎn)的行為策略;其次、共享資源轉(zhuǎn)移過(guò)程不需要用戶人工干預(yù)。這種透明性既符合多數(shù)節(jié)點(diǎn)用戶的自私心理,又便于用戶使用對(duì)等網(wǎng)絡(luò)軟件,因此能吸引更多的用戶,從而為對(duì)等網(wǎng)絡(luò)運(yùn)營(yíng)商帶來(lái)更多經(jīng)濟(jì)效益。而采用基于激勵(lì)機(jī)制的方法,節(jié)點(diǎn)用戶一般在加入對(duì)等網(wǎng)絡(luò)之初,就必須指定節(jié)點(diǎn)應(yīng)為對(duì)等網(wǎng)絡(luò)提供的服務(wù)質(zhì)量和數(shù)量,因此既增加軟件使用復(fù)雜度,又降低自私主義者的參與興趣。
第二、本發(fā)明為防火墻和NAT服務(wù)器后的所有節(jié)點(diǎn)提供了較高質(zhì)量的服務(wù),有利于維護(hù)整個(gè)對(duì)等網(wǎng)絡(luò)用戶的服務(wù)質(zhì)量?;诩?lì)機(jī)制的搭便車(chē)行為抑制技術(shù),它根據(jù)節(jié)點(diǎn)享受的服務(wù)質(zhì)量與所作貢獻(xiàn)成比率的原則,對(duì)防火墻和NAT服務(wù)器后的節(jié)點(diǎn)僅提供低質(zhì)量的服務(wù)甚至拒絕提供服務(wù)。本發(fā)明客觀考慮部分節(jié)點(diǎn)在物理連接方式(如采用ADSL方式連接,網(wǎng)絡(luò)下行速度遠(yuǎn)大于網(wǎng)絡(luò)上行傳輸速度)和物理網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)(如沒(méi)有全球唯一的IP地址)方面存在局限,認(rèn)為它們并不是搭便車(chē)者,而是物理網(wǎng)絡(luò)條件局限使得它們很難為對(duì)等網(wǎng)絡(luò)作貢獻(xiàn)。本發(fā)明在抑制節(jié)點(diǎn)搭便車(chē)行為時(shí),對(duì)該類節(jié)點(diǎn)不采取嚴(yán)厲的懲罰措施,只要整個(gè)對(duì)等網(wǎng)絡(luò)服務(wù)質(zhì)量能得到保證,本發(fā)明就盡力為這些節(jié)點(diǎn)提供服務(wù)。該類節(jié)點(diǎn)數(shù)量占Gnutella對(duì)等網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)量的30%以上,其它系統(tǒng)亦類似,因此本發(fā)明提高了對(duì)等網(wǎng)絡(luò)的服務(wù)質(zhì)量。
第三、以往搭便車(chē)行為抑制技術(shù)一般是針對(duì)特定對(duì)等網(wǎng)絡(luò)應(yīng)用進(jìn)行開(kāi)發(fā),而本方法提供了一種通用的抑制方法,可以在不同場(chǎng)景中應(yīng)用。特別是本方法的具體實(shí)現(xiàn)被封裝為軟件中間件,其它對(duì)等網(wǎng)絡(luò)應(yīng)用軟件開(kāi)發(fā)者無(wú)需了解本發(fā)明的詳細(xì)技術(shù)細(xì)節(jié),就能快速實(shí)現(xiàn)對(duì)等網(wǎng)絡(luò)節(jié)點(diǎn)搭便車(chē)行為抑制,具有工程可應(yīng)用性強(qiáng)的特點(diǎn)。
圖1是本發(fā)明節(jié)點(diǎn)搭便車(chē)行為抑制方法流程圖。
圖2是節(jié)點(diǎn)主機(jī)服務(wù)狀態(tài)監(jiān)測(cè)指標(biāo)表。
圖3為共享資源轉(zhuǎn)移實(shí)例圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明做進(jìn)一步說(shuō)明。
本發(fā)明的技術(shù)思路是尋求一種分布式、工程可實(shí)踐性強(qiáng)的搭便車(chē)行為抑制技術(shù)。該技術(shù)能針對(duì)部分節(jié)點(diǎn)所處的物理網(wǎng)絡(luò)環(huán)境,允許對(duì)等網(wǎng)絡(luò)盡力為防火墻和NAT后的節(jié)點(diǎn)服務(wù);能定期監(jiān)測(cè)節(jié)點(diǎn)機(jī)器的服務(wù)狀態(tài);當(dāng)極少數(shù)節(jié)點(diǎn)監(jiān)測(cè)到自身處于過(guò)載狀態(tài)之后,立即將過(guò)載節(jié)點(diǎn)上的共享資源(如文件)和服務(wù)負(fù)載(如查詢請(qǐng)求響應(yīng))透明地轉(zhuǎn)移到鄰近互連的搭便車(chē)節(jié)點(diǎn);因此搭便車(chē)節(jié)點(diǎn)中的共享資源數(shù)量增加、響應(yīng)的服務(wù)請(qǐng)求數(shù)增多,抑制了節(jié)點(diǎn)的搭便車(chē)行為。
如圖1所示,本發(fā)明方法包括以下幾個(gè)步驟(1)獲取節(jié)點(diǎn)的服務(wù)狀態(tài)過(guò)載閾值。
監(jiān)測(cè)節(jié)點(diǎn)所在機(jī)器的服務(wù)狀態(tài)是本發(fā)明得以實(shí)現(xiàn)的根本,圖2中列出了本發(fā)明最關(guān)注的節(jié)點(diǎn)服務(wù)狀態(tài)監(jiān)測(cè)指標(biāo)。本發(fā)明把收集到的服務(wù)狀態(tài)信息與已規(guī)定的閾值進(jìn)行比較,判斷節(jié)點(diǎn)是否處于過(guò)載狀態(tài)。為了方便用戶使用,實(shí)現(xiàn)本發(fā)明必須既允許用戶設(shè)置閾值,又給出缺省閾值,所有閾值都保存在一個(gè)文本配置文件中。當(dāng)搭便車(chē)抑制程序開(kāi)始運(yùn)行時(shí),程序首先讀取該配置文件。
圖2中所描述的節(jié)點(diǎn)服務(wù)狀態(tài)監(jiān)測(cè)指標(biāo),其閾值取值類型分為兩大類。一類是百分比類型數(shù)值,包括CPU計(jì)算資源利用率和網(wǎng)絡(luò)帶寬資源利用率。本發(fā)明中對(duì)百分比類型數(shù)值的缺省閾值是80%。盡管本技術(shù)允許用戶自定義閾值,但為了防止節(jié)點(diǎn)的自私行為,用戶自定義的服務(wù)狀態(tài)閾值不能低于30%。當(dāng)用戶自定義閾值低于30%時(shí),系統(tǒng)自動(dòng)將其變?yōu)?0%,從而可以避免自私節(jié)點(diǎn)逃避為系統(tǒng)服務(wù)。
另一類閾值是整數(shù)值,如節(jié)點(diǎn)共享資源數(shù)量、節(jié)點(diǎn)共享資源文件大小(MB)、對(duì)等網(wǎng)絡(luò)服務(wù)連接數(shù)、對(duì)等網(wǎng)絡(luò)接收服務(wù)請(qǐng)求數(shù)、對(duì)等網(wǎng)絡(luò)響應(yīng)服務(wù)請(qǐng)求數(shù)、對(duì)等網(wǎng)絡(luò)轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)數(shù)、TCP主動(dòng)連接數(shù)、TCP被動(dòng)連接數(shù)。由于支持的最大連接數(shù)與具體的服務(wù)類型緊密相關(guān),本發(fā)明僅定義一個(gè)較大的缺省數(shù)值。
閾值設(shè)置只需要做一次,然后將閾值配置信息長(zhǎng)期保存在閾值配置文件中。當(dāng)節(jié)點(diǎn)設(shè)置的閾值無(wú)改變時(shí),本方案在每次執(zhí)行過(guò)程中都先主動(dòng)讀取已有的閾值設(shè)置信息,而無(wú)須每次都重新設(shè)置閾值。
(2)各節(jié)點(diǎn)定期監(jiān)測(cè)節(jié)點(diǎn)所在主機(jī)的服務(wù)狀態(tài)信息。
本步驟需要監(jiān)測(cè)的服務(wù)狀態(tài)信息涉及應(yīng)用軟件、硬件資源和網(wǎng)絡(luò)通信資源三個(gè)方面。圖2中節(jié)點(diǎn)共享資源數(shù)量、節(jié)點(diǎn)共享資源文件大小、對(duì)等網(wǎng)絡(luò)服務(wù)連接數(shù)、對(duì)等網(wǎng)絡(luò)接收服務(wù)請(qǐng)求數(shù)、對(duì)等網(wǎng)絡(luò)響應(yīng)服務(wù)請(qǐng)求數(shù)、對(duì)等網(wǎng)絡(luò)轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)數(shù)屬于對(duì)等網(wǎng)絡(luò)服務(wù)狀態(tài)信息;CPU計(jì)算資源屬于主機(jī)硬件資源;TCP主動(dòng)連接數(shù)、TCP被動(dòng)連接數(shù)和網(wǎng)絡(luò)帶寬利用率屬于網(wǎng)絡(luò)通信資源信息。所有的操作系統(tǒng)都提供了應(yīng)用程序接口(API)去監(jiān)測(cè)主機(jī)硬件資源的利用率狀態(tài)信息,然而它們很難或不能直接提供網(wǎng)絡(luò)通信資源和對(duì)等網(wǎng)絡(luò)應(yīng)用軟件狀態(tài)的監(jiān)測(cè)信息。簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)可以提供軟硬件資源和網(wǎng)絡(luò)帶寬服務(wù)狀態(tài)信息,但也不能直接提供應(yīng)用軟件狀態(tài)信息。在實(shí)現(xiàn)步驟(2)時(shí),應(yīng)采用調(diào)用API和使用簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議相結(jié)合的主機(jī)狀態(tài)監(jiān)測(cè)方法。
利用簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議,可以監(jiān)測(cè)機(jī)器的CPU計(jì)算資源利用率和通信帶寬利用率。在實(shí)現(xiàn)過(guò)程中,可以利用一些大眾化的SNMP軟件包,如Adventnet,在程序中讀取SNMP Agent中的MIB信息??紤]到網(wǎng)絡(luò)管理協(xié)議的標(biāo)準(zhǔn)性和通用性,關(guān)于主機(jī)服務(wù)狀態(tài)信息,本發(fā)明建議程序必須遵守RFC1514協(xié)議;關(guān)于網(wǎng)絡(luò)通信服務(wù)狀態(tài),本發(fā)明建議程序必須遵守RFC1213協(xié)議。
實(shí)現(xiàn)本發(fā)明的軟件中間件建議使用Java或C++。使用Java實(shí)現(xiàn)的中間件軟件跨平臺(tái)性好,且有比較豐富的SNMP軟件包功能支持,但在調(diào)用Windows和Linux操作系統(tǒng)API時(shí),需要使用JNI技術(shù)。使用C++,則可以直接調(diào)用操作系統(tǒng)提供的API來(lái)監(jiān)測(cè)節(jié)點(diǎn)機(jī)器的狀態(tài)信息,但其跨平臺(tái)性較弱??紤]到當(dāng)前的對(duì)等網(wǎng)絡(luò)應(yīng)用系統(tǒng)開(kāi)發(fā)以Java和C++居多,因此建議兩種語(yǔ)言實(shí)現(xiàn)的軟件包都提供。
另外,對(duì)等網(wǎng)絡(luò)節(jié)點(diǎn)在軟件配置方面存在差異,特別是操作系統(tǒng)方面的差異對(duì)調(diào)用操作系統(tǒng)提供的API有較大影響。實(shí)現(xiàn)本發(fā)明過(guò)程中,要特別重點(diǎn)考慮兩類應(yīng)用最廣泛的操作系統(tǒng)Windows和Linux。通常Linux操作系統(tǒng)是自動(dòng)開(kāi)啟SNMP Agent服務(wù),而Windows不開(kāi)啟。因此針對(duì)Windows操作系統(tǒng),本發(fā)明要特別注意主動(dòng)開(kāi)啟系統(tǒng)的SNMP服務(wù),否則無(wú)法采集到SNMP Agent中的MIB信息。
關(guān)于對(duì)等網(wǎng)絡(luò)服務(wù)的狀態(tài)信息,本發(fā)明需要獲得對(duì)等網(wǎng)絡(luò)服務(wù)開(kāi)發(fā)者的支持??梢酝ㄟ^(guò)兩種方法來(lái)實(shí)現(xiàn)該項(xiàng)功能,一種是對(duì)等網(wǎng)絡(luò)應(yīng)用程序定期把數(shù)據(jù)寫(xiě)在某個(gè)配置文件中,然后狀態(tài)監(jiān)測(cè)中間件軟件定期執(zhí)行讀操作,另一種實(shí)現(xiàn)方法是直接通過(guò)消息機(jī)制通知監(jiān)測(cè)中間件軟件。
本發(fā)明采用主動(dòng)輪詢監(jiān)測(cè)方式。采樣周期記為p,采樣時(shí)間周期可由用戶指定。
(3)判斷節(jié)點(diǎn)是否處于過(guò)載狀態(tài)。
根據(jù)監(jiān)測(cè)節(jié)點(diǎn)資源所讀取服務(wù)狀態(tài)信息,判定節(jié)點(diǎn)是否處于過(guò)載狀態(tài)。在此步驟需要注意的是由于表2中列出了多個(gè)監(jiān)測(cè)指標(biāo),可能出現(xiàn)一些指標(biāo)超過(guò)閾值,而另外一些指標(biāo)沒(méi)有超過(guò)指定閾值的現(xiàn)象。對(duì)此,本技術(shù)規(guī)定只要圖2中給定的監(jiān)測(cè)指標(biāo)有任意三項(xiàng)超過(guò)預(yù)定閾值,即認(rèn)定該節(jié)點(diǎn)處于過(guò)載狀態(tài)。
(4)當(dāng)節(jié)點(diǎn)發(fā)現(xiàn)自身過(guò)載,則選擇鄰近搭便車(chē)節(jié)點(diǎn)作為共享資源轉(zhuǎn)移的目標(biāo)節(jié)點(diǎn)集。
可以采用多種方式選擇鄰近搭便車(chē)節(jié)點(diǎn)作為共享資源轉(zhuǎn)移的目標(biāo)節(jié)點(diǎn)集。下面列舉一種方式予以說(shuō)明選擇過(guò)程(4.1)節(jié)點(diǎn)發(fā)現(xiàn)自身過(guò)載,則立即向所連接的全體鄰近節(jié)點(diǎn)發(fā)送負(fù)載狀態(tài)信息查詢請(qǐng)求。對(duì)等網(wǎng)絡(luò)中各鄰近節(jié)點(diǎn)收到負(fù)載狀態(tài)信息查詢請(qǐng)求后,立即把最新的狀態(tài)信息反饋給查詢發(fā)起者。
(4.2)為了避免將共享資源從一個(gè)過(guò)載節(jié)點(diǎn)轉(zhuǎn)移到鄰近高負(fù)載節(jié)點(diǎn),本發(fā)明不把所有鄰近節(jié)點(diǎn)都作為備選資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)。過(guò)載節(jié)點(diǎn)把鄰近節(jié)點(diǎn)中服務(wù)負(fù)載低于規(guī)定閾值h的那些節(jié)點(diǎn)的標(biāo)識(shí)號(hào)(PeerID)存放在一個(gè)數(shù)組NeighborPeers中(不妨設(shè)數(shù)組NeighborPeers包含t個(gè)節(jié)點(diǎn))。閾值h可由用戶自行設(shè)定。
(4.3)本發(fā)明采用隨機(jī)選擇方式來(lái)確定資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)集,其方法是首先隨機(jī)生成轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)集節(jié)點(diǎn)數(shù)量m,其中1≤m≤t;然后生成m個(gè)不同的隨機(jī)數(shù)xi(0≤xi≤t-1);最后將NeighborPeers[xi]所對(duì)應(yīng)的PeerId作為共享資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn),這m個(gè)隨機(jī)選擇的共享資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)就構(gòu)成了最終的共享資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)集。
(5)過(guò)載節(jié)點(diǎn)將訪問(wèn)頻率高的共享資源轉(zhuǎn)換到目標(biāo)節(jié)點(diǎn)集。
通過(guò)文件傳輸協(xié)議(FTP)或超文本傳輸協(xié)議(HTTP)在搭便車(chē)節(jié)點(diǎn)集和過(guò)載節(jié)點(diǎn)之間實(shí)現(xiàn)文件傳輸。
選擇文件復(fù)制到指定資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)有多種不同的策略。本發(fā)明建議采用一種比較簡(jiǎn)單的方法。其基本過(guò)程是首先將過(guò)載節(jié)點(diǎn)中的共享文件資源按照訪問(wèn)頻率從高到低進(jìn)行排序;接著將資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)按照服務(wù)負(fù)載大小排序;然后將訪問(wèn)頻率最高的文件轉(zhuǎn)移到服務(wù)負(fù)載最小的節(jié)點(diǎn),其余資源的復(fù)制方式依次類推。實(shí)現(xiàn)該過(guò)程應(yīng)盡量避免過(guò)于復(fù)雜的數(shù)據(jù)結(jié)構(gòu),利用數(shù)組為佳,另外還應(yīng)該特別注意數(shù)組排序算法的選擇。鑒于共享文件的數(shù)量可能很大,選擇時(shí)間復(fù)雜性較低的排序算法是實(shí)現(xiàn)該步驟的關(guān)鍵。
(6)通知對(duì)等網(wǎng)絡(luò)應(yīng)用軟件更新路由,進(jìn)入步驟(8)。
步驟(5)完成后,過(guò)載節(jié)點(diǎn)須主動(dòng)更新對(duì)等網(wǎng)絡(luò)的路由,將新的查詢請(qǐng)求轉(zhuǎn)發(fā)到資源轉(zhuǎn)移后的目標(biāo)節(jié)點(diǎn)。值得指出的是,不同的對(duì)等網(wǎng)絡(luò)路由協(xié)議有較大差異。本發(fā)明不為各類對(duì)等網(wǎng)絡(luò)應(yīng)用提供具體的路由算法,同時(shí)也不要求其它對(duì)等網(wǎng)絡(luò)遵守本發(fā)明的路由更新協(xié)議和算法。
本發(fā)明自定義的一種更新路由協(xié)議,它通知對(duì)等網(wǎng)絡(luò)應(yīng)用軟件去更新路由,但具體的更新過(guò)程由對(duì)等網(wǎng)絡(luò)應(yīng)用軟件完成。該路由更新協(xié)議僅定義兩個(gè)原語(yǔ)第一是更新拓?fù)?操作參數(shù)包括共享資源名、節(jié)點(diǎn)名),第二是更新拓?fù)洳僮鹘Y(jié)果(成功或失敗)。
(7)休眠一個(gè)采樣周期。
休眠是指線程僅執(zhí)行sleep操作,不執(zhí)行其它操作。采樣周期即為步驟(2)指定的采樣周期p,本發(fā)明提供的缺省采樣周期為一分鐘。
(8)重復(fù)步驟(2)-(7),直至節(jié)點(diǎn)退出對(duì)等網(wǎng)絡(luò)。
應(yīng)當(dāng)理解的是,對(duì)本發(fā)明技術(shù)所在領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),可以根據(jù)本發(fā)明的技術(shù)方案及其構(gòu)思進(jìn)行相應(yīng)的等同改變或替換,而所有這些改變或替換,都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
實(shí)例圖3中所示的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖代表對(duì)等網(wǎng)絡(luò)整體拓?fù)浣Y(jié)構(gòu)的一個(gè)子圖。圖中圓環(huán)1-9代表對(duì)等網(wǎng)中的節(jié)點(diǎn),實(shí)線c301-c308是對(duì)等網(wǎng)絡(luò)節(jié)點(diǎn)之間的邏輯連接。
(1)圖中各節(jié)點(diǎn){1,2,…9}在加入到等對(duì)網(wǎng)絡(luò)時(shí),先獲取自身的服務(wù)狀態(tài)過(guò)載閾值。
(2)各節(jié)點(diǎn)定期監(jiān)測(cè)自身服務(wù)狀態(tài),采樣周期設(shè)為一分鐘。
(3)節(jié)點(diǎn)1發(fā)現(xiàn)其自身過(guò)載;(4.1)節(jié)點(diǎn)1向其所有鄰近節(jié)點(diǎn){2,3,6,8,9}發(fā)出狀態(tài)查詢請(qǐng)求b311-b315。節(jié)點(diǎn){2,3,6,8,9}收到請(qǐng)求后,立即向節(jié)點(diǎn)1反饋?zhàn)陨頎顟B(tài)信息。
(4.2)節(jié)點(diǎn)1收到鄰近節(jié)點(diǎn)發(fā)出的反饋信息。此處不妨設(shè)閾值 n為過(guò)載節(jié)點(diǎn)自身的對(duì)等網(wǎng)絡(luò)連接數(shù)。此時(shí)n=5,計(jì)算可得共享資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)的最大連接數(shù)為3??疾旃?jié)點(diǎn){2,3,6,8,9}的對(duì)等網(wǎng)絡(luò)連接數(shù),發(fā)現(xiàn)節(jié)點(diǎn)6維持的連接數(shù)為4,大于最大連接數(shù)3,因此節(jié)點(diǎn)6不再作為備選目標(biāo)節(jié)點(diǎn)。因此,現(xiàn)在的備選鄰近節(jié)點(diǎn)是{2,3,8,9},t=4。
(4.3)隨機(jī)選擇算法此時(shí)最大可以選擇4個(gè)節(jié)點(diǎn)作為資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)。節(jié)點(diǎn)1隨機(jī)生成m=2,最終生成資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)集是{2,9}。
(5)節(jié)點(diǎn)2、9的對(duì)等網(wǎng)絡(luò)連接數(shù)均為1,但假設(shè)節(jié)點(diǎn)2的服務(wù)負(fù)載較低,此時(shí)選擇將節(jié)點(diǎn)1中訪問(wèn)頻率最高的資源文件(不妨設(shè)為file1)轉(zhuǎn)移到節(jié)點(diǎn)2,將節(jié)點(diǎn)1中訪問(wèn)頻率第二高的資源文件(不妨設(shè)為file2)到節(jié)點(diǎn)9;節(jié)點(diǎn)1、2之間開(kāi)始利用FTP協(xié)議傳輸文件,直至文件傳輸結(jié)束,節(jié)點(diǎn)1、9之間利用FTP協(xié)議傳輸文件,直至文件傳輸結(jié)束;
(6)節(jié)點(diǎn)1通知對(duì)等網(wǎng)絡(luò)應(yīng)用軟件,以后對(duì)訪問(wèn)file1的資源查詢與訪問(wèn)請(qǐng)求不再直接作反饋,而是將其查詢請(qǐng)求轉(zhuǎn)發(fā)到節(jié)點(diǎn)2;以后對(duì)訪問(wèn)file2的資源查詢與訪問(wèn)請(qǐng)求不再作反饋,而是將其查詢請(qǐng)求直接轉(zhuǎn)發(fā)到節(jié)點(diǎn)9。節(jié)點(diǎn)1通知對(duì)等網(wǎng)絡(luò)應(yīng)用軟件更新路由。
(8)節(jié)點(diǎn)1跳轉(zhuǎn)到步驟2。
權(quán)利要求
1.一種對(duì)等網(wǎng)絡(luò)中節(jié)點(diǎn)搭便車(chē)行為抑制方法,包括如下步驟(1)獲取節(jié)點(diǎn)的服務(wù)狀態(tài)過(guò)載閾值,服務(wù)狀態(tài)包括對(duì)等網(wǎng)絡(luò)服務(wù)狀態(tài)、計(jì)算資源服務(wù)狀態(tài)和網(wǎng)絡(luò)通信資源服務(wù)狀態(tài);(2)各節(jié)點(diǎn)定期監(jiān)測(cè)所在主機(jī)的服務(wù)狀態(tài)信息,設(shè)采樣周期p;(3)判斷節(jié)點(diǎn)是否處于過(guò)載狀態(tài),如果節(jié)點(diǎn)過(guò)載,進(jìn)入步驟(4);否則進(jìn)入步驟(7);(4)選擇鄰近搭便車(chē)節(jié)點(diǎn)作為共享資源轉(zhuǎn)移的目標(biāo)節(jié)點(diǎn)集;(5)過(guò)載節(jié)點(diǎn)將訪問(wèn)頻率高的共享資源轉(zhuǎn)換到目標(biāo)節(jié)點(diǎn)集;(6)通知對(duì)等網(wǎng)絡(luò)應(yīng)用軟件更新路由,進(jìn)入步驟(8);(7)休眠一個(gè)采樣周期p;(8)重復(fù)步驟(2)-(7),直至節(jié)點(diǎn)退出對(duì)等網(wǎng)絡(luò)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于步驟(4)包括下述過(guò)程(4.1)當(dāng)節(jié)點(diǎn)發(fā)現(xiàn)自身過(guò)載時(shí),向所連接的全體鄰近節(jié)點(diǎn)發(fā)送負(fù)載狀態(tài)信息查詢請(qǐng)求,并將最新的狀態(tài)信息反饋給查詢發(fā)起者;(4.2)過(guò)載節(jié)點(diǎn)將鄰近節(jié)點(diǎn)中服務(wù)負(fù)載低于規(guī)定閾值h的那些節(jié)點(diǎn)構(gòu)成資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)侯選集,設(shè)該侯選集包含的節(jié)點(diǎn)數(shù)量為t;(4.3)先隨機(jī)生成共享資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)集包含的節(jié)點(diǎn)數(shù)量m,其中1≤m≤t;再生成m個(gè)不同的隨機(jī)數(shù)xi,其中0≤xi≤t-1;最后將共享資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)侯選集中第xi個(gè)元素所保存的節(jié)點(diǎn)標(biāo)識(shí)號(hào)作為共享資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn),這隨機(jī)選擇出來(lái)的m個(gè)共享資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)構(gòu)成最終的共享資源轉(zhuǎn)移目標(biāo)節(jié)點(diǎn)集。
全文摘要
本發(fā)明公開(kāi)了一種對(duì)等網(wǎng)絡(luò)中節(jié)點(diǎn)搭便車(chē)行為抑制方法。該方法讓各節(jié)點(diǎn)定期監(jiān)測(cè)節(jié)點(diǎn)所在主機(jī)的服務(wù)狀態(tài);一旦發(fā)現(xiàn)本節(jié)點(diǎn)處于過(guò)載狀態(tài),立即選擇鄰近搭便車(chē)節(jié)點(diǎn)作為共享資源轉(zhuǎn)移的目標(biāo)節(jié)點(diǎn)集;過(guò)載節(jié)點(diǎn)將訪問(wèn)頻率高的共享資源轉(zhuǎn)換到目標(biāo)節(jié)點(diǎn)集;然后動(dòng)態(tài)更新對(duì)等網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。本發(fā)明不僅有效地抑制了部分節(jié)點(diǎn)的搭便車(chē)行為,而且對(duì)于對(duì)等網(wǎng)絡(luò)節(jié)點(diǎn)用戶而言,具有高度的透明性。它能為防火墻和NAT服務(wù)器后的所有節(jié)點(diǎn)盡力提供高質(zhì)量的服務(wù),努力維護(hù)整個(gè)對(duì)等網(wǎng)絡(luò)的服務(wù)質(zhì)量,可以在不同場(chǎng)景中應(yīng)用。
文檔編號(hào)H04L29/06GK1972289SQ200610125228
公開(kāi)日2007年5月30日 申請(qǐng)日期2006年12月1日 優(yōu)先權(quán)日2006年12月1日
發(fā)明者金海 , 余一嬌, 袁平鵬, 寧小敏, 武浩 申請(qǐng)人:華中科技大學(xué)