CN106790162B - 虚拟网络优化方法与系统 - Google Patents
虚拟网络优化方法与系统 Download PDFInfo
- Publication number
- CN106790162B CN106790162B CN201611246993.6A CN201611246993A CN106790162B CN 106790162 B CN106790162 B CN 106790162B CN 201611246993 A CN201611246993 A CN 201611246993A CN 106790162 B CN106790162 B CN 106790162B
- Authority
- CN
- China
- Prior art keywords
- network packet
- combined
- packet
- combined network
- page
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种虚拟网络优化方法,包括组包步骤、拆包步骤和共享授权页面步骤,其中:组包步骤,将拥有相同源和目的链路地址的包组成组合网络包,生成组合网络包;共享授权页面步骤,接收该组合网络包,并将该组合网络包拷贝至虚拟机的前端驱动;拆包步骤,接收来自该前端驱动的该组合网络包,并根据I/O应答确定该组合网络包中的小网络包,对该组合网络包进行拆分,并将拆分后得到的小网络包交由上层网络协议栈进行处理。本发明通过接收端组包与共享授权页面的方式,优化网络虚拟化的整体性能。
Description
技术领域
本发明涉及网络虚拟化领域,特别是涉及一种虚拟网络优化方法与系统。
背景技术
虚拟化是云计算的基础技术,网络虚拟化则是虚拟化技术的重要支撑,其对云计算平台的整体效率有着至关重要的影响。网络虚拟化的性能优化十分具有挑战性,高速的网络设备要在很短的时间间隔内收发大量的网络包,而每个网络包的处理不可避免的伴随着额外的虚拟化开销。虚拟网络的发送过程可以利用下移、零拷贝以及Nagle算法优化等方法来优化,但是由于虚拟网络软件栈的特殊性,其接收过程可用的优化手段较少,导致接收性能受虚拟化影响更大。网络接收,尤其是网络小网络包(小包)的接收,是诸如LVS(LinuxVirtual Server)、Memcached等的网络服务的主要性能瓶颈。虚拟网络中的网络包处理将占用一定的CPU资源,且随着新一代的10GbE、40GbE高速以太网的应用与普及,大量的网络包处理将导致CPU饱和、网络性能的扩展性降低。
网络虚拟化接收过程的开销一般分为两类:每字节(Per-Byte)开销和每包(Per-Packet)开销。每字节开销主要包括数据拷贝、校验计算等的开销,传统上是网络接收过程的主要开销;随着现代CPU体系结构的发展,特别是激进的预取策略以及缓存直接访问技术的发展,每字节开销得到了大幅优化。每包开销,例如协议处理和缓冲区管理,成为网络接收的主要开销;对于网络小网络包而言,由于需拷贝、校验的数据较少,包处理开销占比更是凸显。与物理环境相比,软件虚拟网络在处理路径上多出了软件网桥与防火墙、后端驱动、前端驱动等环节,引入了额外的协议栈处理、缓冲区拷贝、上下文切换等开销,故而降低每包处理开销对优化虚拟网络性能至关重要。
虚拟机设备队列(Virtual Machine Device Queue,VMDq)技术由硬件网卡根据MAC地址或VLAN来进行包的分类与排序,并发送到指定的虚拟机,虚拟机监视器(VirtualMachine Monitor,VMM)只需进行相对简单的数据拷贝即可实现虚拟交换,大幅降低了CPU的资源占用。单根I/O虚拟化(Single-Root I/O Virtualization,SR-IOV)技术由硬件网卡提供虚拟功能(Virtual Function,VF)并直通至虚拟机,不需软件模拟网卡、不占CPU资源,由网卡实现高效的共享,可获得媲美裸机的I/O性能。此类技术虽然能够提供最佳的虚拟化性能,但其要求特定的硬件支持,且由于依赖硬件平台,虚拟机的迁移与管理相对复杂,在成本、灵活性、应用面等方面不及软件虚拟化的方式。事实上,在主流的云计算提供商的服务中,标准的虚拟机配置仍然大都采用软件的I/O虚拟化。
发明内容
为了解决上述技术问题,本发明目在于,在现有的网络虚拟化的架构下,优化虚拟网络接收过程中的每网络包开销。通过将多个小网络包组合成大数据包的方式,来减少虚拟机监视器和网络栈处理网络包的次数。在虚拟机前端和后端驱动程序之间通过共享授权内存的方式通信,使尽可能多的网络包共用同一授权页面,并结合空闲页面及引用缓冲的方法,减少宝贵的内存页面映射和授权开销,从而降低虚拟网络接收过程中的每网络包开销。通过接收端组包与共享授权页面的方式,优化网络虚拟化的整体性能。
具体地说,本发明公开了一种虚拟网络优化方法,其中该方法,包括组包步骤、拆包步骤和共享授权页面步骤,其中:
组包步骤,将拥有相同源和目的链路地址的包组成组合网络包,生成组合网络包;
共享授权页面步骤,接收该组合网络包,并将多个该组合网络包通过单一内存页面拷贝至虚拟机的前端驱动;
拆包步骤,接收来自该前端驱动的该组合网络包,并根据I/O应答确定该组合网络包中的小网络包,对该组合网络包进行拆分,并将拆分后得到的小网络包交由上层网络协议栈进行处理。
该虚拟网络优化方法,其中该组包步骤包括:
步骤S201,将接收到的网络包放入每个CPU的接收队列,并从该接收队列读取该网络包;
步骤S202,根据该网络包的目的地址,判断该目的地址是否为虚拟机,若不是,则直接执行步骤S206,若是,则继续执行步骤S203开始组包;
步骤S203,从该网络包的套接字缓冲中获取其源链路层地址和目的链路层地址,并对该源链路层地址和该目的链路层地址进行哈希运算,生成哈希结果;
步骤S204,根据该哈希结果将该网络包插入至相应的包队列,生成组合网络包;
步骤S205,判断组包结束条件,若未满足条件,则继续执行步骤S202进行组包处理,若已满足条件,则执行步骤S206;
步骤S206,将该组合网络包交由软件网桥与链路层防火墙进行处理;
步骤S207,接收经由步骤S206软件网桥与链路层防火墙处理后的该组合网络包,后端驱动对该组合网络包设定特殊标志。
该虚拟网络优化方法,其中该拆包步骤包括:
步骤S208,前端驱动接收网络包,并读取该该网络包的I/O应答;
步骤S209,根据该I/O应答判断该网络包是否为组合网络包,若不是组合网络包,则执行步骤S211,若是组合网络包,则执行步骤S210;
步骤S210,根据该I/O应答将该组合网络包中的小网络包分别拷贝至独立的套接字缓冲中;
步骤S211,由客户虚拟机上层网络协议栈进行后续处理。
该虚拟网络优化方法,其中该共享授权页面步骤,包括:
步骤S310,后端驱动接收到组合网络包时,该后端驱动遍历该组合网络包即以确定该组合网络包的大小;
步骤S320,前端驱动检查页面重用缓存是否存在可用的授权页面及引用,若存在可用的页面,则执行步骤S321,直接选取可用的页面并将引用授权至后端驱动;若不存在可用页面,则执行步骤S322,重分配新的页面及引用授权至后端驱动;
步骤S330,后端驱动获得该页面的授权,并通过该引用授权将该组合网络包拷贝至该页面;
步骤S340,后端驱动根据该组合网络包的大小,判断授权页面剩余空间是否足够拷贝下一个组合网络包,若空间足够,则执行步骤S330继续拷贝数据,若空间足够,则执行步骤S350;
步骤S350,通知前端驱动该组合网络包的到达。
该虚拟网络优化方法,其中该组包结束条件具体为,判断该接收队列中是否有可组网络包,若没有可组网络包,则为已满足条件;若有可组网络包,则将该组合网络包大小与预先设定好的组合网络包边界阈值相比较,若该组合网络包大于等于该阈值,则为已满足条件;若该组合网络包小于该阈值,则为未满足条件。
本发明还提出了一种虚拟网络优化系统,其中该系统,包括组包模块、拆包模块和共享授权页面模块,其中:
组包模块,用于将拥有相同源和目的链路地址的包组成组合网络包,生成组合网络包;
共享授权页面模块,用于接收该组合网络包,并将该组合网络包拷贝至虚拟机的前端驱动;
拆包模块,用于接收来自该前端驱动的该组合网络包,并根据I/O应答确定该组合网络包中的小网络包,对该组合网络包进行拆分,并将拆分后得到的小网络包交由上层网络协议栈进行处理。
该虚拟网络优化方法,其中该组包模块包括:
第一读取模块,用于将接收到的网络包放入每个CPU的接收队列,并从该接收队列读取该网络包;
判断模块,用于根据结束条件,决定是否继续组包处理;
第一处理模块,用于根据该网络包的目的地址,判断该目的地址是否为虚拟机,以决定是否开始组包,并从该网络包的套接字缓冲中获取其源链路层地址和目的链路层地址,对该源链路层地址和该目的链路层地址进行哈希运算,生成哈希结果,根据该哈希结果将该网络包插入至相应的包队列,生成组合网络包,并调用该判断模块,将生成的该组合网络包发送给第一发送模块;
第一发送模块,用于将该组合网络包发送给软件网桥与链路层防火墙进行处理,并将处理后的该组合网络包标记特殊标志。
该虚拟网络优化方法,其中该拆包模块包括:
第二读取模块,用于接收网络包,并读取该该网络包的I/O应答;
第二处理模块,用于根据该I/O应答判断该网络包是否为组合网络包,以决定是否开始拆包,并根据该I/O应答将该组合网络包中的小网络包分别拷贝至独立的套接字缓冲中;
第二发送模块,用于将套接字缓冲中的该小网络包发送给客户虚拟机上层网络协议栈,进行后续处理。
该虚拟网络优化方法,其中该共享授权页面模块包括:
网络包大小确定模块,用于遍历该组合网络包,以确定该组合网络包的大小;
检查处理模块,用于检查页面重用缓存是否存在可用的授权页面及引用,以引用授权至后端驱动,后端驱动获得该页面的授权,并通过该引用授权将该组合网络包拷贝至该页面;
判断通知模块,用于根据该组合网络包的大小,判断授权页面剩余空间是否足够拷贝下一个组合网络包,以拷贝组合网络包到该页面,并通知前端驱动该组合网络包的到达。
该虚拟网络优化方法,其中该判断模块还用于判断该接收队列中是否有可组网络包,若没有可组网络包,则调用第一发送模块;若有可组网络包,则将该组合网络包大小与预先设定好的组合网络包边界阈值相比较,若该组合网络包大于等于该阈值,则调用第一发送模块;若该组合网络包小于该阈值,则继续组包。
本发明的一种基于通用接收组包与共享授权页面的虚拟网络优化方法,其有益效果在于:
1.本发明是不依赖特定的硬件虚拟化的支持,适用面更广。
2.本发明的组包机制面向链路层,可以组合所有接收到的网络包,无论该网络包使用什么协议,或者是否属于同一个连接。
3.本发明的拆包机制可借用现有的网络包片段(碎片)的处理方式,实现简易。
4.本发明适用于高吞吐的场景,但同时支持在网络负载较低时直接处理单个网络包,从而兼顾延迟。
5.通过修改网桥可以较容易的实现增删虚拟网卡时通知组包步骤,再配合对重用缓存授权页面的重新授权,可以实现对虚拟机在线迁移的透明支持。
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
附图说明
图1是本发明的网络虚拟化优化方法的架构图;
图2是本发明的接收端组包与拆包的流程图;
图3是本发明的共享授权页面拷贝网络包的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种基于通用接收组包与共享授权页面的虚拟网络优化方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
为实现本发明目的而采用的平台包括CPU、内存、网卡等资源,作为虚拟化的基础设施。该平台运行虚拟机监视器,提供虚拟化服务。虚拟机监视器基于网卡实现宿主虚拟网络,为虚拟机提供虚拟的网络及网络设备。虚拟网络设备供虚拟机使用,为虚拟机提供网络访问功能。虚拟设备的模拟由前端驱动与后端驱动协作实现:前端驱动直接与客户虚拟机操作系统通信,为其模拟出真实物理设备的行为和功能;后端驱动为前端驱动与宿主虚拟机监视器提供数据通路,并负责相应的适配工作。授权内存页面是前端驱动与后端驱动的一种通信方式,即由前端驱动分配内存页面,后端驱动经授权后才可访问页面,通信结束后由前端驱动释放页面。
本发明所述的网络数据接收过程,当新的数据到达时,宿主虚拟网络通过网卡驱动从网卡获得数据,然后将该数据交由组包步骤进行组包处理。组包步骤对于接收到的网络包,组包步骤将其与此前接收的网络包进行组包,并将拥有相同源和目的链路地址的包组成组合网络包,然后交由链路层防火墙与软件网桥进行处理。链路层防火墙进行过滤处理,以判断该网络包是否应该被截获或丢弃。软件网桥执行网络协议栈(Protocol Stack)的处理,以决定该网络包应当传递的虚拟机。经处理后的网络包通过后端驱动传输至共享授权页面步骤,共享授权页面步骤负责于单一内存页面尽可能多的拷贝网络包。通过授权页面,网络包被拷贝至虚拟机的前端驱动,并为其设置网络应答或生成网络包到达的通知信息。前端驱动将接收到的网络包交由拆包步骤进行拆包处理,再交由上层的网络协议栈进行进一步处理,经协议栈处理后,数据被最终拷贝至用户缓冲区中。
具体来说,本发明所涉及的网络虚拟化架构如图1所示。物理硬件110包括CPU111、内存112、网卡113等资源,作为虚拟化的基础设施,运行虚拟机监视器120,提供虚拟化服务。虚拟机监视器120基于网卡113实现宿主虚拟网络130,为虚拟机140提供虚拟的网络环境。对于本发明所述的数据接收过程,当新的数据到达时,宿主虚拟网络130通过网卡驱动131从网卡113获得数据,然后交由本发明的组包步骤132进行组包处理。对于接收到的网络包,组包步骤132将其与此前接收的网络包进行组包,将拥有相同源和目的链路地址的包组成组合网络包,然后交由软件桥与链路防火墙133进行处理。软件桥与链路防火墙133执行网络协议栈134的处理,以决定该网络包应当传递的虚拟机;同时,软件桥与链路防火墙133亦执行网络协议栈134的处理,以判断该网络包是否应该被截获或丢弃。经处理后的网络包通过后端驱动135传输至本发明所改进的共享授权页面121,共享授权页面121尽可能多的使网络包共享同一授权页面,于多网络包之间聚合映射与授权开销。通过共享授权页面121,网络包被拷贝至虚拟机140的前端驱动141,并为其设置网络应答或生成网络包到达的通知信息。前端驱动141将接收到的网络包交由本发明的拆包步骤142进行拆包处理,再交由上层网络协议栈144进行处理,一般的,客户虚拟机采用TCP/IP协议栈143。经协议栈处理后,数据被最终拷贝至用户缓冲区中。
所述的网络虚拟化架构中,将网络包路由到对应的虚拟机是虚拟网络开销中最重要的部分。某些网络包的操作,比如与软件网桥相关的功能,可以被满足特定条件的一组网络包批量执行及分摊开销。本发明将拥有相同的源和目的链路层地址的网络包组成单一大包并只进行单次处理,避免了若干包逐个处理的开销,同时不影响链路层防火墙的正常工作。图1中的组包132和拆包142是接收端组合网络数据包的关键步骤。组包132将若干个网络包链接到第一个网络包的套接字缓冲(Socket Buffer,SKB)中的一个特殊队列。组包时,所有接收的网络包都根据其源和目的链路层地址进行哈希(Hash),这些地址可以从网络包的套接字缓冲中获得。这样,源和目的链路层地址相同的网络包即被组合在一起;于链路层进行组包处理也提高了本发明的通用性。拆包142通过特殊标志来标识组合网络数据包,根据I/O应答确定组合网络包(因组合网络包是由多个网络包组合而成,所以也称组合前的该网络包为小网络包)中的小网络包,并进行拆分。
本发明的组包流程于网络接收到软中断开始,此处亦是虚拟化引入的额外执行路径之前。如图2所示,图2左侧为组包步骤操作流程,右侧为拆包步骤操作流程,本发明的组包、拆包的方法具体包含如下步骤:
步骤S201,宿主机网卡驱动将接收到的网络包放入每个CPU的接收队列,组包步骤从该接收队列读取该网络包;
步骤S202,根据该网络包的目的地址,判断该目的地址是否为虚拟机,若不是,则直接执行步骤S206,若是,则继续执行步骤S203开始组包;
步骤S203,从该网络包的套接字缓冲中获取其源链路层地址和目的链路层地址,并对该源链路层地址和该目的链路层地址进行哈希运算,生成哈希结果;
步骤S204,根据该哈希结果将该网络包插入至相应的包队列,生成组合网络包,即“组包”,这样,源和目的链路地址相同的网络包即被组合在一起;
步骤S205,判断组包结束条件,若未满足条件,则继续执行步骤S202进行组包处理,若已满足条件,则执行步骤S206;
步骤S206,将该组合网络包交由软件网桥与链路层防火墙进行处理;
步骤S207,经由软件网桥与链路层防火墙处理后,后端驱动对该组合网络包设定特殊标志,用以被前端驱动识别;
步骤S208,前端驱动从后端驱动读取I/O应答;
步骤S209,根据该I/O应答判断网络包是否为组合网络包。若不是组合网络包,则直接执行步骤S211,若是,则执行步骤S210;
步骤S210,根据该I/O应答将该组合网络包中的小网络包分别拷贝至独立的套接字缓冲中,从而实现拆包;
步骤S211,由客户虚拟机上层网络协议栈进行后续处理。
其中该步骤S205的组包结束条件具体为,该组包结束条件具体为,判断该接收队列中是否有可组网络包,若没有可组网络包,则为已满足条件;若有可组网络包,则将该组合网络包大小与预先设定好的组合网络包边界阈值相比较,若该组合网络包大于等于该阈值,则为已满足条件;若该组合网络包小于该阈值,则为未满足条件。以预先设定好的组合网络包边界(大小)阈值与接收队列状态作为结束标志。组包边界阈值越大,额外执行的网络处理开销越小。然而,实验表明,当组包边界超过一定阈值时,性能收益有限。实际实施时,组包边界阈值应取足够大以获得最优的网络性能。当网络流量较大时,组包边界阈值很容易达到;当网络流量较小时,组包机制很可能无法很快达到组包边界阈值。如果接收队列中没有更多的可组网络包,则组包机制不做任何等待,直接将已组合的网络包提交至网络协议栈进行后续处理。
一般的网络虚拟化的实现中,无论接收到的网络包大小如何,虚拟机监视器均使用单独的授权页面将数据拷贝至虚拟机。默认的页面大小为4096字节,而默认的最大网络包最大传输单元大小为1500字节,故而授权页面中存在较大的空间浪费。对于每一项网络包,前端驱动均为之分配套接字缓冲与空闲页面,并为该页面申请引用授权。当后端驱动从软件网桥接收到该网络包时,通过该引用授权将网络包拷贝至相应的授权页面。之后通知前端驱动接收网络包,前端驱动读取数据并提交至虚拟机协议栈后释放该引用授权。授权页面的使用减少了宝贵的页面分配、释放、授权、撤销授权、映射以及解除映射的开销。本发明的共享授权页面步骤,旨在聚合多个组合网络包的拷贝,提高授权页面的使用率、降低授权页面的分配授权次数,进而提高虚拟网络的接收性能。
所述共享授权页面步骤,由前端驱动维护授权页面与引用授权的重用缓存以提高复用率,对于未使用的授权页面,将其加入重用缓存并记录相应的授权。如图3所示,所述基于共享授权页面的所述共享授权页面步骤具体包含如下步骤:
步骤S310,后端驱动接收到组合网络包时,确定该组合网络包大小。由于组包机制将多个网络包链接在一起,因而后端驱动遍历(Traversal)该组合网络包(组包队列)即可获知该组合网络包的大小。
步骤S320,前端驱动检查重用缓存是否存在可用的授权页面及引用,若存在可用的页面,则执行步骤S321直接选取可用的页面并将引用授权至后端驱动;若不存在可用页面,则执行步骤S322重分配新的页面及引用授权至后端驱动。
步骤S330,后端驱动获得该页面的(共享)授权,并通过引用授权将组合网络包拷贝至该页面,不同的组合网络包被拷贝到授权页面的不同偏移处。
步骤S340,后端驱动根据该组合网络包的大小,判断授权页面剩余空间是否足够拷贝下一个组合网络包,若空间足够,则执行步骤S330继续拷贝数据。
步骤S350,若当前授权页面已满或者其剩余空间不足,则通知前端驱动组合网络包的到达。
其中该步骤S330,可由后端驱动保证所有网络包偏移与CPU硬件缓存线对齐以提高拷贝效率,一种简单的实现方式可以是不允许不同组合包的网络包共享同一授权页面。
所述步骤中,页面由虚拟机分配,由虚拟机监视器授权与撤销授权,不再使用时由原虚拟机释放。本发明的方法不允许目的地址不同的网络包共用同一授权页面,故不影响虚拟化的安全隔离。
以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
本发明还提供一种虚拟网络优化系统,包括组包模块、拆包模块和共享授权页面模块,其中:
组包模块,用于将拥有相同源和目的链路地址的包组成组合网络包,生成组合网络包;
共享授权页面模块,用于接收该组合网络包,并将多个该组合网络包通过单一内存页面拷贝至虚拟机的前端驱动;
拆包模块,用于接收来自该前端驱动的该组合网络包,并根据I/O应答确定该组合网络包中的小网络包,对该组合网络包进行拆分,并将拆分后得到的小网络包交由上层网络协议栈进行处理。
该虚拟网络优化方法,其中该组包模块包括:
第一读取模块,用于将接收到的网络包放入每个CPU的接收队列,并从该接收队列读取该网络包;
判断模块,用于根据结束条件,决定是否继续组包处理;
第一处理模块,用于根据该网络包的目的地址,判断该目的地址是否为虚拟机,以决定是否开始组包,并从该网络包的套接字缓冲中获取其源链路层地址和目的链路层地址,对该源链路层地址和该目的链路层地址进行哈希运算,生成哈希结果,根据该哈希结果将该网络包插入至相应的包队列,生成组合网络包,并调用该判断模块,将生成的该组合网络包发送给第一发送模块;
第一发送模块:用于将该组合网络包发送给软件网桥与链路层防火墙进行处理,并将处理后的该组合网络包标记特殊标志。
该虚拟网络优化方法,其中该拆包模块包括:
第二读取模块,用于接收网络包,并读取该该网络包的I/O应答;
第二处理模块,用于根据该I/O应答判断该网络包是否为组合网络包,以决定是否开始拆包,并根据该I/O应答将该组合网络包中的小网络包分别拷贝至独立的套接字缓冲中;
第二发送模块,用于将套接字缓冲中的该小网络包发送给客户虚拟机上层网络协议栈,进行后续处理。
该虚拟网络优化方法,其中该共享授权页面模块包括:
网络包大小确定模块,用于遍历该组合网络包,以确定该组合网络包的大小;检查处理模块,用于检查页面重用缓存是否存在可用的授权页面及引用,以引用授权至后端驱动,后端驱动获得该页面的授权,并通过该引用授权将该组合网络包拷贝至该页面;
判断通知模块,用于根据该组合网络包的大小,判断授权页面剩余空间是否足够拷贝下一个组合网络包,以拷贝组合网络包到该页面,并通知前端驱动该组合网络包的到达。
该虚拟网络优化方法,其中该判断模块包括:
判断模块,用于判断该接收队列中是否有可组网络包,若没有可组网络包,则调用第一发送模块;若有可组网络包,则将该组合网络包大小与预先设定好的组合网络包边界阈值相比较,若该组合网络包大于等于该阈值,则调用第一发送模块;若该组合网络包小于该阈值,则继续组包。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
虽然本发明以上述实施例公开,但具体实施例仅用以解释本发明,并不用于限定本发明,任何本技术领域技术人员,在不脱离本发明的构思和范围内,可作一些的变更和完善,故本发明的权利保护范围以权利要求书为准。
Claims (8)
1.一种虚拟网络优化方法,其特征在于,该方法,包括组包步骤、拆包步骤和共享授权页面步骤,其中:
组包步骤,将拥有相同源和目的链路地址的包组成组合网络包,生成组合网络包;
共享授权页面步骤,接收该组合网络包,并通过共用内存页面的方式将该组合网络包拷贝至虚拟机的前端驱动;
拆包步骤,接收来自该前端驱动的该组合网络包,并根据I/O应答确定该组合网络包中的小网络包,对该组合网络包进行拆分,并将拆分后得到的小网络包交由上层网络协议栈进行处理;
其中,该组包步骤包括:
步骤S201,将接收到的网络包放入每个CPU的接收队列,并从该接收队列读取该网络包;
步骤S202,根据该网络包的目的地址,判断该目的地址是否为虚拟机,若不是,则直接执行步骤S206,若是,则继续执行步骤S203开始组包;
步骤S203,从该网络包的套接字缓冲中获取其源链路层地址和目的链路层地址,并对该源链路层地址和该目的链路层地址进行哈希运算,生成哈希结果;
步骤S204,根据该哈希结果将该网络包插入至相应的包队列,生成组合网络包;
步骤S205,判断组包结束条件,若未满足条件,则继续执行步骤S202进行组包处理,若已满足条件,则执行步骤S206;
步骤S206,将该组合网络包交由软件网桥与链路层防火墙进行处理;
步骤S207,接收经由步骤S206软件网桥与链路层防火墙处理后的该组合网络包,后端驱动对该组合网络包设定特殊标志。
2.如权利要求1所述的虚拟网络优化方法,其特征在于,该拆包步骤包括:
步骤S208,前端驱动接收网络包,并读取该网络包的I/O应答;
步骤S209,根据该I/O应答判断该网络包是否为组合网络包,若不是组合网络包,则执行步骤S211,若是组合网络包,则执行步骤S210;
步骤S210,根据该I/O应答将该组合网络包中的小网络包分别拷贝至独立的套接字缓冲中;
步骤S211,由客户虚拟机上层网络协议栈进行后续处理。
3.如权利要求1所述的虚拟网络优化方法,其特征在于,该共享授权页面步骤,包括:
步骤S310,后端驱动接收到组合网络包时,该后端驱动遍历该组合网络包即以确定该组合网络包的大小;
步骤S320,前端驱动检查页面重用缓存是否存在可用的授权页面及引用,若存在可用的页面,则执行步骤S321,直接选取可用的页面并将引用授权至后端驱动;若不存在可用页面,则执行步骤S322,重分配新的页面及引用授权至后端驱动;
步骤S330,后端驱动获得该页面的授权,并通过该引用授权将该组合网络包拷贝至该页面;
步骤S340,后端驱动根据该组合网络包的大小,判断授权页面剩余空间是否足够拷贝下一个组合网络包,若空间足够,则执行步骤S330继续拷贝数据,若空间足够,则执行步骤S350;
步骤S350,通知前端驱动该组合网络包的到达。
4.如权利要求1所述的虚拟网络优化方法,其特征在于,该组包结束条件具体为,判断该接收队列中是否有可组网络包,若没有可组网络包,则为已满足条件;若有可组网络包,则将该组合网络包大小与预先设定好的组合网络包边界阈值相比较,若该组合网络包大于等于该阈值,则为已满足条件;若该组合网络包小于该阈值,则为未满足条件。
5.一种虚拟网络优化系统,其特征在于,该系统,包括组包模块、拆包模块和共享授权页面模块,其中:
组包模块,用于将拥有相同源和目的链路地址的包组成组合网络包,生成组合网络包;
共享授权页面模块,用于接收该组合网络包,并通过共用内存页面的方式将该组合网络包拷贝至虚拟机的前端驱动;
拆包模块,用于接收来自该前端驱动的该组合网络包,并根据I/O应答确定该组合网络包中的小网络包,对该组合网络包进行拆分,并将拆分后得到的小网络包交由上层网络协议栈进行处理;
其中,该组包模块包括:
第一读取模块,用于将接收到的网络包放入每个CPU的接收队列,并从该接收队列读取该网络包;
判断模块,用于根据结束条件,决定是否继续组包处理;
第一处理模块,用于根据该网络包的目的地址,判断该目的地址是否为虚拟机,以决定是否开始组包,并从该网络包的套接字缓冲中获取其源链路层地址和目的链路层地址,对该源链路层地址和该目的链路层地址进行哈希运算,生成哈希结果,根据该哈希结果将该网络包插入至相应的包队列,生成组合网络包,并调用该判断模块,将生成的该组合网络包发送给第一发送模块;
第一发送模块,用于将该组合网络包发送给软件网桥与链路层防火墙进行处理,并将处理后的该组合网络包标记特殊标志。
6.如权利要求5所述的虚拟网络优化系统,其特征在于,该拆包模块包括:
第二读取模块,用于接收网络包,并读取该网络包的I/O应答;
第二处理模块,用于根据该I/O应答判断该网络包是否为组合网络包,以决定是否开始拆包,并根据该I/O应答将该组合网络包中的小网络包分别拷贝至独立的套接字缓冲中;
第二发送模块,用于将套接字缓冲中的该小网络包发送给客户虚拟机上层网络协议栈,进行后续处理。
7.如权利要求5所述的虚拟网络优化系统,其特征在于,该共享授权页面模块包括:
网络包大小确定模块,用于遍历该组合网络包,以确定该组合网络包的大小;
检查处理模块,用于检查页面重用缓存是否存在可用的授权页面及引用,以引用授权至后端驱动,后端驱动获得该页面的授权,并通过该引用授权将该组合网络包拷贝至该页面;
判断通知模块,用于根据该组合网络包的大小,判断授权页面剩余空间是否足够拷贝下一个组合网络包,以拷贝组合网络包到该页面,并通知前端驱动该组合网络包的到达。
8.如权利要求5所述的虚拟网络优化系统,其特征在于,该判断模块还用于判断该接收队列中是否有可组网络包,若没有可组网络包,则调用第一发送模块;若有可组网络包,则将该组合网络包大小与预先设定好的组合网络包边界阈值相比较,若该组合网络包大于等于该阈值,则调用第一发送模块;若该组合网络包小于该阈值,则继续组包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611246993.6A CN106790162B (zh) | 2016-12-29 | 2016-12-29 | 虚拟网络优化方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611246993.6A CN106790162B (zh) | 2016-12-29 | 2016-12-29 | 虚拟网络优化方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106790162A CN106790162A (zh) | 2017-05-31 |
CN106790162B true CN106790162B (zh) | 2020-07-03 |
Family
ID=58929252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611246993.6A Active CN106790162B (zh) | 2016-12-29 | 2016-12-29 | 虚拟网络优化方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106790162B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108900579A (zh) * | 2018-06-11 | 2018-11-27 | 广州视源电子科技股份有限公司 | 通信系统与通信方法、装置及设备、介质 |
CN109522114A (zh) * | 2018-09-30 | 2019-03-26 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 虚拟化框架的雷达数据高速通信处理模块 |
CN110868344B (zh) * | 2019-10-17 | 2022-04-19 | 北京全路通信信号研究设计院集团有限公司 | 一种仿真mvb的方法、系统、装置和计算机可读介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7480238B2 (en) * | 2005-04-14 | 2009-01-20 | International Business Machines Corporation | Dynamic packet training |
US8935506B1 (en) * | 2011-03-31 | 2015-01-13 | The Research Foundation For The State University Of New York | MemX: virtualization of cluster-wide memory |
CN103064796B (zh) * | 2011-10-18 | 2015-09-23 | 财团法人工业技术研究院 | 虚拟机内存的共享方法与计算机系统 |
CN103218266B (zh) * | 2012-01-18 | 2016-03-23 | 国际商业机器公司 | 虚拟机与外部机器通信时使用的方法、设备及虚拟机系统 |
CN104618158B (zh) * | 2015-01-28 | 2018-05-04 | 上海交通大学 | 嵌入式网络虚拟化环境中VirtIO网络虚拟化工作方法 |
-
2016
- 2016-12-29 CN CN201611246993.6A patent/CN106790162B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106790162A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Honda et al. | mSwitch: a highly-scalable, modular software switch | |
EP3629162B1 (en) | Technologies for control plane separation at a network interface controller | |
US7996569B2 (en) | Method and system for zero copy in a virtualized network environment | |
KR101559644B1 (ko) | 통신 제어 시스템, 스위치 노드 및 통신 제어 방법 | |
US7983257B2 (en) | Hardware switch for hypervisors and blade servers | |
CN108270676B (zh) | 一种基于Intel DPDK的网络数据处理方法及装置 | |
CN113326228B (zh) | 基于远程直接数据存储的报文转发方法、装置及设备 | |
US7660322B2 (en) | Shared adapter | |
US20090006521A1 (en) | Adaptive receive side scaling | |
US9910687B2 (en) | Data flow affinity for heterogenous virtual machines | |
JP2015521779A (ja) | 入力/出力仮想化のためのシステムおよび方法 | |
US9864717B2 (en) | Input/output processing | |
EP3563534B1 (en) | Transferring packets between virtual machines via a direct memory access device | |
CN106790162B (zh) | 虚拟网络优化方法与系统 | |
CN106603409B (zh) | 一种数据处理系统、方法及设备 | |
CN104378161A (zh) | 一种基于AXI4总线架构的FCoE协议加速引擎IP核 | |
CN111813547A (zh) | 基于dpdk的数据包处理方法及装置 | |
CN112433826B (zh) | 混合异构虚拟化通信方法及芯片 | |
WO2014101502A1 (zh) | 基于内存芯片互连的内存访问处理方法、内存芯片及系统 | |
CN117240935A (zh) | 基于dpu的数据平面转发方法、装置、设备及介质 | |
WO2018057165A1 (en) | Technologies for dynamically transitioning network traffic host buffer queues | |
US9258273B2 (en) | Duplicating packets efficiently within a network security appliance | |
Taguchi et al. | Fast datapath processing based on hop-by-hop packet aggregation for service function chaining | |
US20230043461A1 (en) | Packet processing configurations | |
CN110875823B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |