CN114816655A - 用于安全容器的设备访问方法及系统 - Google Patents

用于安全容器的设备访问方法及系统 Download PDF

Info

Publication number
CN114816655A
CN114816655A CN202210210974.7A CN202210210974A CN114816655A CN 114816655 A CN114816655 A CN 114816655A CN 202210210974 A CN202210210974 A CN 202210210974A CN 114816655 A CN114816655 A CN 114816655A
Authority
CN
China
Prior art keywords
communication module
node
secure container
container
device node
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
Application number
CN202210210974.7A
Other languages
English (en)
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.)
Alibaba China Co Ltd
Original Assignee
Alibaba China 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 Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210210974.7A priority Critical patent/CN114816655A/zh
Publication of CN114816655A publication Critical patent/CN114816655A/zh
Priority to PCT/CN2023/078264 priority patent/WO2023165431A1/zh
Pending legal-status Critical Current

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/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/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)

Abstract

本公开涉及一种用于安全容器的设备访问方法及系统。在安全容器内创建第一通信模块;在安全容器所在服务器上创建用于与第一通信模块通信的第二通信模块。在服务器上创建与安全容器对应的第二设备节点,并为第二设备节点分配物理设备的至少部分硬件资源。在安全容器内创建对应于所述至少部分硬件资源的第一设备节点,并将安全容器中的应用程序针对第一设备节点的访问操作信息经由第一通信模块和第二通信模块传递到第二设备节点。由此,安全容器在能够调用物理设备的硬件资源的同时兼具隔离性,以保证不同安全容器内的硬件访问不会互相影响。

Description

用于安全容器的设备访问方法及系统
技术领域
本公开涉及容器技术领域,特备是涉及一种用于安全容器的设备访问方法及系统。
背景技术
容器技术是一种将软件打包成标准化单元的技术,以用于开发、交付和部署。
容器技术能够确保应用运行环境一致性,使应用能够更快速的启动,具有隔离性、可扩展性、迁移方便、可持续交付和部署等特点。
基于以上特性,容器技术被广泛的应用在云服务领域。
基于容器技术创建的容器主要分为普通容器和安全容器两种。
普通容器主要是基于Cgroups(control groups,控制组)和Namespace(命名空间)实现资源隔离。不同普通容器容共享宿主机的操作系统内核,隔离性和安全性较弱。
安全容器是基于轻量虚拟机技术实现的。每个安全容器都运行在一个单独的微型虚拟机中,拥有立的操作系统内核,以避免共享宿主机的操作系统内核。
安全容器的隔离性和安全性强于普通容器。
由于安全容器与宿主机的隔离性,如何使得同一物理设备的硬件资源在被多个安全容器共享使用的同时兼具隔离性,以保证不同安全容器内的硬件访问不会互相影响,是目前亟需解决的一个技术问题。
发明内容
本公开要解决的一个技术问题是提供一种能够保证同一物理设备的硬件资源在被多个安全容器共享使用的同时兼具隔离性的方案。
根据本公开的第一个方面,提供了一种用于安全容器的设备访问方法,包括:在安全容器内创建第一通信模块;在安全容器所在服务器上创建用于与第一通信模块通信的第二通信模块;在服务器上创建与安全容器对应的第二设备节点,并为第二设备节点分配物理设备的至少部分硬件资源;在安全容器内创建对应于至少部分硬件资源的第一设备节点;以及将安全容器中的应用程序针对第一设备节点的访问操作信息经由第一通信模块和第二通信模块传递到第二设备节点。
可选地,访问操作信息包括:需要调用硬件资源执行的任务指令;和/或需要发送给物理设备的数据发送请求。
可选地,访问操作信息为数据发送请求,该方法还包括:设备驱动响应于从第二设备节点获取到数据发送请求,申请用于存储数据的内存空间,并确定内存空间所对应的主机物理地址和客机虚拟地址之间的映射关系,主机物理地址为内存空间在服务器上的物理地址,客机虚拟地址为内存空间在安全容器中的虚拟地址;设备驱动经由第二通信模块和第一通信模块,将客机虚拟地址发送给应用程序,以由应用程序将数据拷贝到客机虚拟地址。
可选地,该方法还包括:设备驱动根据映射关系,从主机物理地址获取数据,并将数据发送给物理设备。
可选地,在安全容器内创建第一设备节点的步骤包括:在安全容器内创建设备节点模拟模块,由设备节点模拟模块在安全容器中模拟得到虚拟的第二设备节点。
可选地,访问操作信息为任务指令,将安全容器中的应用程序针对第一设备节点的访问操作信息经由第一通信模块和第二通信模块传递到第二设备节点的步骤包括:安全容器中的应用程序通过第一设备节点发出任务指令;设备节点模拟模块对第一设备节点进行监测,获取任务指令,并通过第一通信模块将任务指令发送到第二通信模块;以及第二通信模块将任务指令传递到与安全容器对应的第二设备节点。
可选地,第一设备节点位于安全容器的内核空间,并且/或者第二设备节点位于服务器的内核空间,并且/或者第一通信模块位于安全容器的用户空间,并且/或者第二通信模块位于服务器的用户空间。
根据本公开的第二个方面,提供了一种用于安全容器的设备访问系统,包括:客户端装置和服务端装置,服务端装置设置在安全容器所在宿主机内,包括与安全容器对应的第二设备节点以及用于与第一通信模块通信的第二通信模块,第二设备节点分配有物理设备的至少部分硬件资源,客户端装置设置在安全容器内,包括第一通信模块和对应于至少部分硬件资源的第一设备节点,客户端装置将安全容器中的应用程序针对第一设备节点的访问操作信息经由第一通信模块和第二通信模块传递到第二设备节点。
可选地,访问操作信息为数据发送请求,设备驱动响应于从第二设备节点获取到数据发送请求,申请用于存储数据的内存空间,并确定内存空间所对应的主机物理地址和客机虚拟地址之间的映射关系,主机物理地址为内存空间在宿主机上的物理地址,客机虚拟地址为内存空间在安全容器中的虚拟地址,设备驱动经由第二通信模块和第一通信模块,将客机虚拟地址发送给应用程序,以由应用程序将数据拷贝到客机虚拟地址。
可选地,设备驱动根据映射关系,从主机物理地址获取数据,并将数据发送给物理设备
可选地,第一设备节点位于安全容器的内核空间,并且/或者第二设备节点位于宿主机的内核空间,并且/或者第一通信模块位于安全容器的用户空间,并且/或者第二通信模块位于宿主机的用户空间。
根据本公开的第三个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第一方面所述的方法。
根据本公开的第四个方面,提供了一种计算机程序产品,包括可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上述第一方面所述的方法。
根据本公开的第五个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一方面所述的方法。
由此,本公开通过在安全容器内创建第一通信模块和第一设备节点,并在安全容器所在服务器上创建用于与第一通信模块通信的第二通信模块,以及与安全容器对应的第二设备节点,将应用程序针对第一设备节点的访问操作信息经由第一通信模块和第二通信模块传递到第二设备节点,使得在第一设备节点、第一通信模块以及第二通信模块的作用下,第二设备节点能够被安全容器中的应用程序使用。而第二设备节点对应的硬件资源又是针对安全容器分配的,使得安全容器在能够调用物理设备的硬件资源的同时兼具隔离性,以保证不同安全容器内的硬件访问不会互相影响。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了根据本公开一个实施例的用于安全容器的设备访问方法的原理示意图。
图2示出了根据本公开另一个实施例的用于安全容器的设备访问方法的原理示意图。
图3示出了根据本公开一个实施例的设备访问系统的结构示意图。
图4示出了部署了本公开的设备访问系统的服务器实例示意图。
图5示出了根据本公开一个实施例的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
安全容器这个概念主要与普通容器进行比较的。安全容器与普通容器相比,最主要的区别是每个安全容器(一般而言是容器组(pod))都运行在单独的微型虚拟机中,拥有独立的操作系统内核,以及虚拟化层的安全隔离。因为云容器实例采用的是共享多租集群,因此容器的安全隔离比用户独立拥有私有Kubernetes(一种容器集群管理系统,简称为“K8s”)集群有更严格的要求。通过安全容器,不同租户之间的容器之间,内核、计算资源、存储和网络都是隔离开的。保护了用户的资源和数据不被其他用户抢占和窃取。
也就是说,普通容器是直接运行在宿主机(如服务器)的用户态(用户空间,用户态空间)中,能够与宿主机的内核态(内核空间,内核态空间)通信。而安全容器则是运行在单独的微型虚拟机中,拥有独立的操作系统内核,无法直接与宿主机的内核态通信。
安全容器的上述特点,使得在宿主机上创建的设备节点无法直接与安全容器通信。因而也就无法像对待普通容器那样,直接在宿主机上创建可与安全容器通信的设备节点。
有鉴于此,本公开根据安全容器的工作特点,提出了一种与安全容器相适配的设备访问方案(也可称为设备虚拟化方案),以使得安全容器能够共享使用物理设备的硬件资源的同时兼具隔离性,以保证不同安全容器内的硬件访问不会互相影响。
图1示出了根据本公开一个实施例的用于安全容器的设备访问方法的原理示意图。
参见图1,本公开分别在安全容器和安全容器所在服务器(即宿主机)上创建了一个通信模块。安全容器内的通信模块可以称为第一通信模块,服务器中的通信模块可以称为第二通信模块。第一通信模块位于安全容器的用户空间中,第二通信模块位于服务器的用户空间中。第一通信模块与第二通信模块之间能够进行通信。例如,第一通信模块与第二通信模块之间可以进行网络通信,如Socket(套接字)通信。
本公开还分别在安全容器和安全容器所在服务器上创建了一个设备节点。安全容器内的设备节点可以称为第一设备节点,服务器中的设备节点可以称为第二设备节点。
第二设备节点是针对安全容器创建的。即,每个安全容器对应一个第二设备节点。
可以为第二设备节点分配物理设备的至少部分硬件资源。第二设备节点与安全容器一一对应。为第二设备节点分配物理设备的至少部分硬件资源,也即将物理设备的硬件资源分配给安全容器。物理设备可以是服务器中的硬件设备,也可以是与服务器连接的、位于服务器之外的硬件设备。
物理设备可以是指实体设备,如云服务器主机。硬件资源可以是指实体硬件资源,如CPU(Central Processing Unit,中央处理器)、内存、磁盘、网络等。对于异构计算设备而言,硬件资源还可以包括GPU(Graphics Processing Unit,图像处理单元)、NPU(NeuralProcessing Unit,神经网络处理单元)等。作为示例,物理设备可以是包括CPU、GPU、NPU等多种类型的计算单元的异构计算设备。异构计算是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见计算单元的类别主要包括CPU、GPU、NPU等。
设备节点可以作为设备驱动(内核态)和应用程序(用户态)的接口。应用程序可以通过IOCTL(Input/Output Control,输入输出控制)、内存映射或者直接读写等方式通过设备节点和设备驱动进行通信。其中,IOCTL是一个专用于设备输入输出操作的系统调用,该调用传入一个跟设备有关的请求码,系统调用的功能完全取决于请求码。
以服务器中的操作系统为Linux为例,在Linux中所有设备(设备的信息)都以文件的形式存放在/dev目录下,都是通过文件的方式进行访问。设备节点是Linux内核对设备的抽象,一个设备节点就是一个文件。应用程序通过一组标准化的调用执行访问设备节点,这些调用独立于任何特定的驱动程序。驱动程序负责将这些标准调用映射到实际硬件的特有操作。
第二设备节点可以是由设备驱动(设备驱动程序)创建的设备节点。
第一设备节点可以是在安全容器中通过模拟得到的一个虚拟的设备节点。
第二设备节点位于服务器的内核空间中。
第一设备节点位于安全容器的内核空间中。
第二设备节点可以视为设备驱动和运行在安全容器中的应用程序的接口。但是由于安全容器的隔离性,使得第二设备节点无法传递到安全容器中,供安全容器中的应用程序使用。为此,在安全容器内创建的第一设备节点可以充当第二设备节点,供安全容器使用。即,对于安全容器中的应用程序而言,第一设备节点即为应用程序和设备驱动的接口,应用程序可以通过第一设备节点与设备驱动通信。
也就是说,第一设备节点与第二设备节点对应于同一部分硬件资源。第一设备节点可以用于作为为第二设备节点分配的硬件资源在安全容器内的入口,安全容器中的应用程序可以通过访问第一设备节点来实现对硬件资源的访问。
应用程序针对第一设备节点的访问操作信息可以经由第一通信模块和第二通信模块传递到第二设备节点。由此,在第一设备节点、第一通信模块以及第二通信模块的作用下,第二设备节点能够被安全容器中的应用程序使用。
第二设备节点可以直接与设备驱动通信,第二设备节点对应的硬件资源又是针对安全容器划分的。因此,设备驱动可以将安全容器中的应用程序针对第一设备节点的访问操作信息映射到实际硬件,使得安全容器在能够调用物理设备的硬件资源的同时兼具隔离性,以保证不同安全容器内的硬件访问不会互相影响。
在需要将多个不同物理设备的硬件资源分配给同一个安全容器时,可以针对每个物理设备创建一个与安全容器对应的第二设备节点,每个第二设备节点分配该第二设备节点对应的物理设备的至少部分硬件资源。在安全容器内可以对应创建多个第一设备节点。安全容器中的应用程序针对第一设备节点的访问操作信息的类型主要包括需要调用物理设备的硬件资源执行的任务指令和需要发送给物理设备的数据发送请求两种。
若访问操作信息为任务指令,则在安全容器中的应用程序针对第一设备节点的任务指令经由第一通信模块和第二通信模块传递到第二设备节点后,可以由设备驱动根据从第二设备节点获取的任务指令,从为第二设备节点分配的硬件资源中调用资源执行任务指令,任务指令的执行结果可以经由第二通信模块、第一通信模块回传给应用程序,如可以经由第二设备节点、第二通信模块、第一通信模块以及第一设备节点回传给应用程序。
若访问操作信息为数据发送请求,则在安全容器中的应用程序针对第一设备节点的数据发送请求经由第一通信模块和第二通信模块传递到第二设备节点后,设备驱动响应于从第二设备节点获取到的数据发送请求,可以申请一段用于存储数据的内存空间,确定内存空间所对应的主机物理地址(Host Physical Address,HPA)和客机虚拟地址(GuestVirtual Address,GVA)之间的映射关系,然后经由第二通信模块和第一通信模块,将客机虚拟地址发送给应用程序,如可以经由第二设备节点、第二通信模块、第一通信模块以及第一设备节点将客机虚拟地址发送给应用程序。应用程序可以将期望发送给物理设备的数据拷贝到客机虚拟地址。设备驱动可以根据客机虚拟地址与主机物理地址之间的映射关系,从主机物理地址获取到该数据,并将数据发送给物理设备。由此,应用程序在向物理设备传递数据时,不需要通过数据传输的方式将数据发送给物理设备,而只需要将数据拷贝到特定的地址段,即可高效的完成数据由安全容器到宿主机的传递,而无需经过数据传输步骤。
主机物理地址为内存空间在服务器上的物理地址,客机虚拟地址为内存空间在安全容器中的虚拟地址。应用程序针对第一设备节点的数据发送请求,也可以称为地址空间申请请求。该请求经第一通信模块、第二通信模块传递到位于服务器上的设备驱动,由设备驱动申请内存空间时,可以在服务器的内核层申请一段内存。所申请的内存的地址为主机虚拟地址(Host Virtual Address,HVA),根据申请的内存空间的主机虚拟地址,可以确定内存空间所对应的主机物理地址,即可以将HVA转换成HPA。在确定HPA与GPA之间的映射关系时,设备驱动可以与管理安全容器的虚拟机管理器(hypervisor)交互,完成HPA与GPA之间的映射。
图2示出了根据本公开另一个实施例的用于安全容器的设备访问方法的原理示意图。
在本实施例中,可以在安全容器内创建一个设备节点模拟模块。设备节点模拟模块的作用有二:一是在安全容器中模拟得到虚拟的第一设备节点;二是对安全容器中的应用程序针对第一设备节点的访问操作信息(任务)进行监测、拦截以及转发。
设备驱动可以包括任务调度器、资源分配器以及数据处理模块。任务调度器用于调度多个安全容器通过第一设备节点、第二设备节点提交的任务;资源分配器用于分配及隔离多个安全容器的硬件资源;数据处理模块用于安全容器和服务器之间的数据传递。
传统的设备驱动在设计时,没有考虑到对安全容器的支持,因而存在各种缺陷。本方案通过以下方面的设置,让设备驱动对安全容器有了更好的支持。
1、多个设备节点
传统的设备驱动通常只提供一个设备节点,用来作为内核设备驱动和用户态程序的接口。多个用户程序可以IOCTL、内存映射或者直接读写等方式通过设备节点和内核设备驱动进行通信。然而单个设备节点并不适用于多个安全容器之间的隔离。
因此本公开提出了设备驱动提供多个设备节点的方案。并根据安全容器的特点提出,将多个设备节点以网络通信方式分配给不同的安全容器。即,借助在安全容器中模拟的设备节点和分别设置在安全容器和服务器中的通信模块,将设备驱动提供的设备节点分配给安全容器。可以实现以下几点优势:
1)多个设备节点之间可以容易做到任务的隔离。在单设备节点的情况下,设备驱动无法被多个安全容器共享使用;
2)区分任务来自哪个安全容器,因而很难实现任务的隔离。而有了多设备节点后,设备驱动可以做出区分,从而可以隔离不同的安全容器发出的任务。
3)多个设备节点之间可以实现不同优先级。在任务隔离的基础上,设备驱动可以为每个设备节点赋予不同的优先级,从而可以达到不同类型的安全容器之间的任务优先级。
4)多个设备节点之间可以做到资源隔离。类似于任务隔离,在多个设备节点的情况下,设备驱动可以为每个节点都保留一定资源,从而避免了单设备节点下,由于某个进程占用过多资源导致其他进程无法得到足够资源的情况。
5)多个设备节点之间可以被分配到不同大小的资源。有了资源隔离,那么进一步每个设备节点的资源大小可以被静态或者动态分配为不同的大小,因而不同容器可以得到不同的资源大小。
6)多个设备节点的数量不需要固定,可以动态分配,这样可以支持灵活的容器数量。
2、任务调度器
在传统的任务管理器当中,通常没有任务调度器,或者任务调度器的实现非常简单。
在本公开中,任务调度器针对从不同设备节点中提交的任务,可以进行基于时间片、基于物理执行单元、或其他方式(如优先级)的调度,以保证:具有同一优先级的设备节点的任务占有相同的时间片或者物理执行单元;高优先级设备节点的任务比低优先级设备节点的任务占有更多的时间片或物理执行单元。
3、资源管理器
为了防止某个安全容器占用过多的资源,可以使用资源管理器来进行资源的隔离,来保证:某个安全容器无法访问到其他安全容器内的资源;每个安全容器无法使用超出限度的资源。同样,类似于任务调度器,资源管理器可以为不同的容器设定不同数量的资源限制,通过不同的资源分配策略,可以达到更好的硬件资源利用率。
4、数据处理模块
负责建立安全容器和宿主机设备之间数据传输的通道。
5、安全容器的设备节点的实现基于kernel(操作系统的内核,经常用来特指Linux操作系统的内核)层实现。应用软件不感知,不需要做任何的修改。
6、可以工作在标准的安全容器内。
安全容器中的应用程序(例如TensorFlow)在使用设备(比如GPU和NPU设备),在向这些设备提交任务时,主要存在两个交互的通路,分别是控制流和数据流。控制流是指发给物理设备的任务指令,数据流是向物理设备提交的数据。
本公开可以从控制流和数据流两个方面完成设备虚拟化的隔离。
1、控制流
安全容器中的应用程序可以通过第一设备节点发出任务指令。设备节点模拟模块在监测到任务指令后,可以拦截该任务指令,并通过第一通信模块将任务指令发送到第二通信模块。第二通信模块可以将任务指令传递到与安全容器对应的第二设备节点。设备驱动在从第二设备节点获取到任务指令后,可以在任务调度器的作用下调用针对安全容器分配的硬件资源执行任务指令。
例如,在安全容器内主要对用户层到内核层的IOCTL的调用进行转发,应用通过第一设备节点向设备节点模拟模块发生IOCTL的调用,设备节点模拟模块截获此操作后,通过第一通信模块、第二通信模块传递到宿主机上对应的第二设备节点。
2、数据流
在安全容器内应用(例如TensorFlow)向设备传递数据,一般是通过方式(内存映射)由设备驱动申请传递数据的内存空间,然后向对应的地址空间拷贝数据。
在本公开中,应用可以通过设备节点模拟模块申请一段地址空间。安全容器内的设备节点模拟模块可以将此任务传递到宿主机上的数据处理模块。数据处理模块首先在宿主机的内核层申请一段内存(HVA),然后转换成宿主机的物理地址HPA。数据处理模块可以通过和管理安全容器的hypervisor交互,将宿主机的物理地址HPA和容器内的虚拟地址(Guest Virtual Address,GVA)对应起来,得到二者间映射关系。将GVA返回给数据处理模块,数据处理模块可以通过第二通信模块、第一通信模块将GVA返回安全容器的应用层,这样应用可以向此地址段拷贝数据,数据处理模块可以找到对应的HVA获取数据,由此可以高效的完成数据由安全容器到宿主机的传递,而无需进行数据传输。
本公开与现有方案相比,至少存在如下优点:
1)本公开的技术方案主要在内核驱动中,并不涉及到用户态API的接口。当用户API接口有改动时,本公开无需做修改,因而可以保证用户无感知,也避免了升级维护过程中可能带来的风险及损失。
2)本公开通过对节点IOCTL类调用的转发,实现设备的资源隔离和共享,实现安全容器共享设备的虚拟化方案,通过管理安全容器的hypervisor完成安全容器GVA和宿主机HVA之间的地址映射,数据通过避免数据拷贝和搬运,可以提高性能。
3)本公开中由于各个设备节点资源的物理地址处于同一物理地址范围,因此不需要额外的地址转换或者是额外的页表结构,因而不会有性能损失。
4)本公开具有高可维护性,高性能,及高度灵活性,相比其他各种不同的方案,更加适用于未来容器中的异构计算应用,在未来的异构计算云服务中应当会占有一席之地。
本公开通过对设备驱动进行改造,创建针对安全容器的设备节点,并通过在安全容器内模拟设备节点,基于所模拟的设备节点借助网络通信方式实现设备驱动所创建的设备节点与和安全容器内应用程序的通信,由此可以达到资源隔离的目的,可用于安全容器。
不同于现有的安全容器中的设备虚拟化方案,本公开提出了一种轻量化的设备虚拟化方案,在内核的设备驱动中直接实现多个设备节点,通过网络将其链接到安全容器内部的设备节点,从而可以达到一个物理设备可以被多个安全容器实例共享而又保证实现安全容器之间的资源隔离和任务隔离的要求。
图3示出了根据本公开一个实施例的设备访问系统的结构示意图。
如图3所示,设备访问系统包括客户端装置和服务端装置。客户端装置设置在安全容器内。服务端装置设置在安全容器所在宿主机(如服务器)中。
服务端装置包括与安全容器对应的第二设备节点以及用于与第一通信模块通信的第二通信模块,第二设备节点分配有物理设备的至少部分硬件资源。
客户端装置包括第一通信模块和对应于所述至少部分硬件资源的第一设备节点。
客户端装置可以将安全容器中的应用程序针对第一设备节点的访问操作信息经由第一通信模块和第二通信模块传递到第二设备节点。
客户端装置还可以包括设备节点模拟模块。服务端装置还可以包括数据处理模块、任务调度器、资源分配器等等。关于设备节点模拟模块、数据处理模块、任务调度器、资源分配器可以参见上文相关描述,此处不再赘述。
图4示出了部署了本公开的设备访问系统的服务器实例示意图。
如图4所示,在服务器(如云服务器)中可以创建多个安全容器。每个安全容器中可以运行AI(Artificial Intelligence,人工智能)应用,如TensorFlow。在安全容器中部署有客户端装置(Client),在安全容器所在宿主机中部署有服务端装置(Server)。客户端装置与服务端装置之间可以基于TCP/IP协议进行通信,也支持RDMA(Remote Direct MemoryAccess,直接数据存取)功能。在Client和Server的作用下,本地或远程GPU可以被多个安全容器实例共享而又保证实现安全容器之间的资源隔离和任务隔离的要求。
图5示出了根据本发明一实施例可用于实现上述针对安全容器的设备访问方法的计算设备的结构示意图。
参见图5,计算设备500包括存储器510和处理器520。
处理器520可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器520可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器520可以使用定制的电路实现,例如特定用途集成电路(ASIC,Application Specific Integrated Circuit)或者现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)。
存储器510可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器520或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器510可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器510可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器510上存储有可执行代码,当可执行代码被处理器520处理时,可以使处理器520执行上文述及的设备访问方法。
上文中已经参考附图详细描述了根据本发明的用于安全容器的设备访问方法、系统及计算设备。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (14)

