IP Library Granted Patent US 9,590,904
Granted Patent B2
US 9,590,904 · App. 14/566,405 · Granted Mar 7, 2017

Fast software L2 switching using a caching technique

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,590,904
App. No.
14/566,405
Granted
Mar 7, 2017
Kind
B2
Abstract

In a system that includes a physical forwarding element (PFE), the mapping of each possible destination MAC address to a destination port number of the PFE is stored in a mapping table. A destination port number on the PFE is identified for a first packet in a sequence of packets arrived at a source port of the PFE by searching the mapping table and stores the destination port number in a caching table. For each packet after the first packet, when the destination MAC address of the packet matches the destination MAC address stored in the caching table, the destination port number stored in the caching table is used as the destination port number of the packet. Otherwise, a destination port number for the packet is identified by searching the mapping table and the destination port number stored in the caching table is replaced with the identified destination port number.

Claims (42)

1. A method of optimizing processing of consecutive packets with a same destination address in a sequence of packets in a system comprising a physical host, the physical host comprising virtualization software comprising a physical forwarding element (PFE), each packet comprising a destination media access control (MAC) address, the method comprising:

storing a mapping of each possible destination MAC address to a destination port number of the PFE in a mapping table;

identifying a destination port number on the PFE for a first packet in the sequence of packets arrived at a source port of the PFE by searching the mapping table;

storing the destination port number of the first packet in a caching table;

for each packet after the first packet in the sequence of packets:

when the destination MAC address of the packet matches the destination MAC address stored in the caching table, using the destination port number stored in the caching table as the destination port number of the packet; and

when the destination MAC address of the packet does not match the destination MAC address stored in the caching table, (i) identifying a destination port number for the packet by searching the mapping table and (ii) replacing the destination port number stored in the caching table with the destination port number of the packet identified by searching the mapping table.

2. The method of claim 1 , wherein the mapping table stores a plurality of destination port numbers indexed by a hash of a plurality of destination MAC addresses, wherein searching the mapping table comprises calculating a hash value of the destination MAC address of the packet and using the hash value as an index to the mapping table to find a destination port number for the packet.

3. The method of claim 1 , wherein searching the mapping table comprises comparing the destination MAC address of the packet with each destination MAC address stored in the mapping table until a match is found.

4. The method of claim 1 , wherein the PFE comprises a first set of ports connected to a set of data compute nodes (DCNs) through a set of virtual network interface controllers (VNICs) and a second set of ports connected to a set of physical network interface controllers (PNICs), wherein when the source port of the PFE is in the second set of ports, the destination port of the PFE is one of a port in the first set of the ports.

5. The method of claim 4 , wherein the PFE comprises a first set of ports connected to a set of data compute nodes (DCNs) through a set of virtual network interface controllers (VNICs) and a second set of ports connected to a set of physical network interface controllers (PNICs), wherein when the source port of the PFE is in the first set of ports, the destination port of the PFE is one of a port in the second set of the ports and a port in the first set of ports different than the source port.

6. The method of claim 5 , wherein a DCN is a virtual machine (VM).

7. The method of claim 1 , wherein the PFE is a virtual switch.

8. A non-transitory machine readable medium storing a program for packet processing in a system comprising a physical host, the physical host comprising virtualization software comprising a physical forwarding element (PFE), each packet comprising a destination media access control (MAC) address, the program executable by at least one processing unit, the program comprising sets of instructions for:

storing a mapping of each possible destination MAC address to a destination port number of the PFE in a mapping table;

identifying a destination port number on the PFE for a first packet in the sequence of packets arrived at a source port of the PFE by searching the mapping table;

storing the destination port number of the first packet in a caching table;

for each packet after the first packet in the sequence of packets:

when the destination MAC address of the packet matches the destination MAC address stored in the caching table, using the destination port number stored in the caching table as the destination port number of the packet; and

when the destination MAC address of the packet does not match the destination MAC address stored in the caching table, (i) identifying a destination port number for the packet by searching the mapping table and (ii) replacing the destination port number stored in the caching table with the destination port number of the packet identified by searching the mapping table.

