IP Library › Granted Patent US 9,954,772
Granted Patent B2
US 9,954,772 · App. 14/851,361 · Granted Apr 24, 2018

Source imposition of network routes in computing networks

Inventors: Benjamin Black (Seattle, WA); Dawn Cseh (Woodinville, WA); Tim LaBerge (Sammamish, WA); Edet Nkposong (Sammamish, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L45/50H04L12/4633H04L45/02H04L45/04H04L45/34H04L45/38H04L45/507H04L45/64H04L45/745
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,954,772
App. No.
14/851,361
Granted
Apr 24, 2018
Kind
B2
Abstract

Various techniques for source imposition of network routes are disclosed herein. In one embodiment, a method includes receiving label values at a source host from a label server. The individual label values corresponding to a network route to one of the hosts or network nodes in the computing network. The method also includes constructing a label stack to reach a destination virtual machine on a destination computing device in the computing network based on the received label values corresponding to the destination computing device and a location of the source computing device in the computing network. The method also includes imposing the constructed label stack on a packet destined to the destination virtual machine on the destination computing device.

Claims (79)

1. A method performed by a source computing device in a computing network, the method comprising:

receiving a set of label values from a label server, the individual label values corresponding to a network route to a destination computing device or a network node in the computing network, the network node interconnecting the source computing device to the destination computing device;

constructing a label stack to reach a destination virtual machine hosted on the destination computing device based on:

the received set of label values corresponding to the destination computing device or the network node; and

a location of the source computing device in the computing network relative to the destination computing device;

imposing the constructed label stack on a packet destined to the destination virtual machine on the destination computing device; and

transmitting the packet with the imposed label stack to the destination virtual machine via the computing network.

2. The method of claim 1 , further comprising:

transmitting a request to the label server, the request including a network address of the destination virtual machine, a virtual network identification corresponding to the network address, and a location of the source computing device; and

wherein receiving the set of label values includes receiving the set of label values in response to transmitting the request to the label server.

3. The method of claim 1 wherein:

the computing network includes an underlay network organized as multiple domains in a hierarchy;

the method further includes transmitting a request to the label server, the request including a network address of the destination virtual machine, a virtual network identification corresponding to the network address, and a domain to which the source computing device belongs; and

receiving the set of label values includes receiving the set of label values in response to transmitting the request to the label server.

4. The method of claim 1 wherein receiving the set of label values includes receiving the set of label values from the label server, the individual label values corresponding with a network route having an associated quality of service value.

5. The method of claim 1 wherein:

the computing network includes an underlay network organized as multiple domains in a hierarchy; and

constructing the label stack includes:

determining if the destination computing device and the source computing device are in one domain; and

in response to determining that the destination computing device and the source computing device are in the same domain, constructing a label stack having a single label value corresponding to a network route from the source computing device to the destination computing device.

6. The method of claim 1 wherein:

the computing network includes an underlay network organized as multiple domains in a hierarchy; and

constructing the label stack includes:

determining if the destination computing device and the source computing device are in same domain; and

in response to determining that the destination computing device and the source computing device are not in the same domain, constructing a label stack having a first label value corresponding to a first network route from the source computing device to an upper-level domain and a second label value corresponding to a second network route from the upper-level domain to the destination computing device.

7. A method performed by a source computing device in a computing network having an underlay network and an overlay network implemented on the underlay network, the method comprising:

when transmitting a message from the source computing device to a destination virtual machine in the computing network,

transmitting a request to a label server via the computing network, the request containing data representing a network address of the destination virtual machine, a virtual network identification to which the network address belongs, and a source identification of the source computing device in the underlay network;

receiving, from the label server and via the computing network, a label descriptor having an identification of a destination computing device in the underlay network on which the destination virtual machine is hosted and an associated label value corresponding to a network route in the underlay network to reach the destination computing device;

constructing, at the source computing device, a label stack to reach the destination virtual machine based on the received label descriptor corresponding to the destination computing device by comparing a location of the target computing device relative to the source computing device in the underlay network according to the identifications of the source and destination computing devices; and

imposing, at the source computing device, the constructed label stack on a packet destined to the destination virtual machine.

8. The method of claim 7 wherein:

the underlay network is organized as multiple domains in a hierarchy; and

transmitting the request includes transmitting a request to the label server, the request containing data representing a network address of the destination virtual machine, a virtual network identification to which the network address belongs, and an identification of a domain in the underlay network to which the source computing device belongs.

9. The method of claim 7 wherein:

the underlay network is organized as multiple domains in a hierarchy and the overlay network including a virtual network; and

transmitting the request includes transmitting a request to the label server, the request containing data representing a virtual network address of the destination virtual machine, a virtual network identification to which the virtual network address belongs, and an identification of a domain in the underlay network to which the source computing device belongs.

10. The method of claim 7 wherein:

the received label descriptor includes a set of label descriptors each being associated with a quality of service value; and

constructing the label stack includes constructing, at the source computing device, the label stack by selecting one of the label descriptors associated with a quality of service value that corresponds to a target quality of service value.

11. The method of claim 7 wherein:

the underlay network is organized as multiple domains in a hierarchy; and

constructing, at the source computing device, the label stack includes:

determining whether the source computing device and the destination computing device are in a single domain in the underlay network according to the identifications of the source and destination computing devices; and

in response to determining that the destination computing device and the destination computing device are in a single domain in the underlay network, constructing a label stack having a single label value corresponding to a network route from the source computing device to the destination computing device via one or more network nodes in the single domain of the underlay network.

12. The method of claim 7 wherein:

the underlay network is organized as multiple domains in a hierarchy; and

constructing, at the source computing device, the label stack includes:

determining whether the destination computing device and the destination computing device are in a single domain in the underlay network according to the identifications of the source and destination computing devices; and

in response to determining that the destination computing device and the destination computing device are not in a single domain in the underlay network, constructing the label stack having a first label value corresponding to a first network path from the source computing device to an upper-level domain in the underlay network and a second label value corresponding to a second network path from the upper-level domain to the destination computing device.

13. The method of claim 7 wherein:

the request is configured for recursive resolution for a name server; and

the label descriptor includes a text record containing a version, a network prefix, one or more domain identifiers in the underlay network, and one or more label values.

14. A source computing device in a computing network having an underlay network and an overlay network implemented on the underlay network, the source computing device comprising:

a processor and a memory operatively coupled to the processor, the memory containing instructions executable by the processor to cause the source computing device to:

transmit a request to a label server via the computing network, the request containing data representing a network address of the destination virtual machine, a virtual network identification to which the network address belongs, and a source identification of the source computing device in the underlay network;

receive, from the label server and via the computing network, a label descriptor having an identification of a destination computing device in the underlay network on which the destination virtual machine is hosted and an associated label value corresponding to a network route in the underlay network to reach the destination computing device;

construct, at the source computing device, a label stack to reach the destination virtual machine based on the received label descriptor corresponding to the destination computing device by comparing a location of the target computing device relative to the source computing device in the underlay network according to the identifications of the source and destination computing devices; and

impose, at the source computing device, the constructed label stack on a packet destined to the destination virtual machine.

15. The source computing device of claim 14 wherein:

the underlay network is organized as multiple domains in a hierarchy; and

to transmit the request includes to transmit a request to the label server, the request containing data representing a network address of the destination virtual machine, a virtual network identification to which the network address belongs, and an identification of a domain in the underlay network to which the source computing device belongs.

16. The method of claim 14 wherein:

the underlay network is organized as multiple domains in a hierarchy and the overlay network including a virtual network; and

to transmit the request includes to transmit a request to the label server, the request containing data representing a virtual network address of the destination virtual machine, a virtual network identification to which the virtual network address belongs, and an identification of a domain in the underlay network to which the source computing device belongs.

17. The source computing device of claim 14 wherein:

the received label descriptor includes a set of label descriptors each being associated with a quality of service value; and

to construct the label stack includes to construct, at the source computing device, the label stack by selecting one of the label descriptors associated with a quality of service value that corresponds to a target quality of service value.

18. The source computing device of claim 14 wherein:

the underlay network is organized as multiple domains in a hierarchy; and

to construct, at the source computing device, the label stack includes to:

determine whether the source computing device and the destination computing device are in a single domain in the underlay network according to the identifications of the source and destination computing devices; and

in response to determining that the destination computing device and the destination computing device are in a single domain in the underlay network, construct a label stack having a single label value corresponding to a network route from the source computing device to the destination computing device via one or more network nodes in the single domain of the underlay network.

19. The source computing device of claim 14 wherein:

the underlay network is organized as multiple domains in a hierarchy; and

to construct, at the source computing device, the label stack includes to:

determine whether the destination computing device and the destination computing device are in a single domain in the underlay network according to the identifications of the source and destination computing devices; and

in response to determining that the destination computing device and the destination computing device are not in a single domain in the underlay network, construct the label stack having a first label value corresponding to a first network path from the source computing device to an upper-level domain in the underlay network and a second label value corresponding to a second network path from the upper-level domain to the destination computing device.

20. The source computing device of claim 14 wherein the memory contains additional instructions executable by the processor to cause the processor to cache the imposed label stack corresponding to the destination virtual machine in a database of the source computing device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2016
From: CSEH, DAWN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 038630/0369 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2015
From: CSEH, DAWN; LABERGE, TIM; NKPOSONG, EDET
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 036541/0974 →
Continuity (2)
Provisional Application 62185039 · Jun 26, 2015
Related Publication 20160380887A1 · Dec 29, 2016