IP Library Granted Patent US 8,964,748
Granted Patent B2
US 8,964,748 · App. 12/475,450 · Granted Feb 24, 2015

Methods, systems, and computer readable media for performing flow compilation packet processing

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 8,964,748
App. No.
12/475,450
Granted
Feb 24, 2015
Kind
B2
Abstract

Methods, systems, and computer readable media for performing flow compilation packet processing are disclosed. In one embodiment, the method includes receiving a packet at a packet processing device and determining if the packet is associated with a packet flow previously processed at the packet processing device. If the received packet is determined to be associated with the packet flow, at least one database containing compiled flow programs is queried to locate a compiled flow program previously used to process the packet flow. The method also includes utilizing the located compiled flow program to process the received packet.

Claims (52)

1. A method for performing flow compilation packet processing, the method comprising:

receiving a packet at a packet processing device;

constructing a flow key for the received packet using at least a portion of packet header data of the received packet;

comparing the constructed flow key with a plurality of previously constructed flow keys associated with packet flows previously processed at the packet processing device in order to determine if the received packet is associated with one of the packet flows previously processed at the packet processing device;

if the received packet is determined not be associated with one of the packet flows, querying a policy database to identify a packet processing activity to be applied to the received packet, compiling a flow program that applies the packet processing activity to the packet, and using the flow key to store the compiled flow program in a flow program database in the packet processing device;

if the received packet is determined to be associated with one of the previously processed packet flows, using the flow key to query the flow program database containing compiled flow programs to locate the compiled flow program previously used to process the one of the previously processed packet flows in a manner that bypasses the use of the policy database and utilizing the located compiled flow program to process the received packet.

2. The method of claim 1 wherein utilizing the flow key includes determining if the flow key of the received packet matches a flow key of the at least one other packet, wherein the flow key of the at least one other packet is an entry in a flow key record database.

3. The method of claim 2 wherein if the packet is determined not to be associated with the at least one other packet previously processed at the packet processing device, determining a program to be applied to the received packet, compiling the program, associating the compiled program with the flow key, storing the flow key and the compiled program in a flow program database.

4. The method of claim 1 wherein constructing the flow key includes concatenating portions of the packet header data.

5. The method of claim 4 wherein the packet header data includes bits stored in an IP source address field, an IP destination address, an IP protocol field, a source port number field, and a destination port number field.

6. A method for performing flow compilation packet processing, the method comprising:

receiving a packet at a packet processing device;

constructing a flow key for the received packet using at least a portion of packet header data of the received packet;

comparing the constructed flow key with a plurality of previously constructed flow keys associated with packet flows previously processed at the packet processing device in order to determine if the received packet is associated with one of the packet flows previously processed at the packet processing device;

if the received packet is determined not be associated with one of the packet flows, querying a policy database to identify a packet processing activity to be applied to the received packet, compiling a flow program that applies the packet processing activity to the packet, and using the flow key to store the compiled flow program in a flow program database in the packet processing device;

if the received packet is determined to be associated with one of the previously processed packet flows, using the flow key to query the flow program database containing compiled flow programs to locate the compiled flow program previously used to process the one of the previously processed packet flows in a manner that bypasses the use of the policy database and utilizing the located compiled flow program to process the received packet, wherein a hash function is used to convert the flow key into a hash index to be used to query a hash table database.

7. The method of claim 6 wherein the hash function utilizes a cyclic redundancy check (CRC) algorithm.

8. A method for performing flow compilation packet processing, the method comprising:

receiving a packet at a packet processing device;

constructing a flow key for the received packet using at least a portion of packet header data of the received packet;

comparing the constructed flow key with a plurality of previously constructed flow keys associated with packet flows previously processed at the packet processing device in order to determine if the received packet is associated with one of the packet flows previously processed at the packet processing device;

if the received packet is determined not be associated with one of the packet flows, querying a policy database to identify a packet processing activity to be applied to the received packet, compiling a flow program that applies the packet processing activity to the packet, and using the flow key to store the compiled flow program in a flow program database in the packet processing device;

if the received packet is determined to be associated with one of the previously processed packet flows, using the flow key to query the flow program database containing compiled flow programs to locate the compiled flow program previously used to process the one of the previously processed packet flows in a manner that bypasses the use of the policy database and utilizing the located compiled flow program to process the received packet, wherein querying the flow program database is conducted without accessing a packet processing database.

9. A packet processing device for performing flow compilation packet processing, the packet processing device comprising:

a flow manager module for receiving a packet;

a control processor for:

constructing a flow key for the received packet by using at least a portion of packet header data of the received packet,

comparing the constructed flow key with a plurality of previously constructed flow keys associated with packet flows previously processed at the packet processing device in order to determine if the received packet is associated with one of the packet flows previously processed at the packet processing device,

querying, if the received packet is determined not be associated with one of the packet flows, a policy database to identify a packet processing activity to be applied to the received packet, compiling a flow program that applies the packet processing activity to the packet, and using the flow key to store the compiled flow program in a flow program database in the packet processing device,

using, if the received packet is determined to be associated with the one of the previously processed packet flows, the flow key to query the flow program database containing compiled flow programs to locate the compiled flow program previously used to process the one of the previously processed packet flows in a manner that bypasses the use of the policy database; and

a packet processing unit for utilizing the located compiled flow program to process the received packet.

