P2P網絡中DHT算法分析


本文首先從P2P的定義出發,介紹了結構化P2P與非結構化P2P的區別以及結構化P2P的核心技術DHT。而後,本文深入介紹了幾種主流的DHT算法與協議並對每種協議進行了討論。文章的最後展望了DHT在未來的發展趨勢。

對等網絡(Peer-to-Peer,簡稱P2P)是目前非常熱門的應用,自1999年以來,P2P的研究一直是國外知名學府(如美國麻省理工學院,加州大學伯克利分校和萊斯大學等)以及知名企業的研發機構(如微軟,諾基亞的研究院)關注的重點。它甚至被美國《財富》雜誌稱爲改變因特網發展的四大新技術之一,被認爲是代表無線寬帶互聯網未來的關鍵技術。

作爲一項新興的技術,目前學術界對P2P在技術層面上的定義尚未統一。Keith W. Ross (Polytechnic University)和Dan Rubenstein(Columbia University)在[9]中提到了對P2P系統的3個基本定義:

相比中央服務器而言有明顯的自治性(Autonomy)。

利用網絡邊緣的資源,如存儲/計算能力和信息資源。

網絡邊緣的資源處在動態的變化中(新的資源加入,已有的資源消失)。

自治性的要求使得P2P系統不再需要特定的中央管理機制,所有節點之間擁有對等的關係。這一方面爲系統帶來了自組織、容錯性好、可擴展性強等優點;另一方面也提出了新的問題:如何在沒有集中管理機制的情況下實現系統的自組織和自管理?

定義2,3中分佈性和動態性的特點使得上述問題的實現具有更大的難度。在分佈式系統中,過多過快的信息交互可能消耗大量的網絡資源;而爲了實時反映系統的變化,又要求節點及時獲得更新信息,這就需要在節點之間進行通信。

爲了解決這一對矛盾,已經有許多P2P的框架和協議被提出來並得到了很好的應用。

結構化與非結構化P2P

依照節點信息存儲與搜索方式的不同,諸多P2P協議可以分爲2大類:結構化(Structured)的與非結構化(Unstructured)的系統。

非結構化P2P系統

在非結構化的系統中,每個節點存儲自身的信息或信息的索引(如指針和IP地址)。當用戶需要在P2P系統中獲取信息時,他們預先並不知道這些信息(如某個文件)會在那個節點上存儲。因此,在非結構化P2P系統中,信息搜索的算法難免帶有一定的盲目性,例如最簡單的泛洪式查找(類似於廣播)和擴展環查找(從最近的n個節點開始,層層轉發直到找到目標或超出了跳數的上限爲止)。

一些典型的應用採用了一些優化的辦法。如在Gnutella中,採用了等級制的組成結構:節點被分成超級節點(Super Node)和普通節點。普通節點必須依附於超級節點,每個超級節點作爲一個獨立的域管理者,負責處理域內的查詢操作。在查找的過程中,查詢首先在域內進行,失敗後纔會擴展到超級節點之間。

非結構化系統的優點在於實現結構簡單:無須中央服務器,節點之間完全平等,網絡的層次是單一的,而且節點之間無需維護拓撲信息。

結構化P2P系統

在結構化P2P系統中,每個節點只存儲特定的信息或特定信息的索引。當用戶需要在P2P系統中獲取信息時,他們必須知道這些信息(或索引)可能存在於那些節點中。由於用戶預先知道應該搜索哪些節點,避免了非結構化P2P系統中使用的泛洪式查找,因此提高了信息搜索的效率。

但是,結構化P2P也引入了新的問題:

首先,既然信息是分佈存儲的,那麼如何將信息分佈存儲在重疊網中的節點上?

其次,由於節點動態的加入和離開重疊網,如何將拓撲的變更信息通知其它節點?

