Welcome to MSDN Blogs Sign in | Join | Help
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.

 

The Link Local Scope

PNRP 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

Posted: Tuesday, June 12, 2007 10:00 AM by p2p
Filed under:

Comments

ksugie said:

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)

# June 22, 2007 3:00 AM

mishasoft said:

Hey.

I have two machines running WinXP connected through hub.

On the PC#1 I have both IPv4 and IPv6 interfaces installed. Additionally there is FTP server installed on this mashine listening on 6to4 Tunneling Pseudo-Interface (Prefered Global IPv6: 2002:f00:b::f00:b)

On the PC#2 I have IPv6 only installed. Additionally there is FTP client installed on this machine.

I'm trying to connect from PC#2 to PC#1 through 6to4 incapsulation but it fails.

When I'm trying "ping6 2002:f00:b::f00:b" from PC#2, I get "Invalid scope-id specified".

What is wrong?

Thanks in advance,

Michael.

# August 7, 2007 9:18 AM

ASP.NET Podcast said:

Subscribe to EVERYTHING <-- What you REALLY WANT TO DO! Subscribe to WMV Video only . Subscribe to

# June 19, 2008 2:04 PM

Wallace B. McClure said:

Subscribe to EVERYTHING <-- What you REALLY WANT TO DO! Subscribe to WMV Video only . Subscribe to

# June 19, 2008 2:27 PM

Glavs Blog said:

So I *finally* managed to get a videocast/podcast done. Wally has been harassing me for ages, and I eventually

# June 19, 2008 6:21 PM

Readed By Wrocław NUG members said:

So I *finally* managed to get a videocast/podcast done. Wally has been harassing me for ages, and I eventually

# June 19, 2008 7:49 PM

More Wally - Wallace B. McClure said:

Subscribe to EVERYTHING <-- What you REALLY WANT TO DO! Original Url: http://aspnetpodcast.com/CS11

# June 20, 2008 11:57 AM

sosimple said:

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,

Lukasz

# April 20, 2009 8:19 AM
Anonymous comments are disabled
Page view tracker