CN108139924B - 热插拔硬件及软件实施方案 - Google Patents
热插拔硬件及软件实施方案 Download PDFInfo
- Publication number
- CN108139924B CN108139924B CN201780003436.8A CN201780003436A CN108139924B CN 108139924 B CN108139924 B CN 108139924B CN 201780003436 A CN201780003436 A CN 201780003436A CN 108139924 B CN108139924 B CN 108139924B
- Authority
- CN
- China
- Prior art keywords
- component
- network device
- module
- virtual machine
- bridge
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- 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/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Hardware Redundancy (AREA)
Abstract
一种网络装置可包含各种卡及模块,例如管理模块、线卡及交换结构模块。在各种实施方案中,这些组件可为“热插拔式的”,意味着所述组件可在所述网络装置通电时被插入到所述网络装置中及从所述网络装置移除。在各种实施方案中,所述网络装置中的硬件可识别何时组件已被添加。所述硬件可通知虚拟机,接着所述虚拟机可通知主机操作系统。所述主机操作系统可添加所述组件,且接着通知所述虚拟机也添加所述组件。一旦所述虚拟机已添加所述组件,所述组件就变得可供在所述虚拟机上执行的进程使用。
Description
相关申请案的交叉参考
本申请案主张2016年5月31日申请的第62/343,733号临时申请案及2016年5月31日申请的第62/343,812号临时申请案的权益及优先权。第62/343,733及62/343,812号申请案的全部内容以全文引用方式且出于所有目的并入本文中。
发明内容
本发明大体上涉及联网技术,且更特定来说,涉及实现将模块及卡热交换或热插拔到网络装置的机箱中的系统及方法。
网络装置可包含各种卡及模块,例如管理模块、线卡及交换结构模块。在各种实施方案中,这些模块及卡可为“热插拔式的”或“热交换式的”,意味着所述模块及卡可在所述网络装置通电时被插入到所述网络装置中及从所述网络装置移除。在缺乏对热插拔的硬件及/或软件支持的情况下,网络装置将需要被断电以添加或移除模块或卡,这可导致非所要的网络装置停机时间。
针对支持热插拔的网络装置提供系统、方法及计算机程序产品。在各种实施方案中,网络装置可经配置以检测某一组件存在于网络装置中,其中将所述组件确定为未知的。组件可为物理组件。可在网络装置的操作期间检测组件。网络装置可进一步经配置以确定关于组件的信息。网络装置可进一步经配置以将组件添加到主机操作系统。添加组件可包含将关于组件的信息提供到主机操作系统。网络装置可进一步经配置以将组件添加到虚拟机。添加组件可包含将关于组件的信息提供到虚拟机。当组件被添加到虚拟机时,组件可由在虚拟机中执行的一或多个进程存取。
在各种实施方案中,虚拟机可经配置以通知主机操作系统添加组件。在各种实施方案中,主机操作系统可经配置以启动将组件添加到虚拟机。主机操作系统可与网络装置上执行的管理程序通信,且管理程序可将组件添加到虚拟机。
在各种实施方案中,网络装置可经配置以执行仿真桥模块。仿真桥模块可对应于虚拟机中的虚拟桥。将组件添加到虚拟机可包含将组件连接到虚拟桥。
在各种实施方案中,网络装置可包含物理桥。物理桥可将网络装置连接到组件。在这些实施方案中,仿真桥模块仿效物理桥。在各种实施方案中,仿真桥模块仿效与组件相关联的物理桥。在各种实施方案中,网络装置可经配置以执行仿真器进程,其中仿真桥模块由仿真器进程执行。
在各种实施方案中,网络装置可经配置以执行热插拔驱动程序。热插拔驱动程序可在主机操作系统中执行。
在各种实施方案中,网络装置可包含系统模块。系统模块可为经配置以检测组件的物理装置。在一些实施方案中,当系统模块检测到组件时,系统模块通知虚拟机。在一些实施方案中,虚拟机经配置以作为透传装置存取系统模块。
在各种实施方案中,检测组件包含确定组件被添加到网络装置。在各种实施方案中,检测组件包含针对未知组件扫描网络装置。
在各种实施方案中,网络装置可经配置以检测组件已经从网络装置移除。组件可在网络装置操作期间被检测为被移除。网络装置可进一步经配置以从主机操作系统移除组件。网络装置可进一步经配置以从虚拟机移除组件。
在各种实施方案中,从虚拟机移除组件包含将组件与仿真桥模块断开,其中仿真桥模块对应于虚拟机中的虚拟桥。
在各种实施方案中,组件是交换结构模块的组件。交换结构模块促进网络装置的管理模块与网络装置的线卡之间的通信。
在各种实施方案中,将组件添加到主机操作系统包含使用主机操作系统的热插拔功能。
在各种实施方案中,将组件添加到虚拟机包含使用虚拟机中的热插拔功能。
在各种实施方案中,关于组件的信息包含插槽标识符,其中插槽标识符识别与组件相关联的物理插槽。
附图说明
图1是根据某些实施例的可并入本文揭示的教示的网络装置(也称为“主机系统”)的简化框图。
图2是又另一实例网络装置的简化框图。
图3说明可被热插拔到网络装置中或从网络装置热插拔出的网络装置的组件的实例。
图4说明包含桥的交换结构模块的实例,桥的端口可经配置为非透明的。
图5A到5B说明管理模块的实例及管理模块的软件配置。
图6说明可支持多个组件的热插拔的管理模块的配置的实例。
图7说明用于将组件热插拔到网络装置中及在新组件与管理模块之间形成连接的进程的实例。
图8说明用于热插拔在启动时存在于网络装置中的组件的进程的实例。
图9说明当组件在热插拔操作中从网络装置移除时可执行的进程的实例。
图10说明当管理模块上执行的虚拟机关闭时可执行的进程的实例。
图11说明热插拔驱动程序可使用其来表示网络装置中的硬件的数据结构的实例。
图12说明可包含于仿真桥模块中的供应商特定能力寄存器的实例描述。
图13说明用于插槽识别的能力寄存器的实例。
具体实施方式
在以下描述中,出于解释目的,陈述具体细节以便提供对某些发明实施例的透彻理解。然而,应明白,可在没有这些具体细节的情况下实践各种实施例。图式及描述不希望具限制性。本文使用用语“示范性”意味着“用作实例、例子或说明”。本文描述为“示范性”的任何实施例或设计不一定解释为比其它实施例或设计优选或有利。
本发明大体上涉及联网技术,且更特定来说,涉及使模块及卡能够热交换或热插拔到网络装置的机箱中的系统及方法。
网络装置可包含各种卡及模块,例如管理模块、线卡及交换结构模块等。在各种实施方案中,这些模块及卡可为“热插拔式的”或“热交换式的”。热插拔或热交换组件意味着在网络装置通电时且可能在网络装置处于活动操作中时以物理方式插入网络装置或以物理方式从网络装置移除。在缺乏对热插拔的硬件及/或软件支持的情况下,在可添加或移除组件之前需要使网络装置断电,这可导致非所要的网络装置停机时间。替代地或另外,当组件是热插拔式的时,人类网络管理员可能必须重新配置网络装置来辨别新组件或使得网络装置获知组件已经被移除。
存在各种热插拔机制。举例来说,外围组件互连高速(PCIe)规范规定将PCIe可兼容组件热插拔到PCIe总线中。虽然用于使用基于PCIe的热插拔的硬件可为简单的,但软件支持可为复杂的。为克服这些复杂性及也为实现其它类型装置(例如,通用串行总线(USB)、火线及其它类型装置)的热插拔,一些操作系统包含对热插拔的内置支持。举例来说,各种版本的及Linux操作系统可自动将热插拔式装置添加到操作系统。
在一些实施方案中,网络装置可包含虚拟机,其中虚拟机运行网络操作系统。网络操作系统可管理网络装置的功能性,包含分组的发射、接收及/或路由。使用虚拟机运行网络操作系统可使网络装置更灵活及稳健。举例来说,如果虚拟机崩溃,那么可很快启动另一虚拟机,且网络装置的操作可以可能的仅少量的停机时间恢复。如果网络操作系统作为网络装置的主机操作系统本机运行,且网络操作系统崩溃,那么将必须重启网络装置,从而导致更长停机时间及分组流的中断。
网络操作系统可为基于Linux或或基于某种其它操作系统,且因此可支持热插拔。然而,当网络操作系统在虚拟机中运行时,热插拔能力可能受到限制。举例来说,当启动虚拟机时,通常虚拟机经配置具有在虚拟机内可用的全部虚拟硬件,包含可使用热插拔机制添加或移除的任何装置。在此实例中,所有可热插拔组件必须被预先指定,且网络装置将不能热插拔在开启虚拟机时未知的组件。
在虚拟机中具有网络操作系统的另一困难是需要将热插拔式组件添加到本地主机操作系统及虚拟机两者。即,在管理底层硬件的主机操作系统获知组件之前组件不能被热插拔到虚拟机。一方面,虽然主机操作系统可支持热插拔,但不存在用于将此信息传送到虚拟机的机构。另一方面,假定可使虚拟机操作系统热插拔组件,那么不存在供虚拟机接着通知主机操作系统也热插拔所述组件的机构。在这些及其它情况中,人类操作者将必须手动配置主机操作系统或虚拟机或主机操作系统及虚拟机两者。
在各种实施方案中,网络装置可包含实现组件的热插拔的硬件及软件。在这些实施方案中,网络装置可在添加或移除组件时自动配置虚拟机及/或主机操作系统。网络装置的操作者除了插入组件或从网络装置的机箱移除组件之外无需做任何事情。另外,网络装置无需预先获知组件。
在各种实施方案中,网络装置的硬件可包含可检测组件何时已经被热插拔的集成电路装置或集成电路装置的组合。此装置(本文称为系统模块)可使用透传机制被提供到虚拟机。因此,当发生热插拔且系统模块生成中断时,可在虚拟机中接收所述中断。网络装置与热插拔式组件之间的连接可使用用于链接通常称为桥的总线的集成电路装置进一步完成。
在各种实施方案中,网络装置的软件可包含帮助支持热插拔的若干不同组件。这些软件组件可包含用于系统模块的可指示虚拟机添加或移除热插拔式组件的装置驱动程序。网络装置还可经配置具有仿真桥,其可对应于网络装置中的物理桥且对虚拟机也可用。使用仿真桥,虚拟机可热插拔物理组件。为起到辅助作用,网络装置还可包含热插拔驱动程序。热插拔驱动程序可管理将组件热插拔到主机操作系统中,使得将组件理解为网络装置硬件的一部分。热插拔驱动程序可进一步将关于组件的任何所需信息提供到虚拟机,使得可在虚拟机中完成组件的热插拔。
在各种实施方案中,网络装置可包含辅助网络装置的稳健操作的其它机构。举例来说,网络装置可包含复制的管理模块:活动的且控制网络装置的管理模块,及备用的且准备接管网络装置的操作的管理模块。被热插拔到此网络装置中的组件可利用非透明桥接机制以避免原本由于具有可控制网络装置的一个以上模块而将发生的冲突。
图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(基于内核的虚拟机)的一个版本,KVM是支持各种操作系统(包含Linux、及其它操作系统)的开源虚拟化基础架构。管理程序的其它实例包含由及其它提供的解决方案。LinuxKVM是虚拟存储器系统,这意味着由加载且执行于系统存储器中的程序见到的地址是必须被映射或转译成物理存储器的物理存储器地址的虚拟存储器地址。此间接层使在网络装置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中提供线卡端口的各种不同配置。举例来说,配置可包含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转发。
在各种实施方案中,如图1及/或图2中描述那样实施的网络装置可为基于机箱的系统。在这些实施方案中,管理模块、线卡及交换结构模块可各自为“热插拔式的”或“热交换式的”,这意味着这些组件可在网络装置处于操作中时被插入到网络装置中或从网络装置移除。术语“热插拔”可指组件到机箱中的物理插入或移除,也可指将组件上的装置连接到虚拟机(例如,虚拟机的虚拟环境中的“虚拟”热插拔)。在后者情况中,在虚拟机启动之前,在机箱中可存在组件,且可使组件通电,且组件可如下文进一步论述那样是虚拟机不能发现的直到虚拟机在线且能够采取步骤来使组件可见。
图3说明可被热插入到网络装置中或从网络装置热插拔出的网络装置的组件的实例。图3还说明组件之间的连接的实例。这些组件包含活动管理模块306、备用管理模块308及一或多个交换结构模块360。在各种实施方案中,管理模块306、308与交换结构模块360通过网络装置中的背板通信。背板可包含管理模块306、308及/或交换结构模块360可连接到其中的插槽。举例来说,背板可包含用于交换结构模块360的插槽。
上文所论述的活动管理模块306及备用管理模块308可执行网络装置的管理及控制功能,包含分组的接收、发射及/或路由。如上文论述,活动管理模块306目前控制网络装置,且如果活动管理模块306离线,那么备用管理模块308准备接管网络装置的操作。
在说明的实例中,管理模块306、308中的每一者包含根联合体342、344、组合式桥/交换机346、348及系统模块352、354。根联合体342、344在每一管理模块306、308上的一或多个处理器与管理模块306、308上的总线联合体之间提供接口。通过根联合体342、344,管理模块306、308的处理器可与连接到总线联合体的各种装置介接且控制连接到总线联合体的各种装置。在一些实施方案中,根联合体342、348被集成到处理器中。
组合式桥/交换机346、348可包含桥接及交换功能性两者。桥是可将两个总线联合体连接在一起的装置,其中两个总线不一定相同。交换机是可用作总线联合体中的节点的装置,从而连接总线联合体内的多个装置。桥及交换机可被实施为集成电路装置,及/或可为集成电路装置的组件。
交换机功能性使管理模块306、308上的桥/交换机346、348能够将多个组件连接到管理模块306、308。举例来说,桥/交换机346、348可具有多个下游端口,其中“下游”远离根联合体342、344。举例来说,桥/交换机346、348可包含两个、六个、八个下游端口或某个其它数目个下游端口。在说明的实例中,这些下游端口中的每一者可连接到交换结构模块360上的对应桥362。
桥功能性使桥/交换机346、348能够将交换结构模块360上的总线联合体连接到管理模块306、308上的总线联合体。举例来说,一旦桥/交换机346、348连接到交换结构模块360上的桥362,组件(例如交换结构模块360上的系统模块364及结构元件318)可以可存取管理模块306、308上的组件相同的方式由根联合体342、344存取。在各种实施方案中,交换结构模块360上的桥362可经配置使得交换结构模块360上的总线联合体仅对一个根联合体342、344可见。举例来说,在说明的实例中,交换结构模块360上的总线联合体对活动管理模块306可见且对备用管理模块308隐藏。在一些实施方案中,交换结构模块360上的桥362也可为组合式桥及交换机。
交换结构模块360是可连接到管理模块306、308的组件的一个实例。在各种实施方案中,网络装置中的其它组件可连接到管理模块306、308。在一些实施方案中,网络装置可具有多个交换结构模块,其中每一者可为热交换式的。在各种实施方案中,交换结构模块360可包含:桥362,其连接到管理模块306、308上的桥/交换机346、348;系统模块364,其辅助热插拔情况中的装置发现;及一或多个结构元件318。如上文论述,结构元件318可由网络装置使用以接收数据且在连接到网络装置的各种模块及/或卡之间转发数据。在各种实施方案中,此数据通过网络装置中的背板在结构元件318与这些其它模块或卡之间交换。
在各种实施方案中,除了责任之外,交换结构模块360上的系统模块364在交换结构模块360是热插拔式时辅助装置发现。在一些实施方案中,网络装置的背板可包含专用于交换结构模块360上的系统模块364与管理模块306、308上的系统模块352、354之间的通信的总线。因此,举例来说,当交换结构模块360被热插拔-意味着添加-到网络装置中时,交换结构模块360上的系统模块364可通过引脚、导线及/或迹线连接到管理模块306、308上的系统模块352、354。在此实例中,在专用总线上存在交换结构模块360上的系统模块364通知管理模块306、308上的系统模块352、354在网络装置中存在新组件。举例来说,活动管理模块306上的系统模块352可使用专用总线上的控制信号,其可用于使新添加交换结构模块360通电。在此实例中,活动管理模块306上的系统模块352可读取交换结构模块360上的系统模块364中的寄存器以确定关于交换结构模块360的信息。举例来说,交换结构模块上的系统模块364可包含寄存器中的“插槽存在”状态,也包含识别及/或描述交换结构模块360的信息。在此实例及其它实例中,活动管理模块306上的系统模块352可起始引起将交换结构模块的组件添加到网络装置的已知硬件且使活动管理模块306的软件能够利用交换结构模块360的程序。下文进一步论述此程序。
备用管理模块308上的系统模块354也可检测在交换结构模块360上存在系统模块364,虽然在备用管理模块308上,交换结构模块360无法被添加到网络装置的已知硬件及/或硬件的软件的理解。替代地或另外,可在桥/交换机348与交换结构模块上的桥362之间建立连接,但使其不活动。如果备用管理模块308发生故障转移,那么接着,备用管理模块308可将任何已经存在的交换结构模块360添加到网络装置的硬件列表,也添加到管理模块308上执行的软件可存取的硬件。
当交换结构模块360被热拔出网络装置-意味着从网络装置移除时,系统模块352、354也可辅助检测移除。举例来说,活动管理模块306上的系统模块352可检测交换结构模块360上的系统模块364不再存在于专用总线上。举例来说,缺少由交换结构模块360汲取的电力可向活动管理模块306上的系统模块352指示交换结构模块360不再存在于系统中。接着,活动管理模块306上的系统模块352可起始从网络装置的已知硬件移除交换结构模块360的进程。
在各种实施方案中,管理模块306、308上的系统模块352、354可具有其它责任。举例来说,系统模块352、354可负责协商管理模块306、308中的哪一者将为活动且哪一者将为备用。
为使活动管理模块306及备用管理模块308两者能够同时连接到一个交换结构模块360,交换结构模块360上的桥362可经配置以支持非透明桥接。通常,桥是“透明的”,这意味着桥的下游侧上的任何装置可由上游侧上的根联合体看到,就像不存在桥一样。当桥包含非透明桥接功能时,桥本身可表现为端点装置,且下游侧上的任何装置从上游侧不可见。非透明桥接可提供硬件保护及隔离,且可确保仅一个根联合体能够存取桥的下游侧上的装置。
图4说明包含桥462的交换结构模块460的实例,桥462的端口可经配置为非透明。在说明的实例中,交换结构模块460连接到活动管理模块406及备用管理模块408。在各种实施方案中,交换结构模块460与管理模块406、408之间的连接及通信可由网络装置中的背板提供。
所说明的实例中的管理模块406、408各自包含根联合体442、444,通过根联合体442、444,管理模块406、408上的处理器可与管理模块406、408上的各种装置通信,包含组合式桥/交换机446、448。桥/交换机446、448可进一步连接到交换结构模块460上的桥462。
在此实例中,交换结构模块460上的桥462包含四个端口,即两个上游端口472、474及两个下游端口476、478。第一上游端口472连接到活动管理模块406上的桥/交换机446,且第二上游端口474连接到备用管理模块408上的桥/交换机448。两个下游端口476、478各自连接到不同结构元件418。在内部,桥462可允许上游端口472、474中的任何者与下游端口476、478之间的通信。在各种实施方案中,桥462可包含更多或更少上游及/或下游端口。
此实例的结构元件418可称为“端点”的原因在于:其是系统中的装置的层级中的终点或叶节点。端点通常是总线上事务的最终目的地。相比而言,交换机及桥通过其本身传递事务,且因此除了特定情况外,并不认为交换机及桥是端点。
在各种实施方案中,仅活动管理模块406上的根联合体442可存取结构元件418。在一些情况中,如果活动管理模块406的根联合体442及备用管理模块408的根联合体444两者能够同时存取结构元件460,那么可发生冲突。举例来说,每一根联合体442、444可尝试将不同地址范围分配到结构元件418。在此实例中,结构元件418可各自具有仅一个地址范围,在此情况中,仅一个根联合体442、444可存取结构元件418而来自另一根联合体442、444的事务将会丢失。举另一实例,当系统通电时,可能不知道哪一管理模块406、408是活动的及哪一者是备用的直到管理模块406、408两者都启动且已协商其角色。在此实例中,在启动期间,管理模块406、408中的每一者可尝试配置结构元件418,从而潜在地导致冲突配置。
为避免这些及其它可能冲突,一旦通电,桥462的上游端口472、474就可被配置为“非透明的”。非透明意味着上游端口472、474中的每一者阻挡下游装置的管理模块406、408的视线。以不同方式陈述,非透明端口用作端点装置,使得如果根联合体442、444请求关于桥462下游的任何装置的信息,那么桥462将做出不存在下游装置的响应。
一旦确立了活动角色及备用角色,在各种实施方案中,活动管理模块406可重新配置桥462,且使第一上游端口472透明。备用管理模块408连接到其的第二上游端口474是左透明的。一旦使上游端口472透明,下游结构元件418变得对活动管理模块406上的根联合体442可见。一旦发现,活动管理模块406就可维持每一结构元件418的占位符。举例来说,活动管理模块的主机操作系统将每一装置的装置节点添加于其内核中(文件识别装置且连接到装置的驱动程序)。接着,根联合体442可配置且利用结构元件418。
当发生故障转移且备用管理模块408担任活动角色时,以前备用的管理模块408可重新配置交换结构模块460上的桥462。以前备用的管理模块408可使连接到其的上游端口474透明,且使另一上游端口472非透明。因此,如果活动管理模块406在备用模式中变为在线,那么以前活动的管理模块406将不能检测结构元件418。
在刚刚描述的故障转移及通电情形中,假定交换结构模块460在发生故障转移或通电时已存在于系统中。当交换结构模块460被热插拔到系统中时,活动管理模块406可执行类似程序以将热插拔式交换结构模块460添加到系统。
将交换结构模块“添加”到网络装置涉及将交换结构模块物理插入到网络装置的机箱中,及配置管理模块的软件,使得软件察觉到且可使用新添加的交换结构模块。图5A到5B说明管理模块506及管理模块506的软件配置的实例。在此实例中,管理模块506已经配置以支持组件(例如交换结构模块)的热插拔。图5A说明在交换结构模块被热插拔到管理模块506之前的管理模块506的配置的实例,且图5B说明交换结构模块已经被热插拔之后的管理模块506的配置的实例。
在图5A的实例中,管理模块506的硬件可包含系统模块552及组合式桥交换机546。如先前论述,系统模块552促进热插拔式组件的检测,且组合式桥/交换机546可将热插拔式组件上的装置连接到管理模块506的总线联合体。桥/交换机546可包含多个下游端口(例如,两个、六个、八个、十六个或更多个端口),其中每一者可用于连接不同可热插拔式组件。系统模块552及桥/交换机546可被实施为离散集成电路或组合式集成电路。举例来说,系统模块552可使用场可编程门阵列(FPGA)实施,且桥/交换机546可使用专用集成电路(ASIC)实施。管理模块506还可包含在此处未说明的一或多个处理器。
管理模块506的软件可包含主机操作系统510,其可提供各种软件应用可在其中运行的环境。在此实例中,这些软件应用包含管理程序512及虚拟机516。其它进程也可在主机操作系统510中运行,例如下文进一步论述的热插拔驱动程序502。主机操作系统510可被认为在管理模块506上“本地”运行,这意味着主机操作系统510可直接存取管理模块506的硬件且控制管理模块506的硬件。主机操作系统510中运行的进程可类似地直接存取管理模块506的硬件。
管理程序512是生成并运行虚拟机(例如所说明的虚拟机516)的应用程序。管理程序512也可称为虚拟机监视程序(VMM)。在一些实施方案中,管理程序512可被集成到主机操作系统510中。举例来说,基于内核的虚拟机(KVM)是使Linux内核能够操作为虚拟机监视程序的Linux内核的虚拟化基础架构。
在各种实施方案中,管理程序512可包含仿真器进程514。仿真器进程514可提供硬件虚拟化,即,物理硬件的虚拟化表示。虚拟化硬件可与管理模块506的物理硬件非常相似。替代地或另外,虚拟化硬件可隐藏物理硬件的一些特性,且因此提供更抽象的硬件视图。在一些情况中,虚拟化硬件可仅最低程度地与物理硬件相似或可包含管理模块506中不存在的硬件表示。在各种实施方案中,管理程序512包含由管理程序控制的每一虚拟机的一个仿真器进程。仿真器进程的一个实例是快速仿真器(QEMU)。
在此实例中,仿真器进程514包含仿真桥模块520。如上文进一步论述,仿真桥模块520可对应于系统中的一或多个物理桥。举例来说,仿真桥模块520可表示组合式桥/交换机546。在各种实施方案中,仿真器进程514可包含可接受可热插拔式装置的机箱中的每一插槽的仿真桥模块520。在这些实施方案中,仿真桥模块520可对应于桥/交换机546的下游端口。如下文进一步论述,仿真桥模块520可对应于虚拟机516中的虚拟桥570。
虚拟机516包含各种虚拟硬件522组件及软件524组件。虚拟硬件522组件可包含管理模块506的硬件表示,且可能还包含管理模块506不具有的硬件表示。在说明的实例中,如上所述,虚拟硬件包含虚拟桥570。从虚拟机516中执行的应用程序的观点来看,虚拟桥570看起来是一个装置,虽然如下文进一步论述,虚拟桥570可实际上对应于若干物理装置。
在说明的实例中,虚拟机522还包含透传系统模块572。透传系统模块572对应于管理模块506上的物理系统模块552,且已标记为“透传”,因为虚拟机516已被给予对系统模块552的“透传”存取。透传模式给予虚拟机对装置的直接存取。在不使用透传模式的情况下,虚拟机516将通过管理程序512存取系统模块552。举例来说,仿真器进程514可包含对应于物理系统模块552的仿真系统模块。替代地或另外,往返于系统模块552的信号将由管理程序证实且可能被转译。在使用透传模式的情况下,虚拟机516可通过透传系统模块572存取系统模块552,而无需管理程序512的协助。一般来说,透传装置一次仅可由一个虚拟机使用。
在说明的实例中,此实例的虚拟机516还包含各种软件应用程序,包含系统模块552的驱动程序532、硬件管理534应用程序、结构元件驱动程序536、结构元件控制器538及本地热插拔驱动程序530。驱动程序532是通过透传系统模块562控制系统模块552的装置驱动程序。硬件管理534应用程序可管理管理模块506被安装于其中的网络装置的各种硬件组件。举例来说,硬件管理534应用程序可配置网络装置以将电力供应到交换结构模块及线卡。结构元件驱动程序536是控制交换结构模块上的结构元件的装置驱动器程序。结构元件驱动程序536可控制结构元件的操作,除了提供虚拟机516通过其可存取结构元件的接口之外。结构元件控制器538可提供此接口使得结构元件可由虚拟机516中的路由应用程序使用。本地热插拔驱动程序530是具备管理热插拔操作的操作系统及/或总线架构的应用程序。举例来说,本地热插拔驱动程序530可为高级配置电源接口(ACPI)驱动程序等,其提供具有发现及配置硬件组件的能力的操作系统。
图5说明在交换结构模块560已经被热插拔到管理模块506在其中操作的网络装置中之后管理模块506的配置的实例。
在说明的实例中,交换结构模块560包含桥562、系统模块564及一或多个交换结构元件518。桥562可提供交换结构模块560上的装置与管理模块上的装置之间的连接。举例来说,桥562可连接到网络装置中的引脚、导线及/或迹线,其将桥562连接到管理模块506上的组合式桥/交换机546。一旦连接,在各种实施方案中,桥562可在此之后简单地向上游或向下游传递数据。在一些实施方案中,桥562也可在上游总线协议与可能与上游总线协议不同的下游总线协议之间转译。
如上文论述,交换结构模块560上的系统模块564可使管理模块506上的系统模块552能够检测交换结构模块560在系统中的存在。具体来说,当交换结构模块560连接到系统时,系统模块564可将引脚、导线及/或迹线连接到管理模块506上的系统模块552。接着,交换结构模块560上的系统模块564可将其存在的信号发送到可正监听导线及/或迹线的所有其它系统模块,及/或其它系统模块(包含管理模块506的系统模块552)可自动检测新装置的存在。
在说明的实例中,系统模块564通过交换结构模块560上的桥562及管理模块506上的桥/交换机546连接到管理模块506。在其它实例中,系统模块564、552可具有专用总线,且可能无需通过桥546、562通信。
一旦检测在交换结构模块560上存在系统模块564,管理模块506上的系统模块552就可通知虚拟机516新组件已经被热插拔到系统中。举例来说,系统模块552可发出中断。在此实例中,中断会因为透传系统模块572的透传配置而自动表现为来自透传系统模块572。
在各种实施方案中,中断可在虚拟机516的软件524中由系统模块驱动程序532接收。接着,驱动程序532可起始程序以将交换结构模块560上的组件添加到管理模块506已知的物理硬件及虚拟机516内可用的虚拟硬件522两者。此程序可包含例如通知硬件管理534应用程序实现对交换结构模块560的供电。程序还可包含指示虚拟桥570附接到热插拔式组件。在一些实施方案中,硬件管理534应用程序指示虚拟桥570进行这些连接。
然而,在此点处,虚拟桥570不具有关于将连接到的任何组件的信息。这是因为,虽然交换结构模块560已以物理方式被连接到系统,但在虚拟机516的虚拟硬件522内不存在交换结构模块560或其组件的对应表示。实际上,主机操作系统510在此点处也不知道新硬件已经被添加到系统。如果主机操作系统510并不知道新硬件,那么虚拟机516不能使用新硬件。
为确立交换结构模块的组件在主机操作系统510及虚拟机516两者中的存在,仿真桥模块520可结合热插拔驱动程序502一起工作。因为虚拟桥570直接对应于仿真桥模块520,所以发出到虚拟桥570的添加热插拔式组件的命令由仿真桥模块520接收。仿真桥模块520可经配置以通知热插拔驱动程序502已发生了将组件添加到系统的热插拔。
在各种实施方案中,热插拔驱动程序502可随后扫描新装置。举例来说,热插拔驱动程序502可扫描桥/交换机546的下游端口并发现交换结构模块560上的桥562。热插拔驱动程序502可进一步扫描桥562下游的总线,且发现系统模块564及结构元件518。在各种实施方案中,热插拔驱动程序502可通知主机操作系统510添加这些新发现的装置。举例来说,热插拔驱动程序502可激活建置到主机操作系统510中的热插拔机制。内建机构可例如针对系统模块564及结构元件518中的每一者创建装置节点。在此实例中,主机操作系统510中的应用程序可在此之后通过这些装置节点存取装置。
一旦系统模块564及结构元件518已经被添加于主机操作系统510中,热插拔驱动程序502就可通知仿真桥模块520这些组件现在是系统中硬件的部分。在各种实施方案中,热插拔驱动程序502可将额外信息提供到仿真桥模块520,例如(举例来说)新组件的身份及/或描述。在各种实施方案中,仿真桥模块520可将交换结构模块560上的桥562添加到由仿真桥模块520表示的硬件。以此方式,虚拟机516中的虚拟桥570无需被修改来容纳额外桥564。
通过将其本身映射到交换结构模块560上的桥562,仿真桥模块520可存取系统模块564及结构元件518及可连接到交换结构模块560上的桥562的任何其它组件。通过被表示为虚拟机516中的虚拟桥570,连接到仿真桥模块520的任何装置也可被存取为虚拟机516中的虚拟硬件222。在说明的实例中,系统模块564由虚拟系统模块574表示,且结构元件518由虚拟结构元件578表示。虚拟系统模块574及虚拟结构元件578在此处都称为“虚拟”以区分这些模块与交换结构模块560上的物理系统模块564及物理结构元件518。在各种实施方案中,虚拟系统模块574及虚拟结构元件578例如在仿真器进程514中不具有对应仿真硬件。代替地,虚拟机516可作为透传装置存取交换结构模块560的组件。
一旦新组件连接到虚拟桥,本地热插拔驱动程序530就可检测新组件的存在。本地热插拔驱动程序560可执行各种操作以将这些组件添加到虚拟机516已知的虚拟硬件。举例来说,本地热插拔驱动程序530可通知结构元件驱动程序536存在新的可用虚拟结构元件578。在此实例中,结构元件驱动程序536可配置虚拟结构元件578,借此配置物理结构元件518。结构元件驱动程序536可实现由结构元件控制器538管理虚拟结构元件578。接着,物理结构元件518可由虚拟机516中执行的应用程序使用。
先前论述假定管理模块506是活动管理模块。当管理模块506处于备用模式中且交换结构模块560被热插拔到系统中时,在各种实施方案中,管理模块506上的系统模块552可辨别新添加的交换结构模块560的存在。然而,系统模块552不会起始程序以将交换结构模块560的组件添加到主机操作系统510及虚拟机516。
在一些情况中,交换结构模块560也可被从系统热插拔出。在这些情况中,可发生类似程序以将交换结构模块560的组件从主机操作系统510及虚拟机516移除。举例来说,管理模块506上的系统模块552可检测系统模块564已被移除或者另外不再是可存取的。在此实例中,系统模块552可通过透传系统模块572发送由虚拟机516中的驱动程序532接收到的中断。驱动程序532可例如导致硬件管理534应用程序指示虚拟桥570分离虚拟系统模块574与虚拟结构元件578。此指令可由可通知热插拔驱动程序502的仿真桥模块520接收。热插拔驱动程序502可导致从主机操作系统510删除装置。一旦组件从主机操作系统510移除,热插拔驱动程序502就可通知仿真桥模块520,接着仿真桥模块520可断开并删除虚拟系统模块574及虚拟结构元件458。
已在假定交换结构模块560在管理模块506通电且将其本身置于操作状态中之后被插入到机箱中的情况下描述了用于将交换结构模块热插拔到系统中的上述程序。可在管理模块506通电且发现交换结构模块560已经存在于机箱中且通电时执行类似进程。举例来说,如上文论述,当管理模块506通电时,交换结构模块560上的桥562下游的组件可能是不可见的,这是由于桥562被配置成非透明的。一旦管理模块506被启动,管理模块506就可使桥562透明。接着,管理模块506可扫描先前未知的装置。举例来说,系统模块驱动程序532可自动扫描先前未知的系统模块及/或可扫描桥/交换机546的下游端口以找出在桥/交换机546下游连接的任何组件。一旦发现交换结构模块560的组件,就可如上文论述那样添加这些组件。
在管理模块506已经历某些事件(例如虚拟机516的重启及/或仿真器进程514的重启)之后也可发生添加组件的热插拔程序。
当虚拟机516重启或崩溃时,在各种实施方案中,仿真器进程514中的任何装置(包含仿真桥模块520)可自动复位。一旦复位,仿真桥模块520就可删除或移除仿真桥模块520桥接到其的任何装置(例如,交换结构模块上的系统模块564及结构元件518)。仿真桥模块520还可导致停用桥/交换机546上的端口,从而有效地断开交换结构模块560(虽然不会改变到交换结构模块560的物理连接)。一旦虚拟机516完成了重启,交换结构模块560的组件就可使用上文描述的程序被重新添加到系统。
备用管理模块506上的虚拟机516也可经历重启或崩溃。对于备用管理模块506,可能已检测到交换结构模块560,但尚未执行热插拔进程,且虚拟系统模块574及虚拟结构元件578尚未被添加到虚拟机516。因此,当备用管理模块506上的虚拟机516重启或崩溃时,仿真桥模块520也可复位,但将不会开始热插拔进程。
仿真器进程514本身可重启或崩溃。当此发生时,由仿真器进程514打开的任何文件被关闭,且由仿真器进程514开始的任何进程可被终止。在各种实施方案中,仿真器进程514的关闭可由热插拔驱动程序502检测。热插拔驱动程序502可随后从主机操作系统510移除与仿真器进程514相关联的任何装置。举例来说,热插拔驱动程序502可导致从主机操作系统510删除系统模块564及结构元件518的装置节点。热插拔驱动程序502还可停用交换结构模块560连接到其的桥/交换机546端口。一旦重启了仿真器进程514,热插拔进程就可再次运行,且重新连接装置。
在一些情况中,虚拟机516或仿真器进程514的重启或崩溃可导致故障转移。当以前活动的管理模块506进入备用模式中时,其系统模块552可检测交换结构模块560的存在,但可不采取行动来将交换结构模块560的组件连接到虚拟机516。
替代地,切换可由网络管理员触发。举例来说,网络管理器可引起切换使得管理模块可被升级或置换出。在管理员起始的切换后,在一些实施方案中,活动管理模块可变成备用管理模块而不会经历重启。在这些实施方案中,仿真器进程514可能未察觉到管理模块506的模式已改变。因此,在这些实施方案中,管理模块506可包含代码(例如,在热插拔驱动程序502中),其能够检测管理模块506的改变的状态。接着,代码可自动删除已被添加到管理模块506的任何交换结构模块560组件。交换结构模块560上的装置可从虚拟机516及主机操作系统510两者删除。
当发生故障转移或切换时,变为活动的管理模块506可执行上文描述的热插拔程序以热插拔机箱中已经存在的任何交换结构模块。
图5A到5B的实例论述将一个交换结构模块热插拔到系统中。在各种实施方案中,管理模块可支持多个卡或模块的热插拔。图6说明可支持多个组件的热插拔的管理模块606的配置的实例。图6还说明在管理模块606上执行的虚拟机可具有管理模块606的硬件的视图。也就是说,经配置用于虚拟机的虚拟环境的硬件可与图6中说明的实例相似,其可能并非直接对应于硬件的物理配置。
如先前论述,管理模块可具有根联合体642,管理模块606上的处理器可通过其与连接到总线联合体612的各种组件通信。在此实例中,连接到总线联合体的组件包含系统模块652及六个桥648。总线联合体612可对应于管理模块606上的物理总线联合体。类似地,系统模块652可对应于物理系统模块装置。
在各种实施方案中,物理管理模块606可能并不具有六个物理桥组件。如先前论述,管理模块606可具有包含六个(或更多或更少个)端口的一个组合式桥/交换机。也如先前论述,针对组合式桥/交换机的端口中的每一者,管理模块606可包含仿真桥。这些仿真桥中的每一者又可对应于说明的实例中的六个桥648。
在图6的实例中,交换结构模块660连接到桥1 648。实例交换结构模块660包含系统模块664及两个结构元件618。在各种实施方案中,交换结构模块660可具有更少或更多个结构元件。结构元件可为多功能装置,且具有两种或两种以上功能。在各种实施方案中,当结构元件618是多功能装置时,可将其表示为到虚拟机的多功能装置。
在说明的实例中,交换结构模块660上的系统模块664及两个结构元件618中的每一者连接到次级总线联合体614,其中“次级”意味着此总线联合体并不直接连接到管理模块606的根联合体642。桥1 648使用桥接技术实现管理模块606上的总线联合体612与次级总线联合体614之间的连接。
在各种实施方案中,交换结构模块660还包含物理桥装置,可使其对执行管理模块606的虚拟机不可见。如上文论述,仿真桥可经配置以表示管理模块606上的物理桥/交换机及交换结构模块660上的物理桥两者。如此做可减少虚拟机的复杂性,且实现与系统模块664及结构元件618的更有效通信。
图7说明用于将组件热插拔到网络装置中及在新组件与管理模块之间形成连接的过程700的实例。在说明的实例中,交换结构模块760被添加到网络装置。在各种实施方案中,可在其它组件被热插拔到网络装置中时应用类似过程700。举例来说,当管理模块被热插拔到机箱中时,可执行类似过程以将管理模块连接到已经存在的交换结构模块760。
过程700以网络装置的物理硬件704开始。在步骤782处,交换结构模块760以物理方式被插入到网络装置的机箱中。当此发生时,可将交换结构模块760上的系统模块764连接到管理模块的系统模块752。管理模块上的系统模块752可确定交换结构模块760上的系统模块764是新的。基于此确定,管理模块上的系统模块752可生成中断以通知在管理模块上执行的虚拟机716。
如上文论述,系统模块752可经配置使得虚拟机716能够透传存取系统模块752。因为透传配置,系统模块752可表现为虚拟机716的虚拟硬件组件(在此处标记为透传系统模块772),其具有到物理系统模块752的虚拟链路784。因此,当物理系统模块752发出中断时,中断在虚拟机716中表现为来自透传系统模块772。
在步骤786处,来自透传系统模块772的中断由系统模块752的装置驱动程序732接收。驱动程序732可将中断解译为意味着新组件已被热插拔到系统中。在步骤788处,驱动程序732可将命令发送到虚拟机716中的虚拟桥770以指示虚拟桥770建立到新组件的连接。举例来说,驱动程序732可将称为“SLOT_HP_ADD_MODULE”的命令写入到虚拟桥770或导致称为“SLOT_HP_ADD_MODULE”的命令被写入到虚拟桥770。在各种实施方案中,虚拟桥770可对应于来自网络装置中的可用于热插拔的多个插槽的特定插槽。
如先前论述,虚拟桥770可对应于在网络装置的主机706软件中运行的管理程序中管理的仿真桥模块720。虚拟桥770具有到仿真桥模块720的虚拟链路790使得由虚拟桥770接收的任何命令也由仿真桥模块720接收。因此,当虚拟桥770接收添加组件的命令时,仿真桥模块720也接收命令。
在步骤792处,仿真桥模块720可通知也在主机706软件中执行的热插拔驱动程序702存在要添加的新组件。举例来说,仿真桥模块720可使用ioctl接口将消息发送到热插拔驱动程序702。
在此点处,系统已知的所有事情是存在新组件。然而,系统不知道新组件是什么。热插拔驱动程序702可进行此确定。在步骤794处,热插拔驱动程序702可扫描网络装置以识别新硬件。举例来说,热插拔驱动程序702可扫描与由管理模块上的系统模块752生成的中断相关联的端口。在此实例中,由于扫描,热插拔驱动程序702可发现结构元件718。热插拔驱动程序702也可找到其它组件,例如系统模块764及其它结构元件。可将过程700的剩余步骤应用到这些其它组件中的任何者。
在步骤796处,热插拔驱动程序702可指示主机操作系统710添加结构元件718。在各种实施方案中,主机操作系统710可具有用于热插拔新组件的内置功能,其可在步骤796处被触发。在步骤796结束时,将结构元件718理解为网络装置的已知硬件组件。
在步骤798处,热插拔驱动程序702可将关于结构元件的信息提供到仿真桥模块720。举例来说,热插拔驱动程序702可将事件发送到仿真桥模块720。接着,仿真桥模块720可建立到结构元件718的连接。一旦形成了此连接,结构元件778就可表现为附接到虚拟桥770的虚拟结构元件778。
为完成将虚拟结构元件778热插拔到虚拟机中,在步骤722处,虚拟桥770可导致虚拟机716中的本地热插拔驱动程序730被告知新的虚拟硬件组件已被添加到虚拟机716。本地热插拔驱动程序730可采取任何必要步骤来将虚拟结构元件778添加到虚拟机716的操作环境。这些步骤可包含:调用结构元件的驱动程序(在此处未说明),其可执行探测功能来学习关于虚拟结构元件778的更多内容。在各种实施方案中,本地热插拔驱动程序730可为在虚拟机716中执行的客户机操作系统的组件。替代地或另外,在各种实施方案中,本地热插拔驱动程序730可与总线协议(例如PCIe)相关联。
在步骤724处,本地热插拔驱动程序730也可通知结构元件控制器738存在新的虚拟结构元件778。此可在结构元件控制器738与虚拟结构元件778之间建立连接。在此之后,结构元件控制器738可管理且维持虚拟结构元件778,且通过虚拟结构元件778管理且维持物理结构元件718。
图8说明用于热插拔当启动发生时存在于网络装置中的组件的过程800的实例。在说明的实例中,当网络装置重启及/或管理模块在线时(例如,管理模块被重启及/或被热插拔到网络装置中),交换结构模块860存在于网络装置的硬件804中。当虚拟机816在已通电且在处于操作中达一段时间的管理模块上启动或重启时也可应用过程800。在各种实施方案中,可针对当管理模块及/或虚拟机启动时存在于网络装置中的其它组件也可应用类似过程。
在各种实施方案中,当管理模块启动时,管理模块可经配置以自动启动虚拟机816。如上文论述,虚拟机816可执行控制网络装置的操作的网络操作系统。当虚拟机816针对管理模块上的系统模块852启动装置驱动程序832时,驱动程序832可经配置以在步骤888处自动指示虚拟桥870扫描连接到虚拟桥870的组件使得那些组件可被添加到虚拟机。
在一些实施方案中,管理模块上的系统模块852能够确定交换结构模块860上的系统模块为新的及/或所述系统模块是管理模块先前未知的。在这些实施方案中,可应用图7中说明的过程,其中图8的系统模块852将通过透传系统模块872发出在虚拟机816中接收到的中断。然而,在一些实施方案中,可在网络装置通电时、在管理模块通电时或在交换结构模块被热插拔到系统中时(其中任何者可能在虚拟机启动之前已发生了一段时间),可在管理模块上的系统模块852与交换结构模块上的系统模块864之间建立连接882。在这些实施方案中,系统模块852、864之间的连接882可为不可与到模块的系统已经知道的连接区分。在这些实施方案中,可应用过程800。
在步骤888处发出到虚拟桥870的命令由于虚拟桥与仿真桥模块820之间的虚拟链路890由仿真桥模块820接收。仿真桥模块820与其它进程(例如,主机操作系统810及热插拔驱动程序802)一起在网络装置的主机806环境中执行。在步骤892处,仿真桥模块820可通知热插拔驱动程序802在系统中存在新的及/或未知的组件。
在步骤894处,热插拔驱动程序802可针对新的及未知的组件扫描网络装置。举例来说,热插拔驱动程序802可扫描机箱中的每一插槽,包含可接受可热插拔组件的插槽及不可接受可热插拔组件的插槽。热插拔驱动程序802可随后发现实例交换结构模块860上的结构元件818以及其它组件。这些其它组件可以与实例结构元件818类似的方式被热插拔到系统。
在步骤896处,热插拔驱动程序802可指示主机操作系统810添加结构元件818。一旦添加到主机操作系统810,结构元件818变成网络装置的硬件中的可存取组件。
在步骤898处,热插拔驱动程序802可将关于结构元件818的信息提供到仿真桥模块820。接着,仿真桥模块820可建立到结构元件818的连接。一旦形成了此连接,结构元件818可表现为虚拟机816中附接到虚拟桥870的虚拟结构元件878。
在步骤822处,虚拟桥870可通知虚拟机816中的本地热插拔驱动程序830新组件已被添加到虚拟机816的虚拟硬件。本地热插拔驱动程序830可执行热插拔操作,包含起始结构元件驱动程序,且在步骤824处,通知结构元件控制器838存在新的虚拟结构元件878。
图9说明可在组件在热插拔操作中从网络装置移除时执行的过程900的实例。在说明的实例中,交换结构模块960从网络装置移除。在各种实施方案中,可在其它组件在热插拔操作中从网络装置移除时执行类似过程。
过程900以网络装置的物理硬件904开始。在步骤982处,以物理方式从网络装置的机箱移除交换结构模块960。当此发生时,管理模块上的系统模块952可检测到交换结构模块960上的系统模块964不再存在。管理模块上的系统模块952可发出中断以通知虚拟机916系统中的一些组件已被移除。
由于系统模块952与虚拟机916中的透传系统模块972之间的虚拟链路984,来自系统模块952的中断将在虚拟机916中被认为是来自透传系统模块972。
在步骤986处,中断将由系统模块952的装置驱动程序932接收。驱动程序932可将中断解译为意味着组件已从系统移除。在步骤988处,驱动程序932可将命令发送到虚拟机916中的虚拟桥970以指示虚拟桥970移除到经移除组件的连接。举例来说,驱动程序732可将称为“SLOT_HP_DELETE_MODULE”的命令写入到虚拟桥970或导致称为“SLOT_HP_DELETE_MODULE”的命令被写入到虚拟桥970。在各种实施方案中,虚拟桥可对应于交换结构模块960从其移除的特定插槽。
虚拟桥970具有到在主机906软件环境中执行的仿真桥模块920的虚拟链路990。因此,在步骤988处,仿真桥模块920可接收发出到虚拟桥970的命令。在步骤992处,仿真桥模块920可通知热插拔驱动程序902组件已从系统移除。
因为仿真桥模块920可对应于机箱中的特定插槽,所以热插拔驱动程序902可假定与插槽相关联的全部组件都被移除。在步骤996处,热插拔驱动程序902可因此通知主机操作系统910哪些组件被移除。主机操作系统910可删除那些组件的句柄,在此点处,组件不再为系统所知。
在步骤998处,热插拔驱动程序902也可将描述经移除组件的信息提供到仿真桥模块920。仿真桥模块920可断开及/或删除经移除组件的虚拟表示。举例来说,仿真桥模块920可移除以前与经移除交换结构模块960上的结构元件918相关联的虚拟结构元件978。
在步骤922处,虚拟桥970可进一步通知本地热插拔驱动程序930虚拟结构元件978被移除。接着,本地热插拔驱动程序930可执行热插拔移除操作,包含从虚拟硬件列表移除虚拟结构元件978,且在步骤924处,通知结构元件控制器938虚拟结构元件978被移除。
图10说明可在管理模块上执行的虚拟机1016关闭时执行的过程1000的实例。虚拟机1016可出于各种原因关闭。举例来说,虚拟机1016可在用于重启虚拟机1016的进程中关闭。举另一实例,可关闭虚拟机1016以便使虚拟机1016处于备用模式中。
当虚拟机1016执行关闭程序时,这些程序可包含“拔出”或移除虚拟硬件组件,包含与物理结构元件1018相关联的虚拟结构元件1078。可执行这些程序使得主机1006应用程序可在虚拟机1016再次出现时变成备用。另外,虚拟机1016可以活动或备用模式出现,且如果虚拟机1016以备用模式出现,那么一些硬件组件(包含例如交换结构模块1060上的结构元件1018)应保持断开。
为干净地断开任何物理硬件组件与虚拟机,在步骤1088处,管理模块上的系统模块1052(在虚拟机中表示为透传系统模块1072)的装置驱动程序1032可将指令发送到虚拟机1016中的虚拟桥1070。此指令可通知虚拟桥1070断开及/或删除任何虚拟硬件组件。
虚拟桥1070具有到在主机1006软件环境中执行的仿真桥模块1020的虚拟链路1090。因此,在步骤1088处,仿真桥模块1020可接收发出到虚拟桥1070的命令。在步骤1092处,仿真桥模块1020可通知热插拔驱动程序1002无需从虚拟机1016移除组件。
因为仿真桥模块1020可对应于机箱中的特定插槽,所以热插拔驱动程序1002可假定需要移除与插槽相关联的全部组件。因此,在步骤1098处,热插拔驱动程序1002将描述经移除组件的信息提供到仿真桥模块1020。仿真桥模块1020可断开及/或删除经移除组件的虚拟表示。举例来说,仿真桥模块1020可移除以前与经移除交换结构模块1060上的结构元件1018相关联的虚拟结构元件1078。
在一些实施方案中,一旦虚拟结构元件1078已经被断开,就可关闭虚拟机1016。然而,在一些实施方案中,虚拟机1016可执行额外操作以避免可干扰关闭程序的潜在问题。举例来说,在步骤1022处,虚拟桥1070可通知本地热插拔驱动程序1030虚拟结构元件1078已被移除。在此实例中,接着,本地热插拔驱动程序1030可执行热插拔移除操作,包含从虚拟硬件列表移除虚拟结构元件1078及在步骤1024处通知交换元件控制器1038虚拟结构元件1078已被移除。
在各种实施方案中,虽然交换结构模块1060的组件已从虚拟机1016移除,但这些组件-包含例如系统模块1064及结构元件1018-不会也从主机操作系统1010或网络装置的物理硬件1004移除。因此,举例来说,维持管理模块上的系统模块1052与交换结构模块1060上的系统模块1064之间的连接1082。举另一实例,也可由主机操作系统1010维持到结构元件1018的句柄。交换结构模块1060的组件可因此准备好再次被热插拔到虚拟机1016中。
在一些实施方案中,将网络装置中的卡与模块连接到彼此的总线架构(例如(举例来说,基于PCIe的总线架构))可本地支持热交换或热插拔卡及模块的能力。然而,在一些实施方案中,停用本地热交换支持以在管理模块被热交换时避免可能冲突。举例来说,当新的管理模块被添加到网络装置时,管理模块的硬件及/或软件中的本地热插拔功能性可尝试发现及控制连接到总线联合体的任何其它装置。然而,在此实例中,另一管理模块可能已在控制总线联合体中的装置。新的管理模块应不干扰此另一管理模块的控制,或网络装置可变得非功能性的。
在各种实施方案中,网络装置可因此包含可能比由总线架构提供的本地热插拔实施方案更稳健的定制热交换或热插拔实施方案。在上文论述的实例中,定制实施方案可包含定制热插拔驱动程序。
在各种实施方案中,热插拔驱动程序可能既不是PCI驱动程序也不是PCIe端口服务驱动程序。举例来说,本文描述的热插拔驱动程序通常不附接到任何具体硬件装置。在各种实施方案中,热插拔驱动程序可代替地是提供ioctl接口的软件模块,使得管理程序中的仿真器进程可存取系统中的组件,例如桥,且使得仿真器进程可存取主机操作系统内核中的内核应用程序编程接口(API)。在各种实施方案中,仿真器进程中的仿真装置及虚拟机中的驱动程序可定义如何使用此ioctl接口。
图11说明数据结构的实例,热插拔驱动程序可使用所述数据结构表示网络装置中的硬件。“struct控制器”1100对象类型可用于表示管理模块中的硬件,例如桥/交换机。“struct插槽”1104a到1104c可用于表示机箱中的插槽。控制器结构可指向插槽结构1104a到1104c的列表,插槽结构1104a到1104c各自表示不同插槽。
控制器结构1102可具有称为“dev”的字段,其可用于指出主机操作系统的内核中的桥/交换机。控制器结构1102可进一步具有“slot_list”字段,其指向插槽结构1104a到1104c的列表或阵列。
插槽结构1104a到1104c可具有“port”及“dev”字段。“port”字段可用于指向桥/交换机上的可热插拔端口,而“dev”字段可用于指向交换结构模块上的桥。使用这些结构,热插拔驱动程序能够存取桥/交换机中的寄存器、交换结构模块上的桥及热插拔端口寄存器。
图11中说明的结构可在管理模块被起始时生成,无论机箱中是否存在任何交换结构模块。插槽结构中的“dev”字段可在不存在针对那个插槽的交换结构模块时被设置成空(NULL)。当添加了交换结构模块时,一旦交换结构模块上的桥已被添加到主机操作系统内核,“dev”字段就可指向此桥。
以下内容说明可用于初始化热插拔驱动程序的函数的实例:
一旦热插拔驱动程序已被加载到主机操作系统内核中,就可调用上述函数。所述函数可首先分配及初始化上文描述的控制器结构1102。函数“slot_hp_find_controller_port()”可初始化对主机操作系统的内核中的装置的搜索。此函数可返回管理模块上的桥/交换机的装置节点。“init_slots()”函数可分配及初始化(上文描述的)狭槽结构。“slot_hp_find_port()”函数可搜索装置节点的内核,且可定位热插拔端口装置。
在一些实施方案中,搜索操作可为基于PCI总线系统结构。在一些情况中,搜索操作可不依赖于经指派总线数。可根据总线上的狭槽地址从根总线开始从一个PCI总线层到下一PCI总线层搜索PCI装置。
在初始化结束时,热插拔驱动程序可记录字符装置,及针对仿真器进程中的仿真桥模块创建例如装置节点“/dev/slot-hp”。接着,仿真器进程可通过此装置节点存取热插拔驱动程序。
在各种实施方案中,热插拔驱动程序可通过ioctl接口提供对桥及操作系统内核的存取。这些存取可包含对物理存储器、配置寄存器、桥及/或其它驱动程序函数的存取。表1说明各种ioctl命令或opcodes的实例。多数这些命令读取或写入存储器或寄存器。启用或停用插槽的“SLOT_IOC_CLOT_CONTROL”命令可由一些事件阻挡,且因此在一些实施方案中,可在单独进程线程中执行。在各种实施方案中,可仅从主机操作系统使用热插拔驱动程序ioctl接口,且所述ioctl接口不能被虚拟机存取。
表1
插槽启用操作可扫描热插拔端口,且将被发现连接到那个端口的任何装置添加到主机操作系统内核。插槽启用操作中的步骤可为配置装置。以下内容提供插槽启用功能的实例:
在此实例中,函数可首先扫描热插拔端口。针对可通过此扫描发现的任何桥,函数也可扫描桥的下游总线。接着,扫描操作可定位连接到下游总线的任何装置。此过程可继续直到找出所有桥。
在找出所有装置且所有装置都被附接到端口之后,“pci_assign_unassigned_bridge_resources()”函数可将存储器窗指派到任何新桥及任何新装置的地址空间。接着,“slot_get_dev()”函数可在内核装置之中搜索交换结构模块上的桥。此函数可进一步针对此桥的存储器区域创建I/O映射。“slot_hp_add_device()”函数可寻找交换结构模块上的新装置。其也可排队及将事件发送到仿真器进程。
插槽停用操作可停用插槽。插槽停用操作中的步骤可为移除附接到插槽的装置的配置。以下内容提供插槽停用函数的实例:
在此函数中,“slot_hp_delete_devices()”函数可使事件排队且将事件发送到仿真器进程。这些事件可从仿真桥模块拔出交换结构模块上的任何装置。“slot_put_dev()”函数可从交换结构模块上的桥移除I/O映射。对于每一装置,“pci_stop_and_remove_bus_device()”函数可停止装置功能且删除内核中的装置节点。
如上文论述,仿真桥模块可经配置以表示管理模块上的桥/交换机及交换结构模块上的桥两者。仿真桥模块也可将高级热插拔功能提供到管理模块的虚拟机。在各种实施方案中,仿真桥模块的装置类型为可“pci-slot”,其可为基于“pci-bridge-dev”装置类型。pci-slot装置是具有额外供应商特定能力的pci-bridge。pci-slot装置可具有eventfd文件类型。
图12说明可包含于仿真桥模块中的供应商特定能力寄存器1200的实例描述。在各种实施方案中,说明的供应商特定能力可以八个字节编码。在此实例中,第一字节是0x9(十六进制),其是供应商特定能力标识符1202。在此实例中,第二字节是到下一能力的指针1204。第三字节是能力的长度1206。在此实例中,第四字节,类型1208字段,被设置为零,且不被使用。
在此实例中,下两个字节包含命令1210,其可为只写寄存器。命令1210可由虚拟机使用以发出热插拔命令。此实例的命令寄存器之后是两字节只读状态1212。状态1212可用于返回前一命令的值。状态1212中的零或正值可指示成功完成的前一命令。负值可指示错误或命令失效。
每一仿真桥模块可创建eventfd文件。eventfd文件是可用于存取I/O资源的文件描述符或句柄。在上文描述的实例中,仿真桥模块的eventfd文件可例如通过ioctl cal被记录到主机操作系统中的热插拔驱动程序。当热插拔驱动程序检测到交换结构模块上的新装置(例如,系统模块或结构元件)时,热插拔驱动程序可针对主机操作系统内核中的新装置创建装置节点。热插拔驱动程序也可使指示已添加新装置的事件排队。热插拔驱动程序还可通过eventfd文件通知仿真桥模块所述新装置。
在各种实施方案中,热插拔驱动程序可生成至少两种类型的事件,包含指示新装置的添加或现存装置的移除的事件。这些事件可在热插拔驱动程序中被排队,且可由仿真桥模块使用eventfd回调来读取。仿真桥模块可读取事件信息,且可将新装置插入到虚拟机中,或从虚拟机拔出被移除的装置。虚拟机操作系统内核可检测变化,且可调用经注册驱动程序采取适当行动。
表2说明热插拔事件的实例。
表2
在各种实施方案中,管理模块可管理总线指派(例如PCI总线数)及I/O地址空间指派使得为可被热插拔到网络装置中的任何模块或卡保留足够的总线数及地址空间。在总线联合体中,桥及装置可以树状结构连接。每一桥可针对下游装置使用特定范围的总线数及地址空间。
一般来说,在管理模块上运行的主机操作系统可为平台独立的,也独立于任何具体装置驱动程序。此可意味着主机操作系统内核可能不知道哪些装置连接到桥的下游或装置可能需要多少空间(当操作系统启动时,所述空间可能是不存在的)。相比而言,启动代码可特定于平台。启动代码可获知平台的硬件配置,且能够针对热插拔端口配置及分配资源。
在一些实施方案中,总线资源指派可为静态的,且总线数及地址空间可被硬编码到热插拔驱动程序中。I/O地址空间指派可取决于平台的配置,这意味着针对一个平台的指派不能应用到不同平台。
在一些实施方案中,总线资源可保留在启动代码中。在这些实施方案中,热插拔驱动程序不会将总线数或地址空间指派到桥或结构元件中的任何者。代替地,资源可由主机操作系统使用启动代码保留而自动指派。
在各种实施方案中,管理模块的虚拟机可能不用于指派任何总线资源。代替地,分配到虚拟桥的存储器的数量可在BIOS中指定。接着,BIOS可基于存储器可用性为桥指派基地址。接着,主机操作系统可使用桥的基地址将I/O地址空间分配到桥下游的装置。
从虚拟机的观点,没有桥被热插拔,因为当虚拟机启动时虚拟桥可被起始。因此,在各种实施方案中,虚拟机无需保留桥的任何总线数。虽然在虚拟机级别处,在启动时可指派总线数,但当装置被热插拔到虚拟机中时装置I/O地址空间可被指派。因为总线数及I/O地址控制可在运行时间期间被指派,所以虚拟机中的应用程序不会硬编码这些值,且应代替地使用内核API或热插拔API来找出此信息。
在各种实施方案中,当新结构元件附接到虚拟机时,虚拟机中的应用程序可能需要知道结构元件是在交换结构模块的第一插槽中还是在第二插槽中。如上文论述,虚拟结构元件可连接到虚拟机中的虚拟桥。虚拟结构元件可具有总线数,其可在主机操作系统级下匹配到下游总线数(例如,管理模块上桥/交换机的下游)。接着,可读取经附接桥(例如,交换结构模块上的桥)以确定可提供插槽数的桥标识符。
虚拟结构元件的总线数可由主机系统在虚拟机中指派。在各种实施方案中,插槽数到总线数的映射可从一个版本的BIOS改变成另一版本的BIOS或在仿真器进程的例子之间改变或在系统的不同配置之间改变。在各种实施方案中,然而,每一桥可具有桥标识符,其可用于识别桥。在这些实施方案中,插槽数到桥标识符的映射可例如由主机操作系统或网络管理员配置。接着,申请人可从能力寄存器读取桥插槽识别以找出桥标识符。
图13说明用于插槽识别的能力寄存器1300的实例。在此实例中,寄存器的第一字节可包含能力标识符1302。举例来说,在一些实施方案中,能力标识符可为4。在此实例中,第二字节可为到下一能力的指针1304。第三字节可含有插槽扩展1306信息。第四字节可含有桥标识符1308。在一些实施方案中,桥标识符可针对交换结构模块中的第一插槽被设置为1,且针对第二插槽被设置为2。通过读取此能力寄存器,虚拟桥所属于的插槽可被识别。通过读取虚拟桥的下游总线数,可识别交换结构模块被指派的总线数。
在各种实施方案中,热插拔驱动程序可提供底层ioctl接口,其可用作仿真器进程的接口以存取桥/交换机及主机操作系统内核。在一些实施方案中,热插拔驱动程序可组合多个底层ioctl调用,且将抽象函数提供到虚拟机。在这些实施方案中,这些抽象函数可通过读取或写入虚拟桥中的供应商特定能力寄存器来使用。
在各种实施方案中,仿真桥模块可通过虚拟桥进一步提供虚拟机可使用的各种命令。举例来说,仿真桥模块可包含添加装置的命令及删除装置的命令。在一些情况中,在发出命令之后且在可执行下一命令之间可能存在延迟。
表3提供热插拔驱动程序的API函数的实例。表4提供虚拟机中的虚拟机内核及应用程序可用的命令的实例。
表3
表4
下文提供说明热插拔API应用程序的实例代码。实例代码说明交换结构模块的添加或删除。实例函数首先确定交换结构模块的插槽结构。使用此结构,如果端口被停用,那么插槽添加步骤可启用热插拔端口。如果端口处于非透明模式中,那么函数接着可将桥端口设置到透明模式。在此步骤之后,函数可复位连接到交换结构模块的下游总线。如果未发生错误,那么函数可扫描热插拔端口且将发现于交换结构模块上的任何装置添加到主机操作系统内核。插槽删除可通过删除装置及停用热插拔端口完成。
在某些实施例中,提供一种用于存储可由一或多个处理器执行的数据及代码(指令)的非暂时性机器可读或计算机可读媒体。非暂时性机器可读或计算机可读媒体的实例包含存储器磁盘驱动器、光盘(CD)、光学驱动器、可卸除媒体匣、存储器装置等等。非暂时性机器可读或计算机可读媒体可存储基本程序设计(例如,指令、代码、程序)及数据结构,其在由一或多个处理器执行时提供上文描述的功能性。在某些实施方案中,非暂时性机器可读或计算机可读媒体可包含于网络装置中,且由媒体存储的指令或代码可由网络装置的一或多个处理器执行,从而导致网络装置执行上文描述的某些功能。在一些其它实施方案中,非暂时性机器可读或计算机可读媒体可与网络装置分离,但可由网络装置可存取,使得由媒体存储的指令或代码可由网络装置的一或多个处理器执行,从而导致网络装置执行上文描述的某些功能。非暂时性计算机可读或机器可读媒体可体现于非易失性存储器或易失性存储器中。
上文论述的方法、系统及装置是实例。各种实施例可视情况省略、替代或添加各种程序或组件。例如,在替代配置中,描述的方法可以与描述的顺序不同的顺序执行,及/或可添加、省略及/或组合各种阶段。关于某些实施例描述的特征可组合于各种其它实施例中。实施例的不同方面及元件可以类似方式组合。技术演进,且因此,许多元件是不会将本发明的范围限制到那些具体实例的实例。
在本发明中给出具体细节以提供对实施例的透彻理解。然而,可在没有这些具体细节的情况下实践实施例。举例来说,已在没有不必要的细节的情况下展示了众所周知的电路、过程、算法、结构及技术以便避免使实施例模糊。此描述仅提供实例实施例,且不希望限制其它实施例的范围、适用性或配置。而是,实施例的前述描述将向所属领域的技术人员提供使得能够实施各种实施例的描述。可在元件的功能及布置方面做出各种变化。
尽管已描述了具体实施例,但各种修改、替代、替代构造及等效物也涵盖于描述的实施例的范围内。本文描述的实施例不限于某些具体数据处理环境内的操作,而是能够在多种数据处理环境内自由操作。另外,尽管已使用特定系列的事务及步骤描述了某些实施方案,但所属领域的技术人员应明白,这些事务及步骤并非意味着具限制性且不限于所描述系列的事务及步骤。尽管一些流程图将操作描述为循序过程,但许多操作可并行或同时执行。另外,操作的顺序可被重新布置。过程可具有图中不包含的额外步骤。
此外,虽然已使用硬件与软件的特定组合描述了某些实施例,但应认识到,也可提供硬件与软件的其它组合。某些实施例可仅实施于硬件中或仅实施于软件(例如,代码程序、固件、中间件、微代码等等)中或使用其组合实施。本文描述的各种过程可以任何组合实施于同一处理器或不同处理器上。
在将装置、系统、组件或模块描述为经配置以执行某些操作或功能的情况下,可例如通过设计电子电路来执行操作、通过对可编程电子电路(例如微处理器)执行编程以执行操作(例如通过执行计算机指令或代码)或对经编程以执行存储于非暂时性存储器媒体上的代码或指令的处理器或核心编程、或其任何组合来完成此配置。进程可使用包含(但不限于)用于进程间通信的常规技术的多种技术通信,且不同进程对可使用不同技术,或相同进程对可在不同时间使用不同技术。
因此,将说明书及图式认为是说明性的而非具限制意义。然而,显而易见,可在不背离权利要求中所陈述的更广精神及范围的情况下对其进行添加、替代、删除及其它修改及改变。因此,尽管已描述了具体实施例,但这些具体实施例不希望具限制性。各种修改及等效物在所附权利要求书的范围内。
Claims (54)
1.一种网络装置,其包括:
一或多个处理器;及
存储器,其与所述一或多个处理器耦合且可由所述一或多个处理器读取,其中所述存储器包含当由所述一或多个处理器执行时导致所述一或多个处理器执行主机操作系统及虚拟机的指令,且其中所述存储器进一步包含当由所述一或多个处理器执行时导致所述一或多个处理器执行包括以下操作的操作的指令:
确立活动管理模块和备用管理模块;
通过所述活动管理模块检测组件存在于所述网络装置中,其中所述组件是物理组件,其中所述组件被确定为未知,且其中在所述网络装置的操作期间检测所述组件;
确定关于所述组件的信息;
将所述组件添加到所述主机操作系统,其中添加所述组件包含将关于所述组件的所述信息提供到所述主机操作系统,其中所述组件是交换结构模块,且其中所述交换结构模块促进所述活动管理模块、所述备用管理模块和所述网络装置的至少一个线卡之间的通信;
将所述组件添加到所述虚拟机,其中添加所述组件包含将关于所述组件的所述信息提供到所述虚拟机,其中,当所述组件被添加到所述虚拟机时,所述组件可由在所述虚拟机中执行的一或多个进程存取;及
通过所述备用管理模块检测所述交换结构模块,其中所述备用管理模块在故障转移事件中将所述交换结构模块添加到所述网络装置的硬件列表。
2.根据权利要求1所述的网络装置,其中所述虚拟机经配置以通知所述主机操作系统添加所述组件。
3.根据权利要求1所述的网络装置,其中所述主机操作系统经配置以起始将所述组件添加到所述虚拟机,其中所述主机操作系统与在所述网络装置上执行的管理程序通信,其中所述管理程序将所述组件添加到所述虚拟机。
4.根据权利要求1所述的网络装置,其中所述存储器进一步包含当由所述一或多个处理器执行时导致所述一或多个处理器执行仿真桥模块的指令,其中所述仿真桥模块对应于所述虚拟机中的虚拟桥,且其中将所述组件添加到所述虚拟机包含将所述组件连接到所述虚拟桥。
5.根据权利要求4所述的网络装置,其进一步包括:
物理桥,其中所述物理桥将所述网络装置连接到所述组件,且其中所述仿真桥模块仿效所述物理桥。
6.根据权利要求4所述的网络装置,其中所述仿真桥模块仿效与所述组件相关联的物理桥。
7.根据权利要求4所述的网络装置,其中所述存储器进一步包含当由所述一或多个处理器执行时导致所述一或多个处理器执行仿真器进程的指令,其中所述仿真桥模块由所述仿真器进程执行。
8.根据权利要求1所述的网络装置,其中所述存储器进一步包含当由所述一或多个处理器执行时导致所述一或多个处理器执行热插拔驱动程序的指令,其中所述热插拔驱动程序在所述主机操作系统中执行。
9.根据权利要求1所述的网络装置,其进一步包括:
系统模块,其中所述系统模块是经配置以检测所述组件的物理装置。
10.根据权利要求9所述的网络装置,其中,当所述系统模块检测到所述组件时,所述系统模块通知所述虚拟机。
11.根据权利要求9所述的网络装置,其中所述虚拟机经配置以作为透传装置存取所述系统模块。
12.根据权利要求1所述的网络装置,其中检测所述组件包含确定所述组件被添加到所述网络装置。
13.根据权利要求1所述的网络装置,其中检测所述组件包含针对未知组件扫描所述网络装置。
14.根据权利要求1所述的网络装置,其中所述存储器进一步包含当由所述一或多个处理器执行时导致所述一或多个处理器执行包含以下操作的操作的指令:
检测所述组件已从所述网络装置移除,其中所述组件在所述网络装置的操作期间被检测为移除;
从所述主机操作系统移除所述组件;及
从所述虚拟机移除所述组件。
15.根据权利要求14所述的网络装置,其中从所述虚拟机移除所述组件包含断开所述组件与仿真桥模块,其中所述仿真桥模块对应于所述虚拟机中的虚拟桥。
16.根据权利要求1所述的网络装置,其中将所述组件添加到所述主机操作系统包含使用所述主机操作系统的热插拔功能。
17.根据权利要求1所述的网络装置,其中将所述组件添加到所述虚拟机包含使用所述虚拟机中的热插拔功能。
18.根据权利要求1所述的网络装置,其中关于所述组件的信息包含插槽标识符,其中所述插槽标识符识别与所述组件相关联的物理插槽。
19.一种用于网络装置的方法,其包括:
通过所述网络装置中的活动管理模块检测组件存在于所述网络装置中,其中所述组件是物理组件,其中所述组件被确定为未知,其中在所述网络装置的操作期间检测所述组件,且其中主机操作系统及虚拟机在所述网络装置上执行;
确定关于所述组件的信息;
将所述组件添加到所述主机操作系统,其中添加所述组件包含将关于所述组件的所述信息提供到所述主机操作系统,其中所述组件是交换结构模块,且其中所述交换结构模块促进所述活动管理模块、备用管理模块和所述网络装置的至少一个线卡之间的通信;
将所述组件添加到所述虚拟机,其中添加所述组件包含将关于所述组件的所述信息提供到所述虚拟机,其中,当所述组件被添加到所述虚拟机时,所述组件可由在所述虚拟机中执行的一或多个进程存取;及
通过所述备用管理模块检测所述交换结构模块,其中所述备用管理模块在故障转移事件中将所述交换结构模块添加到所述网络装置的硬件列表。
20.根据权利要求19所述的方法,其中所述虚拟机经配置以通知所述主机操作系统添加所述组件。
21.根据权利要求19所述的方法,其中所述主机操作系统经配置以起始将所述组件添加到所述虚拟机,其中所述主机操作系统与在所述网络装置上执行的管理程序通信,其中所述管理程序将所述组件添加到所述虚拟机。
22.根据权利要求19所述的方法,其中所述网络装置经配置以执行仿真桥模块,其中所述仿真桥模块对应于所述虚拟机中的虚拟桥,且其中将所述组件添加到所述虚拟机包含将所述组件连接到所述虚拟桥。
23.根据权利要求22所述的方法,其中所述网络装置包含物理桥,其中所述物理桥将所述网络装置连接到所述组件,且其中所述仿真桥模块仿效所述物理桥。
24.根据权利要求22所述的方法,其中所述仿真桥模块仿效与所述组件相关联的物理桥。
25.根据权利要求22所述的方法,其进一步包括致使一或多个处理器执行仿真器进程,其中所述仿真桥模块由仿真器进程执行。
26.根据权利要求19所述的方法,其中所述网络装置经配置以执行热插拔驱动程序,其中所述热插拔驱动程序在所述主机操作系统中执行。
27.根据权利要求19所述的方法,其中所述网络装置包含系统模块,其中所述系统模块是经配置以检测所述组件的物理装置。
28.根据权利要求27所述的方法,其中,当所述系统模块检测到所述组件时,所述系统模块通知所述虚拟机。
29.根据权利要求27所述的方法,其中所述虚拟机经配置以作为透传装置存取所述系统模块。
30.根据权利要求19所述的方法,其中检测所述组件包含确定所述组件被添加到所述网络装置。
31.根据权利要求19所述的方法,其中检测所述组件包含针对未知组件扫描所述网络装置。
32.根据权利要求19所述的方法,其进一步包括:
检测所述组件已从所述网络装置移除,其中所述组件在所述网络装置的操作期间被检测为移除;
从所述主机操作系统移除所述组件;及
从所述虚拟机移除所述组件。
33.根据权利要求32所述的方法,其中从所述虚拟机移除所述组件包含断开所述组件与仿真桥模块,其中所述仿真桥模块对应于所述虚拟机中的虚拟桥。
34.根据权利要求19所述的方法,其中将所述组件添加到所述主机操作系统包含使用所述主机操作系统的热插拔功能。
35.根据权利要求19所述的方法,其中将所述组件添加到所述虚拟机包含使用所述虚拟机中的热插拔功能。
36.根据权利要求19所述的方法,其中关于所述组件的信息包含插槽标识符,其中所述插槽标识符识别与所述组件相关联的物理插槽。
37.一种非暂时性计算机可读媒体,其包含当由一或多个处理器执行时导致所述一或多个处理器执行包含以下操作的操作的指令:
通过网络装置中的活动管理模块检测组件存在于所述网络装置中,其中所述组件是物理组件,其中所述组件被确定为未知,其中在所述网络装置的操作期间检测所述组件,且其中主机操作系统及虚拟机在所述网络装置上执行;
确定关于所述组件的信息;
将所述组件添加到所述主机操作系统,其中添加所述组件包含将关于所述组件的所述信息提供到所述主机操作系统,其中所述组件是交换结构模块,且其中所述交换结构模块促进所述活动管理模块、备用管理模块和所述网络装置的至少一个线卡之间的通信;
将所述组件添加到所述虚拟机,其中添加所述组件包含将关于所述组件的所述信息提供到所述虚拟机,其中,当所述组件被添加到所述虚拟机时,所述组件可由在所述虚拟机中执行的一或多个进程存取;及
通过所述备用管理模块检测所述交换结构模块,其中所述备用管理模块在故障转移事件中将所述交换结构模块添加到所述网络装置的硬件列表。
38.根据权利要求37所述的非暂时性计算机可读媒体,其中所述虚拟机经配置以通知所述主机操作系统添加所述组件。
39.根据权利要求37所述的非暂时性计算机可读媒体,其中所述主机操作系统经配置以起始将所述组件添加到所述虚拟机,其中所述主机操作系统与在所述网络装置上执行的管理程序通信,其中所述管理程序将所述组件添加到所述虚拟机。
40.根据权利要求37所述的非暂时性计算机可读媒体,其中所述网络装置经配置以执行仿真桥模块,其中所述仿真桥模块对应于所述虚拟机中的虚拟桥,且其中将所述组件添加到所述虚拟机包含将所述组件连接到所述虚拟桥。
41.根据权利要求40所述的非暂时性计算机可读媒体,其中所述网络装置包含物理桥,其中所述物理桥将所述网络装置连接到所述组件,且其中所述仿真桥模块仿效所述物理桥。
42.根据权利要求40所述的非暂时性计算机可读媒体,其中所述仿真桥模块仿效与所述组件相关联的物理桥。
43.根据权利要求40所述的非暂时性计算机可读媒体,其进一步包含当由所述一或多个处理器执行时导致所述一或多个处理器执行仿真器进程的指令,其中所述仿真桥模块由仿真器进程执行。
44.根据权利要求37所述的非暂时性计算机可读媒体,其中所述网络装置经配置以执行热插拔驱动程序,其中所述热插拔驱动程序在所述主机操作系统中执行。
45.根据权利要求37所述的非暂时性计算机可读媒体,其中所述网络装置包含系统模块,其中所述系统模块是经配置以检测所述组件的物理装置。
46.根据权利要求45所述的非暂时性计算机可读媒体,其中,当所述系统模块检测到所述组件时,所述系统模块通知所述虚拟机。
47.根据权利要求45所述的非暂时性计算机可读媒体,其中所述虚拟机经配置以作为透传装置存取所述系统模块。
48.根据权利要求37所述的非暂时性计算机可读媒体,其中检测所述组件包含确定所述组件被添加到所述网络装置。
49.根据权利要求37所述的非暂时性计算机可读媒体,其中检测所述组件包含针对未知组件扫描所述网络装置。
50.根据权利要求37所述的非暂时性计算机可读媒体,其进一步包括:
检测所述组件已从所述网络装置移除,其中所述组件在所述网络装置的操作期间被检测为移除;
从所述主机操作系统移除所述组件;及
从所述虚拟机移除所述组件。
51.根据权利要求50所述的非暂时性计算机可读媒体,其中从所述虚拟机移除所述组件包含断开所述组件与仿真桥模块,其中所述仿真桥模块对应于所述虚拟机中的虚拟桥。
52.根据权利要求37所述的非暂时性计算机可读媒体,其中将所述组件添加到所述主机操作系统包含使用所述主机操作系统的热插拔功能。
53.根据权利要求37所述的非暂时性计算机可读媒体,其中将所述组件添加到所述虚拟机包含使用所述虚拟机中的热插拔功能。
54.根据权利要求37所述的非暂时性计算机可读媒体,其中关于所述组件的信息包含插槽标识符,其中所述插槽标识符识别与所述组件相关联的物理插槽。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662343733P | 2016-05-31 | 2016-05-31 | |
US201662343812P | 2016-05-31 | 2016-05-31 | |
US62/343,812 | 2016-05-31 | ||
US62/343,733 | 2016-05-31 | ||
PCT/US2017/028671 WO2017209854A1 (en) | 2016-05-31 | 2017-04-20 | Hot-plug hardware and software implementation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139924A CN108139924A (zh) | 2018-06-08 |
CN108139924B true CN108139924B (zh) | 2021-10-08 |
Family
ID=60477812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780003436.8A Active CN108139924B (zh) | 2016-05-31 | 2017-04-20 | 热插拔硬件及软件实施方案 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10671423B2 (zh) |
EP (1) | EP3341837A4 (zh) |
CN (1) | CN108139924B (zh) |
WO (1) | WO2017209854A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3341837A4 (en) | 2016-05-31 | 2019-05-22 | Avago Technologies International Sales Pte. Limited | IMPLEMENTATION OF HOT PLUG HARDWARE AND SOFTWARE |
US10713102B2 (en) * | 2016-07-05 | 2020-07-14 | Matias Klein | Unmanned ground and aerial vehicle attachment system |
US10382333B2 (en) | 2017-05-31 | 2019-08-13 | Juniper Networks, Inc. | Fabric path context-based forwarding for virtual nodes |
US10511546B2 (en) * | 2017-09-29 | 2019-12-17 | Juniper Networks, Inc. | Connecting virtual nodes in a network device using abstract fabric interfaces |
WO2019168532A1 (en) | 2018-03-01 | 2019-09-06 | Google Llc | High availability multi-single-tenant services |
US11194606B2 (en) * | 2018-11-28 | 2021-12-07 | Red Hat, Inc. | Managing related devices for virtual machines utilizing shared device data |
CN110750306B (zh) * | 2019-10-18 | 2022-09-30 | 厦门亿联网络技术股份有限公司 | 一种多类型设备热插拔统一识别的方法及系统 |
CN112928729A (zh) * | 2019-12-06 | 2021-06-08 | 国网上海市电力公司 | 一种支持热插拔管理的站域保护测控集成装置 |
US11822948B2 (en) * | 2019-12-12 | 2023-11-21 | Red Hat, Inc. | Peripheral component interconnect (PCI) device removal for virtual machines |
US11586458B2 (en) * | 2020-02-26 | 2023-02-21 | Red Hat, Inc. | Fast device discovery for virtual machines |
CN114615527A (zh) * | 2020-11-25 | 2022-06-10 | 中兴通讯股份有限公司 | 热插拔设备信息传输方法、计算机设备和可读介质 |
GB2605093B (en) * | 2021-03-01 | 2023-03-22 | Etl Systems Ltd | Modular electronic apparatus for distribution of satellite signals |
GB2604345B (en) | 2021-03-01 | 2023-03-22 | Etl Systems Ltd | Modular electronic apparatus for distribution of satellite signals |
CN113111016B (zh) * | 2021-04-19 | 2024-06-11 | 南京翼辉信息技术有限公司 | 单通道设备通信中间件 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013134749A (ja) * | 2011-12-27 | 2013-07-08 | Toshiba Corp | 情報処理装置、仮想マシン制御方法、及び仮想マシン制御プログラム |
CN103631639A (zh) * | 2013-11-04 | 2014-03-12 | 天津汉柏信息技术有限公司 | 一种用户态虚拟网卡的自动探测方法 |
CN105573820A (zh) * | 2015-12-15 | 2016-05-11 | 国云科技股份有限公司 | 一种Xen虚拟机光盘热插拔方法 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875308A (en) | 1997-06-18 | 1999-02-23 | International Business Machines Corporation | Peripheral component interconnect (PCI) architecture having hot-plugging capability for a data-processing system |
US6460106B1 (en) | 1998-10-20 | 2002-10-01 | Compaq Information Technologies Group, L.P. | Bus bridge for hot docking in a portable computer system |
US6338107B1 (en) | 1998-12-16 | 2002-01-08 | International Business Machines Corporation | Method and system for providing hot plug of adapter cards in an expanded slot environment |
US6363452B1 (en) | 1999-03-29 | 2002-03-26 | Sun Microsystems, Inc. | Method and apparatus for adding and removing components without powering down computer system |
US6567876B1 (en) | 1999-12-03 | 2003-05-20 | Hewlett-Packard Development Company, L.P. | Docking PCI to PCI bridge using IEEE 1394 link |
US6574695B1 (en) | 2000-01-06 | 2003-06-03 | Sun Microsystems, Inc. | System and method for providing hot swap capability using existing circuits and drivers with minimal changes |
US6708283B1 (en) | 2000-04-13 | 2004-03-16 | Stratus Technologies, Bermuda Ltd. | System and method for operating a system with redundant peripheral bus controllers |
US7246192B1 (en) | 2003-01-10 | 2007-07-17 | Marvell International Ltd. | Serial/parallel ATA controller and converter |
US7984219B2 (en) | 2005-08-08 | 2011-07-19 | Hewlett-Packard Development Company, L.P. | Enhanced CPU RASUM feature in ISS servers |
US7577686B1 (en) * | 2006-02-10 | 2009-08-18 | Ringcube Technologies, Inc. | Dynamic table configuration in a virtual machine |
JP4670676B2 (ja) | 2006-02-17 | 2011-04-13 | 日本電気株式会社 | スイッチ及びネットワークブリッジ装置 |
JP4810349B2 (ja) | 2006-08-11 | 2011-11-09 | 日本電気株式会社 | I/o装置及び方法 |
JP4839484B2 (ja) | 2007-04-06 | 2011-12-21 | 日本電気株式会社 | バス接続デバイス、バス接続方法およびバス接続用プログラム |
TW200841182A (en) | 2007-04-11 | 2008-10-16 | Asustek Comp Inc | Multimedia extendable module and computer device thereof |
JP2011516964A (ja) | 2008-04-01 | 2011-05-26 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | Pciデバイス用pciメモリ空間の確保 |
US8990468B2 (en) | 2008-05-28 | 2015-03-24 | Nec Corporation | I/O connection system, method and program |
JP5180729B2 (ja) | 2008-08-05 | 2013-04-10 | 株式会社日立製作所 | 計算機システム及びバス割当方法 |
US8719483B2 (en) | 2008-10-15 | 2014-05-06 | Nec Corporation | Multi-root PCI express switch, boot method thereof, and multi-root PCI manager program |
CN101459521A (zh) * | 2008-11-28 | 2009-06-17 | 福建星网锐捷网络有限公司 | 一种路由器线卡热插拔实现方法及装置 |
JP5401679B2 (ja) | 2009-02-19 | 2014-01-29 | 株式会社日立製作所 | 計算機システム、管理方法及び管理サーバ |
WO2011052002A1 (en) | 2009-10-27 | 2011-05-05 | Hitachi, Ltd. | Storage system mounted with plurality of processors |
US8554973B2 (en) | 2010-04-23 | 2013-10-08 | Hitachi, Ltd. | Storage device and method for managing size of storage device |
JP5598148B2 (ja) | 2010-08-05 | 2014-10-01 | 富士通株式会社 | スイッチング装置、情報処理装置、及びスイッチング装置の制御方法 |
US20120066676A1 (en) * | 2010-09-09 | 2012-03-15 | Yao Zu Dong | Disabling circuitry from initiating modification, at least in part, of state-associated information |
JP5110156B2 (ja) | 2010-12-03 | 2012-12-26 | 日本電気株式会社 | スイッチ及びネットワークブリッジ装置 |
US20130159572A1 (en) | 2011-12-16 | 2013-06-20 | International Business Machines Corporation | Managing configuration and system operations of a non-shared virtualized input/output adapter as virtual peripheral component interconnect root to multi-function hierarchies |
US9311127B2 (en) | 2011-12-16 | 2016-04-12 | International Business Machines Corporation | Managing configuration and system operations of a shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies |
US8787373B2 (en) | 2012-01-19 | 2014-07-22 | International Business Machines Corporation | Multicast miss notification for a distributed network switch |
US8913620B2 (en) | 2012-03-14 | 2014-12-16 | International Business Machines Corporation | Multicast traffic generation using hierarchical replication mechanisms for distributed switches |
CN202798756U (zh) | 2012-05-25 | 2013-03-13 | 四川九州电子科技股份有限公司 | 一种缆桥交换机 |
US8843688B2 (en) | 2012-09-11 | 2014-09-23 | International Business Machines Corporation | Concurrent repair of PCIE switch units in a tightly-coupled, multi-switch, multi-adapter, multi-host distributed system |
US9081604B2 (en) * | 2012-12-21 | 2015-07-14 | Red Hat Israel, Ltd. | Automatic discovery of externally added devices |
US9910690B2 (en) * | 2015-11-20 | 2018-03-06 | Red Hat, Inc. | PCI slot hot-addition deferral for multi-function devices |
EP3341837A4 (en) | 2016-05-31 | 2019-05-22 | Avago Technologies International Sales Pte. Limited | IMPLEMENTATION OF HOT PLUG HARDWARE AND SOFTWARE |
-
2017
- 2017-04-20 EP EP17807159.3A patent/EP3341837A4/en not_active Withdrawn
- 2017-04-20 WO PCT/US2017/028671 patent/WO2017209854A1/en active Application Filing
- 2017-04-20 CN CN201780003436.8A patent/CN108139924B/zh active Active
-
2018
- 2018-03-28 US US15/939,158 patent/US10671423B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013134749A (ja) * | 2011-12-27 | 2013-07-08 | Toshiba Corp | 情報処理装置、仮想マシン制御方法、及び仮想マシン制御プログラム |
CN103631639A (zh) * | 2013-11-04 | 2014-03-12 | 天津汉柏信息技术有限公司 | 一种用户态虚拟网卡的自动探测方法 |
CN105573820A (zh) * | 2015-12-15 | 2016-05-11 | 国云科技股份有限公司 | 一种Xen虚拟机光盘热插拔方法 |
Non-Patent Citations (2)
Title |
---|
An effective VM migration scheme for reducing resource fragments in cloud data centers;Hsueh-Wen Tseng等;《RACS "14: Proceedings of the 2014 Conference on Research in Adaptive and Convergent Systems》;20141031;第320-325页 * |
基于虚拟化环境的存储设备管理的研究与实现;熊星等;《微计算机信息》;20101231;第26卷(第36期);第26页、第46-47页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2017209854A1 (en) | 2017-12-07 |
EP3341837A4 (en) | 2019-05-22 |
EP3341837A1 (en) | 2018-07-04 |
US10671423B2 (en) | 2020-06-02 |
US20180276024A1 (en) | 2018-09-27 |
CN108139924A (zh) | 2018-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108139924B (zh) | 热插拔硬件及软件实施方案 | |
US10824457B2 (en) | High availability for virtual machines | |
JP5305848B2 (ja) | データ処理システム内で入出力(i/o)仮想化を管理するための方法およびデータ処理システムならびにコンピュータ・プログラム | |
US10333865B2 (en) | Transformation of peripheral component interconnect express compliant virtual devices in a network environment | |
CN101452424B (zh) | 用于管理输入/输出虚拟化的方法和数据处理系统 | |
US8359415B2 (en) | Multi-root I/O virtualization using separate management facilities of multiple logical partitions | |
JP4579298B2 (ja) | 仮想サーバー・ブレードを提供する方法および装置 | |
US10419344B2 (en) | Multichannel input/output virtualization | |
US10684880B2 (en) | Allocating and initializing I/O devices at virtual | |
US10509758B1 (en) | Emulated switch with hot-plugging | |
KR20160113227A (ko) | 신뢰 컴퓨팅을 위한 다중노드 허브 | |
US10303487B2 (en) | System and method for booting an information handling system | |
CN116069584B (zh) | 将监控服务扩展到可信云运营商域中 | |
CN112491570A (zh) | 一种虚拟网卡链路状态设置方法、装置及存储介质 | |
TW202338602A (zh) | 計算系統、電腦實施方法及電腦程式產品 | |
US11204777B1 (en) | Boot from SAN operation support on multi-pathing devices | |
US20240345857A1 (en) | Hypervisor-assisted scalable distributed systems | |
US20200301717A1 (en) | Computer activation method | |
CN117687706A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20181102 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 |