DHT的引入基本解決了上述問題,因此自從DHT協議出現以後,結構化P2P的應用得到了快速的發展。目前已經有很多較爲成熟的DHT協議被提出並且得到了應用。其中比較有代表性的有:緩衝陣列路由協議(CARP);一致性哈希;Chord;內容尋址網絡;Pastry。

DHT簡介

DHT使用分佈式哈希算法來解決結構化的分佈式存儲問題。分佈式哈希算法的核心思想是通過將存儲對象的特徵(關鍵字)經過哈希運算,得到鍵值(Hash Key),對象的分佈存儲依據鍵值來進行。具體來講,大致有以下步驟:

對存儲對象的關鍵字進行哈希運算,得到鍵值。這樣就將所有的對象映射到了一個具體的數值範圍中。

重疊網中的每個節點負責數值範圍中的特定段落。例如,節點A負責存儲鍵值從8000到8999的對象;而節點B負責7000~7999的對象。這樣就將對象集合分佈地存儲在所有的節點中。

節點可以直接存儲對象本身,如文件中的一個片段;也可以存儲對象的索引,如該對象所在節點的IP地址。

結構化的分佈式存儲問題解決後,剩下的問題就是用戶如何才能找到存儲着目標信息的節點。在有着大量節點(如100萬個)的P2P系統中,任何節點都不可能擁有全部的節點?鍵值?內容的對應關係;因此用戶獲得了鍵值之後,如何找到該鍵值對應的節點就被稱爲DHT的路由問題。DHT協議必須定義優化的查找(路由)算法來完成這一搜尋的工作。不同的DHT協議之間區別很大程度上就在於定義了不同的路由算法。

DHT的應用非常簡潔----API簡單到只有一項輸入和一項輸出:

應用層將數據對象(文件、數據塊或索引)通過哈希算法獲得鍵值,將該鍵值提交給DHT後,返回結果就是鍵值所在節點的IP地址。圖1(來自[9])顯示了這種應用結構:

圖 1 DHT的應用結構

在這樣的支持下,可以開發多種P2P的應用程序,如網絡存儲與文件共享、即時消息、音頻/視頻等。圖2(來自[9])顯示了這種應用結構:

圖 2 DHT應用的層次

主流DHT協議

緩衝陣列路由協議(CARP,Cache Array Routing Protocol)

協議簡介

CARP是由微軟公司的Vinod Valloppillil和賓西法尼亞大學的Keith W. Ross在1997年提出的。該協議可以將URL空間映射到一個僅有鬆散關聯關係的Web cache 服務器(在協議中稱爲“代理”,Proxy)陣列中。支持該協議的HTTP客戶端可以根據要訪問的URL智能選擇目標代理。該協議解決了在代理陣列內分佈存儲內容的問題,避免了內容的重複存儲,提高了客戶端訪問時Web Cache命中的概率。

哈希算法

哈希使用的關鍵字有2個,一個是代理的標識符(每個代理均有唯一的標識),另一個是URL本身。存儲內容時,每個代理負責緩衝哈希鍵值最大的URL。這樣,當緩衝代理陣列發生少量變化時(新的代理加入或舊的代理退出),原有的URL還有可能仍然被映射到原來的代理上,仍可以按照原有的方式訪問。

路由算法

客戶端(HTTP瀏覽器)首先加載一個代理配置文件,該文件中存儲了代理的標識符和IP地址等用於哈希的關鍵參數。瀏覽器在訪問網頁時,可以根據URL和代理標識獲得代理的位置信息(IP地址),從而可以直接訪問緩衝代理中的頁面。

討論

CARP的哈希過程比較簡單,路由查找更是簡單到至多隻有一跳(O(1))。但是CARP在P2P的應用環境中有一些致命的缺陷:

每個節點必須知道其它所有節點的信息。在大規模的重疊網環境中,由於可能存在大量的(數百萬)節點,加之節點都是動態加入和退出網絡,因此這一條件幾乎不可能滿足。

