CN108139982B - 多信道输入/输出虚拟化 - Google Patents
多信道输入/输出虚拟化 Download PDFInfo
- Publication number
- CN108139982B CN108139982B CN201780003494.0A CN201780003494A CN108139982B CN 108139982 B CN108139982 B CN 108139982B CN 201780003494 A CN201780003494 A CN 201780003494A CN 108139982 B CN108139982 B CN 108139982B
- Authority
- CN
- China
- Prior art keywords
- address
- virtual machine
- packet
- network device
- virtual
- 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
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- 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/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/60—Router architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- 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/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- 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/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供用于实现由在网络装置上执行的多个进程共享多信道分组处理器的系统、方法及计算机可读媒体。所述网络装置可包含存储器管理单元,其经配置以包含地址映射。所述地址映射可包含保留部分。虚拟机可在所述地址映射中分配客户机部分,其中所述客户机部分分配于所述地址映射中不包含所述保留部分的一部分中。来自所述分组处理器的第一信道可被指派到所述客户机部分,且所述虚拟机可使用所述第一信道接收分组。所述保留部分可被指派到在所述网络装置上执行的主机进程。来自所述分组处理器的第二信道可被指派到所述保留部分。所述主机进程可使用所述第二信道将分组发射到网络。
Description
相关申请案的交叉参考
本申请案主张2016年5月31日申请的第62/343,728号美国临时申请案及2016年5月31日申请的第62/343,811号美国临时申请案的权益及优先权。第62/343,728及62/343,811号美国申请案的全部内容出于所有目的以全文引用方式并入本文中。
发明内容
本发明大体上涉及联网技术,且更特定来说,涉及用于共享针对运行网络装置的用户空间的主机进程之间的高输入/输出(I/O)性能而设计的网络分组处理器的系统及方法。
网络装置(例如路由器)可包含I/O装置(例如分组处理器)。所述分组处理器可提供直接存储器存取(DMA)功能性以用于将分组发射到网络及/或从网络接收分组。在许多情况中,多个主机级进程可在所述网络装置上执行,其中每一者可能需要使用所述分组处理器发射及/或接收分组。此类主机进程可包含虚拟机及主机操作系统中运行的其它进程。
在各种实施方案中,提供用于实现由在网络装置上执行的多个进程共享高性能I/O装置(例如分组处理器)的系统、方法及计算机可读媒体。在各种实施方案中,所述网络装置可包含存储器管理单元(例如I/O存储器管理单元(IOMMU))。所述存储器管理单元可经配置以包含地址映射。所述地址映射可进一步经配置以包含保留部分。所述保留部分中的地址可对应于主机地址空间中的地址,其中所述主机地址空间在所述网络装置的存储器中。在各种实施方案中,所述地址空间独立于使用所述地址空间的进程被保存。所述网络装置可进一步经配置以将所述地址映射指派到所述网络装置上执行的虚拟机。所述虚拟机可经配置以在所述地址映射中分配客户机部分,其中所述客户机部分分配于所述地址映射中不包含所述保留部分的一部分中。所述网络装置可进一步经配置以将来自多个信道的第一信道指派到所述客户机部分。所述虚拟机可进一步经配置以使用所述第一信道从网络接收分组。所述网络装置可进一步经配置以将所述保留部分指派到所述网络装置上执行的主机进程,且将来自所述多个信道的第二信道指派到所述保留部分。所述主机进程可经配置以使用所述第二信道将分组发射到网络。
在各种实施方案中,主机进程可经配置以使用虚拟地址获得物理地址。在这些实施方案中,主机进程可使用保留部分获得物理地址。此物理地址对应于存储器中的地址,且虚拟地址对应于虚拟机的虚拟地址空间。
在各种实施方案中,主机进程可经配置以使用物理地址将分组写入到存储器。在各种实施方案中,分组处理器可使用DMA操作将分组发射到网络上。
在各种实施方案中,虚拟机可经配置以使用虚拟地址从存储器读取分组。在各种实施方案中,分组处理器可具有从网络接收到的分组,且使用DMA操作将分组放置在存储器中。
在各种实施方案中,分组处理器可经配置以在第二信道上接收发射分组的请求,其中所述请求包含虚拟地址。分组处理器可进一步经配置以使用保留部分获得虚拟地址的物理地址。分组处理器可进一步经配置以使用物理地址从存储器读取分组且发射分组。
在各种实施方案中,分组处理器可经配置以在所述第一信道处接收分组。分组处理器可进一步经配置以使用地址映射获得虚拟地址的物理地址,其中虚拟地址由虚拟机配置。分组处理器可进一步经配置以使用物理地址将分组写入到存储器。
在各种实施方案中,网络装置可进一步经配置以确定虚拟机已被停用。接着,网络装置可起始新虚拟机,且从而将地址空间映射指派到新虚拟机。新虚拟机可经配置以在地址映射中分配新客户机部分。保留部分也不可由新虚拟机用于分配新客户机部分。网络装置可进一步经配置以将第一信道指派到新客户机部分。新虚拟机可经配置以使用第一信道接收分组。
在各种实施方案中,地址空间先前被指派到另一虚拟机。在各种实施方案中,当虚拟机关闭时,地址空间映射被保存。在各种实施方案中,虚拟机包含网络操作系统。在各种实施方案中,主机进程包含软件保活进程。在各种实施方案中,多个信道可被映射到输入/输出(I/O)地址空间。
附图说明
图1是根据某些实施例的可并入本文揭示的教示的网络装置(也称为“主机系统”)的简化框图。
图2是又另一实例网络装置的简化框图。
图3说明包含提供用于接收及发射分组的DMA功能性的分组处理器的网络装置的实例。
图4说明经配置以共享分组处理器的网络装置的实例,其中分组处理器支持硬件虚拟化。
图5说明包含高性能分组处理器的网络装置的实例,所述高性能分组处理器可由网络装置指派到多个主机进程。
图6说明高性能分组处理器可通过其在两个主机进程共享之间的过程的实例。
具体实施方式
在以下描述中,出于解释目的,陈述具体细节以便提供对某些发明实施例的透彻理解。然而,应明白,可在没有这些具体细节的情况下实践各种实施例。图式及描述不希望具限制性。本文使用用语“示范性”来表示“用作实例、例子或说明”。本文描述为“示范性”的任何实施例或设计不一定解释为比其它实施例或设计优选或有利。
本发明大体上涉及联网技术,且更特定来说,涉及用于在网络装置的用户空间中运行的主机进程之间共享高性能分组处理器装置的系统及方法。所述分组处理器可为针对高输入/输出(I/O)性能而设计。
网络装置(例如路由器)可包含I/O装置(例如分组处理器)。所述分组处理器可提供直接存储器存取(DMA)功能性以用于将分组发射到网络及/或从网络接收分组。在许多情况中,多个主机级进程可在所述网络装置上执行,其中每一者可能需要使用所述分组处理器发射及/或接收分组。此类主机进程可包含虚拟机及主机操作系统中运行的其它进程。
可使用各种技术实现在主机进程(例如软件虚拟化及单根输入/输出虚拟化(SR-IOV))之中共享分组处理器的DMA能力。软件虚拟化涉及运行通过执行例如从主机进程的地址空间到指派到分组处理器以进行DMA操作的地址空间的存储器复制来仿效分组处理器的DMA能力的软件。在存储器位置之间进行复制可能需要大量处理器时间,且因此可降低网络装置的性能。SR-IOV直接在分组处理器上提供硬件虚拟化,从而消除对软件虚拟化的需要且消除潜在性能损失。SR-IOV功能必须被建置到分组处理器中,然而,并非所有分组处理器都包含此能力。无论其是否具有SO-IOV能力,分组处理器时常具有多个DMA信道,其可用于实现分组处理器的共享而不会牺牲性能。
对于有效性及安全性,分组处理器以及其它I/O装置可由I/O存储器管理单元(IOMMU)管理。IOMMU可用于系统架构中以将具有DMA能力的I/O装置连接到系统主存储器。除了其它特征之外,IOMMU可提供地址隔离,使得一个I/O装置不能影响另一I/O装置的存储器事务。IOMMU通过将相异地址映射指派到每一I/O装置提供地址隔离。IOMMU地址映射通常称为域。
IOMMU地址映射或域可在由处理器使用的物理地址与指派到I/O装置的地址之间提供地址转译。此特征在系统执行虚拟机时特别有用。虚拟机内执行的进程使用虚拟机的虚拟地址空间内的虚拟地址,包含虚拟I/O地址。虚拟机可使用虚拟I/O地址对分组处理器DMA引擎进行编程,使得分组处理器可针对虚拟机的虚拟I/O地址控制执行DMA事务。IOMMU可经配置以将虚拟I/O地址转译成物理I/O地址。分组处理器可使用此转译执行DMA事务。
在许多虚拟机配置中,不同虚拟机的DMA操作被保持为隔离的使得一个虚拟机不会干涉另一虚拟机的I/O功能性。为完成此隔离,在一些实施方案中,可通过将特定I/O装置(例如分组处理器)的域指派到一个虚拟机而给予所述虚拟机对所述I/O装置的排他使用。当虚拟机是将使用I/O装置的唯一主机进程时此排他性在系统设计中是可接受的。
然而,当另一主机进程也将使用I/O装置时,虚拟机与I/O装置之间的排他性可为一种限制。另一主机进程(在一些实例中,其可为另一虚拟机)可在另一地址空间中执行,例如系统的底层操作系统的物理地址空间。替代地,可使另一主机进程使用虚拟机的虚拟地址,但是,另一主机进程被束缚于虚拟机的可行性。举例来说,如果虚拟机离线,那么域可被移除,在此情况中,另一主机进程失去对I/O装置的存取。
在各种实施方案中,提供用于在多个主机进程之间共享高性能分组处理器而不会影响分组处理器的高性能能力的系统及方法。在各种实施方案中,系统的IOMMU可如上文论述那样配置,其中地址映射或域针对分组处理器进行配置,且域被指派到在系统上执行的虚拟机。为使另一主机进程能够使用分组处理器,一部分域可被保留以由所述主机进程使用。在此保留部分中,主机进程可配置其自身地址转译。当虚拟机分配域中的区域以供其自身使用时,虚拟机将不能使用保留部分,且必须使用域的某一其它部分。
虽然保留域的一部分可向主机进程提供对分组处理器的存取,但这样做会导致其它问题。举例来说,被编程到域中以由虚拟机使用的物理地址可与被编程到域中以由主机进程使用的物理地址冲突(例如,可能重叠)。举另一实例,使虚拟机及主机进程两者都使用分组处理器可影响分组处理器的吞吐量;也就是说,可影响分组处理器可发送及/或接收分组的速率。
为解决这些及其它问题,系统可使用具有多个信道的分组处理器。在此上下文中,信道是可被映射到I/O地址空间的软件及/或硬件构成。在各种实施方案中,系统可经配置使得一个信道被指派到虚拟机且另一信道被指派到主机进程。此指派可通过相应地对IOMMU域中的区域进行编程来完成。
如上所述,使主机进程使用被指派到虚拟机的域的一部分意味着域可被移除,作为当虚拟机关闭时发生的普通清理的部分。然而,在无域的情况下,主机进程发送及/或接收分组的能力被中断。因此,在各种实施方案中,系统可经配置使得如果虚拟机被停用,那么域被保存或另外不允许被移除。接着,主机进程可继续发送及/或接收分组,即使在虚拟机不再操作时。如果使新虚拟机在线,那么系统可经配置使得新虚拟机被指派现存域。以此方式,新虚拟机及主机进程可共享对分组处理器的使用。
图1是根据某些实施例的可并入本文揭示的教示的网络装置100(也称为“主机系统”)的简化框图。网络装置100可为能够接收及转发分组(其可为数据分组或信令或协议相关分组(例如,保活分组))的任何装置。举例来说,网络装置100可接收一或多个数据分组及转发数据分组以促进数据分组到其预期目的地的递送。在某些实施例中,网络装置100可为路由器或交换机,例如由加利福尼亚的圣何塞的博科通信系统公司(BrocadeCommunications Systems,Inc.)提供的各种路由器及交换机。
如图1中描绘,实例网络装置100包括多个组件,其包含一或多个处理器102、系统存储器104、分组处理器或业务管理器106及任选地其它硬件资源或装置108。图1中描绘的网络装置100仅是实例且不希望过度地限制权利要求书中所述的发明实施例的范围。所属领域的一般技术人员应认识许多可能变化、替代及修改。举例来说,在一些实施方案中,网络装置100可具有比图1中展示的组件更多或更少的组件,可组合两个或两个以上组件,或可具有不同的组件配置或布置。图1中描绘的网络装置100还可包含使网络装置100的多个组件能够与彼此通信的一或多个通信信道(例如,互连件或总线)(未展示)。
网络装置100可包含一或多个处理器102。处理器102可包含单核或多核处理器。系统存储器104可为处理器102提供存储器资源。系统存储器104通常呈随机存取存储器(RAM)的形式(例如,动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDRSDRAM))。与操作系统相关的信息及由处理器102执行的程序或进程可被存储于系统存储器104中。处理器102可包含通用微处理器,例如由飞思卡尔半导体公司(Freescale Semiconductor,Inc.)及类似公司提供的微处理器,其在存储于相关联存储器中的软件的控制下操作。
如图1中描绘的实例中展示,主机操作系统110可被加载于系统存储器104中且由一或多个处理器102执行。举例来说,可在网络装置100通电时加载主机操作系统110。在某些实施方案中,主机操作系统110也可用作管理程序且促进对虚拟机及由网络装置100执行的其它程序的管理。管理虚拟机可包含在各种程序之间对网络装置100的资源(包含处理器资源及存储器资源)进行划分。管理程序是实现虚拟机环境的创建及管理的程序,包含处理器、存储器及网络装置100的其它硬件资源在虚拟机环境之间的划分及管理。管理程序使多个客户机操作系统(GOS)能够同时运行在网络装置100上。
举个实例,在某些实施例中,主机操作系统110可包含KVM(基于内核的虚拟机)的一个版本,其是支持各种操作系统(包含Linux、及其它)的开源虚拟化基础架构。管理程序的其它实例包含由及其它提供的解决方案。Linux KVM是虚拟存储器系统,这意味着由加载及执行于系统存储器中的程序可见的地址是必须被映射或转译成物理存储器的物理存储器地址的虚拟存储器地址。此间接层使在网络装置100上运行的程序能够具有大于系统的物理存储器的经分配虚拟存储器空间。
在图1中描绘的实例中,分配到操作系统110(作为管理程序操作)的存储器空间被划分成内核空间112及用户空间114(也称为主机用户空间)。多个虚拟机及主机进程可被加载到用户空间114中且由处理器102执行。分配到虚拟机(有时也称为客户机操作系统或GOS)的存储器可又包含客户机内核空间部分及客户机用户空间部分。虚拟机可具有被加载到虚拟机的客户机内核空间中的其自身操作系统。虚拟机可独立于由网络装置100执行的其它虚拟机操作且可能察觉不到其它虚拟机的存在。
虚拟机的操作系统可与主机操作系统110相同或不同。当多个虚拟机被执行时,一个虚拟机的操作系统可与另一虚拟机的操作系统相同或不同。以此方式,管理程序110使多个客户机操作系统能够共享网络装置100的硬件资源(例如,处理器资源及存储器资源)。
举例来说,在图1中描绘的实施例中,两个虚拟机VM-1 116及VM-2 118已经被加载到用户空间114中且由处理器102执行。VM-1 116具有客户机内核空间126及客户机用户空间124。VM-2 118具有其自身客户机内核空间130及客户机用户空间128。通常,每一虚拟机具有仅那个虚拟机可存取的其自身安全及私有存储器区。在某些实施方案中,虚拟机116及118的创建及管理可由在管理程序110管理,管理程序110可为例如KVM。虽然在图1中仅展示两个虚拟机,但此不希望具限制性。在替代实施例中,可加载及执行任何数目个虚拟机。
各种其它主机程序或进程也可被加载到用户空间114中且由处理器102执行。举例来说,如图1中描绘的实施例中展示,两个主机进程120及122已经被加载到用户空间114中且由处理器102执行。虽然在图1中仅展示两个主机进程,但此不希望具限制性。在替代实施例中,可加载及执行任何数目个主机进程。
在某些实施例中,虚拟机可运行网络操作系统(NOS)(有时也称为网络协议栈),且可经配置以执行与从网络装置100转发分组相关的处理。作为此处理的部分,虚拟机可经配置以维护及管理用于确定如何从网络装置100转发由网络装置100接收到的数据分组的路由信息。在某些实施方案中,路由信息可被存储于由网络装置100存储的路由数据库(未展示)中。接着,虚拟机可使用路由信息对分组处理器106进行编程,接着,分组处理器106使用经编程信息执行分组转发,如下文描述。
运行NOS虚拟机也可经配置以执行与管理由网络装置100执行的各种联网协议的会话相关的处理。接着,这些会话可用于从网络装置100发送信令分组(例如,保活分组)。发送保活分组使会话可用性信息能够在转发或路由协议的两个端之间交换。
在某些实施方案中,运行网络操作系统的冗余虚拟机可经提供以确保网络装置的高可用性。在此类实施方案中,虚拟机中的一者可经配置以在“活动”模式中操作(此虚拟机称为活动虚拟机)且在另一虚拟机经配置以在“备用”模式中操作(此虚拟机称为备用虚拟机)时执行一组功能,在“备用”模式中不执行由活动虚拟机执行的所述组功能。备用虚拟机保持准备接管由活动虚拟机执行的功能。在概念上,在活动模式中操作的虚拟机经配置以执行不由在备用模式中操作的虚拟机执行的一组功能。举例来说,在活动模式中操作的虚拟机可经配置以执行与从网络装置100路由及转发分组相关的某些功能,所述功能不由在备用模式操作中的虚拟机执行。活动虚拟机还取得网络装置100的硬件资源的所有权并管理网络装置100的硬件资源。
某些事件可导致活动虚拟机停止在活动模式中操作且使备用虚拟机开始在活动模式中操作(即,变成活动虚拟机)且接管在活动模式中执行的与网络装置100相关的所述组功能的执行。备用虚拟机变成活动虚拟机的进程称为故障转移或切换。由于故障转移,在故障转移之前先前在活动模式中操作的虚拟机可在故障转移之后在备用模式中操作。故障转移使能够继续执行在活动模式中执行的所述组功能而无中断。以此方式使用的冗余虚拟机可减少或甚至消除网络装置100的功能性的停机时间,这可转译成网络装置100的更高可用性。在活动模式中执行且不由活动虚拟机执行且不由备用虚拟机执行的所述组功能可因网络装置的不同而不同。
各种不同事件可导致发生故障转移。故障转移可为自发或非自发的。自发故障转移可由网络装置或网络的管理员故意引起。举例来说,网络管理员可例如使用命令行指令故意地导致发生故障转移。存在可执行此的各种情况。举一个实例,可在使活动虚拟机的软件离线使得可将其升级时执行自发故障转移。举另一实例,一旦注意到活动虚拟机上的性能降级或一旦注意到由活动计算域执行的软件出现故障,网络管理员就可导致发生故障转移。
非自发故障转移通常由于活动虚拟机中的一些关键故障而发生。例如这可在一些状况导致活动虚拟机被重启或复位时发生。举例来说,这可由于虚拟机内核的问题、由活动虚拟机执行的软件的关键故障等等而发生。非自发故障转移导致备用虚拟机自动变成活动虚拟机。
在图1中描绘的实例中,将VM-1 116展示为在活动模式中操作,且将VM-2 118展示为在备用模式中操作。活动-备用模型通过使网络装置能够支持各种高可用性功能性(例如平滑重启、不间断路由(NSR)等等)增强网络装置100的可用性。
在网络装置100的正常操作期间,在活动虚拟机与备用虚拟机之间可发生一些消息发送。举例来说,活动虚拟机可使用消息发送来将网络状态信息传递到备用虚拟机。网络状态信息可包括一旦发生故障转移或切换,就使备用虚拟机能够以非破坏性方式变成活动虚拟机的信息。各种不同方案可用于消息发送,包含(但不限于)基于以太网的消息发送、基于外围组件互连(PCI)的消息发送、基于共享存储器的消息发送等等。
硬件资源或装置108可包含(无限制)一或多个场可编程门阵列(FPGA)、专用集成电路(ASIC)、I/O装置等等。I/O装置可包含例如以太网装置、PCI高速(PCIe)装置及其它装置。在某些实施方案中,部分硬件资源108可在由网络装置100执行的多个虚拟机之间划分,或在一些例子中,可由虚拟机共享。硬件资源108中的一或多者可辅助活动虚拟机执行联网功能。举例来说,在某些实施方案中,一或多个FPGA可辅助活动虚拟机执行在活动模式中执行的所述组功能。
如先前指示,网络装置100可经配置以接收分组且转发分组以促进分组到其预期目的地的递送。分组可包含数据分组或信号或协议分组(例如,保活分组)。可使用一或多个端口107接收及/或转发分组。端口107表示网络装置100的I/O平面。端口107内的端口可取决于网络装置100是使用那个端口接收分组还是发射分组而被分类为输入端口或输出端口。网络装置100通过其接收分组的端口可称为输入端口。用于从网络装置100传送或转发分组的端口可称为输出端口。特定端口可同时用作输入端口及输出端口。端口可由链路或接口连接到邻接网络装置或网络。在一些实施方案中,网络装置100的多个端口可在逻辑上被分组到一或多个干线中。
端口107能够以不同速度(例如1千兆比特每秒(Gbps)、10Gbps、100Gbps或更高的速度)接收及/或发射不同类型的网络业务。可在网络装置100的不同实施方案中提供端口107的各种不同配置。举例来说,配置可包含72个10Gbps端口、60个40Gbps端口、36个100Gbps端口、24个25Gbps端口+10个48Gbps端口、12个40Gbps端口+10个48Gbps端口、12个50Gbps端口+10个48Gbps端口、6个100Gbps端口+10个48Gbps端口及各种其它组合。
在某些实施方案中,一旦经由输入端口接收数据分组,网络装置100就经配置以确定待用于从网络装置100发射数据分组的输出端口以促进分组到其预期目的地的传送。在网络装置100内,分组从输入端口转发到经确定输出端口,且接着使用输出端口从网络装置100发射或转发。
网络装置100的各种不同组件经配置以按合作方式执行用于确定如何从网络装置100转发分组的处理。在某些实施例中,分组处理器106可经配置以执行处理来确定如何从网络装置100转发分组。在某些实施例中,分组处理器106可经配置以执行分组分类、修改、转发及服务质量(QoS)功能。如先前指示,分组处理器106可经编程以基于由活动虚拟机维护的路由信息执行数据分组的转发。在某些实施例中,一旦接收分组,分组处理器106就经配置以基于从接收到的分组提取的信息(例如,从接收到的分组的标头提取的信息)确定待用于从网络装置100转发分组的网络装置100的输出端口,使得分组到其预期目的地的递送得到促进。接着,分组处理器106可致使分组在网络装置100内从输入端口转发到经确定输出端口。接着,分组可使用输出端口从网络装置100转发到分组的下一跳。
在某些例子中,分组处理器106可能不能确定如何转发接收到的分组。接着,分组处理器106可将分组转发到活动虚拟机,接着,活动虚拟机可确定如何转发分组。接着,活动虚拟机可对分组处理器106进行编程以用于转发那个分组。接着,分组可由分组处理器106转发。
在某些实施方案中,由各种第三方供应商提供的分组处理芯片或商业ASIC可用于图1中描绘的分组处理器106。举例来说,在一些实施例中,可使用由或其它供应商提供的以太网交换芯片。举例来说,在一些实施例中,Qumran ASIC可例如用于披萨盒实施方案中,或Jericho分组处理器芯片(BCM88670)可例如用于基于机箱的系统中,或由提供的其它ASIC可用作分组处理器106。在替代实施方案中,来自其它供应商的芯片可用作分组处理器106。
图2是又另一实例网络装置200的简化框图。图2中描绘的网络装置200通常称为基于机箱的系统(图1中描绘的网络装置100有时称为“披萨盒”系统)。网络装置200可经配置以接收及转发分组,其可为数据分组或信令或协议相关分组(例如,保活分组)。网络装置200包括包含多个插槽的机箱,其中卡或刀片或模块可被插入到每一插槽中。此模块化设计允许灵活配置,其中网络装置的各种插槽中的卡的不同组合用于支持不同网络拓扑、交换需求及性能要求。
在图2中描绘的实例中,网络装置200包括多个线卡(包含第一线卡202及第二线卡204)、两个管理卡/模块206、208及一或多个交换结构模块(SFM)210。提供使各种卡/模块能够与彼此通信的背板212。在某些实施例中,卡可为可热交换的,这意味着其可在网络装置200通电时被插入及/或移除。在某些实施方案中,网络装置200可为路由器或交换机,例如由加利福尼亚的圣何塞的博科通信系统公司提供的各种路由器及交换机。
图2中描绘的网络装置200仅是实例且不希望过度地限制权利要求书中所述的发明实施例的范围。所属领域的一般技术人员将认识许多变化、替代及修改。举例来说,在一些实施例中,网络装置200可具有比图2中展示的更多或更少的组件,可组合两个或两个以上组件,或可具有不同的组件配置或布置。
在图2中描绘的实例中,网络装置200包括两个冗余管理模块206、208。冗余使管理模块能够根据活动-备用模型操作,其中管理模块中的一者经配置以在备用模式中操作(称为备用管理模块),而另一者在活动模式中操作(称为活动管理模块)。活动管理模块可经配置以执行网络装置200的管理及控制功能且可表示网络装置200的管理平面。活动管理模块可经配置以执行用于执行管理功能的应用程序,例如维护路由表、对线卡编程(例如,将使线卡能够执行数据转发功能的信息下载到线卡)等等。在某些实施例中,管理模块及线卡两者用作对网络装置中的分组处理器编程及针对分组处理器作出编程决策的控制平面。在基于机箱的系统中,管理模块可经配置为线卡上的多个控制平面的协调器。
当发生故障转移或切换时,备用管理模块可变成活动管理模块且接管由处于活动模式中的管理模块执行的一组功能的执行。接着,先前在活动模式中操作的管理模块可变成备用管理模块。管理平面中的活动-备用模型增强网络装置200的可用性,从而允许网络装置支持各种高可用性功能性,例如平滑重启、不间断路由(NSR)等等。
在图2中描绘的实例中,将管理模块206展示为在活动模式中操作且将管理模块208展示为在备用模式中操作。管理模块206及208以通信方式经由背板212耦合到线卡及交换结构模块(SFM)210。每一管理模块可包括一或多个处理器,其可为单核或多核处理器,及相关联系统存储器。处理器可为通用微处理器,例如由 飞思卡尔半导体公司及类似公司提供的微处理器,其在存储于相关联存储器中的软件的控制下操作。
交换结构模块(SFM)210可经配置以促进网络装置200的管理模块206、208与线卡之间的通信。在网络装置200中存在一或多个SFM。每一SFM 210可包含一或多个结构元件(FE)218。结构元件向SFM提供将数据从到SFM的输入转发到SFM的输出的能力。SFM可促进及实现连接到背板212的任何两个模块/卡之间的通信。举例来说,如果将数据从网络装置200的一个线卡202传送到另一线卡204,那么可将数据从第一线卡发送到SFM 210,接着,SFM210导致数据使用背板212被传送到第二线卡。同样地,使用SFM 210促进网络装置200的管理模块206、208与线卡之间的通信。
在图2中描绘的实例中,网络装置200包括多个线卡,其包含线卡202及204。每一线卡可包括一组端口214、216,其可用于接收及转发分组。线卡的端口214、216能够以不同速度(例如1Gbps、10Gbps、100Gbps或更高的速度)接收及/或发射不同类型的网络业务。可在网络装置200中提供线卡端口214、216的各种不同配置。举例来说,配置可包含72个10Gbps端口、60个40Gbps端口、36个100Gbps端口、24个25Gbps端口+10个48Gbps端口、12个40Gbps端口+10个48Gbps端口、12个50Gbps端口+10个48Gbps端口、6个100Gbps端口+10个48Gbps端口及各种其它组合。
每一线卡可包含一或多个单核或多核处理器、系统存储器、分组处理器及一或多个硬件资源。在某些实施方案中,线卡上的组件可类似于图1中描绘的网络装置100的组件(由来自图1的参考符150统一表示且也在图2中的线卡202、204中展示的组件)那样配置。
分组可由网络装置200经由特定线卡上的端口接收。接收分组的端口可称为输入端口,且线卡可称为源/输入线卡。接着,输入线卡上的分组处理器可基于从接收到的分组提取的信息确定待用于从网络装置200转发接收到的分组的输出端口。输出端口可在同一输入线卡上或在不同线卡上。如果输出端口在同一线卡上,那么分组由输入线卡上的分组处理器从输入端口转发到输出端口,且接着使用输出端口从网络装置200转发。如果输出端口在不同线卡上,那么分组使用背板212从输入线卡转发到含有输出端口的线卡。接着,由输出线卡上的分组处理器使用输出端口从网络装置200转发分组。
在某些例子中,输入线卡上的分组处理器可能不能确定如何转发接收到的分组。接着,分组处理器可将分组转发到线卡上的活动虚拟机,接着,活动虚拟机确定如何转发分组。接着,活动虚拟机可对线卡上的分组处理器编程以用于转发那个分组。接着,分组可由那个分组处理器转发到输出端口(其可在输入线卡上或在某个其它线卡上),且接着使用经由输出端口从网络装置200转发。
在某些例子中,输入线卡上的活动虚拟机可能不能确定如何转发接收到的分组。接着,分组可转发到活动管理模块,接着,活动管理模块确定如何转发分组。接着,活动管理模块可将转发信息传送到线卡,接着,线卡可基于信息对其相应封包处理器进行编程。接着,封包可被转发到含有输出端口(其可在输入线卡上或在某个其它线卡上)的线卡,且接着使用经由输出端口从网络装置200转发。
为针对网络装置发送或接收分组,分组处理器可提供直接存储器存取(DMA)功能性。使用DMA,分组处理器可将分组转移到网络装置的物理存储器或从网络装置的物理存储器转移分组而无需来自网络装置处理器的协助帮助。
图3说明包含提供用于接收及发射分组的DMA功能性的分组处理器310的网络装置300的实例。网络装置300可包含客户机虚拟机320,其可运行网络操作系统。网络装置的操作环境还可包含支持客户机虚拟机320的管理程序350,包含向客户机虚拟机320提供对网络装置300的硬件资源的存取。网络装置300还可包含IOMMU,其在主机进程(例如客户机虚拟机320)与I/O装置(例如分组处理器310)之间提供地址转译。网络装置300还可包含物理存储器302。
一般来说,当客户机虚拟机320被起始时,网络装置300(例如,通过管理程序350或主机操作系统)可分配物理存储器302中的物理存储器区域,在此处称为VM物理存储器304。VM物理存储器区域304可为物理存储器302中被指派到客户机虚拟机320以供其排他使用的部分。VM物理存储器区域304可使用物理地址读取及写入。
客户机虚拟机320内执行的操作系统及应用程序通常使用虚拟地址。从在虚拟机内运行的操作系统及应用程序的角度来看,虚拟机是“虚拟的”的含义是虚拟机表现为与物理机不可区分。虚拟机因此具有与网络装置300的地址空间相异的地址空间,其通常称为虚拟地址空间。在虚拟地址空间内,在网路装置300中映射到物理资源的地址可称为客户机物理地址。
来自客户机虚拟机320的存储器读取及写入事务可为客户机物理地址364。这些事务可由可经配置以将事务传递到适当硬件资源的管理程序350接收。在说明的实例中,硬件资源包含物理存储器302。因为物理存储器302使用物理地址366进行寻址,所以网络装置300可包含存储器管理单元(在此处未说明)及/或IOMMU 352以从虚拟客户机物理地址364转译到物理地址366。
IOMMU是可经配置以执行各种地址转译的硬件及/或软件模块。举例来说,IOMMU352可经配置具有I/O虚拟地址空间,其也可称为地址映射或域354。域354可描述客户机虚拟机320可用的全部I/O地址空间。客户机虚拟机320可将域中的区域分配到特定I/O装置,包含分组处理器310。域354中的区域在物理存储器302中可具有对应区域。物理存储器302中的此区域可例如被指派到分组处理器310(或其它I/O装置)以满足分组处理器的存储器需求。域354中被指派到分组处理器310的区域可用于在由客户机虚拟机320使用的客户机物理地址364与物理存储器302中的物理地址366之间转译。
IOMMU 352可提供资源排他性及隔离。举例来说,域354可通常仅被指派到一个实体,例如客户机虚拟机320或主机操作系统。另外,域354可通常仅从一个地址空间转译到另一地址空间;因此,当域354被指派到客户机虚拟机320时,域354可仅从客户机虚拟机320的客户机物理地址364转译到例如物理存储器302中的物理地址366。以此方式,仅客户机虚拟机320能够使用分组处理器310。此排他性可通过分组处理器310增加I/O事务的效率。
如上所述,分组处理器310可支持用于发射及接收分组的DMA操作。举例来说,当客户机虚拟机320具有供发射的分组370时,客户机虚拟机320可将分组370写入到物理存储器302中,且接着请求分组处理器310发送所述分组。接着,客户机虚拟机320可在分组处理器310执行DMA操作以发射分组370时转向其它操作。
因为当客户机虚拟机320将分组370写入到物理存储器302时客户机虚拟机320使用客户机虚拟地址操作,所以写入事务将使用客户机物理地址364。一般来说,此事务由作为网络装置300中的处理器的部分或耦合到网络装置300中的处理器的存储器管理单元处置。存储器管理单元可提供可用于将分组370写入到物理存储器302中的物理地址366。更具体来说,分组370将被写入到VM物理存储器304中。一旦分组370被写入到物理存储器302中,客户机虚拟机320就可通知分组处理器310存在准备好发射的分组。举例来说,客户机虚拟机320可将寄存器写入到分组处理器310中,其中到寄存器的写入向分组处理器310指示存在准备好发送的分组。在一些实施方案中,客户机虚拟机320可将客户机物理地址写入到分组处理器310,其中分组370可发现于物理存储器302中。
在一些实施方案中,客户机虚拟机320可在通知分组处理器310分组370已准备好发射之前及/或在将分组370放置在物理存储器302之前提供在分组370在物理存储器302中的位置。举例来说,在一些实施方案中,客户机虚拟机320可将一或多个地址写入到分组处理器310,分组处理器310将所述一或多个地址理解为当客户机虚拟机320请求分组发射时在其处找到分组的位置。在此实例中,一旦从客户机虚拟机320接收此请求,分组处理器310就可使用这些预加载地址来从物理存储器302读取分组。
无论是经预先编程还是在请求发射分组370的情况下接收,给定到分组处理器310的地址将是客户机虚拟机320的虚拟地址空间内的客户机物理地址364。这是因为客户机虚拟机320内的进程仅知道虚拟地址空间。因此,分组处理器310可使用IOMMU将客户机物理地址362转译成物理地址366。接着,IOMMU可使用物理地址366从物理存储器302读取分组370。因为分组处理器310执行DMA事务来获得分组370,所以无需涉及网络装置300中的任何处理器。一旦分组处理器310已从物理存储器302读取了分组370,分组处理器310就可发射分组370。
举另一实例,当分组360由网络装置300接收时,分组处理器310可将分组360写入到物理存储器302中。分组360在其处被写入的地址也可由客户机虚拟机320编程到分组处理器310中。因此,此地址也将是客户机物理地址362,分组处理器310可使用IOMMU 352将其转译成物理地址366。接着,分组处理器310可使用此物理地址366将分组360写入到物理存储器302中。分组处理器310使用DMA操作执行此写入;因此,未使用网络装置300中的任何处理器。
一旦分组360处在物理存储器302中,分组处理器310就可通知客户机虚拟机320已接收到分组360。举例来说,分组处理器310可发送中断信号。一旦接收此通知,客户机虚拟机320就可使用客户机物理地址364从物理存储器302读取分组360。通常,客户机物理地址364使用耦合到处理器或并入到处理器中的存储器管理单元被转译成物理地址366。此物理地址366可用于从物理存储器302读取分组360。接着,分组360可被递送到客户机虚拟机320。
在网络装置的各种实施方案中,网络装置中的至少两个主机进程可同时发送及/或接收分组。举例来说,网络装置可包含管理网络装置的操作的虚拟机,包含管理分组的发射及接收。举另一实例,网络装置还可包含通常称为软件保活进程的主机进程。路由器及类似网络装置发送周期性“保活分组”来维持各种协议会话的稳定及状态。周期性保活分组使用由路由器提供的特定链路向装置指示链路可使用。当保活分组停止时,装置可假定链路已断开,且接着可终止使用那个链路的任何网络会话。
路由器可具有发出保活分组的专用硬件。硬件实施方案可为稳健的,因为专用硬件通常不受路由器的管理软件的状态的影响。然而,硬件实施方案可能不太灵活且不可扩展。举例来说,硬件实施方案可能不能针对不同数目个线卡或不同数目个端口被容易地重新配置。
软件保活进程可比硬件保活实施方案更灵活且可扩展。然而,软件保活进程可受网络装置的管理软件的状态的影响。举例来说,软件保活进程可在运行网络装置的网络操作系统的同一虚拟机中运行。如果虚拟机被停用-例如可在故障转移或切换事件期间发生-那么软件保活进程也将被停用。此可导致周期保活分组的发射中断。虽然新虚拟机(其中可起始新保活进程)可立即接管网络装置的操作,但直到此发生时的时间跨度可能足够长使得可能没有必要终止协议会话。
在各种实施方案中,为提供可如硬件实施方案那样一致且稳健的软件保活进程,软件保活进程可在运行网络操作系统的虚拟机外作为独立主机进程被启动。作为独立主机进程,如果虚拟机被停用,那么软件保活进程可不受影响,且可继续发送保活分组,同时新虚拟机接管网络装置的操作。
在各种实施方案中,虚拟机本身可在软件保活进程发送分组的同一时间发送及/或发射分组。虚拟机及软件保活进程两者可使用同一高性能分组处理器作为到网络的接口。
在各种实施方案中,高性能分组处理器可通过软件配置及/或硬件支持在主机进程之间共享。然而,并非全部这些方法都可用于所有例子中,且一些方法可影响分组处理器的性能能力。举例来说,使用软件配置,高性能分组处理器可被指派到主机进程,例如网络装置的主机操作系统。在此实例中,多个虚拟机可在主机操作系统的顶端运行。如果这些虚拟机中的两者或两者以上发送及/或接收分组,那么主机操作系统可提供导管,分组可通过其到达分组处理器。然而,延迟可由传递事务通过主机操作系统所导致。举例来说,可能需要将出站分组从指派到虚拟机的物理存储器移动到主机操作系统可存取的物理存储器。在此实例中,接着,分组可从主机操作系统的物理存储器发射。入站分组可发生从物理存储器中的一个位置到物理存储器中的另一位置的类似移动。在这些及其它实例中,软件配置可限制通过分组处理器的吞吐量。
组合式硬件与软件配置可实现通过分组处理器的更高吞吐量。图4说明包含分组处理器430的网络装置400的实例,分组处理器430包含硬件虚拟化,其可使分组处理器430能够在多个主机进程之间共享。在此实例中,分组处理器430是外围组件互连(PCI)类型装置,且包含单根输入/输出虚拟化(SR-IOV)。SR-IOV使分组处理器430能够同时由多个主机进程(包含虚拟机)使用。分组处理器430可具有物理功能434,例如(举例来说)可用于发送或接收分组的DMA引擎。分组处理器430还可具有多个虚拟功能432,其中每一虚拟功能432提供与物理功能434相同的能力。虽然物理功能434通常包含实施功能(例如DMA)所必需的硬件及/或软件,但虚拟功能432不包含由物理功能434提供的硬件及/或软件而代替地使用所述硬件及/或软件。PCI类型装置可具有针对给定物理功能的多个虚拟功能,例如(举例来说)32个或64个虚拟功能,其提供与物理功能相同的功能性。
虚拟功能432可被指派到各种主机进程,例如客户机虚拟机420。对客户机虚拟机420,虚拟功能432可表现为与物理功能434相同,且客户机虚拟机420可宛如其正使用物理功能434那样使用虚拟功能432。客户机虚拟机420可具有装置驱动程序,客户机虚拟机420可通过所述装置驱动程序存取虚拟功能432。
在此实例中,网络装置400具有发送及/或接收分组的多个主机进程,包含客户机虚拟机420及主机进程440。客户机虚拟机420可运行网络操作系统,且可发送及/或接收分组。主机进程440也可发送及/或接收分组。举例来说,主机进程440可为软件保活进程,且可周期性地将保活分组发送到网络。
如上文论述,客户机虚拟机420通常使用虚拟地址,其也可称为客户机物理地址,以存取物理存储器402。为将客户机物理地址转译成物理地址,分组处理器I/O虚拟地址空间412可经配置用于客户机虚拟机420。在各种实施方案中,I/O虚拟地址空间412提供地址转译以用于读取及写入来自客户机虚拟机420的引导到分组处理器的事务。可存在分配于物理存储器402中的对应客户机VM DMA存储器404。因此,I/O虚拟地址空间412提供客户机物理地址到客户机VM DMA存储器404中的物理地址的映射。在各种实施方案中,I/O虚拟地址空间412可被配置于存储器管理单元中,其可提供设施来自动执行事务。I/O虚拟地址空间412也可称为域。
对于通过分组处理器430发射及接收分组,客户机虚拟机420可分配I/O虚拟地址空间412的区域,这在说明的实例中称为客户机VM DMA映射414。客户机虚拟机420可进一步使客户机VM DMA映射414与虚拟功能装置驱动程序相关联。接着,指派到客户机虚拟机420的虚拟功能432可使用客户机VM DMA映射414执行DMA操作,例如(举例来说)分别读取及写入将被发射或接收的分组。
在此实例中,主机进程440也可使用分组处理器的DMA功能性发送及发射分组。在此实例中,为使主机进程440利用分组处理器430,主机DMA存储器406已经被分配于物理存储器402中。主机进程440的入站及出站分组可被放置于此主机DMA存储器406中,且分组处理器430可使用DMA操作从主机DMA存储器406读取或写入分组。
当主机进程440将发射分组时,主机进程440可将分组写入到物理存储器中的主机DMA存储器406。因为主机进程440在主机操作系统内执行,而非在虚拟机中执行,所以主机进程440将使用物理地址。因此,主机进程440可直接将分组写入到主机DMA存储器406中而无需进行地址转译。一旦分组处在主机DMA存储器406中,主机进程440就可请求分组处理器的物理功能434发射分组。在多数情况中,物理功能434可直接从主机操作系统存取。一旦主机进程440已请求物理功能434发射分组,主机进程440就可继续到其它操作,而分组处理器430从物理存储器402读取分组并发射分组。
当接收到针对客户机虚拟机420的分组时,分组处理器430可将分组写入到客户机VM DMA存储器404。分组处理器430可使用指派到客户机虚拟机420的虚拟功能432。虚拟功能432可使用分组处理器430应使用其将分组写入到客户机VM DMA存储器404中的客户机物理地址进行编程。另外,虚拟功能432可导致使用客户机VM DMA映射414转译来自分组处理器430的写入。一旦分组处在物理存储器402中,分组处理器430就可通知客户机虚拟机420分组已准备好。接着,客户机虚拟机420可使用客户机物理地址读取分组。用于此读取事务的地址可使用存储器管理单元转译成可用于读取物理存储器402的物理地址。
然而,并非所有的分组处理器都具有SR-IOV能力。在没有SR-IOV的情况下,网络装置可使用其它硬件及/或软件实现共享高性能分组处理器,而不会影响分组处理器的高性能能力。
I/O装置(例如分组处理器)可包含若干不同地址空间,其中共享分组处理器的两个或两个以上主机进程可存取若干不同地址空间中的每一者。这些地址空间可包含用于配置寄存器的地址空间及更通用存储器地址空间。配置地址空间可由主机进程存取以配置分组处理器、将中断发送到分组处理器、读取中断信息及/或提供用于执行DMA事务的信息(例如,从其读取分组或将分组写入到其的地址)等等。存储器地址空间可对应于分组处理器的存储器及/或对应于物理存储器502中指派到分组处理器的存储器。主机进程可使用存储器地址空间将分组写入到指派到分组处理器的物理存储器502及从物理存储器502读取分组。分组处理器可执行DMA操作以也读取及写入这些分组。在各种实施方案中,分组处理器的存储器地址空间可为了效率及/或便于存取起见被虚拟化。
对分组处理器的控制寄存器的共享存取可由存储器映射I/O(MMIO)机构提供。在MMIO系统中,处理器存储器(例如,RAM)及I/O装置的寄存器可被映射到一个地址空间中。网络装置的处理器可因此以与处理器可存取主存储器相同的方式存取分组处理器的控制寄存器。因为将共享分组处理器的主机进程都在主机系统的主机操作系统内操作,所以其两者可通过MMIO机构存取分组处理器的控制寄存器。
分组处理器的存储器地址空间的共享存取可通过利用IOMMU域共享能力及由多数分组处理器提供的多个DMA信道来完成。图5说明包含高性能分组处理器530的网络装置500的实例。实例网络装置500进一步包含客户机虚拟机520。在各种实施方案中,客户机虚拟机520可执行用于管理网络装置500的操作的网络操作系统。客户机虚拟机520可包含装置驱动程序,客户机虚拟机520可通过装置驱动程序使用分组处理器530。此实例的网络装置500还包含可发送及/或接收分组的主机进程540。举例来说,在一些实施方案中,主机进程540是周期性地发送保活分组的软件保活进程。
如上文论述,网络装置500可将分组处理器配置有可由客户机虚拟机520使用以进行与分组处理器530的I/O事务的分组处理器I/O虚拟地址空间512。I/O虚拟地址空间512可描述客户机虚拟机520可用的所有I/O地址。I/O虚拟地址空间512也可称为地址映射或域。通常,I/O虚拟地址空间512在客户机虚拟机520起始时经配置。举例来说,当客户机虚拟机520被启动时,网络装置500可指示存储器管理单元设置I/O虚拟地址空间512。在此实例中,指令可来自支持虚拟机520的管理程序或来自主机操作系统。
一旦客户机虚拟机520启动且正在运行,客户机虚拟机520就可分配I/O虚拟地址空间512中的区域,在此标示为客户机VM DMA映射514,客户机虚拟机520可将其指派到分组处理器530。网络装置500可分配物理存储器中的对应区域,在此标示为客户机VM DMA存储器504。客户机VM DMA存储器504可经指派到分组处理器530作为分组存储器可存取以用于DMA事务的区域。客户机VM DMA空间514可提供客户机虚拟机520将用于存取分组处理器530的虚拟地址与存取客户机VM DMA存储器504需要的物理地址之间的地址转译。客户机虚拟机520可类似地为其它I/O装置分配I/O虚拟地址空间512中的区域。在各种实施方案中,I/O虚拟地址空间512可被配置于IOMMU中,IOMMU可提供转译机构。
分组处理器530可具有多个DMA信道536、538,例如(举例来说)四个或八个信道。客户机虚拟机520通常仅需要一个DMA信道来发送及/或接收分组。因此,在各种实施方案中,分组处理器530的DMA信道538中的一者可经指派到客户机VM DMA映射514。当分组处理器530接收到针对客户机虚拟机520的分组时,分组处理器530可使用此第一DMA信道538将分组写入到物理存储器502中。如上文论述,客户机虚拟机520可能已使用在写入入站分组时使用的客户机物理地址配置分组处理器530。因此,通过经标示DMA信道538,分组处理器530的写入事务可使用客户机VM DMA映射514进行转译。一旦分组处在物理存储器502中,分组处理器530就可通知客户机虚拟机520分组已准备好。
为使主机进程540与客户机虚拟机520共享分组处理器530,主机进程540可使用分组处理器530的DMA信道536中的另一者。为此,为由主机操作系统进行的DMA操作保留I/O虚拟地址空间512的区域。在说明的实例中,此区域经标示为经保留DMA映射516。此经保留DMA映射516可经指派到第二DMA信道536。然而,I/O虚拟地址空间512作为一个整体依然被指派到客户机虚拟机520。通过为主机进程540保留I/O虚拟地址空间的区域,在分配客户机VMDMA映射514时仅防止客户机虚拟机520使用经保留DMA映射516。客户机虚拟机520可代替地使用I/O虚拟地址空间512的未经保留部分。
因为经保留DMA映射516在I/O虚拟地址空间512中,所以经保留DMA映射516也将客户机物理地址(如将由客户机虚拟机520使用)映射成物理地址。在此实例中,经保留DMA映射516经配置以将客户机物理地址映射到主机DMA映射506中,主机DMA映射506分配于物理存储器502中以供由主机操作系统使用。当主机进程540发射分组时,主机进程540可首先使用客户机物理地址将分组写入到主机DMA映射506中。客户机物理地址可使用经保留DMA映射516被映射成物理地址。一旦分组处在物理存储器502中,主机进程540就可通过其经指派DMA信道536通知分组处理器分组准备好发射。DMA信道536通过其到经保留DMA映射516的指派可获得分组的物理地址、读取分组且接着发射分组。
通过保留客户机虚拟机520的I/O虚拟地址空间512中的经保留DMA映射516,向主机进程540提供对分组处理器530的存取。客户机虚拟机520对分组处理器530的排他使用不会被干扰,这是因为客户机虚拟机520继续具有专用DMA信道538。另外,客户机虚拟机520继续能够直接使用分组处理器530,而非通过间接方式,例如通过主机操作系统。
在各种实施方案中,I/O虚拟地址空间512独立于使用I/O虚拟地址空间512的任何进程被保存。网络装置500经配置以维持I/O虚拟地址空间512使得即使使用I/O虚拟地址空间512的进程中的任何进程关闭,I/O虚拟地址空间512也不会被关闭。如果I/O虚拟地址空间512被移除,其它仍然活动的进程将不再能够存取分组处理器来发送及/或接收分组。因此,网络装置500可经配置以保持I/O虚拟地址空间512,无论使用I/O虚拟地址空间512的任何进程是否关闭。
举一实例,在各种环境中,客户机虚拟机520可通过挂起、关闭、离线或落于某个域中而被停用。通常,如果这发生,那么网络装置500将例如通过将I/O虚拟地址空间512从存储器管理单元删除而移除I/O虚拟地址空间512。如果这发生,那么经保留DMA映射516也将被删除,且主机进程540发送及接收分组的能力将被中断。因此,在各种实施方案中,网络装置500可经修改使得当客户机虚拟机520离线时,I/O虚拟空间512被维持。举例来说,支持客户机虚拟机520或主机操作系统的管理程序可经修改使得存储器管理单元不会在客户机虚拟机520关闭时被指示移除I/O虚拟地址空间512。然而,I/O虚拟地址空间512内的地址空间,例如客户机VM DMA映射514,仍可被释放。然而,经保留DMA映射516将被维持。
在各种实施方案中,网络装置500可启动新客户机虚拟机或故障转移到备用虚拟机,其中任一者可接管先前客户机虚拟机520的操作。通常,当新客户机虚拟机被起始时,网络装置500将为新客户机虚拟机设置新I/O虚拟地址空间以用于I/O事务。此新I/O虚拟地址空间将与由原始客户机虚拟机520使用的I/O虚拟地址空间512不同。当新I/O虚拟地址空间接着被指派到分组处理器530时,主机进程540可能至少暂时失去发射或接收分组的能力。
为避免主机进程发送或接收分组的能力的任何中断,代替针对新虚拟机创建新I/O虚拟地址空间,网络装置500可使新客户机虚拟机使用现存I/O虚拟地址空间512。举例来说,网络装置500可确保分组处理器530的装置节点存在于主机操作系统中,且当新客户机虚拟机启动时,新客户机虚拟机可找出装置节点。一旦找出装置节点,可使新客户机虚拟机找出现存I/O虚拟地址空间512,且可选定使用现存I/O虚拟地址空间512,而非创建新I/O虚拟地址空间。一旦新客户机虚拟机与现存I/O虚拟地址空间512相关联,新客户机虚拟机就可分配I/O虚拟地址空间512中的任何处(除了在保留DMA映射516中之外)的客户机虚拟机DMA空间。
图6说明高性能分组处理器可通过其在两个主机进程(例如虚拟机及软件保活进程)之间共享的过程600的实例。过程600可由网络装置(例如图5中说明的网络装置)执行。
在图6的步骤602处,过程600包含保留地址映射的一部分。在上文论述中,地址映射也称为I/O虚拟地址空间或域。在各种实施方案中,地址映射可经配置于存储器管理单元中,例如IOMMU。在一些实施方案中,当虚拟机第一次在网络装置上起始时配置地址映射,其中地址映射被指派到虚拟机。如果虚拟机被停用,那么网络装置可经配置以保存地址映射,这意味着地址映射被删除或破坏。
在各种实施方案中,当虚拟机在网络装置中在线时,地址映射可因此已经存在于存储器管理单元中。在步骤604处,过程600可因此包含将地址映射指派到虚拟机。在各种实施方案中,虚拟机可在地址映射中分配客户机部分,其中客户机部分被分配于地址映射中不包含保留部分的一部分。客户机部分可在此之后在虚拟机的虚拟地址与存储器中的物理地址之间提供地址转译。
在步骤606处,过程600包含将来自多个信道的第一信道指派到虚拟机,其中多个信道由分组处理器提供。使用第一信道,虚拟机可发送分组及/或从网络接收分组。具体来说,分组处理器可使用第一信道执行DMA操作以将接收到的分组放置在存储器中,且从存储器提取待发射的分组。
在步骤608处,过程600包含将地址映射的保留部分指派到主机进程。接着,主机进程可使用地址映射的保留部分将虚拟地址转译成存储器中的物理地址。
在步骤610处,过程600包含将来自多个信道的第二信道指派到主机进程。使用第二信道,接着,主机进程可将分组发送到网络。具体来说,主机进程可将出站分组放置在存储器中,且接着,请求分组处理器发射分组。接着,分组处理器可使用第二信道执行DMA操作来从存储器读取分组。接着,分组处理器可发射分组。
在某些实施例中,提供一种用于存储可由一或多个处理器执行的数据及代码(指令)的非暂时性机器可读或计算机可读媒体。非暂时性机器可读或计算机可读媒体的实例包含存储器磁盘驱动器、光盘(CD)、光学驱动器、可卸除媒体匣、存储器装置等等。非暂时性机器可读或计算机可读媒体可存储基本程序设计(例如,指令、代码、程序)及数据结构,其在由一或多个处理器执行时提供上文描述的功能性。在某些实施方案中,非暂时性机器可读或计算机可读媒体可包含于网络装置中,且由媒体存储的指令或代码可由网络装置的一或多个处理器执行,从而导致网络装置执行上文描述的某些功能。在一些其它实施方案中,非暂时性机器可读或计算机可读媒体可与网络装置分离,但可由网络装置可存取,使得由媒体存储的指令或代码可由网络装置的一或多个处理器执行,从而导致网络装置执行上文描述的某些功能。非暂时性计算机可读或机器可读媒体可体现于非易失性存储器或易失性存储器中。
上文论述的方法、系统及装置是实例。各种实施例可视情况省略、替代或添加各种程序或组件。例如,在替代配置中,描述的方法可以与描述的顺序不同的顺序执行,及/或可添加、省略及/或组合各种阶段。关于某些实施例描述的特征可组合于各种其它实施例中。实施例的不同方面及元件可以类似方式组合。技术演进,且因此,许多元件是不会将本发明的范围限制到那些具体实例的实例。
在本发明中给出具体细节以提供对实施例的透彻理解。然而,可在没有这些具体细节的情况下实践实施例。举例来说,已在没有不必要的细节的情况下展示了众所周知的电路、过程、算法、结构及技术以便避免使实施例模糊。此描述仅提供实例实施例,且不希望限制其它实施例的范围、适用性或配置。而是,实施例的前述描述将向所属领域的技术人员提供使得能够实施各种实施例的描述。可在元件的功能及布置方面做出各种变化。
尽管已描述了具体实施例,但各种修改、替代、替代构造及等效物也涵盖于描述的实施例的范围内。本文描述的实施例不限于某些具体数据处理环境内的操作,而是能够在多种数据处理环境内自由操作。另外,尽管已使用特定系列的事务及步骤描述了某些实施方案,但所属领域的技术人员应明白,这些事务及步骤并非意味着具限制性且不限于所描述系列的事务及步骤。尽管一些流程图将操作描述为循序过程,但许多操作可并行或同时执行。另外,操作的顺序可被重新布置。过程可具有图中不包含的额外步骤。
此外,虽然已使用硬件与软件的特定组合描述了某些实施例,但应认识到,也可提供硬件与软件的其它组合。某些实施例可仅实施于硬件中或仅实施于软件(例如,代码程序、固件、中间件、微代码等等)中或使用其组合实施。本文描述的各种过程可以任何组合实施于同一处理器或不同处理器上。
在将装置、系统、组件或模块描述为经配置以执行某些操作或功能的情况下,可例如通过设计电子电路来执行操作、通过对可编程电子电路(例如微处理器)执行编程以执行操作(例如通过执行计算机指令或代码)或对经编程以执行存储于非暂时性存储器媒体上的代码或指令的处理器或核心编程、或其任何组合来完成此配置。进程可使用包含(但不限于)用于进程间通信的常规技术的多种技术通信,且不同进程对可使用不同技术,或相同进程对可在不同时间使用不同技术。
因此,将说明书及图式认为是说明性的而非具限制意义。然而,显而易见,可在不背离权利要求中所陈述的更广精神及范围的情况下对其进行添加、替代、删除及其它修改及改变。因此,尽管已描述了具体实施例,但这些具体实施例不希望具限制性。各种修改及等效物在所附权利要求书的范围内。
Claims (39)
1.一种网络装置,其包括:
一或多个处理器;及
存储器,其与所述一或多个处理器耦合且可由所述一或多个处理器读取,其中所述存储器经配置以包含由主机进程使用以进行输入/输出I/O操作的物理存储器的第一部分,其中所述主机进程在所述网络装置上执行;
分组处理器,其包含由所述主机进程用于发射或接收分组的第一信道及由虚拟机用于发射或接收分组的第二信道,其中所述虚拟机在所述网络装置上执行;及
存储器管理单元,所述存储器管理单元经配置以使用与所述分组处理器相关联的地址映射;
其中所述一或多个处理器执行指令来执行包含以下操作的操作:
为所述主机进程保留所述地址映射的一部分,所述保留部分包含将第一组虚拟地址映射成物理存储器的所述第一部分中的一组地址的第一组映射,其中所述主机进程使用所述保留部分以使用所述第一信道发射或接收分组;及
为所述虚拟机分配所述地址映射的第二部分,其中所述第二部分分配于所述地址映射中不包含所述保留部分的一部分中,其中所述虚拟机使用所述第二部分以使用所述第二信道发射或接收分组;
其中软件保活进程在运行所述网络装置的网络操作系统的所述虚拟机外作为独立主机进程被启动。
2.根据权利要求1所述的网络装置,其中所述主机进程配置所述地址映射的所述保留部分,其中配置所述保留部分包含将来自物理存储器的所述第一部分的地址写入到所述保留部分中。
3.根据权利要求1所述的网络装置,其中管理程序配置所述地址映射的所述第二部分。
4.根据权利要求1所述的网络装置,其中所述主机进程经配置以使用虚拟地址获得物理地址,其中所述主机进程使用所述保留部分获得所述物理地址,其中所述物理地址是物理存储器的所述第一部分中的地址,且其中所述虚拟地址是在所述虚拟机的虚拟地址空间中。
5.根据权利要求1所述的网络装置,其中所述主机进程经配置以使用物理地址将分组写入到所述存储器。
6.根据权利要求1所述的网络装置,其中所述虚拟机经配置以使用虚拟地址从所述存储器读取分组。
7.根据权利要求1所述的网络装置,其中所述分组处理器经配置以:
在所述第二信道上接收发射分组的请求,其中所述请求包含虚拟地址;
使用所述保留部分获得所述虚拟地址的物理地址;
使用所述物理地址从所述存储器读取分组;及
发射所述分组。
8.根据权利要求1所述的网络装置,其中所述分组处理器经配置以:
在所述第一信道处接收分组;
使用所述地址映射的所述第二部分获得虚拟地址的物理地址,其中所述虚拟地址由所述虚拟机配置;及
使用所述物理地址将所述分组写入到所述存储器。
9.根据权利要求1所述的网络装置,其中所述一或多个处理器进一步执行指令以执行操作,所述操作包含:
确定所述虚拟机不再执行;
启动新虚拟机;
为所述新虚拟机分配所述地址映射的第三部分,其中所述第三部分分配于所述地址映射中不包含所述保留部分的一部分中,其中所述新虚拟机使用所述第三部分以使用所述第二信道发射或接收分组。
10.根据权利要求1所述的网络装置,其中所述保留部分以外的所述地址映射的一部分先前被指派到另一虚拟机,其中所述另一虚拟机不再执行。
11.根据权利要求1所述的网络装置,其中,当所述虚拟机关闭时,所述地址映射被保存。
12.根据权利要求1所述的网络装置,其中没有其它地址映射能够与所述分组处理器相关联。
13.根据权利要求1所述的网络装置,其中所述虚拟机包含网络操作系统。
14.一种方法,其包括:
为主机进程保留地址映射的一部分,所述保留部分包含将第一组虚拟地址映射成物理存储器的第一部分中的一组地址的第一组映射,其中所述主机进程使用所述保留部分以使用分组处理器的第一信道发射或接收分组,其中存储器管理单元经配置以包含所述地址映射,其中所述地址映射与所述分组处理器相关联,且其中所述主机进程在网络装置上执行;及
为虚拟机分配所述地址映射的第二部分,其中所述第二部分分配于所述地址映射中不包含所述保留部分的一部分中,其中所述虚拟机使用所述第二部分以使用所述分组处理器的第二信道发射或接收分组,且其中所述虚拟机在所述网络装置上执行;
其中软件保活进程在运行所述网络装置的网络操作系统的虚拟机外作为独立主机进程被启动。
15.根据权利要求14所述的方法,其中所述主机进程配置所述地址映射的所述保留部分,其中配置所述保留部分包含将来自物理存储器的所述第一部分的地址写入到所述保留部分中。
16.根据权利要求14所述的方法,其中管理程序配置所述地址映射的所述第二部分。
17.根据权利要求14所述的方法,其进一步包括:
使用虚拟地址获得物理地址,其中获得所述物理地址包含使用所述保留部分获得所述物理地址,其中所述物理地址对应于物理存储器的所述第一部分中的地址,且其中所述虚拟地址对应于所述虚拟机的虚拟地址空间。
18.根据权利要求14所述的方法,其进一步包括:
使用物理地址将分组写入到存储器,其中所述分组由所述主机进程写入到存储器。
19.根据权利要求14所述的方法,其进一步包括:
使用虚拟地址从存储器读取分组,其中所述分组由所述虚拟机读取。
20.根据权利要求14所述的方法,其进一步包括:
在所述第二信道上接收发射分组的请求,其中所述请求包含虚拟地址;
使用所述保留部分获得所述虚拟地址的物理地址;
使用所述物理地址从所述存储器读取分组;及
发射所述分组。
21.根据权利要求14所述的方法,其进一步包括:
在所述第一信道处接收分组;
使用所述地址映射获得虚拟地址的物理地址,其中所述虚拟地址由所述虚拟机配置;及
使用所述物理地址将所述分组写入到所述存储器。
22.根据权利要求14所述的方法,其进一步包括:
确定所述虚拟机不再执行;
起始新虚拟机;
为所述新虚拟机分配所述地址映射的第三部分,其中所述第三部分分配于所述地址映射中不包含所述保留部分的一部分中,其中所述新虚拟机使用所述第三部分以使用所述第二信道发射或接收分组。
23.根据权利要求14所述的方法,其中所述保留部分以外的所述地址映射的一部分先前被指派到另一虚拟机。
24.根据权利要求14所述的方法,其中,当所述虚拟机关闭时,所述地址映射被保存。
25.根据权利要求14所述的方法,其中没有其它地址映射能够与所述分组处理器相关联。
26.根据权利要求14所述的方法,其中所述虚拟机包含网络操作系统。
27.一种非暂时性计算机可读媒体,其包含当由一或多个处理器执行时导致所述一或多个处理器执行包含以下操作的操作的指令:
为主机进程保留地址映射的一部分,所述保留部分包含将第一组虚拟地址映射成物理存储器的第一部分中的一组地址的第一组映射,其中所述主机进程使用所述保留部分以使用分组处理器的第一信道发射或接收分组,其中存储器管理单元经配置以包含所述地址映射,其中所述地址映射与所述分组处理器相关联,且其中所述主机进程在网络装置上执行;及
为虚拟机分配所述地址映射的第二部分,其中所述第二部分分配于所述地址映射中不包含所述保留部分的一部分中,其中所述虚拟机使用所述第二部分以使用所述分组处理器的第二信道发射或接收分组,且其中所述虚拟机在所述网络装置上执行;
其中软件保活进程在运行所述网络装置的网络操作系统的虚拟机外作为独立主机进程被启动。
28.根据权利要求27所述的非暂时性计算机可读媒体,其中所述主机进程配置所述地址映射的所述保留部分,其中配置所述保留部分包含将来自物理存储器的所述第一部分的地址写入到所述保留部分中。
29.根据权利要求27所述的非暂时性计算机可读媒体,其中管理程序配置所述地址映射的所述第二部分。
30.根据权利要求27所述的非暂时性计算机可读媒体,其进一步包括当由一或多个处理器执行时导致所述一或多个处理器执行包含以下操作的操作的指令:
使用虚拟地址获得物理地址,其中获得所述物理地址包含使用所述保留部分获得所述物理地址,其中所述物理地址对应于物理存储器的所述第一部分中的地址,且其中所述虚拟地址对应于所述虚拟机的虚拟地址空间。
31.根据权利要求27所述的非暂时性计算机可读媒体,其进一步包括当由一或多个处理器执行时导致所述一或多个处理器执行包含以下操作的操作的指令:
使用物理地址将分组写入到存储器,其中所述分组由所述主机进程写入到存储器。
32.根据权利要求27所述的非暂时性计算机可读媒体,其进一步包括当由一或多个处理器执行时导致所述一或多个处理器执行包含以下操作的操作的指令:
使用虚拟地址从存储器读取分组,其中所述分组由所述虚拟机读取。
33.根据权利要求27所述的非暂时性计算机可读媒体,其进一步包括当由一或多个处理器执行时导致所述一或多个处理器执行包含以下操作的操作的指令:
在所述第二信道上接收发射分组的请求,其中所述请求包含虚拟地址;
使用所述保留部分获得所述虚拟地址的物理地址;
使用所述物理地址从所述存储器读取分组;及
发射所述分组。
34.根据权利要求27所述的非暂时性计算机可读媒体,其进一步包括当由一或多个处理器执行时导致所述一或多个处理器执行包含以下操作的操作的指令:
在所述第一信道处接收分组;
使用所述地址映射获得虚拟地址的物理地址,其中所述虚拟地址由所述虚拟机配置;及
使用所述物理地址将所述分组写入到所述存储器。
35.根据权利要求27所述的非暂时性计算机可读媒体,其进一步包括当由一或多个处理器执行时导致所述一或多个处理器执行包含以下操作的操作的指令:
确定所述虚拟机不再执行;
起始新虚拟机;
为所述新虚拟机分配所述地址映射的第三部分,其中所述第三部分分配于所述地址映射中不包含所述保留部分的一部分中,其中所述新虚拟机使用所述第三部分以使用所述第二信道发射或接收分组。
36.根据权利要求27所述的非暂时性计算机可读媒体,其中所述保留部分以外的所述地址映射的一部分先前被指派到另一虚拟机。
37.根据权利要求27所述的非暂时性计算机可读媒体,其中,当所述虚拟机关闭时,所述地址映射被保存。
38.根据权利要求27所述的非暂时性计算机可读媒体,其中没有其它地址映射能够与所述分组处理器相关联。
39.根据权利要求27所述的非暂时性计算机可读媒体,其中所述虚拟机包含网络操作系统。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662343728P | 2016-05-31 | 2016-05-31 | |
US201662343811P | 2016-05-31 | 2016-05-31 | |
US62/343,728 | 2016-05-31 | ||
US62/343,811 | 2016-05-31 | ||
PCT/US2017/028965 WO2017209856A1 (en) | 2016-05-31 | 2017-04-21 | Multichannel input/output virtualization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139982A CN108139982A (zh) | 2018-06-08 |
CN108139982B true CN108139982B (zh) | 2022-04-08 |
Family
ID=60478777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780003494.0A Active CN108139982B (zh) | 2016-05-31 | 2017-04-21 | 多信道输入/输出虚拟化 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10419344B2 (zh) |
EP (1) | EP3338194B1 (zh) |
CN (1) | CN108139982B (zh) |
WO (1) | WO2017209856A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3338194B1 (en) | 2016-05-31 | 2022-12-07 | Avago Technologies International Sales Pte. Limited | Multichannel input/output virtualization |
US11469953B2 (en) | 2017-09-27 | 2022-10-11 | Intel Corporation | Interworking of legacy appliances in virtualized networks |
CN116260776A (zh) * | 2017-10-24 | 2023-06-13 | 英特尔公司 | 硬件辅助的虚拟交换机 |
WO2019124259A1 (ja) * | 2017-12-20 | 2019-06-27 | 日本電気株式会社 | 構成管理装置、構成管理システム、構成管理方法、および、構成管理プログラム |
CN110402568B (zh) | 2018-02-24 | 2020-10-09 | 华为技术有限公司 | 一种通信的方法及装置 |
US10742569B2 (en) | 2018-11-12 | 2020-08-11 | Cisco Technology, Inc. | Efficient network link status handling |
US20200387326A1 (en) * | 2019-06-10 | 2020-12-10 | Advanced Micro Devices, Inc. | Guest Operating System Buffer and Log Accesses by an Input-Output Memory Management Unit |
US20210055882A1 (en) * | 2019-08-22 | 2021-02-25 | Micron Technology, Inc. | Hierarchical memory apparatus |
CN110891031B (zh) * | 2019-11-29 | 2021-01-01 | 新华三半导体技术有限公司 | 同步信息并行写入方法及网络设备 |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6732220B2 (en) * | 1999-02-17 | 2004-05-04 | Elbrus International | Method for emulating hardware features of a foreign architecture in a host operating system environment |
US6651132B1 (en) | 2000-07-17 | 2003-11-18 | Microsoft Corporation | System and method for emulating the operation of a translation look-aside buffer |
US8060683B2 (en) | 2004-12-17 | 2011-11-15 | International Business Machines Corporation | System, method and program to preserve a cache of a virtual machine |
US7334076B2 (en) | 2005-03-08 | 2008-02-19 | Microsoft Corporation | Method and system for a guest physical address virtualization in a virtual machine environment |
WO2007082097A2 (en) * | 2006-01-12 | 2007-07-19 | Broadcom Israel R & D | Method and system for protocol offload and direct i/o with i/o sharing in a virtualized network environment |
US7653803B2 (en) * | 2006-01-17 | 2010-01-26 | Globalfoundries Inc. | Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU) |
US7739422B2 (en) | 2006-03-21 | 2010-06-15 | International Business Machines Corporation | Method to improve system DMA mapping while substantially reducing memory fragmentation |
US7636831B1 (en) | 2006-03-31 | 2009-12-22 | Vmware, Inc. | Optimization of reverse mappings for immutable guest physical pages of virtual memories in a virtualized computer system |
US7613847B2 (en) | 2006-05-16 | 2009-11-03 | Hewlett-Packard Development Company, L.P. | Partially virtualizing an I/O device for use by virtual machines |
US7434025B2 (en) | 2006-07-18 | 2008-10-07 | Microsoft Corporation | Leverage guest logical to physical translation for host-side memory access |
US20080186990A1 (en) * | 2007-02-02 | 2008-08-07 | International Business Machines Corporation | Translation module, method and computer program product for providing multiple infiniband address support for vm migration using infiniband address translation |
US8990799B1 (en) | 2008-01-30 | 2015-03-24 | Emc Corporation | Direct memory access through virtual switch in device driver |
US20100161929A1 (en) | 2008-12-18 | 2010-06-24 | Lsi Corporation | Flexible Memory Appliance and Methods for Using Such |
US8103809B1 (en) | 2009-01-16 | 2012-01-24 | F5 Networks, Inc. | Network devices with multiple direct memory access channels and methods thereof |
US9535849B2 (en) * | 2009-07-24 | 2017-01-03 | Advanced Micro Devices, Inc. | IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect |
WO2011060366A2 (en) | 2009-11-13 | 2011-05-19 | Anderson Richard S | Distributed symmetric multiprocessing computing architecture |
US8452921B1 (en) * | 2010-03-17 | 2013-05-28 | Network Appliance, Inc. | Provisioning a pass-through disk in a virtualized computing environment |
US8839239B2 (en) | 2010-06-15 | 2014-09-16 | Microsoft Corporation | Protection of virtual machines executing on a host device |
US8392628B2 (en) * | 2010-07-16 | 2013-03-05 | Hewlett-Packard Development Company, L.P. | Sharing memory spaces for access by hardware and software in a virtual machine environment |
EP2601176A1 (en) | 2010-08-06 | 2013-06-12 | Sandoz AG | Novel salts of saxagrliptin with organic di-acids |
US20120331465A1 (en) | 2011-03-02 | 2012-12-27 | Tadao Tanikawa | Virtual machine system, virtual machine control method, virtual machine control application, and semiconductor integrated circuit |
US8533796B1 (en) | 2011-03-16 | 2013-09-10 | Google Inc. | Providing application programs with access to secured resources |
US9792136B2 (en) | 2011-04-28 | 2017-10-17 | Microsoft Technology Licensing, Llc | Hardware assisted inter hypervisor partition data transfers |
US8856518B2 (en) * | 2011-09-07 | 2014-10-07 | Microsoft Corporation | Secure and efficient offloading of network policies to network interface cards |
US8806266B1 (en) | 2011-09-28 | 2014-08-12 | Juniper Networks, Inc. | High availability using full memory replication between virtual machine instances on a network device |
US9146763B1 (en) | 2012-03-28 | 2015-09-29 | Google Inc. | Measuring virtual machine metrics |
US8949830B2 (en) * | 2012-03-29 | 2015-02-03 | International Business Machines Corporation | Emulating a data center network on a single physical host with support for virtual machine mobility |
US9064216B2 (en) * | 2012-06-06 | 2015-06-23 | Juniper Networks, Inc. | Identifying likely faulty components in a distributed system |
US20140007097A1 (en) * | 2012-06-29 | 2014-01-02 | Brocade Communications Systems, Inc. | Dynamic resource allocation for virtual machines |
US9081603B2 (en) | 2012-07-09 | 2015-07-14 | Cisco Technology, Inc. | Packet forwarding optimization with virtual machine mobility by comparing device identifiers to determine VM movement |
US8745276B2 (en) * | 2012-09-27 | 2014-06-03 | Mellanox Technologies Ltd. | Use of free pages in handling of page faults |
US9069701B2 (en) | 2012-12-11 | 2015-06-30 | International Business Machines Corporation | Virtual machine failover |
US9195585B2 (en) | 2013-01-23 | 2015-11-24 | Vmware, Inc. | Techniques for allocating and surfacing host-side storage capacity to virtual machines |
KR101821633B1 (ko) | 2013-03-14 | 2018-03-08 | 삼성전자주식회사 | 메모리 시스템 |
US9417899B2 (en) | 2013-03-14 | 2016-08-16 | International Business Machines Corporation | Memory page de-duplication in a computer system that includes a plurality of virtual machines |
US9460024B2 (en) * | 2013-03-15 | 2016-10-04 | Vmware, Inc. | Latency reduction for direct memory access operations involving address translation |
US9176889B1 (en) | 2013-03-15 | 2015-11-03 | Google Inc. | Virtual machine memory management |
US9256559B2 (en) * | 2013-08-19 | 2016-02-09 | International Business Machines Corporation | Function transfer using virtualized mapping |
CN103890728B (zh) | 2013-12-31 | 2015-12-30 | 华为技术有限公司 | 虚拟机热迁移的方法和服务器 |
US9621568B2 (en) * | 2014-02-11 | 2017-04-11 | Varmour Networks, Inc. | Systems and methods for distributed threat detection in a computer network |
WO2015125135A1 (en) * | 2014-02-19 | 2015-08-27 | Technion Research & Development Foundation Limited | Memory swapper for virtualized environments |
US20150261952A1 (en) | 2014-03-13 | 2015-09-17 | Unisys Corporation | Service partition virtualization system and method having a secure platform |
US9548890B2 (en) * | 2014-03-17 | 2017-01-17 | Cisco Technology, Inc. | Flexible remote direct memory access resource configuration in a network environment |
US20160094668A1 (en) * | 2014-09-29 | 2016-03-31 | Alcatel-Lucent Usa Inc. | Method and apparatus for distributed customized data plane processing in a data center |
CN105518741B (zh) | 2014-12-23 | 2019-04-09 | 英特尔公司 | 用于管理虚拟图形处理器单元的装置和方法 |
US10591980B2 (en) * | 2015-01-02 | 2020-03-17 | Mentor Graphics Corporation | Power management with hardware virtualization |
US9886376B2 (en) * | 2015-07-29 | 2018-02-06 | Red Hat Israel, Ltd. | Host virtual address reservation for guest memory hot-plugging |
US9910693B2 (en) * | 2015-11-25 | 2018-03-06 | Red Hat Israel, Ltd. | Virtual machine to host device bridging |
EP3338194B1 (en) | 2016-05-31 | 2022-12-07 | Avago Technologies International Sales Pte. Limited | Multichannel input/output virtualization |
US20180181421A1 (en) * | 2016-12-27 | 2018-06-28 | Intel Corporation | Transferring packets between virtual machines via a direct memory access device |
-
2017
- 2017-04-21 EP EP17807160.1A patent/EP3338194B1/en active Active
- 2017-04-21 WO PCT/US2017/028965 patent/WO2017209856A1/en active Application Filing
- 2017-04-21 CN CN201780003494.0A patent/CN108139982B/zh active Active
-
2018
- 2018-03-28 US US15/939,157 patent/US10419344B2/en active Active
-
2019
- 2019-08-13 US US16/538,830 patent/US10797999B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3338194A1 (en) | 2018-06-27 |
EP3338194B1 (en) | 2022-12-07 |
US20190363985A1 (en) | 2019-11-28 |
US20180219777A1 (en) | 2018-08-02 |
US10419344B2 (en) | 2019-09-17 |
US10797999B2 (en) | 2020-10-06 |
WO2017209856A1 (en) | 2017-12-07 |
CN108139982A (zh) | 2018-06-08 |
EP3338194A4 (en) | 2019-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108139982B (zh) | 多信道输入/输出虚拟化 | |
US8346997B2 (en) | Use of peripheral component interconnect input/output virtualization devices to create redundant configurations | |
US7571273B2 (en) | Bus/device/function translation within and routing of communications packets in a PCI switched-fabric in a multi-host environment utilizing multiple root switches | |
US10671423B2 (en) | Hot-plug hardware and software implementation | |
US7430630B2 (en) | Routing mechanism in PCI multi-host topologies using destination ID field | |
US7380046B2 (en) | Method, apparatus, and computer program product for routing packets utilizing a unique identifier, included within a standard address, that identifies the destination host computer system | |
US10333865B2 (en) | Transformation of peripheral component interconnect express compliant virtual devices in a network environment | |
US7363404B2 (en) | Creation and management of destination ID routing structures in multi-host PCI topologies | |
CN107995129B (zh) | 一种nfv报文转发方法和装置 | |
US7484029B2 (en) | Method, apparatus, and computer usable program code for migrating virtual adapters from source physical adapters to destination physical adapters | |
US8078764B2 (en) | Method for switching I/O path in a computer system having an I/O switch | |
US8225005B2 (en) | Use of peripheral component interconnect input/output virtualization devices to create high-speed, low-latency interconnect | |
US7594060B2 (en) | Data buffer allocation in a non-blocking data services platform using input/output switching fabric | |
US20150067229A1 (en) | Numa node peripheral switch | |
US20080137676A1 (en) | Bus/device/function translation within and routing of communications packets in a pci switched-fabric in a multi-host environment environment utilizing a root switch | |
US10754774B2 (en) | Buffer manager | |
US10599600B2 (en) | Peripheral Component Interconnect Express (PCIe) switching for multi-host computing system deployments | |
US10776142B1 (en) | Reconfiguring programmable hardware when a virtual machine is active | |
JP2018524697A (ja) | ネットワークラインカード(lc)のホストオペレーティングシステム(os)への統合 |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20181226 Address after: Singapore Singapore Applicant after: Annwa high tech Limited by Share Ltd Address before: American California Applicant before: Brocade Communications Systems, Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |