6.1 Peer-to-Peer (P2P) System

P2P (Peer-to-Peer) Network 點對點網路又稱同儕網路,概念源自於音樂分享服務Napster

為何需要p2p系統?

傳統Client-Server架構:由一個server決定資源的分配

如果只有某些server提供集中管理,那麼資料的提供和服務的可擴充性是有限的,因此Client-Server架構最大的問題是ScalabilityReliability

  • Scalability - 當使用者增加server端需要有更多的資源提供服務。如:運算能力、頻寬、儲存空間等
  • Reliability - 整個網路將依賴於高負載的server端以便運行,當server出問題時,服務即無法正常運作

Peer-to-Peer系統

Peer-to-Peer 架構:沒有固定的client與server,每個peer都同時為client與server

 

p2p系統讓個人電腦和工作站可透過internet以及其他的網路達到資料的運用以及資源的計算;而不是單獨管理的server,將資源集中在一起服務。因此,services不可依賴在信任的單一主機,可藉由多台具有相同資源主機尋求服務以解決此問題。

p2p系統中,個別程序以及計算的可用性是不可預測的

p2p系統主要特徵

  • 每個用戶貢獻資源給其他用戶
  • 每個節點具有相同的功能能力和責任
  • 不依賴任何中央管理系統

peer:為p2p網路上的節點,也是p2p網路形成的基本單位,每一個peer都有獨特的peer ID。

peer種類

  • simple peer - 提供服務
  • rendezvous peer - 尋找其他peer用
  • router peer - 提供peer溝通的路由

peer group:一群同性質的peer

在大量的peer中會將依peer的性質組成不同的peer group。每個peer可和自己group中的peer溝通也可和其他小組的peer溝通

peer group分群方式

  • by application
  • security requirement
  • need for status information

peer有join與leave的概念,其概念與multicast的join/leave不同。peer可以提供服務讓其他的peer來join/leave

檔案在傳輸透過pipe,由於pipe是單向的,因此傳送與接收是透過兩條不同的pipe

P2P protocol動作

  • 尋找peer
  • 尋找peer提供的服務
  • 取得peer狀態
  • 使用peer提供的服務
  • 創建、加入、離開peer群組
  • 與peer建立連線
  • 與其他peers連線的routing訊息

advertisement:當提供service時,透過advertisement讓其他peer知道

尋找advertisement 3裝方法

  • no discovery:將peer資訊暫存,直接找暫存
     
  • direct:直接尋找
     
  • indirect:透過中介尋找
     

不同P2P方法的共同動作

  • Join - 參與的方法
  • publish - 如何告訴其他peer
  • search - 如何找到檔案
  • fetch - 如何抓取檔案

flooding:透過傳送給鄰近node方式往下傳

  • Flooding好處:完全分散、分散尋找成本
  • Flooding壞處:如果join/leave很頻繁會很難控制、尋找

Gnutella model:完全分散,以廣播方式routing。以不傳重複以及TTL限定一個步數限制廣播。(如限制為6,則傳到地6個後則不再繼續往下傳)

P2P能將其優點應用於:community network, search engines, collaborative development

P2P問題

  • 透過flooding方式太多錯誤或重複訊息。可利用peer review減低錯誤重複
  • free rider只讀取不提供,是P2P一個很大的問題

supernode - 由比較powerfu、有較高頻寬以及長時間在線的機器擔任

在有supernode的架構下join, publish, search找supernode,supernode有之間有一個較高層的routing,由supernode之間直接溝通。透過supernode與目的peer連上後peers之間直接傳送檔案

supernode好處:有比較好的scale

supernode壞處:更加複雜

supernode可以加入cacheing功能增進效能

當supernode 出問題時會有備援的supernode來取代原來的supernode

P2P中以hash判斷是否為同一個檔案

distributed hash table是學術上P2P的一種方式,其目的在於使網路變大而不變慢。支援get(讀)與put(寫)兩個動作

P2P應用程式介紹

檔案分享是P2P一個主要的應用。在分散式運算上以尋找外星人為最大宗

BitTorrent:
 

Bit Torrent將每個檔案備分割成多個小塊peace,下載的時候不是sequencial的,因此不支援streaming。有一個web server提供meta information

通常一個peace的長度為256k,增加可靠度每個peace有一個SHA-1 hash

