CN109964211A - 用于半虚拟化网络设备队列和存储器管理的技术 - Google Patents
用于半虚拟化网络设备队列和存储器管理的技术 Download PDFInfo
- Publication number
- CN109964211A CN109964211A CN201680088883.3A CN201680088883A CN109964211A CN 109964211 A CN109964211 A CN 109964211A CN 201680088883 A CN201680088883 A CN 201680088883A CN 109964211 A CN109964211 A CN 109964211A
- Authority
- CN
- China
- Prior art keywords
- host
- network
- virtual machine
- computing device
- assigned
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 97
- 238000005516 engineering process Methods 0.000 title abstract description 10
- 238000012545 processing Methods 0.000 claims abstract description 23
- 239000000872 buffer Substances 0.000 claims description 43
- 238000000034 method Methods 0.000 claims description 30
- 230000006870 function Effects 0.000 claims description 26
- 239000012536 storage buffer Substances 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 12
- 238000009826 distribution Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 6
- 239000011800 void material Substances 0.000 claims description 3
- 230000002452 interceptive effect Effects 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 21
- 238000007726 management method Methods 0.000 description 20
- 238000013500 data storage Methods 0.000 description 8
- 238000004088 simulation Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- 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/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- 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/45583—Memory management, e.g. access or allocation
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
用于管理网络计算设备的半虚拟化网络设备队列和存储器的技术,所述网络计算设备包括多核处理器、多层高速缓存、主机以及多个虚拟机实例。所述主机被指派了所述处理器的处理器核,并且可以被配置成:将所接收的网络数据包复制到所述多层高速缓存的末级高速缓存,并且确定被配置成处理所接收的网络数据包的一个或多个虚拟机实例。每个虚拟机实例已经被指派了所述处理器的处理器核并且已经被分配了所述多级高速缓存存储器中与对应处理器核相关联的第一级高速缓存。所述主机另外被配置成向所确定的(多个)虚拟机的每个处理器核中注入中断,所述中断向所述(多个)虚拟机实例指示所接收的网络数据包可供处理。
Description
背景技术
网络运营商和服务提供商通常依赖于各种网络虚拟化技术来管理复杂的、大规模的计算环境,比如,高性能计算(HPC)环境和云计算环境。例如,网络运营商和服务提供商网络(例如,互联网服务提供商(ISP)、电信服务提供商(TPS)等)可以依赖于网络功能虚拟化(NFV)部署来部署网络服务(例如,防火墙服务、网络地址转换(NAT)服务、负载均衡器、深度分组检测(DPI)服务、演进分组核心(EPC)服务、移动性管理实体(MME)服务、分组数据网络网关(PGW)服务、服务网关(SGW)服务、账单结算服务、传输控制协议(TCP)优化服务等)。此类NFV部署通常使用NFV基础设施来协调各种虚拟机(VM),以在网络流量上执行虚拟化网络服务(通常被称为虚拟化网络功能(VNF))并且跨各个VM管理网络流量。
与传统非虚拟化部署不同,虚拟化部署将网络功能与底层硬件解耦合,这导致高动态且通常能够在具有通用处理器的现成服务器上执行的网络功能和服务。如此,可以在必要时基于将在网络流量上执行的特定功能或网络服务来缩小/扩展VNF。因此,NFV部署通常在预期与非虚拟化设施的性能相匹配的同时需要更高的性能和灵活性要求。
附图说明
在附图中通过示例的方式而不是通过限制的方式来展示了本文中所描述的概念。为了说明的简单和清楚起见,附图中所展示的元件不一定按比例绘制。在认为适当的情况下,在附图当中已经重复了附图标记以表示相应或相似的元件。
图1是用于半虚拟化网络设备队列和存储器管理的系统的至少一个实施例的简化框图,所述系统包括一个或多个网络计算设备;
图2是图1的系统的网络计算设备的半虚拟化网络设备架构的至少一个实施例的简化框图;
图3是图1的系统的网络计算设备的环境的至少一个实施例的简化框图;
图4是可以由图2和图3的网络计算设备执行的用于对虚拟机实例进行实例化的方法的至少一个实施例的简化流程图;并且
图5是可以由图2和图3的网络计算设备执行的用于处理所接收网络数据包的方法的至少一个实施例的简化流程图。
具体实施方式
虽然本公开的概念易于经历各种修改和替代形式,但是在附图中已经通过示例的方式示出了其特定实施例并且将在本文中对其进行详细描述。然而,应当理解的是,并不意在将本公开的概念限制于所公开的特定形式,而相反,意图是覆盖与本公开和所附权利要求一致的所有修改形式、等效形式和替代形式。
在说明书中提到“一个实施例(one embodiment)”、“实施例(an embodiment)”、“说明性实施例(an illustrative embodiment)”等表明所描述的实施例可以包括特定特征、结构或特性,但每一个实施例可以或可以不一定包括所述特定特征、结构或特性。而且,这种短语不一定指相同的实施例。进一步地,当关于实施例而描述了特定特征、结构或特性时,应当认为的是,无论是否进行了显式地描述,结合其他实施例来实现这种特征、结构或特性都在本领域的技术人员的知识内。另外,应当认识到,包括在采用“A、B和C中的至少一项”形式的列表中的项可以意指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。类似地,采用“A、B或C中的至少一项”的形式列出的项可以意指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。
在一些情况下,可以在硬件、固件、软件或其任何组合中实施所公开的实施例。所公开的实施例还可以被实施为由一个或多个暂态或非暂态机器可读(例如,计算机可读)存储介质所承载的或存储于其上的指令,所述指令可以由一个或多个处理器读取和执行。机器可读存储介质可以被实施为任何存储设备、机制、或用于存储或传输采用机器可读形式的信息的其他物理结构(例如,易失性或非易失性存储器、介质盘或其他介质设备)。
在附图中,可以采用特定安排和/或排序来示出一些结构特征或方法特征。然而,应当理解的是,可以不需要这种特定的安排和/或排序。相反,在一些实施例中,可以采用与在说明性附图中所示出的方式和/或顺序不同的方式和/或顺序来安排这种特征。另外,在具体的图中包括结构特征或方法特征并不意指暗示在所有实施例中都需要这种特征,并且在一些实施例中,可以不包括这种特征或者这种特征可以与其他特征组合。
现在参照图1,在说明性实施例中,用于半虚拟化网络设备队列和存储器管理的系统100包括端点设备102,所述端点设备经由网络116与一个或多个网络计算设备120进行网络通信。在使用中,如将进一步详细地讨论的,网络计算设备120可以被配置成接收网络数据包并且基于其中所包含的数据来处理所接收的网络数据包。例如,处理所接收的网络数据包可以包括执行其上的功能或服务,比如,防火墙服务、网络地址转换(NAT)服务、负载均衡器、深度分组检测(DPI)服务、演进分组核心(EPC)服务、移动性管理实体(MME)服务、分组数据网络网关(PGW)服务、服务网关(SGW)服务、账单结算服务、传输控制协议(TCP)优化服务等。例如,网络计算设备120可以被配置成使用一个或多个虚拟机(VM)经由多个虚拟网络功能(VNF)(参见,例如,图2的VM 220的VNF 220)来运行比如在服务功能链中的服务。
与访客系统(例如,VM)提供虚拟设备缓冲器的目前技术不同,网络计算设备120可以被配置成允许主机系统(例如,主机操作系统、管理程序等)提供虚拟设备缓冲器。因此,网络计算设备120可以被配置成管理用于存储所接收的(例如,经由物理网络接口控制器(NIC)的端口所接收的)网络数据包的共享存储器缓冲器及其队列。另外,在一些实施例中,与主机处理器核主动地执行数据复制相反,访客系统(例如,经由虚拟CPU)对存储在缓冲器中的网络数据包数据进行复制以将所述数据复制到VM软件栈中(例如,即时)。因此,来自网络数据包的数据可以跨虚拟机实例共享,同时将数据移动的负担朝向(多个)访客系统转移。
换言之,与访客将访客缓冲器放到共享环上(即,后缓冲器分配)并且主机半虚拟化后端驱动程序将存储器从主机缓冲器复制到访客缓冲器的目前半虚拟化模型不同,如本文中在一些实施例中所描述的网络计算设备120被配置成使得主机半虚拟化后端驱动程序将主机缓冲器放置到共享环上。如此,与高速缓存复制导致高速缓存以主机处理器核的L1高速缓存的方式在LLC与访客处理器核的L1高速缓存之间转移的目前半虚拟化模型不同,由如本文中在一些实施例中所描述的网络计算设备120所执行的复制完全不会导致由主机半虚拟化后端驱动程序进行的高速缓存转移,而是访客驱动程序直接从LLC(即,主机缓冲器)复制到访客处理器核的L1高速缓存(即,访客缓冲器)。应当理解的是,与如在目前半虚拟化模型中存在的从访客处理器核的L1高速缓存到主机处理器核的L1高速缓存进行的复制相反,由于高速缓存一致性协议,从LLC到主机处理器核的L1高速缓存的复制可以快的多,这还可以节省CPU周期。
端点设备102可以被实施为能够执行本文中所描述的功能的任何类型的计算设备或计算机设备,包括但不限于智能手机、移动计算设备、平板计算机、膝上型计算机、笔记本计算机、计算机、服务器(例如,独立式、机架式、刀片等)、网络设施(例如,物理的或虚拟的)、web设施、分布式计算系统、基于处理器的系统和/或多处理器系统。如图1所示,说明性端点设备包括处理器104、输入/输出(I/O)子系统106、存储器108、数据存储设备110、通信电路系统112、以及一个或多个外围设备114。当然,在其他实施例中,端点设备102可以包括替代或附加部件,比如,通常在能够与电信基础设施进行通信的计算设备中找到的那些(例如,各种输入/输出设备)。另外,在一些实施例中,说明性部件中的一个或多个可以结合在另一部件中或者以其他方式形成另一部件的一部分。例如,在一些实施例中,存储器108或其一部分可以结合到处理器104中。进一步地,在一些实施例中,说明性部件中的一个或多个可以从端点设备102中省略。
处理器104可以被实施为能够执行在本文中所描述的功能的任何类型的处理器。例如,处理器104可以被实施为一个或多个单核处理器、一个或多个多核处理器、数字信号处理器、微控制器、或者其他处理器或处理/控制电路。类似地,存储器108可以被实施为能够执行本文中所描述的功能的任何类型的易失性或非易失性存储器或数据存储设备。在操作中,存储器108可以存储在端点设备102的操作期间所使用的各种数据和软件,比如操作系统、应用、程序、函数库和驱动程序。
存储器108经由I/O子系统106通信地耦合至处理器104,所述I/O子系统可以被实施为用于促进与端点设备102的处理器104、存储器108以及其他部件的输入/输出操作的电路系统和/或部件。例如,I/O子系统106可以被实施为或以其他方式包括用于促进输入/输出操作的存储器控制器中枢、输入/输出控制中枢、固件设备、通信链路(即,点到点链路、总线链路、线、线缆、光导、印刷电路板迹线等)和/或其他部件和子系统。在一些实施例中,I/O子系统106可以形成芯片上系统(SoC)的一部分并且可以与端点设备102的处理器104、存储器108以及其他部件一起结合在单个集成电路芯片上。
数据存储设备110可以被实施为被配置成对数据进行短期或长期存储的任何类型的一种或多种设备,如例如,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备。应当理解的是,数据存储设备110和/或存储器108(例如,计算机可读存储介质)可以存储如本文所描述的能够由端点设备102的处理器(例如,处理器104)执行的各种数据,包括操作系统、应用、程序、函数库、驱动程序、指令等。
通信电路系统112可以被实施为能够实现端点设备102与诸如网络计算设备120等其他计算设备之间的通信的任何通信电路、设备、或其集合,以及用于允许通过网络116进行通信的网络通信实现设备,比如,接入点、网络交换机/路由器等。通信电路系统112可以被配置成使用任何一种或多种通信技术(例如,无线或有线通信技术)以及相关联的协议(例如,以太网、WiMAX、LTE、5G等)来实现这种通信。
网络116可以被实施为任何类型的有线或无线通信网络,包括无线局域网(WLAN)、无线个域网(WPAN)、蜂窝网络(例如,全球移动通信系统(GSM)、长期演进(LTE)等)、电话网络、数字用户线(DSL)网络、电缆网络、局域网(LAN)、广域网(WAN)、全球网络(例如,互联网)、或其任何组合。应当理解的是,在这类实施例中,网络116可以充当集中式网络,并且在一些实施例中,可以通信地耦合至另一个网络(例如,互联网)。因此,网络116可以包括如用于促进端点设备102与(多个)网络计算设备120之间的通信的各种其他虚拟和/或物理网络计算设备(例如,路由器、交换机、网络中枢、服务器、存储设备、计算设备等),为了描述的清晰起见,未示出这些设备。
网络计算设备120可以被实施为任何类型的网络流量管理、处理和/或转发设备,比如,服务器(例如,独立式、机架式、刀片等)、增强网络接口控制器(NIC)(例如,主机结构接口(HFI))、网络设施(例如,物理的或虚拟的)、交换机(例如,分离交换机、机架式交换机、独立式交换机、完全管理型交换机、部分管理型交换机、全双工交换机和/或半双工通信模式使能交换机)、路由器、web设施、分布式计算系统、基于处理器的系统和/或多处理器系统。应当理解的是,尽管说明性系统100仅包括单个网络计算设备120,但在其他实施例中,可能存在任何数量的附加网络计算设备120、以及任何数量的附加端点设备102。
如图1中所示,类似于先前所描述的端点设备102,说明性网络计算设备120包括一个或多个处理器122、I/O子系统134、存储器136、数据存储设备138和通信电路系统140。如此,本文为了描述的清晰起见不重复类似部件的进一步描述,应理解:上文关于端点设备102提供的相应部件的描述同样适用于网络计算设备120的相应部件。当然,在其他实施例中,网络计算设备120可以包括附加或替代部件,比如,通常在服务器、路由器、交换机或其他网络设备中找到的那些。另外,在一些实施例中,说明性部件中的一个或多个可以结合在另一部件中或者以其他方式形成另一部件的一部分。
说明性处理器122包括多于一个处理器核124,每一个处理器核都被实施为能够执行编程指令的独立逻辑执行单元。换言之,处理器122是多核处理器。应当理解的是,在网络计算设备120的一些实施例(例如,超级计算机)中,网络计算设备120可以包括数千个处理器核124。还应当进一步理解的是,在一些实施例中,每个处理器122可以连接至网络计算设备120的母板(未示出)上的被配置成接受单个物理处理器封装(即,多核物理集成电路)的物理连接器或插槽。在一些实施例中,网络计算设备120可以包括多于一个物理处理器封装,其中每一个可以经由耦合至一个或多个独立硬件存储器槽的单个插槽而连接至网络计算设备120的母板。
说明性处理器122另外包括高速缓存存储器126,所述高速缓存存储器可以被实施为处理器122可以比存储器136(即,主存储器)更快速地访问的任何类型的高速缓存,比如,管芯上高速缓存、或处理器上高速缓存。在其他实施例中,高速缓存存储器126可以是管芯外高速缓存,但驻留在与处理器122相同的芯片上系统(SoC)上。说明性高速缓存存储器126包括多级高速缓存架构,所述多级高速缓存架构被实施为表示为L1高速缓存128的第一级高速缓存、表示为L2高速缓存130的第二级高速缓存、以及表示为LLC 132的末级高速缓存。应当理解的是,在一些实施例中,多级高速缓存架构可以包括附加或替代层级的高速缓存存储器。
网络计算设备120的说明性通信电路系统140包括多于一个网络接口控制器(NIC)142、一个或多个入口/出口端口144和流水线逻辑单元146。NIC 142可以被实施为一个或多个插入式板、子卡、网络接口卡、控制器芯片、芯片组、或可以由网络计算设备120使用的其他设备。例如,在一些实施例中,NIC 142可以与处理器122集成,被实施为通过扩展总线(例如,PCI Express)耦合至I/O子系统134的扩展卡,作为包括一个或多个处理器的SoC的一部分,或者被包括在同样包含一个或多个处理器的多芯片封装上。另外地或可替代地,在一些实施例中,NIC 142的功能可以以板级、插槽级、芯片级和/或其他级集成到网络计算设备120的一个或多个部件中。在一些实施例中,NIC 142可以被配置成促进数据/消息的传送,以使得在处理器122上执行的任务能够访问其他网络计算设备120的共享结构(例如,共享物理存储器),比如在并行或分布式计算操作期间可能是必要的。应当理解的是,在一些实施例中,NIC142可以被实施为增强NIC、或者主机结构接口(HFI)。
所述一个或多个入口/出口端口144(即,输入/输出端口)可以被实施为能够向/从网络计算设备120发射/接收网络流量的任何类型的网络端口。因此,在一些实施例中,网络计算设备120可以被配置成为入口/出口端口144中的每一个创建单独的冲突域。如此,取决于网络计算设备120的网络设计、以及操作模式(例如,半双工、全双工等),应当理解的是,(例如,经由互连)连接至入口/出口端口144之一的其他网络计算设备120中的每一个可以被配置成在任何给定时间将数据传送至其他网络计算设备120中的任何一个,并且传输不应干扰或冲突。
流水线逻辑单元146可以被实施为任何专用设备、电路系统、硬件或其组合,以执行用于执行本文所描述的功能的流水线逻辑(例如,硬件算法)。在一些实施例中,流水线逻辑单元146可以被实施为芯片上系统(SoC)或以其他方式形成网络计算设备120的SoC的一部分(例如,与网络计算设备120的处理器122、存储器138、通信电路系统140和/或其他部件一起结合在单个集成电路芯片上)。可替代地,在一些实施例中,流水线逻辑单元146可以被实施为网络计算设备120的一个或多个分立处理单元,其中每个处理单元可以能够执行本文所描述的一个或多个功能。例如,流水线逻辑单元146可以被配置成处理网络数据包(例如,解析所接收的网络数据包、确定每个所接收网络数据包的目的地计算设备、将网络数据包转发至网络计算设备120的对应主机缓冲器的特定缓冲器队列等)、执行计算功能等。
现在参照图2,在说明性实施例中,网络计算设备120的半虚拟化网络设备架构200包括主机平台202和虚拟机(VM)220。说明性主机平台202包括表示为NIC(1)204的第一NIC142和表示为NIC(2)206的第二NIC 142;然而,应当理解的是,在其他实施例中,可以存在一个或多个附加NIC 142。物理NIC 204、206中的每一个通信地耦合至主机平台202的虚拟交换机210,所述虚拟交换机通信地耦合至两个或更多个半虚拟化NIC。应当理解的是,在一些实施例中,单个物理NIC可以包括多于一个端口,以使得每个端口连接至虚拟交换机210。
说明性半虚拟化NIC包括表示为PV-NIC(1)212的第一半虚拟化NIC和表示为PV-NIC(2)214的第二半虚拟化NIC。说明性主机平台202另外包括管理程序208和虚拟交换机210。管理程序208(例如,半虚拟化管理程序)可以被配置成控制对网络计算设备120的硬件资源(例如,(多个)处理器122、存储器136等)的访问。因此,对网络计算设备120的硬件资源的访问可以由管理程序208在主机平台202的硬件资源与VM 220(例如,特权访客操作系统)之间进行协调。应当理解的是,这种配置可能需要在执行之前发生的修改驻留在网络计算设备120的内核中。虚拟交换机210可以被配置成管理网络流量和/或与其相关的信息在主机平台202的物理NIC 142(例如,物理NIC 204、206)与半虚拟化NIC(例如,PV-NIC(1)212和PV-NIC(2)214)之间的内部数据传送。
说明性VM(1)222包括与半虚拟化NIC 212相关联的表示为PV-NIC(1)设备驱动程序216的设备驱动程序、以及分别表示为VM(1)分配缓冲器226、VM(1)描述符228和VM(1)环230的分配缓冲器、描述符和描述符环。类似地,说明性VM(2)232包括与半虚拟化NIC 214相关联的表示为PV-NIC(1)设备驱动程序218的设备驱动程序、以及分别表示为VM(2)分配缓冲器236、VM(2)描述符238和VM(2)环240的分配缓冲器、描述符和描述符环。
如图2中所示,PV-NIC 212、214中的每一个在主机平台202与各个VM 220之间延伸。应当理解的是,这种延伸是通常被称为桩驱动程序(stub driver)的前端驱动程序和后端驱动程序的表示,在所述桩驱动程序之间发生通信。因此,PV-NIC 212、214可以在实际设备驱动程序(例如,半虚拟化NIC设备驱动程序216、218之一)与表现为进行硬件调用的典型设备驱动程序的相应半虚拟化NIC(例如,PV-NIC 212、214中的相应一个)之间进行通信调用。说明性VM 220包括表示为VM(1)222的第一VM和表示为VM(2)232的第二VM;然而,应当理解的是,在其他实施例中,可以对附加和/或替代VM进行实例化。
现在参照图3,在使用中,网络计算设备120在操作期间建立环境300。说明性环境300包括网络流量入口/出口管理器306、虚拟机管理器308、网络数据包缓冲器池管理器310和高速缓存管理器312。环境300的各种部件可以被实施为硬件、固件、软件或其组合。如此,在一些实施例中,环境300的部件中的一个或多个可以被实施为电气设备的电路系统或集合(例如,网络流量入口/出口管理电路306、虚拟机管理电路308、网络数据包缓冲器池管理电路310和/或高速缓存管理电路312等)。
应当理解的是,在此类实施例中,网络流量入口/出口管理电路306、虚拟机管理电路308、网络数据包缓冲器池管理电路310和/或高速缓存管理电路312中的一者或多者可以形成网络计算设备120的处理器122、I/O子系统134、通信电路系统140和/或其他部件中的一者或多者的一部分。另外,在一些实施例中,说明性部件中的一个或多个可以形成另一个部件的一部分和/或说明性部件中的一个或多个可以彼此独立。进一步地,在一些实施例中,环境300的一个或多个部件可以被实施为虚拟化硬件部件或仿真架构,所述虚拟化硬件或仿真架构可以由处理器122或网络计算设备120的其他部件建立和维持。应当理解的是,网络计算设备120可以包括通常在计算设备中找到的其他部件、子部件、模块、子模块、逻辑、子逻辑和/或设备,为了描述的清楚起见,这些未在图4中展示。
在说明性环境300中,网络计算设备120另外包括网络数据包数据302和存储器缓冲器数据304,其中每一个都可以由网络计算设备120的各种部件和/或子部件访问。进一步地,网络数据包数据302和存储器缓冲器数据304中的每一个都可以由网络计算设备120的各种部件访问。另外,应当理解的是,在一些实施例中,存储在网络数据包数据302和存储器缓冲器数据304中的每一个中或者以其他方式由其表示的数据可以不相对于彼此相互排斥。例如,在一些实施方式中,存储在网络数据包数据302中的数据也可以被存储为存储器缓冲器数据304的一部分,或者反之亦然。如此,虽然本文将网络计算设备120所利用的各种数据描述为特定离散数据,但在其他实施例中,这种数据可以被组合、聚合和/或以其他方式形成包括重复副本的单个或多个数据集的一部分。
如上文所讨论的可以被实施为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的网络流量入口/出口管理器306可以被配置成向/从外部计算设备(例如,通信地耦合至网络计算设备120的端点设备102和/或(多个)其他网络计算设备120)接收/发射网络流量。换言之,网络流量入口/出口管理器306可以被配置成促进去往和来自网络计算设备120的入站和出站网络通信(例如,网络流量、网络数据包、网络流等)。为了这样做,网络流量入口/出口管理器306可以被配置成管理(例如,创建、修改、删除等)到网络计算设备120的物理网络端口和虚拟网络端口(即,虚拟网络接口)的连接(例如,经由通信电路系统140)、以及与网络端口相关联的入口缓冲器/队列和出口缓冲器/队列。在一些实施例中,网络流量信息(例如,工作负荷类型、路径、目的地计算设备信息、流等)可以存储在网络数据包数据302中。
如上文所讨论的可以被实施为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的虚拟机管理器308可以被配置成管理网络计算设备120的VM(例如,图2的VM 220)以及与其相关联的VNF(例如,图2的VM(1)222的VNF(1)224和VM(2)232的VNF(2)234中的每一个)。为了这样做,虚拟机管理器308可以被配置成基于VM的各种功能(比如,可以用于处理网络流量)来部署(即,自旋加速、实例化、提供等)并关闭(即,逐渐减小、关断、移除等)VM。因此,在一些实施例中,虚拟机管理器308可以另外被配置成管理与各个VM相关联的任何驱动程序(例如,VNF驱动程序)。应当理解的是,在一些实施例中,虚拟机管理器308可以另外被配置成确定或以其他方式监测网络计算设备120的可用资源。例如,资源可以包括可用网络资源(例如,可用带宽、到其他网络计算设备120的可用连接、队列拥塞、等待时间、遥测数据等)和/或可用系统资源(例如,可用存储器、可用处理器核、所安装软件的类型、I/O能力、队列拥塞等)。
如上文所讨论的可以被实施为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的网络数据包缓冲器池管理器310可以被配置成协调对缓冲器存储器的分配以保持所接收的网络数据包,并且将指向缓冲器的描述符放置到描述符环中。换言之,网络数据包缓冲器池管理器310可以被配置成分配队列/缓冲器描述符环,在所述描述符环中,每个描述符指示主机存储器中驻留有缓冲器的位置、以及缓冲器的大小。在一些实施例中,这种描述符可以存储在存储器缓冲器数据中。
如上文所讨论的可以被实施为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的高速缓存管理器312可以被配置成管理网络计算设备的高速缓存存储器(例如,图1的高速缓存存储器126)的分配和指定。为了这样做,高速缓存管理器312可以被配置成对高速缓存存储器到高速缓存块中的分配以及高速缓存块到网络计算设备120的物理存储器(例如,图1的主存储器136)的一部分的映射进行管理。另外,高速缓存管理器312可以被配置成管理对高速缓存存储器的访问(例如,读、写等)。换言之,高速缓存管理器312可以被配置成管理去往和来自网络计算设备120的高速缓存存储器的数据流。高速缓存管理器312可以进一步被配置成管理从高速缓存存储器126的高速缓存行驱逐数据。为了这样做,高速缓存管理器312可以被配置成强制实施高速缓存驱逐策略(即,高速缓存替换算法/策略)。应当理解的是,对于任何给定的高速缓存行,可以强制实施多于一个高速缓存驱逐策略。例如,高速缓存驱逐策略可以包括最近最少使用(LRU)、最近最多使用(MRU)等。
现在参照图4,网络计算设备120可以执行用于对VM实例(参见例如图2的VM实例VM(1)222和VM(2)232)进行实例化的方法400。方法400开始于框402,在所述框中,网络计算设备120判定是否对VM实例进行实例化。若是,则方法400前进至框404,在所述框中,网络计算设备120向有待实例化的VM实例分配网络计算设备120的某些系统资源。例如,在框406中,网络计算设备120向VM实例的缓冲器存储器分配一定量的存储器。另外,在框408中,网络计算设备120向VM实例分配或指派一个或多个处理器核(例如,图1的网络计算设备120的处理器核124中的一个或多个)。
在框410中,网络计算设备120将访客操作系统修改为包括可用于与半虚拟化管理程序(参见例如图2的管理程序208)进行交互的代码。应当理解的是,半虚拟化NIC的驱动程序可以紧缩有访客操作系统二进制。在框412中,网络计算设备120指派所分配的系统资源(例如,可用于存储所接收网络数据包的存储器缓冲器)。在框414中,网络计算设备120将存储器缓冲器的描述符放置到描述符环(例如,基于软件的描述符环)中。在框416中,网络计算设备120与主机共享存储器缓冲器。为了这样做,在框418中,网络计算设备120与提供后端半虚拟化NIC服务的主机共享存储器缓冲器。
现在参照图5,网络计算设备120可以执行用于处理所接收网络数据包的方法500。方法500开始于框502,在所述框中,网络计算设备120判定是否已经接收到网络数据包。若是,则方法500前进至框504,在所述框中,与主存储器(例如,存储器136)相反,网络计算设备120经由直接存储器存取(DMA)将网络数据包数据复制到网络计算设备120的LLC(例如,LLC 132)。例如,在一些实施例中,在框506中,网络计算设备120DMA将网络数据包数据复制到与被指派用于DMA的主机缓冲器存储器相关联的LLC。应当理解的是,LLC在相应处理器的处理器核之间共享。
在一些实施例中,在框508中,网络计算设备120将网络数据包的至少一部分(例如,网络数据包头部的一部分)复制到与之前被指派给主机(参见例如图2的主机平台202)的相应处理器核(例如,处理器核124中的一个或多个)相关联的L1高速缓存(例如,L1高速缓存128)。应当理解的是,一个或多个处理器核之前已经被指派给主机或者以其他方式被指定为可由主机专用。应当进一步理解的是,由网络计算设备120所实例化的每个VM在实例化时已经被指派了一个或多个处理器核,并且所述一个或多个处理器核中的每一个具有指定的L1高速缓存(例如,L1高速缓存128)和指定的L2高速缓存(例如,L2高速缓存130)。
在框510中,网络计算设备120判定所述一个或多个当前实例化的VM实例中的哪些将用于处理所接收的网络数据包。如之前所描述的,VM实例可以被实例化以执行特定功能或服务。例如,在一些实施例中,可以在服务功能链(SFC)中形成一系列这类服务。在这类实施例中,可以识别多于一个当前实例化的VM实例以处理所接收的网络数据包。在框512中,网络计算设备120向与所确定的VM实例相关联的对应处理核中注入中断。
在框514中,网络计算设备120判定是否已经从各个处理核中的在框512中注入中断的处理核中接收到取出命令。应当理解的是,框514是非阻塞函数。换言之,在一些实施例中,方法500的完成可以不依赖于已经接收到取出命令。如果网络计算设备120确定已经接收到取出命令,则方法500前进至框516。在框516中,网络计算设备120将网络数据包数据从LLC、主机缓存器复制到与从其接收到取出命令的VM实例相关联的处理器核的L1高速缓存、访客缓冲器。换言之,在框514和516中执行的动作(即,将网络数据包数据复制到访客VM)是由半虚拟化NIC驱动程序发起的,从而保持主机平台的一级高速缓存和二级高速缓存(即,L1高速缓存和L2高速缓存)干净,以允许VM的处理器核直接从LLC检索数据。
在一些实施例中,与主机处理器核主动执行复制的目前技术相反,框516中所描述的复制可以被执行为即时复制到对应VM的软件栈中。因此,移动数据的处理器周期负担从主机转移到VM,这可以提高系统的可扩展性。换言之,虽然在主机平台中处理器周期(即中央处理单元(CPU)周期)的总数量需要每秒支持一定量的累积所接收网络流量,但是如本文所描述的复制工作负荷被分布到与VM相关联的可用处理器核之中。如此,可以减轻从主机基础设施管理角度来看过度提供的需要。
应当理解的是,处理所接收的网络数据包可以进一步包括:确定目的地计算设备(例如,端点设备102、另一个网络计算设备120等),所述目的地设备可用于基于与网络数据包相关联的数据(比如,与(多个)网络数据包相关联的工作负荷或数据类型)、目的地计算设备的目的地地址(例如,互联网协议(IP)地址、目的地媒体访问控制(MAC)地址等)、5元组流标识等来转发所接收的网络数据包。
应当理解的是,在一些实施例中,方法400和500的至少一部分可以被实施为存储在计算机可读介质上的各种指令,所述指令可以由网络计算设备120的处理器(例如,处理器122)、通信电路系统140和/或其他部件来执行,以使得网络计算设备120执行方法400和500的至少一部分。所述计算机可读介质可以被实施为能够由网络计算设备120读取的任何类型的介质,包括但不限于:存储器136、数据存储设备138、网络计算设备120的其他存储器或数据存储设备、可由网络计算设备120的外围设备读取的便携介质、和/或其他介质。
示例
以下提供了在本文中所公开的技术的说明性示例。所述技术的实施例可以包括以下所描述的示例中的任何一个或多个示例及其任何组合。
示例1包括一种网络计算设备,用于管理所述网络计算设备的半虚拟化网络设备队列和存储器,所述网络计算设备包括:网络流量入口/出口管理器,用于:将由所述网络计算设备所接收的网络数据包的至少部分复制到被分配给所述网络计算设备的处理器的多级高速缓存存储器的末级高速缓存,其中,所述处理器包括多个处理器核,其中,所述处理器核中的一个处理器核已经被指派给所述网络计算设备的主机,其中,其他处理器核中的一个或多个已经各自被指派给当前在所述网络计算设备上执行的多个虚拟机实例中的相应虚拟机实例,并且其中,所述多级高速缓存存储器包括所述多级高速缓存存储器中被分配给指派给所述主机的处理器核的第一级;并且由所述主机确定所述多个虚拟机实例中用于处理所接收网络数据包的所述部分的虚拟机实例,其中,所述多级高速缓存存储器另外包括所述多级高速缓存存储器中被分配给所确定的虚拟机实例的相应处理器核的第一级;以及高速缓存管理器,用于将所接收的网络数据包的所述部分从所述末级高速缓存复制到被分配给指派给所确定的虚拟机实例的所述相应处理器核的第一级高速缓存。
示例2包括如示例1所述的主题,并且其中,所述主机包括主机操作系统或主机管理程序中的一者。
示例3包括如示例1和2中任一项所述的主题,并且其中,所述末级高速缓存包括所述多级高速缓存存储器中在所述主机与所述虚拟机实例之间共享的部分。
示例4包括如示例1至3中任一项所述的主题,并且进一步包括:网络流量入口/出口管理器,用于由所述主机、并且在已经确定所述虚拟机实例之后向被指派给所确定的虚拟机实例的处理器核中注入中断,其中,所述中断向所述虚拟机实例指示所接收的网络数据包可供处理。
示例5包括如示例1至4中任一项所述的主题,并且其中,所述多条指令进一步使所述网络计算设备由所述主机、并且在已经注入所述中断之后判定是否已经从所确定的虚拟机实例接收到取出命令,其中,对所接收的网络数据包的所述部分的复制响应于已经接收到所述取出命令而被执行。
示例6包括如示例1至5中任一项所述的主题,并且其中,将所述网络数据包的所接收的部分复制到所述末级高速缓存包括:将所接收的网络数据包的所述部分复制到描述符环,其中,所述描述符环在所述多个处理器核中的每一个处理器核之间共享。
示例7包括如示例1至6中任一项所述的主题,并且其中,所述多条指令进一步使所述网络计算设备用于:在对所述虚拟机实例进行实例化之前,向有待实例化的所述虚拟机实例分配一个或多个系统资源;将访客操作系统修改为包括可用于与所述主机的半虚拟化管理程序进行交互的代码;将经修改的访客操作系统安装到所述半虚拟化管理程序上;将所述存储器缓冲器的多个描述符放置到描述符环中,其中,所述描述符中的每一个描述符指示被分配给所述主机的存储器中驻留有所述存储器缓冲器的位置;并且在所述主机与所述虚拟机实例之间共享所述存储器缓冲器。
示例8包括如示例1至7中任一项所述的主题,并且其中,分配所述一个或多个系统资源包括:分配一定量的缓冲器存储器以及所述处理器核中的至少一个处理器核。
示例9包括一种用于管理网络计算设备的半虚拟化网络设备队列和存储器的方法,所述方法包括:由所述网络计算设备的主机将由所述网络计算设备所接收的网络数据包的至少部分复制到被分配给所述网络计算设备的处理器的多级高速缓存存储器的末级高速缓存,其中,所述处理器包括多个处理器核,其中,所述处理器核中的一个处理器核已经被指派给所述主机,其中,其他处理器核中的一个或多个已经各自被指派给当前在所述网络计算设备上执行的多个虚拟机实例中的相应虚拟机实例,并且其中,所述多级高速缓存存储器包括所述多级高速缓存存储器中被分配给指派给所述主机的处理器核的第一级;以及由所述主机确定所述多个虚拟机实例中用于处理所接收的网络数据包的所述部分的虚拟机实例,其中,所述多级高速缓存存储器另外包括所述多级高速缓存存储器中被分配给所确定的虚拟机实例的相应处理器核的第一级;以及由所述主机将所接收的网络数据包的所述部分从所述末级高速缓存复制到被分配给指派给所确定的虚拟机实例的所述相应处理器核的第一级高速缓存。
示例10包括如示例9所述的主题,并且其中,由所述主机进行所述复制包括由主机操作系统或主机管理程序中的一者进行复制。
示例11包括如示例9和10中任一项所述的主题,并且其中,所述复制到所述末级高速缓存包括复制到所述多级高速缓存存储器的在所述主机与所述虚拟机实例之间共享的部分。
示例12包括如示例9至11中任一项所述的主题,并且进一步包括:由所述主机、并且在已经确定虚拟机实例之后向被指派给所确定的虚拟机实例的处理器核中注入中断,其中,所述中断向所述虚拟机实例指示所接收的网络数据包可供处理。
示例13包括如示例9至12中任一项所述的主题,并且进一步包括:由所述主机、并且在已经注入所述中断之后判定是否已经从所确定的虚拟机实例接收到取出命令,其中,对所接收的网络数据包的所述部分的复制响应于已经接收到所述取出命令而被执行。
示例14包括如示例9至13中任一项所述的主题,并且其中,将所述网络数据包的所接收的部分复制到所述末级高速缓存包括:将所接收的网络数据包的所述部分复制到描述符环,其中,所述描述符环在所述多个处理器核中的每一个处理器核之间共享。
示例15包括如示例9至14中任一项所述的主题,并且进一步包括:由所述主机、并且在对所述虚拟机实例进行实例化之前向有待实例化的所述虚拟机实例分配一个或多个系统资源;由所述主机将访客操作系统修改为包括可用于与所述主机的半虚拟化管理程序进行交互的代码;由所述主机将经修改的访客操作系统安装到所述半虚拟化管理程序上;由所述主机将所述存储器缓冲器的多个描述符放置到描述符环中,其中,所述描述符中的每一个描述符指示被分配给所述主机的存储器中驻留有所述存储器缓冲器的位置;以及由所述主机在所述主机与所述虚拟机实例之间共享所述存储器缓冲器。
示例16包括如示例9至15中任一项所述的主题,并且其中,分配所述一个或多个系统资源包括分配一定量的缓冲器存储器以及所述处理器核中的至少一个处理器核。
示例17包括网络计算设备,所述网络计算设备包括:处理器;以及存储器,具有存储于其中的多条指令,所述指令当被所述处理器执行时使所述网络计算设备执行如示例9至16中任一项所述的方法。
示例18包括一种或多种机器可读存储介质,包括存储于其上的多条指令,所述指令响应于被执行而使网络计算设备执行如示例9至16中任一项所述的方法。
示例19包括一种网络计算设备,用于管理所述网络计算设备的半虚拟化网络设备队列和存储器,所述网络计算设备包括:用于将由所述网络计算设备所接收的网络数据包的至少部分复制到被分配给所述网络计算设备的处理器的多级高速缓存存储器的末级高速缓存的装置,其中,所述处理器包括多个处理器核,其中,所述处理器核中的一个处理器核已经被指派给所述网络计算设备的主机,其中,其他处理器核中的一个或多个已经各自被指派给当前在所述网络计算设备上执行的多个虚拟机实例中的相应虚拟机实例,并且其中,所述多级高速缓存存储器包括所述多级高速缓存存储器中被分配给指派给所述主机的处理器核的第一级;以及用于确定所述多个虚拟机实例中用于处理所接收的网络数据包的所述部分的虚拟机实例的装置,其中,所述多级高速缓存存储器另外包括所述多级高速缓存存储器中被分配给所确定的虚拟机实例的相应处理器核的第一级;以及用于将所接收的网络数据包的所述部分从所述末级高速缓存复制到被分配给指派给所确定的虚拟机实例的所述相应处理器核的第一级高速缓存的装置。
示例20包括如示例19所述的主题,并且其中,用于由所述主机进行所述复制的装置包括用于由主机操作系统或主机管理程序中的一者进行复制的装置。
示例21包括如示例19和20中任一项所述的主题,并且其中,用于所述复制到所述末级高速缓存的装置包括用于复制到所述多级高速缓存存储器的在所述主机与所述虚拟机实例之间共享的部分的装置。
示例22包括如示例19至21中任一项所述的主题,并且进一步包括:用于由所述主机、并且在已经确定虚拟机实例之后向被指派给所确定的虚拟机实例的处理器核中注入中断的装置,其中,所述中断向所述虚拟机实例指示所接收的网络数据包可供处理。
示例23包括如示例19至22中任一项所述的主题,并且进一步包括:用于在已经注入所述中断之后判定是否已经从所确定的虚拟机实例接收到取出命令的装置,其中,对所接收的网络数据包的所述部分的复制响应于已经接收到所述取出命令而被执行。
示例24包括如示例19至23中任一项所述的主题,并且其中,用于将所述网络数据包的所接收的部分复制到所述末级高速缓存的装置包括用于将所接收的网络数据包的所述部分复制到描述符环的装置,其中,所述描述符环在所述多个处理器核中的每一个处理器核之间共享。
示例25包括如示例19至24中任一项所述的主题,并且进一步包括:用于在对所述虚拟机实例进行实例化之前向有待实例化的所述虚拟机实例的装置分配一个或多个系统资源的装置;用于将访客操作系统修改为包括可用于与所述主机的半虚拟化管理程序进行交互的代码的装置;用于将经修改的访客操作系统安装到所述半虚拟化管理程序上的装置;用于将所述存储器缓冲器的多个描述符放置到描述符环中的装置,其中,所述描述符中的每一个描述符指示被分配给所述主机的存储器中驻留有所述存储器缓冲器的位置;以及用于在所述主机与所述虚拟机实例之间共享所述存储器缓冲器的装置。
示例26包括如示例19至25中任一项所述的主题,并且其中,用于分配所述一个或多个系统资源的装置包括用于分配一定量的缓冲器存储器以及所述处理器核中的至少一个处理器核的装置。
Claims (18)
1.一种网络计算设备,用于管理所述网络计算设备的半虚拟化网络设备队列和存储器,所述网络计算设备包括:
网络流量入口/出口管理器,用于:
将由所述网络计算设备所接收的网络数据包的至少部分复制到被分配给所述网络计算设备的处理器的多级高速缓存存储器的末级高速缓存,其中,所述处理器包括多个处理器核,其中,所述处理器核中的一个处理器核已经被指派给所述网络计算设备的主机,其中,其他处理器核中的一个或多个已经各自被指派给当前在所述网络计算设备上执行的多个虚拟机实例中的相应虚拟机实例,并且其中,所述多级高速缓存存储器包括所述多级高速缓存存储器中被分配给指派给所述主机的处理器核的第一级;并且
确定所述多个虚拟机实例中用于处理所接收的网络数据包的所述部分的虚拟机实例,其中,所述多级高速缓存存储器另外包括所述多级高速缓存存储器中被分配给所确定的虚拟机实例的相应处理器核的第一级;以及
高速缓存管理器,用于将所接收的网络数据包的所述部分从所述末级高速缓存复制到被分配给指派给所确定的虚拟机实例的所述相应处理器核的第一级高速缓存。
2.如权利要求1所述的网络计算设备,其中,所述主机包括主机操作系统或主机管理程序中的一者。
3.如权利要求1所述的网络计算设备,其中,所述末级高速缓存包括所述多级高速缓存存储器中在所述主机与所述虚拟机实例之间共享的部分。
4.如权利要求1所述的网络计算设备,进一步包括:网络流量入口/出口管理器,用于由所述主机、并且在已经确定所述虚拟机实例之后向被指派给所确定的虚拟机实例的处理器核中注入中断,其中,所述中断向所述虚拟机实例指示所接收的网络数据包能供处理。
5.如权利要求4所述的网络计算设备,其中,所述多条指令进一步使所述网络计算设备由所述主机、并且在已经注入所述中断之后判定是否已经从所确定的虚拟机实例接收到取出命令,其中,对所接收的网络数据包的所述部分的复制响应于已经接收到所述取出命令而被执行。
6.如权利要求1所述的网络计算设备,其中,将所述网络数据包的所接收的部分复制到所述末级高速缓存包括:将所接收的网络数据包的所述部分复制到描述符环,其中,所述描述符环在所述多个处理器核中的每一个处理器核之间共享。
7.如权利要求1所述的网络计算设备,其中,所述多条指令进一步使得所述网络计算设备用于:
在对所述虚拟机实例进行实例化之前,向有待实例化的所述虚拟机实例分配一个或多个系统资源;
将访客操作系统修改为包括能用于与所述主机的半虚拟化管理程序进行交互的代码;
将经修改的访客操作系统安装到所述半虚拟化管理程序上;
将所述存储器缓冲器的多个描述符放置到描述符环中,其中,所述描述符中的每一个描述符指示被分配给所述主机的存储器中驻留有所述存储器缓冲器的位置;并且
在所述主机与所述虚拟机实例之间共享所述存储器缓冲器。
8.如权利要求7所述的网络计算设备,其中,分配所述一个或多个系统资源包括:分配一定量的缓冲器存储器以及所述处理器核中的至少一个处理器核。
9.一种用于管理网络计算设备的半虚拟化网络设备队列和存储器的方法,所述方法包括:
由所述网络计算设备的主机将由所述网络计算设备所接收的网络数据包的至少部分复制到被分配给所述网络计算设备的处理器的多级高速缓存存储器的末级高速缓存,其中,所述处理器包括多个处理器核,其中,所述处理器核中的一个处理器核已经被指派给所述主机,其中,其他处理器核中的一个或多个处理器核已经各自被指派给当前在所述网络计算设备上执行的多个虚拟机实例中的相应虚拟机实例,并且其中,所述多级高速缓存存储器包括所述多级高速缓存存储器中被分配给指派给所述主机的处理器核的第一级;以及
由所述主机确定所述多个虚拟机实例中用于处理所接收的网络数据包的所述部分的虚拟机实例,其中,所述多级高速缓存存储器另外包括所述多级高速缓存存储器中被分配给所确定的虚拟机实例的相应处理器核的第一级;以及
由所述主机将所接收的网络数据包的所述部分从所述末级高速缓存复制到被分配给指派给所确定的虚拟机实例的所述相应处理器核的第一级高速缓存。
10.如权利要求9所述的方法,其中,由所述主机进行所述复制包括由主机操作系统或主机管理程序中的一者进行复制。
11.如权利要求9所述的方法,其中,所述复制到所述末级高速缓存包括复制到所述多级高速缓存存储器的在所述主机与所述虚拟机实例之间共享的部分。
12.如权利要求9所述的方法,进一步包括:由所述主机、并且在已经确定虚拟机实例之后向被指派给所确定的虚拟机实例的处理器核中注入中断,其中,所述中断向所述虚拟机实例指示所接收的网络数据包能供处理。
13.如权利要求12所述的方法,进一步包括:由所述主机、并且在已经注入所述中断之后判定是否已经从所确定的虚拟机实例接收到取出命令,其中,对所接收的网络数据包的所述部分的复制响应于已经接收到所述取出命令而被执行。
14.如权利要求9所述的方法,其中,将所述网络数据包的所接收的部分复制到所述末级高速缓存包括:将所接收的网络数据包的所述部分复制到描述符环,其中,所述描述符环在所述多个处理器核中的每一个处理器核之间共享。
15.如权利要求9所述的方法,进一步包括:
由所述主机、并且在对所述虚拟机实例进行实例化之前向有待实例化的所述虚拟机实例分配一个或多个系统资源;
由所述主机将访客操作系统修改为包括能用于与所述主机的半虚拟化管理程序进行交互的代码;
由所述主机将经修改的访客操作系统安装到所述半虚拟化管理程序上;
由所述主机将所述存储器缓冲器的多个描述符放置到描述符环中,其中,所述描述符中的每一个描述符指示被分配给所述主机的存储器中驻留有所述存储器缓冲器的位置;以及
由所述主机在所述主机与所述虚拟机实例之间共享所述存储器缓冲器。
16.如权利要求15所述的方法,其中,分配所述一个或多个系统资源包括分配一定量的缓冲器存储器以及所述处理器核中的至少一个处理器核。
17.一种网络计算设备,包括:
处理器;以及
存储器,具有存储于其中的多条指令,所述指令当由所述处理器执行时使所述网络计算设备执行如权利要求9至16中任一项所述的方法。
18.一种或多种机器可读存储介质,包括存储于其上的多条指令,所述指令响应于被执行而使网络计算设备执行如权利要求9至16中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/101096 WO2018058533A1 (en) | 2016-09-30 | 2016-09-30 | Technologies for paravirtual network device queue and memory management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109964211A true CN109964211A (zh) | 2019-07-02 |
CN109964211B CN109964211B (zh) | 2024-01-23 |
Family
ID=61763002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680088883.3A Active CN109964211B (zh) | 2016-09-30 | 2016-09-30 | 用于半虚拟化网络设备队列和存储器管理的技术 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11412059B2 (zh) |
CN (1) | CN109964211B (zh) |
DE (1) | DE112016007292T5 (zh) |
WO (1) | WO2018058533A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112187504A (zh) * | 2019-07-03 | 2021-01-05 | 谷歌有限责任公司 | 可预测的虚拟化网络接口卡 |
CN114461013A (zh) * | 2020-11-10 | 2022-05-10 | 张月玲 | 一种互联网环境下的分离式通用计算机系统 |
CN116932454A (zh) * | 2023-09-15 | 2023-10-24 | 湖北芯擎科技有限公司 | 数据传输方法、装置、电子设备及计算机可读存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795554B (zh) * | 2023-08-22 | 2023-11-17 | 无锡沐创集成电路设计有限公司 | 虚拟网卡队列分配方法及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100070677A1 (en) * | 2008-09-15 | 2010-03-18 | Vmware, Inc. | System and Method for Reducing Communication Overhead Between Network Interface Controllers and Virtual Machines |
US20150161048A1 (en) * | 2013-12-09 | 2015-06-11 | PernixData, Inc. | System and Method for Maintaining Cache Coherency |
US20160117246A1 (en) * | 2014-10-27 | 2016-04-28 | Thomson Licensing | Method and apparatus for cross-core covert channel |
US20160188474A1 (en) * | 2014-12-26 | 2016-06-30 | Intel Corporation | Hardware/software co-optimization to improve performance and energy for inter-vm communication for nfvs and other producer-consumer workloads |
CN105980986A (zh) * | 2014-03-21 | 2016-09-28 | 英特尔公司 | 用于虚拟化计算的装置和方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7793287B2 (en) | 2003-10-01 | 2010-09-07 | Hewlett-Packard Development Company, L.P. | Runtime virtualization and devirtualization of I/O devices by a virtual machine monitor |
US8799891B2 (en) | 2005-03-02 | 2014-08-05 | Hewlett-Packard Development Company, L.P. | System and method for attributing CPU usage of a virtual machine monitor to a corresponding virtual machine |
US7434002B1 (en) | 2006-04-24 | 2008-10-07 | Vmware, Inc. | Utilizing cache information to manage memory access and cache utilization |
US7926067B2 (en) | 2006-11-28 | 2011-04-12 | Broadcom Corporation | Method and system for protocol offload in paravirtualized systems |
US8902242B2 (en) * | 2009-04-23 | 2014-12-02 | Vmware, Inc. | Method and system for identifying drawing primitives for selective transmission to a remote display |
CN103036759B (zh) | 2012-12-08 | 2015-07-01 | 中国科学院软件研究所 | 一种x86虚拟化条件下降低网络i/o操作cpu开销的系统 |
US9727475B2 (en) * | 2014-09-26 | 2017-08-08 | Intel Corporation | Method and apparatus for distributed snoop filtering |
US9996374B2 (en) * | 2015-06-16 | 2018-06-12 | Assured Information Security, Inc. | Deployment and installation of updates in a virtual environment |
US9817786B1 (en) * | 2015-06-26 | 2017-11-14 | Amazon Technologies, Inc. | Ingress data placement |
US10178054B2 (en) * | 2016-04-01 | 2019-01-08 | Intel Corporation | Method and apparatus for accelerating VM-to-VM network traffic using CPU cache |
-
2016
- 2016-09-30 DE DE112016007292.9T patent/DE112016007292T5/de active Pending
- 2016-09-30 CN CN201680088883.3A patent/CN109964211B/zh active Active
- 2016-09-30 US US16/328,865 patent/US11412059B2/en active Active
- 2016-09-30 WO PCT/CN2016/101096 patent/WO2018058533A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100070677A1 (en) * | 2008-09-15 | 2010-03-18 | Vmware, Inc. | System and Method for Reducing Communication Overhead Between Network Interface Controllers and Virtual Machines |
US20150161048A1 (en) * | 2013-12-09 | 2015-06-11 | PernixData, Inc. | System and Method for Maintaining Cache Coherency |
CN105980986A (zh) * | 2014-03-21 | 2016-09-28 | 英特尔公司 | 用于虚拟化计算的装置和方法 |
US20160117246A1 (en) * | 2014-10-27 | 2016-04-28 | Thomson Licensing | Method and apparatus for cross-core covert channel |
US20160188474A1 (en) * | 2014-12-26 | 2016-06-30 | Intel Corporation | Hardware/software co-optimization to improve performance and energy for inter-vm communication for nfvs and other producer-consumer workloads |
Non-Patent Citations (1)
Title |
---|
苏文等: "面向云计算的多核处理器存储和网络子系统优化设计", 《高技术通讯》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112187504A (zh) * | 2019-07-03 | 2021-01-05 | 谷歌有限责任公司 | 可预测的虚拟化网络接口卡 |
CN114461013A (zh) * | 2020-11-10 | 2022-05-10 | 张月玲 | 一种互联网环境下的分离式通用计算机系统 |
CN116932454A (zh) * | 2023-09-15 | 2023-10-24 | 湖北芯擎科技有限公司 | 数据传输方法、装置、电子设备及计算机可读存储介质 |
CN116932454B (zh) * | 2023-09-15 | 2024-05-17 | 湖北芯擎科技有限公司 | 数据传输方法、装置、电子设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20210203740A1 (en) | 2021-07-01 |
CN109964211B (zh) | 2024-01-23 |
US11412059B2 (en) | 2022-08-09 |
WO2018058533A1 (en) | 2018-04-05 |
DE112016007292T5 (de) | 2019-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200322287A1 (en) | Switch-managed resource allocation and software execution | |
US11748278B2 (en) | Multi-protocol support for transactions | |
US10325343B1 (en) | Topology aware grouping and provisioning of GPU resources in GPU-as-a-Service platform | |
CN107995129B (zh) | 一种nfv报文转发方法和装置 | |
US20210243247A1 (en) | Service mesh offload to network devices | |
US9935899B2 (en) | Server switch integration in a virtualized system | |
CN103763173B (zh) | 数据传输方法和计算节点 | |
CN101430674B (zh) | 一种分布式虚拟机监控器内连通信方法 | |
CN111903109A (zh) | 可超额预订资源分配 | |
CN107111576A (zh) | 发布的中断架构 | |
US11496419B2 (en) | Reliable transport offloaded to network devices | |
CN109964211A (zh) | 用于半虚拟化网络设备队列和存储器管理的技术 | |
US20220014459A1 (en) | Network layer 7 offload to infrastructure processing unit for service mesh | |
CN103455363B (zh) | 一种虚拟机的指令处理方法、装置及物理主机 | |
US20220086226A1 (en) | Virtual device portability | |
CN108984327A (zh) | 报文转发方法、多核cpu及网络设备 | |
CN114064306A (zh) | 用于数据的并行处理的缓冲器分配 | |
US11575620B2 (en) | Queue-to-port allocation | |
US20190042456A1 (en) | Multibank cache with dynamic cache virtualization | |
CN115934624B (zh) | 多主机远程直接内存访问网络管理的方法、设备及介质 | |
CN107683593A (zh) | 网络线卡(lc)与主机操作系统(os)集成 | |
EP4030284A1 (en) | Virtual device portability | |
Zang et al. | PROP: Using PCIe-based RDMA to accelerate rack-scale communications in data centers | |
Nanos et al. | Xen2MX: High-performance communication in virtualized environments | |
WO2024098232A1 (en) | Adaptive live migration of a virtual machine for a physical storage device controller |
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 |