程式者的胡言亂語
- 全部
- Networking
- Travel
- Win32
- 黑米蟲
- programming
- DirectShow
- 書評
- 吃吃喝喝
- 站在Java的肩膀上看C#
- 音樂和電影
- General
- Java
PNRP: Peer Name Resolution Protocol
這幾天研究微軟的Peer Name Resolution Protocol,這才發現了微軟在新Windows平台對P2P支援的野心。也許這已經是舊聞了,但是我其實一直沒有接觸過,也不知道。
引用Wikipedia上的說明(http://en.wikipedia.org/wiki/Peer_Name_Resolution_Protocol):
Peer Name Resolution Protocol (PNRP) is a new peer-to-peer protocol designed by Microsoft. It was first mentioned during a presentation at a P2P conference in November 2001. It appeared in July 2003 in the Advanced Networking Pack for Windows XP, and was later included in the Service Pack 2 for Windows XP. A revised version is included in Windows Vista and came enabled by default in beta 1 of that operating system. PNRP enables dynamic name publication and resolution, and requires IPv6.
應該要留意到,在Windows Vista的beta 1裡,不僅已經內建,而且還是預設開啟的。這意謂著在日後,如果Windows Vista依舊像它的先祖們一樣普及,那麼這個P2P的協定,就有可能會是全世界最普遍的P2P通訊協定。不過有點值得注意,這個P2P架構是運作於IPv6之上的。
從它的名稱看來,它只是個解析名稱的通訊協定。但是對分散式系統而言,naming是最關鍵的問題,解決了名稱的問題,就解決了大半的問題。而對P2P系統而言,這一點同樣成立。這是為什麼這個協定可被視為Windows P2P Networking的關鍵核心的原因。
事實上,它就是個DHT(Distributed Hash Table)的實作,採用的是環形的命名空間,並且利用階層式的cache來儲存routing所需的資訊。早期的DHT,多半都只是研究上的產物,雖然都有實作,但是P2P的真正考驗是在大型scale的真實世界,但近來開始有一些真正的系統採用DHT,例如有名的BitTorrent,便採用DHT來做為分散式的tracker,而eMule也採用了DHT。
雖然DHT有很多不同的演算法或實作,但抽象來說,它就是一個hash table,只不過它是分散式的。所有hash table中所記錄的key:value的對應,都平均的分散在所有的節點上,所以儲存的負載平衡了,網路的流量也平衡了,更不會有單一點錯誤引起的系統失效,這是它分散式的特質所帶來的好處。而不管分不分散,Hash table的抽象operation就是三個
(1) lookup(key) : value
(2) put(key, value)
(3) get(key) : value
而對DHT來說,這三種operation所需的message routing都可以在O(logN)的hop數內完成。這有兩個很大的意義。首先是scalability,即使節點數增加,所需要message routing的hop數,只會呈對數成長。第二個重大的意義是,這麼一來,這些operation都有它的upper bound。
所以總的來說,DHT就是提供一個lookup的服務。那為什麼分散式的lookup對P2P系統來說是這麼重要呢?先看檔案分享的例子好了,如果我們有了DHT,以下的這幾個動作大概可以這麼做:
(1) hashing取得key,以自己的ID為value,將key:value置於DHT中。這意謂著這個檔名在這個ID所表示的peer上可以找到。
(2) hashing取得key,於DHT中搜尋發佈該檔的peer ID,接著再向該Peer下載這個檔案。
你可以有很多方式來使用DHT,即使是檔案分享的P2P系統,都可以有很多不同的方式來使用。又例如對VoIP的應用而言,最關心的就是某個使用者現在在那個網路位置上(IP address、Port,以及Protocol)所以每個peer都可以利用DHT來發佈自己的Peer ID和網路位置的對應。其他peer倘若要撥電話給該peer,即可在DHT中搜尋該Peer ID目前的網路位置,接著就可以進行連線。
而PNRP就是提供一個DHT的作用,有了PNRP,你可以將任意的名稱對應到一個網路位置上。
Windows在新一代平台對P2P的支援,意謂著日後Windows的開發者能夠選擇省去開發一個P2P通訊架構的力氣和功夫,而且可以通過共通的P2P通訊架構,接軌至全世界採用Windows新平台的機器。我想這肯定會對現今的P2P生態產生很大的影響。
我怎麼就這麼後知後覺呢?新資訊跟我之間的傳遞管道始終都有阻塞的情況。
微軟的關於PNRP的官方文件:
http://msdn.microsoft.com/library/en-us/p2psdk/p2p/pnrp_namespace_provider_api.asp
而這邊則是微軟P2P Networking整體的說明:
http://www.microsoft.com/technet/itsolutions/network/p2p/default.mspx
最後是我搜尋到一篇說明的文件,可供參考:
http://wiki.daimi.au.dk/p2p/windowsp2p.pdf.wiki
Posted at 12:27下午 八月 30, 2006 by Chien-Hsing Wang in Networking | 迴響[1]
802.11b設備與802.11g設備混用時的封包broadcasting速率
802.11裡AP的作業模式分為四種,分別是802.11b only、
我們所遭遇到的問題是,當
Posted at 03:46下午 三月 23, 2006 by Chien-Hsing Wang in Networking | 迴響[0]
星期三 八月 30, 2006
