韌館-LearnHouse

分散式雜湊表(Distributed Hash Table,DHT)應用 - Kademlia

分散式雜湊表(英語:Distributed Hash Table,簡稱DHT)是分散式計算系統中的一類,用來將一個關鍵值(key)的集合分散到所有在分散式系統中的節點,並且可以有效地將訊息轉送到唯一一個擁有查詢者提供的關鍵值的節點(Peers)。這裡的節點類似雜湊表中的儲存位置。分散式雜湊表通常是為了擁有極大節點數量的系統,而且在系統的節點常常會加入或離開(例如網路斷線)而設計的。在一個結構性的延展網路overlay network)中,參加的節點需要與系統中一小部份的節點溝通,這也需要使用分散式雜湊表。分散式雜湊表可以用以建立更複雜的服務,例如分散式檔案系統、點對點技術檔案分享系統、合作的網頁快取、多點傳輸、任意點傳輸anycast)、網域名稱系統以及即時通訊等。

 

發展背景

研究分散式雜湊表的主要動機是為了開發點對點系統,像是Napster、GnutellaFreenet。這些系統得益於使用分散在網際網路上的各項資源以提供實用的應用,特別在頻寬及硬碟儲存空間上,他們所提供的檔案分享功能因此得到最大的好處。

這些系統使用不同的方法來解決如何找到擁有某資料的節點的問題。Napster 使用中央的索引伺服器:每個節點加入網路的同時,會將他們所擁有的檔案列表傳送給伺服器,這使得伺服器可以進行搜尋並將結果回傳給進行查詢的節點。但中央 索引伺服器讓整個系統易受攻擊,且可能造成法律問題。於是,Gnutella 和相似的網路改用大量查詢模式(flooding query model):每次搜尋都會把查詢訊息廣播給網路上的所有節點。雖然這個方式能夠防止單點故障single point of failure),但比起 Napster 來說卻極沒效率。

最後,Freenet 使用了完全分散式的系統,但它建置了一套使用經驗法則的基於關鍵值的轉送方法key based routing)。在這個方法中,每個檔案與一個關鍵值相結合,而擁有相似關鍵值的檔案會傾向被相似的節點構成的集合所保管。於是查詢訊息就可以根據它所提供的關鍵值被轉送到該集合,而不需要經過所有的節點。然而,Freenet 並不保證存在網路上的資料在查詢時一定會被找到。

分散式雜湊表為了達到 Gnutella 與 Freenet 的分散性(decentralization)以及 Napster 的效率與正確結果,使用了較為結構化的基於關鍵值的轉送方法。不過分散式雜湊表也有個 Freenet 有的缺點,就是只能作精確搜尋,而不能只提供部份的關鍵字;但這個功能可以在分散式雜湊表的上層實做。

最初的四項分散式雜湊表技術——內容可定址網路Content addressable network,CAN)、ChordChord project)、PastryPastry (DHT)),以及 Tapestry (DHT)Tapestry (DHT))皆同時於2001年發表。從那時開始,相關的研究便一直十分活躍。在學術領域以外,分散式雜湊表技術已經被應用在BitTorrent及CoralCDNCoral Content Distribution Network)等。

結構

分散式雜湊表的結構可以分成幾個主要的元件。其基礎是一個抽象的關鍵值空間(keyspace),例如說所有160位元長的字元串集合。關鍵值空間分割(keyspace partitioning)將關鍵值空間分割成數個,並指定到在此系統的節點中。而延展網路則連接這些節點,並讓他們能夠藉由在關鍵值空間內的任一值找到擁有該值的節點。

