Network data processor having per-input port virtual output queues

US10708197B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10708197-B2
Application numberUS-201815916144-A
CountryUS
Kind codeB2
Filing dateMar 8, 2018
Priority dateJul 2, 2015
Publication dateJul 7, 2020
Grant dateJul 7, 2020

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

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.

First claim

Opening claim text (preview).

What is claimed is: 1. A network element comprising: a first port to receive a first set of network data, wherein units of the first set of network data belong to a plurality of traffic classes; a second port to transmit the first set of network data; and a data plane coupled to the first port and the second port, the data plane to forward the units of the first set of network data to the second port via a data pipeline, wherein the data pipeline to buffer the units of the first set of network data in a plurality of traffic class virtual output queues (VOQs) based on at least the traffic class of the unit of network data and each of the plurality of traffic class VOQs corresponds to a different one of the plurality of traffic classes, and wherein the data pipeline is further to: buffer a unit of the first set of network data in a traffic class VOQ associated with the first port and the second port when a designated port data rate of the first port is equal to or greater than a port data rate threshold associated with the first port. 2. The network element as in claim 1 , further comprising: a third port to receive a second set of network data; a fourth port to transmit the second set of network data, the data plane to forward the second set of network data to the fourth port via the data pipeline, wherein the data pipeline to buffer the second set of network data in a shared traffic class VOQ that is shared with a fifth port. 3. The network element as in claim 2 , wherein the second and fourth ports are the same port. 4. 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. 5. The network element as in claim 4 , wherein the ingress data pipeline is to: for each unit of network data in the first set of network data, determine that this 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 corresponding traffic class VOQ defined at least in part by the first port, the port identifier associated with the second port, and the traffic class of the unit of network data. 6. 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. 7. The network element as in claim 6 , wherein the ingress data pipeline of the first forwarding engine is to request a scheduling credit for one of the units of first set of network data, the scheduling credit requested from the egress data pipeline of the second forwarding engine. 8. The network element as in claim 7 , wherein the egress data pipeline of the second forwarding engine is to grant the scheduling credit for the one of the units of the first set of network data based on a round robin scheduler. 9. The network element as in claim 8 , wherein the round robin scheduler is configured to schedule among different traffic classes of network data. 10. The network element as in claim 8 , wherein the round robin scheduler is a weighted round robin scheduler. 11. The network element as in claim 7 , wherein the ingress data pipeline is to forward the one of the units of first set of network data to the egress data pipeline after the scheduling credit is granted by the egress data pipeline. 12. 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 a first set of network data, the operations comprising: receiving the first set of network data at a first ingress port of the network element, wherein units of the first set of network data belong to a plurality of traffic classes; determining an egress port for the first set of network data via a network layer data header; and buffering the units of the first set of network data in a plurality of traffic class virtual output queue (VOQ) associated with each of the first ingress port and the egress port, wherein the traffic class VOQ is determined at least in part based on the egress port and the first ingress port and each of the plurality of traffic class VOQs is associated with a different one of the plurality of traffic classes, and wherein the data pipeline is further to: buffer a unit of the first set of network data in a traffic class VOQ associated with the first port and the second port when a designated port data rate of the first port is equal to or greater than a port data rate threshold associated with the first port. 13. The non-transitory machine-readable medium as in claim 12 , further comprising: receiving a second set of network data at a second ingress port; and buffering the second set of network data in a shared traffic class VOQ that is shared with a third ingress port. 14. The non-transitory machine-readable medium as in claim 12 , further comprising: requesting a scheduling credit for one of the units of first set of network data, the scheduling credit requested from an egress data pipeline of the network element. 15. The non-transitory machine-readable medium as in claim 14 , further comprising: granting the scheduling credit for the one of the units of the first set of network data based on a round robin scheduler. 16. The non-transitory machine-readable medium as in claim 15 , wherein the round robin scheduler is configured to schedule among different traffic classes of network data. 17. 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 set of network data from a first port at the first network interface, wherein units of the set of network data belong to a plurality of traffic classes; determine a second port to forward the units of the set of network data based on a network layer address of the units of the set of network data; buffer the units of the set of network data in a plurality of traffic class virtual output queues (VOQs) associated with each of the first ingress port and the egress port, wherein a traffic class VOQ for a unit of the set of network data is determined at least in part based on the first and second ports and each of the plurality of traffic class VOQs is associated with a different one of the plurality of traffic classes, and wherein the data pipeline is further to: buffer a unit of the first set of network data in a traffic class VOQ associated with the first port and the second port when a designated port data rate of the first port is equal to or greater than a port data rate threshold associated with the first port. 18. The system as in claim 17 , 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 ro

Assignees

Inventors

Classifications

  • Arrangements for avoiding head of line blocking · CPC title

  • Output queuing · CPC title

  • Virtual queuing · CPC title

  • Head of Line Blocking Avoidance · CPC title

  • Fixed service order, e.g. Round Robin · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10708197B2 cover?
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 suppo…
Who is the assignee on this patent?
Arista Networks Inc
What technology area does this patent fall under?
Primary CPC classification H04L49/3045. Mapped technology areas include Electricity.
When was this patent published?
Publication date Tue Jul 07 2020 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).