10. The packet processing device of claim 9 wherein the control processor is further configured to determine if the flow key of the received packet matches a flow key of the at least one other packet, wherein the flow key of the at least one other packet is an entry in a flow key record database.

11. The packet processing device of claim 10 wherein the control processor is further configured to, if the packet is determined not to be associated with the at least one other packet previously processed at the packet processing device, determine a program to be applied to the received packet, compiling the program, associating the compiled program with the flow key, storing the flow key and the compiled program in a flow program database.

12. The packet processing device of claim 9 wherein the control processor is further configured to construct the flow key by concatenating portions of the packet header data.

13. The packet processing device of claim 12 wherein the packet header data includes at least a portion of an IP source address field, an IP destination address, an IP protocol field, a source port number field, and a destination port number field contained in a header of the received packet.

14. A packet processing device for performing flow compilation packet processing, the packet processing device comprising:

a flow manager module for receiving a packet;

a control processor for:

constructing a flow key for the received packet by using at least a portion of packet header data of the received packet,

comparing the constructed flow key with a plurality of previously constructed flow keys associated with packet flows previously processed at the packet processing device in order to determine if the received packet is associated with one of the packet flows previously processed at the packet processing device; and

querying, if the received packet is determined not be associated with one of the packet flows, a policy database to identify a packet processing activity to be applied to the received packet, compiling a flow program that applies the packet processing activity to the packet, and using the flow key to store the compiled flow program in a flow program database in the packet processing device,

using, if the received packet is determined to be associated with the one of the previously processed packet flows, the flow key to query the flow program database containing compiled flow programs to locate the compiled flow program previously used to process the one of the previously processed packet flows in a manner that bypasses the use of the policy database; and

a packet processing unit for utilizing the located compiled flow program to process the received packet, wherein the control processor is further adapted to utilize a hash function to convert the flow key into a hash index to be used to query a hash table database.

15. The packet processing device of claim 14 wherein the hash function utilizes a cyclic redundancy check (CRC) algorithm.

16. A packet processing device for performing flow compilation packet processing, the packet processing device comprising:

a flow manager module for receiving a packet;

a control processor for:

constructing a flow key for the received packet by using at least a portion of packet header data of the received packet,

comparing the constructed flow key with a plurality of previously constructed flow keys associated with packet flows previously processed at the packet processing device in order to determine if the received packet is associated with one of the packet flows previously processed at the packet processing device; and

querying, if the received packet is determined not be associated with one of the packet flows, a policy database to identify a packet processing activity to be applied to the received packet, compiling a flow program that applies the packet processing activity to the packet, and using the flow key to store the compiled flow program in a flow program database in the packet processing device,

using, if the received packet is determined to be associated with the one of the previously processed packet flows, the flow key to query the flow program database containing compiled flow programs to locate the compiled flow program previously used to process the one of the previously processed packet flows in a manner that bypasses the use of the policy database; and

a packet processing unit for utilizing the located compiled flow program to process the received packet, wherein the control processor is further configured to query the flow program database without accessing a packet processing database.

Assignments (10)
SHORT-FORM PATENTS SECURITY AGREEMENT Recorded Sep 5, 2024
From: RIBBON COMMUNICATIONS OPERATING COMPANY, INC.
To: HPS INVESTMENT PARTNERS, LLC, AS ADMINISTRATIVE AGENT
Reel/Frame 068857/0290 →
RELEASE OF SECURITY INTEREST Recorded Jun 24, 2024
From: CITIZENS BANK, N.A.
To: RIBBON COMMUNICATIONS OPERATING COMPANY, INC. (F/K/A GENBAND US LLC AND SONUS NETWORKS, INC.)
Reel/Frame 067822/0433 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 044978/0801 Recorded Dec 6, 2021
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: RIBBON COMMUNICATIONS OPERATING COMPANY, INC. (F/K/A GENBAND US LLC AND SONUS NETWORKS, INC.)
Reel/Frame 058949/0497 →
SECURITY INTEREST Recorded Mar 3, 2020
From: RIBBON COMMUNICATIONS OPERATING COMPANY, INC.
To: CITIZENS BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 052076/0905 →
SECURITY INTEREST Recorded Jan 2, 2018
From: GENBAND US LLC; SONUS NETWORKS, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 044978/0801 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT Recorded Dec 29, 2017
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: GENBAND US LLC
Reel/Frame 044986/0303 →
CORRECTIVE ASSIGNMENT TO CORRECT PATENT NO. 6381239 PREVIOUSLY RECORDED AT REEL: 039269 FRAME: 0234. ASSIGNOR(S) HEREBY CONFIRMS THE PATENT SECURITY AGREEMENT. Recorded Jan 3, 2017
From: GENBAND US LLC
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 041422/0080 →
RELEASE AND REASSIGNMENT OF PATENTS Recorded Jul 7, 2016
From: COMERICA BANK, AS AGENT
To: GENBAND US LLC
Reel/Frame 039280/0467 →
PATENT SECURITY AGREEMENT Recorded Jul 6, 2016
From: GENBAND US LLC
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 039269/0234 →
RELEASE OF SECURITY INTEREST Recorded Jan 10, 2014
From: ONE EQUITY PARTNERS III, L.P., AS COLLATERAL AGENT
To: GENBAND US LLC
Reel/Frame 031968/0955 →