IP Library › Granted Patent US 11,240,151
Granted Patent B2
US 11,240,151 · App. 16/709,611 · Granted Feb 1, 2022

Combined input and output queue for packet forwarding in network devices

Inventors: Craig R. Frink (Chelmsford, MA); Weidong Xu (Westford, MA); Anurag P. Gupta (Saratoga, CA); Harshad B Agashe (Bangalore, IN)
Assignee: Juniper Networks, Inc.
H04L45/566G06F9/4887H04L45/586H04L45/74H04L49/9036H04L49/9047H04L2012/5681
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,240,151
App. No.
16/709,611
Granted
Feb 1, 2022
Kind
B2
Abstract

An apparatus for switching network traffic includes an ingress packet forwarding engine and an egress packet forwarding engine. The ingress packet forwarding engine is configured to determine, in response to receiving a network packet, an egress packet forwarding engine for outputting the network packet and enqueue the network packet in a virtual output queue. The egress packet forwarding engine is configured to output, in response to a first scheduling event and to the ingress packet forwarding engine, information indicating the network packet in the virtual output queue and that the network packet is to be enqueued at an output queue for an output port of the egress packet forwarding engine. The ingress packet forwarding engine is further configured to dequeue, in response to receiving the information, the network packet from the virtual output queue and enqueue the network packet to the output queue.

Claims (57)

1. An apparatus for switching network traffic, the apparatus comprising:

an ingress packet forwarding engine implemented in circuitry and configured to:

determine, in response to receiving a network packet, an egress packet forwarding engine for outputting the network packet; and

enqueue the network packet in a virtual output queue for output to the egress packet forwarding engine;

the egress packet forwarding engine implemented in processing circuitry and comprising a scheduler configured to select an output port from a plurality of output ports at the egress packet forwarding engine and to determine a first scheduling event and a second scheduling event to regulate a speed at which data is exchanged from the apparatus, wherein the egress packet forwarding engine is configured to, in response to the first scheduling event, output, to the ingress packet forwarding engine, information indicating the network packet in the virtual output queue and that the network packet is to be enqueued at an output queue for the selected output port of the egress packet forwarding engine;

wherein the ingress packet forwarding engine is further configured to, in response to receiving the information:

dequeue the network packet from the virtual output queue; and

enqueue the network packet to the output queue; and

wherein the egress packet forwarding engine is further configured to, in response to the second scheduling event that is after the first scheduling event:

dequeue the network packet from the output queue; and

output the network packet at the selected output port.

2. The apparatus of claim 1 , wherein, to output the information, the egress packet forwarding engine is configured to output, to the ingress packet forwarding engine, the network packet with a header comprising the information.

3. The apparatus of claim 2 , wherein, in response to receiving the network packet with the header, the ingress packet forwarding engine is configured to:

perform a drop check for the network packet.

4. The apparatus of claim 2 , wherein, to output the network packet with the header, the egress packet forwarding engine is configured to output the network packet with the header from a first port of the egress packet forwarding engine to a second port of the ingress packet forwarding engine.

5. The apparatus of claim 1 , wherein, to output the information, the egress packet forwarding engine is configured to output metadata comprising the information to the ingress packet forwarding engine and refrain from outputting the network packet to the ingress packet forwarding engine.

6. The apparatus of claim 5 , wherein, to output the metadata, the egress packet forwarding engine is configured to output the metadata to the ingress packet forwarding engine using local switching.

7. The apparatus of claim 1 , comprising:

a combined buffer for the ingress packet forwarding engine and the egress packet forwarding engine,

wherein, to enqueue the network packet in the virtual output queue, the ingress packet forwarding engine is configured to enqueue the network packet in a first portion of the combined buffer assigned to the virtual output queue;

wherein, to dequeue the network packet from the virtual output queue, the egress packet forwarding engine is configured to dequeue the network packet from the first portion of the combined buffer;

wherein, to enqueue the network packet the network packet to the output queue, the egress packet forwarding engine is configured to enqueue the network packet in a second portion of the combined buffer assigned to the output queue; and

wherein, to dequeue the network packet from the output queue, the egress packet forwarding engine is configured to dequeue the network packet from the second portion of the combined buffer.

8. The apparatus of claim 1 , wherein, to output the information, the egress packet forwarding engine is configured to output metadata comprising the information to the ingress packet forwarding engine and refrain from outputting the network packet to the ingress packet forwarding engine.

9. A method comprising:

determining, in response to receiving a network packet and by an ingress packet forwarding engine implemented in processing circuitry, an egress packet forwarding engine for outputting the network packet;

enqueuing, by the ingress packet forwarding engine, the network packet in a virtual output queue for output to the egress packet forwarding engine;

selecting, by a scheduler implemented in circuitry, an output port from a plurality of output ports at the egress packet forwarding engine; and

determining, by the scheduler, a first scheduling event and a second scheduling event to regulate a speed at which data is exchanged;

outputting, in response to the first scheduling event and by the egress packet forwarding engine implemented in processing circuitry, to the ingress packet forwarding engine, information indicating the network packet in the virtual output queue and that the network packet is to be enqueued at the selected output queue for an output port of the egress packet forwarding engine;

dequeuing, in response to receiving the information and by the ingress packet forwarding engine, the network packet from the virtual output queue and enqueuing, by the ingress packet forwarding engine, the network packet to the output queue; and

dequeuing, in response to the second scheduling event that is after the first scheduling event and by the egress packet forwarding engine, the network packet from the output queue and outputting, by the egress packet forwarding engine, the network packet at the selected output port.

10. The method of claim 9 , wherein outputting the information comprises outputting, to the ingress packet forwarding engine, the network packet with a header comprising the information.

11. The method of claim 10 , comprising:

performing, in response to receiving the network packet with the header and by the ingress packet forwarding engine, a drop check for the network packet.

12. The method of claim 10 , wherein outputting the network packet with the header comprises outputting the network packet with the header from a first port of the egress packet forwarding engine to a second port of the ingress packet forwarding engine.

13. The method of claim 9 , wherein outputting the information comprises outputting metadata comprising the information to the ingress packet forwarding engine and refraining from outputting the network packet to the ingress packet forwarding engine.

14. The method of claim 13 , wherein outputting the metadata comprises outputting the metadata to the ingress packet forwarding engine using local switching.

15. The method of claim 9 ,

wherein enqueuing the network packet in the virtual output queue comprises enqueuing the network packet in a first portion of a combined buffer for the ingress packet forwarding engine and the egress packet forwarding engine that is assigned to the virtual output queue;

wherein dequeuing the network packet from the virtual output queue comprises dequeuing the network packet from the first portion of the combined buffer;

wherein enqueuing the network packet the network packet to the output queue comprises enqueuing the network packet in a second portion of the combined buffer assigned to the output queue; and

wherein dequeuing the network packet from the output queue comprises dequeuing the network packet from the second portion of the combined buffer.

16. An apparatus for switching network traffic, the apparatus comprising:

a plurality of interface cards;

an ingress packet forwarding engine implemented in circuitry and configured to:

determine, in response to receiving a network packet with the plurality of interface cards, an egress packet forwarding engine for outputting the network packet; and

enqueue the network packet in a virtual output queue for output to the egress packet forwarding engine;

the egress packet forwarding engine implemented in processing circuitry and comprising a scheduler configured to select an output port from a plurality of output ports at the egress packet forwarding engine and to determine a first scheduling event and a second scheduling event to regulate a speed at which data is exchanged from the apparatus, wherein the egress packet forwarding engine is configured to, in response to the first scheduling event, output, to the ingress packet forwarding engine, information indicating the network packet in the virtual output queue and that the network packet is to be enqueued at an output queue for the selected output port of the egress packet forwarding engine;

wherein the ingress packet forwarding engine is further configured to, in response to receiving the information:

dequeue the network packet from the virtual output queue; and

enqueue the network packet to the output queue; and

wherein the egress packet forwarding engine is further configured to, in response to the second scheduling event that is after the first scheduling event:

dequeue the network packet from the output queue; and

output, with the plurality of interface cards, the network packet at the selected output port.

17. The apparatus of claim 16 , wherein, to output the information, the egress packet forwarding engine is configured to output, to the ingress packet forwarding engine, the network packet with a header comprising the information.

18. The apparatus of claim 16 , wherein, to output the network packet with the header, the egress packet forwarding engine is configured to output the network packet with the header from a first port of the egress packet forwarding engine to a second port of the ingress packet forwarding engine.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 10, 2019
From: FRINK, CRAIG R.; XU, WEIDONG; GUPTA, ANURAG P; AGASHE, HARSHAD B
To: JUNIPER NETWORKS, INC.
Reel/Frame 051236/0872 →
Continuity (1)
Related Publication 20210176171A1 · Jun 10, 2021
Cited By (1)
US 12,744,749