IP Library Granted Patent US 10,965,601
Granted Patent B2
US 10,965,601 · App. 16/110,909 · Granted Mar 30, 2021

Sender side assisted flow classification

Inventors: Wenyi Jiang (Palo Alto, CA); Guolin Yang (San Jose, CA); Boon Seong Ang (Saratoga, CA); Ying Gross (San Francisco, CA)
Assignee: VMware, Inc.
H04L47/2441G06F9/45558H04L45/741H04L47/2483H04L69/22G06F2009/45595
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,965,601
App. No.
16/110,909
Granted
Mar 30, 2021
Kind
B2
Abstract

A method for a sender side assisted flow classification is disclosed. In an embodiment, a method comprises detecting a packet by a network virtualization layer engine implemented in a hypervisor on a sender side of a virtualization computer system; and determining, by the network virtualization layer engine, whether the packet requires special processing. In response to determining that the packet requires special processing, a special processing flag is inserted in a certain field of an outer header of the packet; and the packet is forwarded toward a destination of the packet for a PNIC on a receiver side to process the packet.

Claims (58)

1. A method for a sender side assisted flow classification, the method comprising:

receiving a packet;

parsing an outer header of the packet to determine whether a special processing flag has been inserted in a certain field of an outer header of the packet;

in response to determining that the special processing flag has been inserted in the certain field of the outer header of the packet, copying an entirety of the packet including outer headers of the packet from memory of a physical network interface card (“PNIC”) to a virtualization stack of a hypervisor;

in response to determining that the special processing flag has not been inserted in the certain field of the outer header of the packet;

decapsulating the packet to obtain an inner packet; and

copying the inner packet from the memory of the PNIC to either a guest virtual machine or the virtualization stack of the hypervisor.

2. The method of claim 1 , further comprising:

detecting the packet by a network virtualization layer engine implemented in a second hypervisor on a sender side of a virtualization computer system;

determining, by the network virtualization layer engine, whether the packet requires special processing;

in response to determining that the packet requires special processing, inserting the special processing flag in the certain field of the outer header of the packet; and

forwarding the packet toward a destination of the packet.

3. The method of claim 1 , wherein the special processing flag is inserted in a particular bit of an identification field of an IPv4 outer header.

4. The method of claim 1 , wherein the special processing flag is inserted in a particular bit of a flow label field of an IPv6 outer header.

5. The method of claim 2 , wherein the determining whether the packet requires the special processing comprises receiving instructions, from a local control plane, that the packet needs to be specially processed;

wherein the special processing includes one or more of: a multicast tunnel endpoint (“MTEP”) replication, flow tracing, DHCP snooping, aging MAC addresses learned on a tunnel endpoint (“TEP”), or pre-programing a virtualization processing offload for the packet; and

wherein the special processing is encoded in the packet in a variable length option field of a Geneve header of the packet, or in a Layer 7 payload of the packet.

6. The method of claim 2 , further comprising: in response to determining that the packet does not require special processing, forwarding the packet toward the destination of the packet.

7. The method of claim 2 , wherein the network virtualization layer engine is a data-path component configured to identify packets that require special processing based on one or more of: content of: destination MAC addresses of the packets, rules defined for the packets, or configuration instructions defined for the packets in control planes.

8. One or more non-transitory computer-readable storage media storing one or more computer instructions which, when executed by one or more processors, cause the one or more processors to perform:

causing a physical network interface card (“PNIC”) on a receiver side of a virtualization computer system to perform:

receiving a packet;

parsing an outer header of the packet to determine whether a special processing flag has been inserted in a certain field of an outer header of the packet;

in response to determining that the special processing flag has been inserted in the certain field of the outer header of the packet, copying an entirety of the packet including outer headers of the packet from memory of the PNIC to a virtualization stack of a hypervisor;

in response to determining that the special processing flag has not been inserted in the certain field of the outer header of the packet:

decapsulating the packet to obtain an inner packet; and

copying the inner packet from the memory of the PNIC to either a guest virtual machine or the virtualization stack of the hypervisor.

9. The one or more non-transitory computer-readable storage media of claim 8 , comprising additional instructions which, when executed by the one or more processors, cause the one or more processors to perform:

detecting the packet by a network virtualization layer engine implemented in a hypervisor on a sender side of the virtualization computer system;

determining, by the network virtualization layer engine, whether the packet requires special processing;

in response to determining that the packet requires special processing, inserting a special processing flag in a certain field of an outer header of the packet; and

forwarding the packet toward a destination of the packet.

10. The one or more non-transitory computer-readable storage media of claim 8 , wherein the special processing flag is inserted in a particular bit of an identification field of an IPv4 outer header.

11. The one or more non-transitory computer-readable storage media of claim 8 , wherein the special processing flag is inserted in a particular bit of a flow label field of an IPv6 outer header.

12. The one or more non-transitory computer-readable storage media of claim 9 , comprising additional instructions which, when executed by the one or more processors, cause the one or more processors to perform:

receiving instructions, from a local control plane, that the packet needs to be specially processed;

wherein the special processing includes one or more of: a multicast tunnel endpoint (“MTEP”) replication, flow tracing, DHCP snooping, aging MAC addresses learned on a tunnel endpoint (“TEP”), or pre-programing a virtualization processing offload for the packet; and

wherein the special processing is encoded in the packet in a variable length option field of a Geneve header of the packet, or in a Layer 7 payload of the packet.

13. The one or more non-transitory computer-readable storage media of claim 9 , comprising additional instructions which, when executed by the one or more processors, cause the one or more processors to perform: in response to determining that the packet does not require special processing, forwarding the packet toward the destination of the packet.

14. The one or more non-transitory computer-readable storage media of claim 9 , wherein the network virtualization layer engine is a data-path component configured to identify packets that require special processing based on one or more of: content of: destination MAC addresses of the packets, rules defined for the packets, or configuration instructions defined for the packets in control planes.

15. A hypervisor comprising:

one or more processors;

one or more memory units; and

one or more non-transitory computer-readable storage media storing one or more computer instructions which, when executed by the one or more processors, cause the one or more processors to perform:

receiving a packet;

parsing an outer header of the packet to determine whether a special processing flag has been inserted in a certain field of an outer header of the packet;

in response to determining that the special processing flag has been inserted in the certain field of the outer header of the packet, copying an entirety of the packet including outer headers of the packet from memory of a physical network interface card (“PNIC”) to a virtualization stack of the hypervisor;

in response to determining that the special processing flag has not been inserted in the certain field of the outer header of the packet:

decapsulating the packet to obtain an inner packet; and

copying the inner packet from the memory of the PNIC to either a guest virtual machine or the virtualization stack of the hypervisor.

16. The hypervisor of claim 15 ,

wherein the special processing flag is inserted in the certain field of the outer header of the packet in response to determining that the packet requires special processing.

17. The hypervisor of claim 15 , wherein the special processing flag is inserted in a particular bit of an identification field of an IPv4 outer header.

18. The hypervisor of claim 15 , wherein the special processing flag is inserted in a particular bit of a flow label field of an IPv6 outer header.

19. The hypervisor of claim 15 ,

wherein the special processing includes one or more of: a multicast tunnel endpoint (“MTEP”) replication, flow tracing, DHCP snooping, aging MAC addresses learned on a tunnel endpoint (“TEP”), or pre-programing a virtualization processing offload for the packet; and

wherein the special processing is encoded in the packet in a variable length option field of a Geneve header of the packet, or in a Layer 7 payload of the packet.

20. The hypervisor of claim 15 , wherein the special processing is based on one or more of: content of: destination MAC addresses of the packets, rules defined for the packets, or configuration instructions defined for the packets in control planes.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2018
From: JIANG, WENYI; YANG, GUOLIN; ANG, BOON SEONG; GROSS, YING
To: VMWARE, INC.
Reel/Frame 046688/0094 →
Continuity (1)
Related Publication 20200067842A1 · Feb 27, 2020
Cited By (1)
US 12,360,798