在緩衝陣列發生較大變化時(這在P2P網絡中非常常見),原有的URL和代理之間的對應關係可能發生改變,從而使得原有的配置文件失效。

一致性哈希(Consistent Hash)

協議簡介

一致性哈希算法在1997年由麻省理工學院提出(參見0),設計目標是爲了解決因特網中的熱點(Hot pot)問題,初衷和CARP十分類似。一致性哈希修正了CARP使用的簡單哈希算法帶來的問題,使得DHT可以在P2P環境中真正得到應用。

哈希算法

一致性哈希提出了在動態變化的Cache環境中,哈希算法應該滿足的4個適應條件:

平衡性(Balance)

平衡性是指哈希的結果能夠儘可能分佈到所有的緩衝中去,這樣可以使得所有的緩衝空間都得到利用。很多哈希算法都能夠滿足這一條件。

單調性(Monotonicity)

單調性是指如果已經有一些內容通過哈希分派到了相應的緩衝中,又有新的緩衝加入到系統中。哈希的結果應能夠保證原有已分配的內容可以被映射到新的緩衝中去,而不會被映射到舊的緩衝集合中的其他緩衝區。

簡單的哈希算法往往不能滿足單調性的要求,如最簡單的線性哈希:

x → ax + b mod (P)

在上式中,P表示全部緩衝的大小。不難看出,當緩衝大小發生變化時(從P1到P2),原來所有的哈希結果均會發生變化,從而不滿足單調性的要求。

哈希結果的變化意味着當緩衝空間發生變化時,所有的映射關係需要在系統內全部更新。而在P2P系統內,緩衝的變化等價於Peer加入或退出系統,這一情況在P2P系統中會頻繁發生,因此會帶來極大計算和傳輸負荷。單調性就是要求哈希算法能夠避免這一情況的發生。

分散性(Spread)

在分佈式環境中,終端有可能看不到所有的緩衝,而是隻能看到其中的一部分。當終端希望通過哈希過程將內容映射到緩衝上時,由於不同終端所見的緩衝範圍有可能不同,從而導致哈希的結果不一致,最終的結果是相同的內容被不同的終端映射到不同的緩衝區中。這種情況顯然是應該避免的,因爲它導致相同內容被存儲到不同緩衝中去,降低了系統存儲的效率。分散性的定義就是上述情況發生的嚴重程度。好的哈希算法應能夠儘量避免不一致的情況發生,也就是儘量降低分散性。

負載(Load)

負載問題實際上是從另一個角度看待分散性問題。既然不同的終端可能將相同的內容映射到不同的緩衝區中,那麼對於一個特定的緩衝區而言,也可能被不同的用戶映射爲不同的內容。與分散性一樣,這種情況也是應當避免的,因此好的哈希算法應能夠儘量降低緩衝的負荷。

從表面上看,一致性哈希針對的是分佈式緩衝的問題,但是如果將緩衝看作P2P系統中的Peer,將映射的內容看作各種共享的資源(數據,文件,媒體流等),就會發現兩者實際上是在描述同一問題。

路由算法

在一致性哈希算法中,每個節點(對應P2P系統中的Peer)都有隨機分配的ID。在將內容映射到節點時,使用內容的關鍵字和節點的ID進行一致性哈希運算並獲得鍵值。一致性哈希要求鍵值和節點ID處於同一值域。最簡單的鍵值和ID可以是一維的,比如從0000到9999的整數集合。

根據鍵值存儲內容時,內容將被存儲到具有與其鍵值最接近的ID的節點上。例如鍵值爲1001的內容,系統中有ID爲1000,1010,1100的節點,該內容將被映射到1000節點。

爲了構建查詢所需的路由,一致性哈希要求每個節點存儲其上行節點(ID值大於自身的節點中最小的)和下行節點(ID值小於自身的節點中最大的)的位置信息(IP地址)。當節點需要查找內容時,就可以根據內容的鍵值決定向上行或下行節點發起查詢請求。收到查詢請求的節點如果發現自己擁有被請求的目標,可以直接向發起查詢請求的節點返回確認;如果發現不屬於自身的範圍,可以轉發請求到自己的上行/下行節點。

