Reporting elephant flows to a network controller
First Claim
1. A non-transitory machine readable medium storing a program, that when executed by at least one processing unit of a host computer implements an edge forwarding element on the host computer, the program comprising sets of instructions for:
- monitoring data flows sent from a plurality of machines that execute on the host computer along with the edge forwarding element;
generating a set of statistics related to each monitored data flow;
determining that one of the data flows is an elephant flow based on the generated statistics;
reporting the elephant flow to a set of network controllers;
receiving, from the set of network controllers, configuration data that configures the edge forwarding element to break the elephant flow into a plurality of mice flows that are sent along different paths to a destination of the elephant flow; and
using equal cost multipath (ECMP) routing to break the elephant flow into the plurality of mice flows and sending each mice flow along one of the plurality of paths to the elephant flow'"'"'s destination.
1 Assignment
0 Petitions
Accused Products
Abstract
Some embodiments provide a system that detects whether a flow is an elephant flow; and if so, the system treats it differently than a mouse flow. The system of some embodiment detect elephants based on one or more of the following: statistics associated with a flow, packet segment size, and invoked system calls. Also, some embodiments use one or more various methods to handle elephant flows. Examples of such methods include marking each packet belonging to an elephant with a particular marking, breaking the elephants into mice, reporting the elephant to a network controller, and selectively choosing a route for each packet belonging to the elephant.
246 Citations
16 Claims
-
1. A non-transitory machine readable medium storing a program, that when executed by at least one processing unit of a host computer implements an edge forwarding element on the host computer, the program comprising sets of instructions for:
-
monitoring data flows sent from a plurality of machines that execute on the host computer along with the edge forwarding element; generating a set of statistics related to each monitored data flow; determining that one of the data flows is an elephant flow based on the generated statistics; reporting the elephant flow to a set of network controllers; receiving, from the set of network controllers, configuration data that configures the edge forwarding element to break the elephant flow into a plurality of mice flows that are sent along different paths to a destination of the elephant flow; and using equal cost multipath (ECMP) routing to break the elephant flow into the plurality of mice flows and sending each mice flow along one of the plurality of paths to the elephant flow'"'"'s destination. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for an edge forwarding element that operates on a host computer, the edge forwarding element part of a network that comprises edge and non-edge forwarding elements, the method comprising:
-
at the edge forwarding element, monitoring data flows sent from a plurality of machines that execute on the host computer along with the edge forwarding element; generating a set of statistics related to each monitored data flow; determining, at the edge forwarding element, that one of the data flows is an elephant flow based on the generated statistics; sending a report identifying the elephant flow to a network controller that, based on the report, configures one particular non-edge forwarding element to break the elephant flow into a plurality of mice flows; and forwarding the packets of the elephant flow through the network, wherein when the particular non-edge forwarding element receives the elephant flow packets, the particular non-edge forwarding element breaks the elephant flow into the plurality of mice flows and sends each mice flow along a different one of a plurality of paths to a destination of the elephant flow. - View Dependent Claims (7, 8, 9, 10, 11)
-
-
12. A non-transitory machine readable medium storing a program, that when executed by at least one processing unit of a host computer implements an edge forwarding element on the host computer, the edge forwarding element part of a network that comprises edge and non-edge forwarding elements, the program comprising sets of instructions for:
-
monitoring data flows sent from a plurality of machines that execute on the host computer along with the edge forwarding element; generating a set of statistics related to each monitored data flow; determining that one of the data flows is an elephant flow based on the generated statistics; sending a report identifying the elephant flow to a network controller that, based on the report, configures one particular non-edge forwarding element to break the elephant flow into a plurality of mice flows; and forwarding the packets of the elephant flow through the network, wherein when the particular non-edge forwarding element receives the elephant flow packets, the particular non-edge forwarding element breaks the elephant flow into the plurality of mice flows and sends each mice flow along a different one of a plurality of paths to a destination of the elephant flow. - View Dependent Claims (13, 14)
-
-
15. A non-transitory machine readable medium storing a program, that when executed by at least one processing unit of a host computer implements an edge forwarding element on the host computer, the edge forwarding element part of a network that comprises edge and non-edge forwarding elements, the program comprising sets of instructions for:
-
monitoring data flows sent from a plurality of machines that execute on the host computer along with the edge forwarding element; generating a set of statistics related to each monitored data flow; determining that one of the data flows is an elephant flow based on the generated statistics; sending a report comprising encapsulation header information to the network controller identifying the elephant flow, wherein the controller, based on the report, configures one particular non-edge forwarding element to break the elephant flow into the plurality of mice flows based on the encapsulation header information; and encapsulating the monitored data flows and forwarding the packets of the elephant flow through the network, wherein when the particular non-edge forwarding element receives the elephant flow packets, the particular non-edge forwarding element breaks the elephant flow into the plurality of mice flows and sends each mice flow along a different one of a plurality of paths to a destination of the elephant flow. - View Dependent Claims (16)
-
Specification