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.
79 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)
-
-
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