IP Library Granted Patent US 12,495,005
Granted Patent B1
US 12,495,005 · App. 18/614,311 · Granted Dec 9, 2025

Programmable processing of network protocol packets

Inventors: John Hanel (Sunnyvale, CA); Balekudru Krishna (Sunyvale, CA)
Assignee: Chelsio Communications, Inc.
H04L47/35
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,495,005
App. No.
18/614,311
Granted
Dec 9, 2025
Kind
B1
Abstract

System and methods for processing state-based network packets are described herein. Processing of network protocol packets can include classifying events associated with the network protocol packet based on a current, internal protocol state and event type. The techniques may map these events to actions. For instance, the techniques may map these incoming events to specific indices within a TCAM. The indices may be used to lookup “actions” encoded within an SRAM. The system may utilize these actions to generate one or more outgoing messages as well as determine possible “next” state transitions. Accordingly, by utilizing contents of a TCAM and SRAM, the techniques may facilitate dynamic and flexible programmability of processing network protocol packets.

Claims (64)

1 . A method implemented by computer networking circuitry, the method comprising:

receiving, via a network connection, a network packet;

generating, based at least in part on the network packet and a current state of the network connection, an event key;

performing, by first memory, a first processing phase comprising:

determining, using the event key, whether the event key matches one or more conditions stored in the first memory;

generating, based on the event key and the one or more conditions, an index associated with the one or more conditions; and

outputting, by the first memory, the index to second memory; and

performing, by the second memory, a second processing phase comprising:

determining, based at least in part on the index, an opcode set comprising one or more actions;

generating, one or more messages associated with the one or more actions; and

transmitting the one or more messages to one or more recipients.

2 . The method of claim 1 , wherein the index is generated by a multiplexer of the first memory and represents a first index location within the first memory at which the event key matches a condition.

3 . The method of claim 1 , wherein generating the one or more messages comprises:

translating, using a demultiplexer of the second memory, the opcode set to generate one or more action types;

identifying, based on the one or more action types, one or more message types; and

generating the one or more messages based on the one or more message types.

4 . The method of claim 1 , wherein the first memory comprises a 3-state Ternary Content-Addressable Memory and the second memory comprises a Static Random Access Memory.

5 . The method of claim 1 , wherein determining whether the event key matches the one or more conditions stored in the first memory comprises comparing one or more key bits of the event key to one or more mask bits of the first memory, wherein the one or more mask bits represent the one or more conditions.

6 . The method of claim 1 , wherein the second memory comprises a plurality of index locations comprising respective opcode sets, each opcode set encoding one or more processing actions.

7 . The method of claim 6 , wherein the one or more processing actions comprise a first action opcode to generate a first message to a network, a second action opcode to generate a second message to a host device, or a third action opcode to generate a third message to update the current state of the network connection to a next state.

8 . The method of claim 1 , further comprising:

receiving first instructions to change a first condition of the one or more conditions in the first memory to a second condition; and

updating, in response to receiving the first instructions, the first condition to the second condition within the first memory.

9 . A system comprising:

one or more processors; and

one or more non-transitory computer-readable media storing instructions executable by the one or more processors, wherein the instructions program the one or more processors to perform operations comprising:

receiving, via a network connection, a network packet;

generating, based at least in part on the network packet and a current state of the network connection, an event key;

performing, by first memory, a first processing phase comprising:

determining, using the event key, whether the event key matches one or more conditions stored in the first memory;

generating, based on the event key and the one or more conditions, an index associated with the one or more conditions; and

outputting, by the first memory, the index to second memory; and

performing, by the second memory, a second processing phase comprising:

determining, based at least in part on the index, an opcode set comprising one or more actions;

generating, one or more messages associated with the one or more actions; and

transmitting the one or more messages to one or more recipients.

10 . The system of claim 9 , wherein the index is generated by a multiplexer of the first memory and represents a first index location within the first memory at which the event key matches a condition.

11 . The system of claim 9 , wherein generating the one or more messages comprises:

translating, using a demultiplexer of the second memory, the opcode set to generate one or more action types;

identifying, based on the one or more action types, one or more message types; and

generating the one or more messages based on the one or more message types.

12 . The system of claim 9 , wherein the first memory comprises a 3-state Ternary Content-Addressable Memory and the second memory comprises a Static Random Access Memory.

13 . The system of claim 9 , wherein determining whether the event key matches the one or more conditions stored in the first memory comprises comparing one or more key bits of the event key to one or more mask bits of the first memory, wherein the one or more mask bits represent the one or more conditions.

14 . The system of claim 9 , wherein the second memory comprises a plurality of index locations comprising respective opcode sets, each opcode set encoding one or more processing actions.

15 . The system of claim 14 , wherein the one or more processing actions comprise a first action opcode to generate a first message to a network, a second action opcode to generate a second message to a host device, or a third action opcode to generate a third message to update the current state of the network connection to a next state.

16 . The system of claim 9 , the operations further comprising:

receiving first instructions to change a first condition of the one or more conditions in the first memory to a second condition; and

updating, in response to receiving the first instructions, the first condition to the second condition within the first memory.

17 . One or more non-transitory computer-readable media maintaining instructions that, when executed by one or more processors, program the one or more processors to perform operations comprising:

receiving, via a network connection, a network packet;

generating, based at least in part on the network packet and a current state of the network connection, an event key;

performing, by first memory, a first processing phase comprising:

determining, using the event key, whether the event key matches one or more conditions stored in the first memory;

generating, based on the event key and the one or more conditions, an index associated with the one or more conditions; and

outputting, by the first memory, the index to second memory; and

performing, by the second memory, a second processing phase comprising:

determining, based at least in part on the index, an opcode set comprising one or more actions;

generating, one or more messages associated with the one or more actions; and

transmitting the one or more messages to one or more recipients associated with the network connection.

18 . The one or more non-transitory computer-readable media of claim 17 , wherein the index is generated by a multiplexer of the first memory and represents a first index location within the first memory at which the event key matches a condition.

19 . The one or more non-transitory computer-readable media of claim 17 , wherein the first memory comprises a 3-state Ternary Content-Addressable Memory and the second memory comprises a Static Random Access Memory.

20 . The one or more non-transitory computer-readable media of claim 17 , the operations further comprising:

receiving first instructions to change a first condition of the one or more conditions in the first memory to a second condition; and

updating, in response to receiving the first instructions, the first condition to the second condition within the first memory.

Assignments (3)
CHANGE OF NAME Recorded May 5, 2026
From: CHELSIO COMMUNICATIONS, INC.
To: SPEEDNIC LLC
Reel/Frame 075561/0001 →
RELEASE OF SECURITY INTEREST Recorded Dec 26, 2025
From: CSNK WORKING CAPITAL FINANCE CORP.
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 074070/0784 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2024
From: HANEL, JOHN; KRISHNA, BALEKUDRU
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 066877/0056 →
References Cited (7)
US 7957378B2 · Panigrahy · 2011 [cited by examiner]
US 12003422B1 · Baumann · 2024 [cited by examiner]
US 20060015645A1 · Ocko · 2006 [cited by examiner]
US 20220405120A1 · Weishaupt · 2022 [cited by examiner]
US 20230117644A1 · Kamisetty · 2023 [cited by examiner]
US 20230336465A1 · Lewin · 2023 [cited by examiner]
US 20240223353A1 · Raman · 2024 [cited by examiner]