爲了維護上述路由信息,在節點加入/退出系統時,相鄰的節點必須及時更新路由信息。這就要求節點不僅存儲直接相連的下行節點位置信息,還要知道一定深度(n跳)的間接下行節點信息,並且動態地維護節點列表。當節點退出系統時,它的上行節點將嘗試直接連接到最近的下行節點,連接成功後,從新的下行節點獲得下行節點列表並更新自身的節點列表。同樣的,當新的節點加入到系統中時,首先根據自身的ID找到下行節點並獲得下行節點列表,然後要求上行節點修改其下行節點列表,這樣就恢復了路由關係。

討論

一致性哈希基本解決了在P2P環境中最爲關鍵的問題——如何在動態的網絡拓撲中分佈存儲和路由。每個節點僅需維護少量相鄰節點的信息,並且在節點加入/退出系統時,僅有相關的少量節點參與到拓撲的維護中。所有這一切使得一致性哈希成爲第一個實用的DHT算法。

但是一致性哈希的路由算法尚有不足之處。在查詢過程中,查詢消息要經過O(N)步(O(N)表示與N成正比關係,N代表系統內的節點總數)才能到達被查詢的節點。不難想象,當系統規模非常大時,節點數量可能超過百萬,這樣的查詢效率顯然難以滿足使用的需要。換個角度來看,即使用戶能夠忍受漫長的時延,查詢過程中產生的大量消息也會給網絡帶來不必要的負荷。

下文中討論的幾種DHT協議都對路由做出了優化,提出了各自的算法。

Chord協議

Chord在2001年由麻省理工學院提出(參見0),其核心思想就是要解決在P2P應用中遇到的基本問題:如何在P2P網絡中找到存有特定數據的節點。與前兩種協議不同,Chord專門爲P2P應用設計,因此考慮了在P2P應用中可能遇到的特殊問題,這些內容將在路由的部分進行討論。

哈希算法

Chord使用一致性哈希作爲哈希算法。在一致性哈希協議中並沒有定義具體的算法,在Chord協議中將其規定爲SHA-1。

路由算法

Chord在一致性哈希的基礎上提供了優化的路由算法:

在Chord中,每個節點同樣需要存儲m個其他節點的信息,這些信息的集合被稱爲查詢表(Finger Table)。一致性哈希中的節點同樣具有這樣的表格,但在Chord中,表格中的節點不再是直接相鄰的節點,它們的間距(ID間隔)將成2i 的關係排列(i 表示表中的數組下標)。這樣形成的節點之間路由關係實際上就是折半查找算法需要的排列關係。

在查詢的過程中,查詢節點將請求發送到與鍵值最接近的節點上。收到查詢請求的節點如果發現自身存儲了被查詢的信息,可以直接回應查詢節點(這與一致性哈希完全相同);如果被查詢的信息不在本地,就根據查詢表將請求轉發到與鍵值最接近的節點上。這樣的過程一直持續到找到相應的節點爲止。不難看出,查詢過程實際上就是折半查找的過程。

經過Chord的優化後,查詢需要的跳數由O ( N)減少到O(log(N))。這樣即使在大規模的P2P網絡中(例如N=100,000,000),查詢的跳數也僅爲O(8),每個節點僅需存儲27個(log2100000000)其他節點的信息。

Chord還考慮到多個節點同時加入系統的情況並對節點加入/退出算法作了優化。

討論

Chord算法本身具有如下優點:

負載平衡

這一優點來自於一致性哈希,也就是一致性哈希中提到的平衡性。所有的節點以同等的概率分擔系統負荷,從而可以避免某些節點負載過大的情況。

分佈性

Chord是純分佈式系統,節點之間完全平等並完成同樣的工作。這使得Chord具有很高的魯棒性,可以抵禦DoS攻擊。