當這些元件都準備好後,一般使用分散式雜湊表來儲存與讀取的方式如下所述。假設關鍵值空間是一個160位元長的字元串集合。為了在分散式雜湊表中儲存一個檔案,名稱為 filename 且內容為 data,我們計算出 filename 的 SHA1 雜湊值——一個160位元的關鍵值 k——並將訊息 put(k,data) 送給分散式雜湊表中的任意參與節點。此訊息在延展網路中被轉送,直到抵達在關鍵值空間分割中被指定負責儲存關鍵值 k 的節點。而 (k,data) 即儲存在該節點。其他的節點只需要重新計算 filename 的雜湊值 k,然後送出訊息 get(k) 給分散式雜湊表中的任意參與節點,以此來找與 k 相關的資料。此訊息也會在延展網路中被轉送到負責儲存 k 的節點。而此節點則會負責傳回儲存的資料 data

以下分別描述關鍵值空間分割及延展網路的基本概念。這些概念在大多數的分散式雜湊表實作中是相同的,但設計的細節部份則大多不同。

關鍵值空間分割

大多數的分散式雜湊表使用某些穩定雜湊consistent hashing)方法來將關鍵值對應到節點。此方法使用了一個函數 δ(k1,k2) 來定義一個抽象的概念:從關鍵值k1k2 的距離。每個節點被指定了一個關鍵值,稱為ID。ID 為 i 的節點擁有根據函數 δ 計算,最接近 i 的所有關鍵值。

例:Chord 分散式雜湊表實作將關鍵值視為一個圓上的點,而 δ(k1,k2) 則是沿著圓順時鐘地從 k1 走到 k2 的距離。結果,圓形的關鍵值空間就被切成連續的圓弧段,而每段的端點都是節點的ID。如果 i1i2 是鄰近的 ID,則 ID 為 i2 的節點擁有落在 i1i2 之間的所有關鍵值。

穩定雜湊擁有一個基本的性質:增加或移除節點只改變鄰近ID的節點所擁有的關鍵值集合,而其他節點的則不會被改變。對比於傳統的雜湊表,若增加或移 除一個位置,則整個關鍵值空間就必須重新對應。由於擁有資料的改變通常會導致資料從分散式雜湊表中的一個節點被搬到另一個節點,而這是非常浪費頻寬的,因 此若要有效率地支援大量密集的節點增加或離開的動作,這種重新配置的行為必須盡量減少。

延展網路

每個節點保有一些到其他節點(它的鄰居)的連結。將這些連結總合起來就形成延展網路。而這些連結是使用一個結構性的方式來挑選的,稱為網路拓樸。

所有的分散式雜湊表實作拓樸有某些基本的性質:對於任一關鍵值 k,某個節點要不就擁有 k,要不就擁有一個連結能連結到距離較接近 k 的節點。因此使用以下的貪心演算法即可容易地將訊息轉送到擁有關鍵值 k 的節點:在每次執行時,將訊息轉送到 ID 較接近 k 的鄰近節點。若沒有這樣的節點,那我們一定抵達了最接近 k 的節點,也就是擁有 k 的節點。這樣的轉送方法有時被稱為「基於關鍵值的轉送方法」。

除了基本的轉送正確性之外,拓樸中另有兩個關鍵的限制:其一為保證任何的轉送路徑長度必須盡量短,因而請求能快速地被完成;其二為任一節點的鄰近節點數目(又稱最大節點度(Degree (graph theory)))必須盡量少,因此維護的花費不會過多。當然,轉送長度越短,則最大節點度越大。以下列出常見的最大節點度及轉送長度(n 為分散式雜湊表中的節點數)

  • 最大節點度 O(1),轉送長度 O(logn)
  • 最大節點度 O(logn),轉送長度 O(logn / loglogn)
  • 最大節點度 O(logn),轉送長度 O(logn)
  • 最大節點度 O(n1 / 2),轉送長度 O(1)

第三個選擇最為常見。雖然他在最大節點度與轉送長度的取捨中並不是最佳的選擇,但這樣的拓樸允許較為有彈性地選擇鄰近節點。許多分散式雜湊表實作利用這種彈性來選擇延遲較低的鄰近節點。

最大的轉送長度與直徑有關:最遠的兩節點之間的最短距離。無疑地,網路的最大轉送長度至少要與它的直徑一樣長,因而拓樸也被最大節點度與直徑的取捨限制住,而這在圖論中是基本的性質。因為貪婪演算法(Greed Method)可能找不到最短路徑,因此轉送長度可能比直徑長。

 

範例

分散式雜湊表實作與協定

  • Bamboo
  • Bunshin
  • 內容可定址網路 (Content Addressable Network)
  • Chord
  • DKS系統
  • Kademlia
  • Leopard
  • MACE
  • Pastry
  • P-Grid
  • Tapestry

Kademlia 網路的詳細解釋

基本上,Kademlia不是一個網路,是一個很熱門的技術,通稱為DHT (Distributed Hash Table 分散式雜湊表)Kademlia 是個 Petar Maymounkov David Mazières 所設計的點對點 (P2P) 重疊網路, 以達成非集中式的點對點 (P2P) 電腦網路。它規制了網路的結構及規範了節點間的通訊和交換資訊的方式。Kademlia 節點間使用傳輸通訊協定UDP溝通。Kademlia 節點藉以實作分散式雜湊表 (DHT,distributed hash table) 以儲存資料。透過既有的區域網/廣域網( LAN/WAN) (如同網際網路),一個新的虛擬網路或是重疊網路被建立起來。每個網路節點都是以一組數字(「節點 ID」)來識別。這組數字不但做為識別之用,Kademlia 演算法還會用來做其他用途。

一個想要加入網路的節點需要先通過啟動。在這個階段,這個節點需要知道另一個已經在 Kademlia 網路內的節點之 IP 位址 (透過另一個使用者或儲存的清單取得)。如果啟動中的節點還不是網路的一部分,它便會計算一個尚未指定給其他節點的隨機 ID 編號。這個 ID 會一直使用到離開網路為止。

Kademlia 演算法是基於兩節點間的「距離」來計算。這個距離是以兩節點的 ID 進行異或運算,並將結果四捨五入至整數。這個「距離」跟實際的地理環境無關,而是標明 ID 範圍內的距離。因此一個德國的節點和一個澳洲的節點就有可能被稱為「鄰居」或「芳鄰」。

Kademlia 內的資訊都儲存在稱為「數值」的東西內,每個數值都連接著一個「金鑰」。當搜尋某個金鑰時,演算法會透過幾個步驟探整個網路一圈,每個步驟都會更接近要搜尋的金鑰,直到被連線的節點傳回數值,或找不到更近的節點。網路的 大小僅會稍微影響到進行搜尋時接觸到的節點數目:假如目前網路的使用者突然增為兩倍,那使用者節點大概只需要在搜尋時多查詢一個節點,而不是兩倍的節點 量。

非集中式的結構提供了更大的優勢,並很明顯地增加了對拒絕服務阻斷攻擊的抵抗。即使一整系列的節點被壅塞,也不會對網路可用度造成太多影響,最後網路會透過繞過這些「洞」而自我修復。

在檔案分享網路中的應用

Kademlia 被用來進行檔案分享。透過進行 Kademlia 關鍵字搜尋,任何人可以在檔案分享網路中尋找資料以下載東西。由於沒有任何中央伺服器儲存檔案列表的索引,因此這項工作是平均的由所有的客戶端擔當:擁有要分享的檔案枝節點,會先處理檔案的內容,並從內容計算出一組數字(雜湊), 這組數字將會在檔案分享網路中辨識這個檔案。雜湊與節點 ID 的長度必須相同。接著會搜尋幾個 ID 與雜湊相近、且節點內有儲存著自己 IP 位址的節點。搜尋的客戶端會使用 Kademlia 來搜尋網路上節點ID離自己最近距離的節點來取得檔案雜湊,然後會取得在該節點上的聯絡清單。 當節點聯入和聯出時,這份存儲在網路上的聯絡清單也將保持不變。因為內嵌的冗余存儲演算法,聯繫清單將複製在多個點上。

