Understanding PNRP Clouds
In the next few days, I'd like to post portions of the debugging guide that we've been compiling. First, we need to explain PNRP clouds and cloud states and run through our powerful but cryptic netsh commands. We'll start with clouds.
A PNRP cloud is a group of connected PNRP nodes. By connected, I mean that paths exist between peers such that any node in the cloud can resolve a name published by any other node.
When you start the PNRP service, it joins multiple clouds. Actually, PNRP bootstraps are lazy and will wait for an application to register or resolve a name before spending any bandwidth.
You can list the clouds your machine is participating in with the netsh p2p pnrp cloud show list command. Here’s an example from my computer:
Scope Id Addr State Name
----- ----- ----- ---------------- -----
3 8 1 Active LinkLocal_2001:4898:28:2::/64
1 0 2 Active Global_
PNRP clouds can be classified by the ipv6 scope that they operate on. Your machine will join clouds in the global, link local and site local scopes. The site local scope has been deprecated, so it’s unlikely you’ll encounter it. We won’t talk about it further.
In the listing above, the scope heading refers to the ipv6 scope of the cloud. Global (1), Site Local (2) or Link Local (3) are all valid possibilities.
<o:p></o:p>
The Link Local ScopePNRP will join a link local cloud for every link local address on your machine. Here’s the output of netsh p2p pnrp cloud show list on a machine with two network cards:
netsh p2p pnrp cloud>show list
Scope Id Addr State Name
----- ----- ----- ------- -----
3 8 1 Active LinkLocal_{1FFC205C-6D0D-43A0-B471-59E9FE0CFF}
3 12 1 Active LinkLocal_2001:4898:28:2::/64
1 0 4 Active Global_
Note the naming scheme. PNRP names the link local cloud using the prefix of the Global address assigned to the interface. If you have two interfaces, and they share a Global prefix, PNRP will name the second link local cloud with a GUID.
The Global Scope
PNRP will join the Global_ cloud if you have a global ipv6 address. If you don’t have a global IPv6 address, the Global_ cloud won’t appear. Here’s the output of netsh p2p pnrp cloud show list on a machine without global connectivity
netsh p2p pnrp cloud>show list
Scope Id Addr State Name
----- ----- ----- ---------------- -----
3 8 1 Active LinkLocal_ff00::%8/8
A PNRP node can only join one global cloud at a time. If you’re interested in running a private PNRP cloud, you can set up your own seed node and configure your clients to bootstrap from it. If you do this, your clients won’t be able to resolve names in the global cloud hosted by Microsoft. Be careful!
Cloud States
Active
The node is connected and has neighbors. You can publish and resolve names. Excepting a few very strange situations, an active cloud is a healthy cloud.
Alone
You don’t have any neighbors, so your publications won’t be reachable and you won’t be able to resolve peers in this cloud. It can be perfectly normal for your link local clouds to be alone. There might not be any other PNRP nodes on your link.
Underlying network problems can prevent your clouds from going active. If you’re alone in a cloud, but don’t think you should be, the cloud probably failed to bootstrap correctly. If your Global_ cloud is in the alone state, you’re likely not able to communicate with the seed server. Your firewall might be misconfigured or your packets might be filtered upstream.
If you’re alone in a link local cloud you might have difficulty communicating with computers nearby. PNRP uses the simple service discovery protocol (SSDP) to find neighboring on-link nodes. If SSDP is disabled on your system, or blocked by the firewall, your link local clouds will not bootstrap correctly.
Virtual
We mentioned earlier that PNRP cloud bootstrapping is a lazy operation. A PNRP cloud that has been created, but not used, will be in the virtual state.
As a further optimization, PNRP suspends itself after fifteen minutes of inactivity. If you don’t have a name published and you aren’t resolving any names you can expect to find your clouds in the virtual state.
No Net
If you pull the wire or wander out of your hotspot, your clouds will switch to the no net state.
Synchronizing
Your cloud is in the process of bootstrapping. The bootstrap operation is pretty quick for both link local and global clouds. You have to be sneaky to catch your cloud synchronizing.
Questions about PNRP clouds? Ask us!
Thanks!
Tyler
tylbart at microsoft.com
Comments
- Anonymous
June 21, 2007
Hello Tyler. Please let me ask about Cloud. Global_ cannot be Active but Alone like below, and also it seems not to reach teredo server. Could you please let me know what is the problem. Scope Id Addr State Name ----- ----- ----- ---------------- ----- 1 0 1 Alone Global_ 3 5 1 Alone LinkLocal_{68A674B3-57BF-4228-A32A-B68A01 4B241D} Here is the state of teredo, showing error 2nd Server is not reachable. netsh interface ipv6>show teredo Teredo parameters
種類(kind) : enterpriseclient サーバー名(servername): teredo.ipv6.microsoft.com クライアント更新間隔(interval) : default クライアント ポート(port) : default 状態(state) : offline エラー(error) : セカンダリ サーバーのアドレスに到達できません(it's meaning it cannot reach at secondary server address)
Anonymous
August 07, 2007
The comment has been removedAnonymous
June 19, 2008
Subscribe to EVERYTHING <-- What you REALLY WANT TO DO! Subscribe to WMV Video only . Subscribe toAnonymous
June 19, 2008
Subscribe to EVERYTHING <-- What you REALLY WANT TO DO! Subscribe to WMV Video only . Subscribe toAnonymous
June 19, 2008
The comment has been removedAnonymous
June 19, 2008
The comment has been removedAnonymous
June 20, 2008
Subscribe to EVERYTHING <-- What you REALLY WANT TO DO! Original Url: http://aspnetpodcast.com/CS11Anonymous
April 20, 2009
Hi, Is there a connection between cloud guid and interface name? I would like to show the list of interfaces on which user can create PeerGroup. Do you know how to start group on more than one interface. Thanks, LukaszAnonymous
January 20, 2011
Hi, I'm not sure if anyone is still reading this, but I have run into situations where Global_ state says it is "No net" even though I'm able to connect to this computer via Internet (a PC located in one city from another). I've searched the web and only thing I can find is the the network cable is unplugged for this state, but it is clearly not the case here. Any insight?