Multiplane load balancing
A network device for load balancing in a multiplane network comprises a software stack that formats a data flow for transmission, and one or more circuits that identify the formatted data flow as a fixed data flow, and apply software-based load balancing to select a first plane, from among a plurality of planes of the multiplane network, for transmitting one or more data packets of the fixed data flow.
1 . A network device for load balancing in a multiplane network, comprising:
a software stack that formats a data flow for transmission; and
one or more circuits, including hardware, to:
identify the formatted data flow as either a non-fixed data flow that supports out-of-order packet delivery or as a fixed data flow that does not support out-of-order packet delivery; and
apply software-based load balancing when the formatted data flow is the fixed data flow, wherein applying the software-based load balancing includes:
determining that a first plane, from among a plurality of planes of the multiplane network, over which the fixed data flow is to be transmitted is experiencing congestion, wherein each plane of the plurality of planes is associated with a different switch integrated circuit (IC) of a plurality of switch integrated circuits (ICs) in a multiplane network switch connected to the network device;
in response to determining that the first plane is experiencing congestion, selecting a second plane from among the plurality of planes based on characteristics of the multiplane network;
draining a send queue of the first plane; and
migrating the fixed data flow from a first switch IC, associated with the first plane, in the plurality of switch ICs to a second switch IC, associated with the second plane, in the plurality of switch ICs to enable transmission of one or more data packets of the fixed data flow over the second plane, wherein the one or more data packets of the fixed data flow are placed into a send queue of the second plane in response to an acknowledgement indicating that the send queue of the first plane is drained; and
queue, when the formatted data flow is the non-fixed data flow, one or more data packets of the non-fixed data flow for transmission over a pre-programmed plane of the plurality of planes.
2 . The network device of claim 1 ,
wherein the software-based load balancing includes:
selecting the second plane based on load statuses of the plurality of planes; and
placing the one or more data packets of the fixed data flow into the send queue associated with the second plane.
3 . The network device of claim 2 , wherein the load statuses of the plurality of planes are determined based on a number of fixed flows assigned to each plane.
4 . The network device of claim 2 , wherein each of the plurality of planes has a corresponding send queue.
5 . The network device of claim 1 , wherein the software stack is not aware of the plurality of planes, and wherein the one or more circuits are aware of the plurality of planes.
6 . The network device of claim 1 , wherein the characteristics of the multiplane network comprise a load status of the second plane.
7 . The network device of claim 1 , wherein the fixed data flow comprises a Transmission Control Protocol (TCP) transmission, and wherein the non-fixed data flow comprises a Remote Direct Memory Access (RDMA) transmission or a User Datagram Protocol (UDP) transmission.
8 . The network device of claim 1 , wherein the one or more circuits apply the software-based load balancing in response to determining that an amount of time during which data packets are not queued for transmission is greater than a threshold amount of time.
9 . The network device of claim 1 , wherein the software stack comprises a TCP stack.
10 . The network device of claim 1 , wherein the software stack comprises a multicast application for sending a multicast transmission.
11 . The network device of claim 10 , wherein the plurality of planes are visible to the multicast application.
12 . The network device of claim 11 , wherein the multicast application places one or more packets of the multicast transmission into a send queue associated with the pre-programmed plane.
13 . A networking system, comprising:
a plurality of switches implementing a multiplane network comprising a plurality of planes;
a multiplane device including a number of physical ports and a logical port associated with the number of the physical ports, the number of the physical ports corresponding to a number of the plurality of planes; and
a network device for load balancing transmissions over the multiplane network, the network device including:
a software stack to format a data flow for transmission; and
one or more circuits, including hardware, to:
identify the formatted data flow as either a non-fixed data flow that supports out-of-order packet delivery or as a fixed data flow that does not support out-of-order packet delivery; and
apply software-based load balancing when the formatted data flow is the fixed data flow, wherein applying the software-based load balancing includes:
determining that a first plane, from among the plurality of planes of the multiplane network, over which the fixed data flow is to be transmitted is experiencing congestion, wherein each plane of the plurality of planes is associated with a different switch integrated circuit (IC) of a plurality of switch integrated circuits (ICs) in a multiplane network switch connected to the network device;
in response to determining that the first plane is experiencing congestion, selecting a second plane from among the plurality of planes based on characteristics of the multiplane network;
draining a send queue of the first plane; and
migrating the fixed data flow from a first switch IC, associated with the first plane, in the plurality of switch ICs to a second switch IC, associated with the second plane, in the plurality of switch ICs to enable transmission of one or more data packets of the fixed data flow to the multiplane device over the second plane, wherein the one or more data packets of the fixed data flow are placed into a send queue of the second plane in response to an acknowledgement indicating that the send queue of the first plane is drained; and
queue, when the formatted data flow is the non-fixed data flow, one or more packets of the non-fixed data flow for transmission to the multiplane device over a pre-programmed plane of the plurality of planes.
14 . The networking system of claim 13 , wherein the software-based load balancing includes:
selecting the second plane, from among the plurality of planes, based on load statuses of the plurality of planes; and
placing the one or more data packets of the fixed data flow into the send queue associated with the second plane.
15 . The networking system of claim 13 , wherein each of the plurality of planes has a corresponding send queue.
16 . The networking system of claim 13 , wherein the characteristics of the multiplane network comprise a load status of the second plane.
17 . The networking system of claim 13 , wherein the one or more circuits apply the software-based load balancing in response to determining that an amount of time during which data packets are not queued for transmission is greater than a threshold amount of time.
18 . A network device for load balancing in a multiplane network, comprising:
a software stack to format a data flow for transmission; and
one or more circuits, including hardware, to:
identify whether the formatted data flow is either a non-fixed data flow that supports out-of-order packet delivery or a fixed data flow that does not support out-of-order packet delivery;
apply software-based load balancing when the formatted data flow is the fixed data flow, wherein applying the software-based load balancing includes:
determining that a first plane, from among a plurality of planes of the multiplane network, over which the fixed data flow is to be transmitted is experiencing congestion, wherein each plane of the plurality of planes is associated with a different switch integrated circuit (IC) of a plurality of switch integrated circuits (ICs) in a multiplane network switch connected to the network device;
in response to determining that the first plane is experiencing congestion, selecting a second plane from among the plurality of planes based on characteristics of the multiplane network;
draining a send queue of the first plane; and
migrating the fixed data flow from a first switch IC, associated with the first plane, in the plurality of switch ICs to a second switch IC, associated with the second plane, in the plurality of switch ICs to enable transmission of one or more data packets of the fixed data flow over the second plane, wherein the one or more data packets of the fixed data flow are placed into a send queue of the second plane in response to an acknowledgement indicating that the send queue of the first plane is drained; and
apply hardware-based routing when the formatted data flow is the non-fixed data flow to queue the non-fixed data flow for transmission over a pre-programmed plane of the plurality of planes.