一种分布式虚拟机管理器的制作方法

文档序号:16146596发布日期:2018-12-05 16:31阅读:136来源:国知局

本发明涉及计算机虚拟化和分布式架构技术领域。具体地,涉及一种分布式虚拟机管理器。

背景技术

现有的虚拟机管理器都是运行在单台机器上的。

随着机器学习等技术的发展以及摩尔定律的终结,单台物理机器上的资源已不再能满足需要。现有的使用海量资源的方法有两种,一种是在单台机器上添加更多的硬件,如超级计算机。另一种方法是使用spark,hadoop等分布式系统,运行在由多台机器组成的物理集群上。但是前者的价格十分昂贵,而后者要求程序开发者必须重新编写代码,诸如map-reduce等编程模型并不是十分友好。

虚拟化技术有多种含义,此处指的是系统虚拟化,即虚拟化软件给客户端应用提供硬件指令集(isa)的虚拟,而这个客户端软件是一个完整的操作系统,如linux或windows。现有的系统虚拟化解决方案,如hyper-v,vmware和virtualbox都只能支持一台物理机器向多个客户操作系统提供虚拟资源,即“一虚多”。



技术实现要素:

针对现有技术中存在的上述不足,本发明的目的是,提供一种分布式虚拟机管理器,该分布式虚拟机管理器(dvmm,distributedvirtualmachinemanager)针对需要使用海量异构资源的虚拟机,把海量资源的一致接口抽象为一台虚拟机提供给上层客户操作系统。具体来讲,是通过分布式虚拟机管理器把多个物理机器上的异构资源通过虚拟化聚合技术,抽象为一台虚拟机,为上层运行的客户操作系统提供海量的虚拟化cpu/gpu/fpga、内存和i/o资源,从而满足有极高资源和性能需求的应用场景。

dvmm由两个模块组成,即分布式共享总线(dvb,distributedvirtualbus)和分布式非一致性内存访问(dnuma,distributednon-uniformmemoryaccess)。dvb使用中断转发对cpu和i/o资源进行模拟,而dnuma使用分布式共享内存技术对内存资源进行虚拟。客户操作系统开始运行后,绝大多数指令都可以在本地直接完成。当客户操作系统遇到在本地无法直接处理的操作时,就会退出到dvmm,dvmm根据操作的类型调用dvb或dnuma进行处理。处理结束后,客户操作系统得以继续运行。

本发明是通过以下技术方案实现的。

一种分布式虚拟机管理器(dvmm),包括:

-虚拟机管理模块,包括运行在每一个物理机器节点上的分布式共享总线模块和分布式非一致性内存访问模块,通过分布式共享总线模块和分布式非一致性内存访问模块,把海量资源的一致接口抽象为一台虚拟机提供给上层客户操作系统;其中:

所述分布式共享总线模块(dvb)使得不同物理机器节点间的cpu互相通信,并使得不同物理机器节点上挂载不同的i/o设备,提供虚拟cpu和虚拟i/o设备的抽象;

所述分布式非一致性内存访问模块(dnuma)使得不同物理机器节节点上的内存资源共享,提供分布式共享内存的抽象;

-客户操作系统,用于分布式非一致性内存访问模块构建dnuma-tso模型和进行numa亲和性设定。

优选地,所述分布式共享总线模块设有中断芯片,所述中断芯片根据分布式共享总线模块的指令,将不能在本地处理的中断进行中断转发。

优选地,所述分布式共享总线模块还提供虚拟异构设备的抽象;其中:

分布式共享总线模块为异构设备维护一张全局页表,用以维护任意两台物理机器上异构设备的物理地址的映射;通过全局页表查找需要访问的两台物理机器对应的物理地址在进行中断转发,完成异构设备的虚拟化。

优选地,所述分布式非一致性内存访问模块使用分布式共享内存协议来同步各物理机器节点之间的数据,并通过dnuma-tso模型来减弱一致性的程度;其中:

所述dnuma-tso模型把物理机器节点的本地页看做是一个写缓存;写dnuma使用lamport逻辑时钟来确定每台物理机器上页的顺序,然后根据这个顺序把这些页合并。