1.一种用于安全容器的设备访问方法,包括:
在安全容器内创建第一通信模块;
在所述安全容器所在服务器上创建用于与所述第一通信模块通信的第二通信模块;
在所述服务器上创建与所述安全容器对应的第二设备节点,并为所述第二设备节点分配物理设备的至少部分硬件资源;
在所述安全容器内创建对应于所述至少部分硬件资源的第一设备节点;以及
将所述安全容器中的应用程序针对所述第一设备节点的访问操作信息经由所述第一通信模块和所述第二通信模块传递到所述第二设备节点。
2.根据权利要求1所述的方法,其中,所述访问操作信息包括:需要调用硬件资源执行的任务指令;和/或需要发送给所述物理设备的数据发送请求。
3.根据权利要求2所述的方法,其中,所述访问操作信息为所述数据发送请求,该方法还包括:
设备驱动响应于从所述第二设备节点获取到所述数据发送请求,申请用于存储数据的内存空间,并确定所述内存空间所对应的主机物理地址和客机虚拟地址之间的映射关系,所述主机物理地址为所述内存空间在所述服务器上的物理地址,所述客机虚拟地址为所述内存空间在所述安全容器中的虚拟地址;以及
所述设备驱动经由所述第二通信模块和所述第一通信模块,将所述客机虚拟地址发送给所述应用程序,以由所述应用程序将数据拷贝到所述客机虚拟地址。
4.根据权利要求3所述的方法,还包括:
所述设备驱动根据所述映射关系,从所述主机物理地址获取所述数据,并将所述数据发送给所述物理设备。
5.根据权利要求1所述的方法,在所述安全容器内创建第一设备节点的步骤包括:
在所述安全容器内创建设备节点模拟模块,由所述设备节点模拟模块在所述安全容器中模拟得到虚拟的第二设备节点。
6.根据权利要求5所述的方法,其中,所述访问操作信息为任务指令,将所述安全容器中的应用程序针对所述第一设备节点的访问操作信息经由所述第一通信模块和所述第二通信模块传递到所述第二设备节点的步骤包括:
所述安全容器中的应用程序通过所述第一设备节点发出任务指令;
所述设备节点模拟模块对所述第一设备节点进行监测,获取所述任务指令,并通过所述第一通信模块将所述任务指令发送到所述第二通信模块;以及
所述第二通信模块将所述任务指令传递到与所述安全容器对应的第二设备节点。
7.根据权利要求1至6中任一项所述的方法,其中,
所述第一设备节点位于所述安全容器的内核空间,并且/或者
所述第二设备节点位于所述服务器的内核空间,并且/或者
所述第一通信模块位于所述安全容器的用户空间,并且/或者
所述第二通信模块位于所述服务器的用户空间。
8.一种用于安全容器的设备访问系统,包括:客户端装置和服务端装置,
所述服务端装置设置在所述安全容器所在宿主机内,包括与所述安全容器对应的第二设备节点以及用于与所述第一通信模块通信的第二通信模块,第二设备节点分配有物理设备的至少部分硬件资源,
所述客户端装置设置在所述安全容器内,包括第一通信模块和对应于所述至少部分硬件资源的第一设备节点,
所述客户端装置将所述安全容器中的应用程序针对所述第一设备节点的访问操作信息经由所述第一通信模块和所述第二通信模块传递到所述第二设备节点。
9.根据权利要求8所述的系统,其中,
所述访问操作信息为所述数据发送请求,设备驱动响应于从所述第二设备节点获取到所述数据发送请求,申请用于存储数据的内存空间,并确定所述内存空间所对应的主机物理地址和客机虚拟地址之间的映射关系,所述主机物理地址为所述内存空间在所述宿主机上的物理地址,所述客机虚拟地址为所述内存空间在所述安全容器中的虚拟地址,
所述设备驱动经由所述第二通信模块和所述第一通信模块,将所述客机虚拟地址发送给所述应用程序,以由所述应用程序将数据拷贝到所述客机虚拟地址。
10.根据权利要求9所述的系统,其中,所述设备驱动根据所述映射关系,从所述主机物理地址获取所述数据,并将所述数据发送给所述物理设备。
11.根据权利要求8至10中任一项所述的系统,其中,
所述第一设备节点位于所述安全容器的内核空间,并且/或者
所述第二设备节点位于所述宿主机的内核空间,并且/或者
所述第一通信模块位于所述安全容器的用户空间,并且/或者
所述第二通信模块位于所述宿主机的用户空间。
12.一种计算设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1至7中任何一项所述的方法。
13.一种计算机程序产品,包括可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至7中任何一项所述的方法。
14.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至7中任何一项所述的方法。
CN202210210974.7A 2022-03-03 2022-03-03 用于安全容器的设备访问方法及系统 Pending CN114816655A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210210974.7A CN114816655A (zh) 2022-03-03 2022-03-03 用于安全容器的设备访问方法及系统
PCT/CN2023/078264 WO2023165431A1 (zh) 2022-03-03 2023-02-24 用于安全容器的设备访问方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210210974.7A CN114816655A (zh) 2022-03-03 2022-03-03 用于安全容器的设备访问方法及系统

