CN105893112B - 一种虚拟化环境下的数据包处理方法及装置 - Google Patents
一种虚拟化环境下的数据包处理方法及装置 Download PDFInfo
- Publication number
- CN105893112B CN105893112B CN201610187968.9A CN201610187968A CN105893112B CN 105893112 B CN105893112 B CN 105893112B CN 201610187968 A CN201610187968 A CN 201610187968A CN 105893112 B CN105893112 B CN 105893112B
- Authority
- CN
- China
- Prior art keywords
- page
- domain
- reference address
- data packet
- pool
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in 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)
- Memory System Of A Hierarchy Structure (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种虚拟化环境下的数据包处理方法及装置,所述方法包括:在客户域配置页池和建立客户域与驱动域共享内存的输入输出环,该页池可以存储授权驱动域访问的空闲页的引用地址;在需要从驱动域获取数据包时,从页池获取页的引用地址;并将页的引用地址封装在请求消息中并放置在输入输出环内,请求消息可以指示驱动域将数据包拷贝到页的引用地址;从输入输出环取出请求消息的响应消息后,从页的引用地址读取数据包,上述响应消息可以是驱动域将数据包拷贝到页的引用地址后放置在输入输出环。本申请具有提高网络性能的优点。
Description
技术领域
本申请涉及信息与通信领域,尤其涉及一种虚拟化环境下的数据包处理方法及装置。
背景技术
Xen是一个开放源代码虚拟机监视器,Xen是目前主流的管理程序(英文全称:Hypervisor)之一,现有的很多厂家的云数据中心解决方案的虚拟化平台均是基于Xen构建的。Xen的虚拟机网络设备从技术上看有两种类型:第一种类型是全虚网络设备,这种设备的驱动不需要修改操作系统(英文全称:Operating System,英文简称:OS)的网卡驱动代码,完全靠设备模拟器模拟,但是性能较差;第二种类型是半虚拟网络设备,这种设备的驱动模型是一种分离式的设备驱动程序(英文全称:split device driver),它包括分别处于两个域(英文全称: domain)内核中的网络驱动程序,两个domain内核中的网络驱动程序相互配合,完成网络通信,由于第二种类型是专为虚拟化环境特别定制的,性能较全虚网络设备性能要高出很多,正是基于性能方面的考虑,当前商用的Xen虚拟机都采用半虚拟网络设备。在第二种类型下,半虚网络设备包括:运行于驱动域(英文全称:Driver Domain)的后端网络驱动(英文全称:Netback)和运行于客户域(英文全称:Guest Domain)的前端网络驱动(英文全称:Netfront),该Driver Domain可以为运行分离式的驱动后端部分的特权虚拟机,Guest Domain可以为提供给用户使用的虚拟机。Driver Domain与Guest Domain之间首先通过 Xenstore(中文:数据库)机制进行特性协商后,建立前后端共享的输入输出(英文全称:input output,英文简称:IO)环交换请求消息和响应信息,通过事件通道(英文全称:Event Channel)机制进行事件通知,通过授权表(英文全称: Grant table)机制进行网络数据包的跨Domain拷贝,该Grant table可以为Xen 平台的一种用于多个Domain之间内存共享的一套授权控制机制。
在实现现有技术的方案中,发现现有技术存在如下技术问题:
在Guest Domain内核中的netfront必须对每一个数据包都进行页分配、授权、结束授权和释放操作,严重消耗了Guest Domain的计算能力,所以现有的 Guest Domain网络性能低下。
发明内容
本申请提供一种虚拟化环境下的数据包处理方法及装置。可以提高虚拟机的网络性能。
第一方面,本申请实施例提供一种虚拟化环境下的数据包处理方法,该方法可以包括:首先在客户域配置页池和建立客户域与驱动域共享内存的输入输出环,该页池可以存储授权驱动域访问的空闲页的引用地址;然后在需要从驱动域获取数据包时,从页池获取页的引用地址;并将页的引用地址封装在请求消息中并放置在输入输出环内,请求消息可以指示驱动域将数据包拷贝到页的引用地址;从输入输出环取出请求消息的响应消息后,从页的引用地址读取数据包,上述响应消息可以是驱动域将数据包拷贝到页的引用地址后放置在输入输出环。
第一方面提供的虚拟化环境下的数据包处理方法在客户域配置页池,上述页池用于放置已授权驱动域访问的空闲页的引用地址,通过配置页池,就能够减少页请求、页分配以及页授权的操作,这样能够很大的提高客户域的网络性能。因为对于客户域来说,相当于配置了一批永久授权的页给需要接收的数据包使用,同时废除了页的临时授权,这样就避免了反复执行页请求、页分配和页授权的步骤,这样就能够提高客户域的网络性能。
在一种可能的设计中,还可以将获取页的引用地址从页池内删除。
将获取的页的引用地址从页池内删除可以避免页的重复使用。
在另一种可能的设计中,如果数据包的大小小于设定值,则在将数据包拷贝到套接字缓存内,以及将套接字缓存发送至协议栈处理后,清空页的引用地址,并将页的引用地址放回到页池内。
将小包数据包拷贝到套接字缓存内发送至协议栈处理后清空页,将页的引用地址放回页池,能够提高页的使用率,进一步提高客户域的网络性能。
在后一种可能设计中,如数据包的大小大于或等于设定值,则在将数据包的报文头信息以及报文内容链接表拷贝到套接字缓存内,以及将套接字缓存发送至协议栈处理。此时,不将所述页的引用地址放回到所述页池内。
将大包数据包的报文头信息以及报文内容链接表拷贝到套接字缓存内发送至协议栈处理能实现大包数据包的处理,提高客户域的网络性能。
在下一种可能设计中,如页池内没有授权驱动域访问空闲页的引用地址时,申请分配另外的页的引用地址,调用授权表机制授权驱动域访问另外的页的引用地,将另外页的引用地址放置在页池内。
在页池内没有空闲页的情况下提供另外页的授权能够减少数据包处理的等待时间。
第二方面,本申请实施例提供一种虚拟化环境下的数据包处理装置,包括:处理单元,用于在客户域配置页池和建立客户域与驱动域共享内存输入输出环,上述页池用于存储授权驱动域访问的空闲页的引用地址;在需要从驱动域获取数据包时,从页池内获取页的引用地址;以及将页的引用地址封装在请求消息中并放置在输入输出环内,请求消息可以用于指示驱动域将数据包拷贝到该页的引用地址;读取单元,用于从输入输出环内取出请求消息的响应消息,从页的引用地址读取该数据包,该响应消息可以为驱动域将数据包拷贝到页的引用地址后放置在输入输出环的。
第二方面提供的虚拟化环境下的数据包处理装置在客户域配置页池,上述页池用于放置已授权驱动域访问的空闲页的引用地址,通过配置页池,就能够减少页请求、页分配以及页授权的操作,这样能够很大的提高客户域的网络性能。因为对于客户域来说,相当于配置了一批永久授权的页给需要接收的数据包使用,同时废除了页的临时授权,这样就避免了反复执行页请求、页分配和页授权的步骤,这样就能够提高客户域的网络性能。
上述处理单元还可以用于执行上述可能设计的技术方案。
第三方面,本申请实施例提供一种客户域设备,该客户域设备具有实现第一方面方法设计中数据包处理方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。所述模块可以是软件和/或硬件。
第三方面提供的客户域设备具有实现第一方面方法设计中数据包处理方法的功能,所以该客户域设备能够提高客户域的网络性能。
第四方面,本申请实施例提供一种主机,所述主机包括:客户域、驱动域、虚拟机监视器和网卡,所述客户域包括:网络前端驱动程序,所述驱动域包括:网络后端驱动程序:该网络前端驱动程序用于执行上述第一方面提供的方案或上述可能的设计方案。
第四方面提供的主机具有执行第一方面方法以及可能设计的功能,所以该客户域设备能够提高客户域的网络性能。
相对于现有技术,本申请的技术方案配置了页池,这样减少了页请求、页分配、页授权等步骤,减少了客户域处理器的开销,提升了虚拟机的吞吐量,所以能够有效的提高客户域的网络性能。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本申请提供的一种主机的构架示意图;
图1B是本申请提供的一种虚拟化环境下的数据包处理方法的流程示意图;
图2是本申请一实施例提供的虚拟化环境下的数据包处理方法的流程示意图;
图3是本申请另一实施例提供的虚拟化环境下的数据包处理方法的流程示意图;
图4是本申请又一实施例提供的一种客户域设备的结构图。
具体实施方式
参阅图1A,图1A为一种主机架构图,该主机如图1A 所示,包括:驱动域DriverDomain10、客户域Guest Domain11、网卡Nic 12、虚拟机监视器(VMM, Virtual MachineMonitor)、其他硬件设备(例如处理器、存储器等);其中,客户域11具体可以包括:用户应用、前端网络驱动Netfront和协议栈,驱动域10 具体可以包括:网卡驱动、软网桥和后端网络驱动Netback;上述客户域11与驱动域10通过分别设置其内的前端网络驱动和后端网络驱动通信,该前端网络驱动和后端网络驱动之间具有用于放置数据包或消息的客户域与驱动域共享内存的输入输出环,该前端网络驱动和后端网络驱动之间还可以具有事件通道,该事件通道可以用于前端网络驱动和后端网络驱动之间发送事件消息以唤醒前端网络驱动。
参阅图1B,图1B为虚拟化环境下的数据包处理方法,该虚拟机具体可以为Xen虚拟机,Xen虚拟机的操作系统可以为:Linux系统,当然在实际应用中,上述Xen虚拟机的操作系统也可以为OpenBSD或windows操作系统,如图1B 所示,Driver Domain的Netback和GuestDomain的Netfront会通过Xenstore 相互交互,构建出客户域与驱动域共享内存的IO环,该IO环可以用于交互消息,该方法如图1B 所示,包括如下步骤:
步骤S101、Netfront请求分配客户域的page(中文:页);该page用于保存数据包;
上述步骤S101通常称为page请求步骤和page分配步骤。
步骤S102、Netfront调用Grant table机制授权Driver Domain可以访问该 page,将该page的引用地址封装到请求消息(req)内,将该请求消息放置到客户域与驱动域共享内存的IO环上;
上述步骤S102中Netfront调用Grant table机制授权Driver Domain可以访问该page通常可以称为page授权步骤。
步骤S103、Netback从共享内存的IO环上获取请求信息得到该page的引用地址,并记录该请求消息在IO环上的位置;
步骤S104、Netback依据该引用地址将Guest Domain的数据包拷贝到该page 内;
步骤S105、Netback将拷贝完成字段封装到该请求消息的响应消息(rsp)内,将该响应消息放置到该IO环上的该请求信息所占用的位置上;
步骤S106、Netfront从该IO环上取出响应消息(rsp),确定报文数据已经拷贝完毕,结束授权并释放该page。
请参考图2,图2是本申请一实施例提出的一种虚拟化环境下的数据包处理方法,该方法应用于Xen虚拟机中,Xen虚拟机的操作系统可以为:Linux系统,当然在实际应用中,上述Xen虚拟机的操作系统也可以为OpenBSD或windows 操作系统。具体的,该方法应用于Xen的Guest Domain的Netfront和Driver Domain的Netback中,上述Guest Domain或Driver Domain均可以设置在计算机或服务器中,该方法如图2所示,包括如下步骤:
步骤S201、Netffont在客户域内配置page pool(中文:页池);该page pool 用于存储授权Driver Domain访问的空闲page的引用地址;
上述步骤S201中的page pool可以为新增加的配置,其用处为将已授权 DriverDomain访问且空闲的page的引用地址存储,这样在Netfront需要获取 Driver Domain的数据包时,只需要直接从page pool获取page的引用地址即可,去掉了复杂的page请求配置以及page授权Driver Domain访问等一系列的操作。
步骤S202、Netfront建立客户域与驱动域共享内存的IO环,在需要从DriverDomain获取数据包时,Netfront从page pool内获取page的引用地址;
上述步骤S201中Netfront建立客户域与驱动域共享内存的IO环的建立方法可以为现有技术的客户域与驱动域共享内存的IO环的建立方法,本申请实施例并不限制上述建立方法的具体实现方式。
步骤S203、Netfront将该page的引用地址封装在请求消息内,将该请求消息放置在该客户域与驱动域共享内存的IO环上;
上述步骤S203中将page的引用地址封装在请求消息中的封装方法可以采用现有技术的封装方法,本申请的一实施例中对该封装方法并不限制,上述步骤S203中将该请求消息放置在客户域与驱动域共享内存的IO环上的放置方法也可以采用现有技术的放置方法,本申请一实施例中对该放置方法并不限定。
步骤S204、Netback从该客户域与驱动域共享内存的IO环获取该请求消息,解析该请求消息获取page的引用地址;
上述步骤S204中从该客户域与驱动域共享内存的IO环获取该请求消息的获取方式可以采用现有技术的获取方式,本申请一实施例并不限制该获取的具体形式,该解析该请求消息获取page的引用地址的解析方式也可以采用现有技术的解析方式,本申请一实施例并不限制该解析的具体形式。
步骤S205、Netback依据该page的引用地址将该数据包拷贝到该page的引用地址中,拷贝完成后,将拷贝完成字段封装到该请求消息的响应消息内;
上述步骤S205中将依据该page的引用地址将该数据包拷贝到该page中的拷贝方式可以采用现有技术的拷贝方式,上述将拷贝完成字段封装到响应消息内中封装方式可以采用现有技术的封装方式,本申请一实施例并不限制该封装具体形式。
步骤S206、Netback将该响应消息放置在客户域与驱动域共享内存的IO环上;
上述步骤S206的将该响应消息放置在客户域与驱动域共享内存的IO环上的放置方式可以采用现有技术的放置方式。
步骤S207、Netfront从客户域与驱动域共享内存的IO环上获取该响应消息,从该页的引用地址读取该数据包。
上述步骤S207中获取该响应消息的获取方式可以采用现有技术的获取方式,上述从该页的引用地址读取该数据包的读取方式以及作用也可以采用现有技术的方式,本申请并不限制该读取的具体形式。
本申请一实施例提供的技术方案的实现原理为,在Netfront内配置page pool,该page pool放置已授权Driver Domain访问的空闲page的引用地址,通过配置page pool,就能够减少page请求、page分配以及page授权的步骤,这样能够很大的提高Guest Domain的网络性能。因为对于Guest Domain来说,相当于配置了一批永久授权的page给需要接收的数据包使用,同时废除了page 的临时授权,这样就避免了反复执行page请求、page分配以及page授权的步骤,这样减少了Guest Domain的处理器的开销,提升了虚拟机的吞吐量,这样就能够提高Guest Domain的网络性能。
可选的,上述方法在步骤S207之后还可以包括:
如所述数据包的大小小于设定值,在将该数据包拷贝到套接字缓存(英文全称:Socket Buffer,英文简称:SKB)内,将该SKB发送至协议栈处理后,清空该page的引用地址,将该page的引用地址放回到page pool中。
上述协议栈具体可以为TCP/IP(英文全称:Transfer Control Protocol/Internet Protocol,中文:传输控制协议/网际协议)协议栈,其处理方式也属于现有技术的处理方式,这里不再赘述。
上述技术方案仅仅针对小包数据包(即数据包的大小小于设定值),增加此方案,对于Guest Domain的开销更小,所以能够进一步提高Guest Domain的网络性能,对于小包数据包来说,一般情况小包数据包大小在255个字节以下,依据上述技术方案,需要将该小包数据包拷贝到SKB中,由于小包数据包的数据量小,所以拷贝到SKB所需开销较小,另外,清空该页以及将该页放置在页池中,也可以提高页的使用率,所以其能够进一步的提高Guest Domain的网络性能,对于大包数据包来说,一般情况下大包数据包的大小在255个字节以上,如果大包数据包也采用上述数据方案,则需要将大包数据包拷贝到SKB中,由于大包数据包的数据量大,所以拷贝到SKB所需开销较大,这样会消耗Guest Domain的网络性能。
可选的,上述方法在上述技术方案之后还可以包括:
如该数据包的大小大于或等于设定值,则在将该数据包的报文头信息以及报文内容链接表拷贝到套接字缓存内,以及将套接字缓存发送至协议栈处理,不将该页的引用地址放回到页池内。
上述技术方案是针对大包数据方案进行处理,对于大包数据来说,由于大包数据拷贝到SKB内的开销较大,并且对于协议栈来说,其处理大包数据并不关心数据的具体内容,只需要报文头信息以及报文内容链接表即能够实现大包数据的处理,所以本申请技术方案仅将报文头信息以及报文内容链接表拷贝到 SKB中,而无需进行大包数据包的拷贝,从而节省了Guest Domain的开销,提高了Guest Domain的网络性能。
可选的,上述方法在步骤S202与步骤S203之间还可以包括:
将获取的该页的引用地址从所述页池内删除。
此设置是为了避免页池内存储正在使用的页的引用地址,避免一个页的引用地址被同时使用,假设一个页的引用地址被重复使用,则会出现,后面的数据包无法存储在页的引用地址内,因为页的引用地址已经被前面使用的数据包所占用,这样后面的数据包可能出现丢失。
可选的,上述方法在步骤S207之后还可以包括:
如页池内没有授权驱动域访问的空闲页的引用地址时,申请分配另外的页的引用地址,调用授权表机制授权驱动域访问另外的页的引用地址,将另外的页的引用地址放置在页池内。
上述技术方案可以在page pool没有已授权空闲page时,提前申请分配另外的page,这样可以减少数据包处理的等待时间,具体原因为,对于Guest Domain 来说,其不需要持续的进行数据包处理,这样数据包处理就会有间隔时间,在 page pool没有已授权Driver Domain访问的空闲page时,如需要进行数据包处理,就需要临时申请另外的page的引用地址以及对另外的page的引用地址授权,在执行完授权后才能够执行如步骤S202-步骤S207,而上述技术方案在page pool 没有已授权Driver Domain访问的空闲page的引用地址时,重新申请另外的page 的引用地址并添加到page pool内,此重新申请可以在数据包处理的间隔时间中完成时,就能够减少数据包处理的等待时间。
参阅图3,图3为本申请另一实施例提供的一种虚拟化环境下的数据包处理装置30,该装置可以配置在Xen虚拟机中,具体的可以配置在Xen虚拟机的 Guest Domain内,上述Xen虚拟机的操作系统可以为:Linux系统,当然在实际应用中,上述Xen虚拟机的操作系统也可以为OpenBSD或windows操作系统。该装置如图3所示,包括:
处理单元301,用于在客户域内配置页池,该页池用于存储授权驱动域访问的空闲页的引用地址;建立客户域与驱动域共享内存的输入输出环,在需要从驱动域获取数据包时,从页池内获取空闲页的引用地址;以及将该页的引用地址封装在请求消息内,将该请求消息放置在客户域与驱动域共享内存的输入输出环内,该请求消息用于指示该驱动域将该数据包拷贝到该页;
读取单元302,还用于从该客户域与驱动域共享内存的输入输出环内取出该驱动域在将该数据包拷贝到该页后放置的该请求消息的响应消息;从该页的引用地址读取该数据包。
本申请另一实施例提供的技术方案的实现原理为,处理单元配置在客户域内配置页池,该页池放置已授权驱动域访问的空闲页的引用地址,通过配置页池,就能够减少页请求分配以及页授权的操作,这样能够很大的提高客户域的网络性能。因为对于客户域来说,相当于配置了一批永久授权的页给需要接收的数据包使用,同时废除了页的临时授权,这样就避免了反复分配页、页引用地址以及页的授权,这样就能够提高客户域的网络性能。
可选的,上述处理单元301,还用于将获取的该页的引用地址从页池内删除。
此方案是为了避免页池内存储正在使用的页,避免一个页被同时使用,假设一个页被重复使用,则会出现,后面的数据包无法存储在页内,因为页已经备前面使用的数据包所占用,这样后面的数据包可能出现丢失。
可选的,上述处理单元301,还用于当数据包的大小小于设定值时,将数据包拷贝到套接字缓存内;
收发单元303,用于将该套接字缓存发送至协议栈处理;
处理单元301,还用于在收发单元302将套接字缓存发送值协议栈处理后,清空页的引用地址,并将该页的引用地址放回到页池内。
上述小包数据包以及协议栈的定义可以参见本申请一实施例的描述,这里不再赘述。上述方案的技术效果也可以参见本申请一实施例的描述,这里不再赘述。
可选的,处理单元301,还用于当数据包的大小大于或等于设定值时,则在将数据包的报文头信息以及报文内容链接表拷贝到套接字缓存内;
收发单元303,用于将该套接字缓存发送至协议栈处理。
上述大包数据包以及协议栈的定义可以参见本申请一实施例的描述,这里不再赘述。上述方案的技术效果也可以参见本申请一实施例的描述,这里不再赘述。
可选的,处理单元301,还用于如页池内没有授权驱动域访问的空闲页的引用地址时,申请分配另外的页的引用地址,调用授权表机制授权驱动域访问另外的页的引用地址,将另外的页的引用地址放置在页池内。
上述方案的技术效果可以参见本申请一实施例的描述,这里不在赘述。
参阅图1A,图1A为本申请下一实施例提供的一种主机,该主机包括:驱动域10、客户域11、虚拟机监视器、网卡12;客户域10和驱动域11运行在虚拟机监视器之上,其中,客户域11具体可以包括:用户应用、前端网络驱动程序和协议栈,驱动域10具体可以包括:网卡驱动、软件网桥和后端网络驱动程序;
该网络前端驱动程序,用于在客户域配置页池,该页池用于存储授权驱动域访问的空闲页的引用地址;建立该客户域与该驱动域共享内存的输入输出环;在需要从驱动域获取数据包时,从该页池获取页的引用地址;将该页的引用地址封装在请求消息内,将该请求消息放置在该输入输出环内,
该网络后端驱动程序,用于从该输入输出环读取该请求消息,获取请求消息中的页的引用地址,并将来自网卡的数据包拷贝到该页的引用地址;将该请求消息的响应消息放置到该输入输出环内;
该网络前端驱动程序,还用于从该输入输出环取出该请求消息的响应消息,从该页的引用地址读取该数据包。
本申请下一实施例提供的技术方案的实现原理为,在Netfront内配置page pool,该page pool放置已授权Driver Domain访问的空闲page的引用地址,通过配置page pool,就能够减少page请求、page分配以及page授权的步骤,这样能够很大的提高Guest Domain的网络性能,进而提高主机的网络性能。因为对于Guest Domain来说,相当于配置了一批永久授权的page给需要接收的数据包使用,同时废除了page的临时授权,这样就避免了反复执行page请求、page 分配以及page授权的步骤,这样减少了主机的处理器的开销,提升了虚拟机的吞吐量,这样就能够提高主机的网络性能。
可选的,上述网络前端驱动程序还可以用于执行如图2所示实施例中的方法,上述下一实施例技术术语的定义、细化方案以及技术效果均可以参见如图2 所示实施例的描述,这里不再赘述。
参阅图4,图4为本申请又一实施例提供的一种客户域设备40,该客户域设备40如图4所示,包括:该设备40包括处理器401、存储器402、收发器403 和总线404。收发器403用于与外部设备之间收发数据。设备40中的处理器401 的数量可以是一个或多个。本申请的一些实施例中,处理器401、存储器402和收发器403可通过总线或其他方式连接。设备40可以用于执行图2所示的方法。关于本实施例涉及的术语的含义以及举例,可以参考图2对应的实施例。此处不再赘述。
其中,存储器402中存储程序代码。处理器401用于调用存储器402中存储的程序代码,用于执行以下操作:
处理器401,用于在客户域配置页池,该页池用于存储授权驱动域访问的空闲页的引用地址;建立客户域与驱动域共享内存的输入输出环,在需要从驱动域获取数据包时,从页池内获取页的引用地址;以及将该页的引用地址封装在请求消息内,将该请求消息放置在客户域与驱动域共享内存的输入输出环内,该请求消息用于指示该驱动域将该数据包拷贝到该页的引用地址;
处理器401,还用于从该客户域与驱动域共享内存的输入输出环内取出该驱动域在将该数据包拷贝到该页后放置的该请求消息的响应消息;从该页的引用地址读取该数据包。
上述客户域设备40的技术效果可以参见本申请如图2所示实施例的描述,这里不再赘述。
可选的,处理器401以及收发器403执行图2的方法。
需要说明的是,在通讯系统中,示例性地,就虚拟机而言,客户域设备40 可以是服务器或者计算机等设备,相应的,驱动域设备也可以是服务器或者计算机等设备。
需要说明的是,这里的处理器401可以是一个处理元件,也可以是多个处理元件的统称。例如,该处理元件可以是中央处理器(Central Processing Unit, CPU),也可以是特定集成电路(Application Specific Integrated Circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digital singnalprocessor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)。
存储器403可以是一个存储装置,也可以是多个存储元件的统称,且用于存储可执行程序代码或应用程序运行装置运行所需要参数、数据等。且存储器 403可以包括随机存储器(RAM),也可以包括非易失性存储器(non-volatile memory),例如磁盘存储器,闪存(Flash)等。
总线404可以是工业标准体系结构(Industry Standard Architecture,ISA) 总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
该客户域设备还可以包括输入输出装置,连接于总线404,以通过总线与处理器401等其它部分连接。该输入输出装置可以为操作人员提供一输入界面,以便操作人员通过该输入界面选择布控项,还可以是其它接口,可通过该接口外接其它设备。
需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
以上对本申请实施例所提供的内容下载方法及相关设备、系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (12)
1.一种虚拟化环境下的数据包处理方法,其特征在于,所述方法包括:
在数据包处理的间隔时间,若页池中不存在授权给驱动域的空闲页的引用地址,客户域申请新的空闲页的引用地址,授权所述驱动域访问所述新的空闲页,配置所述页池,使得所述页池包括所述新的空闲页的引用地址;
所述客户域建立所述客户域与所述驱动域共享内存的输入输出环;
在需要从所述驱动域获取第一数据包时,所述客户域从所述页池获取所述新的空闲页的引用地址;
所述客户域将所述新的空闲页的引用地址封装在请求消息内,将所述请求消息放置在所述输入输出环内,所述请求消息用于指示所述驱动域将所述第一数据包拷贝到所述新的空闲页的引用地址;
所述客户域从所述输入输出环取出所述驱动域在将所述第一数据包拷贝到所述新的空闲页的引用地址后放置的所述请求消息的响应消息,从所述新的空闲页的引用地址读取所述第一数据包。
2.根据权利要求1所述的方法,其特征在于,从所述页池获取所述新的空闲页的引用地址之后,还包括:
将获取的所述新的空闲页的引用地址从所述页池内删除。
3.根据权利要求1或2所述的方法,其特征在于,从所述新的空闲页的引用地址读取所述第一数据包之后,所述方法还包括:
如所述第一数据包的大小小于设定值,则在将所述第一数据包拷贝到套接字缓存内,以及将所述套接字缓存发送至协议栈处理后,清空所述新的空闲页的引用地址,并将所述新的空闲页的引用地址放回到所述页池内。
4.根据权利要求3所述的方法,其特征在于,从所述新的空闲页的引用地址读取所述第一数据包之后,所述方法还包括:
如所述第一数据包的大小大于或等于设定值,则在将所述第一数据包的报文头信息以及报文内容链接表拷贝到套接字缓存内,以及将所述套接字缓存发送至协议栈处理。
5.一种虚拟化环境下的数据包处理装置,其特征在于,所述装置包括:
处理单元,用于在数据包处理的间隔时间,若页池中不存在授权给驱动域的空闲页的引用地址,客户域申请新的空闲页的引用地址,授权所述驱动域访问所述新的空闲页,配置所述页池,所述页池包括所述新的空闲页的引用地址;建立所述客户域与所述驱动域共享内存输入输出环,在需要从所述驱动域获取第一数据包时,从所述页池内获取所述新的空闲页的引用地址;以及将所述新的空闲页的引用地址封装在请求消息内,将所述请求消息放置在输入输出环内,所述请求消息用于指示所述驱动域将所述第一数据包拷贝到所述新的空闲页的引用地址;
读取单元,还用于从所述输入输出环内取出所述驱动域在将所述第一数据包拷贝到所述新的空闲页的引用地址后放置的所述请求消息的响应消息,从所述新的空闲页的引用地址读取所述第一数据包。
6.根据权利要求5所述的装置,其特征在于,所述处理单元,还用于将获取的所述新的空闲页的引用地址从所述页池内删除。
7.根据权利要求5或6所述的装置,其特征在于,
所述处理单元,还用于当所述第一数据包的大小小于设定值时,将所述第一数据包拷贝到套接字缓存内;
收发单元,用于将所述套接字缓存发送至协议栈处理;
所述处理单元,还用于在所述收发单元将所述套接字缓存发送值协议栈处理后,清空所述新的空闲页的引用地址,并将所述新的空闲页的引用地址放回到所述页池内。
8.根据权利要求7所述的装置,其特征在于,
所述处理单元,还用于所述第一数据包的大小大于或等于设定值,则在将所述第一数据包的报文头信息以及报文内容链接表拷贝到套接字缓存内;
收发单元,用于将所述套接字缓存发送至协议栈处理。
9.一种客户域设备,其特征在于,所述设备包括:一个或多个处理器、存储器、总线、收发器以及一个或多个程序,所述一个或多个处理器、所述存储器和所述收发器通过所述总线相连;
其中,所述一个或多个程序被存储在所述存储器中,所述一个或多个程序包括指令,所述指令当被所述客户域设备执行时使所述客户域设备执行如权利要求1-4任意一项所述的方法。
10.一种主机,所述主机包括:客户域、驱动域、虚拟机监视器和网卡,所述客户域和所述驱动域运行在所述虚拟机监视器之上,所述客户域包括:网络前端驱动程序,所述驱动域包括:网络后端驱动程序:其特征在于,
所述网络前端驱动程序,用于在数据包处理的间隔时间,若页池中不存在授权给所述驱动域的空闲页的引用地址,客户域申请新的空闲页的引用地址,授权所述驱动域访问所述新的空闲页,配置所述页池,所述页池包括所述新的空闲页的引用地址;建立所述客户域与所述驱动域共享内存的输入输出环;在需要从所述驱动域获取第一数据包时,从所述页池获取新的空闲页的引用地址;将所述新的空闲页的引用地址封装在请求消息内,将所述请求消息放置在所述输入输出环内;
所述网络后端驱动程序,用于从所述输入输出环读取所述请求消息,获取请求消息中的所述新的空闲页的引用地址,并将来自所述网卡的所述第一数据包拷贝到所述新的空闲页的引用地址;将所述请求消息的响应消息放置到所述输入输出环内;
所述网络前端驱动程序,还用于从所述输入输出环取出所述请求消息的响应消息,从所述新的空闲页的引用地址读取所述第一数据包。
11.根据权利要求10所述的主机,其特征在于,
所述网络前端驱动程序,还用于将所述获取新的空闲页的引用地址从所述页池内删除。
12.根据权利要求10或11所述的主机,其特征在于,
所述网络前端驱动程序,用于当所述第一数据包的大小小于设定值时,则在将所述第一数据包拷贝到套接字缓存内,以及将所述套接字缓存发送至协议栈处理后,清空所述新的空闲页的引用地址,并将所述新的空闲页的引用地址放回到所述页池内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610187968.9A CN105893112B (zh) | 2016-03-29 | 2016-03-29 | 一种虚拟化环境下的数据包处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610187968.9A CN105893112B (zh) | 2016-03-29 | 2016-03-29 | 一种虚拟化环境下的数据包处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105893112A CN105893112A (zh) | 2016-08-24 |
CN105893112B true CN105893112B (zh) | 2019-12-06 |
Family
ID=57014271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610187968.9A Active CN105893112B (zh) | 2016-03-29 | 2016-03-29 | 一种虚拟化环境下的数据包处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105893112B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110399229A (zh) * | 2018-04-25 | 2019-11-01 | 清华大学 | 进程间的通信方法、装置、系统、介质及终端 |
CN115309511B (zh) * | 2022-09-28 | 2023-04-04 | 亿咖通(湖北)技术有限公司 | 基于Xen的数据交互方法、装置、存储介质以及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426557A (zh) * | 2011-10-27 | 2012-04-25 | 中国科学院计算技术研究所 | 虚拟化环境中 pci 设备的分离访问方法及其系统 |
-
2016
- 2016-03-29 CN CN201610187968.9A patent/CN105893112B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426557A (zh) * | 2011-10-27 | 2012-04-25 | 中国科学院计算技术研究所 | 虚拟化环境中 pci 设备的分离访问方法及其系统 |
Non-Patent Citations (3)
Title |
---|
XEN虚拟IO的调度优化;王宇新等;《微电子学与计算机》;20100831;全文 * |
Xen虚拟机网络I/O性能优化研究;李家祥;《中国优秀硕士学位论文全文数据库》;20140615;第1-44页 * |
基于应用特征的虚拟机 VCPU 调度优化技术研究;杨洋;《中国优秀硕士学位论文全文数据库》;20140315;第1-49页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105893112A (zh) | 2016-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10778521B2 (en) | Reconfiguring a server including a reconfigurable adapter device | |
US10216628B2 (en) | Efficient and secure direct storage device sharing in virtualized environments | |
US9842075B1 (en) | Presenting multiple endpoints from an enhanced PCI express endpoint device | |
KR100737303B1 (ko) | 논리적으로 분할된 컴퓨터 시스템에서 인터럽트를가상화하는 장치 및 방법 | |
US9996484B1 (en) | Hardware acceleration for software emulation of PCI express compliant devices | |
US10908895B2 (en) | State-preserving upgrade of an intelligent server adapter | |
US8495262B2 (en) | Using a table to determine if user buffer is marked copy-on-write | |
CN107967225B (zh) | 数据传输方法、装置、计算机可读存储介质和终端设备 | |
US10915486B1 (en) | Ingress data placement | |
CN111221758A (zh) | 处理远程直接内存访问请求的方法和计算机设备 | |
US9390036B2 (en) | Processing data packets from a receive queue in a remote direct memory access device | |
US10452570B1 (en) | Presenting physical devices to virtual computers through bus controllers emulated on PCI express endpoints | |
WO2023179388A1 (zh) | 一种虚拟机实例的热迁移方法 | |
US20210208917A1 (en) | Network performance optimization in a hypervisor-based system | |
WO2022143714A1 (zh) | 服务器系统、虚拟机创建方法及装置 | |
CN114244560A (zh) | 流量处理方法及装置 | |
CN111209080A (zh) | 一种图形处理器透传的方法 | |
CN110865868A (zh) | 一种低延迟控制方法、装置及其设备 | |
CN113010470A (zh) | 边缘节点远程控制系统、方法、设备及存储介质 | |
CN105893112B (zh) | 一种虚拟化环境下的数据包处理方法及装置 | |
CN117135189A (zh) | 服务器的访问方法及装置、存储介质、电子设备 | |
Bie et al. | Vhost-User | |
WO2024169436A1 (zh) | 一种数据处理方法、装置、存储介质及电子装置 | |
US12007921B2 (en) | Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA) | |
CN117520215A (zh) | 一种缺页处理方法和相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |