IP Library › Granted Patent US 9,270,585
Granted Patent B2
US 9,270,585 · App. 13/012,789 · Granted Feb 23, 2016

Distributed routing table architecture and design

Inventors: Todd R. Manion (Bellevue, WA); Kevin Charles Ransom (Duval, WA); Jeremy L. Dewey (Redmond, WA); Scott A. Senkeresty (Duvall, WA); Brian R. Lieuallen (Redmond, WA); Pritam De (Redmond, WA); Sandeep Kishan Singhal (Kirkland, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L45/54H04L45/02H04L45/60
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 9,270,585
App. No.
13/012,789
Filed
Jan 24, 2011
Granted
Feb 23, 2016
Kind
B2
Art Unit
2445
USPC
709/242
Abstract

A Distributed Routing Table (DRT) mesh can comprise two or more nodes, each of which maintains its own routing table that represents some or all of the overall routing knowledge of the DRT mesh. Each node can be comprised of modular components that can perform various defined functions such that the features and abilities of the node can be customized by an application based on which modular components are instantiated. A routing table management module can maintain individual routing tables at each node, and can ensure that only entries that are close to the node, in a network topology sense, are maintained in the routing table. In addition, a security module can verify received messages based on an agreed-upon root certificate.

Claims (39)

1. One or more computer-readable memory comprising computer-executable instructions for maintaining a local portion of a distributed routing table, the computer-executable instructions directed to steps comprising:

determining a first distance according to a network topology between a first node and a node instance representing an endpoint of a distributed routing table (DRT) mesh associated with the distributed routing table;

determining a second distance according to a network topology between a second node and the node instance; and

removing, from the local portion of the distributed routing table associated with the node instance, an entry associated with the second node based only on a comparing of the determined first distance to the determined second distance if the comparing reveals that the first distance is less than the second distance.

2. The computer-readable memory of claim 1 , wherein the determining the first distance comprises determining a first round trip time of a first message between the node instance and the first node, and wherein the determining the second distance comprises determining a second round trip time of a second message between the node instance and the second node.

3. The computer-readable memory of claim 1 , comprising further computer-executable instructions for removing, from the local portion of the distributed routing table associated with the node instance, the entry associated with the second node, if the first distance and the second distance are equivalent and the first node is associated with a first network address more similar to a node instance network address than a second network address associated with the second node.

4. The computer-readable memory of claim 1 , wherein the local portion of the distributed routing table associated with the node instance already comprised an entry associated with the first node and the entry associated with the second node, wherein the removing is also based on a quantity of entries in the local portion of the distributed routing table exceeding a threshold quantity of entries.

5. The computer-readable memory of claim 1 comprising further computer-executable instructions for receiving a request to add the first node to the local portion of the distributed routing table associated with the node instance, wherein the addition of the first node to the local portion of the distributed routing table is independent of entries associated with the second node.

6. A method of maintaining a local portion of a distributed routing table, the method comprising:

determining a first distance according to a network topology between a first node and a node instance representing an endpoint of a distributed routing table (DRT) mesh associated with the distributed routing table;

determining a second distance according to a network topology between a second node and the node instance; and

removing, from the local portion of the distributed routing table associated with the node instance, an entry associated with the second node based only on a comparing of the determined first distance to the determined second distance if the comparing reveals that the first distance is less than the second distance.

7. The method of claim 6 , wherein the determining the first distance comprises determining a first round trip time of a first message between the node instance and the first node, and wherein the determining the second distance comprises determining a second round trip time of a second message between the node instance and the second node.

8. The method of claim 6 , further comprising: removing, from the local portion of the distributed routing table associated with the node instance, the entry associated with the second node, if the first distance and the second distance are equivalent and the first node is associated with a first network address more similar to a node instance network address than a second network address associated with the second node.

9. The method of claim 6 , wherein the local portion of the distributed routing table associated with the node instance already comprised an entry associated with the first node and the entry associated with the second node, wherein the removing is also based on a quantity of entries in the local portion of the distributed routing table exceeding a threshold quantity of entries.

10. The method of claim 6 , further comprising: receiving a request to add the first node to the local portion of the distributed routing table associated with the node instance, wherein the addition of the first node to the local portion of the distributed routing table is independent of entries associated with the second node.

11. The method of claim 6 , further comprising:

receiving a message from the first node;

receiving a certificate associated with the message, the certificate comprising a public key;

verifying that the public key decodes the message; and

verifying that the certificate is either a root certificate of the DRT mesh, or that the certificate derives from the root certificate.

12. The method of claim 11 , wherein the received message comprises routing information associated with the first node.

13. The computer-readable memory of claim 1 , comprising further computer-executable instructions for:

receiving a message from the first node;

receiving a certificate associated with the message, the certificate comprising a public key;

verifying that the public key decodes the message; and

verifying that the certificate is either a root certificate of the DRT mesh, or that the certificate derives from the root certificate.

14. The computer-readable memory of claim 13 , wherein the received message comprises routing information associated with the first node.

15. A computing device comprising:

one or more computer-readable memory comprising a local portion of a distributed routing table; and

one or more Central Processing Units (CPUs) executing computer-executable instructions, which, when executed, cause the CPUs to perform steps comprising:

determining a first distance according to a network topology between a first node and the computing device;

determining a second distance according to the network topology between a second node and the computing device; and

removing, from the local portion of the routing table associated with the computing device, an entry associated with the second node based only on a comparing of the determined first distance to the determined second distance if the comparing reveals that the first distance is less than the second distance.

16. The computing device of claim 15 , wherein the determining the first distance comprises determining a first round trip time of a first message between the computing device and the first node, and wherein the determining the second distance comprises determining a second round trip time of a second message between the computing device and the second node.

17. The computing device of claim 15 , wherein the CPUs execute further computer-executable instructions, which, when executed, cause the CPUs to perform further steps comprising removing, from the local portion of the distributed routing table associated with the computing device, the entry associated with the second node, if the first distance and the second distance are equivalent and the first node is associated with a first network address more similar to a computing device network address than a second network address associated with the second node.

18. The computing device of claim 15 , wherein the computing device is a network router.

19. The computing device of claim 15 , wherein the local portion of the distributed routing table associated with the computing device already comprised an entry associated with the first node and the entry associated with the second node, wherein the removing is also based on a quantity of entries in the local portion of the distributed routing table exceeding a threshold quantity of entries.

20. The computing device of claim 15 , wherein the CPUs execute further computer-executable instructions, which, when executed, cause the CPUs to perform further steps comprising receiving a request to add the first node to the local portion of the distributed routing table associated with the node instance, wherein the addition of the first node to the local portion of the distributed routing table is independent of entries associated with the second node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
Continuity (2)
Division 11786820 · Apr 13, 2007
Related Publication 20110119400A1 · May 19, 2011