IP Library Granted Patent US 10,922,119
Granted Patent B2
US 10,922,119 · App. 16/021,262 · Granted Feb 16, 2021

Communications between virtual dual control modules in virtual machine environment

Inventors: Lifeng Yang (Beijing, CN); Jian Gao (Beijing, CN); Xinlei Xu (Beijing, CN); Ruiyong Jia (Beijing, CN); Yousheng Liu (Beijing, CN)
Assignee: EMC IP Holding Company LLC
G06F9/45558G06F13/105G06F13/4022G06F13/4282G06F2009/45579G06F2009/45595G06F2213/0024G06F2213/0026
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,922,119
App. No.
16/021,262
Granted
Feb 16, 2021
Kind
B2
Abstract

Embodiments of the present disclosure relate to communications between virtual dual control modules in a virtual machine environment. A computer-implemented method and an electronic device are disclosed. The method includes deploying a first virtual control module and a second virtual control module in a virtual storage, the first virtual control module and the second virtual control module are redundant with each other. The method further comprises creating a virtual Peripheral Component Interconnect Express (PCIe) switch for emulating a physical PCIe switch, and synchronizing cache data between the first virtual control module and the second virtual control module via the virtual PCIe switch. In the embodiments of the present disclosure, virtual dual control modules are configured in the virtual machine environment, and virtual PCIe communications between virtual dual control modules are realized by emulating the physical PCIe through software, thereby enabling low-latency communications between virtual dual control modules in a virtual storage.

Claims (73)

1. A computer-implemented method, comprising:

deploying a first virtual control module and a second virtual control module in a virtual storage, the first virtual control module and the second virtual control module being redundant with each other;

creating a virtual Peripheral Component Interconnect Express (PCIe) switch for emulating a physical PCIe switch; and

synchronizing cache data between the first virtual control module and the second virtual control module via the virtual PCIe switch,

wherein deploying a first virtual control module and a second virtual control module comprises deploying a respective virtual PCIe interface within each of the virtual control modules to interface the virtual control modules to the virtual PCIe switch, using single-root I/O virtualization by which the virtual control modules can share a single PCIe hardware interface,

and wherein the virtual PCIe interface includes a transaction layer, a data link layer and a hardware abstraction layer, the transaction layer including a plurality of virtual circuits as master interfaces for communicating with other components in the virtual PCIe interface, the data link layer including a PCIe transmission module for implementing data communication at a link layer, and the hardware abstraction layer being configured and operative to abstract hardware circuitry to provide operational interface to the transaction layer and data link layer in which hardware and virtual hardware are indistinguishable;

and wherein the hardware abstraction layer includes a DMA module configured and operative to provide direct-memory access (DMA) operation between the virtual control modules via the virtual PCIe switch, the DMA operation being used in the synchronizing of cache data between the first virtual control module and the second virtual control module via the virtual PCIe switch.

2. The method according to claim 1 , wherein the creating the virtual PCIe switch comprises:

creating the virtual PCIe switch by emulating at least one of the followings of the physical PCIe switch: PCIe address translation, input/output (I/O) routing, I/O parsing and I/O isolation.

3. The method according to claim 2 , wherein the creating the virtual PCIe switch further comprises:

generating an address translation between a first PCIe address space in which the first virtual control module is located and a second PCIe address space in which the second virtual control module is located; and

converting a first address in the first PCIe address space into a second address in the second PCIe address space based on the address translation.

4. The method according to claim 1 , wherein the synchronizing the cache data comprises:

transmitting the cache data from the first virtual control module to the second virtual control module; and

writing the cache data to a virtual disk array of the virtual storage.

5. The method according to claim 1 , wherein the synchronizing the cache data comprises:

performing, by the virtual PCIe switch, direct memory access between a first hardware abstraction layer in the first virtual control module and a second hardware abstraction layer in the second virtual control module.

6. The method according to claim 1 , further comprising:

creating, using the virtual PCIe switch, communication between a particular physical device enabling PCIe and at least one of the first virtual control module and the second virtual control module.

7. The method according to claim 6 , further comprising:

allocating routing identifiers to the first virtual control module and the second virtual control module; and

allocating routing identifiers to a plurality of virtual functions in the particular physical device, one of the plurality of virtual functions being associated with a part of physical resources of the particular physical device.

8. The method according to claim 6 , further comprising:

adjusting a size of a buffer at the virtual PCIe switch dynamically based on a message feedback received from the particular physical device.

9. An electronic device, comprising:

a processing unit; and

a memory coupled to the processing unit and storing instructions, the instructions, when executed by the processing unit, perform the actions of:

deploying a first virtual control module and a second virtual control module in a virtual storage, the first virtual control module and the second virtual control module being redundant with each other;

creating a virtual Peripheral Component Interconnect Express (PCIe) switch for emulating a physical PCIe switch; and

synchronizing cache data between the first virtual control module and the second virtual control module via the virtual PCIe switch,

wherein deploying a first virtual control module and a second virtual control module comprises deploying a respective virtual PCIe interface within each of the virtual control modules to interface the virtual control modules to the virtual PCIe switch, using single-root I/O virtualization by which the virtual control modules can share a single PCIe hardware interface,

