Peer-To-Peer based Features in Win 7


Perhaps you watch ABC’s Extreme Makeover: Home Edition.  If you do, then you may know it had a sibling show called Extreme Makeover Home Edition: How’d They Do That?  It showed extra behind scenes work on how they pulled off such an amazing feat.  Or maybe you are a Discovery Channel buff and find yourself watching How Its Made.  If you ever wanted to know how they make common everyday items such as balloons or vegetable oil, that is the show for you.  But have you ever wanted to know how your favorite Windows 7 features were made?  I would like take a few moments to shed light on how two new Windows 7 features use the Microsoft Windows Peer-To-Peer network platform to provide a great end user experience.  I’ll give you a brief overview of how peer-to-peer technologies solved real issues, and how you can use the features in your applications.


 


To start with lets reintroduce Remote Assistance.  The ability to request somebody remotely to help you isn’t exactly a new feature to the windows platform.  But Windows 7 has improved it by using PNRP.  Windows 7 offers a new connection option called Easy Connect which is, well, an easier way to connect to your friends who can help you.  Before you needed to create and email an invitation file.  I always hated walking through somebody on the phone how to do that.  But now when you click easy connect a series of 12 easy to read characters appears.  You can read these over the phone to your expert friend helping you.  The other person types them into his instance of remote assistance and the two connect like magic.  Except it isn’t magic.  It is PNRP.  PNRP allows you to publish the endpoint of a service on the internet.  In Remote Assistance’s case the service is the Remote Assistance session.   The 12 characters are actually a transformed version of a PNRP Peer Name.  How does PNRP work?  We have published a number of papers describing the protocol in detail and it is beyond the scope of this blog to go over it all again.  But simple put there is a “PNRP Cloud” on the internet which is made up of nodes participating in PNRP.  When you publish your peername it gets flooded to some members of the cloud.  When you search for a PNRP name you are iteratively contacting other participating PNRP nodes in the cloud to find the node that matches your search criteria.  This has some tremendous advantages over DNS.  For instance, when you register a PNRP name in the cloud it is locatable across the world within a few seconds!  If your IP address changes your PNRP registration is also updated, so you don’t have to worry about people connecting to stale addresses.  This would work great for any application that needs to connect to other nodes on the fly…especially mobile nodes.  PNRP works over IPv6.  Chances are you don’t have Native IPv6 at your house.  But you probably do a have Teredo connectivity.  Teredo is a technology that tunnels IPv6 over IPv4.  But it is also great for achieving end-to-end connectivity through your home’s NAT.   So by using PNRP Remote Assistance (and your application) can achieve end-to-end connectivity across the internet in seconds, without the need for a game lobby, emailing invitations, or defining custom port mapping rules on your NAT.  I’m sure by now you are asking how you can get started writing PNRP enabled applications.  If you are a Native Code developer check out PNRP on MSDN and our samples in the platform SDK.  If you are a managed code developer check out the System.Net.PeerToPeer namespace in .NET Framework 3.5.


 


Now let’s look at one of the most anticipated features of Windows 7  for all you home users: HomeGroup.  This really enhances the experience when you have multiple PCs in a single house.  You can learn more about it here.  http://windows7news.com/tag/homegroup/.  What does it have to do with the Microsoft Windows Peer-To-Peer Platform?  Home group uses the P2P feature called Grouping which has been around since XP sp2.   Grouping is a technology that maintains a mesh of connected nodes.  Each node maintains a database of records which is kept in sync with all other participating nodes.  HomeGroup uses this feature to keep a set of records about resources that are available in that group, such as file shares and printers.  As new PCs join the home group it joins the P2P Group, gets flooded the records for the groups, and is quickly able to be full participating member.  Although P2P Grouping has the ability to run over the Internet (using IPV6 & Teredo as described above), the HomeGroup feature limits the scope to your local network.  P2P Grouping also includes a security model to prevent rogue nodes from joining or getting content without permission.  What are good uses for grouping?  Any time you wish to synchronize application data between multiple nodes, consider grouping.  Since the data is stored locally on each node retrieval time is very fast, especially for larger content which would normally need to be pulled from a server.  Imagine the possibilities!  To get started check out the Group Chat sample in the Windows SDK.  This sample application uses grouping to create a simple chat application.  Each message sent is a record in the group, so when you join the chat session you get a full history of the entire chat.  It also demonstrates how grouping keeps track of group membership.


 


The industry as a whole tends to use the phrase “peer-to-peer” only when talking about internet scale file-sharing applications.  But here we are trying to redefine it to a much broader definition and are finding uses for it in many applications such as those mentioned here.  I look forward to hearing about how use peer-to-peer in your applications.


 


Thanks!


-Travis


Comments (10)

  1. nesher says:

    Just wanted to say that not everyone has Teredo. I had several routers, and no one could make Teredo connection.

    Even Vista Certified router didn’t worked with default settings.

  2. I’ve been catching up on my blog reading…interesting stuff I came across; PNRP in Windows 7 being…

  3. consumer4beta@hotmail.com says:

    Idea: Add such a feature to SharedView as well or merge SharedView and RA’s features.

  4. consumer4beta@hotmail.com says:

    Is file transfer supported when we use Easy Connect?

  5. anonymuos says:

    Is Meeting Space being discontinued in Windows 7? I agree it was little used but it was great for collaborating over my home network as well as office network. I sure won’t be upgrading to the new OS if Microsoft decides to drop features randomly.

  6. jiyu2005 says:

    Interested in HomeGroup,but i want to read more abot it.

  7. sudersan adhikari says:

    I am very happy when i read about peer to peer networking

  8. suzerain says:

    It isn't fair that HomeGroup wasn't backported to Windows Vista, especially in light of the fact that a similar feature (Castle) was slated for it.

    Perhaps you could have backported it only to the Ultimate edition, which would have helped make up for the farce known as Windows Ultimate Extras.

  9. mmk says:

    So I am learning about Peer to Peer networking. I was concerned when I saw Homegroup   enabled in my Firewall inbound. So enabled is a good thing. I thought someone was snooping. I kept disabling it.