eMule協(xié)議片選擇算法分析
我們知道,下載是數(shù)據(jù)的傳輸。在這方面的協(xié)議內(nèi)容我們已經(jīng)介紹過很多了。其中BT協(xié)議和eMule協(xié)議是這里面的重點(diǎn)。但是,兩者也的確存在著不少的差異。那么,是什么不同導(dǎo)致兩個(gè)協(xié)議具有如此多的差異呢?
首先,BT的方式更注重于簡單高效的快速傳輸,而eMule更注重于整個(gè)網(wǎng)絡(luò)狀態(tài)的變化及用戶體驗(yàn)。
其次,單從下載效率上說BT占優(yōu),而從網(wǎng)絡(luò)狀態(tài)及完整的協(xié)議支持上說,eMule協(xié)議則作了更多的事情。
***,從性能上考慮,在相同網(wǎng)絡(luò)狀態(tài)下,BT下載單文件的能力比較強(qiáng),eMule比較適合于長時(shí)間的多文件下載,對(duì)機(jī)器的使用和影響比較小,這源于兩者對(duì)網(wǎng)絡(luò)均衡及p2p模式的不同理解。
eMule協(xié)議和片選擇及搜索算法
為了優(yōu)化整個(gè)網(wǎng)絡(luò)的吞吐量和共享,eMule協(xié)議仔細(xì)挑選選擇塊的下載順序。基本的選擇策略和分片信息是這樣的:每個(gè)文件被分成9.28M的塊,每部分分成80KB的片。塊下載的順序是由發(fā)送請(qǐng)求文件塊消息(.4節(jié))的下載客戶端決定。下載客戶端可以在任何給定時(shí)刻從各個(gè)源中下載一個(gè)單獨(dú)的文件塊,所有從相同源中請(qǐng)求的片都在同一個(gè)塊中。下面的原理(以這個(gè)順序)應(yīng)用于下載塊等級(jí):
1.(可獲得的)片的頻率,盡可能快的下載非常***的片來形成一個(gè)新的源。
2.用來預(yù)覽的塊(最初+***的片),預(yù)覽或檢查文件(比如,電影、mp3)
3.請(qǐng)求狀態(tài)(過程中下載),嘗試向每個(gè)源詢問其它的片。在所有源之間擴(kuò)散請(qǐng)求。
4.完成(未到某種程度的完成),在開始下載另一個(gè)時(shí)應(yīng)該完成獲得部分的片
頻率標(biāo)準(zhǔn)定義了三個(gè)區(qū)域:非常***、***和一般。在每個(gè)區(qū)域里,標(biāo)準(zhǔn)有特定的權(quán)重,用來計(jì)算塊等級(jí)。較低等級(jí)的塊先下載。下面的列表根據(jù)上面的原理指定文件等級(jí)范圍:
l0-9999 - 不請(qǐng)求和請(qǐng)求非常***的塊
l0000-9999 - 不請(qǐng)求***和預(yù)覽塊
l20000-29999 - 不請(qǐng)求部分完成的一般的塊
l30000-39999 - 請(qǐng)求的***和預(yù)覽的塊
l40000-49999 - 請(qǐng)求的沒有完成的一般的塊
這個(gè)eMule協(xié)議算法通常選擇***個(gè)最***的塊。然而,部分完成的塊,接近完成的,也可能被選中。對(duì)于一般的塊,在不同的源之間擴(kuò)散下載。