SYSTEMS AND METHODS FOR LEAST CONNECTION LOAD BALANCING BY MULTI-CORE DEVICE
First Claim
1. A method for load balancing a plurality of connections to a plurality of services across a plurality of packet engines of a multi-core device, the method comprising:
- (a) establishing a number of sub-slots in each slot of each of a plurality of packet engines executing on a device intermediary between a plurality of clients and a plurality of services, the number of sub-slots corresponding to a number of the packet engines executing on the device, each of the packet engines executing on a respective core from a plurality of cores on the device, each slot of each packet engine for tracking a different number of active connections allocated to a service accessible via the corresponding packet engine;
(b) assigning, by the device, a first service and a second service each having no active connections, to each of the packet engines in a first slot corresponding to no active connections, the first service and the second service assigned to different sub-slots of the first slot in adjacent packet engines; and
(c) updating, by the device responsive to allocation of a first active connection to the first service, the first service from a sub-slot in the first slot of a first packet engine of the plurality of packet engines, to a corresponding sub-slot in a second slot of the first packet engine, the second slot corresponding to one active connection allocated to the first service.
8 Assignments
0 Petitions
Accused Products
Abstract
The present invention is directed towards systems and methods for load balancing by a multi-core device intermediary between clients and services. The device may establish sub-slots in each slot of the device'"'"'s packet engines. The number of sub-slots may correspond to the packet engine count. Each slot may track a different number of active connections allocated to a service. The device may assign a first and second service to each packet engine in a first slot corresponding to no active connections. These services may be assigned to different sub-slots in adjacent packet engines. The device may update, responsive to allocation of a first active connection to the first service, the first service from a sub-slot in the first slot of a first packet engine, to a corresponding sub-slot in a second slot. The second slot may correspond to one active connection allocated to the first service.
-
Citations
20 Claims
-
1. A method for load balancing a plurality of connections to a plurality of services across a plurality of packet engines of a multi-core device, the method comprising:
-
(a) establishing a number of sub-slots in each slot of each of a plurality of packet engines executing on a device intermediary between a plurality of clients and a plurality of services, the number of sub-slots corresponding to a number of the packet engines executing on the device, each of the packet engines executing on a respective core from a plurality of cores on the device, each slot of each packet engine for tracking a different number of active connections allocated to a service accessible via the corresponding packet engine; (b) assigning, by the device, a first service and a second service each having no active connections, to each of the packet engines in a first slot corresponding to no active connections, the first service and the second service assigned to different sub-slots of the first slot in adjacent packet engines; and (c) updating, by the device responsive to allocation of a first active connection to the first service, the first service from a sub-slot in the first slot of a first packet engine of the plurality of packet engines, to a corresponding sub-slot in a second slot of the first packet engine, the second slot corresponding to one active connection allocated to the first service. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system for load balancing a plurality of connections to a plurality of services across a plurality of packet engines of a multi-core device, comprising:
-
a plurality of packet engines executing on a device intermediary between a plurality of clients and a plurality of services; and a load balancer executing on the device, the load balancer; establishing a number of sub-slots in each slot of each of the plurality of packet engines, the number of sub-slots corresponding to a number of the packet engines executing on the device, each of the packet engines executing on a respective core from a plurality of cores on the device, each slot of each packet engine for tracking a different number of active connections allocated to a service accessible via the corresponding packet engine, assigning a first service and a second service each having no active connections, to each of the packet engines in a first slot corresponding to no active connections, the first service and the second service assigned to different sub-slots of the first slot in adjacent packet engines, and updating, responsive to allocation of a first active connection to the first service, the first service from a sub-slot in the first slot of a first packet engine of the plurality of packet engines, to a corresponding sub-slot in a second slot of the first packet engine, the second slot corresponding to one active connection allocated to the first service. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
Specification