ADAPTIVE LOAD BALANCING IN PACKET PROCESSING
First Claim
1. A method of forwarding packets in a network device, the method comprising:
- receiving a packet at the network device;
assigning the packet to a first packet processing thread from a plurality of packet processing threads;
determining a state of the first packet processing thread, wherein the state was set based on a monitoring of a length of a queue of the first packet processing thread, and wherein the state is determined to be one of a plurality of states including a backlogged state and a normal state;
responsive to determining that the state of the first packet processing thread is a normal state, performing the following;
mapping the packet to the first packet processing thread,processing the packet in the first packet processing thread, andforwarding the packet; and
responsive to determining that the state of the first packet processing thread is a backlogged state, performing the following;
mapping the packet to a second packet processing thread from a pool of packet processing threads based on a load balancing scheme, wherein the pool of packet processing threads includes a subset of packet processing threads from the plurality of packet processing threads, and the state of each one of the packet processing threads from the pool is the backlogged state,processing the packet in the second packet processing thread, andforwarding the packet according to a predetermined order, wherein the predetermined order is based on a position of the packet relative to positions of other packets at their receipt in the network device.
2 Assignments
0 Petitions
Accused Products
Abstract
A method of forwarding packets in a network device is disclosed. The method comprises assigning a packet to a first packet processing thread; and determining a state of the first packet processing thread. Responsive to determining that the state of the first packet processing thread is a backlogged state, mapping the packet to a second packet processing thread from a pool of packet processing threads based on a load balancing scheme, wherein the pool of packet processing threads includes a subset of threads from the plurality of packet processing threads, and the state of each one of the packet processing threads from the pool is the backlogged state, processing the packet in the second packet processing thread, and forwarding the packet according to a predetermined order that is based on a position of the packet relative to positions of other packets at their receipt in the network device.
-
Citations
20 Claims
-
1. A method of forwarding packets in a network device, the method comprising:
-
receiving a packet at the network device; assigning the packet to a first packet processing thread from a plurality of packet processing threads; determining a state of the first packet processing thread, wherein the state was set based on a monitoring of a length of a queue of the first packet processing thread, and wherein the state is determined to be one of a plurality of states including a backlogged state and a normal state; responsive to determining that the state of the first packet processing thread is a normal state, performing the following; mapping the packet to the first packet processing thread, processing the packet in the first packet processing thread, and forwarding the packet; and responsive to determining that the state of the first packet processing thread is a backlogged state, performing the following; mapping the packet to a second packet processing thread from a pool of packet processing threads based on a load balancing scheme, wherein the pool of packet processing threads includes a subset of packet processing threads from the plurality of packet processing threads, and the state of each one of the packet processing threads from the pool is the backlogged state, processing the packet in the second packet processing thread, and forwarding the packet according to a predetermined order, wherein the predetermined order is based on a position of the packet relative to positions of other packets at their receipt in the network device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A non-transitory machine-readable storage medium that provides instructions, which when executed by a processor of a network device, cause said processor to perform operations comprising:
-
assigning a received packet to a first packet processing thread from a plurality of packet processing threads; determining a state of the first packet processing thread, wherein the state was set based on a monitoring of a length of a queue of the first packet processing thread, and wherein the state is determined to be one of a plurality of states including a backlogged state and a normal state; responsive to determining that the state of the first packet processing thread is a normal state, performing the following; mapping the packet to the first packet processing thread, processing the packet in the first packet processing thread, and causing the packet to be forwarded; and responsive to determining that the state of the first packet processing thread is a backlogged state, performing the following; mapping the packet to a second packet processing thread from a pool of packet processing threads based on a load balancing scheme, wherein the pool of packet processing threads includes a subset of packet processing threads from the plurality of packet processing threads, and the state of each one of the packet processing threads from the pool is the backlogged state, processing the packet in the second packet processing thread, and causing the packet to be forwarded according to a predetermined order, wherein the predetermined order is based on a position of the packet relative to positions of other packets at their receipt in the network device. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A network device comprising:
-
a processor; and a non-transitory machine readable storage media with code stored therein which when executed by the processor performs the following operations; assigning a received packet to a first packet processing thread from a plurality of packet processing threads, determining a state of the first packet processing thread, wherein the state was set based on a monitoring of a length of a queue of the first packet processing thread, and wherein the state is determined to be one of a plurality of states including a backlogged state and a normal state, responsive to determining that the state of the first packet processing thread is a normal state, performing the following; mapping the packet to the first packet processing thread, processing the packet in the first packet processing thread, and causing the packet to be forwarded, and responsive to determining that the state of the first packet processing thread is a backlogged state, performing the following; mapping the packet to a second packet processing thread from a pool of packet processing threads based on a load balancing scheme, wherein the pool of packet processing threads includes a subset of packet processing threads from the plurality of packet processing threads, and the state of each one of the packet processing threads from the pool is the backlogged state, processing the packet in the second packet processing thread, and causing the packet to be forwarded according to a predetermined order, wherein the predetermined order is based on a position of the packet relative to positions of other packets at their receipt in the network device. - View Dependent Claims (17, 18, 19, 20)
-
Specification