9. The non-transitory machine readable medium of claim 8 , wherein searching the mapping table comprises comparing the destination MAC address of the packet with each destination MAC address stored in the mapping table until a match is found.

10. The non-transitory machine readable medium of claim 8 , wherein the mapping table stores a plurality of destination port numbers indexed by a hash of a plurality of destination MAC addresses, wherein searching the mapping table comprises calculating a hash value of the destination MAC address of the packet and using the hash value as an index to the mapping table to find a destination port number for the packet.

11. The non-transitory machine readable medium of claim 8 , wherein the PFE comprises a first set of ports connected to a set of data compute nodes (DCNs) through a set of virtual network interface controllers (VNICs) and a second set of ports connected to a set of physical network interface controllers (PNICs), wherein when the source port of the PFE is in the second set of ports, the destination port of the PFE is one of a port in the first set of the ports.

12. The non-transitory machine readable medium of claim 11 , wherein the PFE comprises a first set of ports connected to a set of data compute nodes (DCNs) through a set of virtual network interface controllers (VNICs) and a second set of ports connected to a set of physical network interface controllers (PNICs), wherein when the source port of the PFE is in the first set of ports, the destination port of the PFE is one of a port in the second set of the ports and a port in the first set of ports different than the source port.

13. The non-transitory machine readable medium of claim 12 , wherein a DCN is a virtual machine (VM).

14. The non-transitory machine readable medium of claim 8 , wherein the PFE is a virtual switch.

15. A physical computing device comprising:

a set of processing units;

virtualization software comprising a physical forwarding element (PFE); and

a non-transitory machine readable medium storing a program packet processing, each packet comprising a destination media access control (MAC) address and a virtual local area network identifier (VLAN ID), the program for execution by the set of processing units, the program storing set of instructions for:

storing a mapping of each possible destination MAC address to a destination port number of the PFE in a mapping table;

identifying a destination port number on the PFE for a first packet in the sequence of packets arrived at a source port of the PFE by searching the mapping table;

storing the destination port number of the first packet in a caching table;

for each packet after the first packet in the sequence of packets:

when the destination MAC address of the packet matches the destination MAC address stored in the caching table, using the destination port number stored in the caching table as the destination port number of the packet; and

when the destination MAC address of the packet does not match the destination MAC address stored in the caching table, (i) identifying a destination port number for the packet by searching the mapping table and (ii) replacing the destination port number stored in the caching table with the destination port number of the packet identified by searching the mapping table.

16. The physical computing device of claim 15 , wherein searching the mapping table comprises comparing the destination MAC address of the packet with destination MAC address stored in the mapping table until a match is found.

17. The physical computing device of claim 15 , wherein the mapping table stores a plurality of destination port numbers indexed by a hash of a plurality of destination MAC addresses, wherein searching the mapping table comprises calculating a hash value of the destination MAC address of the packet and using the hash value as an index to the mapping table to find a destination port number for the packet.

18. The physical computing device of claim 15 , wherein the PFE comprises a first set of ports connected to a set of data compute nodes (DCNs) through a set of virtual network interface controllers (VNICs) and a second set of ports connected to a set of physical network interface controllers (PNICs), wherein when the source port of the PFE is in the second set of ports, the destination port of the PFE is one of a port in the first set of the ports.

19. The physical computing device of claim 18 , wherein the PFE comprises a first set of ports connected to a set of data compute nodes (DCNs) through a set of virtual network interface controllers (VNICs) and a second set of ports connected to a set of physical network interface controllers (PNICs), wherein when the source port of the PFE is in the first set of ports, the destination port of the PFE is one of a port in the second set of the ports and a port in the first set of ports different than the source port.

20. The physical computing device of claim 19 , wherein a DCN is a virtual machine (VM).

21. The physical computing device of claim 15 , wherein the PFE is a virtual switch.

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 Dec 10, 2014
From: HEO, JIN; WENG, JUI-TING
To: VMWARE, INC.
Reel/Frame 034466/0809 →