Using transactions to minimize churn in a distributed network control system
First Claim
1. For a particular controller for managing a network by generating configuration data for a plurality of managed forwarding elements that forward data to each other in the network, a method for computing sets of managed forwarding element configuration outputs using corresponding sets of configuration inputs from first and second controllers, the method comprising:
- receiving a first set of inputs that are part of a particular transaction relating to a logical forwarding element that is implemented by the plurality of managed forwarding elements from the first controller and a second set of inputs that are redundant of the first set of inputs and are part of the particular transaction relating to the logical forwarding element from the second controller, wherein the inputs of the particular transaction are (i) for processing together to compute a set of managed forwarding element configuration output changes and (ii) for processing separately from other, separate transactions processed by the particular controller that relate to other logical forwarding elements;
storing the second set of inputs while computing a first portion of the set of managed forwarding element configuration output changes using the first set of inputs;
after a failure of the first controller, receiving a third set of inputs from the second controller, the third set of inputs comprising inputs that are part of the particular transaction relating to the logical forwarding element and are not in the second set of inputs;
while maintaining the first portion of the set of managed forwarding element configuration output changes, computing a second portion of the set of managed forwarding element configuration output changes using the second and third sets of inputs; and
after computing the complete set of managed forwarding element configuration output changes, outputting the set of managed forwarding element configuration output changes for distribution to a set of managed forwarding elements.
1 Assignment
0 Petitions
Accused Products
Abstract
A particular network controller receives a first set of inputs from the first controller and a second set of inputs from the second controller. The particular controller then starts to compute a set of outputs using the first set of inputs. After a failure of the first controller, the particular controller receives a third set of inputs from the second controller. The third set of inputs and the first or second set of inputs makes up a group of inputs for being processed together and separately from another group of inputs. The particular controller then receives an indicator from the second controller, which indicates that all inputs of the group of inputs have arrived at the particular controller. After receiving the indicator and after computing the set of outputs completely, the particular controller sends the set of outputs to a fourth controller or to a managed forwarding element.
-
Citations
22 Claims
-
1. For a particular controller for managing a network by generating configuration data for a plurality of managed forwarding elements that forward data to each other in the network, a method for computing sets of managed forwarding element configuration outputs using corresponding sets of configuration inputs from first and second controllers, the method comprising:
-
receiving a first set of inputs that are part of a particular transaction relating to a logical forwarding element that is implemented by the plurality of managed forwarding elements from the first controller and a second set of inputs that are redundant of the first set of inputs and are part of the particular transaction relating to the logical forwarding element from the second controller, wherein the inputs of the particular transaction are (i) for processing together to compute a set of managed forwarding element configuration output changes and (ii) for processing separately from other, separate transactions processed by the particular controller that relate to other logical forwarding elements; storing the second set of inputs while computing a first portion of the set of managed forwarding element configuration output changes using the first set of inputs; after a failure of the first controller, receiving a third set of inputs from the second controller, the third set of inputs comprising inputs that are part of the particular transaction relating to the logical forwarding element and are not in the second set of inputs; while maintaining the first portion of the set of managed forwarding element configuration output changes, computing a second portion of the set of managed forwarding element configuration output changes using the second and third sets of inputs; and after computing the complete set of managed forwarding element configuration output changes, outputting the set of managed forwarding element configuration output changes for distribution to a set of managed forwarding elements. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A non-transitory machine readable medium of a controller computer storing a program for a recipient network controller which when executed by a set of processing units computes forwarding state configuration data for a set of managed forwarding elements using inputs from a set of source controllers, the program comprising sets of instructions for:
-
receiving, from the set of source controllers, a plurality of groups of inputs that define a set of logical forwarding elements, each group of inputs for being processed together by the recipient network controller and separately from the processing of other groups of inputs, wherein the processing of each group of inputs by the recipient network controller generates a corresponding set of managed forwarding element configuration outputs used by a set of managed forwarding elements to implement the set of logical forwarding elements; generating sets of managed forwarding element configuration outputs corresponding to each group of received inputs; when at least two of the groups of inputs meet a certain condition, sending the corresponding sets of outputs to the set of managed forwarding elements as a single transaction to configure the managed forwarding elements to implement the set of logical forwarding elements; and when no combination of the groups of inputs meets the certain condition, sending the corresponding sets of outputs to the set of managed forwarding elements as separate transactions to configure the managed forwarding elements to implement the set of logical forwarding elements. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A non-transitory machine readable medium for storing a first controller program which when executed by at least one processing unit manages a network comprising a plurality of managed forwarding elements that forward data in the network, the first controller comprising sets of instructions for:
-
for a first request for information about a logical forwarding element that logically connects a set of end machines, identifying a set of second controllers that manage forwarding behaviors of a set of managed forwarding elements that implement the logical forwarding element; generating a set of second requests for information about the set of managed forwarding elements based on the first request; distributing the set of second requests to the set of second controllers; receiving, from each controller of the set of second controllers, a response to the second request of the set of second requests sent to the second controller, the response including at least a portion of the requested information from the second requests; and when the set of responses meets certain criteria, combining the responses received from the set of second controllers to generate a combined response to the first request providing information about the logical forwarding element and sending the combined response to a source of the first request. - View Dependent Claims (12, 13, 14, 15, 16, 17)
-
-
18. For a first controller for managing a network by generating configuration data for a plurality of managed forwarding elements that forward data in the network, a method for computing forwarding state to send to a second controller, the method comprising:
-
receiving a plurality of input data tuples defining a set of logical forwarding elements; generating, from the input data tuples, output forwarding state data tuples that define forwarding behaviors of the set of managed forwarding elements to implement the set of logical forwarding elements; sending each output data tuple to the second controller as the output tuple is generated; and upon determining that a first set of output data tuples for a set of input data tuples has been generated and sent to the second controller, sending an indicator, which indicates an end of the set of output data tuples, to the second controller, wherein the second controller generates a second set of output data tuples from the first set of output data tuples by processing the first set of output data tuples separately from other sets of output data tuples received by the second controller, wherein the second controller generates its own indicator for the second set of output data tuples only after receiving the indicator from the first controller. - View Dependent Claims (19, 20, 21, 22)
-
Specification