IP Library Granted Patent US 10,659,373
Granted Patent B2
US 10,659,373 · App. 15/978,132 · Granted May 19, 2020

Processing packets according to hierarchy of flow entry storages

Inventors: Teemu Koponen (San Francisco, CA); Andy Zhou (Gilroy, CA); Benjamin L. Pfaff (Redwood City, CA); Justin Pettit (Los Altos Hills, CA)
Assignee: NICIRA, INC
H04L47/2441G06F12/0811G06F12/128H04L45/02H04L45/64H04L45/745H04L47/827H04L49/9042G06F12/12G06F2212/283G06F2212/70H04L45/38
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,659,373
App. No.
15/978,132
Granted
May 19, 2020
Kind
B2
Abstract

Some embodiments provide a method for processing a packet received by a managed forwarding element. The method performs a series of packet classification operations based on header values of the received packet. The packet classifications operations determine a next destination of the received packet. When the series of packet classification operations specifies to send the packet to a network service that performs payload transformations on the packet, the method (1) assigns a service operation identifier to the packet that identifies the service operations for the network service to perform on the packet, (2) sends the packet to the network service with the service operation identifier, and (3) stores a cache entry for processing subsequent packets without the series of packet classification operations. The cache entry includes the assigned service operation identifier. The network service uses the assigned service operation identifier to process packets without performing its own classification operations.

Claims (46)

1. A non-transitory machine readable medium storing a program for execution by at least one hardware processing unit, the program for implementing a managed forwarding element, the program comprising sets of instructions for:

storing, in a flow-entry first storage, a first set of flow entries provided by a network controller;

based on processing a first packet by reference to a first flow entry in the first set of flow entries stored in the flow-entry first storage, generating a second flow entry for processing packets sharing a first set of attributes with the first packet and storing the second flow entry with a second set of flow entries in an aggregate-cache second storage;

processing a subsequent, second packet that shares the first set of attributes with the first packet by reference to the second flow entry stored in the aggregate-cache second storage without examining the flow-entry first storage; and

based on processing the second packet by reference to the second flow entry, generating a third flow entry for processing packets that share a second set of attributes with the second packet and storing the generated third flow entry with a third set of flow entries in an exact-match cache third storage.

2. The non-transitory machine readable medium of claim 1 , wherein the program further comprises sets of instructions for:

upon receiving the first packet, first examining the exact-match cache third storage to identify a flow entry that matches the first packet;

when no flow entries in the exact-match cache third storage match the first packet, examining the aggregate-cache second storage for a flow entry that matches the first packet; and

when no flow entries in the exact-match cache third storage or the aggregate-cache second storage match the first packet, processing the first packet by reference to the first flow entry in the flow-entry first storage.

3. The non-transitory machine readable medium of claim 1 , wherein:

a plurality of flow entries in the aggregate-cache second storage have wildcard values; and

at least one flow entry in the aggregate-cache second storage with a set of one or more wildcarded values matches at least two different packet flows.

4. The non-transitory machine readable medium of claim 1 , wherein a plurality of flow entries in the exact-match cache third storage are flow entries that match only one packet flow.

5. The non-transitory machine readable medium of claim 1 , wherein the first set of attributes for the second flow entry match at least two different sets of header values of two different packet flows, while the second set of attributes for the third flow entry matches only the header values of the second packet and packets that belong to a same packet flow as the second packet.

6. The non-transitory machine readable medium of claim 1 wherein:

the program executes on a host computer along with a plurality of compute node machines; and

the flow-entry first storage is a managed forwarding element (MFE) component in a user-space of the host computer, while the aggregate-cache second storage and the exact-match third storage are MFE components in a kernel space of the host computer.

7. The non-transitory machine readable medium of claim 1 , wherein;

the flow-entry first storage comprises a plurality of flow tables for a plurality of successive stages of packet processing; and

the first packet is processed by reference to at least two flow entries in two flow tables, the two flow entries including the first flow entry.

