ARTICLES IN THE BOOK
A GUIDE TO WINDOWS VISTA
This article is from:
All text is available under the terms of the GNU Free Documentation License: http://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License
Peer Name Resolution Protocol (PNRP) is a 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.
The design of PNRP is covered by US Patent #7,065,587, issued on June 20, 2006.
PNRP is a distributed name resolution protocol allowing Internet hosts to publish "peer names" and the corresponding IPv6 address. Other hosts can then resolve the name, retrieve the corresponding address, and establish peer-to-peer connections.
With PNRP, peer names are composed of an "authority" and a "qualifier". The authority is identified by the secure hash of its public key, or by a simple place-holder (the number zero) if the peer name is "insecure". The qualifier is a simple string, allowing an authority to publish multiple names for multiple services.
If a name is secure, the PNRP name records are signed by the publishing authority, and can be verified using its public key. Insecure names can be published by anybody, without possible verification.
Multiple entities can publish the same peer-name. For example, if a peer-name is associated with a group, any group member can publish an address for the group.
Names are published in a specified scope. The scope can be a local link, a site (e.g. a campus), or the whole Internet.
Internally, PNRP uses an architecture similar to distributed hash table systems such as Chord or Pastry. The peer name is hashed to produce a 128-bit peer identifier, and a DHT like algorithm is used to retrieve the location of the host publishing that identifier. There are however some significant differences.
DHT systems like Chord or Pastry store the indices of objects (hashes) at the node whose identifier is closest to the hash, and the routing algorithm is designed to find that node. In contrast, PNRP always store the hash on the node that publishes the name. A node will thus have as many entries in the routing system as the number of names that it publishes. The PNRP design arguably trades increased robustness for higher routing cost.
Most DHT systems assume that only one node publishes a specific index. In contrast, PNRP allows multiple hosts to publish the same name. The internal index are in fact composed of the 128-bit hash of the name and a 128-bit location identifier, derived from the IPv6 address of the node.
PNRP does not use a routing table, but rather a cache of PNRP entries. New cache entries are acquired as a side effect of ongoing traffic. The cache maintenance algorithm ensures that each node maintains adequate knowledge of the "cloud". It is designed to ensure that the time to resolve a request varies as the logarithm of the size of the cloud.