优选地,所述分布式非一致性内存访问模块使用分布式共享内存协议来同步各物理机器节点之间的数据的方法,包括如下步骤:

步骤s1:初始化页表控制权限;

步骤s2:客户操作系统开始运行,当客户操作系统出现缺页异常时,执行步骤s3;

步骤s3:客户操作系统出现缺页异常,退出到虚拟机管理模块中,分布式非一致性内存访问模块根据分布式共享内存协议设置合适的权限以及读取适当的数据,然后返回步骤s2。

其中,合适的权限是指msi协议中的modified、shared和invalid状态;适当的数据是指dsm根据msi协议从owner处读取最新的数据。

优选地,所述分布式非一致性内存访问模块采用高速网络进行网络通信,并使用压缩优化降低网络流量。

优选地,所述压缩优化的算法包括如下步骤:

-当节点pa向节点pb传输一个页p时,如果pb之后的数据不再改变,即状态不为可读可写,那么pa就会记录下p的值,记为p0,称之为twin,并记录此twin值是pb的;

-当节点pa向节点pb传输一个页p时,如果pa上有twin值,且这个twin值是pb的,那么就传输pa当前页的值p1与twin值p0之差,记为diff(p0,p1);

其中,节点pa和节点pb为互相传递页的两个物理机器节点。

优选地,所述numa亲和性设定采用如下任意一种方法:

方法一,通过机器学习的算法,判断会频繁访问远端的物理机器节点的进程,并通知客户操作系统的调度器设置合理的亲和性;由于布式非一致性内存访问模块和客户操作系统共享一块内存,布式非一致性内存访问模块在这块共享内存中填入实时机器学习进程的预测结果,客户操作系统根据这一结果将频繁访问的远端内存的进程分配到远端物理机器节点的cpu上;

方法二,采用与方法一相同的机器学习算法,打断正在运行的且频繁访问远端内存的cpu,并把cpu的状态打包发送给远端物理机器节点;迁移后的cpu在恢复运行后把远端内存访问变成本地内存访问。

优选地,所述打包的cpu状态包括能够让cpu运行的完整上下文;

所述能够让cpu运行的完整上下文包括:寄存器状态和/或中断芯片状态。

优选地,所述分布式非一致性内存访问模块还设有加速器;所述加速器采用fpga,用于将虚拟机管理模块的关键操作卸载到fpga上。

其中,关键操作是指:根据缺页异常的原理,如果cpu进行的操作违反了页表中的权限,那么mmu(内存管理单元)会触发一个缺页异常;现在这个过程由fpga来替代;mmu的问题是一个页的大小为4kb,这样这个页上任意一个或几个字节的修改都会引起整个页在网络上的传输,颠簸现象会比较严重;而使用fpga的意义在于我们可以把一个页的大小设为128b(即子页),这样由于一个或几个字节修改引起网络传输的概率就会降低。

与现有技术相比,本发明具有如下有益效果:

1、提供了一种分布式的虚拟机管理器;

2、客户操作系统上运行的应用可以使用海量的资源,包括计算,内存和i/o资源;

3、应用无需进行修改;

4、把多台物理机器进行虚拟化,向客户操作系统提供统一的接口。这样在不改变编程模型的条件下,程序得以使用海量资源;

5、提供了多台物理机虚拟成一台虚拟机的机制,即“多虚一”;

6、可以运行在较为廉价的物理机器集群上,而且应用可以不加修改直接运行在dvmm之上。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明所提供的分布式虚拟机管理器(dvmm)架构示意图;

图2为本发明所提供的分布式虚拟机管理器的分布式共享总线模块(dvb)架构示意图

图3为本发明所提供的分布式虚拟机管理器的分布式非一致性内存访问模块(dnuma)架构示意图

图4为msi协议状态转换状态机图;

图5为本发明一实施例的x86-tso示意图。

具体实施方式

下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

实施例

本实施例提供了一种分布式虚拟机管理器,

包括:

-虚拟机管理模块,包括运行在每一个物理机器节点上的分布式共享总线模块和分布式非一致性内存访问模块,通过分布式共享总线模块和分布式非一致性内存访问模块,把海量资源的一致接口抽象为一台虚拟机提供给上层客户操作系统;其中:

所述分布式共享总线模块使得不同物理机器节点间的cpu互相通信,并使得不同物理机器节点上挂载不同的i/o设备,提供虚拟cpu和虚拟i/o设备的抽象;

所述分布式非一致性内存访问模块使得不同物理机器节点上的内存资源共享,提供分布式共享内存的抽象;

-客户操作系统,用于分布式非一致性内存访问模块实现dnuma-tso模型和numa亲和性设定。

分布式虚拟机管理器(dvmm,distributedvirtualmachinemanager)通过虚拟化技术可以把多台物理机器上的cpu/gpu/fpga、内存和i/o给客户操作系统使用。

dvmm可以向客户操作系统提供多台物理机器上的资源。图1展示了dvmm的架构,在每一台机器运行有dvb和dnuma的软件,它们通过高速网络互联,每台物理机器挂载有不同的设备,dvb把这些设备串联起来,抽象成一台虚拟机。最终dvmm给上层客户操作系统提供海量可利用的资源。

dvb是对总线结构的模拟。通过qemu中的模拟设备以及模拟中断,dvb使得多台物理机器节点上的计算资源(如cpu/gpu),i/o设备可以互相通信,体现出完整的虚拟机体系结构。

dnuma使用分布式共享内存(dsm)协议来进行物理节点之间内存的同步。可采用dsm协议包括但不限于msi协议。msi协议把整个内存地址划分为多个页(如4kb),每个页有多个状态,分别为modified(可读可写),shared(只读)和invalid(不可读不可写)。当运行在dsm上的程序对任意一块内存进行读或写时,会根据当前页的状态进行对应的操作。整个地址空间中的每一个页都有个owner,这个owner是指保存有这个页最新数据的机器节点。当发生非法操作,即写一个shared页或读写一个invalid页时,dnuma软件就会去owner处读取最新的值。owner由一个owner管理节点来管理。写一个页发生缺页异常会使当前页的状态变为modified,而读一个页发生缺页异常会使当前页的状态变为shared。

dvmm在qemu-kvm的基础上进行开发(也可采用其他类似功能的虚拟化软件),其中dvb可在qemu的基础上进行开发,而dnuma可在kvm的基础上进行开发。qemu-kvm采用了以intelvt-x为基础的硬件辅助虚拟化方案,amd的方案也类似。以intel为例,vt-x把指令运行的环境分为两块,分别是根模式和非根模式。客户操作系统大多数情况下运行在非根模式中,而在需要模拟的情况下触发一种特殊的中断,即vmexit来退出到虚拟机模拟软件当中,此时称为根模式。vt-x使用一种名为ept的数据结构来描述内存地址空间的页的使用权限。当客户操作系统发生违反该页操作权限的操作时,vt-x就会触发eptviolation(缺页异常,是vmexit的一种)的中断,客户操作系统就会退出到虚拟化软件qemu-kvm中,此时dvmm会接管接下来的操作。

rdma高速网络是一种新的网络传输技术。它最大的特点是可以绕过内核,网卡直接把数据拷贝到用户指定的内存空间,减少了内核网络协议栈的开销。rdma比一般的tcp/ip网络的延迟低两个数量级左右。

本实施例针对在云计算环境下使用海量分布式资源的虚拟化需求,提出了一种分布式虚拟机管理器dvmm(distributedvirtualmachinemanager,分布式虚拟机管理器)的实现方法。dvmm可以把多个物理机器节点上的资源(包括cpu,内存和i/o等)共享,抽象成一台“多虚一”虚拟机,从而为虚拟机上运行的操作系统和运行程序提供海量的虚拟化资源。

dvmm主要包括dvb(distributedvirtualbus,分布式共享总线)和dnuma(distributednon-uniformmemoryaccess,分布式非一致性内存访问)两个组成部分。

dvb可以使得不同机器节点间的cpu互相通信,并使得不同机器节点上可以挂载不同的i/o设备,提供虚拟cpu和虚拟设备的抽象。通过dvb,客户端虚拟机可以使用海量的cpu资源以及gpu/fpga等异构的i/o资源,如磁盘、网卡、gpu和fpga等。

