p2p架構
P2P應用:原理與文件分發
純P2P架構:Peer-to-peer
- 沒有服務器
- 任意端系統之間直接通信
- 節點階段性接入Internet
- 節點可能更換IP地址
文件分發:客戶機/服務器vs. P2P
從一個服務器向N個節點分發一個文件需要多長時間?
客戶機/服務器
服務器串行地發送N個副本,時間:NF/us,客戶機i需要F/di時間下載
P2P
服務器必須發送一個副本,時間:F/us,客戶機i需要F/di時間下載,總共需要下載NF比特,最快的可能上傳速率:us+ ∑ui
文件分發:BitTorrent
-
文件划分為256KB的chunk
-
節點加入torrent
- 沒有chunk,但是會逐漸積累
- 向tracker注冊以獲得節點清單,與某些節點(“鄰居”)建立連接
-
下載的同時,節點需要向其他節點上傳chunk
-
節點可能加入或離開
-
一旦節點獲得完整的文件,它可能(自私地)離開或(無私地)留下
-
獲取chunk
- 給定任一時刻,不同的節點持有文件的不同chunk集合
- 節點(Alice)定期查詢每個鄰居所持有的chunk列表
- 節點發送請求,請求獲取缺失的chunk
- 稀缺優先
-
發送chunk: tit-for-tat
- Alice向4個鄰居發送chunk:正在向其發送Chunk,速率最快的4個
- 每10秒重新評估top 4
- 每30秒隨機選擇一個其他節點,向其發送chunk
- 新選擇節點可能加入top 4
- “optimistically unchoke”10
- Alice向4個鄰居發送chunk:正在向其發送Chunk,速率最快的4個
P2P應用:索引技術
P2P: 搜索信息
P2P系統的索引:信息到節點位置(IP地址+端口號)的映射
文件共享(電驢):利用索引動態跟蹤節點所共享的文件的位置,節點需要告訴索引它擁有哪些文件,節點搜索索引,從而獲知能夠得到哪些文件
即時消息(QQ)索引負責將用戶名映射到位置,當用戶開啟IM應用時,需要通知索引它的位置,節點檢索索引,確定用戶的IP地址
集中式索引
Napster最早采用這種設計:1) 節點加入時,通知中央服務器:•IP地址•內容,2) Alice查找“Hey Jude”,3) Alice從Bob處請求文件
內容和文件傳輸是分布式的,但是內容定位是高度集中式的,存在:單點失效問題,性能瓶頸,版權問題
洪泛式查詢: Query flooding
完全分布式架構,Gnutella采用這種架構,每個節點對它共享的文件進行索引,且只對它共享的文件進行索引
覆蓋網絡(overlay network): Graph
- 節點X與Y之間如果有TCP連接,那么構成一個邊
- 所有的活動節點和邊構成覆蓋網絡
- 邊:虛擬鏈路
- 節點一般鄰居數少於10個
- 查詢消息通過已有的TCP連接發送
- 節點轉發查詢消息
- 如果查詢命中,則利用反向路徑發回查詢節點
層次式覆蓋網絡
介於集中式索引和洪泛查詢之間的方法,每個節點或者是一個超級節點,或者被分配一個超級節點,節點和超級節點間維持TCP連接,某些超級節點對之間維持TCP連接,超級節點負責跟蹤子節點的內容
P2P案例應用:Skype
本質上是P2P的:用戶/節點對之間直接通信,是私有應用層協議,所以只能猜,采用層次式覆蓋網絡架構,索引負責維護用戶名與IP地址間的映射,索引分布在超級節點上
所謂P2P(Peer to Peer),其最本質的含義即“對等”,該技術最早是用於網絡中對等節點之間的資源和信息共享的技術,通常人們所知道的是將P2P技術用在文件下載過程中,即網絡上的對等終端在下載共享文件的同時又作為一個“種子”為其他對等終端提供資源和信息。后來,Skype在網絡通話業務系統中靈活應用了該技術
由於沖擊了傳統通信領域,Skype在引起很多爭議的同時也使人耳目一新,可以說,Skype是發展和演進了的P2P應用。對於P2P技術還沒有規范的定義,結合其已有的應用,就更廣泛的意義而言,P2P技術是指網絡中的所有節點都動態參與到路由、信息處理和帶寬增強等工作中,而不是單純依靠服務器來完成這些工作。Skype是P2P技術演進到混合模式后的典型應用,它結合了集中式和分布式的特點,在網絡的邊緣節點采用集中式的網絡結構,而在超級節點之間采用分布式的網絡結構