程式者的胡言亂語

pageicon 星期三 八月 30, 2006

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

pageicon 星期四 三月 23, 2006

802.11b設備與802.11g設備混用時的封包broadcasting速率

802.11AP的作業模式分為四種,分別是802.11b only802.11g only802.11g-wifi、以及802.11bg。而AP可以支援的速率分為兩種,一種是transmit rate,也就是實際上device可以選擇傳輸資料的速率。而另一種則是basic rate set,代表所有使用該APdevice都必須支援的速率。


我們所遭遇到的問題是,當802.11gAP混合著使用802.11b802.11gdevice時,其速率為何?802.11規定controlmulticastbroadcast的封包都必須採用basic rate set裡的速度(稍微想一下就知道很合理,因為這些packets是每個device都需要收到的)。所以究竟會採用那一個速度,就端視AP本身對於Basic Rate Set的設定。我自己試了家裡的 802.11gAP設定,發現的確可以設定Transmit RateBasic Rate Set,但預設值都是「Auto」之類的。但802.11gdevice進到設定Basic Rate Set1Mbps2Mbps802.11g AP時,broadcasting的速度馬上就降到僅有1Mbps2Mbps。但如果設定更高的Basic Rate Set,其broadcasting速度立即大增。802.11bg可選用的Basic Rate包括:1, 2(預設), 5.5, 11

把對母乳媽媽的感謝與支持傳出去

« 三月 2010
星期日星期一星期二星期三星期四星期五星期六
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
   
       
今日

Search this blog

Links

Weblog menu

Today's referrers

Feeds