8. The non-transitory machine readable medium of claim 1 , wherein each of a plurality of flow entries in the flow entry first storage, the aggregate-cache second storage, and the exact-match cache third storage specifies a forwarding operation that is to be applied to a packet that matches the flow entry.

9. The non-transitory machine readable medium of claim 8 , wherein each of a plurality of flow entries in the flow entry first storage, the aggregate-cache second storage, and the exact-match cache third storage specifies a service operation that is to be applied to a packet that matches the flow entry.

10. The non-transitory machine readable medium of claim 1 , wherein each of a plurality of flow entries in the flow entry first storage, the aggregate-cache second storage, and the exact-match cache third storage specifies a forwarding operation and a service operation that are to be applied to a packet that matches the flow entry.

11. A method for implementing a managed forwarding element, the method comprising:

storing, in a flow-entry first storage, a first set of flow entries provided by a network controller;

based on processing a first packet by reference to a first flow entry in the first set of flow entries stored in the flow-entry first storage, generating a second flow entry for processing packets sharing a first set of attributes with the first packet and storing the second flow entry with a second set of flow entries in an aggregate-cache second storage;

processing a subsequent, second packet that shares the first set of attributes with the first packet by reference to the second flow entry stored in the aggregate-cache second storage without examining the flow-entry first storage; and

based on processing the second packet by reference to the second flow entry, generating a third flow entry for processing packets that share a second set of attributes with the second packet and storing the generated third flow entry with a third set of flow entries in an exact-match cache third storage.

12. The method of claim 11 , wherein the method further comprises:

upon receiving the first packet, examining the exact-match cache third storage to identify a flow entry that matches the first packet;

when no flow entries in the exact-match cache third storage match the first packet, examining the aggregate-cache second storage for a flow entry that matches the first packet; and

when no flow entries in the exact-match cache third storage or the aggregate-cache second storage match the first packet, processing the first packet by reference to the first flow entry in the flow-entry first storage.

13. The method of claim 11 , wherein:

a plurality of flow entries in the aggregate-cache second storage have wildcard values; and

at least one flow entry in the aggregate-cache second storage with a set of one or more wildcarded values matches at least two different packet flows.

14. The method of claim 11 , wherein a plurality of flow entries in the exact-match cache third storage are flow entries that match only one packet flow.

15. The method of claim 11 , wherein the first set of attributes for the second flow entry match at least two different sets of header values of two different packet flows, while the second set of attributes for the third flow entry matches only the header values of the second packet and packets that belong to a same packet flow as the second packet.

16. The method of claim 11 , wherein:

the managed forwarding element (MFE) executes on a host computer along with a plurality of compute node machines; and

the flow-entry first storage is a managed forwarding element (MFE) component in a user-space of the host computer, while the aggregate-cache second storage and the exact-match third storage are MFE components in a kernel space of the host computer.

17. The method of claim 11 , wherein;

the flow-entry first storage comprises a plurality of flow tables for a plurality of successive stages of packet processing; and

the first packet is processed by reference to at least two flow entries in two flow tables, the two flow entries including the first flow entry.

18. The method of claim 11 , wherein each of a plurality of flow entries in the flow entry first storage, the aggregate-cache second storage, and the exact-match cache third storage specifies a forwarding operation that is to be applied to a packet that matches the flow entry.

19. The method of claim 18 , wherein each of a plurality of flow entries in the flow entry first storage, the aggregate-cache second storage, and the exact-match cache third storage specifies a service operation that is to be applied to a packet that matches the flow entry.

20. The method of claim 11 , wherein each of a plurality of flow entries in the flow entry first storage, the aggregate-cache second storage, and the exact-match cache third storage specifies a forwarding operation and a service operation that are to be applied to a packet that matches the flow entry.

Assignments (2)
MERGER Recorded Jan 27, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070187/0487 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2019
From: PETTIT, JUSTIN; KOPONEN, TEEMU; ZHOU, ANDY; PFAFF, BENJAMIN L.
To: NICIRA, INC.
Reel/Frame 049947/0616 →