and wherein the virtual PCIe interface includes a transaction layer, a data link layer and a hardware abstraction layer, the transaction layer including a plurality of virtual circuits as master interfaces for communicating with other components in the virtual PCIe interface, the data link layer including a PCIe transmission module for implementing data communication at a link layer, and the hardware abstraction layer being configured and operative to abstract hardware circuitry to provide operational interface to the transaction layer and data link layer in which hardware and virtual hardware are indistinguishable;

and wherein the hardware abstraction layer includes a DMA module configured and operative to provide direct-memory access (DMA) operation between the virtual control modules via the virtual PCIe switch, the DMA operation being used in the synchronizing of cache data between the first virtual control module and the second virtual control module via the virtual PCIe switch.

10. The device according to claim 9 , wherein the creating the virtual PCIe switch comprises:

creating the virtual PCIe switch by emulating at least one of the followings of the physical PCIe switch: PCIe address translation, input/output (I/O) routing, I/O parsing and I/O isolation.

11. The device according to claim 10 , wherein the creating the virtual PCIe switch further comprises:

generating an address translation between a first PCIe address space in which the first virtual control module is located and a second PCIe address space in which the second virtual control module is located; and

converting a first address in the first PCIe address space into a second address in the second PCIe address space based on the address translation.

12. The device according to claim 9 , wherein the synchronizing the cache data comprises:

transmitting the cache data from the first virtual control module to the second virtual control module; and

writing the cache data to a virtual disk array of the virtual storage.

13. The device according to claim 9 , wherein synchronizing the cache data comprises:

performing direct memory access between a first hardware abstraction layer in the first virtual control module and a second hardware abstraction layer in the second virtual control module through the virtual PCIe switch.

14. The device according to claim 9 , the actions further comprising:

creating, using the virtual PCIe switch, communication between a particular physical device enabling PCIe and at least one of the first virtual control module and the second virtual control module.

15. The device according to claim 14 , the actions further comprising:

allocating routing identifiers to the first virtual control module and the second virtual control module; and

allocating routing identifiers to a plurality of virtual functions in the particular physical device, one of the plurality of virtual functions being associated with a part of physical resources of the particular physical device.

16. The device according to claim 14 , the actions further comprising:

adjusting a size of a buffer at the virtual PCIe switch dynamically based on a message feedback received from the particular physical device.

17. A computer program product, comprising:

a non-transitory computer readable medium encoded with computer-executable code, the code configured to enable the execution of:

deploying a first virtual control module and a second virtual control module in a virtual storage, the first virtual control module and the second virtual control module being redundant with each other;

creating a virtual Peripheral Component Interconnect Express (PCIe) switch for emulating a physical PCIe switch; and

synchronizing cache data between the first virtual control module and the second virtual control module via the virtual PCIe switch,

wherein deploying a first virtual control module and a second virtual control module comprises deploying a respective virtual PCIe interface within each of the virtual control modules to interface the virtual control modules to the virtual PCIe switch, using single-root I/O virtualization by which the virtual control modules can share a single PCIe hardware interface,

and wherein the virtual PCIe interface includes a transaction layer, a data link layer and a hardware abstraction layer, the transaction layer including a plurality of virtual circuits as master interfaces for communicating with other components in the virtual PCIe interface, the data link layer including a PCIe transmission module for implementing data communication at a link layer, and the hardware abstraction layer being configured and operative to abstract hardware circuitry to provide operational interface to the transaction layer and data link layer in which hardware and virtual hardware are indistinguishable,

and wherein the hardware abstraction layer includes a DMA module configured and operative to provide direct-memory access (DMA) operation between the virtual control modules via the virtual PCIe switch, the DMA operation being used in the synchronizing of cache data between the first virtual control module and the second virtual control module via the virtual PCIe switch.

18. The computer program product of claim 17 , wherein the creating the virtual PCIe switch comprises:

creating the virtual PCIe switch by emulating at least one of the followings of the physical PCIe switch: PCIe address translation, input/output (I/O) routing, I/O parsing and I/O isolation.

19. The computer program product of claim 18 , wherein the creating the virtual PCIe switch further comprises:

generating an address translation between a first PCIe address space in which the first virtual control module is located and a second PCIe address space in which the second virtual control module is located; and

converting a first address in the first PCIe address space into a second address in the second PCIe address space based on the address translation.

20. The computer program product of claim 17 , wherein the synchronizing the cache data comprises:

transmitting the cache data from the first virtual control module to the second virtual control module; and

writing the cache data to a virtual disk array of the virtual storage.

21. The computer program product of claim 17 , wherein the synchronizing the cache data comprises:

performing, by the virtual PCIe switch, direct memory access between a first hardware abstraction layer in the first virtual control module and a second hardware abstraction layer in the second virtual control module.

22. The computer program product of claim 17 , wherein the code is further configured to enable the execution of:

creating, using the virtual PCIe switch, communication between a particular physical device enabling PCIe and at least one of the first virtual control module and the second virtual control module.

23. The computer program product of claim 22 , wherein the code is further configured to enable the execution of:

allocating routing identifiers to the first virtual control module and the second virtual control module; and

allocating routing identifiers to a plurality of virtual functions in the particular physical device, one of the plurality of virtual functions being associated with a part of physical resources of the particular physical device.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (047648/0422) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060160/0862 →
RELEASE OF SECURITY INTEREST AT REEL 047648 FRAME 0346 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0510 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 047648/0422 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047648/0346 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2018
From: YANG, LIFENG; GAO, JIAN; XU, XINLEI; JIA, RUIYONG; LIU, YOUSHENG
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 046328/0257 →