IP Library Granted Patent US 9,483,290
Granted Patent B1
US 9,483,290 · App. 14/264,927 · Granted Nov 1, 2016

Method and system for virtual machine communication

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,483,290
App. No.
14/264,927
Granted
Nov 1, 2016
Kind
B1
Abstract

Methods and systems for a virtual environment are provided. A method includes receiving a packet from a first virtual machine at a virtual switch; determining if the packet is destined to a second virtual machine by comparing a destination address to a mapping data structure maintained by the virtual switch; transferring the packet to a first virtual function of a device assigned to the first virtual machine by directly mapping the first virtual function to the first virtual machine; the first virtual function initiating a direct memory access (DMA) operation to transfer the packet to the second virtual machine based on a logical memory address of the second virtual machine that is received from a second virtual function; and using the DMA operation to transfer the packet to the second virtual machine.

Claims (57)

1. A machine implemented method, comprising:

assigning a first network address to a first virtual function of a first device used by a first virtual machine to send and receive data;

assigning a second network address to a second virtual function of a second device used by a second virtual machine to send and receive data;

providing a mapping data structure to a direct memory access (DMA) remapping module and to the first and second virtual functions;

sending a packet to the first virtual function from a first memory domain associated with the first virtual machine via a first DMA operation, wherein a source address in the packet is the first network address and a destination address in the packet is the second network address;

determining by the first virtual function that the packet is destined to the second virtual function of the second virtual machine by comparing the destination address to the mapping data structure provided to the first virtual function;

sending a packet length by the first virtual function to the second virtual function;

the first virtual function initiating a second DMA operation to transfer the packet to the second virtual machine based on a logical memory address of the second virtual machine that is received from the second virtual function;

trapping the second DMA operation by the DMA remapping module;

translating the logical memory address to a physical memory address by the DMA remapping module;

using the second DMA operation to transfer the packet directly to a second memory domain associated with the second virtual machine;

the first virtual function notifying the second virtual function that the packet has been transferred; and

the second virtual function notifying the second virtual machine of the packet in the second memory domain.

2. The method of claim 1 , wherein if the packet is not destined to the second virtual machine, then the packet is transmitted to another device via the first device.

3. The method of claim 1 , wherein the DMA remapping module uses a data structure to determine the physical memory address corresponding to the logical memory address of the second virtual machine.

4. The method of claim 1 , wherein the mapping data structure is configured using a management console and is provided to the first device associated with the first virtual machine.

5. The method of claim 1 , wherein the first device is an adapter that is used for sending and receiving information.

6. The method of claim 1 , wherein the mapping data structure stores an identifier for the first virtual function and a corresponding media access control (MAC) address as the first network address.

7. The method of claim 1 , wherein the mapping data structure is provided to the DMA remapping module that assists in transferring the packet between the first virtual machine and the second virtual machine.

8. A non-transitory, machine readable storage medium storing executable instructions executed by a machine to perform a method, the method comprising:

assigning a first network address to a first virtual function of a first device used by a first virtual machine to send and receive data;

assigning a second network address to a second virtual function of a second device used by a second virtual machine to send and receive data;

providing a mapping data structure to a direct memory access (DMA) remapping module and to the first and second virtual functions;

sending a packet to the first virtual function from a first memory domain associated with the first virtual machine via a first DMA operation, wherein a source address in the packet is the first network address and a destination address in the packet is the second network address;

determining by the first virtual function that the packet is destined to the second virtual function of the second virtual machine by comparing the destination address to the mapping data structure provided to the first virtual function;

sending a packet length by the first virtual function to the second virtual function;

the first virtual function initiating a second DMA operation to transfer the packet to the second virtual machine based on a logical memory address of the second virtual machine that is received from the second virtual function;

trapping the second DMA operation by the DMA remapping module;

translating the logical memory address to a physical memory address by the DMA remapping module;

using the second DMA operation to transfer the packet directly to a second memory domain associated with the second virtual machine;

the first virtual function notifying the second virtual function that the packet has been transferred; and

the second virtual function notifying the second virtual machine of the packet in the second memory domain.

9. The storage medium of claim 8 , wherein if the packet is not destined to the second virtual machine, then the packet is transmitted to another device via the first device.

10. The storage medium of claim 8 , wherein the DMA remapping module uses a data structure to determine the physical memory address corresponding to the logical memory address of the second virtual machine.

11. The storage medium of claim 8 , wherein the mapping data structure is configured using a management console and is provided to the first device associated with the first virtual machine.

12. The storage medium of claim 8 , wherein the first device is an adapter that is used for sending and receiving information.

13. The storage medium of claim 8 , wherein the mapping data structure stores an identifier for the first virtual function and a corresponding media access control (MAC) address as the first network address.

14. The storage medium of claim 8 , wherein the mapping data structure is provided to the DMA remapping module that assists in transferring the packet between the first virtual machine and the second virtual machine.

15. A system comprising:

a processor executing instructions out of a memory for:

assigning a first network address to a first virtual function of a first device used by a first virtual machine to send and receive data;

assigning a second network address to a second virtual function of a second device used by a second virtual machine to send and receive data;

providing a mapping data structure to a direct memory access (DMA) remapping module and to the first and second virtual functions;

sending a packet to the first virtual function from a first memory domain associated with the first virtual machine via a first DMA operation, wherein a source address in the packet is the first network address and a destination address in the packet is the second network address;

determining by the first virtual function that the packet is destined to the second virtual function of the second virtual machine by comparing the destination address to the mapping data structure provided to the first virtual function;

sending a packet length by the first virtual function to the second virtual function;

the first virtual function initiating a second DMA operation to transfer the packet to the second virtual machine based on a logical memory address of the second virtual machine that is received from the second virtual function;

trapping the second DMA operation by the DMA remapping module;

translating the logical memory address to a physical memory address by the DMA remapping module;

using the second DMA operation to transfer the packet directly to a second memory domain associated with the second virtual machine;

the first virtual function notifying the second virtual function that the packet has been transferred; and

the second virtual function notifying the second virtual machine of the packet in the second memory domain.

16. The system of claim 15 , wherein if the packet is not destined to the second virtual machine, then the packet is transmitted to another device via the first device.

17. The system of claim 15 , wherein the DMA remapping module uses a data structure to determine the physical memory address corresponding to the logical memory address of the second virtual machine.

18. The system of claim 15 , wherein the mapping data structure is configured using a management console and is provided to the first device associated with the first virtual machine.

19. The system of claim 15 , wherein the mapping data structure stores an identifier for the first virtual function and a corresponding media access control (MAC) address as the first network address.

20. The system of claim 15 , wherein the mapping data structure is provided to the DMA remapping module that assists in transferring the packet between the first virtual machine and the second virtual machine.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 8, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047205/0953 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
MERGER Recorded Oct 18, 2017
From: QLOGIC CORPORATION
To: CAVIUM, INC.
Reel/Frame 044812/0504 →
SECURITY AGREEMENT Recorded Mar 1, 2017
From: QLOGIC CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 041854/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2014
From: MANTRI, NEERAJ; SHETE, TANMAY PRADIP
To: QLOGIC, CORPORATION
Reel/Frame 032782/0079 →