IP Library Granted Patent US 10,911,377
Granted Patent B1
US 10,911,377 · App. 15/835,238 · Granted Feb 2, 2021

Using stateful traffic management data to perform packet processing

Inventors: Yi Li (Fremont, CA); Michael Feng (Mountain View, CA); Anurag Agrawal (Santa Clara, CA); Jeongkeun Lee (Mountain View, CA); Changhoon Kim (Palo Alto, CA); Remy Chang (Milpitas, CA)
Assignee: Barefoot Networks, Inc.
H04L49/3063H04L45/245H04L47/32H04L47/628H04L47/6255H04L49/109
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 10,911,377
App. No.
15/835,238
Filed
Dec 7, 2017
Granted
Feb 2, 2021
Kind
B1
Examiner
NOWLIN, ERIC
Art Unit
2474
USPC
370/235
Abstract

Some embodiments provide a method for an ingress packet processing pipeline of a network forwarding integrated circuit (IC). The ingress packet processing pipeline is for receiving packets from a port of the network forwarding IC and processing the packets to assign different packets to different queues of a traffic management unit of the network forwarding IC. The method receives state data from the traffic management unit. The method stores the state data in a stateful table. The method assigns a particular packet to a particular queue based on the state data received from the traffic management unit and stored in the stateful table.

Claims (33)

1. A method for an ingress packet processing pipeline of a network forwarding integrated circuit (IC), the ingress packet processing pipeline for receiving packets from a port of the network forwarding IC and processing the packets to assign different packets to different queues of a traffic management circuit of the network forwarding IC, the method comprising:

at the ingress packet processing pipeline:

receiving, at a parser, state data from the traffic management circuit, wherein the state data comprises an identifier for a particular queue and a depth of the particular queue;

storing, using at least one match-action stage of a plurality of match-action stages of the ingress packet processing pipeline, the state data in a stateful table of the ingress packet processing pipeline; and

assigning, using at least one match-action stage of a plurality of match-action stages of the ingress packet processing pipeline, a particular packet to one particular queue among a plurality of other queues of the traffic management circuit based on the state data received from the traffic management circuit and stored in the stateful table of the ingress packet processing pipeline, wherein the state data is separate from the particular packet.

2. The method of claim 1 , wherein the state data received from the traffic management circuit specifies an amount of data stored in the particular queue of the traffic management circuit.

3. The method of claim 2 , wherein the state data comprises an identifier for the particular queue and the amount of data stored in the particular queue, wherein storing the state data comprises storing the amount of data in an entry in the stateful table of the ingress packet processing pipeline that corresponds to the particular queue.

4. The method of claim 3 , further comprising mapping the identifier for the particular queue to the entry in the stateful table that corresponds to the particular queue.

5. The method of claim 1 , wherein receiving state data from the traffic management circuit comprises:

during a first clock cycle of the network forwarding IC, receiving a first set of state data relating to a first queue of the traffic management circuit; and

during a second clock cycle of the network forwarding IC, receiving a second set of state data relating to a second queue of the traffic management circuit.

6. The method of claim 5 , wherein the first set of state data for the first queue is stored in the stateful table during the second clock cycle.

7. The method of claim 1 , further comprising:

assigning a first packet with a particular set of characteristics to a first queue of the traffic management circuit before receiving the state data from the traffic management circuit; and

assigning a second packet with a same particular set of characteristics to a second queue of the traffic management circuit based on the received state data.

8. The method of claim 7 , wherein the state data indicates that the first queue stores more packet data than the second queue.

9. The method of claim 7 , wherein the first and second queues correspond to different ports of a Link Aggregation Group (LAG).

10. The method of claim 7 , wherein the first and second queues correspond to different equal-cost routing paths.

11. The method of claim 1 , wherein the particular packet is a first packet, the method further comprising dropping a second packet based on the received state data.

12. The method of claim 1 , wherein the state data received from the traffic management circuit comprises buffer usage statistics.

13. The method of claim 1 , comprising:

dropping, using at least one match-action stage of a plurality of match-action stages of the ingress packet processing pipeline, a received packet based on the particular queue being too full to hold the received packet.

14. A network forwarding integrated circuit (IC) comprising a set of packet processing pipelines and a traffic management circuit that comprises a plurality of queues, at least one of the packet processing pipelines comprising:

a parser configured to (i) extract packet data from packets received by the packet processing pipeline from a port of the network forwarding IC and (ii) receive state data from the traffic management circuit, wherein the state data comprises an identifier for a particular queue and a depth of the particular queue;

a set of match-action stages configured to (i) process the extracted packet data, (ii) store the state data received from the traffic management circuit in a stateful table, and (iii) assign a particular packet to a single particular queue among multiple other queues of the traffic management circuit based on the extracted packet data and the state data received from the traffic management circuit and stored in the stateful table, wherein the state data is separate from the particular packet; and

a deparser to reconstruct the particular packet using the processed packet data before sending the particular packet to the assigned particular queue.

15. The network forwarding IC of claim 14 , wherein the state data received from the traffic management circuit is to specify an amount of data stored in the particular queue of the traffic management circuit.

16. The network forwarding IC of claim 15 , wherein the state data comprises an identifier for the particular queue and the amount of data stored in the particular queue, wherein the amount of data is stored in an entry in the stateful table that corresponds to the particular queue.

17. The network forwarding IC of claim 14 , wherein a first match-action stage is configured to store the state data in a stateful table and a second match-action stage is configured to assign the particular packet solely to the particular queue among multiple queues of the traffic management circuit.

18. The network forwarding IC of claim 17 , wherein the first match-action stage is configured to retrieve the stored state data from the stateful table and store the state data in a data container that is passed to the second match-action stage.

19. The network forwarding IC of claim 14 , wherein the parser is to receive state data relating to a first queue during a first clock cycle of the network forwarding IC and is to receive state data relating to a second queue during a second clock cycle of the network forwarding IC.

20. The network forwarding IC of claim 19 , wherein the state data for the first queue is stored in the stateful table during the second clock cycle.

21. The network forwarding IC of claim 14 , wherein the particular packet is a first packet, wherein the set of match-action stages are further configured to drop a second packet based on the state data received from the traffic management circuit.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Sep 20, 2019
From: SILICON VALLEY BANK
To: BAREFOOT NETWORKS, INC.
Reel/Frame 050455/0455 →
RELEASE OF SECURITY INTEREST Recorded Sep 20, 2019
From: SILICON VALLEY BANK
To: BAREFOOT NETWORKS, INC.
Reel/Frame 050455/0497 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 25, 2019
From: BAREFOOT NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 049588/0001 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 25, 2019
From: BAREFOOT NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 049588/0112 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2018
From: LI, YI; FENG, MICHAEL; AGRAWAL, ANURAG; LEE, JEONGKEUN; KIM, CHANGHOON; CHANG, REMY
To: BAREFOOT NETWORKS, INC.
Reel/Frame 046808/0402 →