IP Library Granted Patent US 12,335,162
Granted Patent B2
US 12,335,162 · App. 17/817,881 · Granted Jun 17, 2025

Hardware-implemented tables and methods of using the same for classification and collision resolution of data packets

Inventors: Tianan Tim Ma (Palo Alto, CA); Hong Kui Yang (Palo Alto, CA); Su-Lin Low (Palo Alto, CA); Hausting Hong (Palo Alto, CA)
Assignee: GREATER SHINE LIMITED
H04L47/6215H04L1/0045H04L47/2433
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 12,335,162
App. No.
17/817,881
Granted
Jun 17, 2025
Kind
B2
Abstract

Introduced here are approaches to classifying traffic that comprises data packets. For each data packet, a classification engine implemented on a computing device can identify an appropriate class from amongst multiple classes using a lookup table implemented in a memory. The memory could be, for example, static random-access memory (SRAM) as further discussed below. Moreover, the classification engine may associate an identifier with each data packet that specifies the class into which the data packet has been assigned. For example, each data packet could have an identifier appended thereto (e.g., in the form of metadata). Then, the data packets can be placed into queues based on the identifiers. Each queue may be associated with a different identifier (and thus a different class).

Claims (57)

1. A method comprising:

generating an n-tuple input by extracting n pieces of information from a header of a data packet,

wherein the n-tuple input is representative of a concatenated vector that includes the n pieces of information, n being greater than one;

applying a hash function to the n-tuple input to generate a hash code;

forming, based on the hash code, an index to a memory location that corresponds to an entry in a table, wherein the table is implemented in a first memory,

wherein the table includes a series of entries, each of which associates a given hash code with a given identifier; and

establishing, based on an identifier included in the entry, an appropriate traffic class from amongst multiple traffic classes to which to assign the data packet;

wherein the method further comprises:

determining, by a classification engine, that a collision has occurred responsive to discovering that a pair of data packets have been mapped to a single entry in the table;

generating, by the classification engine in response to said determining, a record that includes information regarding at least one of the pair of data packets; and

storing, by the classification engine, the record in a second memory.

2. The method of claim 1 , further comprising:

sorting the data packet into a queue that is associated with the appropriate traffic class.

3. The method of claim 1 , further comprising:

appending the identifier to the data packet in the form of metadata.

4. The method of claim 1 , wherein the table is implemented in static random-access memory (SRAM).

5. The method of claim 1 , wherein the n pieces of information specify an Internet Protocol (IP) source address, an IP destination address, a source port, a destination port, a protocol type, a class of service, or any combination thereof.

6. The method of claim 1 , wherein the hash function is a cyclic redundancy check (CRC).

7. The method of claim 1 , wherein the hash function is a tabulation hash function.

8. The method of claim 1 , wherein the identifier is a quality of service (QoS) flow identifier (QFI) that uniquely identifies a traffic flow of which the data packet is a part and that is to be assigned to the appropriate traffic class.

9. A method comprising:

generating, by a classification engine, hash codes by applying a hash function to data packets obtained by a computing device of which the classification engine is a part;

examining, by the classification engine, a table implemented in a first memory to identify, for each data packet, an entry that specifies (i) the corresponding hash code and (ii) an identifier that is representative of a traffic class; and

assigning, by the classification engine, the data packets to multiple traffic classes based on the corresponding identifiers;

wherein the method further comprises:

determining, by the classification engine, that a collision has occurred responsive to discovering that a pair of data packets have been mapped to a single entry in the table;

generating, by the classification engine in response to said determining, a record that includes information regarding at least one of the pair of data packets; and

storing, by the classification engine, the record in a second memory.

10. The method of claim 9 , wherein the record specifies the hash code and the identifier for whichever of the pair of data packets was processed second by the classification engine.

11. The method of claim 9 , wherein the first and second memories are different static random-access memories (SRAMs) implemented on a single integrated circuit.

12. The method of claim 9 , wherein the record is one of multiple parallel records regarding different collisions that are stored in a linear record.

13. The method of claim 9 , further comprising:

deriving, by the classification engine, an n-tuple input for each data packet that comprises n pieces of information,

wherein each hash code is generated by applying the hash function the n-tuple input derived for the corresponding data packet.

14. The method of claim 13 , further comprising:

determining, by the classification engine, that a collision has occurred responsive to discovering that a pair of n-tuple inputs have been mapped to a single entry in the table; and