可擴展性

Chord協議的開銷隨着系統規模(結點總數N)的增加而按照O(logN)的比例增加。因此Chord可以用於大規模的系統。

可用性

Chord協議要求節點根據網絡的變化動態的更新查詢表,因此能夠及時恢復路由關係,使得查詢可以可靠地進行。

命名的靈活性

Chord並未限制查詢內容的結構,因此應用層可以靈活的將內容映射到鍵值空間而不受協議的限制。

Chord在CFS系統中得到了應用,具體的介紹可參見[8]

內容尋址網絡(Content-Addressable Network,CAN)

CAN在2001年由加州大學伯克利分校提出(參見[3])。與Chord一樣,CAN也是DHT的一個變種。

哈希算法

CAN的哈希算法與一致性哈希有所不同。Chord中,哈希得到的鍵值總是一維的,而在CAN中,哈希的結果由d維的笛卡爾空間來表示。d是一個由系統規模決定的常量。

路由算法

CAN的路由查詢將在d維笛卡爾空間中進行。

在CAN中,每個節點自身的ID經由哈希後得到的d維向量。經過這樣的映射後,整個P2P系統將被映射到一個d維笛卡爾空間中,每個節點的位置由其自身ID決定。CAN對鄰居節點的定義並不要求成2i的關係排列,而是改爲用在笛卡爾空間上相鄰來表示:在d維笛卡爾空間中,2個節點的d維座標中有d-1維是相等的,剩餘的一維是相鄰的節點稱之爲相鄰節點。

CAN中的節點僅存儲相鄰節點表。由於在d維的空間中最多有2d個相鄰的節點,因此節點的相鄰節點表最多有2d個表項。

在查詢的過程中,查詢節點首先計算被查詢內容的鍵值(d維向量),然後在節點列表中查找在笛卡爾空間中與該鍵值最爲接近的相鄰節點,找到後向該節點發送查詢請求(這一策略被稱爲貪婪策略)。查詢請求中將攜帶被查詢內容的鍵值。收到查詢請求的節點如果發現自身存儲了被查詢的信息,可以直接回應查詢節點(這與一致性哈希完全相同);如果被查詢的信息不在本地,就根據相鄰節點表將請求轉發到與鍵值最接近的節點上。這樣的過程一直持續到找到相應的節點爲止。在查詢過程中,被查詢節點到目標節點的笛卡爾空間距離單調地減少。

如果查詢節點或轉發節點發現鄰居節點表中無法找到可用的下一跳節點,則採用非結構化P2P常用的擴展環搜索(Expanding Ring Search,使用無狀態,受控的泛洪算法在重疊網中搜索)以找到合適的(符合貪婪策略)下一節點。

經過CAN的優化後,查詢需要的跳數由O ( N)減少到均值爲(d/4)(n1/d)的隨機制,考慮到d爲常數,這一值可以表示爲O(n1/d)或O(dn1/d)。

討論

CAN和Chord的主要區別在於路由算法不同。相比之下,在節點數量非常大時,CAN的平均查詢跳數要比Chord增加得更快。而且CAN查詢過程中需要的運算量也要高於Chord。但CAN使用的d爲預先設置的常量,因此並不假設系統節點數量。在節點總數動態變化範圍很大的系統中,CAN的相鄰節點表結構保持穩定,這在P2P的應用中也是很重要的優點。

Pastry

Pastry在2001年由位於英國劍橋的微軟研究院和萊斯(Rice)大學提出(參見[4])。Pastry也是DHT的一個變種。

哈希算法

Pastry使用一致性哈希作爲哈希算法。哈希所得的鍵值爲一維(實際上使用的是128bit的整數空間)。Pastry也沒有規定具體應該採用何種哈希算法。

路由算法

在Pastry協議中,每個節點都擁有一個128bit的標識(Node Id)。爲了保證Node ID的唯一性,一般由節點的網絡標識(如IP地址)經過哈希得到。

