IP Library Granted Patent US 9,894,188
Granted Patent B2
US 9,894,188 · App. 14/839,866 · Granted Feb 13, 2018

Packet data restoration for flow-based forwarding element

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 9,894,188
App. No.
14/839,866
Granted
Feb 13, 2018
Kind
B2
Abstract

Some embodiments provide a method for preserving temporary storage values of a packet processed by a managed forwarding element (MFE. While processing a packet at the MFE, the method identifies that the packet is to be recirculated as a new packet for the MFE. A set of packet field values used for processing the packet by the MFE are associated with the packet. The method stores the set of packet field values with an identifier value. The method recirculates the packet with the identifier value attached to the packet. Upon receiving the recirculated packet, the method uses the identifier value to restore the set of packet field values for the recirculated packet.

Claims (42)

1. A method for preserving temporary storage values of a packet processed by a managed forwarding element (MFE), the method comprising:

while processing a packet at the MFE, determining that the packet does not match any cache entries of the MFE;

sending the packet to a processing module of the MFE for processing the packet through a plurality of stages of tables;

at the processing module, identifying that the packet is to be recirculated as a new packet for the MFE, wherein a set of packet field values used for processing the packet by the MFE are associated with the packet;

storing the set of packet field values with an identifier value;

recirculating the packet with the identifier value attached to the packet; and

upon receiving the recirculated packet, using the identifier value to restore the set of packet field values for the recirculated packet.

2. The method of claim 1 further comprising, when the packet is initially received, assigning a default identifier value to the packet.

3. The method of claim 1 , wherein the MFE is a flow-based MFE, the cache entries are flow entries in a kernel cache of the MFE, and the processing module is a user space processing module of the MFE.

4. The method of claim 1 , wherein the set of packet field values comprises a set of values not part of the packet as received that are used during the plurality of stages of processing, the method further comprising, prior to the identifying:

creating an initial set of packet field values for the packet; and

while processing the packet through the plurality of stages of user space processing, modifying the set of packet field values for the packet.

5. The method of claim 4 , wherein the stored set of packet field values for the packet comprises the initial set of packet field values as modified by the processing of the packet.

6. The method of claim 4 , wherein recirculating the packet comprises again determining whether the packet matches any cache entries.

7. The method of claim 6 further comprising, after recirculating the packet:

determining that the packet again does not match any cache entries of the MFE; and

sending the packet again to the processing module of the MFE for processing through the stages of tables,

wherein using the identifier value to restore the set of packet field values is performed after sending the packet again to the processing module.

8. The method of claim 1 , wherein the set of packet field values comprises a plurality of metadata and register field values.

9. The method of claim 1 further comprising sending the packet to a connection tracking module that appends stateful information to the packet prior to recirculating the packet.

10. The method of claim 1 further comprising sending the packet for Multi-Protocol Label Switching (MPLS) processing prior to recirculating the packet.

11. A non-transitory machine readable medium storing a program which when executed by at least one processing unit implements a managed forwarding element (MFE), the program comprising sets of instructions for:

while processing a packet at the MFE, determining that the packet does not match any cache entries of the MFE;

sending the packet to a processing module of the MFE for processing the packet through a plurality of stages of tables;

at the processing module, identifying that the packet is to be recirculated as a new packet for the MFE, wherein a set of packet field values used for processing the packet by the MFE are associated with the packet;

storing the set of packet field values with an identifier value;

recirculating the packet with the identifier value attached to the packet; and

upon receiving the recirculated packet, using the identifier value to restore the set of packet field values for the recirculated packet.

12. The non-transitory machine readable medium of claim 11 , wherein the program further comprises a set of instructions for assigning a default identifier value to the packet when the packet is initially received.

13. The non-transitory machine readable medium of claim 11 , wherein the MFE is a flow-based MFE, the cache entries are flow entries in a kernel cache of the MFE, and the processing module is a user space processing module of the MFE.

14. The non-transitory machine readable medium of claim 11 , wherein the set of packet field values comprises a set of values not part of the packet as received that are used during the plurality of stages of processing, the program further comprising sets of instructions for, prior to the execution of the set of instructions for identifying:

creating an initial set of packet field values for the packet; and

while processing the packet through the plurality of stages of user space processing, modifying the set of packet field values for the packet.

15. The non-transitory machine readable medium of claim 14 , wherein the stored set of packet field values for the packet comprises the initial set of packet field values as modified by the processing of the packet.

16. The non-transitory machine readable medium of claim 14 , wherein the set of instructions for recirculating the packet comprises a set of instructions for again determining whether the packet matches any cache entries.

17. The non-transitory machine readable medium of claim 16 , wherein the program further comprises sets of instructions for, after recirculating the packet:

determining that the packet again does not match any cache entries of the MFE; and

sending the packet again to the processing module of the MFE for processing through the stages of tables,

wherein the set of instructions for using the identifier value to restore the set of packet field values is performed after the set of instructions for sending the packet again to the processing module.

18. The non-transitory machine readable medium of claim 11 , wherein the set of packet field values comprises a plurality of metadata and register field values.

19. The non-transitory machine readable medium of claim 11 , wherein the program further comprises a set of instructions for sending the packet to a connection tracking module that appends stateful information to the packet prior to recirculating the packet.

20. The non-transitory machine readable medium of claim 11 , wherein the program further comprises a set of instructions for sending the packet for Multi-Protocol Label Switching (MPLS) processing prior to recirculating the packet.

Assignments (2)
MERGER Recorded Jan 27, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070187/0487 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 16, 2017
From: PETTIT, JUSTIN; RAJAHALME, JARNO
To: NICIRA, INC.
Reel/Frame 043874/0947 →