WO2023230766A1 - 一种数据传输方法及虚拟化系统 - Google Patents

一种数据传输方法及虚拟化系统 Download PDF

Info

Publication number
WO2023230766A1
WO2023230766A1 PCT/CN2022/095994 CN2022095994W WO2023230766A1 WO 2023230766 A1 WO2023230766 A1 WO 2023230766A1 CN 2022095994 W CN2022095994 W CN 2022095994W WO 2023230766 A1 WO2023230766 A1 WO 2023230766A1
Authority
WO
WIPO (PCT)
Prior art keywords
virtual machine
data
virtual
shared memory
network card
Prior art date
Application number
PCT/CN2022/095994
Other languages
English (en)
French (fr)
Inventor
曹建龙
赵康
郑培群
陶喆
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2022/095994 priority Critical patent/WO2023230766A1/zh
Publication of WO2023230766A1 publication Critical patent/WO2023230766A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems

Definitions

  • the present application relates to the field of virtualization technology, and in particular, to a data transmission method and a virtualization system.
  • In-vehicle scene virtualization technology supports the hosting of heterogeneous operating systems on the same hardware platform, realizing the integration and computing power sharing of in-vehicle computing units.
  • In-vehicle scene virtualization technology mainly includes computing resource virtualization and input/output (I/O) virtualization.
  • the I/O virtualization can usually include network device virtualization.
  • Network device virtualization (such as network card virtualization) is an important basic component for communication between multiple virtual machines (VMs).
  • VMs virtual machines
  • network equipment virtualization generally adopts the virtio technology of semi-I/O virtualization when implementing it.
  • This technology adopts the design idea of zero-copy, specifically through the shared memory between the host and the virtual machine. Packets are shared to a single virtual machine so that the host can directly access the virtual machine's memory without the need for additional memory copy operations, resulting in good performance.
  • the above virtio technology only supports one-to-one communication, that is, it only supports cache sharing between the host and a single virtual machine.
  • N is an integer greater than 1
  • the broadcast packet is copied from the host's cache N times to the shared cache corresponding to each virtual machine, which results in a large computing resource overhead.
  • This application provides a data transmission method and a virtualization system for reducing the reception overhead of multicast data or broadcast data.
  • a data transmission method is provided, applied in a virtualization system.
  • the virtualization system includes a first virtual machine and a plurality of second virtual machines.
  • the first virtual machine includes a method that allows at least two second virtual machines to access shared memory, the method includes: the first virtual machine receives data, the data is sent to the at least two second virtual machines, for example, the data is broadcast data or multicast data; when the shared memory does not exist
  • the first virtual machine stores the data in the shared memory; for any second virtual machine among the at least two second virtual machines, the first virtual machine sends the data to the second virtual machine.
  • the storage address of the data in the shared memory so that the at least two second virtual machines can access the shared memory to obtain the data.
  • the first virtual machine when the first virtual machine receives data sent to at least two second virtual machines, if the data does not exist in the shared memory, the first virtual machine stores the data in the shared memory and sends it to at least The two second virtual machines send the storage address of the data in the shared memory, so that the at least two second virtual machines can access the shared memory to obtain the data.
  • the first virtual machine can realize the reception of the data by the at least two second virtual machines through only one copy (that is, storing the data in the shared memory). That is, this method can only use One copy realizes the reception of multicast data and broadcast data, thus greatly reducing computing resource overhead.
  • the method further includes: when the data exists in the shared memory, the first virtual machine sends the storage address of the data in the shared memory to the second virtual machine. .
  • the first virtual machine can directly send the storage address of the data in the shared memory, so that the second virtual machine can access the shared memory to obtain the data. , thereby reducing the overhead of the second virtual machine receiving the data, thereby reducing the computing resource overhead.
  • the total number of copies of the data received by the at least two second virtual machines is 1.
  • the first virtual machine can realize the reception of the data by the at least two second virtual machines through only one copy, thereby greatly reducing the computing resource overhead.
  • the method further includes: the first virtual machine determines the verification information of the data; if the verification information already exists in the shared memory, information, the first virtual machine determines that the data exists in the shared memory; if the verification information does not exist in the shared memory, the first virtual machine determines that the data does not exist in the shared memory.
  • the first virtual machine can determine whether the data exists in the shared memory through the verification information of the data.
  • the virtualization system further includes a one-to-many shared queue, and the first virtual machine and the at least two second virtual machines can interact through the one-to-many shared queue.
  • the first virtual machine sends the storage address of the data in the shared memory to the second virtual machine, including: the first virtual machine sends the storage address to the second virtual machine through the one-to-many shared queue. address.
  • the first virtual machine can send the storage addresses of the data in the shared memory to the at least two second virtual machines through the one-to-many shared queue, so that the at least two second virtual machines The machine can access the shared memory to obtain the data.
  • the first virtual machine further includes a virtual network card.
  • the method further includes: binding the first virtual machine to the virtual network card and the one.
  • the first virtual machine receiving data includes: the first virtual machine receiving data through the virtual network card.
  • the first virtual machine binds the virtual network card and the one-to-many shared queue, so that subsequent data-related information received by the virtual network card can be sent to the second virtual machine through the one-to-many shared queue. virtual machine.
  • the virtual network card includes at least two virtual network cards, and the at least two virtual network cards correspond to the at least two second virtual machines.
  • the virtualization system further includes a virtual machine manager.
  • the method also includes: for any virtual network card among the at least two virtual network cards, the first virtual machine sends a registration request to the virtual machine manager, the registration request is used to register the virtual network card; when the virtual machine manages When the server receives the registration request, if the second virtual machine corresponding to the virtual network card is not mapped to the shared memory, the virtual machine manager establishes a mapping between the second virtual machine and the shared memory.
  • the virtual machine manager can map the second virtual machine to the shared memory and unmap the second virtual machine from the shared memory, so that the plurality of third virtual machines on the virtualized system can be configured. Two virtual machines can flexibly access the same shared memory.
  • the method further includes: the first virtual machine sending a deletion request to the virtual machine manager, the deletion request being used to cancel the virtual network card; when the virtual machine manager receives When the deletion request is made, if the second virtual machine corresponding to the virtual network card does not use the shared memory, the virtual machine manager releases the mapping between the second virtual machine and the shared memory.
  • the virtual machine manager can demap a second virtual machine and the shared memory when the second virtual machine does not use the shared memory. This can prevent the second virtual machine from using the shared memory. Illegal access to shared memory to ensure the security of data reception.
  • a data transmission device can be used as a first virtual machine in a virtualization system.
  • the virtualization system further includes a plurality of second virtual machines, allowing at least one of the plurality of second virtual machines to Shared memory accessed by two second virtual machines;
  • the device includes: a receiving unit, used to receive data, the data is sent to the at least two second virtual machines; a processing unit, used to when the shared memory does not exist When the data is generated, the data information of the data is stored in the shared memory; the sending unit is configured to send the data to any second virtual machine in the at least two second virtual machines to the second virtual machine.
  • the storage address in this shared memory is broadcast data; or, the data is multicast data.
  • the sending unit is also configured to: when the data exists in the shared memory, send the storage address of the data in the shared memory to the second virtual machine.
  • the total number of copies of the data received by the at least two second virtual machines is 1.
  • the data information also includes verification information of the data
  • the processing unit is also used to: determine the verification information of the data; if the verification information already exists in the shared memory information, confirm that the data exists in the shared memory; if the verification information does not exist in the shared memory, confirm that the data does not exist in the shared memory.
  • the virtualization system further includes a one-to-many shared queue
  • the sending unit is further configured to: send the storage address to the second virtual machine through the one-to-many shared queue.
  • the first virtual machine further includes a virtual network card.
  • the processing unit is further configured to: bind the virtual network card and the one-to-many sharing. queue; correspondingly, the receiving unit is also used to: receive data through the virtual network card.
  • the virtual network card includes at least two virtual network cards, and the at least two virtual network cards correspond to the at least two second virtual machines.
  • the virtualization system further includes a virtual machine manager. ;
  • the sending unit is also used to: for any virtual network card in the at least two virtual network cards, send a registration request to the virtual machine manager, the registration request is used to register the virtual network card, so that the virtual machine manager can When receiving the registration request, if the second virtual machine corresponding to the virtual network card is not mapped to the shared memory, establish a mapping between the second virtual machine and the shared memory.
  • the sending unit is also configured to: send a deletion request to the virtual machine manager, where the deletion request is used to cancel the virtual network card, so that the virtual machine manager receives When the deletion request is made, if the second virtual machine corresponding to the virtual network card does not use the shared memory, the mapping between the second virtual machine and the shared memory is released.
  • a virtualization system in a third aspect, includes a first virtual machine and a plurality of second virtual machines.
  • the first virtual machine includes a system that allows at least two second virtual machines among the plurality of second virtual machines to The shared memory accessed by the machine; the first virtual machine is used to: receive data, the data is sent to the at least two second virtual machines; the first virtual machine is also used: when the data does not exist in the shared memory when, the data is stored in the shared memory; the first virtual machine is also configured to: for any second virtual machine among the at least two second virtual machines, send the data to the second virtual machine. Storage address in shared memory.
  • the data is broadcast data; or, the data is multicast data.
  • the first virtual machine is further configured to: when the data exists in the shared memory, send the storage address of the data in the shared memory to the second virtual machine.
  • the total number of copies of the data received by the at least two second virtual machines is 1.
  • the data information also includes verification information of the data
  • the first virtual machine is also used to: determine the verification information of the data; if the data information already exists in the shared memory, Verify the information to confirm that the data exists in the shared memory; if the verification information does not exist in the shared memory, determine that the data does not exist in the shared memory.
  • the virtualization system further includes a one-to-many shared queue
  • the first virtual machine is further configured to: send the storage to the second virtual machine through the one-to-many shared queue. address.
  • the first virtual machine further includes a virtual network card. Before the first virtual machine receives data, the first virtual machine is further configured to: bind the virtual network card and the pair of Multiple shared queues; correspondingly, the first virtual machine is also used to: receive data through the virtual network card.
  • the virtual network card includes at least two virtual network cards, and the at least two virtual network cards correspond to the at least two second virtual machines.
  • the virtualization system further includes a virtual machine manager. ;
  • the first virtual machine is also configured to send a registration request to the virtual machine manager for any one of the at least two virtual network cards, and the registration request is used to register the virtual network card; the virtual machine manager, When receiving the registration request, if the second virtual machine corresponding to the virtual network card is not mapped to the shared memory, establish a mapping between the second virtual machine and the shared memory.
  • the first virtual machine is further configured to: send a deletion request to the virtual machine manager, where the deletion request is used to log out the virtual network card; and the virtual machine manager is configured to: when When receiving the deletion request, if the second virtual machine corresponding to the virtual network card does not use the shared memory, the mapping between the second virtual machine and the shared memory is released.
  • a communication device is also provided, the communication device hardware layer, and a virtualization system running on the hardware layer.
  • the virtualization system is the third aspect or any possibility of the third aspect.
  • this hardware layer includes processors, memory, and network cards.
  • a computer-readable storage medium is also provided.
  • Computer programs or instructions are stored in the computer-readable storage medium. When the computer program or instructions are executed, the following steps are implemented: The data transmission method provided by any possible implementation of the aspect.
  • a computer program product includes a computer program or instructions.
  • the device implements the data transmission method provided in any of the above aspects. .
  • the data transmission devices, virtualization systems, communication equipment, computer-readable storage media and computer program products provided by the above aspects all include the content described in the data transmission method. Therefore, the beneficial effects they can achieve can be referred to The beneficial effects of the above data transmission methods will not be described again here.
  • Figure 1 is a schematic diagram of a virtio-net architecture provided by an embodiment of the present application
  • Figure 2 is a schematic diagram of a vhost-net architecture provided by an embodiment of the present application.
  • Figure 3 is a schematic structural diagram of a virtualization system provided by an embodiment of the present application.
  • Figure 4 is a schematic structural diagram of another virtualization system provided by an embodiment of the present application.
  • Figure 5 is a schematic flow chart of a data transmission method provided by an embodiment of the present application.
  • Figure 6 is a schematic diagram of data transmission by a virtualization system provided by an embodiment of the present application.
  • Figure 7 is a schematic flowchart of binding a virtual network card and a one-to-many shared queue provided by an embodiment of the present application
  • Figure 8 is a schematic flowchart of mapping a second virtual machine to shared memory provided by an embodiment of the present application.
  • Figure 9 is a schematic flowchart of demapping the second virtual machine and shared memory provided by an embodiment of the present application.
  • Figure 10 is a schematic structural diagram of a data transmission device provided by an embodiment of the present application.
  • Figure 11 is a schematic structural diagram of a communication device provided by an embodiment of the present application.
  • At least one refers to one or more
  • plural and “at least two” refer to two or more.
  • And/or describes the association of associated objects, indicating that there can be three relationships, for example, A and/or B, which can mean: A exists alone, A and B exist simultaneously, and B exists alone, where A, B can be singular or plural.
  • At least one of the following or similar expressions thereof refers to any combination of these items, including any combination of a single item (items) or a plurality of items (items).
  • At least one of a, b, or c can represent: a, b, c, a and b, a and c, b and c, or a, b and c, where a, b, c can be single or multiple.
  • the embodiments of this application use words such as “first” and “second” to distinguish objects with similar names or functions or effects. Persons skilled in the art can understand that words such as “first” and “second” are not There is no limit on the quantity and order of execution.
  • Virtualization technology is a resource management technology that can combine various hardware resources of a computer, such as central processing unit (CPU), memory (memory), network interface card (NIC) (also called (network card), and various storage such as hard disk (disk) and magnetic disk, etc., are abstracted, converted and presented, breaking the inseparable barriers between hardware structures, allowing users to apply them in a better way than the original configuration. these hardware resources.
  • the virtualization function of these hardware resources is not limited by the installation method, geography or physical configuration of the existing resources.
  • Virtualization technology mainly includes computing resource virtualization and input/output (I/O) virtualization.
  • the I/O virtualization may include network device virtualization.
  • Network device virtualization generally uses virtual input and output (virtio) technology of semi-I/O virtualization in its specific implementation.
  • Virtio is a set of general-purpose I/O device virtualization programs, which is an abstraction of a set of general-purpose I/O devices in a paravirtualized virtual machine manager.
  • Virtio provides a set of communication framework and programming interfaces between upper-layer applications and virtualization devices of each virtual machine manager, which can reduce compatibility issues caused by cross-platform and greatly improve driver development efficiency.
  • the virtio architecture can include virtio-net and vhost-net. The following takes the virtualized IO device as a virtual network card as an example.
  • the architectures shown in Figure 1 and Figure 2 are used as examples to illustrate these two architectures. .
  • the virtio-net architecture includes a service virtual machine VM0 and multiple guest virtual machines VM1 to VMn, where n is a positive integer.
  • the service virtual machine VM0 includes the virtio user mode program, as well as the virtio kernel service, bridge, network card driver and multiple virtual network cards located in the kernel.
  • Each virtual network card can correspond to a guest virtual machine.
  • Each of the multiple guest virtual machines VM1 to VMn may include a shared memory and a virtual network card, and the virtio user mode program in the service virtual machine VM0 may access the shared memory of different guest virtual machines.
  • the bridge is used to connect the network card driver and the multiple virtual network cards, and allocate data packets from the network received by the network card driver to the corresponding virtual network cards.
  • the virtio user mode program Data packets can be obtained from the multiple virtual network cards, and when the data packet is a data packet of a certain guest virtual machine, the data packet can be stored in the shared content of the corresponding guest virtual machine.
  • FIG. 1 takes the example that the plurality of guest virtual machines VM1 to VMn include two guest virtual machines, represented as VM1 and VM2, and the service virtual machine VM0 includes two virtual network cards.
  • the vhost-net architecture includes a service virtual machine VM0 and multiple guest virtual machines VM1 to VMn.
  • the service virtual machine VM0 includes a virtio user mode program, as well as the virtio kernel service, bridge, and network card located in the kernel.
  • Driver multiple virtual network cards and kernel data plane vhost.
  • Each of the multiple virtual network cards can correspond to a guest virtual machine.
  • Each of the multiple guest virtual machines VM1 to VMn may include a shared memory and a virtual network card, and the kernel data plane vhost in the service virtual machine VM0 may access the shared memory of different guest virtual machines.
  • the bridge is used to connect the network card driver and the multiple virtual network cards, and allocate the data packets from the network received by the network card driver to the corresponding virtual network card.
  • the kernel data plane vhost Data packets can be obtained from the multiple virtual network cards, and when the data packet is a data packet of a certain guest virtual machine, the data packet can be stored in the shared memory of the corresponding guest virtual machine.
  • FIG. 2 takes as an example that the plurality of guest virtual machines VM1 to VMn include two guest virtual machines, denoted as VM1 and VM2, and the service virtual machine VM0 includes two virtual network cards.
  • the difference between the above virtio-net architecture and the vhost-net architecture is that in the virtio-net architecture, the virtio user-mode program in the service virtual machine executes the copy of the data packet, so that the service virtual machine performs the data packet transmission process Frequent switching between user mode and kernel mode is required, resulting in low data throughput.
  • the vhost-net architecture migrates the data plane processing from the user state to the kernel state.
  • the kernel data plane vhost added in the service virtual machine performs the copy of the data packet, thus avoiding the need for data processing between the kernel state and the kernel state. Switching between user modes improves data throughput.
  • the above-mentioned virtio-net architecture and vhost-net architecture only support one-to-one communication during data transmission, that is, they only support data transmission through shared memory between the service virtual machine and a single guest virtual machine.
  • the above-mentioned virtio-net architecture and vhost-net architecture only support one-to-one communication during data transmission, that is, they only support data transmission through shared memory between the service virtual machine and a single guest virtual machine.
  • the service virtual machine When data packets (for example, the data packet is a multicast data packet or a broadcast data packet) whose receiving ends are N (N is an integer greater than 1) client virtual machines are transmitted in this way, the service virtual machine receives the When receiving a data packet, the data packet needs to be copied from its own cache to the shared memory of each of the N guest virtual machines. That is, the service virtual machine needs to be copied N times to realize the N guest virtual machines. The virtual machine receives the data packet, resulting in a large computing resource overhead.
  • N is an integer greater than 1
  • the virtualization system includes a first virtual machine and a plurality of second virtual machines.
  • the first virtual machine includes a system that allows a plurality of second virtual machines.
  • the shared memory accessed by the virtual machine.
  • the first virtual machine receives data (such as broadcast data packets or multicast data packets) for multiple second virtual machines at the receiving end, the first virtual machine can transfer the data stored in the shared memory, and corresponding storage addresses are sent to the plurality of second virtual machines.
  • the service virtual machine can realize the reception of the data packet by multiple customer virtual machines through only one copy, thus greatly reducing the cost. Compute resource overhead.
  • FIG. 3 is a schematic structural diagram of a virtualization system provided by an embodiment of the present application.
  • the virtualization system can be a virtio-based virtualization system.
  • the virtualization system can be applied in application scenarios where multiple virtual machines receive the same data.
  • the application scenario can be multimedia applications in vehicle application scenarios, scalable service-oriented middleware over IP (SOME/IP) service discovery (service discovery) based on Internet protocol (IP) , SD) protocol scenarios, etc.
  • SOME/IP scalable service-oriented middleware over IP
  • service discovery service discovery
  • IP Internet protocol
  • SD Secure Digital Protocol
  • the virtualization system includes a first virtual machine VM10 and a plurality of second virtual machines VM20.
  • the first virtual machine VM10 includes a shared memory 11, and the plurality of second virtual machines VM20 may be allowed to access the shared memory 11.
  • the first virtual machine VM10 can provide virtualized IO devices for the plurality of second virtual machines VM20 and perform data transmission with some or all of the plurality of second virtual machines VM20 through the shared memory 11 .
  • the plurality of second virtual machines VM20 includes two second virtual machines, respectively represented as VM21 and VM22 , as an example for illustration.
  • the first virtual machine may also be called a service virtual machine, and the second virtual machine may also be called a guest virtual machine.
  • the first virtual machine VM10 may also include a user-mode program located in the user state (such as a virtio user-mode program), a kernel service (such as a virtio kernel service) located in the kernel state, and a bridge. , kernel data plane, virtualized IO device, and driver corresponding to the virtualized IO device, etc.
  • the virtualized IO device and the driver are connected to the bridge, and the virtualized IO device is also connected to the kernel data plane.
  • the kernel data plane may also be called a vhost.
  • Each second virtual machine in the plurality of second virtual machines VM20 may include a virtualized IO device.
  • the virtualized IO devices include but are not limited to virtual network cards, virtual display devices, virtual input devices, etc.
  • the virtualized IO device includes a virtual network card
  • the first virtual machine VM10 includes two virtual network cards
  • the corresponding driver is a network card driver.
  • the kernel service may include a shared memory allocator, and the shared memory allocator may be used to allocate the shared memory 11.
  • the shared memory allocator can be used to allocate the size of the shared memory 11, or the address corresponding to the shared memory 11, etc. This embodiment of the present application does not specifically limit this.
  • the virtualization system may also include a one-to-many shared queue (SQ).
  • the one-to-many shared queue may be used to implement interaction between the first virtual machine VM10 and the plurality of second virtual machines VM20.
  • the first virtual machine VM10 can send information to any one of the plurality of second virtual machines VM20 through the one-to-many shared queue.
  • the information can be data in the shared memory 11 storage address; each second virtual machine can receive information from the first virtual machine VM10 or send information to the first virtual machine VM10 through the one-to-many shared queue.
  • the one-to-many shared queue is not shown in the figure.
  • the one-to-many shared queue may be created by the first virtual machine VM10.
  • the virtio user mode program may determine whether the one-to-many shared queue needs to be created according to user configuration parameters.
  • the virtio user mode program may include a shared queue configurator, and the shared queue configurator may be used to configure whether the one-to-many shared queue needs to be created.
  • the shared queue configurator is represented in Figure 4 as the SQ configurator.
  • the first virtual machine VM10 can create the one-to-many shared queue when creating virtual network cards for the plurality of second virtual machines VM20, and bind the virtual network card to the one-to-many shared queue.
  • the shared queue allows the first virtual machine VM10 to send the relevant information of the data received by the virtual network card to different second virtual machines among the plurality of second virtual machines VM20 through the one-to-multiple shared queues.
  • the virtual network card can be created by the virtio user-mode program in the first virtual machine VM10. When the virtio user-mode program creates the virtual network card, the one-to-many shared queue is created.
  • the kernel data plane in the first virtual machine VM10 may include a shared queue transmission manager.
  • the shared queue transmission manager may be used to manage the transmission of the pair of multiple shared queues.
  • This shared queue transmission manager is represented as SQ transmission manager in 4.
  • a one-to-one shared queue can be used to implement data transmission between the first virtual machine VM10 and a single second virtual machine.
  • the virtualization system may also include a virtual machine manager 30.
  • the virtual machine manager 30 may be a virtual machine monitor (virtual machine monitor, VMM) or a hypervisor (hypervisor).
  • VMM virtual machine monitor
  • hypervisor hypervisor
  • the virtual machine manager 30 serves as a management layer and can be used to: complete the management and allocation of hardware resources; present a virtual hardware platform for multiple virtual machines; and perform scheduling and isolation of multiple virtual machines.
  • the virtual machine manager 30 may include a memory mapping module.
  • the memory mapping module may be used to implement mapping between multiple second virtual machines VM20 and the same shared memory, that is, allowing the multiple second virtual machines VM20 to A second virtual machine accesses the same shared memory.
  • the above-mentioned virtualization system may be a software layer running on a hardware layer, and the hardware layer may include multiple hardware resources such as a processor, memory, disk, network card, and peripherals.
  • the processor may be a central processing unit (CPU), an artificial intelligence (artificial intelligence, AI) processor, and/or a network processor.
  • the memory may include random access memory and/or read-only memory, etc.
  • the peripheral device is the abbreviation of external device and may include input device, display device and/or printing device, etc.
  • FIG 5 is a schematic flowchart of a data transmission method provided by an embodiment of the present application. This method can be applied to the virtualization system shown in Figure 3 or Figure 4. The method includes the following steps.
  • the first virtual machine receives data, which is data sent to at least two second virtual machines.
  • the data may be multicast data or broadcast data.
  • the data is multicast data
  • the at least two second virtual machines are part of all second virtual machines in the virtualization system.
  • the data is broadcast data, the at least two second virtual machines are all second virtual machines among all second virtual machines in the virtualization system.
  • the data can be a data packet, so the multicast data can be a multicast data packet and the broadcast data can be a broadcast data packet.
  • the first virtual machine when the first virtual machine receives data, the first virtual machine can parse the data to obtain the purpose information of the data, and thereby determine relevant information of the second virtual machine that receives the data based on the purpose information, such as , the relevant information may include the number of the second virtual machine that receives the data, and/or the identification or address of the second virtual machine that receives the data, etc. Further, the first virtual machine can determine whether the data is sent to one second virtual machine or to at least two second virtual machines based on the relevant information of the second virtual machine that receives the data.
  • the first virtual machine can also obtain attribute information of the data by parsing the data, and the attribute information can be used to indicate that the data is unicast data, multicast data or broadcast data.
  • the attribute information of the data may be two bits (2bits).
  • the value of the 2bits is 00 for representing unicast data.
  • the value of the 2bits is 01 for representing multicast data.
  • the value of the 2bits is 01 for representing multicast data.
  • the value of the 2bits is 01 for representing multicast data.
  • a value of 10 is used to represent multicast data.
  • receiving the data by the first virtual machine may mean that the virtual network card in the first virtual machine receives the data.
  • the data is initially received by the physical network card in the hardware layer running the virtualization system.
  • the physical network card can transmit the data to the first virtual machine.
  • the network card driver transmits the data to the bridge, and the bridge can allocate the data to the virtual network card in the first virtual machine, so that the virtual network card in the first virtual machine receives the data.
  • the shared memory is the shared memory of the first virtual machine, and the at least two second virtual machines can access the shared memory.
  • the first virtual machine stores the data information of the data in the shared memory.
  • the data information of the data may refer to information related to the data, and the data information may include the data, the verification information of the data, or the identification of the data (for example, the identification of the data packet), etc.
  • the data information also includes information such as the storage address of the data in the shared memory; further, the data information may also include the size of the data, the number of at least two second virtual machines that receive the data, and One or more of identification and other information, the embodiments of this application do not specifically limit this.
  • the first virtual machine can query the shared memory to determine whether the data exists in the shared memory. If the data exists in the shared memory, that is, the data has been stored in the shared memory, the first virtual machine can execute the following step S203. If the data does not exist in the shared memory, that is, the data is not stored in the shared memory, the first virtual machine can store the data information of the data in the shared memory and obtain the data information in the shared memory.
  • the storage address can be specifically executed by the vhost in the first virtual machine.
  • the vhost in the first virtual machine when the first virtual machine receives the data through virtual network card a and the data does not exist in the shared memory, the vhost in the first virtual machine stores the data in the shared memory. in shared memory.
  • the vhost in the first virtual machine does not need to store the data in the shared memory.
  • the first virtual machine determines whether the data exists in the shared memory, including: the first virtual machine determines whether the data exists in the shared memory. The identifier; if the identifier exists in the shared memory, it is determined that the data exists in the shared memory; if the identifier does not exist in the shared memory, it is determined that the data does not exist in the shared memory.
  • the first virtual machine determines whether the data exists in the shared memory, including: the first virtual machine determines whether the data exists in the shared memory. There is verification information for the data; if the verification information exists in the shared memory, it is determined that the data exists in the shared memory; if the verification information does not exist in the shared memory, it is determined that the data does not exist in the shared memory. data.
  • the verification information can be a checksum. The checksum can be used to verify whether the data is received correctly. The checksum can be calculated by the first virtual machine according to a certain verification algorithm on the data. obtained, and the embodiments of this application do not specifically limit this.
  • S203 For any second virtual machine among the at least two second virtual machines, the first virtual machine sends the storage address of the data in the shared memory to the second virtual machine.
  • the server virtual machine may send the data to each of the at least two second virtual machines.
  • the storage address of the data information in the shared memory When any second virtual machine among the at least two second virtual machines receives the storage address, the second virtual machine can access the shared memory according to the storage address to obtain the data stored in the shared memory.
  • the at least two second virtual machines include VM21 and VM22.
  • the first virtual machine can send the storage address to the second virtual machine VM21 and the second virtual machine VM22 respectively.
  • this storage address as add.
  • the data transmission method from receiving the data from the first virtual machine to the process of the at least two second virtual machines accessing the shared memory to obtain the data, the first virtual machine only copies the data once (i.e., the (the data is stored in the shared memory), the at least two second virtual machines can receive the data. That is to say, the data transmission method provided by the embodiment of the present application can realize the reception of multicast data and broadcast data through only one copy, thereby greatly reducing the computing resource overhead.
  • the virtualization system further includes a one-to-many shared queue through which the first virtual machine and the at least two second virtual machines can interact.
  • the first virtual machine sends the storage address of the data information in the shared memory to the second virtual machine, including: the first virtual machine sends the first virtual machine to the third virtual machine through the one-to-many shared queue.
  • the second virtual machine sends the storage address.
  • the second virtual machine may receive the storage address from the first virtual machine through the one-to-many shared queue.
  • the first virtual machine can sequentially send a notification information to each of the at least two second virtual machines through the one-to-many shared queue.
  • the notification information of each second virtual machine The information may include the storage address and the identification of the second virtual machine.
  • Each of the at least two second virtual machines can monitor the information sent by the first virtual machine through the one-to-many shared queue. If the second virtual machine detects the third message in a certain notification information, When the identity of the second virtual machine is its own identity, the second virtual machine can determine that the notification information is sent to itself, so that the second virtual machine can receive the notification information.
  • the first virtual machine also includes at least two virtual network cards, and the at least two virtual network cards correspond to the at least two second virtual machines. That is, each of the at least two virtual network cards can be used for Provide a virtual network card service to one of the at least two second virtual machines.
  • a second virtual machine corresponds to a virtual network card. It can be understood that the virtual network card is the virtual network card of the second virtual machine or the virtual network card is the virtual network card perceived by the second virtual machine. .
  • the at least two virtual network cards may be created by the first virtual machine.
  • the one-to-many shared queue may also be created by the first virtual machine.
  • the first virtual machine may also bind the at least two virtual network cards. and the one-to-many shared queue, so that the data information received by the at least two virtual network cards can be transmitted to the at least two second virtual machines through the one-to-many shared queue.
  • the first virtual machine can create the one-to-many shared queue and bind it while creating any one of the at least two virtual network cards, and create other virtual network cards and simultaneously combine the other virtual network cards with the other virtual network cards. This one-to-many shared queue binding.
  • the first virtual machine when the first virtual machine creates a virtual network card for the second virtual machine, the first virtual machine can also create multiple one-to-one shared queues, and the number of the one-to-one shared queues can be equal to the number of the one-to-one shared queues. Relevant to the number of virtual processors in the second virtual machine. For example, the number of the second virtual machines is M.
  • the first virtual machine creates a virtual network card for the second virtual machine, it also creates (M-1) one-to-one shared queues and a one-to-many shared queue.
  • the following description takes the first virtual machine creating a virtual network card and a one-to-many shared queue, and binding the virtual network card and the one-to-many shared queue as an example.
  • the first virtual machine creates a virtual network card for a second virtual machine
  • the virtio user mode program calls the network card driver to create a virtual network card through the interface corresponding to the network card driver, schedules the vhost to create a one-to-many shared queue through the interface corresponding to the vhost, and binds the virtual network card to the one-to-many shared queue.
  • the virtualization system also includes a virtual machine manager, which may be a virtual machine monitor VMM or a hypervisor.
  • the virtual machine manager can be used to register the virtual network card created by the first virtual machine, cancel the virtual network card when the first virtual machine deletes the virtual network card, create a mapping between the second virtual machine and the above-mentioned shared memory, or cancel the second virtual machine. 2. Mapping between virtual machines and shared memory, etc.
  • the first virtual machine can also register the virtual network card with the virtual machine manager.
  • the virtio kernel service in the first virtual machine can send a registration request to the virtual machine manager.
  • the registration request is used to register the virtual network card.
  • the virtual machine manager can register the virtual network card locally.
  • the virtual machine manager can also determine whether the second virtual machine where the virtual network card is located is mapped to the above-mentioned shared memory. If the second virtual machine is not mapped to the shared memory, the virtual machine manager The server can create a mapping between the second virtual machine and the shared memory, that is, map the second virtual machine to the shared memory, so that the second virtual machine can access the shared memory.
  • the first virtual machine may also delete the virtual network card bound to the one-to-many shared queue of each second virtual machine, and unregister the virtual network card from the virtual machine manager.
  • the virtio kernel service in the first virtual machine can send a deletion request to the virtual machine manager.
  • the deletion request is used to delete the virtual network card.
  • the virtual machine manager receives the deletion request , the virtual machine manager can unregister the virtual network card locally.
  • the virtual machine manager can also determine whether the second virtual machine where the virtual network card is located uses the above-mentioned shared memory (or whether there is a virtual device using the shared memory in the second virtual machine).
  • the virtual machine manager can delete the mapping between the second virtual machine and the shared memory.
  • the second virtual machine demaps the shared memory so that the second virtual machine cannot access the shared memory.
  • the virtual machine manager can map the second virtual machine to the shared memory and unmap the second virtual machine from the shared memory, so that multiple second virtual machines on the virtualization system can be configured. Virtual machines flexibly access the same shared memory.
  • the virtual machine manager maps at least two second virtual machines to the shared memory, so that the at least two second virtual machines can access the same shared memory, and then implement multicast data or broadcast through the shared memory. data reception, reducing the reception overhead of multicast data or broadcast data; at the same time, the virtual machine manager can also, when determining that a second virtual machine does not use the above-mentioned shared memory, separate the second virtual machine from the shared memory. Demapping can prevent the second virtual machine from illegally accessing the shared memory, thereby ensuring the security of receiving multicast data or broadcast data.
  • the virtualization system includes hardware structures and/or software modules corresponding to each function.
  • the present application can be implemented in the form of hardware or a combination of hardware and computer software. Whether a function is performed by hardware or computer software driving the hardware depends on the specific application and design constraints of the technical solution. Skilled artisans may implement the described functionality using different methods for each specific application, but such implementations should not be considered beyond the scope of this application.
  • Embodiments of the present application can divide the virtualization system into functional modules according to the above method examples.
  • functional modules can be divided into corresponding functional modules, or two or more functions can be integrated into one processing module.
  • the above integrated modules can be implemented in the form of hardware or software function modules. It should be noted that the division of modules in the embodiment of the present application is schematic and is only a logical function division. In actual implementation, there may be other division methods.
  • this embodiment of the present application also provides a data transmission device, which can be used as a first virtual machine in a virtualization system.
  • the virtualization system also includes a plurality of second virtual machines, allowing the plurality of second virtual machines to The shared memory accessed by at least two of the second virtual machines.
  • the device includes: a receiving unit 301, a processing unit 302 and a sending unit 303.
  • the receiving unit 301 is configured to: receive data, the data being sent to the at least two second virtual machines.
  • the processing unit 302 is configured to: when the data does not exist in the shared memory, store the data information of the data in the shared memory, where the data information includes the data.
  • the sending unit 303 is configured to: for any second virtual machine among the at least two second virtual machines, send the storage address of the data information in the shared memory to the second virtual machine.
  • the data is broadcast data; or, the data is multicast data.
  • the total number of copies of the data received by the at least two second virtual machines is 1.
  • the sending unit 303 is also configured to: when the data exists in the shared memory, send the storage address of the data information in the shared memory to the second virtual machine.
  • the data information also includes verification information of the data.
  • the processing unit 302 is also used to: determine the verification information of the data; if the verification information already exists in the memory, determine that the data exists in the shared memory. ; If the verification information does not exist in the memory, determine that the data does not exist in the shared memory.
  • the virtualization system further includes a one-to-many shared queue
  • the sending unit 303 is further configured to: send the storage address to the second virtual machine through the one-to-many shared queue.
  • the first virtual machine further includes a virtual network card.
  • the processing unit 302 is further configured to: bind the virtual network card and the one-to-many shared queue;
  • the receiving unit 301 is also configured to receive data through the virtual network card.
  • the virtual network card includes at least two virtual network cards, and the at least two virtual network cards correspond to the at least two second virtual machines.
  • the virtualization system also includes a virtual machine manager; the sending unit 303 is also used to: Any one of the at least two virtual network cards sends a registration request to the virtual machine manager.
  • the registration request is used to register the virtual network card, so that when the virtual machine manager receives the registration request, it can use If any second virtual machine of the virtual network card is not mapped to the shared memory, establish a mapping between the second virtual machine and the shared memory.
  • the sending unit 303 is also configured to: send a deletion request to the virtual machine manager.
  • the deletion request is used to cancel the virtual network card, so that when the virtual machine manager receives the deletion request, if the virtual network card The second virtual machine does not use the shared memory, and the mapping between the second virtual machine and the shared memory is released.
  • the data transmission device when the data transmission device receives data sent to at least two second virtual machines, if the data does not exist in the shared memory, the data information of the data is stored in the shared memory, The storage address of the data in the shared memory is sent to at least two second virtual machines, so that the at least two second virtual machines can access the shared memory to obtain the data.
  • the data transmission device can realize the reception of the data by the at least two second virtual machines through only one copy (that is, storing the data in the shared memory). That is, the method can only copy the data once.
  • the second copy realizes the reception of multicast data and broadcast data, thus greatly reducing the computing resource overhead.
  • a virtualization system is also provided.
  • the structure of the virtualization system can be as shown in Figure 3 or Figure 4.
  • the virtualization system includes a first virtual machine and a plurality of second virtual machines, and the first virtual machine includes a shared memory that is allowed to be accessed by at least two second virtual machines of the plurality of second virtual machines.
  • the first virtual machine is configured to: receive data, the data is sent to the at least two second virtual machines; when the data does not exist in the shared memory, the data of the data
  • the information is stored in the shared memory, and the data information includes the data; for any second virtual machine among the at least two second virtual machines, the storage of the data information in the shared memory is sent to the second virtual machine. address.
  • the data is broadcast data; or, the data is multicast data.
  • the total number of copies of the data received by the at least two second virtual machines is 1.
  • the first virtual machine is also configured to: when the data exists in the shared memory, send the storage address of the data information in the shared memory to the second virtual machine.
  • the data information also includes verification information of the data
  • the first virtual machine is further configured to: determine the verification information of the data; if the verification information already exists in the memory, determine The data exists in the shared memory; if the verification information does not exist in the memory, it is determined that the data does not exist in the shared memory.
  • the virtualization system further includes a one-to-many shared queue
  • the first virtual machine is further configured to: send the storage address to the second virtual machine through the one-to-many shared queue.
  • the first virtual machine also includes a virtual network card. Before the first virtual machine receives data, the first virtual machine is also used to: bind the virtual network card and the one-to-many shared queue; correspondingly, the first virtual machine The virtual machine is also used to: receive data through the virtual network card.
  • the virtual network card includes at least two virtual network cards, and the at least two virtual network cards correspond to the at least two second virtual machines.
  • the virtualization system further includes a virtual machine manager.
  • the first virtual machine is further configured to: send a registration request to the virtual machine manager for any one of the at least two virtual network cards, where the registration request is used to register the virtual network card.
  • the virtual machine manager is configured to: when receiving the registration request, for any second virtual machine using the virtual network card, if the second virtual machine is not mapped to the shared memory, create the second virtual machine A mapping to this shared memory.
  • the first virtual machine is further configured to: send a deletion request to the virtual machine manager, where the deletion request is used to log out the virtual network card.
  • the virtual machine manager is also configured to: when receiving the deletion request, if the second virtual machine where the virtual network card is located does not use the shared memory, release the mapping between the second virtual machine and the shared memory. .
  • a communication device in another embodiment of the present application, includes a hardware layer and a virtualization system running on the hardware layer.
  • the virtualization system It can be the virtualization system provided above.
  • the virtualization system includes a first virtual machine and a plurality of second virtual machines, and the first virtual machine includes a shared memory that is allowed to be accessed by the plurality of second virtual machines.
  • the hardware layer may include multiple hardware resources such as a processor, memory, disk, network card, and peripherals.
  • Figure 11 takes the hardware layer including a processor, memory, and network card as an example for illustration.
  • a computer-readable storage medium is also provided.
  • Computer programs or instructions are stored in the computer-readable storage medium. When the computer program or instructions are run, the above method embodiments are implemented. The data transfer method provided.
  • a computer program product is also provided.
  • the computer program product includes a computer program or instructions. When the computer program or instructions are run, the data transmission method provided by the above method embodiment is implemented. .
  • the disclosed devices, virtualization systems and methods can be implemented in other ways.
  • the embodiments of the data transmission device described above are only illustrative.
  • the division of modules or units is only a functional division.
  • Units or components may be combined or integrated into another device, or some features may be omitted, or not performed.
  • the coupling or direct coupling or communication connection between each other shown or discussed may be through some interfaces, and the indirect coupling or communication connection of the devices or units may be in electrical, mechanical or other forms.
  • the units described as separate components may or may not be physically separated.
  • the components shown as units may be one physical unit or multiple physical units, that is, they may be located in one place, or they may be distributed to multiple different places. . Some or all of the units can be selected according to actual needs to achieve the purpose of the solution of this embodiment.

Abstract

一种数据传输方法及虚拟化系统,涉及虚拟化技术领域,用于减小组播数据或者广播数据的接收开销。该虚拟化系统包括第一虚拟机和多个第二虚拟机,第一虚拟机包括允许至少两个第二虚拟机访问的共享内存,该方法包括:第一虚拟机接收数据,该数据是发送给该至少两个第二虚拟机的;当该共享内存中不存在该数据时,该第一虚拟机将该数据存储在该共享内存中;对于该至少两个第二虚拟机中的任一第二虚拟机,该第一虚拟机向该第二虚拟机发送该数据在该共享内存中的存储地址。

Description

一种数据传输方法及虚拟化系统 技术领域
本申请涉及虚拟化技术领域,尤其涉及一种数据传输方法及虚拟化系统。
背景技术
车载场景虚拟化技术支持在同一硬件平台上承载异构操作系统,实现了车载计算单元的整合和算力共享。车载场景虚拟化技术主要包括计算资源虚拟化和输入输出(input/output,I/O)虚拟化,该I/O虚拟化通常可以包括网络设备虚拟化。网络设备虚拟化(比如,网卡虚拟化)是多个虚拟机(virtual machine,VM)之间通信的重要基础组件。随着车载互联网络的拓扑复杂度提升和带宽提升,网络设备虚拟化的物理计算资源消耗占比越来越高。
目前,网络设备虚拟化在具体实现时普遍采用半I/O虚拟化的virtio技术,该技术采用了零拷贝(zero-copy)的设计思想,具体是通过主机与虚拟机之间的共享内存将数据包共享给单个虚拟机,这样主机可以直接访问该虚拟机的内存,从而无需额外的内存拷贝操作,因而具有良好的性能表现。
但是,上述virtio技术仅支持一对一通信,即仅支持主机与单个虚拟机之间的缓存共享,对于N(N为大于1的整数)个虚拟机对应的广播数据包的接收场景,则需要将该广播数据包从主机的缓存中通过N次拷贝以分别拷贝至每个虚拟机对应的共享缓存中,从而产生了较大的计算资源开销。
发明内容
本申请提供一种数据传输方法及虚拟化系统,用于减小组播数据或者广播数据的接收开销。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种数据传输方法,应用于虚拟化系统中,该虚拟化系统包括第一虚拟机和多个第二虚拟机,该第一虚拟机包括允许至少两个第二虚拟机访问的共享内存,该方法包括:该第一虚拟机接收数据,该数据是发送给该至少两个第二虚拟机的,比如,该数据为广播数据或者组播数据;当该共享内存中不存在该数据时,该第一虚拟机将该数据存储在该共享内存中;对于该至少两个第二虚拟机中的任一第二虚拟机,该第一虚拟机向该第二虚拟机发送该数据在该共享内存中的存储地址,以使得该至少两个第二虚拟机可以访问该共享内存获取该数据。
在上述技术方案中,该第一虚拟机在接收到发送给至少两个第二虚拟机的数据时,若该共享内存中不存在该数据,将该数据存储在该共享内存中,并向至少两个第二虚拟机发送该数据在该共享内存中的存储地址,从而使得该至少两个第二虚拟机可以访问该共享内存获取该数据。在此过程中,该第一虚拟机仅通过1次拷贝(即将该数据存储在共享内存)即可实现该至少两个第二虚拟机对该数据的接收,也即是,该方法能够仅通过1次拷贝实现组播数据和广播数据的接收,从而大大降低了计算资源开销。
在第一方面的一种可能的实现方式中,该方法还包括:当该共享内存中存在该数据 时,该第一虚拟机向该第二虚拟机发送该数据在该共享内存中的存储地址。上述可能的实现方式中,若该共享内存中存在该数据,该第一虚拟机可以直接发送该数据在该共享内存中的存储地址,从而使得该第二虚拟机可以访问该共享内存获取该数据,从而减小第二虚拟机接收该数据的开销,进而降低计算资源开销。
在第一方面的一种可能的实现方式中,该至少两个第二虚拟机接收该数据的总拷贝次数为1。上述可能的实现方式中,该第一虚拟机仅通过1次拷贝即可实现该至少两个第二虚拟机对该数据的接收,从而大大降低了计算资源开销。
在第一方面的一种可能的实现方式中,该第一虚拟机接收数据之后,该方法还包括:该第一虚拟机确定该数据的校验信息;若该共享内存中已存在该校验信息,该第一虚拟机确定该共享内存中存在该数据;若该共享内存中不存在该校验信息,该第一虚拟机确定该共享内存中不存在该数据。上述可能的实现方式中,该第一虚拟机可以通过该数据的校验信息确定该共享内存中是否存在该数据。
在第一方面的一种可能的实现方式中,该虚拟化系统还包括一对多共享队列,该第一虚拟机与该至少两个第二虚拟机之间可以通过该一对多共享队列交互;相应的,该第一虚拟机向该第二虚拟机发送该数据在该共享内存中的存储地址,包括:该第一虚拟机通过该一对多共享队列向该第二虚拟机发送该存储地址。上述可能的实现方式中,该第一虚拟机可以通过该一对多共享队列向该至少两个第二虚拟机发送该数据在该共享内存中的存储地址,从而使得该至少两个第二虚拟机可以访问该共享内存获取该数据。
在第一方面的一种可能的实现方式中,该第一虚拟机还包括虚拟网卡,该第一虚拟机接收数据之前,该方法还包括:该第一虚拟机绑定该虚拟网卡和该一对多共享队列;相应的,该第一虚拟机接收数据,包括:该第一虚拟机通过该虚拟网卡接收数据。上述可能的实现方式中,该第一虚拟机通过绑定该虚拟网卡和该一对多共享队列,可以使得后续该虚拟网卡接收到的数据相关信息可以通过该一对多共享队列发送给第二虚拟机。
在第一方面的一种可能的实现方式中,该虚拟网卡包括至少两个,该至少两个虚拟网卡与该至少两个第二虚拟机一一对应,该虚拟化系统还包括虚拟机管理器,该方法还包括:对于该至少两个虚拟网卡中的任一虚拟网卡,该第一虚拟机向该虚拟机管理器发送注册请求,该注册请求用于注册该虚拟网卡;当该虚拟机管理器接收到该注册请求时,若该虚拟网卡对应的第二虚拟机未映射至该共享内存,该虚拟机管理器建立该第二虚拟机与该共享内存之间的映射。上述可能的实现方式中,该虚拟机管理器通过将第二虚拟机映射至该共享内存、以及将第二虚拟机与该共享内存解映射的操作,可以使该虚拟化系统上的多个第二虚拟机灵活地访问同一共享内存。
在第一方面的一种可能的实现方式中,该方法还包括:该第一虚拟机向该虚拟机管理器发送删除请求,该删除请求用于注销该虚拟网卡;当该虚拟机管理器接收到该删除请求时,若该虚拟网卡对应的第二虚拟机不使用该共享内存,该虚拟机管理器解除该第二虚拟机与该共享内存之间的映射。上述可能的实现方式中,该虚拟机管理器可以在某一第二虚拟机不使用上述共享内存时,将该第二虚拟机与该共享内存解映射,这样可以避免该第二虚拟机对于该共享内存的非法访问,进而保证数据接收的安全性。
第二方面,提供一种数据传输装置,该装置可以作为第一虚拟机应用于虚拟化系统中,该虚拟化系统还包括多个第二虚拟机,允许该多个第二虚拟机中的至少两个第二虚拟机访 问的共享内存;该装置包括:接收单元,用于接收数据,该数据是发送给该至少两个第二虚拟机的;处理单元,用于当该共享内存中不存在该数据时,将该数据的数据信息存储在该共享内存中;发送单元,用于对于该至少两个第二虚拟机中的任一第二虚拟机,向该第二虚拟机发送该数据在该共享内存中的存储地址。可选的,该数据为广播数据;或者,该数据为组播数据。
在第二方面的一种可能的实现方式中,该发送单元还用于:当该共享内存中存在该数据时,向该第二虚拟机发送该数据在该共享内存中的存储地址。
在第二方面的一种可能的实现方式中,该至少两个第二虚拟机接收该数据的总拷贝次数为1。
在第二方面的一种可能的实现方式中,该数据信息还包括该数据的校验信息,该处理单元还用于:确定该数据的校验信息;若该共享内存中已存在该校验信息,确定该共享内存中存在该数据;若该共享内存中不存在该校验信息,确定该共享内存中不存在该数据。
在第二方面的一种可能的实现方式中,该虚拟化系统还包括一对多共享队列,该发送单元还用于:通过该一对多共享队列向该第二虚拟机发送该存储地址。
在第二方面的一种可能的实现方式中,该第一虚拟机还包括虚拟网卡,该第一虚拟机接收数据之前,该处理单元还用于:绑定该虚拟网卡和该一对多共享队列;相应的,该接收单元还用于:通过该虚拟网卡接收数据。
在第二方面的一种可能的实现方式中,该虚拟网卡包括至少两个,该至少两个虚拟网卡与该至少两个第二虚拟机一一对应,该虚拟化系统还包括虚拟机管理器;该发送单元还用于:对于该至少两个虚拟网卡中的任一虚拟网卡,向该虚拟机管理器发送注册请求,该注册请求用于注册该虚拟网卡,以使该虚拟机管理器在接收到该注册请求时,若该虚拟网卡对应的第二虚拟机未映射至该共享内存,建立该第二虚拟机与该共享内存之间的映射。
在第二方面的一种可能的实现方式中,该发送单元还用于:向该虚拟机管理器发送删除请求,该删除请求用于注销该虚拟网卡,以使该虚拟机管理器在接收到该删除请求时,若该虚拟网卡对应的第二虚拟机不使用该共享内存,解除该第二虚拟机与该共享内存之间的映射。
第三方面,提供一种虚拟化系统,该虚拟化系统包括第一虚拟机和多个第二虚拟机,该第一虚拟机包括允许该多个第二虚拟机中的至少两个第二虚拟机访问的共享内存;该第一虚拟机用于:接收数据,该数据是发送给该至少两个第二虚拟机的;该第一虚拟机还用于:当该共享内存中不存在该数据时,将该数据存储在该共享内存中;该第一虚拟机还用于:对于该至少两个第二虚拟机中的任一第二虚拟机,向该第二虚拟机发送该数据在该共享内存中的存储地址。可选的,该数据为广播数据;或者,该数据为组播数据。
在第三方面的一种可能的实现方式中,该第一虚拟机还用于:当该共享内存中存在该数据时,向该第二虚拟机发送该数据在该共享内存中的存储地址。
在第三方面的一种可能的实现方式中,该至少两个第二虚拟机接收该数据的总拷贝次数为1。
在第三方面的一种可能的实现方式中,该数据信息还包括该数据的校验信息,该第一虚拟机还用于:确定该数据的校验信息;若该共享内存中已存在该校验信息,确定该共 享内存中存在该数据;若该共享内存中不存在该校验信息,确定该共享内存中不存在该数据。
在第三方面的一种可能的实现方式中,该虚拟化系统还包括一对多共享队列,该第一虚拟机还用于:通过该一对多共享队列向该第二虚拟机发送该存储地址。
在第三方面的一种可能的实现方式中,该第一虚拟机还包括虚拟网卡,该第一虚拟机接收数据之前,该第一虚拟机还用于:绑定该虚拟网卡和该一对多共享队列;相应的,该第一虚拟机还用于:通过该虚拟网卡接收数据。
在第三方面的一种可能的实现方式中,该虚拟网卡包括至少两个,该至少两个虚拟网卡与该至少两个第二虚拟机一一对应,该虚拟化系统还包括虚拟机管理器;该第一虚拟机,还用于对于该至少两个虚拟网卡中的任一虚拟网卡,向该虚拟机管理器发送注册请求,该注册请求用于注册该虚拟网卡;该虚拟机管理器,用于当接收到该注册请求时,若该虚拟网卡对应的第二虚拟机未映射至该共享内存,建立该第二虚拟机与该共享内存之间的映射。
在第三方面的一种可能的实现方式中,该第一虚拟机还用于:向该虚拟机管理器发送删除请求,该删除请求用于注销该虚拟网卡;该虚拟机管理器用于:当接收到该删除请求时,若该虚拟网卡对应的第二虚拟机不使用该共享内存,解除该第二虚拟机与该共享内存之间的映射。
在本申请的另一方面,还提供一种通信设备,该通信设备硬件层,以及运行在该硬件层上的虚拟化系统,该虚拟化系统为第三方面或第三方面的任一种可能的实现方式所提供的虚拟化系统。可选的,该硬件层包括处理器、内存和网卡。
在本申请的另一方面,还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,当该计算机程序或指令被运行时,实现如第一方面或第一方面的任一种可能的实现方式所提供的数据传输方法。
在本申请的另一方面,还提供一种计算机程序产品,计算机程序产品包括计算机程序或指令,当该计算机程序或指令被设备运行时,使得该设备实现上述任一方面所提供的数据传输方法。
可以理解地,上述各方面提供的数据传输装置、虚拟化系统、通信设备、计算机可读存储介质和计算机程序产品均包括数据传输方法所描述的内容,因此,其所能达到的有益效果可参考上文中数据传输方法的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种virtio-net架构的示意图;
图2为本申请实施例提供的一种vhost-net架构的示意图;
图3为本申请实施例提供的一种虚拟化系统的结构示意图;
图4为本申请实施例提供的另一种虚拟化系统的结构示意图;
图5为本申请实施例提供的一种数据传输方法的流程示意图;
图6为本申请实施例提供的一种虚拟化系统传输数据的示意图;
图7为本申请实施例提供的一种绑定虚拟网卡和一对多共享队列的流程示意图;
图8为本申请实施例提供的一种将第二虚拟机映射至共享内存的流程示意图;
图9为本申请实施例提供的一种将第二虚拟机与共享内存解映射的流程示意图;
图10为本申请实施例提供的一种数据传输装置的结构示意图;
图11为本申请实施例提供的一种通信设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例进行描述。
本申请中,“至少一个”是指一个或者多个,“多个”和“至少两个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或a、b和c,其中a,b,c可以是单个,也可以是多个。另外,本申请的实施例采用了“第一”、“第二”等字样对名称或功能或作用类似的对象进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。
本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在介绍本申请实施例之前,首先对本申请所涉及的虚拟化技术的相关内容进行介绍说明。
虚拟化技术是一种资源管理技术,可以将计算机的各种硬件资源,如中央处理器(central processing unit,CPU)、存储器(memory)、网络接口卡(network interface card,NIC)(也可以称为网卡)、以及诸如硬盘(disk)和磁盘等各种存储等,予以抽象、转换后呈现出来,打破硬件结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些硬件资源。这些硬件资源的虚拟化功能不受现有资源的架设方式、地域或物理组态所限制。
虚拟化技术主要包括计算资源虚拟化和输入输出(input/output,I/O)虚拟化,该I/O虚拟化可以包括网络设备虚拟化。网络设备虚拟化在具体实现时普遍采用半I/O虚拟化的虚拟化输入输出(virtual input output,virtio)技术。virtio是一套通用I/O设备虚拟化的程序,是对半虚拟化的虚拟机管理器中的一组通用I/O设备的抽象。virtio提供了一套上层应用与各虚拟机管理器虚拟化设备之间的通信框架和编程接口,能够减少跨平台所带来的兼容性问题,大大提高驱动程序开发效率。目前,该virtio的架构可以包括virtio-net和vhost-net两种,下面以虚拟化IO设备为虚拟网卡为例,通过图1和图2所示的架构为例对这两种架构进行举例说明。
如图1所示,该virtio-net架构包括服务虚拟机VM0和多个客户虚拟机VM1至VMn,n为正整数。该服务虚拟机VM0包括virtio用户态程序,以及位于内核中的virtio内核服务、桥接器、网卡驱动和多个虚拟网卡,每个虚拟网卡可以对应一个客户虚拟机。该多个客户虚拟机VM1至VMn中的每个客户虚拟机可以包括共享内存和虚拟网卡,该服务虚拟机VM0中的virtio用户态程序可以访问不同客户虚拟机的共享内存。其中,在该服务虚拟机VM0中,该桥接器用于连接该网卡驱动和该多个虚拟网卡,并将该网卡驱动接收到的 来自网络的数据包分配给对应的虚拟网卡,该virtio用户态程序可以从该多个虚拟网卡获取数据包,并在该数据包为某一客户虚拟机的数据包时将该数据包存储在对应的客户虚拟机的共享内容中。上述图1以该多个客户虚拟机VM1至VMn包括两个客户虚拟机且表示为VM1和VM2,该服务虚拟机VM0包括两个虚拟网卡为例进行说明。
如图2所示,该vhost-net架构包括服务虚拟机VM0和多个客户虚拟机VM1至VMn,该服务虚拟机VM0包括virtio用户态程序,以及位于内核中的virtio内核服务、桥接器、网卡驱动、多个虚拟网卡和内核数据面vhost,该多个虚拟网卡中的每个虚拟网卡可以对应一个客户虚拟机。多个客户虚拟机VM1至VMn中的每个客户虚拟机可以包括共享内存和虚拟网卡,该服务虚拟机VM0中的内核数据面vhost可以访问不同客户虚拟机的共享内存。其中,在该服务虚拟机VM0中,该桥接器用于连接该网卡驱动和该多个虚拟网卡,并将该网卡驱动接收到的来自网络的数据包分配给对应的虚拟网卡,该内核数据面vhost可以从该多个虚拟网卡获取数据包,并在该数据包为某一客户虚拟机的数据包时将该数据包存储在对应的客户虚拟机的共享内存中。上述图2以该多个客户虚拟机VM1至VMn包括两个客户虚拟机且表示为VM1和VM2,该服务虚拟机VM0包括两个虚拟网卡为例进行说明。
上述virtio-net架构和vhost-net架构的区别之处在于:在virtio-net架构中,由服务虚拟机中的virtio用户态程序执行数据包的拷贝,从而该服务虚拟机在数据包的传输过程中需要在用户态与内核态之间频繁切换,导致数据吞吐量低。而vhost-net架构与virtio-net架构相比,将数据面的处理从用户态迁移到了内核态,由服务虚拟机中增加的内核数据面vhost执行数据包的拷贝,从而避免了在内核态与用户态之间的切换,从而提高了数据吞吐量。
此外,上述virtio-net架构和vhost-net架构在数据传输时,仅支持一对一通信,即仅支持服务虚拟机与单个客户虚拟机之间通过共享内存传输数据,当存在多个客户虚拟机时,需要为该多个客户虚拟机中的每个客户虚拟机分配一个共享内存,以通过不同的共享内存实现该服务虚拟机与不同的客户虚拟机之间的数据传输。当通过该方式传输接收端为N(N为大于1的整数)个客户虚拟机的数据包(比如,该数据包为组播数据包或者广播数据包)时,该服务虚拟机在接收到该数据包时,需要将该数据包从自身的缓存中分别拷贝至该N个客户虚拟机中每个客户虚拟机的共享内存中,即该服务虚拟机需要通过N次拷贝才能实现该N个客户虚拟机对该数据包的接收,从而产生了较大的计算资源开销。
基于此,本申请实施例的技术方案提供了应用于该虚拟化系统的数据传输方法,该虚拟化系统包括第一虚拟机和多个第二虚拟机,第一虚拟机包括允许多个第二虚拟机访问的共享内存,当第一虚拟机在接收到接收端为该多个第二虚拟机的数据(比如,广播数据包或组播数据包)时,该第一虚拟机可以将该数据存储在该共享内存中,并将相应的存储地址发送给该多个第二虚拟机。该方法与基于上述virtio-net架构和vhost-net架构传输数据包的方案相比,该服务虚拟机仅通过1次拷贝即可实现多个客户虚拟机对该数据包的接收,从而大大降低了计算资源开销。下面对本申请实施例的技术方案进行详细介绍说明。
图3为本申请实施例提供的一种虚拟化系统的结构示意图,该虚拟化系统可以是基于virtio的虚拟化系统,该虚拟化系统可以应用于多个虚拟机接收同一数据的应用场景中,比如,该应用场景可以为车载应用场景中的多媒体应用、基于互联网协议(internet protocol, IP)的可扩展面向服务的中间件(scalable service-oriented middleware over IP,SOME/IP)服务发现(service discovery,SD)协议的场景等。该虚拟化系统包括第一虚拟机VM10和多个第二虚拟机VM20,该第一虚拟机VM10包括共享内存11,该多个第二虚拟机VM20可以被允许访问该共享内存11。该第一虚拟机VM10可以为该多个第二虚拟机VM20提供虚拟化IO设备,并通过该共享内存11与该多个第二虚拟机VM20中的部分或全部进行数据传输。图3中以该多个第二虚拟机VM20包括两个第二虚拟机且分别表示为VM21和VM22为例进行说明。可选的,第一虚拟机也可以称为服务虚拟机,第二虚拟机也可以称为客户虚拟机。
其中,该第一虚拟机VM10除了包括共享内存11,还可以包括位于用户态的用户态程序(比如,virtio用户态程序),以及位于内核态的内核服务(比如,virtio内核服务)、桥接器、内核数据面、虚拟化IO设备、以及与该虚拟化IO设备对应的驱动等,该虚拟化IO设备和该驱动与该桥接器连接,该虚拟化IO设备还与该内核数据面连接,该内核数据面也可以称为vhost。该多个第二虚拟机VM20中的每个第二虚拟机可以包括虚拟化IO设备。该虚拟化IO设备包括但不限于虚拟网卡、虚拟显示设备和虚拟输入设备等。图3中以该虚拟化IO设备包括虚拟网卡,该第一虚拟机VM10包括两个虚拟网卡,且对应的驱动为网卡驱动为例进行说明。
可选的,如图4所示,该内核服务中可以包括共享内存分配器,该共享内存分配器可用于分配该共享内存11。比如,该共享内存分配器可用于分配该共享内存11的尺寸、或者该共享内存11对应的地址等,本申请实施例对此不作具体限制。
进一步的,该虚拟化系统还可以包括一对多共享队列(share queue,SQ),该一对多共享队列可用于实现该第一虚拟机VM10与该多个第二虚拟机VM20之间的交互。示例性的,该第一虚拟机VM10可以通过该一对多共享队列向该多个第二虚拟机VM20中的任意一个第二虚拟机发送信息,比如,该信息可以为数据在共享内存11中的存储地址;每个第二虚拟机可以通过该一对多共享队列接收来自该第一虚拟机VM10的信息、或者向该第一虚拟机VM10发送信息。图中未示出该一对多共享队列。
可选的,该一对多共享队列可以是该第一虚拟机VM10创建的,具体可以由该virtio用户态程序根据用户配置参数确定是否需要创建该一对多共享队列。示例性的,如图4所示,该virtio用户态程序中可以包括共享队列配置器,该共享队列配置器可用于配置是否需要创建该一对多共享队列。图4中将该共享队列配置器表示为SQ配置器。
在一种可能的实施例中,该第一虚拟机VM10可以在为该多个第二虚拟机VM20创建虚拟网卡时,创建该一对多共享队列,并绑定该虚拟网卡与该一对多共享队列,从而使得该第一虚拟机VM10可以将该虚拟网卡接收到的数据的相关信息通过该一对多个共享队列发送给该多个第二虚拟机VM20中的不同第二虚拟机。具体的,该虚拟网卡具体可以由该第一虚拟机VM10中的virtio用户态程序创建,该virtio用户态程序在创建该虚拟网卡时,创建该一对多共享队列。可选的,如图4所示,该第一虚拟机VM10中的内核数据面可以包括共享队列传输管理器,该共享队列传输管理器可用于负责管理该一对多个共享队列的传输,图4中将该共享队列传输管理器表示为SQ传输管理器。在其它一些可能的实施例中,该第一虚拟机VM10在创建该虚拟网卡时,除了创建该一对多共享队列,还可以为第二虚拟机创建一个或者多个一对一共享队列,每个一对一共享队列可用于实现该第一虚拟 机VM10与单个第二虚拟机之间的数据传输。
进一步的,该虚拟化系统还可以包括虚拟机管理器30。在实际应用中,该虚拟机管理器30可以为虚拟机监控器(virtual machine monitor,VMM)或者超级监控器(hypervisor)等。其中,该虚拟机管理器30作为管理层,可用于:完成硬件资源的管理和分配;为多个虚拟机呈现一个虚拟硬件平台;以及执行多个虚拟机的调度和隔离等。可选的,如图4所示,该虚拟机管理器30中可以包括内存映射模块,该内存映射模块可用于实现多个第二虚拟机VM20与同一共享内存之间的映射,即允许该多个第二虚拟机访问同一共享内存。
此外,上述虚拟化系统可以是运行在硬件层上的软件层,该硬件层可以包括处理器、内存、磁盘(disk)、网卡和外设等多个硬件资源。示例性的,该处理器可以为中央处理器(central processing unit,CPU)、人工智能(artificial intelligence,AI)处理器和/或网络处理器等。该内存可以包括随机存取存储器和/或只读存储器等。该外设是外部设备的简称,可以包括输入设备、显示设备和/或打印设备等。
图5为本申请实施例提供的一种数据传输方法的流程示意图,该方法可应用于上述图3或图4所示的虚拟化系统中,该方法包括以下几个步骤。
S201:第一虚拟机接收数据,该数据是发送给至少两个第二虚拟机的数据。
其中,该数据可以是组播数据,也可以是广播数据。当该数据为组播数据时,该至少两个第二虚拟机为该虚拟化系统中的所有第二虚拟机中的部分第二虚拟机。当该数据为广播数据时,该至少两个第二虚拟机为该虚拟化系统中的所有第二虚拟机中的全部第二虚拟机。可选的,该数据可以为数据包,从而组播数据可以为组播数据包、广播数据可以为广播数据包。
具体的,当该第一虚拟机接收到数据时,该第一虚拟机可以解析该数据以得到该数据的目的信息,从而根据该目的信息确定接收该数据的第二虚拟机的相关信息,比如,该相关信息可以包括接收该数据的第二虚拟机的数量,和/或,接收该数据的第二虚拟机的标识或地址等。进一步的,该第一虚拟机可以根据接收该数据的第二虚拟机的相关信息,确定该数据是发送给一个第二虚拟机的数据,还是发送给至少两个第二虚拟机的数据。
可选的,该第一虚拟机解析该数据还可以得到该数据的属性信息,该属性信息可用于指示该数据为单播数据、组播数据或者广播数据。示例性的,该数据的属性信息可以为两个比特(2bits),该2bits的取值为00用于表示单播数据,该2bits的取值为01用于表示组播数据,该2bits的取值为10用于表示组播数据。
在一种可能的实施例中,该第一虚拟机接收到该数据可以是指该第一虚拟机中的虚拟网卡接收到该数据。示例性的,如图6所示,该数据最初是由运行该虚拟化系统的硬件层中的物理网卡接收的,该物理网卡接收到该数据后可以将该数据传输至该第一虚拟机中的网卡驱动,该网卡驱动将该数据传输至桥接器,该桥接器可以将该数据分配给该第一虚拟机中的虚拟网卡,这样使得该第一虚拟机中的虚拟网卡接收到该数据。
S202:当共享内存中不存在该数据时,该第一虚拟机将该数据存储在该共享内存中。
其中,该共享内存是该第一虚拟机的共享内存,该至少两个第二虚拟机可以访问该共享内存。可选的,第一虚拟机将该数据的数据信息存储在该共享内存中。该数据的数据信息可以是指与该数据相关的信息,该数据信息可以包括该数据、该数据的校验信息或者该数据的标识(比如,数据包的标识)等。可选的,该数据信息还包括该数据在该共享内存 中的存储地址等信息;进一步的,该数据信息还可以包括该数据的尺寸、接收该数据的至少两个第二虚拟机的数量和标识等信息中的一个或者多个,本申请实施例对此不作具体限制。
具体的,当该第一虚拟机接收到该数据,且该数据是发送给至少两个客户端的数据(也可以替换为该数据为组播数据或广播数据)时,该第一虚拟机可以查询该共享内存,以确定该共享内存中是否存在该数据。若该共享内存中存在该数据,即该共享内存中已存储有该数据,该第一虚拟机可以执行下述步骤S203。若该共享内存中不存在该数据,即该共享内存中未存储有该数据,该第一虚拟机可以将该数据的数据信息存储在该共享内存中,并获取该数据信息在该共享内存中的存储地址,具体可以由该第一虚拟机中的vhost来执行。
示例性的,如图6所示,当该第一虚拟机通过虚拟网卡a接收到该数据,且该共享内存中不存在该数据时,该第一虚拟机中的vhost将该数据存储在该共享内存中。当该第一虚拟机通过虚拟网卡b接收到该数据,且该共享内存中已存在该数据时,该第一虚拟机中的vhost无需将该数据再存储在该共享内存中。
在一种可能实施例中,当上述数据信息包括数据的标识时,该第一虚拟机确定该共享内存中是否存在该数据,包括:该第一虚拟机确定该共享内存中是否存在该数据的标识;若该共享内存中存在该标识,则确定该共享内存中存在该数据;若该共享内存中不存在该标识,则确定该共享内存中不存在该数据。
在另一种可能的实施例中,当上述数据信息包括数据的校验信息时,该第一虚拟机确定该共享内存中是否存在该数据,包括:该第一虚拟机确定该共享内存中是否存在该数据的校验信息;若该共享内存中存在该校验信息,则确定该共享内存中存在该数据;若该共享内存中不存在该校验信息,则确定该共享内存中不存在该数据。可选的,该校验信息可以为校验和,该校验和可用于校验该数据是否正确接收,该校验和可以由该第一虚拟机按照一定的校验算法对该数据进行计算得到的,本申请实施例对此不作具体限制。
S203:对于该至少两个第二虚拟机中的任一第二虚拟机,该第一虚拟机向该第二虚拟机发送该数据在该共享内存中的存储地址。
当该共享内存中已存储有该数据或者该第一虚拟机将该数据存储在该共享内存之后,该服务器虚拟机可以向该至少两个第二虚拟机中的每个第二虚拟机发送该数据信息在该共享内存中的存储地址。当该至少两个第二虚拟机中的任一第二虚拟机接收到该存储地址时,该第二虚拟机可以根据该存储地址访问该共享内存来获取该共享内存中存储的该数据。示例性的,如图6所示,该至少两个第二虚拟机包括VM21和VM22,该第一虚拟机可以分别向第二虚拟机VM21和第二虚拟机VM22发送该存储地址,图6中将该存储地址表示为add。
在上述数据传输方法中,从该第一虚拟机接收该数据,至该至少两个第二虚拟机访问该共享内存获取该数据的过程中,该第一虚拟机仅通过1次拷贝(即将该数据存储在共享内存)即可实现该至少两个第二虚拟机对该数据的接收。也即是,本申请实施例提供的数据传输方法,能够仅通过1次拷贝实现组播数据和广播数据的接收,从而大大降低了计算资源开销。
进一步的,该虚拟化系统还包括一对多共享队列,该第一虚拟机与该至少两个第二虚拟机之间可以通过该一对多共享队列交互。在一种可能的实施例中,该第一虚拟机向该第 二虚拟机发送该数据信息在该共享内存中的存储地址,包括:该第一虚拟机通过该一对多共享队列向该第二虚拟机发送该存储地址。相应的,该第二虚拟机可以通过该一对多共享队列接收来自该第一虚拟机的该存储地址。
在一种示例中,该第一虚拟机可以通过该一对多共享队列依次向该至少两个第二虚拟机中的每个第二虚拟机发送一个通知信息,每个第二虚拟机的通知信息可以包括该存储地址和该第二虚拟机的标识。该至少两个第二虚拟机中的每个第二虚拟机可以监测该第一虚拟机通过该一对多共享队列发送的信息,若该第二虚拟机在监测到某一通知信息中的第二虚拟机标识为自身的标识时,该第二虚拟机可以确定该通知信息是发送给自己的,从而该第二虚拟机可以接收该通知信息。
进一步的,该第一虚拟机还包括至少两个虚拟网卡,该至少两个虚拟网卡与上述至少两个第二虚拟机一一对应,即该至少两个虚拟网卡中的每个虚拟网卡可用于为该至少两个第二虚拟机中的一个第二虚拟机提供虚拟网卡服务。对于该第二虚拟机而言,一个第二虚拟机与一个虚拟网卡对应,可以理解为该虚拟网卡是该第二虚拟机的虚拟网卡或者该虚拟网卡是该第二虚拟机感知到的虚拟网卡。
其中,该至少两个虚拟网卡可以是该第一虚拟机创建的,上述一对多共享队列也可以是该第一虚拟机创建的,该第一虚拟机还可以绑定该至少两个虚拟网卡与该一对多共享队列,以使该至少两个虚拟网卡接收的数据信息能够通过该一对多共享队列传输至该至少两个第二虚拟机。可选的,该第一虚拟机可以在创建该至少两个虚拟网卡中的任意一个虚拟网卡的同时创建该一对多共享队列并绑定,在创建其它虚拟网卡的同时将该其它虚拟网卡与该一对多共享队列绑定。
在一些可能的实施例中,该第一虚拟机为第二虚拟机创建虚拟网卡时,该第一虚拟机还可以创建多个一对一共享队列,该一对一共享队列的数量可以与该第二虚拟机中虚拟处理器的数量相关。比如,该第二虚拟机的数量为M,该第一虚拟机为第二虚拟机创建虚拟网卡的同时,创建(M-1)个一对一共享队列,以及一个一对多共享队列。
示例性的,下面以该第一虚拟机创建一个虚拟网卡和一对多共享队列,并绑定该虚拟网卡和该一对多共享队列为例进行说明。具体的,如图7所示,当该第一虚拟机为某一第二虚拟机创建虚拟网卡时,若该第一虚拟机中的virtio用户态程序中的用户参数使能一对多共享队列,该virtio用户态程序通过网卡驱动对应的接口调用网卡驱动创建一个虚拟网卡,通过vhost对应的接口调度该vhost创建一个一对多共享队列,并绑定该虚拟网卡与该一对多共享队列。
进一步的,该虚拟化系统还包括虚拟机管理器,该虚拟机管理器可以是虚拟机监控器VMM或者超级监控器(hypervisor)。该虚拟机管理器可用于对该第一虚拟机创建的虚拟网卡进行注册,在第一虚拟机删除虚拟网卡时注销虚拟网卡,创建第二虚拟机与上述共享内存之间的映射,或者解除第二虚拟机与共享内存之间的映射等。
在一种示例中,该第一虚拟机为每个第二虚拟机创建与一对多共享队列绑定的虚拟网卡之后,该第一虚拟机还可以向该虚拟机管理器注册该虚拟网卡。比如,如图8所示,该第一虚拟机中的virtio内核服务可以向该虚拟机管理器发送注册请求,该注册请求用于注册该虚拟网卡,当该虚拟机管理器接收到该注册请求时,该虚拟机管理器可以在本地注册该虚拟网卡。进一步的,如图8所示,该虚拟机管理器还可以确定该虚拟网卡所在的第二 虚拟机是否映射至上述共享内存,若该第二虚拟机未映射至该共享内存,该虚拟机管理器可以创建该第二虚拟机与该共享内存之间的映射,即将该第二虚拟机映射至该共享内存,以使该第二虚拟机可以访问该共享内存。
在另一种示例中,该第一虚拟机还可以删除每个第二虚拟机的与一对多共享队列绑定的虚拟网卡,并从该虚拟机管理器中注销该虚拟网卡。比如,如图9所示,该第一虚拟机中的virtio内核服务可以向该虚拟机管理器发送删除请求,该删除请求用于删除该虚拟网卡,当该虚拟机管理器接收到该删除请求时,该虚拟机管理器可以在本地注销该虚拟网卡。进一步的,该虚拟机管理器还可以确定该虚拟网卡所在的第二虚拟机是否使用上述共享内存(或称为该第二虚拟机中是否存在使用该共享内存的虚拟设备),若该第二虚拟机不使用上述共享内存(或者称为该第二虚拟机中不存在使用该共享内存的虚拟设备),该虚拟机管理器可以删除该第二虚拟机与该共享内存之间的映射,即将该第二虚拟机与该共享内存解映射,以使该第二虚拟机无法访问该共享内存。
本申请实施例中,该虚拟机管理器通过将第二虚拟机映射至该共享内存、以及将第二虚拟机与该共享内存解映射的操作,可以使该虚拟化系统上的多个第二虚拟机灵活地访问同一共享内存。此外,该虚拟机管理器将至少两个第二虚拟机映射至该共享内存,使得该至少两个该第二虚拟机均能够访问同一共享内存,进而通过该共享内存实现对组播数据或者广播数据的接收,减小组播数据或者广播数据的接收开销;同时,该虚拟机管理器还可以在确定某一第二虚拟机不使用上述共享内存时,将该第二虚拟机与该共享内存解映射,这样可以避免该第二虚拟机对于该共享内存的非法访问,进而保证组播数据或者广播数据的接收的安全性。
上述主要从虚拟化系统的角度对本申请实施例提供的方案进行了介绍。可以理解的是,该虚拟化系统为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的设备及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对该虚拟化系统进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
如图10所示,本申请实施例还提供一种数据传输装置,该装置可以作为第一虚拟机应用于虚拟化系统中,该虚拟化系统还包括多个第二虚拟机,允许该多个第二虚拟机中的至少两个第二虚拟机访问的共享内存。该装置包括:接收单元301、处理单元302和发送单元303。
接收单元301用于:接收数据,该数据是发送给该至少两个第二虚拟机的数据。处理单元302用于:当该共享内存中不存在该数据时,将该数据的数据信息存储在该共享内存中,该数据信息包括该数据。发送单元303用于:对于该至少两个第二虚拟机中的任一第 二虚拟机,向该第二虚拟机发送该数据信息在该共享内存中的存储地址。
可选的,该数据为广播数据;或者,该数据为组播数据。该至少两个第二虚拟机接收该数据的总拷贝次数为1。
在一种可能的实施例中,该发送单元303还用于:当该共享内存中存在该数据时,向该第二虚拟机发送该数据信息在该共享内存中的存储地址。
进一步的,该数据信息还包括该数据的校验信息,该处理单元302还用于:确定该数据的校验信息;若该内存中已存在该校验信息,确定该共享内存中存在该数据;若该内存中不存在该校验信息,确定该共享内存中不存在该数据。
在一种可能的实施例中,该虚拟化系统还包括一对多共享队列,该发送单元303还用于:通过该一对多共享队列向该第二虚拟机发送该存储地址。在另一种可能的实施例中,该第一虚拟机还包括虚拟网卡,该第一虚拟机接收数据之前,该处理单元302还用于:绑定该虚拟网卡和该一对多共享队列;相应的,该接收单元301还用于:通过该虚拟网卡接收数据。
进一步的,该虚拟网卡包括至少两个,该至少两个虚拟网卡与该至少两个第二虚拟机一一对应,该虚拟化系统还包括虚拟机管理器;该发送单元303还用于:对于该至少两个虚拟网卡中的任一虚拟网卡,向该虚拟机管理器发送注册请求,该注册请求用于注册该虚拟网卡,以使该虚拟机管理器在接收到该注册请求时,对于使用该虚拟网卡的任意一个第二虚拟机,若该第二虚拟机未映射至该共享内存,建立该第二虚拟机与该共享内存之间的映射。
进一步的,该发送单元303还用于:向该虚拟机管理器发送删除请求,该删除请求用于注销该虚拟网卡,以使该虚拟机管理器在接收到该删除请求时,若该虚拟网卡所在的第二虚拟机不使用该共享内存,解除该第二虚拟机与该共享内存之间的映射。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可援引到该数据传输装置对应的实施例中,本申请实施例在此不再赘述。
在本申请实施例中,该数据传输装置在接收到发送给至少两个第二虚拟机的数据时,若该共享内存中不存在该数据,将该数据的数据信息存储在该共享内存中,并向至少两个第二虚拟机发送该数据在该共享内存中的存储地址,从而使得该至少两个第二虚拟机可以访问该共享内存获取该数据。在此过程中,该数据传输装置仅通过1次拷贝(即将该数据存储在共享内存)即可实现该至少两个第二虚拟机对该数据的接收,也即是,该方法能够仅通过1次拷贝实现组播数据和广播数据的接收,从而大大降低了计算资源开销。
在本申请的另一实施例中,还提供一种虚拟化系统,该虚拟化系统的结构可以如图3或图4所示。其中,该虚拟化系统包括第一虚拟机和多个第二虚拟机,该第一虚拟机包括允许该多个第二虚拟机中的至少两个第二虚拟机访问的共享内存。
在本申请实施例中,该第一虚拟机用于:接收数据,该数据是发送给该至少两个第二虚拟机的数据;当该共享内存中不存在该数据时,将该数据的数据信息存储在该共享内存中,该数据信息包括该数据;对于该至少两个第二虚拟机中的任一第二虚拟机,向该第二虚拟机发送该数据信息在该共享内存中的存储地址。
其中,该数据为广播数据;或者,该数据为组播数据。另外,该至少两个第二虚拟机接收该数据的总拷贝次数为1。
可选的,该第一虚拟机还用于:当该共享内存中存在该数据时,向该第二虚拟机发送该数据信息在该共享内存中的存储地址。
在一种可能的实施例中,该数据信息还包括该数据的校验信息,该第一虚拟机还用于:确定该数据的校验信息;若该内存中已存在该校验信息,确定该共享内存中存在该数据;若该内存中不存在该校验信息,确定该共享内存中不存在该数据。
可选的,该虚拟化系统还包括一对多共享队列,该第一虚拟机还用于:通过该一对多共享队列向该第二虚拟机发送该存储地址。
进一步的,该第一虚拟机还包括虚拟网卡,该第一虚拟机接收数据之前,该第一虚拟机还用于:绑定该虚拟网卡和该一对多共享队列;相应的,该第一虚拟机还用于:通过该虚拟网卡接收数据。
可选的,该虚拟网卡包括至少两个,该至少两个虚拟网卡与该至少两个第二虚拟机一一对应,该虚拟化系统还包括虚拟机管理器。
在一种实现方式中,该第一虚拟机还用于:对于该至少两个虚拟网卡中的任一虚拟网卡,向该虚拟机管理器发送注册请求,该注册请求用于注册该虚拟网卡。相应的,该虚拟机管理器用于:当接收到该注册请求时,对于使用该虚拟网卡的任意一个第二虚拟机,若该第二虚拟机未映射至该共享内存,建立该第二虚拟机与该共享内存之间的映射。
在另一种实现方式中,该第一虚拟机还用于:向该虚拟机管理器发送删除请求,该删除请求用于注销该虚拟网卡。相应的,该虚拟机管理器还用于:当接收到该删除请求时,若该虚拟网卡所在的第二虚拟机不使用该共享内存,解除该第二虚拟机与该共享内存之间的映射。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可援引到该虚拟化系统对应的实施例中,本申请实施例在此不再赘述。
在本申请的另一实施例中,还提供一种通信设备,参考图3,如图11所示,该通信设备包括硬件层、以及运行在该硬件层上的虚拟化系统,该虚拟化系统可以为上文所提供的虚拟化系统。其中,该虚拟化系统包括第一虚拟机和多个第二虚拟机,该第一虚拟机包括允许多个第二虚拟机访问的共享内存。需要说明的是,关于该虚拟化系统的详细描述可以参考上文中的相关描述,本申请实施例在此不再赘述。可选的,该硬件层中可以包括处理器、内存、磁盘、网卡和外设等多个硬件资源,图11中以该硬件层包括处理器、内存和网卡为例进行说明。
在本申请的又一实施例中,还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,当该计算机程序或指令被运行时,实现如上述方法实施例所提供的数据传输方法。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机程序或指令,当该计算机程序或指令被运行时,实现如上述方法实施例所提供的数据传输方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、虚拟化系统和方法,可以通过其它的方式实现。例如,以上所描述的数据传输装置的实施例仅是示意性的,例如,所述模块或单元的划分,仅仅为一种功能性的划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或 不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (20)

  1. 一种数据传输方法,其特征在于,应用于虚拟化系统中,所述虚拟化系统包括第一虚拟机和多个第二虚拟机,所述第一虚拟机包括允许至少两个第二虚拟机访问的共享内存,所述方法包括:
    所述第一虚拟机接收数据,所述数据是发送给所述至少两个第二虚拟机的;
    当所述共享内存中不存在所述数据时,所述第一虚拟机将所述数据存储在所述共享内存中;
    对于所述至少两个第二虚拟机中的任一第二虚拟机,所述第一虚拟机向所述第二虚拟机发送所述数据在所述共享内存中的存储地址。
  2. 根据权利要求1所述的方法,其特征在于,所述方法还包括:
    当所述共享内存中存在所述数据时,所述第一虚拟机向所述第二虚拟机发送所述数据在所述共享内存中的存储地址。
  3. 根据权利要求1或2所述的方法,其特征在于,所述至少两个第二虚拟机接收所述数据的总拷贝次数为1。
  4. 根据权利要求1-3任一项所述的方法,其特征在于,所述第一虚拟机接收数据之后,所述方法还包括:
    所述第一虚拟机确定所述数据的校验信息;
    若所述共享内存中已存在所述校验信息,所述第一虚拟机确定所述共享内存中存在所述数据;
    若所述共享内存中不存在所述校验信息,所述第一虚拟机确定所述共享内存中不存在所述数据。
  5. 根据权利要求1-4任一项所述的方法,其特征在于,所述虚拟化系统还包括一对多共享队列,所述第一虚拟机向所述第二虚拟机发送所述数据在所述共享内存中的存储地址,包括:
    所述第一虚拟机通过所述一对多共享队列向所述第二虚拟机发送所述存储地址。
  6. 根据权利要求5所述的方法,其特征在于,所述第一虚拟机还包括虚拟网卡,所述第一虚拟机接收数据之前,所述方法还包括:
    所述第一虚拟机绑定所述虚拟网卡和所述一对多共享队列;
    相应的,所述第一虚拟机接收数据,包括:
    所述第一虚拟机通过所述虚拟网卡接收数据。
  7. 根据权利要求6所述的方法,其特征在于,所述虚拟网卡包括至少两个,所述至少两个虚拟网卡与所述至少两个第二虚拟机一一对应,所述虚拟化系统还包括虚拟机管理器,所述方法还包括:
    对于所述至少两个虚拟网卡中的任一虚拟网卡,所述第一虚拟机向所述虚拟机管理器发送注册请求,所述注册请求用于注册所述虚拟网卡;
    当所述虚拟机管理器接收到所述注册请求时,若所述虚拟网卡对应的第二虚拟机未映射至所述共享内存,所述虚拟机管理器建立所述第二虚拟机与所述共享内存之间的映射。
  8. 根据权利要求7所述的方法,其特征在于,所述方法还包括:
    所述第一虚拟机向所述虚拟机管理器发送删除请求,所述删除请求用于注销所述虚拟网卡;
    当所述虚拟机管理器接收到所述删除请求时,若所述虚拟网卡对应的第二虚拟机不使用所述共享内存,所述虚拟机管理器解除所述第二虚拟机与所述共享内存之间的映射。
  9. 根据权利要求1-8任一项所述的方法,其特征在于,所述数据为广播数据;或者,所述数据为组播数据。
  10. 一种虚拟化系统,其特征在于,所述虚拟化系统包括第一虚拟机和多个第二虚拟机,所述第一虚拟机包括允许至少两个第二虚拟机访问的共享内存;
    所述第一虚拟机,用于接收数据,所述数据是发送给所述至少两个第二虚拟机的;
    所述第一虚拟机,还用于当所述共享内存中不存在所述数据时,将所述数据存储在所述共享内存中;
    所述第一虚拟机,还用于对于所述至少两个第二虚拟机中的任一第二虚拟机,向所述第二虚拟机发送所述数据在所述共享内存中的存储地址。
  11. 根据权利要求10所述的虚拟化系统,其特征在于,所述第一虚拟机还用于:
    当所述共享内存中存在所述数据时,向所述第二虚拟机发送所述数据在所述共享内存中的存储地址。
  12. 根据权利要求10或11所述的虚拟化系统,其特征在于,所述至少两个第二虚拟机接收所述数据的总拷贝次数为1。
  13. 根据权利要求10-12任一项所述的虚拟化系统,其特征在于,所述第一虚拟机还用于:
    确定所述数据的校验信息;
    若所述共享内存中已存在所述校验信息,确定所述共享内存中存在所述数据;
    若所述共享内存中不存在所述校验信息,确定所述共享内存中不存在所述数据。
  14. 根据权利要求10-13任一项所述的虚拟化系统,其特征在于,所述虚拟化系统还包括一对多共享队列,所述第一虚拟机还用于:
    通过所述一对多共享队列向所述第二虚拟机发送所述存储地址。
  15. 根据权利要求14所述的虚拟化系统,其特征在于,所述第一虚拟机还包括虚拟网卡,所述第一虚拟机接收数据之前,所述第一虚拟机还用于:
    绑定所述虚拟网卡和所述一对多共享队列;
    相应的,所述第一虚拟机还用于:通过所述虚拟网卡接收数据。
  16. 根据权利要求15所述的虚拟化系统,其特征在于,所述虚拟网卡包括至少两个,所述至少两个虚拟网卡与所述至少两个第二虚拟机一一对应,所述虚拟化系统还包括虚拟机管理器;
    所述第一虚拟机,还用于对于所述至少两个虚拟网卡中的任一虚拟网卡,向所述虚拟机管理器发送注册请求,所述注册请求用于注册所述虚拟网卡;
    所述虚拟机管理器,用于当接收到所述注册请求时,若所述虚拟网卡对应的第二虚拟机未映射至所述共享内存,建立所述第二虚拟机与所述共享内存之间的映射。
  17. 根据权利要求16所述的虚拟化系统,其特征在于,
    所述第一虚拟机,还用于向所述虚拟机管理器发送删除请求,所述删除请求用于注销 所述虚拟网卡;
    所述虚拟机管理器,用于当接收到所述删除请求时,若所述虚拟网卡对应的第二虚拟机不使用所述共享内存,解除所述第二虚拟机与所述共享内存之间的映射。
  18. 根据权利要求10-17任一项所述的虚拟化系统,其特征在于,所述数据为广播数据;或者,所述数据为组播数据。
  19. 一种通信设备,其特征在于,所述通信设备包括硬件层,以及运行在所述硬件层上的如权利要求10-18任一项所述的虚拟化系统。
  20. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被运行时,实现如权利要求1-9任一项所述的数据传输方法。
PCT/CN2022/095994 2022-05-30 2022-05-30 一种数据传输方法及虚拟化系统 WO2023230766A1 (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2022/095994 WO2023230766A1 (zh) 2022-05-30 2022-05-30 一种数据传输方法及虚拟化系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2022/095994 WO2023230766A1 (zh) 2022-05-30 2022-05-30 一种数据传输方法及虚拟化系统

Publications (1)

Publication Number Publication Date
WO2023230766A1 true WO2023230766A1 (zh) 2023-12-07

Family

ID=89026477

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2022/095994 WO2023230766A1 (zh) 2022-05-30 2022-05-30 一种数据传输方法及虚拟化系统

Country Status (1)

Country Link
WO (1) WO2023230766A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104123233A (zh) * 2013-04-26 2014-10-29 华茂云天科技(北京)有限公司 一种虚拟机大容量内存共享方法
WO2018120986A1 (zh) * 2016-12-27 2018-07-05 华为技术有限公司 转发报文的方法和物理主机
CN111679921A (zh) * 2020-06-09 2020-09-18 Oppo广东移动通信有限公司 内存共享方法、内存共享装置及终端设备
CN111988230A (zh) * 2020-08-19 2020-11-24 海光信息技术有限公司 虚拟机通信方法、装置、系统及电子设备
CN112052100A (zh) * 2019-06-06 2020-12-08 华为技术有限公司 基于共享内存的虚拟机通信方法及设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104123233A (zh) * 2013-04-26 2014-10-29 华茂云天科技(北京)有限公司 一种虚拟机大容量内存共享方法
WO2018120986A1 (zh) * 2016-12-27 2018-07-05 华为技术有限公司 转发报文的方法和物理主机
CN112052100A (zh) * 2019-06-06 2020-12-08 华为技术有限公司 基于共享内存的虚拟机通信方法及设备
CN111679921A (zh) * 2020-06-09 2020-09-18 Oppo广东移动通信有限公司 内存共享方法、内存共享装置及终端设备
CN111988230A (zh) * 2020-08-19 2020-11-24 海光信息技术有限公司 虚拟机通信方法、装置、系统及电子设备

Similar Documents

Publication Publication Date Title
US11824962B2 (en) Methods and apparatus for sharing and arbitration of host stack information with user space communication stacks
US10628330B2 (en) VM inter-process communication
US10735329B2 (en) Container communication method and system for parallel applications
US9893977B2 (en) System and method for supporting live migration of virtual machines in a virtualization environment
US7996569B2 (en) Method and system for zero copy in a virtualized network environment
WO2018120986A1 (zh) 转发报文的方法和物理主机
WO2018035856A1 (zh) 实现硬件加速处理的方法、设备和系统
EP2831730B1 (en) System and method for providing a scalable signaling mechanism for virtual machine migration in a middleware machine environment
KR101782342B1 (ko) 가상 스토리지 타겟 오프로드 기법
US8566822B2 (en) Method and system for distributing hypervisor functionality over multiple physical devices in a network and configuring sub-hypervisor to control the virtual machines
US9086907B2 (en) Apparatus and method for managing virtual machine addresses
WO2019195003A1 (en) Virtual rdma switching for containerized applications
US20080189432A1 (en) Method and system for vm migration in an infiniband network
US20110090910A1 (en) Enhanced virtual switch
JP2006318441A (ja) パーティションバス
WO2022179423A1 (zh) 虚拟化处理系统、方法、装置及设备
WO2022001808A1 (zh) 一种系统以及中断处理方法
WO2022143714A1 (zh) 服务器系统、虚拟机创建方法及装置
US9069592B2 (en) Generic transport layer mechanism for firmware communication
US20110246600A1 (en) Memory sharing apparatus
CN112905304A (zh) 一种虚拟机间通信方法、装置、物理主机及介质
WO2023230766A1 (zh) 一种数据传输方法及虚拟化系统
WO2022160714A1 (zh) 一种通信方法、装置以及系统
Zhou et al. A research of USB device redirection mechanism over IP network in desktop cloud system
US11601515B2 (en) System and method to offload point to multipoint transmissions

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22944108

Country of ref document: EP

Kind code of ref document: A1