dnuma可以使得不同物理节点上的内存资源共享,提供分布式共享内存的抽象。dnuma使用分布式共享内存协议来同步各物理节点之间的数据。最简单的协议,如msi协议,实现了具有顺序一致性的内存模型。而本方法创造性地提出了dnuma-tso模型,来通过减弱一致性的程度来提高性能。

本实施例提出了三种提高dvmm系统性能的方法。通过机器学习的手段,dnuma可以得知一个进程访问远端内存节点的特征。一种方法是dnuma通过半虚拟化的方法使得应用合理的设置亲和性,从而减少应用访问远端内存的数量。第二种方法是把当前节点vcpu的状态发送给频繁访问的内存节点,从而使远端内存访问变成本地内存访问。第三种,通过fpga等加速硬件为mmu(memorymanagementunit)增加子页的功能,降低内存共享的粒度。

dvb的核心组件在于中断转发。当一个设备产生中断时,它会把中断号连同目标cpu编号写入中断芯片中。在x86下,这个中断芯片叫做ioapic。由于在dvmm中,目标cpu很可能不在本地,这时dvb就需要截获这个中断并转发到目标机器。cpu也有相似的机制。当cpu准备发一个核间中断时,它会触发一个vmexit,并最终为dvb捕获。与i/o中断相似,它最终会被发送到目标物理节点上。图2展示了dvb的架构图。每个物理机器中的实线表示可以在本地处理的中断,包括核间中断和i/o中断,而不能在本地处理的中断会被送到虚拟总线上进行中断转发。

虚拟环境下中断芯片是完全由软件(qemu)模拟的。中断芯片本身并不知道要接受或发送的中断的目标可能不在本地机器上,这一过程是由dvb完成的,并向中断芯片发出中断转发指令。

每一个物理节点上都会挂载零个到多个设备,包括磁盘、网卡、gpu、fpga、nvm等。dvb把这些设备虚拟化,向上层客户操作系统提供统一的接口。

对于gpu,fpga等异构设备的虚拟化,dvb维护一张全局的页表,用以维护任意两台机器上物理地址的映射。假设gpu挂载在机器a上,而机器b需要访问gpu,那么dvb会首先到全局页表p通过机器a上的物理地址pa查到一个全局地址pg,然后通过pg在找到机器b上的对应的物理地址pb,再进行中断转发,这样就可以完成异构设备的虚拟化。假设有n台机器,那么这张全局页表的大小为o(n)。

图3展示了dnuma的架构图。在每个物理机器上,都有ept的表项和对应的物理内存(dram)。ept表项上有对应的状态。不同机器节点间通过高速网络进行通信。dnuma使用msi协议来进行节点间内存同步。当出现缺页异常意味着dnuma需要进行数据同步操作。设出现缺页异常的节点为px,owner管理节点为py,owner为pz。dnuma处理缺页异常的步骤具体如下:

步骤1:px向py发送请求;

步骤2:py会读取到pz最新的页,同时如果请求是写,那么owner会变成px,pz设定适当的状态;

步骤3:px读到页后填到客户操作系统的内存中,并设定适当的的状态。

表1为dnuma对客户操作系统对不同页状态操作,说明了当客户操作系统对一个页进行操作(读或写)时,dnuma相应的操作。

表1

其中√表示当前状态下允许这样的操作。图4展示了dnuma页状态转换的状态机图。

dnuma采用高速网络进行网络通信,这里的网络包括但不限于rdma。rdma是现在比较流行的高速网络解决方案,它可以绕过内核协议栈,使得网卡直接把数据报拷贝到用户指定的地址空间,从而大幅降低了延迟。

dnuma还使用了压缩优化来降低网络流量。当px向py传输数据时,如果px上之前保存有py上页的拷贝,那么就可以使用一个高效的算法计算两台机器上数据之差。由于客户操作系统许多对内存的操作只涉及修改一个页上很少的数据(例如加锁/放锁),所以两次操作之间页的差别很小。使用压缩优化可以大幅降低网络传输的数据。压缩优化的算法如下:

1、当px向py传输一个页p时,如果py之后的数据不再改变,即状态不为modified,那么px就会记录下p的值,记为p0,称之为twin,并记录此twin值是py的;

