IP Library Granted Patent US 10,079,695
Granted Patent B2
US 10,079,695 · App. 14/925,424 · Granted Sep 18, 2018

System and method for customizing packet processing order in networking devices

Inventor: Sankar Muthu Paramasivam (Santa Clara, CA)
Assignee: Citrix Systems, Inc.
H04L12/54H04L47/624H04L49/9005H04L67/28H04L61/1511H04L61/2514
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,079,695
App. No.
14/925,424
Granted
Sep 18, 2018
Kind
B2
Abstract

The present disclosure is directed to packet processing via reconfigurable packet processing system. A network device is configured to identify a processing order of multiple function units based on a first flow parameter of a first packet, execute a first function unit according to the processing order, update a processing status for the first packet to indicate processing by the first function unit is complete, and transmit the first packet responsive to determining from the processing status that the processing order has been completed. The network device is configured to receive a second packet including a second flow parameter, identify the second packet as a response packet of the first packet based on the first and second flow parameters, identify a reverse of the first processing order of the multiple function units, and execute a second function unit according to the reverse processing order.

Claims (89)

1. A method for reconfigurable packet processing, comprising:

receiving, by a network device, a first packet comprising a first flow parameter;

storing, by the network device, the received first packet to a first shared memory location;

identifying, by the network device, a first processing order of a plurality of function units executed by the network device based on the first flow parameter;

creating, by the network device, a first linked list including a first head node linked to a first node linked to a second node;

storing, by the network device, a processing status for the first packet by storing the first flow parameter in the first head node, storing a memory location of the first function unit in the first node, and storing a memory location of the second function unit in the second node;

executing, by the network device, a first function unit according to the first processing order, the first function unit reading the first packet from the first shared memory location and writing the first packet to the first shared memory location after processing the packet;

updating, by the network device, the processing status for the first packet to indicate processing by the first function unit is complete;

determining, by the network device from the processing status for the first packet, that the first processing order has not been completed;

executing, by the network device responsive to the determination that the first processing order has not been completed, a second function unit according to the first processing order, the second function unit reading the first packet from the first shared memory location and writing the first packet to the first shared memory location after processing the first packet;

updating, by the network device, the processing status for the first packet to indicate processing by the second function unit is complete; and

transmitting, by the network device, the first packet, responsive to determining from the processing status for the first packet that the first processing order has been completed.

2. The method of claim 1 , wherein:

identifying the first processing order based on the first flow parameter further comprises reading the first flow parameter from the first head node of the first linked list, and

executing the first function unit and the second function unit according to the first processing order further comprises traversing the first linked list from the first head node to the second node.

3. The method of claim 2 , further comprising:

adding, by the network device, a second head node to the first linked list linked to the second node; and

storing, by the network device, a second flow parameter of a response packet of the first packet, in the second head node.

4. The method of claim 3 , further comprising:

receiving, by the network device, a second packet comprising the second flow parameter, the second packet transmitted by a second device as a response to the first packet;

identifying, by the network device, the second packet as the response packet of the first packet based on the second flow parameter stored in the second head node;

storing, by the network device, a second processing status for the second packet;

executing the second function unit and the first function unit according to a second processing order by traversing the first linked list from the second head node to the first node;

updating, by the network device, the second processing status for the second packet to indicate processing by the first function unit and the second function unit is complete; and

transmitting, by the network device, the second packet, responsive to determining from the processing status for the second packet that the second processing order has been completed.

5. The method of claim 1 , further comprising:

identifying, by the network device, a second processing order of the plurality of function units, different from the first processing order, based on a second flow parameter of a second packet received by the network device, the second flow parameter being different from the first flow parameter.

6. The method of claim 1 , further comprising:

receiving, by a network device, a second packet comprising a second flow parameter, the second packet transmitted by a second device as a response to the first packet;

identifying, by the network device, the second packet as a response packet of the first packet based on the first flow parameter and the second flow parameter;

identifying, by the network device, based on the first flow parameter and the second flow parameter, a reverse of the first processing order of the plurality of function units executed by the network device as a second processing order;

storing, by the network device, a second processing status for the second packet;

executing, by the network device, the second function unit according to the second processing order;

updating, by the network device, the second processing status for the second packet to indicate processing by the second function unit according to the second processing order is complete; and

transmitting, by the network device, the second packet, responsive to determining from the processing status for the second packet that the second processing order has been completed.

7. The method of claim 6 , further comprising:

determining prior to transmitting the second packet, by the network device from the second processing status for the second packet, that the second processing order has not been completed;

executing, by the network device responsive to the determination that the second processing order has not been completed, the first function unit according to the second processing order; and

updating, by the network device, the second processing status for the second packet to indicate processing by the first function unit according to the second processing order is complete.

8. The method of claim 1 , wherein the first flow parameter of the first packet includes at least one selected from the group consisting of source IP address, source port, destination IP address, destination port and protocol.

9. A system for reconfigurable packet processing, comprising:

a network device having a shared memory, the network device being configured to:

receive a first packet comprising a first flow parameter;

store the received first packet to a first location in the shared memory;

identify a first processing order of a plurality of function units executed by the network device based on the first flow parameter;

create a first linked list including a first head node linked to a first node linked to a second node;

store a processing status for the first packet by storing the first flow parameter in the first head node, storing a memory location of the first function unit in the first node, and storing a memory location of the second function unit in the second node;

execute a first function unit according to the first processing order, the first function unit reading the first packet from the first shared memory location and writing the first packet to the first shared memory location after processing the packet;

update the processing status for the first packet to indicate processing by the first function unit is complete;

determine, from the processing status for the first packet, that the first processing order has not been completed;

execute, responsive to the determination that the first processing order has not been completed, a second function unit according to the first processing order, the second function unit reading the first packet from the first shared memory location and writing the first packet to the first shared memory location after processing the first packet;

update the processing status for the first packet to indicate processing by the second function unit is complete; and

transmit the first packet, responsive to determining from the processing status for the first packet that the first processing order has been completed.

10. The system of claim 9 , wherein the network device is further configured to:

read, when identifying the first processing order based on the first flow parameter, the first flow parameter from the first head node of the first linked list, and

traverse, when executing the first function unit and the second function unit according to the first processing order, the first linked list from the first head node to the second node.

11. The system of claim 10 , wherein the network device is further configured to:

add, prior to transmitting the first packet, a second head node to the first linked list such that the first head node is doubly linked to the first node, the first node is doubly linked to the second node, and the second head node is doubly linked to the second head node; and

store a second flow parameter of a response packet of the first packet, in the second head node.

12. The system of claim 11 , wherein the network device is further configured to:

receive a second packet comprising the second flow parameter, the second packet transmitted by a second device as a response to the first packet;

identify the second packet as the response packet of the first packet based on the second flow parameter stored in the second head node;

store a second processing status for the second packet;

execute the second function unit and the first function unit according to a second processing order by traversing the first linked list from the second head node to the first node;

update the second processing status for the second packet to indicate processing by the first function unit and the second function unit is complete; and

transmit the second packet, responsive to determining from the processing status for the second packet that the second processing order has been completed.

13. The system of claim 9 , wherein the network device is further configured to:

identify a second processing order of the plurality of function units, different from the first processing order, based on a second flow parameter of a second packet received by the network device, the second flow parameter being different from the first flow parameter.

14. The system of claim 9 , wherein the first flow parameter of the first packet includes at least one selected from the group consisting of source IP address, source port, destination IP address, destination port and protocol.

15. A system for reconfigurable packet processing, comprising:

a network device having a shared memory, the network device being configured to:

receive a first packet comprising a first flow parameter;

store the received first packet to a first location in the shared memory;

identify a first processing order of a plurality of function units executed by the network device based on the first flow parameter;

store a processing status for the first packet;

execute a first function unit according to the first processing order, the first function unit reading the first packet from the first shared memory location and writing the first packet to the first shared memory location after processing the packet;

update the processing status for the first packet to indicate processing by the first function unit is complete;

transmit the first packet, responsive to determining from the processing status for the first packet that the first processing order has been completed;

receive a second packet comprising a second flow parameter, the second packet transmitted by a second device as a response to the first packet;

identify the second packet as a response packet of the first packet based on the first flow parameter and the second flow parameter;

identify, based on the first flow parameter and the second flow parameter, a reverse of the first processing order of the plurality of function units executed by the network device as a second processing order;

store a second processing status for the second packet;

execute the second function unit according to the second processing order;

update the second processing status for the second packet to indicate processing by the second function unit according to the second processing order is complete; and

transmit the second packet, responsive to determining from the processing status for the second packet that the second processing order has been completed.

16. The system of claim 15 , wherein the network device is further configured to:

determine prior to transmitting the second packet, from the second processing status for the second packet, that the second processing order has not been completed;

execute, responsive to the determination that the second processing order has not been completed, the first function unit according to the second processing order; and

update the second processing status for the second packet to indicate processing by the first function unit according to the second processing order is complete.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2015
From: PARAMASIVAM, SANKAR MUTHU
To: CITRIX SYSTEMS, INC.
Reel/Frame 036904/0695 →
Continuity (1)
Related Publication 20170126549A1 · May 4, 2017