CN117931381A - 一种基于ivshmem技术的端对端通讯方法 - Google Patents
一种基于ivshmem技术的端对端通讯方法 Download PDFInfo
- Publication number
- CN117931381A CN117931381A CN202410340605.9A CN202410340605A CN117931381A CN 117931381 A CN117931381 A CN 117931381A CN 202410340605 A CN202410340605 A CN 202410340605A CN 117931381 A CN117931381 A CN 117931381A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- virtual machine
- field
- communication
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000004891 communication Methods 0.000 title claims abstract description 70
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000005516 engineering process Methods 0.000 title claims abstract description 22
- 230000015654 memory Effects 0.000 claims abstract description 48
- 230000005540 biological transmission Effects 0.000 claims abstract description 10
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于ivshmem技术的端对端通讯方法,涉及虚拟机通信领域,其包括以下步骤:通过ivshmem技术在同一个物理机中每一个虚拟机中设置一个所有虚拟机可读写内存、一个所有虚拟机可读内存和一个本体虚拟机可写其他虚拟机只读内存;在本体虚拟机可写其他虚拟机只读内存中为其他每个虚拟机划分一个只读区域,使每个只读区域负责一个与其他虚拟机的通信链路;对于每一条通信链路,通过循环队列的方式进行数据传输,完成端对端通讯。本发明在本地物理主机上,建立了虚拟机与虚拟机、虚拟机和物理主机间的双向通信链路,即保证了性能,还保证了效率。
Description
技术领域
本发明涉及虚拟机通信领域,具体涉及一种基于ivshmem技术的端对端通讯方法。
背景技术
半虚拟化(Paravirtualization)是一种虚拟化方式,它要求操作系统修改以支持虚拟硬件,并且在修改后的操作系统上运行虚拟化软件。在半虚拟化中,虚拟机能够通过访问虚拟化层提供的接口来与物理硬件交互,而无需通过硬件仿真的方式进行。由于不需要进行硬件仿真,因此半虚拟化通常比完全虚拟化的性能更高。
Ivshmem是一种虚拟机间共享内存设备,全称是Inter-VM Shared Memory,ivshmem通过模拟PCI设备的方式,为每个虚拟机提供了共享内存访问和中断通知功能。Ivshmem 是构建核间通信的基础,类似于网络协议中的物理层。Ivshmem是一个共享内存通信框架,是一个比较常用的技术,Ivshmem技术是共享内存通信技术,尤其在qemu、kvm、DPDK等虚拟化场景使用较多,可以用在GuestOS之间、GuestOS与主机之间的通信,其特性为:
(1)最多支持65536个peer(对端同等角色,即虚拟机);
(2)提供多种目的的共享内存区域,包括一个所有peer公共读写区域,一个所有peer可读的状态区域,每个peer都有一个可写其他peer只读的区域;
(3)使用中断进行通知;
(4)支持多个上层协议;
(5)通过标准的PCI设备进行发现和配置。
现有的ivshmem通信模型为通信提供了基本的共享内存和中断通知功能,根据共享内存区域的组成,每个peer可以访问的共享内存区域包括:
(1)每个peer共享的可读写区域(Read/Write section);
(2)每个peer独占的可读写区域(Output section for peer n);
(3)每个peer可以读取其他peer独占的可读写区域(Output section for peern)。
在ivshmem基础上需要设计一个通信规则,确定共享内存区域的用法,确定通信中各个peer的角色,来协调每个peer对共享内存的读写时机。每个peer共享的可读写区域,每个peer都可以读写,需要复杂的机制来保证各个peer之间的同步,而且由于只存在一个这样的区域,难以实现多个peer情况下任意peer之间的通信,仅适合两个peer之间的通信。
公开号为CN101667144B、名称为《一种基于共享内存的虚拟机通信方法》运行在Xen技术之上,Xen有一个特权虚拟机,Xen监视器主要运行于硬件之上,负责虚拟机和资源的管理。当虚拟机之间需要通信时,通讯发起方根据通信目的 IP 地址查询本地事件通道表从而知道通信目的是否是在同一宿主机上,如在同一宿主机上,客户虚拟机将要发送的数据写入本地虚拟数据发送共享内存环形队列;通信目的客户虚拟机会从事件通道得知数据到来,从本地虚拟数据接收共享内存环形队列读取数据。
然而Xen负责管理共享内存,负责处理各个虚拟机间的通信,虚拟机在通信的时候,需要向Xen监视器发起共享内存请求,Xen会创建两个实际物理共享内存环形队列,需要通信的虚拟机会创建一个事件通道,该事件通道会绑定到对端虚拟机上的一个虚拟CPU,如此,虚拟机才能完成通信通道的建立,因此Xen技术目前已经被淘汰。且在CN101667144B中每对通信的客户虚拟机之间只有一个通信通道,每个客户虚拟机内有多个虚拟CPU,一次只能有一个虚拟 CPU 拥有通信通道的控制权,该通信方式效率较低。
综上所述,现有ivshmem仅实现了Jailhouse虚拟机之间的共享内存访问和通知,无法处理多个虚拟机之间数据访问同步问题,无法直接用于虚拟机之间的点对点通信;Xen技术的通信方式效率低。
发明内容
针对现有技术中的上述不足,本发明提供的一种基于ivshmem技术的端对端通讯方法解决了现有虚拟机端对端通讯效率低的问题。
为了达到上述发明目的,本发明采用的技术方案为:
提供一种基于ivshmem技术的端对端通讯方法,其包括以下步骤:
S1、通过ivshmem技术在同一个物理机中每一个虚拟机中设置一个所有虚拟机可读写内存、一个所有虚拟机可读内存和一个本体虚拟机可写其他虚拟机只读内存;
S2、在本体虚拟机可写其他虚拟机只读内存中为其他每个虚拟机划分一个只读区域,使每个只读区域负责一个与其他虚拟机的通信链路;
S3、对于每一条通信链路,通过循环队列的方式进行数据传输,完成端对端通讯;
其中,所有虚拟机可读写内存为备用区域;
所有虚拟机可读内存用于记录各个虚拟机的状态,并向各个虚拟机展示所有虚拟机的状态;
只读区域,用于记录本体虚拟机所要发送的数据。
进一步地,循环队列包括数据块、开始索引、结束索引和used索引;其中:
开始索引,用于表示要发送的数据的起始位置;
结束索引,用于表示要发送的数据的结束位置;
used索引,位于通信链路接收端的虚拟机上,表示接收端未使用数据的起始位置。
进一步地,通过循环队列的方式进行数据发送的具体方法包括以下子步骤:
A1、从数据池分配一个数据块,向其中写入要发送的数据;
A2、将数据块索引保存到结束索引指向的单元,使结束索引向后移动一个位置;
A3、向数据接收端发送中断信号。
进一步地,通过循环队列的方式进行数据接收的具体方法包括以下子步骤:
B1、通过数据接收端相应中断信号,获取开始索引指向的数据单元;
B2、将used索引插入已使用数据的末端,并持续进行数据接收,直至数据接收完毕;
B3、通过数据接收端向数据发送端发送中断信号;
B4、通过数据发送端相应中断信号,将开始索引移动到used索引处,并释放当前数据传输所占用的数据块。
进一步地,每个数据块包括包头和数据;包头共16字节,包括channel字段、size字段、timestamp字段、pkt_total字段、pkt_index字段和reserved字段;
channel字段的偏移为0,类型为uint16,用于记录通道号;
size字段的偏移为2,类型为uint16,用于记录有效数据的长度;
timestamp字段的偏移为4,类型为uint32,用于记录时间戳;
pkt_total字段的偏移为8,类型为uint8,用于记录分包号和总包数;
pkt_index字段的偏移为9,类型为uint8,用于记录分包号和当前包的索引;
reserved字段的偏移为9,长度为6字节,用于扩展备用。
进一步地,通道号的范围是0~0xFFFF,其中0~0xFEFF由应用使用,0xFF00~0xFFFF由核间通信内部使用。
本发明的有益效果为:本发明在本地物理主机上,建立了虚拟机与虚拟机、虚拟机和物理主机间的双向通信链路,即保证了性能,还保证了效率。
附图说明
图1为本方法的流程示意图;
图2为本体虚拟机可写其他虚拟机只读内存划分只读区域形成通信链路的示意图;
图3为通信循环队列示意图;
图4为发送数据示意图;
图5为接收数据示意图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
如图1、图2所示,该基于ivshmem技术的端对端通讯方法包括以下步骤:
S1、通过ivshmem技术在同一个物理机中每一个虚拟机(output section)中设置一个所有虚拟机可读写内存、一个所有虚拟机可读内存和一个本体虚拟机可写其他虚拟机只读内存(output section);
S2、在本体虚拟机可写其他虚拟机只读内存中为其他每个虚拟机划分一个只读区域,使每个只读区域负责一个与其他虚拟机的通信链路;
S3、对于每一条通信链路,通过循环队列的方式进行数据传输,完成端对端通讯;
其中,所有虚拟机可读写内存为备用区域,该区域可以进行虚拟机间的数据交换,但是不能保证虚拟机之间通信数据的有序、安全和正确;
所有虚拟机可读内存用于记录各个虚拟机的状态,并向各个虚拟机展示所有虚拟机的状态;
只读区域,该区域只有本体虚拟机可以写,其他虚拟机只能读,用于记录本体虚拟机所要发送的数据,保证虚拟机间数据交互的有序、安全和正确。
如图3所示,循环队列(queue)包括数据块(Data Blocks)、开始索引(begin)、结束索引(end)和used索引;其中:
开始索引,用于表示要发送的数据的起始位置;
结束索引,用于表示要发送的数据的结束位置;
used索引,位于通信链路接收端的虚拟机上,表示接收端未使用数据的起始位置。
如图4所示,通过循环队列的方式进行数据发送的具体方法包括以下子步骤:
A1、从数据池分配一个数据块,向其中写入要发送的数据;
A2、将数据块索引保存到结束索引指向的单元,使结束索引向后移动一个位置;
A3、向数据接收端发送中断信号。
如图5所示,由于接收和发送机制采用的循环队列,循环队列中有begin索引、end索引和used 索引,这些索引接收端和发送端都能访问获取到,因此通过循环队列的方式进行数据接收的具体方法包括以下子步骤:
B1、通过数据接收端相应中断信号,获取开始索引指向的数据单元;
B2、将used索引插入已使用数据的末端,并持续进行数据接收,直至数据接收完毕;
B3、通过数据接收端向数据发送端发送中断信号;
B4、通过数据发送端相应中断信号,将开始索引移动到used索引处,并释放当前数据传输所占用的数据块。
在本发明的一个实施例中,数据池由多个尺寸相同数据块构成,每个数据块使用一个索引唯一表示,队列中的内容是数据块的索引。Begin索引表示要发送的数据的起始位置,end索引表示要发送的数据的结束位置,begin与end之间即是要发送的数据,当begin和end相同时,表示数据空。
数据池的目的是提高对共享内存的利用率,其原理和内存池类似。在Outputsection中预先指定一块内存区域,按照固定的大小分成多个数据块,在运行时动态地分配给各个通信链路,数据池的分配采用bitmap来管理。
每个数据块在传输时,包括包头和数据;如表1所示,包头共16字节,包括channel字段、size字段、timestamp字段、pkt_total字段、pkt_index字段和reserved字段;
channel字段的偏移为0,类型为uint16,用于记录通道号;
size字段的偏移为2,类型为uint16,用于记录有效数据的长度;
timestamp字段的偏移为4,类型为uint32,用于记录时间戳;
pkt_total字段的偏移为8,类型为uint8,用于记录分包号和总包数;
pkt_index字段的偏移为9,类型为uint8,用于记录分包号和当前包的索引;
reserved字段的偏移为9,长度为6字节,用于扩展备用。
表1
通道号的范围是0~0xFFFF,其中0~0xFEFF由应用使用,0xFF00~0xFFFF由核间通信内部使用。
本发明为了提高核间通信的稳定性,在各个虚拟机之间相互通信形成了多个独立的通信通道,这些独立的通信链路共用共享内存空间,共享内存的划分和访问保证了通信通道的独立性,避免了数据访问冲突和相互影响。
综上所述,本发明在本地物理主机上,建立了虚拟机与虚拟机、虚拟机和物理主机间的双向通信链路,即保证了性能,还保证了效率。
Claims (6)
1.一种基于ivshmem技术的端对端通讯方法,其特征在于,包括以下步骤:
S1、通过ivshmem技术在同一个物理机中每一个虚拟机中设置一个所有虚拟机可读写内存、一个所有虚拟机可读内存和一个本体虚拟机可写其他虚拟机只读内存;
S2、在本体虚拟机可写其他虚拟机只读内存中为其他每个虚拟机划分一个只读区域,使每个只读区域负责一个与其他虚拟机的通信链路;
S3、对于每一条通信链路,通过循环队列的方式进行数据传输,完成端对端通讯;
其中,所有虚拟机可读写内存为备用区域;
所有虚拟机可读内存用于记录各个虚拟机的状态,并向各个虚拟机展示所有虚拟机的状态;
只读区域,用于记录本体虚拟机所要发送的数据。
2.根据权利要求1所述的基于ivshmem技术的端对端通讯方法,其特征在于,循环队列包括数据块、开始索引、结束索引和used索引;其中:
开始索引,用于表示要发送的数据的起始位置;
结束索引,用于表示要发送的数据的结束位置;
used索引,位于通信链路接收端的虚拟机上,表示接收端未使用数据的起始位置。
3.根据权利要求2所述的基于ivshmem技术的端对端通讯方法,其特征在于,通过循环队列的方式进行数据发送的具体方法包括以下子步骤:
A1、从数据池分配一个数据块,向其中写入要发送的数据;
A2、将数据块索引保存到结束索引指向的单元,使结束索引向后移动一个位置;
A3、向数据接收端发送中断信号。
4.根据权利要求3所述的基于ivshmem技术的端对端通讯方法,其特征在于,通过循环队列的方式进行数据接收的具体方法包括以下子步骤:
B1、通过数据接收端相应中断信号,获取开始索引指向的数据单元;
B2、将used索引插入已使用数据的末端,并持续进行数据接收,直至数据接收完毕;
B3、通过数据接收端向数据发送端发送中断信号;
B4、通过数据发送端相应中断信号,将开始索引移动到used索引处,并释放当前数据传输所占用的数据块。
5.根据权利要求3所述的基于ivshmem技术的端对端通讯方法,其特征在于,每个数据块包括包头和数据;包头共16字节,包括channel字段、size字段、timestamp字段、pkt_total字段、pkt_index字段和reserved字段;
channel字段的偏移为0,类型为uint16,用于记录通道号;
size字段的偏移为2,类型为uint16,用于记录有效数据的长度;
timestamp字段的偏移为4,类型为uint32,用于记录时间戳;
pkt_total字段的偏移为8,类型为uint8,用于记录分包号和总包数;
pkt_index字段的偏移为9,类型为uint8,用于记录分包号和当前包的索引;
reserved字段的偏移为9,长度为6字节,用于扩展备用。
6.根据权利要求5所述的基于ivshmem技术的端对端通讯方法,其特征在于,通道号的范围是0~0xFFFF,其中0~0xFEFF由应用使用,0xFF00~0xFFFF由核间通信内部使用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410340605.9A CN117931381A (zh) | 2024-03-25 | 2024-03-25 | 一种基于ivshmem技术的端对端通讯方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410340605.9A CN117931381A (zh) | 2024-03-25 | 2024-03-25 | 一种基于ivshmem技术的端对端通讯方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117931381A true CN117931381A (zh) | 2024-04-26 |
Family
ID=90763461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410340605.9A Pending CN117931381A (zh) | 2024-03-25 | 2024-03-25 | 一种基于ivshmem技术的端对端通讯方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117931381A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN103544045A (zh) * | 2013-10-16 | 2014-01-29 | 南京大学镇江高新技术研究院 | 一种基于hdfs的虚拟机镜像存储系统及其构建方法 |
CN104751050A (zh) * | 2015-04-13 | 2015-07-01 | 成都睿峰科技有限公司 | 一种客户端应用程序管理方法 |
CN105491414A (zh) * | 2015-11-19 | 2016-04-13 | 深圳市时尚德源文化传播有限公司 | 一种图像同步显示方法及装置 |
CN106453160A (zh) * | 2016-10-11 | 2017-02-22 | 福建星海通信科技有限公司 | 一种北斗数据传输方法及系统 |
CN107678835A (zh) * | 2017-09-30 | 2018-02-09 | 东软集团股份有限公司 | 一种数据传输方法及系统 |
CN108449126A (zh) * | 2018-02-08 | 2018-08-24 | 中国航天时代电子有限公司 | 一种多星地面组网远程对接测试系统 |
CN112905304A (zh) * | 2021-03-08 | 2021-06-04 | 深信服科技股份有限公司 | 一种虚拟机间通信方法、装置、物理主机及介质 |
CN113590254A (zh) * | 2020-04-30 | 2021-11-02 | 深信服科技股份有限公司 | 一种虚拟机通信的方法、装置、系统和介质 |
CN114120481A (zh) * | 2021-11-19 | 2022-03-01 | 北京经纬恒润科技股份有限公司 | 一种can数据的采集方法、装置及系统 |
CN116841952A (zh) * | 2023-09-01 | 2023-10-03 | 北京智芯微电子科技有限公司 | 核间通信系统、方法、装置、设备、芯片及可读存储介质 |
-
2024
- 2024-03-25 CN CN202410340605.9A patent/CN117931381A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN103544045A (zh) * | 2013-10-16 | 2014-01-29 | 南京大学镇江高新技术研究院 | 一种基于hdfs的虚拟机镜像存储系统及其构建方法 |
CN104751050A (zh) * | 2015-04-13 | 2015-07-01 | 成都睿峰科技有限公司 | 一种客户端应用程序管理方法 |
CN105491414A (zh) * | 2015-11-19 | 2016-04-13 | 深圳市时尚德源文化传播有限公司 | 一种图像同步显示方法及装置 |
CN106453160A (zh) * | 2016-10-11 | 2017-02-22 | 福建星海通信科技有限公司 | 一种北斗数据传输方法及系统 |
CN107678835A (zh) * | 2017-09-30 | 2018-02-09 | 东软集团股份有限公司 | 一种数据传输方法及系统 |
CN108449126A (zh) * | 2018-02-08 | 2018-08-24 | 中国航天时代电子有限公司 | 一种多星地面组网远程对接测试系统 |
CN113590254A (zh) * | 2020-04-30 | 2021-11-02 | 深信服科技股份有限公司 | 一种虚拟机通信的方法、装置、系统和介质 |
CN112905304A (zh) * | 2021-03-08 | 2021-06-04 | 深信服科技股份有限公司 | 一种虚拟机间通信方法、装置、物理主机及介质 |
CN114120481A (zh) * | 2021-11-19 | 2022-03-01 | 北京经纬恒润科技股份有限公司 | 一种can数据的采集方法、装置及系统 |
CN116841952A (zh) * | 2023-09-01 | 2023-10-03 | 北京智芯微电子科技有限公司 | 核间通信系统、方法、装置、设备、芯片及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
晋荣;冯鹏;申明达;: "RUDP在分布式网络管理架构中的探究与应用", 计算机与网络, no. 1, 12 February 2017 (2017-02-12) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11372802B2 (en) | Virtual RDMA switching for containerized applications | |
US10204070B2 (en) | Method, device, system and storage medium for implementing packet transmission in PCIE switching network | |
CN103034616B (zh) | 一种多个操作系统访问存储介质的方法、计算机 | |
CN114706808B (zh) | 一种基于spi菊花链结构的通信系统、方法及设备 | |
CN110636139B (zh) | 一种云负载均衡的优化方法及系统 | |
CN114546913B (zh) | 一种基于pcie接口的多主机之间数据高速交互的方法和装置 | |
CN112667420B (zh) | 实现异构系统内部通信的方法、装置、设备及存储介质 | |
EP3077914B1 (en) | System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface | |
AU2014200239A1 (en) | System and method for multiple sender support in low latency fifo messaging using rdma | |
WO2022120992A1 (zh) | 基于虚拟环境的内存共享系统及方法 | |
CN106959929B (zh) | 一种多端口访问的存储器及其工作方法 | |
WO2023165309A1 (zh) | 可共享远程直接数据存取链接的创建方法及装置 | |
CN118056191A (zh) | 具有可配置传输的多平面、多协议存储器交换机构造 | |
CN102750245B (zh) | 报文接收方法、报文接收模块、装置及系统 | |
CN109240800A (zh) | 一种基于Hypervisor多系统共享内存的管理方法 | |
US11106513B2 (en) | Message passing in a data processing system | |
CN117312229B (zh) | 一种数据传输装置、数据处理设备、系统、方法及介质 | |
WO2024067529A1 (zh) | 基于rdma的建连方法、装置、设备及存储介质 | |
US6345324B1 (en) | Apparatus for transferring data using an interface element and a queued direct input-output device | |
CN117931381A (zh) | 一种基于ivshmem技术的端对端通讯方法 | |
CN116841952A (zh) | 核间通信系统、方法、装置、设备、芯片及可读存储介质 | |
EP2779543A1 (en) | Direct push operations and gather operations | |
WO2024077999A1 (zh) | 集合通信方法及计算集群 | |
CN115529275B (zh) | 一种报文处理系统及方法 | |
CN117041147B (zh) | 智能网卡设备、主机设备和方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |