P2P system: FastTrack and BitTorrent

FastTracknode

FastTrack來源於Gnutella,是Gnutella 和 Napster的雜交體bootstrap

有些node承擔了更重要的責任,這些nodes稱爲supernodes,由於這些改進,它比Gnutella更快app

 

 

除了有幾個supernodes以外,它與Gnutella overlay長得很像.這些supernodes承擔了一些責任,這些責任與Napster的server存儲derectory information相似.ide

peers不能本身選擇作supernode,peers被選擇作supernode是根據它過去所作的貢獻。這個貢獻是由a reputation level來衡量的.this

好比說在Kazaalite裏面,reputation of a user 位於0與1000之間,當一個user加入這個system是,它的初始reputation是10,隨着鏈接時間的增長以及它上傳文件的增長,這個reputation會增長,當達到一個threshold,這個peer就可能成爲supernode.lua

有了這些supernode,peers的查找速度會變快(they can just search in nearby supernode),好比就上圖來講,左下角的那個藍色的peer只須要發送query information給與它相鄰的supernode(位與底部中間的那個紅色的supernode)就能夠了,而不是須要採用像Gnutella那樣使用flood(洪泛法) 在整個overlay graph來發送query informationspa

使用supernode有什麼好處?使用supernode的動機是什麼?-------你的不少查詢信息如今變成了local searches in your local data structure or your local directory information,這樣它們就不會引發network traffic.因此它們的速度就會很是快3d

 

BitTorrentrest

 

BitTorrent很是流行如今也很流行,它與咱們以前介紹的系統相似但也有些不一樣,它是採用incentivizing(以物質刺激鼓勵) peers to participate in the system.咱們以前介紹過不少peers對系統並無貢獻,它們不貢獻files,不貢獻bandwidth,而後BitTorrent解決這個問題是採用incentives(獎勵)來讓peers參與到這個系統中來。因此peers能從幫助其它的peers中受益。orm

BitTorrent有一個叫作trackers的概念,通常來講每個file都有一個tracker,可是也存在好幾個files有一個tracker。

當一個peer想加入這個system時,它查找the torrent或者tracker,這樣就能夠與tracker交流對話。Tracker維持着a list of some of the peers(這些peers如今正在傳輸這個文件,一個文件有一個tracker),tracker作到這些是經過從現有的peers那兒接收心跳(heartbeats).

Peers分爲兩類,一類爲seed,它們有full file,幫助其它的peers來下載文件;一類爲leechers(吸血鬼),它們擁有文件的一部分(一個文件分割成了許多塊,通常來講是相同大小的blocks),peer 擁有不少文件塊,它也在不斷的下載這個文件的其它塊。

The new peer, 當加入到這組peers中來時,它成爲一個leecher由於它不包含文件的任何部分。

當一個peer開始從它的neighbors下載文件時,由於這個peer有不少neighbors,有不少file blocks能夠供它下載,那麼它是如何選擇哪一個file block去下載呢?----使用Local Rarest First policy. 

Local Rarest First policy: 選擇那個在這些neighbors中被複制最少的block.由於隨着系統的變更,這些block可能會比其它的那些blocks(replicated more)要消失得更快,因此Local Rarest First policy 幫助下載這些稀少的blocks.

特例: 新加入的node容許隨意選擇一個neighbor,這樣有助於bootstrapping(這樣就不會get stuck with just one deterministic group )

 激勵機制是經過Tit for tat(以牙還牙)bandwidth usage scheme來實現的.這個機制激勵a peer to provide blocks to neighbors. 你給那些曾經給你提供最好下載率的neighbors提供blocks,這樣就刺激你的neighbors給你提供下載速度以便之後你可以給它們提供blocks.這個激勵機制不只是對leechers(吸血鬼)並且也是對Seeds 

一個peer與它的neighbors同時傳輸的文件數量可能很是大,咱們不想overload this peer,因此在這兒咱們使用choking.choking限制了同時上傳的neighbors的數量(通常來講<=5爲最好的neighbors)

任何結點均可能被choked.這些被choked的結點從那些unchoked的set集中選擇,使這些被選擇的結點被choked.每隔一段時間(如10s)就reevaluate這個set(由於每隔一段時間會unchock一個neighbor,這樣使這個set to be very fresh)

Optimistic unchock: 第隔一段時間unchock一個任意的neighbor

總的來講choking幫助peers限制有多少neighbors uploading to,以防止upload bandwidth is overwhelmed

相關文章
相關標籤/搜索