IP Library › Granted Patent US 9,887,878
Granted Patent B2
US 9,887,878 · App. 14/298,794 · Granted Feb 6, 2018

Dynamic scheduling of network updates

Inventors: Ratul Mahajan (Seattle, WA); Ming Zhang (Redmond, WA); Srikanth Kandula (Redmond, WA); Hongqiang Liu (Redmond, WA); Xin Jin (Princeton, NJ)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
H04L41/082H04L41/0813H04L67/12H04L67/32
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,887,878
App. No.
14/298,794
Granted
Feb 6, 2018
Kind
B2
Abstract

The techniques and/or systems described herein are configured to determine a set of update operations to transition a network from an observed network state to a target network state and to generate an update dependency graph used to dynamically schedule the set of update operations based on constraint(s) defined to ensure reliability of the network during the transition. The techniques and/or systems dynamically schedule the set of update operations based on feedback. For example, the feedback may include an indication that a previously scheduled update operation has been delayed, has failed, or has been successfully completed.

Claims (54)

1. A method comprising:

determining a set of update operations to transition a network from an observed network state to a target network state;

determining one or more constraints defined to ensure reliability of the network during the transition of the network from the observed network state to the target network state;

generating, by one or more hardware processors and based at least in part on the one or more constraints, an update dependency graph that defines dependencies between at least a subset of the set of update operations, wherein the update dependency graph defines that at least one child update operation from the set of update operations can be scheduled in response to successful completion of one of at least two parent update operations from the set of update operations;

scheduling a first parent update operation of the at least two parent update operations;

scheduling a second parent update operation of the at least two parent update operations;

receiving an indication that one of the first parent update operation or the second parent update operation has been successfully completed; and

dynamically scheduling, using the update dependency graph, the at least one child update operation in response to receiving the indication.

2. The method of claim 1 , wherein at least one of the one or more constraints is defined to avoid dropping data packets by scheduling the subset of update operations in a particular order.

3. The method of claim 1 , wherein at least one of the one or more constraints is defined to avoid looping data packets by scheduling the subset of update operations in a particular order.

4. The method of claim 1 , wherein at least one of the one or more constraints is defined to avoid transmitting data packets using a mix of an old routing instruction and a new routing instruction.

5. The method of claim 1 , wherein at least one of the one or more constraints is a resource constraint that limits a load on an individual link between two devices in the network to a maximum capacity, wherein the resource constraint is defined to avoid network congestion.

6. The method of claim 1 , wherein at least one of the one or more constraints is a memory constraint that limits a memory load of a device to a maximum capacity.

7. The method of claim 1 , wherein an individual update operation of the set of update operations directly or indirectly changes one or more state variable values of the network.

8. The method of claim 1 , wherein the update dependency graph comprises a plurality of nodes and the method further comprises:

determining that at least one of the first parent update operation or the second parent update operation is associated with a node that is part of a longest path through the update dependency graph; and

starting a network update to transition the network from the observed network state to the target network state by scheduling the at least one of the first parent update operation or the second parent update operation based at least in part on the association with the node that is part of the longest path.

9. One or more computer storage media storing computer executable instructions that, when executed by one or more processors, program the one or more processors to:

determine a set of update operations to transition a network from an observed network state to a target network state;

determine one or more constraints defined to ensure reliability of the network during the transition of the network from the observed network state to the target network state;

generate, based at least in part on the one or more constraints, an update dependency graph that defines dependencies between at least a subset of the set of update operations, wherein the update dependency graph defines that at least one child update operation from the set of update operations can be scheduled in response to successful completion of one of at least two parent update operations from the set of update operations;

schedule a first parent update operation of the at least two parent update operations;

schedule a second parent update operation of the at least two parent update operations;

receive an indication that one of the first parent update operation or the second parent update operation has been successfully completed; and

dynamically schedule, using the update dependency graph, the at least one child update operation in response to receiving the indication.

10. The one or more computer storage media of claim 9 , wherein:

at least one of the one or more constraints is defined to avoid dropping data packets by scheduling the subset of update operations in a particular order;

at least one of the one or more constraints is defined to avoid looping data packets by scheduling the subset of update operations in a particular order

at least one of the one or more constraints is defined to avoid transmitting data packets using a mix of an old routing instruction and a new routing instruction;

at least one of the one or more constraints is a resource constraint that limits a load on an individual link between two devices in the network to a maximum capacity, wherein the resource constraint is defined to avoid network congestion; or

at least one of the one or more constraints is a memory constraint that limits a memory load of a device to a maximum capacity.

11. The one or more computer storage media of claim 9 , wherein an individual update operation of the set of update operations directly or indirectly changes one or more state variable values of the network.

12. The one or more computer storage media of claim 9 , wherein the update dependency graph comprises a plurality of nodes and the computer executable instructions further program the one or more processors to:

determine that at least one of the first parent update operation or the second parent update operation is associated with a node that is part of a longest path through the update dependency graph; and

start a network update to transition the network from the observed network state to the target network state by scheduling the at least one of the first parent update operation or the second parent update operation based at least in part on the association with the node that is part of the longest path.

13. A system comprising:

one or more processors; and

memory storing computer executable instructions that, when executed by the one or more processors, cause the system to:

determine a set of update operations to transition a network from an observed network state to a target network state;

determine one or more constraints defined to ensure reliability of the network during the transition of the network from the observed network state to the target network state;

generate, based at least in part on the one or more constraints, an update dependency graph that defines dependencies between at least a subset of the set of update operations, wherein the update dependency graph defines that at least one child update operation from the set of update operations can be scheduled in response to successful completion of one of at least two parent update operations from the set of update operations;

schedule a first parent update operation of the at least two parent update operations;

schedule a second parent update operation of the at least two parent update operations;

receive an indication that one of the first parent update operation or the second parent update operation has been successfully completed; and

dynamically schedule, using the update dependency graph, the at least one child update operation in response to receiving the indication.

14. The system of claim 13 , wherein at least one of the one or more constraints is defined to avoid dropping data packets by scheduling the subset of update operations in a particular order.

15. The system of claim 13 , wherein at least one of the one or more constraints is defined to avoid looping data packets by scheduling the subset of update operations in a particular order.

16. The system of claim 13 , wherein at least one of the one or more constraints is defined to avoid transmitting data packets using a mix of an old routing instruction and a new routing instruction.

17. The system of claim 13 , wherein at least one of the one or more constraints is a resource constraint that limits a load on an individual link between two devices in the network to a maximum capacity, wherein the resource constraint is defined to avoid network congestion.

18. The system of claim 13 , wherein at least one of the one or more constraints is a memory constraint that limits a memory load of a device to a maximum capacity.

19. The system of claim 13 , wherein an individual update operation of the set of update operations directly or indirectly changes one or more state variable values of the network.

20. The system of claim 13 , wherein the update dependency graph comprises a plurality of nodes and the computer executable instructions further cause the system to:

determine that at least one of the first parent update operation or the second parent update operation is associated with a node that is part of a longest path through the update dependency graph; and

start a network update to transition the network from the observed network state to the target network state by scheduling the at least one of the first parent update operation or the second parent update operation based at least in part on the association with the node that is part of the longest path.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 6, 2014
From: MAHAJAN, RATUL; ZHANG, MING; KANDULA, SRIKANTH; LIU, HONGQIANG; JIN, XIN
To: MICROSOFT CORPORATION
Reel/Frame 033052/0243 →
Continuity (1)
Related Publication 20150358198A1 · Dec 10, 2015