Pastry中的每個節點擁有一個路由表R(Routing table),一個鄰居節點集M(Neighborhood Set)和一個葉子節點集合L(Leaf set),它們一起構成了節點的狀態表。

路由表R共有logBN(B = 2b爲系統參數,典型值爲16,N表示系統的節點總數)行,每行包括B-1個表項,每個表項記錄了一個鄰居節點的信息(節點標識、IP地址、 當前狀態等)。這樣就形成了擁有(B-1)logBN個條目的二維表格。路由表第n行的表項所記錄的鄰居節點的Node ID前n個數位和當前節點的前n個數位相同,而第n+1個數位則分別取從0到B-1的值(除了與當前節點第n+1數位的值)。這樣形成的路由表很類似IP路由中最長掩碼匹配的算法。參數b(或B)大小非常關鍵:B過大則節點需要維護很大的路由表,可能超出節點的負載能力,但路由表大些可以存儲更多的鄰居節點,在轉發時更爲精確。平均每次路由查找需要的跳數在Pastry中計算的結果是logBN,因此B的選擇反映了路由表大小和路由效率之間的折衷。

葉子節點集合L中存放的是在鍵值空間中與當前節點距離最近的|L|個節點的信息,其中一半節點標識大於當前節點,另一半節點標識小於當前節點。|L|的典型值爲2b或者2*2b。

鄰居節點集合M中存放的是在真實網絡中與當前節點“距離”最近的|M|個節點的信息。“距離”的定義在Pastry中非常類似IP路由協議中對距離的定義,也就是考慮到轉發跳數、傳輸路徑帶寬、QoS等綜合因素後所得的轉發開銷(可以參見OSPF等路由協議)。Pastry並未提供距離信息的獲取方法,而是假設應用層可以通過某種手段(人工配製或自動協商)得到信息並配置鄰居節點集合。|M|的典型值爲2b或者2*2b。

圖 3給出了一個Pastry節點狀態表的例子,該圖來源於[4]。

在節點狀態表中,節點本身的ID爲10233102。葉子集合中有8項,每一項都代表一個當前節點已知的其他節點的信息。路由表共有4*8項,可以看出由上至下節點ID重合的位數(前綴)不斷增加。鄰居集合中的節點ID由於來源於應用層,一般沒有規律性可循。

Pastry的路由過程如下:

首先,路由查詢消息中將攜帶被查詢對象ID(Object Id),又稱消息鍵值。當收到路由消息時,節點首先檢查消息鍵值是否落在葉子節點集合的範圍內。如果是,則直接把消息轉發給葉子節點集合中節點標識和消息鍵值最接近的節點;否則就從路由表中根據最長前綴優先的原則選擇一個節點作爲路由目標,轉發路由消息。如果不存在這樣的節點,當前節點將會從其維護的所有鄰居節點集合(包括路由表葉子集合及鄰居集合中的節點)中選擇一個距離消息鍵值最近的節點作爲轉發目標。

從上述過程中可以看出,每一步路由和上一步相比都更靠近目標節點,因此這個過程是收斂的。如果路由表不爲空,每步路由至少能夠增加一個前綴匹配數位,因此在路由表始終有效時,路由的步數至多爲logBN。

討論

Pastry的路由利用了成熟的最大掩碼匹配算法,因此實現時可以利用很多現成的軟件算法和硬件框架,可以獲得很好的效率。

與Chord和CAN相比,Pastry引入了葉子節點和鄰居節點集合的概念。在應用層能夠及時準確地獲得這兩個集合的節點信息時,可以大大加快路由查找的速度,同時降低因路由引起的網絡傳輸開銷;不過在動態變化的P2P網絡中如何理想地做到這一點的確有很大的難度。

Pastry的典型應用包括PAST(參見[5][6])和SCRIBE(參見[7])。

趨勢分析

