IP Library Granted Patent US 7,912,959
Granted Patent B2
US 7,912,959 · App. 11/080,825 · Granted Mar 22, 2011

Architecture for building a peer to peer messaging platform

Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,912,959
App. No.
11/080,825
Granted
Mar 22, 2011
Kind
B2
Abstract

The claimed system is a multicast programming model for implementation on top of a service oriented framework, specifically a service oriented messaging system. It provides application-layer multicast capability without requiring an IP multicast infrastructure. The claimed system enables service oriented applications to implement multicasting communications easily and efficiently.

Claims (40)

1. A computer readable storage device physically configured according to computer-executable instructions for providing multicast peer to peer meshing functionality to a service oriented messaging system, the computer-executable instructions comprising:

creating and opening a PeerChannelFactory object when an application initiates a connection to a designated mesh to create a PeerChannel;

determining if a first PeerNode is associated with the created PeerChannel;

if a first PeerNode is associated with the created PeerChannel, then connecting the PeerChannel to that first PeerNode and then opening the PeerChannel to allow messages to be sent from and received by the PeerNode via the PeerChannel; and

if no PeerNode is associated with the created PeerChannel, then

creating a new PeerNode,

opening a new PeerChannel,

opening the created PeerNode,

querying a resolver for existence of other PeerNodes and attempt to establish Neighbor Channels to those other PeerNodes,

if connection is established to at least one other PeerNode, then opening the new PeerChannel to that at least one other PeerNode to allow messages to be sent from and received by that at least one other PeerNode;

when the first PeerNode initiates connection with a second PeerNode, notifying a Neighborhood Manager of the second PeerNode;

causing the Neighborhood Manager of the second PeerNode to create a Neighbor object to track the first PeerNode that is remote from the second PeerNode;

using the Neighborhood Manager of the second PeerNode to notify a third PeerNode that is associated with the second PeerNode to start a connect protocol, the connect protocol including

determining if connection of the first PeerNode to the second PeerNode would be greater than or equal to a maximum value of connectable nodes,

if so, then sending a refuse message from the second PeerNode to the first PeerNode together with a list of other neighbor and other known nodes and then closing the connection to the first PeerNode, and

if not, then sending a welcome message from the second PeerNode to the first PeerNode and exchanging between the first and second PeerNodes advertise messages that contain the services advertised on each node;

creating a the Maintainer object that stores a mesh signature and a collection of contact nodes for the mesh, wherein each PeerNode is associated with a node ID, wherein the mesh signature is the lowest node ID in the mesh, and wherein the mesh signature is determined based on having a particular first PeerNode in a mesh publish its mesh signature;

wherein the Maintainer object initiates a new connection attempt when the collection of mesh contact nodes is below a minimum value, refuses a connection attempt from a particular second PeerNode when the collection of mesh contact nodes is above a maximum value, and disconnects a least useful PeerNode when the collection of mesh contact nodes is above a predetermined ideal value; and

wherein the computer-executable instructions further comprise having a particular second PeerNode publish its mesh signature by communicating it mesh signature to additional PeerNodes only after the particular second PeerNode waits a backoff period that is exponentially proportional to its node ID and only if the particular second PeerNode node ID is lower than any received mesh signature publication that the particular second PeerNode has received, wherein a last published node ID is the mesh signature.

2. The computer readable storage device of claim 1 , wherein the Maintainer object compares a received mesh signature to a stored mesh signature and initiates a new connection attempt when the received mesh signature does not match the stored mesh signature.

3. A non-transitory computer readable storage medium physically configured according to computer-executable instructions for providing multicast peer to peer meshing functionality to a service oriented messaging system, the computer-executable instructions comprising:

creating and opening a PeerChannelFactory object when an application initiates a connection to a designated mesh to create a PeerChannel;

determining if a first PeerNode is associated with the created PeerChannel;

if a first PeerNode is associated with the created PeerChannel, then connecting the PeerChannel to that first PeerNode and then opening the PeerChannel to allow messages to be sent from and received by the PeerNode via the PeerChannel; and

if no PeerNode is associated with the created PeerChannel, then

creating a new PeerNode,

opening a new PeerChannel,

opening the created PeerNode,

querying a resolver for existence of other PeerNodes and attempt to establish Neighbor Channels to those other PeerNodes,

if connection is established to at least one other PeerNode, then opening the new PeerChannel to that at least one other PeerNode to allow messages to be sent from and received by that at least one other PeerNode;

when the first PeerNode initiates connection with a second PeerNode, notifying a Neighborhood Manager of the second PeerNode;

causing the Neighborhood Manager of the second PeerNode to create a Neighbor object to track the first PeerNode that is remote from the second PeerNode;

using the Neighborhood Manager of the second PeerNode to notify a third PeerNode that is associated with the second PeerNode to start a connect protocol, the connect protocol including

determining if connection of the first PeerNode to the second PeerNode would be greater than or equal to a maximum value of connectable nodes,

if so, then sending a refuse message from the second PeerNode to the first PeerNode together with a list of other neighbor and other known nodes and then closing the connection to the first PeerNode, and

if not, then sending a welcome message from the second PeerNode to the first PeerNode and exchanging between the first and second PeerNodes advertise messages that contain the services advertised on each node;

creating a the Maintainer object that stores a mesh signature and a collection of contact nodes for the mesh, wherein each PeerNode is associated with a node ID, wherein the mesh signature is the lowest node ID in the mesh, and wherein the mesh signature is determined based on having a particular first PeerNode in a mesh publish its mesh signature;

wherein the Maintainer object initiates a new connection attempt when the collection of mesh contact nodes is below a minimum value, refuses a connection attempt from a particular second PeerNode when the collection of mesh contact nodes is above a maximum value, and disconnects a least useful PeerNode when the collection of mesh contact nodes is above a predetermined ideal value; and

wherein the computer-executable instructions further comprise having a particular second PeerNode publish its mesh signature by communicating it mesh signature to additional PeerNodes only after the particular second PeerNode waits a backoff period that is exponentially proportional to its node ID and only if the particular second PeerNode node ID is lower than any received mesh signature publication that the particular second PeerNode has received, wherein a last published node ID is the mesh signature.

4. The non-transitory computer readable storage medium of claim 3 , wherein the Maintainer object compares a received mesh signature to a stored mesh signature and initiates a new connection attempt when the received mesh signature does not match the stored mesh signature.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034543/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2005
From: GUPTA, ASHISH; DEWEY, JEREMY L.; IYER, PADMINI C.; RAO, RAVI T.
To: MICROSOFT CORPORATION
Reel/Frame 015904/0996 →
Continuity (1)
Related Publication 20060212582A1 · Sep 21, 2006