虚拟网络设备故障的检测和处理的制作方法
【专利摘要】本发明提供了用于虚拟设备故障的检测和处理的方法和装置。在一个方面,在运行有管理程序(又名虚拟机管理器)和多个虚拟机(VM)的主机平台上实现一种方法,所述多个VM共同地托管通过虚拟网络而通信地耦合的多个软件定义网络(SDN)和/或网络功能虚拟化(NFV)设备。在主机平台上运行的基于软件的实体被配置为监视所述多个虚拟网络设备,以检测这些虚拟网络设备的故障。响应于检测到虚拟网络设备故障,实现包含配置信息的消息,以对分组流进行重新配置,以便绕过已出故障的虚拟网络设备。
【专利说明】虚拟网络设备故障的检测和处理
【技术领域】
[0001] 概括地说,本发明的领域涉及计算机联网,更具体地说(而非排他性地),涉及用 于与软件定义网络(SDN)和网络功能虚拟化(NFV)相关联的虚拟网络设备故障的检测和处 理的技术。
【背景技术】
[0002] 访问计算机网络已经变成现今的计算机使用的随处可见的一部分。不论是访问企 业环境中的局域网(LAN)以访问共享的网络资源,还是通过LAN或其它接入点来访问互联 网,似乎用户总是登录到通过计算机网络而访问的至少一个服务上。此外,基于云的服务的 迅速扩张导致了对计算机网络的进一步使用,并且这些服务预计将变得越来越普遍。
[0003] 包括路由器、交换机、桥接器、网关和接入点的各种类型的设备有助于联网。大型 网络基础设施通常包括对电信类型网络单元的使用,该电信类型网络单元包括由诸如思科 系统、瞻博网络、阿尔卡特朗讯、IBM和惠普之类的公司制造的交换机和路由器。此类电信 交换机很复杂,以非常高的带宽进行操作,并且提供高级路由功能,以及支持不同的服务质 量(QoS)水平。企业和家庭用户最常使用诸如局域网(LAN)之类的专用网络。很多商业网 络通常也使用基于硬件和/或基于软件的防火墙等等。
[0004] 近年来,计算机系统的虚拟化已得到了快速增长,特别是在服务器部署和数据中 心方面。在常规方法下,服务器直接在诸如CPU、RAM、存储设备(例如,硬盘)、网络控制器、 I/O端口等等的物理硬件资源上运行操作系统的单个实例。在虚拟化方法下,使用这些物理 硬件资源来支持虚拟资源的相应实例,使得多个虚拟机(VM)可以运行在服务器的物理硬 件资源上,其中每一个虚拟机包括其自己的CPU分配、存储器分配、存储设备、网络控制器、 I/O端口等等。相同或者不同操作系统的多个实例随后运行在该多个VM上。此外,通过使 用虚拟机管理器(VMM)或"管理程序",可以在服务器运行时对虚拟资源进行动态地分配, 使得能够对VM实例进行增加、关闭或者改动用途,而无需对该服务器进行关闭。这提供了 对服务器使用的更大灵活性,以及对服务器处理资源的更佳使用,特别是对于多核处理器 和/或多处理器服务器而言。
[0005] 软件定义网络(SDN)和网络功能虚拟化(NFV)在过去几年中也已得到了快速的部 署。在SDN下,将作出关于将业务发送到哪里的决策的系统(控制平面)与向所选择的目 的地转发业务的底层系统(数据平面)解耦。可以使用SDN概念来促进网络虚拟化,使得 服务提供商能够通过软件应用和API(应用程序接口)来管理他们的网络服务的各个方面。 在NFV下,通过将网络功能虚拟化为软件应用,网络服务提供商可以在网络配置方面获得 灵活性,实现包括以下各项的显著益处:可用带宽的优化、成本节省、以及更快的新服务上 市时间。
[0006] 虽然服务器虚拟化和网络虚拟化的结合比常规的联网方法具有潜在的显著优点, 但增强的灵活性要付出代价。具体而言,由于(除了其它事项之外)现在管理设施不仅必 须寻址真实的硬件实体,而且也要寻址虚拟实体,因此虚拟化增加了网络管理复杂性。
【专利附图】
【附图说明】
[0007] 当结合附图时,通过参考以下的【具体实施方式】,本发明的上述方面和许多伴随的 优点将如同变得更好理解一样而变得更加显而易见,其中,除非另外明确指出,否则贯穿各 个视图的相同附图标记指代相同的部分:
[0008] 图1是根据一个实施例的、包括用于实现虚拟网络设备故障的检测和处理的软件 组件的一种系统架构的示意图;
[0009] 图2a是示出了图1的管理程序、虚拟机和虚拟网络设备的进一步细节的示意图;
[0010] 图2b是示出了在检测到将向其正常地转发分组的设备已出故障时,将该分组转 发到下一跳的示意图;
[0011] 图2c是示出了在检测到将向其正常地转发分组的设备已出故障时,将该分组转 发到下一跳的示意图;
[0012] 图2d是示出了在检测到将向其正常地转发分组的设备已出故障时,将该分组转 发到该设备的替代实现的示意图;
[0013] 图3是根据一个实施例的、示出了用于处理虚拟网络设备故障的操作和逻辑的流 程图;
[0014] 图4是一种示例性主机平台硬件和软件架构的示意图,通过该示例性主机平台硬 件和软件架构可以实现本文所公开的实施例的方面。
【具体实施方式】
[0015] 本文描述了用于与软件定义网络(SDN)和/或网络功能虚拟化(NFV)相关联的虚 拟网络设备故障的检测和处理的方法和装置的实施例。在以下描述中,为了提供对本发明 的实施例的透彻理解,阐述了众多具体的细节。但是,相关领域的技术人员可以在不使用这 些具体细节中的一个或多个情况下,或者在使用其它方法、组件、材料等等的情况下实施本 发明。在其它实例中,没有详细示出或者描述公知的结构、材料或者操作,以避免模糊本发 明的诸方面。
[0016] 贯穿本说明书对于"一个实施例"或者"一实施例"的引用意味着,结合该实施例 所描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,贯穿本说明书在 各个地方中出现的短语"在一个实施例中"或者"在一实施例中"并不必然地全部指代相同 的实施例。此外,可以以任何适当的方式将这些特定的特征、结构或特性组合在一个或多个 实施例中。
[0017] 服务提供商通常期望(并且在许多情况下强制),向他们提供网络应用设备(例 如,防火墙)的供应商已经实现了用于解决该设备的灾难性故障的故障处理特征。在防火 墙设备的情况下,通常标识的两种故障处理模式分别是:"出故障就导通(fail-to-wire)" 模式,其意味着其中将所有分组在线路上进行简单地转发的通过模式;以及"出故障就阻止 (fail-to-block) "模式,其意味着丢弃所有分组。
[0018] 在常规方法下,通过硬件设备来实现用于数据中心和企业的防火墙功能,其中防 火墙逻辑是结合软件和硬件来实现的(通常情况下)。这些硬件设备(和/或由供应商提 供的其它网络设备)被设计为既检测故障模式,又响应于此类检测到的故障来重新配置适 用的网络设备。
[0019] 为了将联网设备部署成虚拟机上的应用,在网络空间中存在着转换。这些虚拟机 可以存在于传统网络中或者存在于实现软件定义网络(SDN)和/或网络功能虚拟化(NFV) 的环境之中。如本文所使用的,术语"虚拟设备"、"虚拟化设备"、"虚拟网络设备"、"网络设 备"或只是"设备"可以互换地使用。此外,为了本文(包括权利要求书)的目的,与软件定 义网络相关或者被配置为实现网络功能虚拟化的任何基于软件的设备可以被更一般地称 为"虚拟网络设备",其中要理解的是,虚拟网络设备包括被配置为实现网络功能虚拟化和/ 或与软件定义网络相关的操作的网络设备或虚拟化实体。因此,在以下描述中,术语虚拟网 络设备或SDN也包括所有的NFV设备。
[0020] 在图1中示出了被配置为有助于实现实施例的诸方面的示例性系统架构100。系 统架构100包括主机平台102,主机平台102具有在由一个或多个虚拟机和虚拟设备所实现 的虚拟实体之间共享的物理资源。注意,除了运行虚拟设备之外,VM可以用于运行端用户 应用(例如,网页服务器)。这些虚拟实体包括多个虚拟机104 ("typ"意味着典型的),每 一个虚拟机托管(host)相应的设备106,本文还通过标记进行了描述和指代,例如,VMA、 VMF、VMN、设备A、设备F和设备N。设备106与虚拟交换机108相通信而耦合,虚拟交换 机108与管理程序110 (又名虚拟机监视器)相关联。同样被描述为与管理程序110相关联 的是虚拟到物理网络接口 112、应用故障检测模块114和应用故障控制器通知模块116。主 机平台102包括:网络适配器或网络接口控制器(NIC) 117,其有助于虚拟到物理网络接口 112与物理以太网交换机118之间的通信,物理以太网交换机118相应地耦合到网络120。 系统架构100还包括网络控制器122,网络控制器122包括应用故障控制器处理模块124。
[0021] 通常,网络控制器122(其还称为SDN控制器)负责流的整个路径。在一些实例中, SDN控制器只对虚拟交换机进行配置,依赖于其它机制来配置物理路径。SDN控制器可以在 预先配置的环境中进行操作,其中,当VM被创建时建立流路径,或者流路径可以是反应式 的,仅仅当检测到流中的第一分组时才建立该流表条目。
[0022] 在图1中所示出的实施例中,在持续进行的操作期间,网络控制器122向虚拟交换 机108和物理以太网交换机118发出交换机流控制消息126和128。这些交换机流控制消 息包含流配置信息,虚拟交换机108和物理以太网交换机118中的每一个使用该流配置信 息来进行以下操作:管理/处理各种分组流,并且通过更新在转发/路由表109 (其用于虚 拟交换机108)和转发/路由表119 (其用于物理以太网交换机118)中的表条目来路由/转 发相应的分组。此外,在持续进行的操作期间,使用应用故障检测模块114来执行虚拟设备 故障检测操作。响应于检测到应用故障,从应用故障检测模块114向设备故障控制器通知 模块116发送故障通知132。相应地,设备故障控制器通知模块116向网络控制器122发送 设备故障控制器通知消息134,其中,由设备故障控制器处理模块124接收和处理设备故障 控制器通知消息134。响应于接收设备故障控制器通知消息,设备故障控制器处理模块124 确定要实现的配置上的改变,其中,根据需要(例如,可能不需要对物理交换机进行重新配 置),配置改变是通过使用交换机流配置消息126和128来实现的。
[0023] 在图2a中示出了有助于实现前述操作的主机平台102上的组件和实体的进一步 细节。如所示出的,每一个VM104托管设备106,设备106包括普通分组处理块200。每一 个VM还包括网络堆栈202。除了虚拟交换机108之外,设备故障检测模块114、设备故障控 制器通知模块116和网络接口 112、管理程序110还被描述为包括"特殊"分组学习/配置 模块204。
[0024] 在一个实例化中,在持续进行的操作期间,设备故障检测模块114发出询问 (challenge)消息,该询问消息被发送作为针对设备206中的普通分组处理块200的分组询 问206。(出于说明性的目的,在图2a中描绘了直接消息路径;这些消息的实际转发路径是 通过虚拟交换机108和网络堆栈202)。该询问消息包含针对设备106中的逻辑(出于说明 性的目的,其被描述为包含在普通分组处理块200之中)的询问。该设备逻辑被配置为使 用已知的响应来对该询问进行响应,其中在分组响应208中将该已知响应返回给设备故障 检测模块114。在一个实施例中,如果在可配置的时间段之内没有接收到响应,则从设备故 障检测模块114向设备故障控制器通知模块116发送故障通知132。
[0025] 在虚拟化处理环境下,给定的虚拟机将运行操作系统(0S)实例,该0S实例包括其 中运行一个或多个应用(通常是多个应用)的用户空间等等。在本文所示出的实施例中, 这些应用包括设备106,设备106是对各种类型的虚拟网络设备的举例说明。每一个VM将 包括网络堆栈的实例(例如,网络堆栈202),网络堆栈通常实现为0S内核的一部分,但也可 以实现在0S中的另一个层处。
[0026] 在常规方法下,可以使用简单的ping(例如,保持活动的ping)来确定设备是否是 操作的。但是,由于ping是由内建在网络堆栈中的ICMP回显功能来处理,因此ping的使 用仅用于指示该网络堆栈本身是操作的。因此,ping的使用可能不足以确定用于实现虚拟 网络设备的应用是否已出故障。例如,如果虚拟网络设备应用被"挂起"或者以其它方式而 崩溃,该网络堆栈可能仍然是操作的,并且因此将返回响应于ping的ICMP回显(如同没有 什么错误)。
[0027] 在前述的询问/响应方案下,与位于该设备本身内的逻辑或者与以其它方式与该 设备逻辑地相关联的逻辑交换该询问/响应对,而不是与VM中的底层网络堆栈进行交换。 由于直接对实际的设备(应用)本身进行询问,因此对该设备的操作状态的验证可以被证 实。
[0028] 在一些实施例下,可以在无需对分组处理逻辑进行修改的情况下,向设备应用发 送询问和从设备应用接收响应。在这些实例中,询问分组206和分组响应208表示"普通" 分组。但是,在其它实施例中,对设备应用进行增强(augment),以实现该询问/响应方案。 在这些实施例下,使用"特殊"分组询问206和分组响应208。对这些特殊分组进行配置, 使得它们将包括被正常地传递通过该设备并且以已知方式来进行处理的一类数据。例如, 防火墙被配置为传递通过满足适用的防火墙规则的分组。在各个实施例中,可以通过以 下方式来确定这些特殊询问分组:a)来自于管理实体的预先配置;或者b)通过监视名义 (nomial)分组流来进行学习(例如,通过使用捕获/重放),其可以由特殊分组学习/配置 模块204来实现。此外,对于设备的每一个实例,可以以不同的方式来配置该特殊分组询问 /响应。
[0029] 在另一个例子中,网络设备是WAN(广域网)加速设备。在一个实施例中,以确定 性方式对已知分组进行压缩,并且将其用于该特殊分组询问/响应中。
[0030] 除了图1和图2中所示出的配置之外,可以在虚拟交换机108自身中实现应用故 障检测模块114。还要注意的是,在不同的管理程序架构下,在本文诸图中的管理程序块内 所描绘的实体和组件可以被视作为单独的组件。例如,虚拟交换机和网络接口两者之一或 者两者可以包括被视作为与管理程序相分离的组件。
[0031] 图3示出了通过系统架构100中的各种实体和组件来实现的、用于检测设备故障 情形并且响应于所检测到的故障情形而重新配置分组流的操作和逻辑的流程图300。如框 302和判断框304所示出的,在以环路(loop-wise)方式持续进行的基础上,以上文所描述 的方式来执行询问/响应。例如,在图2a中所示出的配置下,应用故障检测模块114在可 配置的定期基础上发出针对在主机平台102上运行的VM中的适用的设备(例如,设备A、F 和N)中的每一个的询问。设备A、F和N中的每一个返回用于指示它们的操作状态的响应。 如上文所讨论的,如果没有返回响应于询问的响应分组,则推定该设备已出故障,或者以其 它方式没有正确地进行操作。
[0032] 响应于检测到设备已出故障,该流程图逻辑行进到框306,其中,应用故障检测模 块114通过故障通知消息132向设备故障控制器通知模块116通知该故障。如本文所使用 的,术语模块包括:任何基于软件的实体,其可以包括模块、功能、方法、应用等等中的一个 或多个。此外,模块可以被配置为存储诸如参数等等之类的数据。因此,可以将设备故障控 制器通知模块116实现为模块、功能或方法的集合、应用、或者被配置为执行本文中设备故 障控制器通知模块116的操作的任何其它形式的软件实体。
[0033] 设备故障控制器通知模块116包括:用于响应于设备故障而实现对网络流路径的 适当重新配置的配置数据和逻辑。因此,响应于接收故障通知消息132,设备故障控制器通 知模块将确定需要实现的适用的配置改变,并且向网络控制器122发送相应的应用故障控 制器通知消息134,如框308中所描绘的。该消息将包含用于标识该设备已出故障的信息, 以及用于应当以该设备为目标的分组的故障后条件状态(即,出故障就导通、出故障就阻 止或者一个或多个替代的故障后条件状态)。例如,替代的故障后条件状态可以指示出故障 就导通状态和出故障就阻止状态的替代方案,例如出故障就替代(fail-to-alternative) 模式,其中,可以将分组自主地路由到类似的设备(例如,可以在同一物理平台上或者在该 网络中的另一个平台上实例化的第二防火墙设备)。
[0034] 接着,在框310中,应用故障控制器处理模块124确定该故障情形,以及生成适用 的交换机流配置消息,并且向虚拟交换机108和/或物理以太网交换机118发送这些消息。 在一个实施例中,应用故障控制器处理模块124被配置为:使得网络控制器122能够对转发 /路由表109和119中的交换机表条目或者虚拟交换机108和物理以太网交换机118所访 问的其它表条目(未示出)进行编程/更新,以确保鉴于该出故障的设备和情形,根据需要 对分组/流进行导引。
[0035] 如判断框312和框314所描绘的,在出故障就导通情形的一个实施例下,网络控制 器122 (通过应用故障控制器处理模块124)被配置为对虚拟交换机108和/或物理以太网 交换机118进行编程,以确保分组不被发送到出故障的设备,而是被直接路由到期望的下 一跳,该期望的下一跳可以是同一平台上的另一个VM上的另一个设备,或者可以位于通过 网络而耦合主机平台的单独平台上。例如,图2b示出了网络适配器117接收到输入(来自 于网络)分组210,并且要将其转发到设备A的情形。但是,检测到设备A已出故障,并且因 此将分组210转发到下一跳(在该图中(用实线)将其描绘为设备N,设备N是同一平台上 的另一个设备),或者替代地将分组210发送回网络,以便将其转发给另一个平台(如用虚 线所描绘的)。
[0036] 如判断框316和框318所描绘的,在出故障就阻止情形的一个实施例下,网络控制 器122被配置为对虚拟交换机108和/或物理以太网交换机118进行编程,以确保分组不 被发送到出故障的设备,并且在该网络中所述分组具有控制权的最早的点处被阻止。在适 用的状况下,这可以实现宝贵的网络资源的显著节省,并且提高网络的适应能力。在图2c 中,描述了在网络适配器117处或者在虚拟交换机108处,对目的地通常为出故障的设备F 的输入分组212进行阻止。
[0037] 除了常规的出故障就导通型和出故障就阻止型故障情形之外,实施例可以被配置 为支持各种出故障就替代型故障情形。例如,如判断框320和框322所示出的,在出故障就 替代型情形的一个实施例下,网络控制器122被配置为对虚拟交换机108和/或物理以太 网交换机118进行编程,以确保分组不被发送到该设备,而是被重定向到该设备的一个替 代实现。例如,图2d示出了正常地将网络适配器117接收的输入分组214转发到设备F的 状况,设备F被配置为实现与处理该分组相关的一个或多个功能。但是,检测到设备F已出 故障,所以替代地将分组210转发到设备N,设备N是设备F的一个替代实现,并且(因此) 被配置为执行与设备F相同的虚拟设备功能。
[0038] 图4示出了包括平台硬件402和各种基于软件的组件的示例性主机平台结构400。 平台硬件402包括通过互连410来耦合到存储器接口 406和输入/输出(I/O)接口 408的 中央处理单元(CPU)404。在一些实施例中,可以将前述组件中的全部或者一部分集成在片 上系统(SoC)上。存储器接口 406被配置为有助于对系统存储器412的访问,系统存储器 412通常将是与所述SoC相分离的。
[0039] I/O接口 408是对由平台硬件402提供的各种I/O接口的举例说明。如上文所讨 论的,I/O接口 408可以实现为分立组件(例如,ICH等等),或者其可以实现在SoC上。此 夕卜,I/O接口 408还可以实现为I/O层次,例如,快速外围组件互连(PCIe?)I/O层次。I/O 接口 408还有助于各个I/O资源和设备以及其它平台组件(例如,核心405)之间的通信。 这些组件包括非易失性存储设备,例如,通过磁盘控制器416而通信地耦合到I/O接口 408 的磁盘驱动器414、固件存储418、NIC420和各种其它I/O设备(它们被统一描述为其它 硬件422)。
[0040] 通常,CPU404可以包括单核处理器或多核处理器(例如,通过M核心405所描绘 的)。这些多核用于执行在一个或多个非易失性存储设备(如磁盘驱动器414所描绘的) 中存储的各种软件组件424 (例如,模块和应用)。更一般地,磁盘驱动器414表示各种类型 的非易失性存储设备,其包括基于磁学和基于光学的存储设备、以及诸如固态驱动器(SSD) 之类的固态存储设备或闪存。可选地,可以将软件组件424的全部或者一部分存储在通过 网络426来访问的一个或多个存储设备(未不出)上。
[0041] 在启动或者运行时操作期间,将软件组件424和固件组件428加载到系统存储器 412中(如FW空间所描绘的),并且在核心405上作为包括执行线程等等的进程来执行。取 决于具体的处理器或SoC架构,可以将给定的"物理"核心实现为一个或多个逻辑核心,其 中将进程分配到各个逻辑核心上。例如,在Intel?超线程?架构下,将每一个物理核心实现 成两个逻辑核心。
[0042] 在平台硬件402的典型系统启动下,将对固件428进行加载,并且在系统存储器 1012中对固件428进行配置,接着启动主机OS430。随后,将启用管理程序432 (其通常 可以包括在主机0S430上运行的应用)。可以随后使用管理程序432来启用各种虚拟机 (疆^),各种虚拟机中的每一个将被配置为使用系统存储器1012的不同部分(即,地址空 间)。相应地,每一个虚拟机VM:_n可以分别用于托管各自的操作系统434^
[0043] 在运行时操作期间,管理程序432实现对各种系统资源(例如,系统存储器412、核 心405和磁盘驱动器414)的重新配置。通常,虚拟机在它们托管的操作系统与底层平台硬 件402之间提供抽象(结合管理程序432),使这些硬件资源能在VMg之间共享。从每一个 托管的操作系统的角度来看,该操作系统"拥有"整个平台,并且不了解在虚拟机上运行的 其它操作系统的存在。在现实中,每一个操作系统仅仅访问由管理程序432向其分配的资 源和/或资源部分。
[0044] 如图4中进一步示出的,每一个操作系统包括内核空间和用户空间,这两个空间 均实现为系统存储器412中的存储器空间。内核空间是受保护的,并且其用于运行包括网 络堆栈的操作系统内核组件。与此同时,使用操作系统的用户空间来运行用户应用,如设备 1、2和3以及应用1A-C、2A-C和NA-C所描绘的。
[0045] 通常,设备1、2和3是对可以在平台硬件402上的虚拟机上运行的各种SDN或NFV 设备的举例说明。为了简单起见,将各个VM:_n描绘为托管一组类似的软件应用;但是,这仅 仅用于说明性的目的,由于用于给定的平台的VM可以托管类似的应用,或者可以托管不同 的应用。类似地,每一个VMg可以托管单个的虚拟网络设备(如所示出的),可以托管多个 虚拟网络设备,或者可以托管任何虚拟网络设备。
[0046] 当与常规的架构和组件相比时,本文所描述的实施例提供了增强的功能和灵活 性。例如,一个优点在于:在主机平台内实现设备故障技术,而无需依赖于使用位于系统之 外的组件或者连接到位于系统之外的组件。这允许对于故障具有更迅速的响应时间,更小 的虚警的可能性。例如,如果外部管理器负责发送询问,则外部管理器与要进行测试的平台 之间的路径中的故障可能导致一个故障被检测到,即使在该平台中不存在问题。
[0047] 此外,这些实施例还提供了响应于传统物理网络设备故障状况和其它故障情形的 改进。这允许使用虚拟网络设备来替代物理网络设备,同时保持相同或者类似的功能,或者 甚至增强功能。例如,由于完全地通过软件来定义虚拟网络设备,因此它们可以被配置为 仅通过更新应用软件来提供另外的功能。此外,由于与虚拟网络设备的连接是虚拟的而不 是物理的,因此响应于检测到故障,或者仅仅为了提供另外的分组处理功能,可以在运行中 (onthefly)对通过虚拟网络设备的分组流进行重新路由。例如,执行防火墙功能和深度 包检测的单独虚拟网络设备可以通过软件应用升级来进行组合,或者可以通过经由虚拟连 接将这两个虚拟网络设备连接在一起来进行组合。
[0048] 虽然参照特定的实现已描述了一些实施例,但根据一些实施例,其它实现是可能 的。另外,附图中所示出的和/或本文所描述的单元的排列和/或顺序或者其它特征,并不 需要以所示出的和所描述的特定方式来进行排列。根据一些实施例,许多其它的排列是可 能的。
[0049] 在图中所示出的每一个系统中,在一些情况下单元可以具有相同的附图标记或者 不同的附图标记,以暗示所表示的这些单元可以是不同的和/或相同的。但是,一个单元可 以是足够灵活的,以便具有不同的实现,并且结合本文所示出或者所描述的一些系统或全 部系统来工作。图中所示出的各种单元可以是相同的或者不同的。哪一个称为第一单元以 及哪一个称为第二单元是任意的。
[0050] 在说明书和权利要求书中,可以使用术语"耦合"和"连接"连同它们的派生词。应 当理解的是,这些术语并非旨在作为相互的同义词。更确切地说,在特定的实施例中,"连 接"可以用于指示两个或更多单元之间直接相互物理接触或电接触。"耦合"可以意味着两 个或更多个单元之间直接相互物理接触或电接触,或者可以应用于软件接口等等。但是, "耦合"还可以意味着两个或更多个单元之间不是直接相互接触,而是彼此之间进行协同或 者交互。
[0051] 实施例是本发明的实现或者例子。在本说明书中对于"实施例"、"一个实施例"、 "一些实施例"或"其它实施例"的引用,意味着结合这些实施例所描述的特定特征、结构或 者特性包括在本发明的至少一些实施例而非必然所有的实施例中。出现的各种"实施例"、 "一个实施例"或"一些实施例"不必全部指代同一实施例。
[0052] 并非本文所描述和所示出的所有组件、特征、结构、特性等等需要包括在一个特定 的实施例或多个实施例中。如果说明书声明"可以"、"或许"、"能够"或"可能"包括组件、 特征、结构或特性,则并非需要包括该特定的组件、特征、结构或特性。如果说明书或权利要 求书提及"一个"或"一"要素,则其并非意味着只存在一个该要素。如果说明书或权利要 求书提及"另外的"要素,则其并不排除存在一个以上的该另外的要素。
[0053] 如上文所讨论的,本文的实施例的各个方面可以通过相应的软件和/或固件组件 和应用(例如,在服务器上运行的软件,或者由诸如网络控制器之类的网络单元上的嵌入 式处理器执行的固件)来促进。因此,本发明的实施例可以用作为或者用于支持软件程序、 软件模块、固件、和/或在某种形式的处理核心(例如,计算机的CPU、多核处理器的一个或 多个核心)上执行的分布式软件、在处理器或者核心上运行的虚拟机或者以其它方式在机 器可读介质上或者之内实现或实施的虚拟机。机器可读介质包括用于存储或发送具有机器 (例如,计算机)可读的形式的信息的任何装置。例如,机器可读介质可以包括只读存储器 (ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪存设备等等。
[0054] 所示出的本发明的实施例的以上描述(包括摘要中所描述的内容)不旨在是详尽 的或者不旨在将本发明限制于所公开的精确形式。虽然本文出于说明性的目的而描述了本 发明的特定实施例和示例,但是在本发明的保护范围之内各种等效的修改是可能的,如相 关领域的技术人员将认识到的。
[0055] 考虑到上面的【具体实施方式】,可以对本发明做出这些修改。所附权利要求书中所 使用的术语不应被解释为将本发明限制于说明书和附图中所公开的特定实施例。更确切地 说,本发明的保护范围完全地由所附权利要求书来确定,所附权利要求应根据所建立的权 利要求解释的教条进行解释。
【权利要求】
1. 一种在主机平台上实现的方法,在所述主机平台上运行多个虚拟机(VM),所述多个 VM共同地巧管通过虚拟网络而通信地禪合的多个虚拟网络设备,所述方法包括: 使用在所述主机平台上运行的基于软件的实体来监视所述多个虚拟网络设备,W检测 所述虚拟网络设备的故障;W及 响应于检测到虚拟网络设备故障,使得对分组流进行重新配置,W便绕过已出故障的 虚拟网络设备。
2. 根据权利要求1所述的方法,其中,监视所述多个虚拟网络设备W检测故障包括: 从所述基于软件的实体向虚拟网络设备发送询问; 从所述虚拟网络设备接收响应; 当没有从一个虚拟网络设备接收到响应于发送给所述虚拟网络设备的询问的响应时, 检测到所述虚拟网络设备的故障。
3. 根据权利要求1或2所述的方法,其中,所述基于软件的实体实现为用于促进所述 VM的操作的管理程序的一部分。
4. 根据前述权利要求中任一项所述的方法,其中,所述虚拟网络包括通过在所述主机 平台上运行的软件来实现的虚拟交换机,并且所述主机平台通信地禪合到物理交换机,并 且其中,通过执行包括W下各项的操作来使得对分组流进行重新配置,W便绕过所述已出 故障的虚拟网络设备: 向所述主机平台外部的网络控制器发送设备故障通知消息,所述设备故障通知消息包 括标识W下各项中的至少一项的数据:所述已出故障的虚拟网络设备的身份、故障状况和 网络重新配置参数;W及 生成至少一个交换机流配置消息,并且向所述虚拟交换机和所述物理交换机中的至少 一个发送所述至少一个交换机流配置消息。
5. 根据权利要求4所述的方法,其中,交换机流配置消息包括;用于更新虚拟交换机或 物理交换机所使用的转发表和/或路由表的至少一个条目。
6. 根据权利要求4所述的方法,还包括: 维护其中存储设备故障通知和网络重新配置参数的模块拟及 响应于W下各项中的一项,在所述模块中执行查询W确定在所述设备故障通知消息中 所发送的所述数据;检测到虚拟网络设备故障,或者接收到虚拟网络设备故障的通知。
7. 根据前述权利要求中任一项所述的方法,还包括: 响应于检测到虚拟网络设备故障, 确定所述故障是出故障就导通型故障;W及 使得对分组流进行重新配置,W便确保分组不被发送到所述出故障的虚拟网络设备, 而是被直接路由到下一跳。
8. 根据前述权利要求中任一项所述的方法,还包括: 响应于检测到虚拟网络设备故障, 确定所述故障是出故障就阻止型故障;W及 使得对分组流进行重新配置,W便确保分组不被发送到所述出故障的虚拟网络设备, 并且在所述虚拟网络中所述分组具有控制权的最早的点处被阻止。
9. 根据前述权利要求中任一项所述的方法,其中,所述多个虚拟网络设备包括一个虚 拟网络设备的多个实例,所述多个实例包括所述虚拟网络设备的替代实现,所述方法还包 括: 响应于检测到具有替代实现的出故障的虚拟网络设备, 确定所述故障是出故障就替代型故障;W及 使得对分组流进行重新配置,W便确保分组不被发送到所述出故障的虚拟网络设备, 而是被重定向到所述出故障的虚拟网络设备的替代实现。
10. -种非暂时性机器可读介质,具有存储在其上的多个指令,所述多个指令被配置为 在主机平台的处理器上执行,W使得执行包括W下各项的操作: 监视通过在所述主机平台上运行的多个虚拟机(VM)而实现的多个虚拟网络设备,W 检测所述虚拟网络设备的故障;W及 响应于检测到虚拟网络设备故障,生成应用故障通知消息,并且向在所述主机平台外 部的网络控制器发送所述应用故障通知消息,所述应用故障通知消息包括标识W下各项中 的至少一项的数据:已出故障的虚拟网络设备的身份、故障状况和网络重新配置参数, 其中,所述应用故障通知消息中的数据被配置为;使得所述网络控制器实现分组流的 重新配置,W便绕过所述已出故障的虚拟网络设备。
11. 根据权利要求10所述的非暂时性机器可读介质,其中,所述指令的一部分包括设 备故障检测模块,所述设备故障检测模块被配置为在被执行时通过执行包括W下各项的操 作来监视所述多个虚拟网络设备W检测故障: 向虚拟网络设备发送询问; 从所述虚拟网络设备接收响应; 当没有从一个虚拟网络设备接收到响应于发送给所述虚拟网络设备的询问的响应时, 检测到所述虚拟网络设备的故障。
12. 根据权利要求11所述的非暂时性机器可读介质,其中,所述多个指令的至少一部 分包括管理程序,并且其中,所述管理程序包括所述设备故障检测模块。
13. 根据权利要求10-12中任一项所述的非暂时性机器可读介质,其中,在所述主机平 台的操作期间,所述多个VM禪合到虚拟交换机,并且所述主机平台通信地禪合到物理交换 机,并且其中,所述多个指令还包括应用故障控制器处理模块,所述应用故障控制器处理模 块被配置为通过所述指令的执行而在网络控制器上实现,并且其中,所述应用故障控制器 处理模块被配置为执行包括W下各项的操作: 接收去往所述主机平台外部的网络控制器的设备故障通知消息,所述设备故障通知消 息包括标识W下各项中的至少一项的数据:所述已出故障的虚拟网络设备的身份、故障状 况和网络重新配置参数;W及 生成至少一个交换机流配置消息,并且向所述虚拟交换机和所述物理交换机中的至少 一个发送所述至少一个交换机流配置消息。
14. 根据权利要求13所述的非暂时性机器可读介质,其中,交换机流配置消息包括;用 于更新虚拟交换机或物理交换机所使用的转发表和/或路由表的至少一个条目。
15. 根据权利要求14所述的非暂时性机器可读介质,其中,所述指令在所述主机平台 和所述网络控制器上的执行还执行包括W下各项的操作: 响应于检测到虚拟网络设备故障, 确定所述故障是出故障就导通型故障;w及 对所述虚拟交换机或所述物理交换机所使用的转发表和/或路由表中的至少一个中 的条目进行更新,W使得对分组流进行重新配置,W便确保分组不被发送到所述出故障的 虚拟网络设备,而是被直接路由到下一跳。
16. 根据权利要求14或15所述的非暂时性机器可读介质,其中,所述指令在所述主机 平台和所述网络控制器上的执行,还执行包括W下各项的操作: 响应于检测到虚拟网络设备故障, 确定所述故障是出故障就阻止型故障;W及 对所述虚拟交换机或所述物理交换机所使用的转发表和/或路由表中的至少一个中 的条目进行更新,W使得对分组流进行重新配置,W便确保分组不被发送到所述出故障的 虚拟网络设备,并且在所述虚拟网络中所述分组具有控制权的最早的点处被阻止。
17. 根据权利要求14-16中任一项所述的非暂时性机器可读介质,其中,所述多个虚拟 网络设备包括一个虚拟网络设备的多个实例,所述多个实例包括所述虚拟网络设备的替代 实现,并且其中,所述指令在所述主机平台和所述网络控制器上的执行还执行包括W下各 项的操作: 响应于检测到具有替代实现的出故障的虚拟网络设备, 确定所述故障是出故障就替代型故障;W及 对所述虚拟交换机或所述物理交换机所使用的转发表和/或路由表中的至少一个中 的条目进行更新,W使得对分组流进行重新配置,W便确保分组不被发送到所述出故障的 虚拟网络设备,而是被重定向到所述出故障的虚拟网络设备的替代实现。
18. 根据权利要求10-17中任一项所述的非暂时性机器可读介质,还包括: 被配置用于实现其中存储设备故障通知和网络重新配置参数的模块的多个指令,并且 其中,响应于W下各项中的一项,所述指令的执行在所述模块中执行查询W确定在所述设 备故障通知消息中所发送的所述数据;检测到虚拟网络设备故障,或者接收到虚拟网络设 备故障的通知。
19. 根据权利要求10-18中任何一项所述的非暂时性机器可读介质,还包括:被配置为 实现虚拟网络设备的多个指令。
20. -种装置,包括: 处理器,其包括多个处理器核也; 操作地禪合到所述处理器的系统存储器; 网络接口控制器(NIC)或网络适配器,其操作地禪合到所述处理器; 存储设备,具有存储在其上的多个指令,所述多个指令包括:包含管理程序的指令,所 述管理程序被配置为通过所述处理器核也中的一个或多个来执行,W使得执行包括W下各 项的操作: 启用所述管理程序,并且使用所述管理程序来通过所述多个处理器核也管理多个虚 拟机(VM)的执行,所述多个VM共同地巧管通过虚拟网络而通信地禪合的多个虚拟网络设 备; 监视所述多个虚拟网络设备,W检测所述虚拟网络设备的故障;W及 响应于检测到虚拟网络设备故障,生成应用故障通知消息,所述应用故障通知消息包 括标识w下各项中的至少一项的数据:已出故障的虚拟网络设备的身份、故障状况和网络 重新配置参数,并且向在所述装置外部的网络控制器发送所述应用故障通知消息, 其中,所述应用故障通知消息中的数据被配置为:使得所述网络控制器实现分组流的 重新配置,W便绕过所述已出故障的虚拟网络设备。
21.根据权利要求20所述的装置,其中,所述指令的一部分包括设备故障检测模块,所 述设备故障检测模块被配置为在被执行时通过执行包括W下各项的操作来监视所述多个 虚拟网络设备W检测故障: 向虚拟网络设备发送询问; 从所述虚拟网络设备接收响应; 当没有从一个虚拟网络设备接收到响应于发送给所述虚拟网络设备的询问的响应时, 检测到所述虚拟网络设备的故障。
22. 根据权利要求20或21所述的装置,其中,在所述装置的操作期间,所述多个VM禪 合到虚拟交换机,所述虚拟交换机是通过执行在所述存储设备中所存储的所述指令的一部 分来实现的,并且其中,所述虚拟交换机被配置为:从网络控制器接收交换机流配置消息, 并且基于所述交换机流配置消息中的配置信息来对分组流进行重新配置,W便绕过已出故 障的虚拟网络设备。
23.根据权利要求20-22中任一项所述的装置,其中,所述指令在所述装置上的执行还 执行包括W下各项的操作: 响应于检测到虚拟网络设备故障, 确定所述故障是出故障就导通型故障; 生成应用故障通知消息,所述应用故障通知消息包括标识所述故障是出故障就导通型 故障的数据,并且向所述网络控制器发送所述应用故障通知消息; 从所述网络控制器接收交换机流配置消息; 鉴于所述交换机流配置消息,对所述虚拟交换机所使用的转发表和/或路由表中的条 目进行更新,W使得对分组流进行重新配置,W便确保分组不被发送到所述出故障的虚拟 网络设备,而是被直接路由到下一跳。
24.根据权利要求20-23中任一项所述的装置,其中,所述指令在所述装置上的执行还 执行包括W下各项的操作: 响应于检测到虚拟网络设备故障, 确定所述故障是出故障就阻止型故障;W及 生成应用故障通知消息,所述应用故障通知消息包括标识所述故障是出故障就阻止型 故障的数据,并且向所述网络控制器发送所述应用故障通知消息; 从所述网络控制器接收交换机流配置消息; 鉴于所述交换机流配置消息,对所述虚拟交换机所使用的转发表和/或路由表中的条 目进行更新,W使得对分组流进行重新配置,W便确保分组不被发送到所述出故障的虚拟 网络设备,并且在所述虚拟网络中所述分组具有控制权的最早的点处被阻止。
25.根据权利要求20-24中任一项所述的装置,其中,所述多个虚拟网络设备包括一个 虚拟网络设备的多个实例,所述多个实例包括所述虚拟网络设备的替代实现,所述指令在 所述装置上的执行还执行包括W下各项的操作: 响应于检测到具有替代实现的出故障的虚拟网络设备, 确定所述故障是出故障就替代型故障; 生成应用故障通知消息,所述应用故障通知消息包括标识所述故障是出故障就替代型 故障的数据,并且向所述网络控制器发送所述应用故障通知消息; 从所述网络控制器接收交换机流配置消息;W及 鉴于所述交换机流配置消息,对所述虚拟交换机所使用的转发表和/或路由表中的条 目进行更新,W使得对分组流进行重新配置,W便确保分组不被发送到所述出故障的虚拟 网络设备,而是被重定向到所述出故障的虚拟网络设备的替代实现。
【文档编号】H04L12/24GK104468181SQ201410490700
【公开日】2015年3月25日 申请日期:2014年9月23日 优先权日:2013年9月23日
【发明者】B·斯凯利, A·霍本 申请人:英特尔公司