目前DHT算法的發展方向非常多,不斷有新的改進算法被提出來。就筆者目前瞭解到的信息而言,至少有以下一些方向:

接近性(Proximity)

文中提到的DHT算法中,除了Pasrty以外,均未考慮重疊網絡拓撲結構與真實的IP網絡之間的重合關係。節點之間進行對等通信時,不會考慮優先選取距離自己最近的節點。這樣就使得最終形成的重疊網結構混亂,效率低下。因此如何讓節點獲得並利用接近性信息就非常重要。

結構化

目前基於DHT的應用尚未大規模展開,很多工程上的細節問題尚待解決。例如:目前有很多種類的P2P應用,如文件存儲和共享、電子郵件、流媒體等。這些應用在處理P2P路由算法、拓撲維護和信息檢索上使用的方法均有很大差別,導致即使是同類的應用也無法實現互通。如何爲各種P2P的應用抽象出一個通用的層次,也是目前研究的熱點問題之一。

信息查詢

基於分佈式哈希表的查詢是一種單關鍵字的精確匹配,儘管相對於非結構化系統它使得系統資源可被確定性地查詢到,但它也極大地限制了查詢的應用範圍。目前有許多改進的結構化查詢算法已經被提出來。

參考文獻

David Karger, Eric Lehman, Tom Leighton, Matthew Levine, Daniel Lewin, Rina Panigrahy "Consistent Hashing and Random Trees:Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web". In Proceedings of the 29th Annual ACM Sym-posium on Theory of Computing (El Paso, TX, May 1997), pp. 654-663.

Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan_ "Chord: A Scalable Peertopeer Lookup Service for Internet Applications" SIGCOMM'01, August 2731, 2001, San Diego, California, USA.

Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp, Scott Shenker "A Scalable Content-Addressable Network" SIGCOMM'01, August 27-31, 2001, San Diego, California, USA..

Antony Rowstron1 and Peter Druschel "Pastry: Scalable, decentralized object location and routing for large-scale peer-to-peer systems" Appears in Proc. of the 18th IFIP/ACM International Conference on Distributed Systems Platforms (Middleware 2001). Heidelberg, Germany, November 2001.

P. Druschel and A. Rowstron. PAST: A large-scale, persistent peer-to-peer storage utility. In Proc. HotOS VIII, Schloss Elmau, Germany, May 2001.

A. Rowstron and P. Druschel. Storage management and caching in PAST, a large-scale, persistent peer-to-peer storage utility. In Proc. ACM SOSP'01, Banff, Canada, Oct. 2001.

A. Rowstron, A.-M. Kermarrec, P. Druschel, and M. Castro. Scribe: The design of a large-scale event notification infrastructure. Submitted for publication. June 2001. http://www.research.microsoft.com/ antr/SCRIBE/.

F. Dabek, M. F. Kaashoek, D. Karger, R. Morris, and I. Stoica. Wide-area cooperative storage with CFS. In Proc. ACM SOSP'01, Banff, Canada, Oct. 2001.

Keith W. Ross, Dan Rubenstein, "P2P Systems"

寧寧,“對等網絡組通信機制的位置感知技術研究Research on Location-Aware Tech-nology in Peer-to-Peer Group Com-munication Mechanism”,申請清華大學工學碩士學位論文,May.2005.

李祖鵬,黃建華,唐輝,“基於P2P計算模式的自組織網絡路由模型”,軟件學報,1000-9825/2005/16(05)0916

胡進鋒,鄭緯民(清華大學計算機系高性能計算研究所,北京,100084),“p2p系統結點信息收集算法 Node Collection Protocol in P2P Systems”

鄒福泰,馬範援(上海交通大學計算機科學與工程系),“基於分佈式哈希表的對等系統關鍵技術研究RESEARCH ON THE KEY TECHNIQUE OF PEER-TO-PEER SYSTEMS BASED ON DISTRIBUTED HASH TABLE”,申請上海交通大學博士學位論文,二零零四年十一月

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章