addressing, by the classification engine in response to said determining, the collision by searching a linear record in a second memory.

15. The method of claim 14 , wherein the linear record includes multiple records of past collisions that are simultaneously allocated for searching by the classification engine.

16. The method of claim 9 , wherein the data packets are included in multiple traffic flows directed to the computing device.

17. A system comprising:

a processor;

a main memory that stores at least two parameters of a data packet; and

a classification engine that includes—

(i) a secondary memory programmed by the processor with a table that associates combinations of parameters with classification information, and

(ii) a register in which a cache of results of searches of the table is maintained, wherein the classification engine is configured to:

access the cache to determine whether a result of a search involving the at least two parameters is available,

retrieve the result from the cache responsive to a determination that the result is available, and

classify the data packet based on the result;

wherein the classification engine is further configured to:

determine a collision has occurred responsive to discovering that a pair of data packets have been mapped to a single entry in the table;

generate, in response to said determining, a record that includes information regarding at least one of the pair of data packets; and

store the record in the secondary memory.

18. The system of claim 17 , further comprising:

a direct memory access (DMA) controller configured to

(i) fetch the at least two parameters from the main memory prior to classification by the classification engine, and

(ii) push the at least two parameters to the main memory for storage following classification by the classification engine.

19. The system of claim 17 , wherein the secondary memory is a static random-access memory (SRAM) implemented on a same integrated circuit as the register.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2024
From: ZEKU TECHNOLOGY (SHANGHAI) CORP., LTD.
To: GREATER SHINE LIMITED
Reel/Frame 068805/0474 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2023
From: ZEKU, INC.
To: ZEKU TECHNOLOGY (SHANGHAI) CORP., LTD.
Reel/Frame 064429/0230 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2022
From: MA, TIANAN TIM; YANG, HONG KUI; LOW, SU-LIN; HONG, HAUSTING
To: ZEKU, INC.
Reel/Frame 060984/0364 →
Continuity (3)
Continuation PCTUS2021014945 · Jan 25, 2021
Provisional Application 62972757 · Feb 11, 2020
Related Publication 20220385593A1 · Dec 1, 2022
References Cited (30)
US 6226629B1 · Cossock · 2001 [cited by applicant]
US 6754662B1 · Li · 2004 [cited by examiner]
US 10103992B1 · Bshara · 2018 [cited by examiner]
US 20030135603A1 · Lin · 2003 [cited by applicant]
US 20050078601A1 · Moll et al. · 2005 [cited by applicant]
US 20080049752A1 · Grant · 2008 [cited by examiner]
US 20090274154A1 · Kopelman · 2009 [cited by examiner]
US 20100023726A1 · Aviles · 2010 [cited by examiner]
US 20100161787A1 · Jones · 2010 [cited by examiner]
US 20100284300A1 · Deshpande · 2010 [cited by examiner]
US 20100287227A1 · Goel · 2010 [cited by examiner]
US 20110219010A1 · Lim · 2011 [cited by examiner]
US 20110225372A1 · Pirog · 2011 [cited by applicant]
US 20130007008A1 · Yuan et al. · 2013 [cited by applicant]
US 20140075539A1 · Zuk et al. · 2014 [cited by applicant]
US 20150172143A1 · Degioanni et al. · 2015 [cited by applicant]
US 20160135074A1 · Welin · 2016 [cited by examiner]
US 20160197831A1 · De Foy et al. · 2016 [cited by applicant]
US 20160269290A1 · Chu · 2016 [cited by examiner]
US 20180246717A1 · Martin · 2018 [cited by examiner]
US 20180368047A1 · Patil · 2018 [cited by examiner]
US 20210399820A1 · Hoptroff · 2021 [cited by examiner]
CN 1534942A · 2004 [cited by applicant]
CN 107911315A · 2018 [cited by applicant]
CN 109754021A · 2019 [cited by applicant]
CN 110414928A · 2019 [cited by applicant]
WO WO2019164827A1 · 2019 [cited by examiner]
International Search Report and Written Opinion for PCT/US2021/014945, mailed Apr. 13, 2021 (10 pages). [cited by applicant]
Yin Ke, Deng Yaping, Tang Hong, Multidimensional IP Packet Classification Algorithm Based on Hash_tree; Computer Engineering and Application, No. 32, Aug. 1, 2007. (10 pages with English translation). [cited by applicant]
The first office action issued in corresponding CN application No. 202180014204.9 dated May 13, 2023. (18 pages with English translation). [cited by applicant]