System and method for supporting efficient virtual output queue (voq) packet flushing scheme in a networking device
US-2016191422-A1 · Jun 30, 2016 · US
US9942171B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9942171-B2 |
| Application number | US-201614989573-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jan 6, 2016 |
| Priority date | Jul 2, 2015 |
| Publication date | Apr 10, 2018 |
| Grant date | Apr 10, 2018 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Various embodiments of a virtual output queue system within a network element enables per-input port virtual output queues within a network data processor of the network element. In one embodiment, each port managed by a network data processor has an associated set of virtual output queues for each output port on the network data element. In one embodiment, network data processor hardware supports per-processor VOQs and per-input port VOQs are enabled in hardware for layer 3 forwarding by overloading layer 2 forwarding logic. In such embodiment, a mapping table is generated to enable virtual per-input port VOQs for layer 3 forwarding logic using layer 2 logic that is otherwise unused during layer 3 forwarding. In one embodiment, multiple traffic classes can be managed per-input port when using per-input port VOQs. In one embodiment, equal cost multi-path (ECMP) and link aggregation support is also enabled.
Opening claim text (preview).
What is claimed is: 1. A network element comprising: a first port to receive a unit of network data, the first port having a designated port data rate; a second port to transmit the unit of network data; a data plane coupled to the first port and the second port, the data plane to forward the unit of network data to the second port via a data pipeline, wherein the data pipeline to buffer the unit of network data in a per-input port virtual output queue (VOQ) associated with the first port and the second port when the designated port data rate is equal to or greater than a port data rate threshold associated with the first port and the data pipeline to buffer the unit of network data in a shared VOQ that is shared between multiple input ports when the designated port data rate is less than the port data rate threshold. 2. The network element as in claim 1 , wherein the data plane comprises a first forwarding engine coupled to the first port, the first forwarding engine including an ingress data pipeline to manage network data received from the first port. 3. The network element as in claim 2 , wherein the ingress data pipeline is to: determine that the unit of network data is to be forwarded to the second port via a network layer address of the network data; determine a port identifier associated with the second port; and insert the unit of network data into the per-input port VOQ defined at least in part by the first port and the port identifier associated with the second port. 4. The network element as in claim 3 , further comprising one or more traffic class VOQs for a traffic class supported by the network element, wherein the ingress data pipeline is further to insert the unit of network data into a traffic class VOQ based on the traffic class of the unit of network data. 5. The network element as in claim 4 , wherein the data plane further comprises a second forwarding engine coupled to the second port, the second forwarding engine including an egress data pipeline to manage network data transmitted to the second port. 6. The network element as in claim 5 , wherein the ingress data pipeline of the first forwarding engine is to request a scheduling credit for the unit of network data, the scheduling credit requested from the egress data pipeline of the second forwarding engine. 7. The network element as in claim 6 , wherein the egress data pipeline of the second forwarding engine is to grant the scheduling credit for the unit of network data based on a round robin scheduler. 8. The network element as in claim 7 , wherein the round robin scheduler is configured to schedule among different traffic classes of network data. 9. The network element as in claim 7 , wherein the round robin scheduler is a weighted round robin scheduler that is weighted at least in part based on a data rate of the first port. 10. The network element as in claim 9 , wherein the designated port data rate of the first port is one or more of 40 gigabits per second or 100 gigabits per second. 11. The network element as in claim 10 , wherein the egress data pipeline of the second forwarding engine is to grant at least twice as much credit to a 100 gigabits per second port relative to a 40 gigabits per second port. 12. The network element as in claim 10 , wherein the ingress data pipeline is to forward the unit of network data to the egress data pipeline after the scheduling credit is granted by the egress data pipeline. 13. A non-transitory machine-readable medium storing instructions which, when executed by one or more processing units of a network element, cause the one or more processing units to perform operations to forward network data, the operations comprising: receiving the network data at an ingress port of the network element, the ingress port having a designated ingress data rate; determining an egress port for the network data via a network layer data header; buffering the network data in a per-input port virtual output queue (VOQ) associated with each of the ingress port and the egress port when the designated ingress port data rate is equal to or greater than an ingress data rate threshold associated with the ingress port, wherein the VOQ is determined at least in part based on the egress port and the ingress port; and buffering the network data in a shared VOQ associated with each of the ingress port and the egress port, wherein the shared VOQ is shared between multiple ingress ports when the designated ingress port data is less than the ingress data rate threshold. 14. The medium as in claim 13 , further comprising buffering the network data in a per-traffic class, per-input port VOQ associated with each of the ingress port, the egress port, and a traffic class of the network data. 15. The medium as in claim 14 , wherein the designated port data rate threshold is at least 40 gigabits per second. 16. A system within a network element to forward network data, the system comprising: a first network data processor coupled to a first network interface, the first network data processor to forward network data received from the first network interface, the first network data processor further to: receive a unit of network data from a first port at the first network interface, the first port having a designated port data rate; determine a second port to forward the unit of network data based on a network layer address of the unit of network data; determine whether the designated port data rate is greater than or equal to a port data rate threshold associated with the first port; when the designated port data rate is equal to or greater than the port data rate threshold, determine a per-input virtual output queue (VOQ) associated with the combination of first and second port; and when the designated port data rate is less than the port data rate threshold, determine a shared VOQ associated with the combination of first and second port associated that is shared between multiple input ports. 17. The system as in claim 16 , further comprising a second network data processor coupled to a second network interface, the second network interface including the second port, wherein the second network data processor is to: receive a request for a scheduling credit from the first network data processor; and determine whether to grant the scheduling credit based on at least one of a status of an egress buffer associated with the second port and a weighted round robin scheduler, the weighted round robin scheduler weighted at least in part based on the data rate of the first port. 18. The system as in claim 17 , wherein the first port has a designated port data rate of one of 40 gigabytes per second and 100 gigabytes per second and the weighted round robin scheduler grants at least twice as much weight to the first port when the first port has a data rate of 100 gigabytes per second. 19. The system as in claim 17 , wherein the second network data processor is further to grant the scheduling credit to a separate VOQ for each active port on the first network data processor having a designated port data rate greater than or equal to the port data rate threshold and grant scheduling credit to a common VOQ for each port on the first network data processor having a data rate beneath the port data rate threshold.
Output queuing · CPC title
Fixed service order, e.g. Round Robin · CPC title
Virtual queuing · CPC title
Arrangements for avoiding head of line blocking · CPC title
Head of Line Blocking Avoidance · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.