Controller-based datacenter network bandwidth policy sharing
AssigneeNicira, Inc.
InventorsHua Wang, Jianjun Shen, Donghai Han, Caixia Jiang
Life of this patent
Estimating the term…
Abstract
A method of allocating network bandwidth in a network that includes several tenant virtual machines (VMs). The method calculates a first bandwidth reservation for a flow between a source VM and a destination VM that are hosted on two different host machines. The source VM sends packets to a first set of VMs that includes the destination VM. The destination VM receives packets from a second set of VMs that includes the source VM. The method receives a second bandwidth reservation for the flow calculated at the destination. The method sets the bandwidth reservation for the flow as a minimum of the first and second bandwidth reservations.
Claims18
A method of allocating network bandwidth in a network comprising a plurality of data compute nodes (DCNs), each DCN associated with a scheduling machine, the method comprising:
- at a first scheduling machine associated with a first DCN and executing on a first host computer along with the first DCN:
- calculating a first bandwidth allocation value for a flow from the first DCN associated with the first scheduling machine to a second DCN associated with a different, second scheduling machine, wherein the first DCN sends packets to a first plurality of DCNs comprising the second DCN and the second DCN receives packets from a second plurality of DCNs comprising the first DCN, the first bandwidth allocation value calculated using (i) a set of bandwidth amounts allocated to the first DCN and (ii) a plurality of sets of one or more bandwidth amounts allocated to a plurality of DCNs in the first plurality of DCNs;
- receiving a second bandwidth allocation value for the flow, the second bandwidth allocation value calculated by the second scheduling machine associated with the second DCN by using (i) a set of bandwidth amounts allocated to the second DCN and (ii) a plurality of sets of one or more bandwidth amounts allocated to a plurality of DCNs in the second plurality of DCNs,
- wherein calculating the first bandwidth allocation value comprises multiplying a first bandwidth amount from the set of bandwidth amounts allocated to the first DCN by a second bandwidth amount from the set of bandwidth amounts allocated to the second DCN and dividing by a sum of bandwidth amounts from the plurality of sets of bandwidth amounts allocated to the plurality of DCNs in the first plurality of DCNs, and
- the second bandwidth allocation value is calculated by multiplying a third bandwidth amount from the set of bandwidth amounts allocated to the second DCN by a fourth bandwidth amount from the set of bandwidth amounts allocated to the first DCN and dividing by a sum of bandwidth amounts from the plurality of sets of bandwidth amounts allocated to the plurality of DCNs in the second plurality of DCNs;
- and
- using the first and second bandwidth allocation values to compute an amount of bandwidth allocated to the flow at the first host computer.
A method of allocating network bandwidth in a network comprising a plurality of data compute nodes (DCNs) including first and second DCNs executing on first and second host computers, each DCN associated with a scheduling machine, the method comprising:
- at a first scheduling machine associated with the first DCN and executing on the first host computer along with the first DCN:
- receiving first and second network bandwidth allocation policies for the first and second DCNs, respectively, from a controller storing network bandwidth policies of the first and second pluralities of DCNs, the network allocation policy of each DCN comprising a set of one or more bandwidth amounts allocated to the DCN, the network allocation policy for each particular DCN received when the particular DCN starts operating on its associated host computer in order to allocate bandwidth for the particular DCN to exchange data messages with another DCN;
- calculating, for a flow, a first bandwidth allocation value from the first DCN associated with the first scheduling machine to the second DCN associated with a different, second scheduling machine, wherein the first DCN sends packets to a first plurality of DCNs comprising the second DCN and the second DCN receives packets from a second plurality of DCNs comprising the first DCN, the first bandwidth allocation value calculated using (i) a first set of bandwidth amounts allocated to the first DCN based on the first network bandwidth allocation policy and (ii) a first plurality of sets of bandwidth amounts allocated to a plurality of DCN in the first plurality of DCNs based on first plurality of network bandwidth allocation policies associated with the first plurality of DCNs;
- receiving, for the flow, a second bandwidth allocation value calculated by the second scheduling machine associated with the second DCN by using (i) a second set of bandwidth amounts allocated to the second DCN based on the second network bandwidth allocation policy and (ii) a second plurality of sets of bandwidth amounts allocated to a plurality of DCNs in the second plurality of DCNs based on a second plurality of received bandwidth allocation policies associated with the second plurality of DCNs;
- and
- using the first and second bandwidth allocation values to compute an amount of bandwidth allocated to the flow at the first host computer.
A non-transitory machine readable medium storing a program, which when executed by at least one processing unit, allocates network bandwidth in a network comprising a plurality of data compute nodes (DCNs), each DCN associated with a scheduling machine, the program comprising sets of instructions for:
- at a first scheduling machine associated with a first DCN and executing on a first host computer along with the first DCN:
- calculating a first bandwidth allocation value for a flow from the first DCN associated with the first scheduling machine to a second DCN associated with a different, second scheduling machine, wherein the first DCN sends packets to a first plurality of DCNs comprising the second DCN and the second DCN receives packets from a second plurality of DCNs comprising the first DCN, the first bandwidth allocation value calculated using (i) a set of bandwidth amounts allocated to the first DCN and (ii) a plurality of sets of one or more bandwidth amounts allocated to a plurality of DCNs in the first plurality of DCNs;
- receiving a second bandwidth allocation value for the flow, the second bandwidth allocation value calculated by the second scheduling machine associated with the second DCN by using (i) a set of bandwidth amounts allocated to the second DCN and (ii) a plurality of sets of one or more bandwidth amounts allocated to a plurality of DCNs in the second plurality of DCNs,
- wherein the set of instructions for calculating the first bandwidth allocation value comprises sets of instructions for multiplying a first bandwidth amount from the set of bandwidth amounts allocated to the first DCN by a second bandwidth amount from the set of bandwidth amounts allocated to the second DCN and dividing by a sum of bandwidth amounts from the plurality of sets of bandwidth amounts allocated to the plurality of DCNs in the first plurality of DCNs, and
- the second bandwidth allocation value is calculated by multiplying a third bandwidth amount from the set of bandwidth amounts allocated to the second DCN by a fourth bandwidth amount from the set of bandwidth amounts allocated to the first DCN and dividing by a sum of bandwidth amounts from the plurality of sets of bandwidth amounts allocated to the plurality of DCNs in the second plurality of DCNs;
- and
- using the first and second bandwidth allocation values to compute an amount of bandwidth allocated to the flow at the first host computer.
A non-transitory machine readable medium of storing a program, which when executed by at least one processing unit, allocates network bandwidth in a network comprising a plurality of data compute nodes (DCNs) including first and second DCNs executing on first and second host computers, each DCN associated with a scheduling machine, the program comprising sets of instructions for:
- at a first scheduling machine associated with the first DCN and executing on the first host computer along with the first DCN:
- receiving first and second network bandwidth allocation policies for the first and second DCNs, respectively, from a controller storing network bandwidth policies of the first and second pluralities of DCNs, the network allocation policy of each DCN comprising a set of one or more bandwidth amounts allocated to the DCN, the network allocation policy for each particular DCN received when the particular DCN starts operating on its associated host computer in order to allocate bandwidth for the particular DCN to exchange data messages with another DCN;
- calculating, for a flow, a first bandwidth allocation value from the first DCN associated with the first scheduling machine to the second DCN associated with a different, second scheduling machine, wherein the first DCN sends packets to a first plurality of DCNs comprising the second DCN and the second DCN receives packets from a second plurality of DCNs comprising the first DCN, the first bandwidth allocation value calculated using (i) a first set of bandwidth amounts allocated to the first DCN based on the first network bandwidth allocation policy and (ii) a first plurality of sets of bandwidth amounts allocated to a plurality of DCN in the first plurality of DCNs based on first plurality of network bandwidth allocation policies associated with the first plurality of DCNs;
- receiving, for the flow, a second bandwidth allocation value calculated by the second scheduling machine associated with the second DCN by using (i) a second set of bandwidth amounts allocated to the second DCN based on the second network bandwidth allocation policy and (ii) a second plurality of sets of bandwidth amounts allocated to a plurality of DCNs in the second plurality of DCNs based on a second plurality of received bandwidth allocation policies associated with the second plurality of DCNs;
- and
- using the first and second bandwidth allocation values to compute an amount of bandwidth allocated to the flow at the first host computer.
Dependencies are inferred from the claim text.