Lockless Bandwidth Management for Multiprocessor Networking Devices
First Claim
1. An apparatus comprisingone or more network interfaces;
- a plurality of processors;
a work order module operative tomaintain a queue of work entries, one or more of the work entries including a task description, a packet pointer, and a tag; and
schedule work entries in the queue for the plurality of processors such that only a single processor of the plurality of processors is provided a work entry labeled with a given tag;
a memory operative to define a hierarchical partition configuration, the hierarchical partition configuration comprising a plurality of partitions, the memory further operative to buffer packets received at the one or more network interfaces;
wherein the plurality of processors, to schedule received packets for transmission according to the hierarchical partition configuration, are each operative to;
receive, from the work order module, an indication of a first work entry, wherein the first work entry is associated with a packet to be processed and includes a tag identifying a partition of the plurality of partitions,forward the packet corresponding to the first work entry to a parent partition of the identified partition by modifying the first work entry to include a tag of the parent partition, andresubmit the first modified, work entry to the work, order module.
12 Assignments
0 Petitions
Accused Products
Abstract
An example embodiment of the invention provides a process for lockless processing of hierarchical bandwidth partitions configurations in multiple processor architectures. In one embodiment, the process runs in an NPU'"'"'s data plane and receives a packet for a partition from a child partition through a work queue. The process determines a suggested target bandwidth rate for the receiving partition'"'"'s child partitions, based in part on a count of active child partitions, if a predefined time interval has passed. The process adopts a target bandwidth rate for the receiving partition suggested by the receiving partition'"'"'s parent partition, if the receiving partition is not a root partition and the predefined time interval has passed. The process then transmits the packet to the receiving partition'"'"'s parent partition through the work queue, if the receiving partition is not a root partition. Otherwise, the process transmits the packet to a port.
118 Citations
29 Claims
-
1. An apparatus comprising
one or more network interfaces; -
a plurality of processors; a work order module operative to maintain a queue of work entries, one or more of the work entries including a task description, a packet pointer, and a tag; and schedule work entries in the queue for the plurality of processors such that only a single processor of the plurality of processors is provided a work entry labeled with a given tag; a memory operative to define a hierarchical partition configuration, the hierarchical partition configuration comprising a plurality of partitions, the memory further operative to buffer packets received at the one or more network interfaces; wherein the plurality of processors, to schedule received packets for transmission according to the hierarchical partition configuration, are each operative to; receive, from the work order module, an indication of a first work entry, wherein the first work entry is associated with a packet to be processed and includes a tag identifying a partition of the plurality of partitions, forward the packet corresponding to the first work entry to a parent partition of the identified partition by modifying the first work entry to include a tag of the parent partition, and resubmit the first modified, work entry to the work, order module. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
conditionally forward the packet to the parent partition based on a size of the packet and a current number of tokens in the token bucket of the partition associated with the tag.
-
-
9. The apparatus according to claim 8 wherein the plurality of processors are further operative to add tokens to the token bucket up to a maximum token limit.
-
10. The apparatus according to claim 8 wherein the wherein the plurality of processors are further operative to deduct, responsive to forwarding the packet, tokens from the token bucket of the partition associated with the tag.
-
11. The apparatus according to claim 8 wherein the plurality of processors are further operative to
place the packet on a partition queue if a number of tokens in the token bucket of the partition associated with the tag is insufficient to transmit the packet; - and
compute a delay time based on the target rate of the partition and the size of the packet; set a timer for the delay time, wherein the timer, when triggered, is operative to return the work entry identifying the partition associated with the tag to the corresponding processor.
- and
-
12. The apparatus according to claim 11 wherein the partition queue is selected from a plurality of partition queues based on a priority associated with the packet.
-
13. The apparatus according to claim 11 wherein the delay time used to set the timer is constrained by a minimum delay time.
-
14. The apparatus according to claim 1 wherein the plurality of processors are further operative to
receive a work entry identifying a packet; -
associate the packet with a data flow entry, wherein the flow entry identifies a partition; place the work entry on a flow queue corresponding to the flow entry.
-
-
15. The apparatus according to claim 14 wherein the plurality of processors are further operative to
change the tag of the work entry to a tag corresponding to the partition identified in data flow entry; - and
submit the work entry to the work order module.
- and
-
16. The apparatus according to claim 1 wherein the plurality of processors are further operative to
receive a work entry identifying a packet; -
associate the packet with a data flow entry, wherein the flow entry identifies a partition and a priority; place the work entry on a flow queue corresponding to the flow entry.
-
-
17. The apparatus according to claim 16 wherein the plurality of processors are further operative to
change the tag of the work entry to a tag corresponding to the partition identified in data flow entry; -
add an indication of the priority to the work entry; and submit the work entry to the work order module.
-
-
18. The apparatus according to claim 1 wherein the plurality of processors are further operative to
schedule, if the partition associated with the tag is a root partition, a packet for transmission from a network interface.
-
19. A method comprising
maintaining a queue of work entries, one or more of the work entries including a task description, a packet pointer, and a tag; - and
scheduling work entries in the queue for a plurality of processors such that only a single processor of the plurality of processors is provided a work entry labeled with a given tag; maintaining in a memory a hierarchical partition configuration, the hierarchical partition configuration comprising a plurality of partitions; iteratively executing a partition scheduling process across the plurality of processors, the partition scheduling process comprising receiving, at a processor of the plurality of processors, an indication of a first work entry, wherein the first work entry is associated with a packet to be processed and includes a tag identifying a partition of the plurality of partitions; forwarding the packet corresponding to the first work entry to a parent partition of the identified partition by modifying the first work entry to include a tag of the parent partition; and resubmitting the first modified work entry to a work order module. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27, 28, 29)
- and
Specification