Publications (1)

Publication Number Publication Date
CN114816655A true CN114816655A (zh) 2022-07-29

Family

ID=82528688

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210210974.7A Pending CN114816655A (zh) 2022-03-03 2022-03-03 用于安全容器的设备访问方法及系统

Country Status (2)

Country Link
CN (1) CN114816655A (zh)
WO (1) WO2023165431A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023165431A1 (zh) * 2022-03-03 2023-09-07 阿里巴巴(中国)有限公司 用于安全容器的设备访问方法及系统
CN116956270A (zh) * 2023-09-18 2023-10-27 星汉智能科技股份有限公司 应用程序运行方法、运行环境re、电子设备、存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180285139A1 (en) * 2017-04-02 2018-10-04 vEyE Security Ltd. Hypervisor-based containers
CN113296926B (zh) * 2020-05-29 2022-06-21 阿里巴巴集团控股有限公司 一种资源分配方法、计算设备及存储介质
CN113296821A (zh) * 2021-02-01 2021-08-24 阿里巴巴集团控股有限公司 提供容器服务的设备和方法以及该设备的热升级方法
CN114816655A (zh) * 2022-03-03 2022-07-29 阿里巴巴(中国)有限公司 用于安全容器的设备访问方法及系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023165431A1 (zh) * 2022-03-03 2023-09-07 阿里巴巴(中国)有限公司 用于安全容器的设备访问方法及系统
CN116956270A (zh) * 2023-09-18 2023-10-27 星汉智能科技股份有限公司 应用程序运行方法、运行环境re、电子设备、存储介质
CN116956270B (zh) * 2023-09-18 2024-01-12 星汉智能科技股份有限公司 应用程序运行方法、运行环境re、电子设备、存储介质