2、当px向py传输一个页p时,如果px上有twin值,且这个twin值是py的,那么就传输px当前页的值p1与twin值p0之差,记为diff(p0,p1)。一般而言,diff(p0,p1)远小于p1,所以压缩优化能够降低网络传输负载。

如果完全采用msi协议,dnuma上的内存会发生大量的颠簸,从而导致性能下降。这是因为msi协议实现了顺序一致性模型,而这对于绝大部分虚拟机应用而言过于严格。而dnuma-tso降低一致性强度来提高性能。以x86架构为例,x86架构符合x86-tso的内存模型,dnuma-tso希望向上层虚拟机提供x86-tso的内存模型。x86-tso的核心思想在于在cpu和缓存之间存在一个写缓存(storebuffer),在x86架构上运行的程序所进行的写,除非指定特殊的内存模式,否则会先进入到写缓存中。x86-tso示意图如图5所示。在写缓存中的写是不会被其他cpu看到的,也就是说写入写缓存并没有写入内存。从理论上讲,从写缓存进入到缓存(内存系统)可以经过任意长的时间,除非应用程序主动调用内存屏障。内存屏障会让所有的在写缓存中的写进入到内存当中。在x86架构下,允许写-读的乱序,而dnuma-tso也会导致在分布式情景下的写-读乱序。dnuma-tso把机器节点的本地页看做是一个写缓存。写缓存中的数据只会在两种情况下被其他机器节点上的cpu看到:

1、过了一段时间(被称为时间窗口);

2、客户机器调用内存屏障。

当这两个条件符合时,这个页会被广播到所有机器。这里的广播是指像msi协议的写那样把其他页设为invalid状态。dnuma使用lamport逻辑时钟来确定每台机器上页的顺序,然后根据这个顺序把这些页合并。具体实现上,由于intelvt-x技术不支持客户操作系统调用内存屏障时退出,所以dnuma需要一个定制的(稍加修改)的客户操作系统,在调用内存屏障时显式使用hypercall进行操作。

在numa(非一致性内存)架构中,有一种被称为亲和性的属性,它指一个进程更倾向于运行在哪个节点之上。通过机器学习的算法,如强化学习,dnuma可以知道哪个进程会频繁访问远端的机器节点。如果这个现象发生,dnuma就会通知客户操作系统的调度器,让其设置合理的亲和性。频繁访问远端内存说明本地和远端很有可能有两个进程在争抢同一个资源,例如同一把锁。实时机器学习进程可以捕捉到这一特征并预测更加合理的分配方式。dnuma和客户操作系统会共享一块内存。dnuma在这块共享内存中填入实时机器学习进程的预测结果,而客户操作系统会根据这一结果将频繁访问的远端内存的进程分配到远端机器节点的cpu上。

另一种方法是迁移cpu。采用同样的机器学习算法,dnuma会打断那些正在运行的,频繁访问远端内存的cpu,并把它的cpu的状态打包发送给远端。打包的cpu状态包括可以让cpu运行的完整上下文,如寄存器状态和中断芯片状态(lapic)。迁移后的cpu在恢复运行后就可以把远端内存访问变成本地内存访问。打包的cpu状态典型的大小约为5kb,仅比一个页(4kb)略大,所以打包的开销是可以忽略不计的。

对于典型的应用而言,4kb的页共享粒度比较大,有而增加了很多伪共享。这意味着对4kb页上任何一个字节的修改都会引起网络传输。dnuma使用fpga做加速器,对dvmm的关键操作卸载(offloading)到专用硬件(fpga)上,用以优化系统的性能。例如增加mmu的功能,这样可以实现128b的子页逻辑,即只有对这一个128b子页的修改会引起网络传输,而且网络传输的流量也会减少。

在本实施例中:

dvmm可以把多个物理机器节点上的异构资源(包括cpu/gpu/fpga,内存和i/o等)共享,抽象成一台“多虚一”虚拟机,客户操作系统和应用软件可以不加修改地运行在该虚拟机上。从而为虚拟机上运行的客户操作系统和应用程序提供海量的虚拟化资源。dvmm包括两个部分,分别是dvb和dnuma,前者提供计算资源cpu/gpu/fpga和i/o设备的共享,后者提供分布式内存资源的共享。dvb和dnuma可分别基于但不限于qemu和kvm来实现。

dvmm的组成部分如下:

a.多台物理机器。每台物理机器提供一部分的计算、内存和i/o资源;

b.dvmm虚拟机管理模块。dvb和dnuma分别运行在每一个物理节点上;

c.dvmm客户操作系统。dnuma依赖于客户操作系统稍微修改其实现(用于性能加速)来实现dnuma-tso和numa亲和性设定。

dvb提出了将物理计算资源和io设备等通过虚拟总线抽象为一台虚拟机的方法,使得上层客户操作系统得到一致的虚拟化总线视图。cpu可以通过dvb向其他的cpu发送核间中断(inter-processorinterrupt),而i/o中断也可以接入到dvb,从而使得i/o设备可以分布在不同物理节点上的机器。应当注意这里的i/o设备包括但不限于磁盘、网卡等传统设备,fpga和gpu等异构加速设备和rdma、nvm等新型设备。

dnuma提出了一种分布式numa架构实现方法,基于分布式共享内存协议,实现将多台物理机内存共享从而向上层虚拟机提供海量的内存资源。numa友好的应用可以高效地运行在虚拟机上。

dvmm的核心模块dvm和dnuma使用高速网络进行网络通信。这里的网络通信包括但不限于rdma。dnuma还使用了压缩优化来降低网络流量。当物理节点px向物理节点py传输数据时,如果px上之前保存有py上页的拷贝,那么就可以使用一个高效的算法计算两台机器上数据之差。

dnuma的提出了一种优化的dsm协议实现方法,称为dnuma-tso。这是因为传统的msi协议实现了顺序一致性模型,而这对于绝大部分虚拟机应用而言约束太强而导致性能下降。dnuma-tso降低了内存一致性的强度。dnuma-tso把机器节点的本地页看做是一个写缓存。写缓存中的数据只在一定情况下才会被广播到所有机器。dnuma使用lamport逻辑时钟来确定每台机器上页的顺序,然后根据这个顺序把这些页合并。

dnuma提出了一种跨物理节点的扩展numa架构中资源亲和性的实现方法,通过机器学习方法,dnuma可以知道哪个进程会频繁访问远端的机器节点。如果这个现象发生,dnuma就会通知客户操作系统的调度器,让其设置合理的亲和性。

dnuma提出了cpu热迁移的优化方法。当一个vcpu上运行的进程频繁访问远端内存时,dnuma就会把这个vcpu的状态打包发送给远端机器节点。打包的状态包括寄存器,中断芯片(lapic)等。

dvmm提出了基于硬件加速的优化方法,可以使用fpga来加速。fpga增强mmu的功能,为dnuma的分布式共享内存提供共享粒度更小的保持一致性的方式。

本实施例在本发明技术方案和架构的前提下进行实施,并给出详细实施方式和具体操作过程,但是适用平台不限于下述实例。

具体部署实例是由八台普通服务器组成的集群,每台机器有64gb内存资源。每台服务器配有支持infiniband的网卡。服务器通过光纤连接到中心infiniband交换机上。本发明不受服务器种类和数目的限制,可以扩展到八台以上的服务器组成集群。

每台服务器装有ubuntuserver18.04.1lts64bit,并且配备两路cpu共计56核和128gb内存。八台机器中的六台分别装有磁盘、网卡、gpu、fpga、rdma和nvm。在启动dvmm时,依次启动八台机器上的dvmm软件,当所有机器上的dvmm软件启动之后整个虚拟机就开始运行。

本实施例的具体开发是基于qemu2.8.1.1和linux内核4.8.10的源码版本作为说明,对于其它qemu和linux其它版本内核也同样适用。在qemu-kvm上可以运行一个稍加修改的操作系统,即ubuntuserver18.04.1lts64bit。在客户操作系统上可以运行ide设备,scsi设备,网络设备,gpu设备,fpga设备等。在dvmm上拥有较好性能的测试程序应拥有numa友好的特点,即程序员应该根据numa架构的特点编写代码,使代码拥有较好的局部性。图计算、map-reduce等都是较好的应用场景。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1