檔案雜湊通常都是由其它地方的特製網際網路鍵結來取得,或者被包含在來自其它來源中的索引檔中。

對檔案名稱的搜索是基於關鍵字來實現的。檔案名稱被分成幾個組成檔案名稱的單字。 每個關鍵字都會被雜湊, 並和相對的檔案名稱與檔案雜湊利用和檔案雜湊一樣的方式儲存到網路上。一個搜索者會選擇其中的一個關鍵字,聯繫上和關鍵字雜湊最相近的節點ID,然後取得 含有關鍵字的檔案名稱列。既然在檔案名稱列中的每個檔案名稱都附有自己的湊雜,那麼被選的檔案就可以由一般的方式取得。

kad 網絡是一種根本不需要服務器的架構,每個emule客戶端負責處理一小部分searchsource finding的工作。分配工作的原理是基於客戶端的唯一idsearch或者sourcehash之間的匹配來決定。比如說 LordOfRing1.avi這個文件由用戶abc來負責(通過文件的hash決定),則任何用戶共享這個文件的時候都會告訴用戶abc我有這個文件, 其他用戶去下載這個文件的時候也會詢問abcabc告訴他們誰有這個文件,source finding就完成了。search的方法也差不多,每個人負責一個keyword

至於如何找到用戶abc則是通過一種將用戶 id異或的方式,兩個id的二進制異或值決定他們之間的邏輯距離,比如1100距離1101要比距離1001近。當一個喲用戶加入kad後,首先通過一個 已知的用戶找到一批用戶的idip:port。當此用戶A要尋找某特定用戶x時,A先詢問幾個已知的邏輯距離X較近的用戶,如x1,x2,x3x1, x2,x3會告訴A他們知道的更加近的用戶的id,ipport,一次類推,A最終就能找到X。尋找的次數應該在logN數量級,N是總人數。

資料來源

分散式雜湊表 - Wikipedia
Kademlia - Wikipedia 

KAD網絡的一些解釋

 

2008年1 月 posted by admin in 文獻參考 and have Comments (2)

Street Fighter IV 懷舊的街頭快打3D版 on XBOX360

2008年1 月 posted by admin in 影視娛樂 and have No Comments

迎接2008曙光跨年晚會一覽

明晚跨年 大城小鎮都有得High

更新日期:2007/12/30 16:40 地方中心/連線報導

「跨年晚會」已成各地縣市政府必辦活動,有的還與觀賞2008第一道曙光活動串連,歌手們也是北中南趕場演出,明晚,全島鐵定熱鬧滾滾!

Read more...

2007年12 月 posted by admin in 影視娛樂 and have No Comments

炫耀文兩篇(2/2)-中華電信3.5G

內容來源:大學好友GG旻 

12/20號順利購入ASUS T500

今天衝著買筆電送的ASUS T500一元兌換卷,需搭配中華電信

所以我就跑去辦中華電信3.5G無線上網850元吃到飽

我比較喜歡中華電信而且也信任中華電信品質,剛好華碩是搭配中華

運氣真是好,我有同學買TOSHIBA M600也是有送3.5G網卡兌換卷

不過他是搭配台灣大哥大

雖然我學長之前就有辦遠傳電信3.5G無線上網,他是用華為的E220,我也有拿來測試過,感覺還不錯,不過呢要把它放到窗戶旁,這樣訊號才會強,不然的話會慢到想哭

而且ASUS T500外觀跟華為E220比起來,我感覺華碩比較漂亮,可是相對也比較大,不過有一個缺點就是T500需要用光碟來驅動,而華為E220他的驅動程式是內建的,但是T500也有一個E220沒有的優點,就是它可以插耳麥,別人打電話給你的時候就可以直接對話,不用另外把SIM卡插入手機

 

現在就要來探討這個3.5G速度到底好不好了,如果我把網卡放到窗戶旁時,訊號可以強到4~5格,可是如果我不把它放到窗戶旁,而放到我桌上的話,頂多就只有兩格,有時候還會訊號太弱而斷訊

當他有4~5格訊號時,我有去中華電信測試過速度,大約下載一個檔案平均速度是100K左右,好像跟它號稱3.6MB差距很大….

不過呢!!這種速度拿來掛天堂真是剛剛好阿……別以為我會這樣做

我是拿來做學術研究的

  

2007年12 月 posted by admin in 電腦&硬體 and have Comments (5)

炫耀文兩篇(1/2)-華碩W7E

內容來源:大學好友GG旻 

12/8號這一天跟著同學一起來到台北資訊展買筆電

為啥我會想買,因為第一次感覺到想要在上課的時候做報告

所以此時我就需要筆電,我發現實踐都沒有上課用筆電的風氣

導致我也不太會想買筆電,自從上了研究所之後發現幾乎人人一台

此時就會讓我好想也要有一台,而且我發現這邊的大學部幾乎也是人手一台

跟我們當時的實踐差距真大
 

回歸正題,進到資訊展才知道台北的可怕

裡面幾乎根本不能移動,人有夠多的,還好我有事先做功課

所以我知道我想要買哪一台,不然到了現場才在那邊東挑西挑,我大概會死掉吧

我光是鎖定一台每間詢問都快讓我陣亡了(其實我已經陣亡了)

我每間詢問價錢都是問"升到2.5G之後含稅多少,因為有含稅比較有保障

問到價錢大概都是35000左右,我就想說怎可能都差不多

所以我就買了一間比較便宜的34500,他有送防毒軟體、DVD燒錄片20

之後發現我好像少A很多東西,例如:鍵盤膜、螢幕貼、機身保護膜

可能是我當天被熱到吧,最後決定要去哪間買的時候,我的身體已經不行了

當時感覺是頭很痛,後來領電腦的時候還跑去吐,之後大概知道是中暑的傾向

當天吃啥吐啥,有夠痛苦,後來領電腦被他說服了貼螢幕保護貼800

所以總共花了35300

 

拿到電腦之後到這幾天使用的心得,速度還不錯,規格的話網路上有

只不過呢有幾個缺點:

1.      想灌回XP的話有麻煩,官網沒有我這款的XP驅動程式,我有特地打電話去華碩維修點皇家俱樂部問說有沒有W7EXP驅動程式,也跟我說目前沒有

2.      我的天堂沒辦法開Linex,這點讓我最幹,天堂可以打開,可是輔助程式卻打不開,越來越想灌回XP

3.      網路上有說到這款的筆電很燙,然後發現的確滿熱的,而且散熱口在右手邊,所以右手會熱熱的,這點我還可以忍受

 

 

2007年12 月 posted by admin in 電腦&硬體 and have Comments (3)

購買ASUS F3Jr筆電

當然前鎮子我才買筆電而已,所以不可能這麼有錢再買一台囉!!

這台主要是幫我女友挑選的,當時他媽媽和她一起來高雄玩

所以順便要我幫忙購買筆記型電腦,因此根據我上次的經驗

幫他們挑選適合又便宜的筆記型電腦,總共25500元

同時根據以往的經驗給他A了幾個贈品,清掃組、耳機麥克風、保護貼

其實我忘了A一個散熱底座了,因為我買Acer TravelMate 5710G時有A到散熱底座

不過至少有叫他們貼保護貼防止烤漆掉落與刻痕,我也把我那台Acer的拿出來要求是否也可以貼

沒想到他們很快的就說可以,不但幫我外殼貼保護膜,也幫我觸控板兩邊也貼

而且過程中,還有一點點小失誤導致有點空氣在裡面,很快的就有人要求貼的人重貼

果然是一家不錯的店,是高雄建國路上的易盛數位有限公司

其實幫怡玲買這台筆記型電腦,我覺得在用得到的功能範圍內比我的還實用

由於我是Core 2 Duo她是Core Duo,而且近幾年來也不會需求到64位元

所以購買Core Duo的CPU我覺得錯錯有餘,我當初買的就顯得有點浪費了(因為我是灌XP)

和我的Acer 5710G比起來,F3J視訊是130萬畫素相對於我的30萬畫素就有差了,而且還有DVI的輸出

雖然說規格上記憶體是512MB 667MHz,但店家升級到1G,而且也是Vista的作業系統

這台F3J唯一的缺點大概就硬碟比較小,只有80G,還有背包帶非常的難看= =!!

而且我發現華碩似乎附加的東西比較齊全,有復原光碟和VISTA的驅動程式以及電話線等等

相對於Acer什麼都要自己用都不提供,連備份光碟也要自己燒,這麼不體貼客戶的作法,就有過往而不及了 

Asus F3j 25500元與我的Acer 5710G 29900元,差了4400元,結果似乎和我的規格上差沒多少

以下我就貼3張用相機拍的圖片吧

ASUS F3APRT2WDD 大螢幕獨立強顯機1G版

記憶體升級到1 GB

產品特色

F3Jr搭載Intel最新推出IntelR Core 雙核心技術,彷彿擁有兩顆渦輪引擎,
可以同時迅速執行多種應用程式,不論是在遊戲戰場搏鬥、執行精密的繪圖程式,
或是 Download /Upload 檔案時不會影響其他程式的執行(ex: 瀏覽網頁、背景音樂撥放…等等),
讓你可以更快更多元的處理各項繁複的程式。

高效能的3D 處理能力
F3Jr採用ATI Mobility Radon X2300獨立顯示晶片,ATI Mobility Radon X2300使用ATI創新
Avivo技術的獨立型繪圖處理器,提供優異的數位娛樂解決方案、絕佳的繪圖效能、優異的功率管理、
輕易處理動畫中的複雜圖形,清楚呈現遠距離影像,且精巧修飾外部鋸齒與內部鋸齒,
讓遊戲中人物的線條更唯美,呈現極緻的視覺體驗。

支援藍芽V2.0+EDR技術
此外,F3Jm採用IntelR945 PM晶片組,加上DDR2 667MHz雙通道記憶體擴充槽,並支援記憶體雙通道技術,
並支援多功能讀卡機,包含目前市面上主流規格的記憶卡讀取格式,更提供乙太網路、使用優於傳統藍芽
傳輸效能三倍的藍芽V2.0+EDR(選購),完善的整合有線與無線網路,讓玩家輕鬆火速上網。

※ 尺 寸 規 格

型號: ASUS F3APRT2WDD
處理器:Intel Dual Core T2080(1.73GHz)處理器
顯示器: 15.4” (WXGA /WSXGA+)彩色液晶螢幕
主記憶體:512MB DDRII 667
硬碟: SATA 80 GB
顯示晶片:ATI
VRAM: X2300 HM 256MB
光碟機: DVD-Super Multi
作業系統:正版 WindowsR Vista Home Basic
無線通訊:內建雙天線高效能網路模組,支援802.11a/b/g
讀卡機:支援MMC, SD, Mini-SD/Memory Stick, MS PRO/MS-Duo/MS-Pro-Duo規格
攝影機: 內建130 萬畫素網路攝影機
I/O 插槽: USB 2.0 *4 /Bluetooth藍芽 /IEEE 1394*1/TV OUT/SPDIF/一組麥克風/
一組耳機 (SPDIF)/一組音訊輸入
音效: 內建Intel High Definition立體雙聲喇叭、內建立體音響
規格重量: 365 x 269 x 28-40.5 mm (W x D x H),2.95Kg(6 cells 電池祖)
隨機附件:
- 滑鼠
- 包包
多媒體軟體:
- ASUSDVD XP 6.0
- Power Director V3.0 DE
- Medi@Show V2.0 SE

安全:
- Kensington鎖孔
- 可設定BIOS、開機、硬碟使用者密碼
保固 & 線上支援:
- 2年全球保固
- 1年電池保固

2007年12 月 posted by admin in 電腦&硬體 and have No Comments