Also Published As

Publication number Publication date
WO2023165431A1 (zh) 2023-09-07

Similar Documents

Publication Publication Date Title
US11934341B2 (en) Virtual RDMA switching for containerized
US10936535B2 (en) Providing remote, reliant and high performance PCI express device in cloud computing environments
US9519795B2 (en) Interconnect partition binding API, allocation and management of application-specific partitions
WO2018120986A1 (zh) 转发报文的方法和物理主机
US7415709B2 (en) Virtual resource ID mapping
US7552298B2 (en) Method and system for deferred pinning of host memory for stateful network interfaces
JP4942966B2 (ja) パーティションバス
US9558041B2 (en) Transparent non-uniform memory access (NUMA) awareness
TWI417790B (zh) 異質架構中之邏輯分割以及虛擬化
US20070186025A1 (en) Method, apparatus, and computer usable program code for migrating virtual adapters from source physical adapters to destination physical adapters
WO2023165431A1 (zh) 用于安全容器的设备访问方法及系统
GB2525003A (en) Data Processing Systems
CN116601606A (zh) 计算平台上的多租户控制平面管理
WO2006035730A1 (ja) 情報処理装置、通信処理方法、並びにコンピュータ・プログラム
US20200167175A1 (en) Filtering based containerized virtual machine networking
JP2008021252A (ja) 計算機システム及びアドレス割当方法
KR100458104B1 (ko) 파티션 처리 환경을 위한 이종 클라이언트 서버 방법,시스템 및 프로그램 제품
US11360824B2 (en) Customized partitioning of compute instances
KR102092459B1 (ko) 컨테이너 기반 가상화 환경에서 gpu 메모리 자원 관리 및 스케줄링 방법 및 시스템
US11429412B2 (en) Guest protection from application code execution in kernel mode
US11635970B2 (en) Integrated network boot operating system installation leveraging hyperconverged storage
EP4078392B1 (en) Efficiently providing a guest context access to file content at a host context
US20230171189A1 (en) Virtual network interfaces for managed layer-2 connectivity at computing service extension locations
US20230067658A1 (en) System and operation method of hybrid virtual machine managers
US20240126580A1 (en) Transparently providing virtualization features to unenlightened guest operating systems

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