peer類型:

  • tracker peer:追蹤peer用
  • leecher:peer只有其中一部或沒有分檔案
  • seeder:peer有完整的檔案並提供其他peer下載

選擇peace方法:

  • rarest first - 先選最少人有的peace以免後來抓不到
  • random first - 隨機選擇
  • end-game mode - 當request發給所有的sub-peers時發送給全部的peer,加快完成時間

傳送chunks:tit-for-tat - 傳送chunk給其四個rate的鄰居,每10秒重新查看一次,每30秒一定要換peer,避免一直跟相同的peer互傳

choking algorithm選擇peer:先暫停,查看20秒的download rate選出前4個rate最高的

使用choking希望有比較好的download rate

BT被廣泛使用的原因:把人性自私的部份考量進去。用pull的角度看自己要哪個file

BT缺點:

  • 對於一些較不常出現(冷門)的東西會找不到
  • 沒有搜尋的功能,但同時也不容易受污染

Napster(1999-2001)
File:Napster corporate logo.svg

Napster檔案分享系統:Napster提供了一個具有全球擴充性可存放數位音樂檔案的資料,以及檢索。

NapsterShawn Fanning創建,是第一個顯示p2p在大規模情況下的可行性。其索引是採集中式管理並將所有的資料分散在peers上的個人電腦中。於2001年七月因訴訟版權問題被迫關閉。

 

 (圖一) Napster file的基礎架構,使用者可透過個人電腦去Napster  server取得所需要資源的位置

步驟:1.個人電腦先對Napster server提出需要檔案的所在位置
                 2.Napster列出有哪些peer有提供該檔案
                 3.由個人電腦對該peer提出要求
                 4.個人電腦從該peer下載資料
                 5.個人電腦將訊息回傳給Napster index(下次如果有人對該檔案提出要求,則此台電腦也會出現在該索引上,方便他人存取該檔案)

Napster的問題:

1. 集中化式管理(index)
     (1) 擴充方面(server容量及網路頻寬)
     (2) 匿名操作是不可行的,舉例而言,版權議題的法律責任可推卸到集中式索引的管理者上 
2. 如果把index也改為分散式的話將可獲得更好的可擴充性以及匿名性
3. Napster並沒有針對檔案更新的一致性或可用性提出解決方法,因為對音樂檔案而言,音樂文件是不變的,因此不需維持一致性

 

KaZaA
ħ logo.png

Niklas Zennström, Janus Friis, Priit Kasesalu 所開發(他們後來也開發skype以及joost) 提供更好的匿名機制,可擴充性,以及容錯。

FSHAREKZ.GIF
(圖二)

Peer to peer middleware

1. 應用平台對分散式資源的獨立管理。

用於實現p2p應用

 


(圖三)

Homeviews:個人化資料分享應用的p2p middleware

引用:
(圖一)http://www.yourdictionary.com/computer/peer-to-peer-network
(圖二)http://www.yourdictionary.com/computer/peer-to-peer-network
(圖三)http://www.cs.washington.edu/homes/roxana/acads/projects/homeviews/sigmod07/html/sigmod424-geambasu.html

 

3種不同 P2P 應用軟體差別 

類型 檔案 server 網路資源 匿名 優點
Napster 純MP3音樂檔案分享 集中式伺服器 消耗極低
延展性高 
簡單使用
Gnutella 多媒體檔案 分散式架構 消耗度高
易阻塞 
網路延展性低
Freenet 不侷限 分散式架構 消耗度中 易找到受歡迎檔案

 

p2p Security

1. Don't Use P2P On a Corporate Network:
    可能在不小心當中,現漏出公司機密,以及流量太大堵塞公司網路,使公司網路能降低

2. Beware The Client Software: 安裝軟件可能造成系統崩潰,或電腦問題,另一方面,客戶端軟件偶可能會被更換版本或安裝惡意程式在電腦上。

3. Don't Share Everything:
    應確定好共享文件至於何處,以免到最後將所有文件放置於網路上促成大錯

4. Scan Everything
    應對所有下載文件保持最大懷疑性,應為你沒辦法確定所下載的文件是否包含了某種木馬或病毒。且也應該常常對電腦做病毒掃描,使電腦保持在最安全的狀態下

 

 

 

 

關鍵議題:

        對策選擇

(1)   資料的放置以及資料在不同的主機上複製

(2)   資料的接收

因此

(1)   工作量節點和通訊線路須達到平衡

(2)   有效的數據供應