CN115599502B - 基于虚拟机监控器的rtos网络共享方法 - Google Patents

基于虚拟机监控器的rtos网络共享方法 Download PDF

Info

Publication number
CN115599502B
CN115599502B CN202211429852.3A CN202211429852A CN115599502B CN 115599502 B CN115599502 B CN 115599502B CN 202211429852 A CN202211429852 A CN 202211429852A CN 115599502 B CN115599502 B CN 115599502B
Authority
CN
China
Prior art keywords
client
root cell
network
virtual
shared memory
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.)
Active
Application number
CN202211429852.3A
Other languages
English (en)
Other versions
CN115599502A (zh
Inventor
张云飞
黄磊
崔彦昭
战茅
齐璇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kirin Software Co Ltd
Original Assignee
Kirin Software Co Ltd
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 Kirin Software Co Ltd filed Critical Kirin Software Co Ltd
Publication of CN115599502A publication Critical patent/CN115599502A/zh
Application granted granted Critical
Publication of CN115599502B publication Critical patent/CN115599502B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及基于虚拟机监控器的RTOS网络共享方法,由虚拟机监控器通过jailhouse将主机隔离为两个分区客户机,并通过jailhouse为两个客户机之间的共享内存及信号机制构建通信通道;两个客户机上分别运行Linux系统及Rtos系统。本发明通过jailhouse的共享通信模型和链路层实现的虚拟网卡驱动程序,在不改变硬件的情况下,实现了同一个网卡的共享和复用。缓解了多核分区系统上接口资源紧张的情况,为多系统的开发和运行提供了便捷的接口。

Description

基于虚拟机监控器的RTOS网络共享方法
技术领域
本发明涉及虚拟网卡技术领域,具体涉及基于虚拟机监控器的RTOS网络共享方法。
背景技术
随着集成电路制造工艺的发展,越来越多的计算单元被集成到单一芯片上。如何更有效地使用单芯片上的资源从而获得良好的系统伸缩性成为摆在系统软件设计者前面的重要问题。目前多核系统上部署虚拟机监控器(hypervisor)是解决该问题的一种有效的解决方式。于此同时,针对工控领域,既有工业物联网、工业大数据和人工智能等重负载业务,也有高实时和高可靠性的要求。通过应用虚拟机监控器将通用Linux和RTOS两者有机地结合起来,既能满足系统任务复杂性要求,又能兼顾系统实时性。
目前使用此类hypervisor(如jailhouse)加载和运行rtos的方案并不像的全功能虚拟机管理程序(如KVM或Xen)一样,拥有丰富的接口和功能。例如,不支持过度分配资源。不能模拟没有的IO设备,当然也不支持IO复用。他们主要实现了硬件隔离和多系统分区运行的功能。但是使用虚拟机监控器运行多个系统会造成硬件资源紧张的问题。当把硬件资源与指定系统绑定时,其余系统就不能再使用。例如当一个网卡分配给RTOS系统之后,Linux就无法再使用这个网卡。
发明内容
为解决已有技术存在的不足,本发明提供了一种基于虚拟机监控器的RTOS网络共享方法,由虚拟机监控器通过jailhouse将主机隔离为两个分区-root cell客户机及nonroot cell Freertos客户机,并通过jailhouse为root cell客户机及non root cellFreertos客户机之间的共享内存及信号机制构建通信通道;root cell客户机上运行Linux系统,non root cell Freertos客户机上运行Rtos系统,其中,数据从root cell客户机流向non root cell Freertos客户机为网络下行,从non root cell Freertos客户机流向root cell客户机为网络上行。
其中,root cell客户机及non root cell Freertos客户机通信通道的终端编程接口均被设计为PCI设备接口,以便分区操作系统通过初始化阶段的PCI设备扫描发现。
其中,虚拟机监控器在两个客户机之间建立通信通道时,首先在两个客户机分区操作系统的地址空间中分别分配一片虚拟内存区域,并在虚拟机监控器中分配一片与虚拟内存区域大小相同的共享内存作为供两个客户机的虚拟内存区域映射的可读写物理页面。
其中,虚拟机监控器在两个客户机之间建立通信通道时,同时为PCI设备提供两个额外的状态寄存器,一个用于写入本客户机分区的状态,另一个用于读取远程客户机分区写入的状态;每个客户机及时更新本地客户机分区状态寄存器,并通过读取另一个状态寄存器确认另一个客户机分区的数据是否写入完成。
其中,两个客户机的PCI设备中增加描述类型为JAILHOUSE_PCI_TYPE_IVSHMEM的描述符,同时,该描述符中shmem_region_start与共享内存的物理地址保持一致。
其中,non root cell Freertos客户机侧虚拟网卡的实现方式如下:Freertos通过bdf描述符读取pci设备的配置空间,通过读取配置空间得到共享内存的通信地址和msixtable。
其中,所述root cell客户机上实现有一个虚拟网卡驱动,通过在root cell客户机的内核配置中增加内核对pci总线和uio驱动的支持的配置以实现虚拟网卡驱动在操作系统层面的支持。
其中,网络驱动probe匹配时,通过pci扫描发现PCI设备接口,根据bdf描述符读取pci设备的配置空间并为其分配相应的资源,这些资源包括中断资源和内存映射空间,内核拿到上述资源并将上述资源注册为一个网络设备net_device;虚拟网卡驱动的实现包括root cell客户机的net_device设备及与其对应的共享内存。
其中,root cell客户机分区所注册的网络设备net_device包括一个虚拟网卡驱动的发送缓冲区和接收缓冲区,作为root cell客户机与共享内存的接口,以及虚拟网卡进行算法调度的内存空间;root cell客户机的虚拟网卡以共享内存作为虚拟网卡通信的物理介质,在共享内存中完成与non root cell Freertos客户机系统的网络帧交换。
其中,网络下行数据传递流程如下:root cell客户机的应用层通过socket接口把数据交给TCP/IP协议栈,TCP/IP协议栈根据互联网协议地址-IP地址及地址解析协议-ARP信息将数据交给root cell客户机的虚拟网卡驱动,root cell客户机的虚拟网卡驱动将网络解包好的网络帧,通过直接存储器访问搬移到共享内存的网络下行队列中,共享内存数据就绪以后,root cell客户机的虚拟网卡驱动通过MSI-X中断通知non root cellFreertos客户机,non root cell Freertos客户机通过初始化好的pci设备,从共享内存中得到网络下行数据,将网络帧的MAC地址转换以后进行发送;
网络上行数据传递流程如下:
non root cell Freertos客户机将网卡收到的数据进行MAC地址转换, 然后通过初始化好的pci设备,使用DMA将发送缓冲区拷贝到共享内存的网络上行队列中,随后MSI-X中断通知root cell Linux客户机;root cell Linux客户机收到中断以后,将共享内存上行队列中的网络帧取出到虚拟网卡中;虚拟网卡根据链路层的地址解析协议-ARP过滤网络帧数据,只将传给root cellLinux客户机的网络帧送给TCP/IP协议栈,丢弃其它多余的数据;TCP/IP协议栈根据数据帧的互联网协议地址-IP地址和端口号信息传递给用户层对应的socket。
本发明通过jailhouse的共享通信模型和链路层实现的虚拟网卡,在不改变硬件的情况下,实现了同一个网卡的共享和复用。缓解了多核分区系统上接口资源紧张的情况,为多系统的开发和运行提供了便捷的接口。
附图说明
图1为本发明的RTOS网络共享方法的Hypervisor ivshmem共享内存模型。
图2为本发明的RTOS网络共享方法的原理图。
具体实施方式
为了对本发明的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本发明的技术方案及其产生的有益效果。
本发明通过在Linux和RTOS之间添加一个虚拟网卡,达到网络共享的目的(即Linux分区系统使用RTOS系统的硬件网卡)。RTOS将收到的链路层数据经过mac地址转换以后转发给虚拟网卡,同样Linux将要发送的数据交给虚拟网卡,虚拟网卡经过mac地址转换以后交给RTOS的网卡发送出去。这样就实现了同一个网卡在两个客户机之间的共享。
Linux操作系统的特性之一就是它的网络协议栈。其最初实现源于BSD的网络协议栈。它的网络组织很好,在协议无关层(例如:通用套接口层、设备层)与各种具体网络协议层之间有着一整套统一而干净的接口。实现网络共享的具体思路是,在数据链路层通过虚拟网卡将网络帧进行mac地址转换和转发。这样RTOS的网卡数据经过虚拟网卡的转换,最终嫁接到了Linux系统的TCP/IP协议栈,实现了RTOS系统与Linux系统的网络共享功能。
虚拟网卡是通过Linux和RTOS之间的共享内存作为通信通道,使用虚拟 MSI-X 中断实现信号通知机制。Hypervisor为共享内存与信号机制构建客户机通信的通道。
具体实现方式如下:
本发明选用ARM64架构作为硬件平台。ARM64安装Linux系统,Hypervisor使用jailhouse。Jailhouse诞生于西门子,自2013年11月起作为一个自由软件项目(GPLv2)开发。与KVM改造方案不同的是,Hypervisor方案本身并不改造Linux内核,而是利用Linux系统的开放性,增加一个或多个实时操作系统,实现多系统在一个多核处理器上运行。Jailhouse是一个基于Hypervisor虚拟化技术的Linux静态分区管理程序,其可以运行裸机应用程序或RTOS应用程序。这里分区的概念等同于传统意义上的客户机。该施例中jailhouse将ARM64平台隔离为两个分区(这里分区的概念等同于虚拟化下的客户机)。其中原来主机Linux系统转变为jailhouse下的root cell Linux系统,另外一个分区是nonroot cell Freertos系统。为了描述方便,这里我们规定数据从Linux到Freertos称为网络下行,反之则为网络上行。共享内存区域被分成两个通道,分别对应图2中的网络下行队列和网络上行队列。这两个队列用于两个分区之间网络帧通信通道。
1、jailhouse分区通信模型及配置使用
jailhouse实现了分区的相互隔离,但在实际应用过程中,分区间也需进行通信。为此, Jailhouse 为分区间使用共享内存与信号机制构建分区间通信的通道。具体来说,一个通道将两个分区 1: 1 对应地连接起来,不存在“1:N”或“N:M”的连接方式。对每个分区,通信通道的终端编程接口被设计为 PCI 设备接口,以便分区客户操作系统通过初始化阶段的 PCI设备扫描发现。PCI设备的实现参考 ivshmem 设备模型,使用虚拟 MSI-X 中断实现信号通知机制。为了实现分区间设备状态的同步,通道 PCI设备提供了两个额外的MMIO 寄存器,一个用于写入本地分区状态,另一个用于读取远程分区写入的状态。CPU及时更新本地分区状态寄存器 ,并通过读取远程分区状态寄存器来确认是否写入完成。
在两个分区之间建立通信通道时,虚拟机监控器首先需要在两个分区的操作系统地址空间中分别分配一片虚拟内存区域,然后分别在虚拟机监控器分配一片与之大小相同的可读写物理页面(即共享内存)并进行映射。两个分区的客户机系统有自己的地址空间,这是操作系统的逻辑地址空间/虚拟地址空间,共享内存为实际的物理空间。两个客户机的操作系统如果需要访问这块物理空间,需要在各自的虚拟地址空间中分别分配出一片虚拟地址空间,然后将这块物理空间映射到各自的虚拟地址空间,图1中的“memory map”即表示的映射操作,然后两个客户机的操作系统就可以通过各自的虚拟地址空间访问此共享内存,从而通过共享内存完成数据交互。两个共享内存分别用于下行网络帧和上行网络帧的处理,如图1所示。分区配置中需相应描述类型为“JAILHOUSE_PCI_TYPE_IVSHMEM”的 PCI设备,并且该PCI 设备描述中“shmem_region_start”与共享内存的物理地址需保持一致,以便分区客户操作系统初始化时能够发现并建立通道设备。JAILHOUSE_PCI_TYPE_IVSHMEM”和“shmem_region_start”是jailhouse共享内存demo配置的两个参数。JAILHOUSE_PCI_TYPE_IVSHMEM用于告诉分区客户机系统,这块内存是一块PCI设备的共享内存。shmem_region_start是共享内存的起始位置,需要在代码中把这个参数告诉pci设备,这样两个pci设备就约定好了共享内存的起始地址,这是通信的前提。两个分区之间的通道连接是通过两端使用相同 PCI 标识号( 16 位“总线:设备:功能”编码)设备进行配对完成的。
2、Linux侧虚拟网卡实现
如图2所示,在Linux侧实现一个虚拟网卡驱动。以网络驱动的链路层为界限,链路层上是Linux内核完整的TCP/IP协议栈,链路层负责将共享内存的数据进行链路层的封装。要实现这个虚拟的网络驱动,要依赖于内核的pci总线和uio驱动的支持,所以我们需要在内核配置中增加这两个配置选项。这样在网络驱动probe匹配时,便可以通过pci扫描发现这个pci设备。根据bdf描述符读取pci设备的配置空间,并为其分配对应的资源,包括中断资源和内存映射空间。最后内核拿到这些硬件资源以后,需要把这些资源注册为一个网络设备即net_device。
这个网络设备是把rtos的通信数据连接到TCP/IP协议栈的桥梁。net_device设备包括一个Tx buffer 和Rx buffer,作为网卡驱动的发送缓冲区和接收缓冲区,它们是Linux侧客户机和共享内存通信的接口。共享内存作为虚拟网卡通信的物理介质,数据最终在这里完成发送和接收。虚拟网卡的实现包括net_device设备及共享内存。net_device设备的Tx buffer 和Rx buffer是net_device中的两个内存空间,为与共享内存独立的另外两个物理空间,Tx buffer 和Rx buffer与共享内存通过DMA(直接存储器访问)进行数据的搬运和交互。
3、Freesrtos侧虚拟网卡实现:
在jailhouse中完成了虚拟pci设备的初始化以后,在Freertos中便可以感知到这个pci设备。Freertos通过bdf描述符找到pci设备的配置空间。通过读取配置空间得到共享内存的通信地址和msix table。
MSIX Table 是指pcie设备的中断向量表,其中存放着所有PCIE 设备的中断向量号。通过扫描pci设备的配置空间,可以得到pci设备的内存资源和中断资源,这两者是共享内存通信的前提。
4、虚拟网卡在链路层要完成MAC地址(局域网地址)转换的操作,如图2所示。因为虚拟网卡最终是通过物理网卡发送出去,所以网络下行帧需要将MAC地址由虚拟网卡MAC地址替换为物理网卡MAC地址。同理,物理网卡想把网络上行帧提交给Linux内核的TCP/IP协议栈,则需要将上行帧的MAC地址转换为虚拟网卡的MAC地址。
5、虚拟网卡通信流程:
当Linux发送网络下行数据时,应用层通过socket接口把数据交给TCP/IP协议栈,协议栈根据IP地址(互联网协议地址)和ARP(地址解析协议)信息等交给Linux的虚拟网卡。虚拟网卡将网络解包好的网络帧,通过DMA(直接存储器访问)搬移到共享内存的网络下行队列中。共享内存数据就绪以后,虚拟网卡通过MSI-X中断通知Freertos系统。Freertos通过初始化好的pci设备,从共享内存中得到网络下行数据,将网络帧的MAC地址转换以后发出去。
当Freertos需要共享网络上行数据时,non root cell Freertos客户机将网卡收到的数据进行MAC地址转换, 然后通过初始化好的pci设备,将发送缓冲区拷贝到共享内存的网络上行队列中(使用DMA),随后MSI-X中断通知root cell Linux客户机。root cell客户机收到中断以后,将共享内存上行队列中的网络帧取出到虚拟网卡中。虚拟网卡会根据链路层的地址解析协议-ARP过滤网络帧数据,只将传给root cell的网络帧送给TCP/IP协议栈,丢弃其它多余的数据。TCP/IP协议栈根据数据帧的互联网协议地址-IP地址和端口号等信息传递给用户层对应的socket。
其中,IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址。
DMA(直接存储器访问)是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于CPU的大量中断负载。否则,CPU需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU对于其他的工作来说就无法使用。
本发明通过jailhouse的共享通信模型和链路层实现的虚拟网卡,在不改变硬件的情况下,实现了同一个网卡的共享和复用。缓解了多核分区系统上接口资源紧张的情况,为多系统的开发和运行提供了便捷的接口。
虽然本发明已利用上述较佳实施例进行说明,然其并非用以限定本发明的保护范围,任何本领域技术人员在不脱离本发明的精神和范围之内,相对上述实施例进行各种变动与修改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。

Claims (4)

1. 基于虚拟机监控器的RTOS网络共享方法,其特征在于:由虚拟机监控器通过jailhouse将主机隔离为两个分区-root cell客户机及non root cell Freertos客户机,并通过jailhouse为root cell客户机及non root cell Freertos客户机之间的共享内存及信号机制构建通信通道;root cell客户机上运行Linux系统,non root cell Freertos客户机上运行Rtos系统,其中,数据从root cell客户机流向non root cell Freertos客户机为网络下行,从non root cell Freertos客户机流向root cell客户机为网络上行;
root cell客户机及non root cell Freertos客户机通信通道的终端编程接口均被设计为PCI设备接口,以便分区操作系统通过初始化阶段的PCI设备扫描发现;
虚拟机监控器在两个客户机之间建立通信通道时,首先在两个客户机分区操作系统的地址空间中分别分配一片虚拟内存区域,并在虚拟机监控器中分配一片与虚拟内存区域大小相同的共享内存作为供两个客户机的虚拟内存区域映射的可读写物理页面;
所述root cell客户机上实现有一个虚拟网卡驱动,通过在root cell客户机的内核配置中增加内核对pci总线和uio驱动的支持的配置以实现虚拟网卡驱动在操作系统层面的支持;
网络驱动probe匹配时,通过pci扫描发现PCI设备接口,根据bdf描述符读取pci设备的配置空间并为其分配相应的资源,这些资源包括中断资源和内存映射空间,内核拿到上述资源并将上述资源注册为一个网络设备net_device;虚拟网卡驱动的实现包括root cell客户机的net_device设备及与其对应的共享内存;
root cell客户机分区所注册的网络设备net_device包括一个虚拟网卡驱动的发送缓冲区和接收缓冲区,作为root cell客户机与共享内存的接口,以及虚拟网卡进行算法调度的内存空间;root cell客户机的虚拟网卡以共享内存作为虚拟网卡通信的物理介质,在共享内存中完成与non root cell Freertos客户机系统的网络帧交换;
网络下行数据传递流程如下:root cell客户机的应用层通过socket接口把数据交给TCP/IP协议栈,TCP/IP协议栈根据互联网协议地址-IP地址及地址解析协议-ARP信息将数据交给root cell客户机的虚拟网卡驱动,root cell客户机的虚拟网卡驱动将网络解包好的网络帧,通过直接存储器访问搬移到共享内存的网络下行队列中,共享内存数据就绪以后,root cell客户机的虚拟网卡驱动通过MSI-X中断通知non root cell Freertos客户机,non root cell Freertos客户机通过初始化好的pci设备,从共享内存中得到网络下行数据,将网络帧的MAC地址转换以后进行发送;
网络上行数据传递流程如下:
non root cell Freertos客户机将网卡收到的数据进行MAC地址转换, 然后通过初始化好的pci设备,使用DMA将发送缓冲区拷贝到共享内存的网络上行队列中,随后MSI-X中断通知root cell Linux客户机;root cell Linux客户机收到中断以后,将共享内存上行队列中的网络帧取出到虚拟网卡中;虚拟网卡根据链路层的地址解析协议-ARP过滤网络帧数据,只将传给root cell Linux客户机的网络帧送给TCP/IP协议栈,丢弃其它多余的数据;TCP/IP协议栈根据数据帧的互联网协议地址-IP地址和端口号信息传递给用户层对应的socket。
2.如权利要求1所述的基于虚拟机监控器的RTOS网络共享方法,其特征在于:虚拟机监控器在两个客户机之间建立通信通道时,同时为PCI设备提供两个额外的状态寄存器,一个用于写入本客户机分区的状态,另一个用于读取远程客户机分区写入的状态;每个客户机及时更新本地客户机分区状态寄存器,并通过读取另一个状态寄存器确认另一个客户机分区的数据是否写入完成。
3.如权利要求1所述的基于虚拟机监控器的RTOS网络共享方法,其特征在于:两个客户机的PCI设备中增加描述类型为JAILHOUSE_PCI_TYPE_IVSHMEM的描述符,同时,该描述符中shmem_region_start与共享内存的物理地址保持一致。
4.如权利要求1所述的基于虚拟机监控器的RTOS网络共享方法,其特征在于:non rootcell Freertos客户机侧虚拟网卡的实现方式如下:Freertos通过bdf描述符读取pci设备的配置空间,通过读取配置空间得到共享内存的通信地址和msix table。
CN202211429852.3A 2022-10-17 2022-11-16 基于虚拟机监控器的rtos网络共享方法 Active CN115599502B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2022112639627 2022-10-17
CN202211263962 2022-10-17

Publications (2)

Publication Number Publication Date
CN115599502A CN115599502A (zh) 2023-01-13
CN115599502B true CN115599502B (zh) 2023-03-21

Family

ID=84853496

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211429852.3A Active CN115599502B (zh) 2022-10-17 2022-11-16 基于虚拟机监控器的rtos网络共享方法

Country Status (1)

Country Link
CN (1) CN115599502B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115840650B (zh) * 2023-02-20 2023-06-02 麒麟软件有限公司 基于kvisor隔离实时域实现三端系统通信的方法
CN116204933B (zh) * 2023-05-05 2023-09-26 麒麟软件有限公司 一种ARM64架构下基于jailhouse隔离PCIe网卡的方法
CN116719613B (zh) * 2023-08-10 2023-10-31 麒麟软件有限公司 基于虚拟监控器实现Linux下PCIe物理设备隔离的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109976925A (zh) * 2019-03-27 2019-07-05 北京翼辉信息技术有限公司 一种基于混合多系统核间实时通信的方法和系统
CN114070606A (zh) * 2021-11-12 2022-02-18 山东方寸微电子科技有限公司 一种基于国产操作系统的网络安全终端装置及工作方法
CN114710513A (zh) * 2022-03-30 2022-07-05 广州导远电子科技有限公司 一种网络数据的处理系统及方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667420B (zh) * 2021-01-18 2022-03-25 科东(广州)软件科技有限公司 实现异构系统内部通信的方法、装置、设备及存储介质
CN113360422B (zh) * 2021-07-13 2022-02-18 科东(广州)软件科技有限公司 一种异构系统中实时操作系统设备收发数据的方法及装置
CN114398145A (zh) * 2021-12-06 2022-04-26 麒麟软件有限公司 基于X86平台的Jailhouse运行non-root Linux的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109976925A (zh) * 2019-03-27 2019-07-05 北京翼辉信息技术有限公司 一种基于混合多系统核间实时通信的方法和系统
CN114070606A (zh) * 2021-11-12 2022-02-18 山东方寸微电子科技有限公司 一种基于国产操作系统的网络安全终端装置及工作方法
CN114710513A (zh) * 2022-03-30 2022-07-05 广州导远电子科技有限公司 一种网络数据的处理系统及方法

Also Published As

Publication number Publication date
CN115599502A (zh) 2023-01-13

Similar Documents

Publication Publication Date Title
CN115599502B (zh) 基于虚拟机监控器的rtos网络共享方法
CN109976925B (zh) 一种基于混合多系统核间实时通信的方法和系统
CN108243118B (zh) 转发报文的方法和物理主机
JP5608243B2 (ja) 仮想化環境においてi/o処理を行う方法および装置
KR101782342B1 (ko) 가상 스토리지 타겟 오프로드 기법
US7484029B2 (en) Method, apparatus, and computer usable program code for migrating virtual adapters from source physical adapters to destination physical adapters
US9798565B2 (en) Data processing system and method having an operating system that communicates with an accelerator independently of a hypervisor
CN115664892B (zh) 虚拟监控器下Linux虚拟网卡的实现方法
EP4053706A1 (en) Cross address-space bridging
US20210224210A1 (en) Information processing method, physical machine, and pcie device
CN113312143B (zh) 云计算系统、命令处理方法及虚拟化仿真装置
JP2005309553A (ja) 計算機
US10817448B1 (en) Reducing read transactions to peripheral devices
US11086801B1 (en) Dynamic resource management of network device
US20220391341A1 (en) Cross bus memory mapping
CN115357416B (zh) 一种跨系统进行数据处理的方法及装置
WO2022001808A1 (zh) 一种系统以及中断处理方法
WO2023221847A1 (zh) 基于虚拟机设备直通的数据访问方法、设备以及系统
WO2023174146A1 (zh) 卸载卡命名空间管理、输入输出请求处理系统和方法
CN109656675B (zh) 总线设备、计算机设备及实现物理主机云存储的方法
US11036649B2 (en) Network interface card resource partitioning
US11467998B1 (en) Low-latency packet processing for network device
US10810031B2 (en) Dirty memory tracking with assigned devices by exitless paravirtualization
CN113568734A (zh) 基于多核处理器的虚拟化方法、系统、多核处理器和电子设备
US7930445B2 (en) Computer system using remote I/O and I/O data transfer method

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
GR01 Patent grant
GR01 Patent grant