Optimized back-to-back enqueue/dequeue via physical queue parallelism
First Claim
Patent Images
1. A method, comprising:
- receiving multiple packet flows, each one of the multiple packet flows including a plurality of packets;
enqueuing a plurality of packet pointers for each of the multiple packet flows into multiple link lists, each one of the plurality of packet pointers designating one of the plurality of packets of each of the multiple packet flows; and
dequeuing the plurality of packet pointers for each of the multiple packet flows from each of the multiple link lists to transmit each of the plurality of packets along a corresponding outflow of each of the multiple packet flows,wherein enqueuing the plurality of packet pointers for each of the multiple packet flows further comprises enqueuing each of the plurality of packet pointers into the multiple link lists according to the following relation,
PQ=(LQ×
N)+Qmultwherein PQ represents a link list number of one of the multiple link lists, LQ represents a logical queue number corresponding to one of the multiple packet flows, N represents a number of the multiple link lists per each one of the multiple packet flows, and Qmult differentiates between each one of the multiple link lists of each of the multiple packet flows.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and apparatus to receive a plurality of packet from an inflow of a single packet flow. In response to receiving the plurality of packets, a plurality of packet pointers is enqueued into multiple physical queues. Each of the plurality of packet pointers designates one of the plurality of packets from the single packet flow. The plurality of packet pointers are dequeued from the multiple physical queues to transmit the plurality of packets along an outflow of the single packet flow.
-
Citations
23 Claims
-
1. A method, comprising:
-
receiving multiple packet flows, each one of the multiple packet flows including a plurality of packets; enqueuing a plurality of packet pointers for each of the multiple packet flows into multiple link lists, each one of the plurality of packet pointers designating one of the plurality of packets of each of the multiple packet flows; and dequeuing the plurality of packet pointers for each of the multiple packet flows from each of the multiple link lists to transmit each of the plurality of packets along a corresponding outflow of each of the multiple packet flows, wherein enqueuing the plurality of packet pointers for each of the multiple packet flows further comprises enqueuing each of the plurality of packet pointers into the multiple link lists according to the following relation,
PQ=(LQ×
N)+Qmultwherein PQ represents a link list number of one of the multiple link lists, LQ represents a logical queue number corresponding to one of the multiple packet flows, N represents a number of the multiple link lists per each one of the multiple packet flows, and Qmult differentiates between each one of the multiple link lists of each of the multiple packet flows. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method, comprising:
-
receiving multiple pluralities of packets from corresponding multiple packet inflows; enqueuing each of the multiple pluralities of data packets from the corresponding multiple packet inflows into corresponding multiple physical queues; and dequeuing each of the multiple pluralities of packets from the corresponding multiple physical queues to transmit each of the multiple pluralities of packets alone corresponding packet outflows, wherein enqueuing each of the multiple pluralities of data packets comprises enqueuing each of the multiple pluralities of packets into the corresponding multiple physical queues according to the following relation,
PQ=(LQ×
N)+Qmultwherein PQ represents a physical queue number of one of the corresponding multiple physical queues, LQ represents a logical queue number corresponding to one of the multiple packet inflows, N represents a number of the corresponding multiple physical queues per each of the multiple packet inflows, and Qmult differentiates between each one of the multiple physical queues of each of the multiple packet inflows.
-
-
9. A machine-accessible medium that provides instructions that, if executed by a machine, will cause the machine to perform operations comprising:
-
enqueuing a plurality of packet pointers into multiple physical queues, the plurality of packet pointers each point to a memory location temporarily having stored therein one of a corresponding plurality of packets, the corresponding plurality of packets received from a packet flow via a first network link; and dequeuing the plurality of packet pointers from the multiple physical queues to transmit the plurality of packets onto a second network link, wherein the packet pointers are enqueued into the multiple physical queues according to the following relation,
PQ=(LQ×
N)+Qmultwherein PQ represents a physical queue identifier, LQ represents a logical queue identifier, N represents a number of the multiple physical queues assigned per logical queue, and Qmult differentiates between the multiple physical queues assigned to each logical queue. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A router, comprising:
-
a first port to receive a plurality of packets; a memory unit to temporarily queue the plurality of packets; a queue manager to enqueue a plurality of packet pointers, each one of the plurality of packet pointers to point to one of the plurality of packets temporarily queued, the queue manager to enqueue the plurality of packet pointers into multiple link lists according to PQ=(LQ×
N)+Qmult, wherein PQ represents a link list identifier, LQ represents a logical queue identifier of a packet flow, N represents a number of the multiple link lists assigned per logical queue, and Qmult differentiates between the multiple link lists assigned to each logical queue; anda second port to transmit the plurality of packets thereon, each of the plurality of packets to be transmitted in response to the queue manager dequeuing one of the plurality of packet pointers. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A system, comprising:
-
a plurality of optical routers, each of the plurality of optical routers comprising; a first port to receive a plurality of packets of a packet flow; a memory unit to temporarily queue the plurality of packets of the packet flow; a queue manager to enqueue a plurality of packet pointers, each one of the plurality of packet pointers to point to one of the plurality of packets temporarily queued, the queue manager to enqueue the plurality of packet pointers into multiple physical queues according to PQ=(LQ×
N)+Qmult, wherein PQ represents a physical queue identifier, LQ represents a logical queue identifier of a packet flow, N represents a number of the multiple physical queues assigned per logical queue, and Qmult differentiates between the multiple physical queues assigned to each logical queue; anda second port to transmit the plurality of packets thereon, each of the plurality of packets to be transmitted in response to the queue manager dequeuing one of the plurality of packet pointers; and a plurality of optical fibers to link the plurality of optical routers into a network, the first port and the second port of each of the plurality of routers each coupled to one of the plurality of optical fibers. - View Dependent Claims (22, 23)
-
Specification