网络设备任务的分布式处理的制作方法

文档序号:8001239阅读:246来源:国知局
网络设备任务的分布式处理的制作方法
【专利摘要】本发明涉及网络设备任务的分布式处理,提出了一种在计算云中运行的虚拟机之间分配网络设备任务的技术。一种网络设备包括:发送和接收消息的网络接口、包括被配置为运行一个版本的网络操作系统的一个或多个处理器的路由单元、和虚拟机代理。该虚拟机代理被配置为:识别在通信耦接至该网络设备的计算云处运行的虚拟机,其中,所识别的虚拟机运行所述版本的网络操作系统的实例;利用至少一个网络接口将执行任务的请求发送至虚拟机;以及利用至少一个网络接口从虚拟机接收包括执行任务的结果的任务响应。路由单元被配置为基于结果更新所述网络设备。
【专利说明】网络设备任务的分布式处理
【技术领域】
[0001]本公开涉及计算机网络,更具体地,涉及在虚拟机之间分配网络设备任务的技术。【背景技术】
[0002]计算机网络是交换数据和共享资源的互连计算设备的集合。在诸如互联网这样的分组网络中,计算设备通过将数据划分为被称为包的较小块来通信数据,这些包从源设备经过网络被单独地路由到目的设备。目的设备从包中提取数据并将数据组装成其原始形式。将数据划分为包能够使源设备可以只重新发送那些可能在传输期间丢失的个体包。
[0003]网络内的某些设备,例如路由器,含有保存描述通过网络的路线的路由信息的路由单元。每个路线定义了网络上位置之间的路径。根据路由信息,路由器的转发引擎生成转发信息,路由器使用该转发信息在网络上中继转发(relay)包流,更具体地,将包流中继转发到下一个中继段。关于转发包,网络路由器的“下一个中继段”一般是指沿着给定路线的相邻设备。一旦接收到来的包,路由器就检查包内的信息,从而识别包的目的地。基于目的地,路由器根据转发信息转发该包。
[0004]大型计算机网络,例如互联网,通常包括多个根据诸如边界网关协议(BGP)这样的规定路由协议交换路由信息的路由器。当两个路由器最初连接时,路由器交换路由信息和根据所交换的路由信息生成转发信息。具体地,两个路由器初始化路由通信“会话”,两个路由器根据规定的路由协议通过该路由通信“会话”来交换路由信息。路由器继续通过路由协议进行通信以递增地更新路由信息,进一步地,根据更新的路由信息中指示的网络拓补的变化更新其转发信息。例如,路由器可以发送更新消息,告知新近可用的路线或指出不再可用的路线。然而,更新路由信息和执行其他管理任务会消耗大量的计算资源,这限制了可用于转发流量的计算资源量。
[0005]按照惯例,网络管理员通过增加处理器、存储器等按比例增加计算资源。然而,可以在单个机架(chassis)内增加的计算资源量是有限的。随着处理器数量和其他计算资源量增加,所产生的热量和所需的电量也增加。网络设备的单个机架中的冷却和功率性能可能无法满足需求,这导致网络管理员使用单独的机架以在网络设备执行各种管理任务的同时,提供维持理想的网络吞吐量所需的额外计算能力。网络管理员必须管理作为单独设备的每个额外机架,这增加管理网络设备的复杂性。进一步,在网络设备上运行的操作系统只可以支持至多一个最大数量的计算资源和软件进程,这限制可用于任何网络设备的总计算能力。

【发明内容】

[0006]一般地,本公开的技术旨在通过使网络设备将任务卸荷(off-load)到在通信联络耦接至网络设备并与其分开管理的计算云中运行的一个或多个虚拟机,来增加可用于网络设备的计算资源。网络设备运行提供网络设备的软件功能的操作系统。每个虚拟机运行其自身的对应于由网络设备运行的操作系统的操作系统实例。虚拟机管理器注册在计算云中运行的各种虚拟机。当网络设备从计算云请求计算资源时,虚拟机管理器识别能够执行网络设备所请求的任务的一个或多个虚拟机,并且建立虚拟机和网络设备之间的网络套接字。网络设备将任务请求发送到虚拟机,虚拟机将任务结果返回到网络设备。用这种方式,网络设备有选择地将任务卸荷到虚拟机,释放网络设备的计算资源来转发包和执行其他延迟敏感的任务。
[0007]在计算云中运行的虚拟机可以分别运行特定版本的网络操作系统,能够使计算云为多个不同网络设备和多个不同版本的网络设备提供支持。进一步,两个或多个不同的虚拟机可以运行特定版本的网络操作系统。通过在单独的虚拟机中运行操作系统的多个实例,可用于网络设备的计算资源量与计算云的能力有关,而受到操作系统的限制。因此,随着额外的计算资源的需求增加,计算云的计算资源和虚拟机的数量增加,而不受操作系统或网络设备的规格的限制,包括资源限制、冷却限制、和功率限制。
[0008]在一个实施方式中,方法包括:利用网络设备从通信地耦接至该网络设备的多个其他网络设备接收多个链路状态消息;利用在网络设备中运行的虚拟机代理将对计算云的可用计算资源的请求发送到在计算云运行的虚拟机管理器;以及从虚拟机管理器接收包括在计算云运行的至少一个虚拟机的网络套接字的响应。该方法还包括:利用虚拟机代理将确定网络设备与多个其他网络设备中的每一个之间的最短路径的请求利用网络套接字发送到虚拟机,其中,请求包括多个链路状态消息;从虚拟机接收包括网络设备与多个其他网络设备中的每一个之间的相应的最短路径的指示的响应消息;以及基于响应消息更新存储在网络设备的路由信息。
[0009]在另一个实施方式中,方法包括:由网络设备运行一个版本的网络操作系统;以及利用在网络设备运行的虚拟机代理识别在通信地耦接至网络设备的计算云处运行的虚拟机,其中,所识别的虚拟机运行所述版本的网络操作系统的实例。该方法进一步包括:利用虚拟机代理将执行任务的请求发送到虚拟机;利用虚拟机代理从虚拟机接收包括执行任务的结果的任务响应;以及基于包括在任务响应中包括的结果更新网络设备。
[0010]在另一个实施方式中,网络设备包括:被配置为发送和接收消息的至少一个网络接口、包含被配置为运行一个版本的网络操作系统的一个或多个处理器的路由单元、以及可由路由单元运行的虚拟机。虚拟机代理被配置为:识别在通信地耦接至网络设备的计算云处运行的虚拟机,其中,所识别的虚拟机运行所述版本的网络操作系统的实例;利用至少一个网络接口将执行任务的请求发送至虚拟机;以及利用至少一个网络接口从虚拟机接收包括执行任务的结果的任务响应。路由单元被配置为基于包括在任务响应中的结果更新网络设备。
[0011]在另一个实施方式中,利用编码有可由一个或多个处理器执行的指令的计算机可读存储介质运行一个版本的网络操作系统,并识别在通信地耦接至网络设备的计算云处运行的虚拟机,其中所识别的虚拟机运行所述版本的网络操作系统的实例。指令可进一步被执行为:将执行任务的请求发送到所识别的虚拟机;从虚拟机接收包括执行任务的结果的任务响应,以及基于包括在任务响应中所包括的结果更新网络设备。
[0012]在下面的附图和说明书中阐述了一个或多个实施方式的细节。根据说明书、附图、和权利要求将明显理解本公开的其他特征、目标、和优势。【专利附图】

【附图说明】
[0013]图1是根据本公开的一个方面示出在虚拟机之间分配网络设备任务的示例系统的框图。
[0014]图2是根据本公开的一个方面示出在虚拟机之间分配网络设备任务的示例系统的其他细节的框图。
[0015]图3是根据本公开的一个方面示出示例计算云的框图。
[0016]图4是示出根据本公开的一个方面的在虚拟机之间分配网络设备任务的示例过程的流程图。
【具体实施方式】
[0017]图1是根据本公开的一个方面示出在虚拟机之间分配网络设备任务的示例系统的框图。如图1中所示,网络系统2包括计算云10、路由器12A-12D(统称为“路由器12”)、虚拟机管理器(VM MANAGER) 14、和虚拟机(VM) 16A-16N (统称为“虚拟机16”)。计算云10作为包括虚拟机管理器14和虚拟机16的计算资源的主机。计算云10的计算资源可以是能够执行本公开的技术的任何计算资源。例如,计算云10可以包括服务器计算机、台式计算机、便携式计算机、或包括处理器的任何其他设备。尽管作为不同的实体示出,但是虚拟机管理器14和每个虚拟机16可以分配在计算云10的两个以上不同的计算资源之间,虚拟机的数量可以不同于计算云10的不同计算资源的数量。
[0018]在某些示例中,两个以上的虚拟机16可以至少部分地使用相同的计算资源。例如,虚拟机16A可以在三个不同的服务器之间运行,而虚拟机16B可以在其上正在运行虚拟机16A的三个服务器中的一个服务器上运行。在某些示例中,计算云10的多个计算资源可以被配置为集群,提供额外的冗余和可扩展性,同时支持多个虚拟机。一般地,每个虚拟机16运行网络操作性的实例。通常,每个网络操作系统实例对应于在通信地耦接至计算云10的网络设备(例如,路由器12)上运行的操作系统。
[0019]一般地,路由器12互相交换路由信息,从而保持更新的网络的拓补结构的视图。例如,路由器12B从路由器12A接收包,并基于路由器12B保持的路由信息将包转发到下一个中继段,例如路由器12C。在本公开中描述的任务分配技术能够使每个路由器12最少地使用相应路由器12的计算资源来执行各种配置和管理任务(例如,执行路由协议,从而更新所存储的路由和转发信息),因而能够使相应路由器12的更多计算机资源用于转发包和执行其他延迟敏感的任务。
[0020]每个路由器12运行提供辅助在网络之间转发和路由包的某些功能的操作系统。各种不同的进程(有时被称为后台进程)在操作系统内执行或作为操作系统的一部分执行。示例进程包括控制机架及其部件的机架进程、配置和监控网络接口的设备控制进程(即,接口控制过程)、负责包传输的转发进程、管理进程、以及路由协议进程。管理进程提供在其他进程之间的通信,提供对配置数据库的接口,利用配置信息填充配置数据库,当通过路由器12的用户接口之一发布命令时还与其他进程交互,等等。路由协议进程规定了诸如路由信息协议(RIP)、开放最短路径优先(OSPF)协议、约束最短路径优先(CSPF)、虚拟专用局域网服务(VPLS)、以及边界网关协议(BGP)的路由协议在设备上如何工作,包括选择路由器和保持转发表。[0021]如图1中所示,路由器12B包括虚拟机代理18。随着路由器12B执行可以卸荷到一个或多个虚拟机16的各种任务,虚拟机代理18管理路由器12B与计算云10之间的交互。例如,如果路由器12B更新路由器12B存储的网络图,那么网络图的生成和下一个中继段的计算可以卸荷到一个或多个虚拟机16。虚拟机代理18将消息发送到虚拟机管理器14 (例如,利用链路20),请求由虚拟机管理器14管理的计算资源。
[0022]虚拟机管理器14管理发送到虚拟机16的任务,和存储有关虚拟机16的配置信息。在某些示例中,虚拟机16中的每一个均向虚拟机管理器14注册。在其他示例中,虚拟机管理器14主动询问计算云10,从而识别可用的虚拟机(例如,虚拟机16)。由虚拟机管理器14存储的确认信息包括在每个虚拟机16运行的操作系统版本。配置信息还可以包括每个虚拟机16所被配置执行的任务(例如,网络图生成、下一个中继段的确定等等)。
[0023]当虚拟机代理18将对计算资源的请求发送到虚拟机管理器14时,虚拟机管理器14确定计算云10是否具有可用于执行任务的资源。如果计算云10具有可用的计算资源,那么虚拟机管理器14将响应发送到路由器12B表明计算云10可以提供帮助。虚拟机代理18发送对包括在路由器12B运行并且任务路由器12B正在请求计算云10运行的版本操作系统的计算资源的特定请求。虚拟机管理器14识别虚拟机16中正在运行合适版本的操作系统的、具有执行所请求的任务的可用计算资源的、并且包括执行所请求任务所需的功能的一个虚拟机(例如,虚拟机16B)。一旦虚拟机管理器14识别到虚拟机16中的一个能够执行所请求的任务,虚拟机管理器14就将响应消息发送到虚拟机代理18,表明计算云10可以提供帮助。
[0024]虚拟机代理18生成并发送第二请求消息以发送到虚拟机管理器14。第二请求消息包括由路由器12B运行的至少一个操作系统版本和有关路由器12B正请求帮助的任务的信息。虚拟机管理器14接收第二请求消息并确定虚拟机16中是否有任何一个支持在请求消息中具体指定的操作系统版本并可以执行所请求的任务。为了识别合适的虚拟机16,虚拟机管理器14访问所存储的配置信息或将对配置信息的请求发送到至少一个虚拟机16(例如,虚拟机16B)。基于配置信息,虚拟机管理器14识别至少一个虚拟机16并在所识别的虚拟机16处建立套接字连接。虚拟机管理器14发送响应消息到包括套接字连接信息的虚拟机代理18。
[0025]在从虚拟机管理器14接收响应消息之后,虚拟机代理18将所需的配置信息与所标识的虚拟机16 (例如,虚拟机16B)交换消息,而不与虚拟机管理器14交换额外的消息。利用套接字22,虚拟机代理18与虚拟机16B交换消息,从而使得虚拟机16B执行所请求的任务。
[0026]尽管以上描述的安装过程包括两个步骤(首先询问是否任何计算资源可用,然后提供具体的任务需求),在某些实例中,安装过程可以在单个步骤中执行。例如,虚拟机代理18可以将单个请求消息发送到虚拟机管理器14。单个请求消息包括在路由器12B运行的操作系统版本和有关计算云10要执行的任务的信息。虚拟机管理器14接收单个请求消息并确定计算云10内是否有足够的可用计算资源。如果没有足够的可用计算资源,那么虚拟机管理器14将指示这次计算云10不能为任务提供支持的响应消息发送到虚拟机代理18。如果存在足够的可用计算资源,那么虚拟机管理器14识别虚拟机16中正在运行相同版本的操作系统并能够执行所要求任务的一个虚拟机(例如,虚拟机16B)。然后,虚拟机管理器14在虚拟机16B处建立套接字(例如,创建具体的互联网协议(IP)地址和端口号)以供虚拟机代理18当交换执行任务所需的消息时使用,并发送包括该套接字信息的响应消息。虚拟机代理18可以开始利用套接字发送消息到虚拟机16B,以使虚拟机16B执行所请求的任务,而不需要在虚拟机代理18和虚拟机管理器14之间交换的额外的请求和响应消息。
[0027]在某些实施方式中,虚拟机管理器14可以包括与两个以上的不同虚拟机16相关联的套接字信息。在这些实施方式中,虚拟机代理18可以将任务分配为两个以上的不同的虚拟机16中的每个虚拟机执行至少一部分任务。然而,在某些实例中,尽管虚拟机代理18接收两个以上的不同虚拟机16的套接字信息,但是虚拟机代理18可以选择虚拟机16中的一个来执行整个任务和丢弃或忽略包括在其他虚拟机响应中的套接字信息。
[0028]在某些实例中,路由器12可以包括在网络的一个或多个不同的逻辑段中。例如,路由器12A和12B可以是第一逻辑段的一部分,而路由器12B、12C、和12D可以是第二逻辑段的一部分。根据本公开的技术,根据OSPF计算每个逻辑段的网络图和最短路径可以由虚拟机16中的不同虚拟机执行。也就是说,当路由器12B被配置为更新每个逻辑段的网络图时,虚拟机代理18可以建立到两个不同虚拟机16的套接字连接。利用两个不同的套接字连接,虚拟机代理18将第一逻辑段的第一组所接收链路状态消息发送到第一虚拟机16 (例如,虚拟机16A)和将第二逻辑段的第二组所接收链路状态消息发送到第二虚拟机16 (例如,虚拟机16B)。
[0029]用这种方式,本公开的技术能够使用虚拟机提供在一组转发设备(例如路由器12)中对计算资源的逻辑分割。根据需要,虚拟机可以被建立和分配在可用的计算云的计算资源间。每个虚拟机可以负责特定的功能,例如运行一组转发设备的特定路由协议或接口控制,而其他的虚拟机可以提供管理功能。此外,因为操作可以发生在每个虚拟机中,所以特定功能的多个实例可以同时由多个不同的虚拟机执行。也就是说,多个控制平面进程、数据平面进程、和管理平面进程各自利用单独的虚拟机。因此,本公开的技术能够通过更高级别的资源分割更高效地使用转发设备中存在的计算资源。此外,尽管关于执行路由和转发功能的路由器描述了本技术,但是本技术可以适用于包括第三层(“L3”)交换机、第二层(“L2”)交换机、L2/L3交换机、OpenFlow交换机、或其他网络设备的其他网络设备。在这些示例中,路由单元30不一定包括RP后台进程40,和作为替代将RP后台进程40功能卸荷到VM16。
[0030]图2是根据本公开的一个方面示出图1中所示的一部分网络系统的进一步细节的框图。如图2中所示,系统2包括计算云10、局域网(LAN)ll、和路由器12B。路由器12B包括路由单元30、转发单元34、和交换结构36。交换结构36提供柔性物理接口卡(“PIC”)互连组集中器50A-50N (“FPC50”),每个集中器包括通过一组接口卡(“IFC”)54、56、和57分别发送和接收流量的至少一个包转发引擎52A-52N(“PFE52”),其中接口卡通常具有一个或多个物理网络接口(即,端口)。某些PFE52可以通过隧道PIC发送和接收流量。
[0031]FPC50、包括在FPC50内的部件、和交换结构36共同提供用于转发经过的网络流量的转发平面。尽管图2中未示出,但是PFE52可以各自包括中央处理单元(CPU)、存储器、和一个或多个可编程包转发专用集成电路(ASIC)。交换结构36提供用于在PFE52之间转发到来的数据包的高速互连,以便于网络上的传输。
[0032]路由单元30提供执行路由器12B的控制平面功能的各种协议的操作环境。例如,后台进程38除其他功能外,还包括运行网络管理软件、执行路由协议从而与对等路由器通信、保持和更新一个或多个路由表、以及产生用于到PFE52的安装的一个或多个转发表的用户级进程。在图2中所示的示例中,后台进程38包括路由协议(RP)后台进程40、管理(MGMT)后台进程42、和虚拟机(VM)代理18。在其他的实施方式中,后台进程38可以包括其他后台进程或软件模块,例如机架后台进程、配置后台进程、和设备控制后台进程。
[0033]后台进程38在内核32上工作并与内核32交互,其为用户级进程提供运行时间操作环境。内核32可以包括,例如,诸如Linux或伯克利软件套件(BSD)这样的UNIX操作系统衍生物,。一般地,内核32对应于特定版本的网络操作系统。内核32提供库和驱动程序,后台进程38通过库和驱动程序可以与基础系统进行交互。内核32包含内核级库,例如,套接字库,后台进程38和其他用户级进程或用户级库通过套接字库可以与PFE52进行交互。
[0034]路由协议后台进程40执行一个或多个内部和/或外部路由协议来与其他网络设备交换路由信息,将接收的信息存储在路由信息44中、和将提取的转发信息存储在转发信息46中。路由协议后台进程42将转发平面配置成实施包转发服务、增加/修改/删除路由路线、以及通过将表示转发信息46的转发结构安装在PFE52中修改包转发路径。
[0035]示出图2中所示的路由器12B的架构仅仅是为了进行说明。本发明不限于该架构。在其他的实施方式中,路由器12B可以通过多种方式配置。在一个实施方式中,例如,路由单元30的某些功能可以分配在PFE52内。路由单元30的操作环境可以单独以软件或硬件实施,或可以作为软件、硬件、或固件的组合实施。例如,路由单元30可以包括执行软件指令的一个或多个处理器。在该情况中,路由单元30可以包括在操作系统上执行的各种软件模块或后台进程,例如,后台进程38,并且可以包括用于存储可执行指令的永久性计算机可读存储设备,例如计算机存储器或硬盘驱动器。
[0036]路由单元30的硬件环境可以包括执行程序指令从而同时执行内核32和路由单元30的操作环境的一个或多个处理器(图2中未示出)。处理器可以包括一个或多个通用或专用处理器,例如数字信号处理器(DSP)、专用集成电路(ASIC)、场可编程门阵列(FPGA)、或任何其他等价的逻辑设备。因此,本文中所使用的术语“处理器”或“控制器”是指可操作地执行本文中所描述的技术的任何一个或多个前述结构或任何其他结构。
[0037]计算机可读存储介质可以包括随机存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PR0M)、可擦除可编程只读存储器(RPR0M)、电可擦除可编程只读存储器(EEPROM),非易失性随机存取存储器(NVRAM)、闪存、硬盘驱动器、⑶-ROM、软盘、盒式磁带、固态驱动器、磁介质、光学介质、或其他计算机可读介质。计算机可读介质可以利用对应于路由器12B的各个方面(例如,协议)的指令编码。在某些示例中,对于这些方面,路由单元30从存储器检索和执行指令。
[0038]本公开的技术能够使路由器12B将管理任务、路由协议更新、或其他任务分配给在计算云10运行的虚拟机。举一个实例来说,路由器12B使用OSPF聚集来自可用路由器的链路状态信息并构造网络的拓补图。当路由器12B执行OSPF更新网络拓补而不实施本公开的任务分配技术时,在更新期间可以消耗路由器12B的大多数(例如,百分之八十)计算资源。然而,通过将至少一部分OSPF计算分配给一个或多个虚拟机16 (如图1中所示),使用计算云10的计算资源,从而降低更新网络拓补所需的路由器12B的计算资源量。
[0039]为了更新网络拓补,通过与网络中的其他路由器交换链路状态通告消息,路由器12B周期性地识别路由器12B直接连接的所有其他节点卿,路由器)(例如,图1中所示的路由器12A、12C、和12D)。利用所接收的整个链路状态消息组,路由器12B通过对链路状态消息集合进行迭代产生网络图。对于每个接收的链路状态消息,路由器12B根据发送消息的路由器与该消息中被指示为是发送节点的相邻节点的所有路由器之间的网络图建立链路。
[0040]代替路由处理后台进程40本身对链路状态消息集合进行迭代并在路由单元30内生成图,虚拟机代理18识别计算云10中可以生成网络图的的虚拟机(例如,图1中所示的虚拟机16B)。在识别虚拟机的过程中,虚拟机代理发送消息到虚拟机管理器14 (图1)请求对任务的协助。如果计算云10具有充足的可用计算资源,那么虚拟机管理器14发送表明计算云10可以有助于任务的响应。然后,虚拟机代理18发送包括在路由器12B运行的操作系统版本(例如,在路由单元30运行的内核32版本)的任务请求消息和有关该任务的特定信息(例如,根据OSPF更新网络拓补)。虚拟机管理器14确定任何虚拟机16是否合适地配置为执行具体的任务。如果存在合适配置的至少一个虚拟机16,那么虚拟机管理器14在虚拟机(例如,虚拟机16B)处建立套接字,并将响应消息发送到包括套接字信息的虚拟机代理18。
[0041]虚拟机代理18利用从虚拟机管理器14接收的套接字信息与每个已识别的虚拟机16交换消息。也就是说,一旦建立套接字,虚拟机代理18就可以与一个或多个虚拟机16进行通信,而无需通过虚拟机管理器14发送消息(例如,不需要虚拟机管理器14作为中继运行。继续进行根据OSPF更新网络图的示例,虚拟机代理18利用套接字将接收的链路状态消息发送到虚拟机16B。虚拟机16B对从虚拟机代理14接收的链路状态消息进行迭代并生成网络图。
[0042]一旦生成完整的图,虚拟机16B就计算路由器12B与网络中其他路由器之间的最短路径。在一个示例中,虚拟机代理18从虚拟机16B接收完整的图。通常,路由单元30,以及更具体地,路由协议后台进程40,将算法(例如,Dijkstra算法)应用于网络图,从而确定从路由器12B到网络中每个其他路由器的最短路径。根据本公开的技术,虚拟机代理18利用套接字将完整的网络图发送到虚拟机16B并请求虚拟机16B计算最短路径,因而释放路由器12B的计算资源来执行其他功能,例如包转发。在另一个示例中,虚拟机16B不发送完整的网络图到虚拟机代理18和/或不等待来自虚拟机代理18的额外指令,作为替代,一旦网络图生成进程完成,就自动地开始确定最短路径。为了计算最短路径,虚拟机16B生成含有网络中的所有路由器的树结构,并且将该树结构组织为:从路由器12B到任何其他路由器的最短路径由从树的根部(即,路由器12B)到期望的路由器进行遍历所得到的节点列表所指示。在已识别的虚拟机16计算最短路径之后,虚拟机16B将最短路径的完整树发送到虚拟机代理18。虚拟机代理18从虚拟机16B接收完整的树和将其传递到路由协议后台进程40。路由协议后台进程更新路由信息并基于所完成的树转发信息。
[0043]尽管关于根据OSPF计算网络图并确定到网络中其他路由器的最短路径描述本技术,但是本公开的技术可以应用于任何管理或其他任务,包括根据其他路由协议(例如,RGP、BGP、IS-1S、生成树协议等等)更新路由信息和执行各种管理任务。优选地,诸如在转发包期间确定下一个中继段这样的延迟敏感的任务将不分配给计算云10中的一个或多个虚拟机16。然而,可预期的是任何任务可以由通信地或可操作地耦接至路由器12B的一个或多个虚拟机16执行。[0044]图3是根据本公开的一个方面示出示例计算云的框图。计算云10包括虚拟机管理器14和虚拟机16A-16N。在某些实施方式中,虚拟机管理器14是在一个虚拟机16内执行的软件进程。计算云10的计算资源可以包括服务器计算机、台式计算机、便携式计算机、或可以运行网络操作系统并执行与网络设备相关联的一个或多个任务的任何其他设备。在某些实例中,两个以上的虚拟机16可以至少部分地利用相同的计算资源。例如,虚拟机16A和16B可以同时在单个服务器上运行。单个虚拟机16可以在两个以上的不同的计算资源之间运行。举例来说,多个普通的成品计算机可以配置为集群。计算机集群可以运行单个虚拟机16,在支持多个虚拟机的同时,提供额外的冗余和可伸缩性。一般地,每个虚拟机16运行网络操作系统的实例、网络设备后台进程的实例(例如,管理后台进程)、和/或路由协议的实例(例如,OSPF, BGP、IS-1S等等)。
[0045]虚拟机管理器14包括CPU60和存储器62。虚拟机管理器14的CPU60被配置为执行存储在存储器62中的指令。存储器62可以包含一个或多个计算机可读介质,例如永久性计算机可读存储介质。这样的介质的示例包括RAM、ROM、NVRAM、EEPR0M、闪存、和其他计算机可读存储介质。存储器62包括配置(CONFIG)数据64和虚拟机管理模块(VM MGMTMODULE)66。配置数据64是被配置为存储虚拟机16的配置信息的数据存储库的一个示例,包括虚拟机16中的每一个虚拟机的性能和配置。
[0046]在某些实施方式中,VM管理模块66是CPU60可执行的软件模块。一般地,当建立和终止每个虚拟机16时,VM管理模块66管理虚拟机16的注册。换句话说,VM管理模块66利用每个虚拟机16的配置信息更新配置数据64。例如,当实例化虚拟机16A时,虚拟机16A向虚拟机管理器14注册(例如,通过发送包括虚拟机16A上线的指示和虚拟机16A的配置和/或性能的消息)。VM管理模块66处理虚拟机注册并将性能(例如,在虚拟机运行的操作系统版本和在虚拟机执行的软件进程等等)存储在配置数据64中。响应一个正在终止(例如,关闭)的虚拟机16,VM管理模块66从配置数据64中移除特定虚拟机16的配置信息。
[0047]响应于虚拟机管理器14从网络设备(例如,图1的路由器12B)接收请求,VM管理模块66查询配置数据64以确定当前是否正在运行任何虚拟机。如果配置数据64中不存在虚拟机16的配置信息(即,当前没有虚拟机正在运行),那么VM管理模块66生成表明计算云10不能对路由器12B执行任务提供帮助的消息。如果配置数据64中存在至少一个虚拟机16的配置信息(即,至少一个虚拟机16正在运行),那么VM管理模块66生成表明计算云10具有可用计算资源和能够协助路由器12B执行任务的消息。在某些示例中,即使未运行虚拟机16,如果计算云10具有可用的计算资源,那么VM管理模块66生成表明计算云10可以协助路由器12B执行任务的消息。
[0048]在计算云10可以协助路由器12B执行任务的实例中,虚拟机管理器14从路由器12B接收特定的任务请求。特定的任务请求包括有关路由器12B正在请求协助的任务的细节和在路由器12B中运行的特定的网络操作系统版本。VM管理模块66查询配置数据64以确定是否有任何的虚拟机16被配置有与路由器12B所运行的网络操作系统相同版本的网络操作系统和完成所请求任务所需的合适进程、后台进程、或其他性能。
[0049]如果没有被合适地配置的虚拟机16或如果当前没有虚拟机16正在运行,那么VM管理模块66可以使一个新的虚拟机16被实例化为具有执行特定任务所需的配置。一般地,根据需要,虚拟机16产生和分布在计算云10的计算资源之间。两个以上的虚拟机16可以分别支持特定功能的实例(例如,OSPF、接口控制等等)。因此,路由器12B可以各自利用个体的虚拟机16访问多个控制平面、数据平面、和管理平面。
[0050]如果存在满足特定任务需求的至少一个虚拟机16 (例如,虚拟机16A),那么VM管理模块66建立虚拟机16A的套接字。在存在满足特定任务需求的两个以上的不同的虚拟机16 (例如,虚拟机16A和16B)的实例中,虚拟机管理模块66可以在虚拟机16A和16B建立套接字,并且将所有套接字信息传递回虚拟机代理18。如图3中所示,虚拟机16A包括链路状态路由协议70和路由协议(RP)后台进程72。相似地,虚拟机16B包括链路状态路由协议80和路由协议(RP)后台进程82。在图3的示例中,虚拟机16A和16B可以同时协助链路状态路由协议计算(例如,OSPF, IS-1S等等)。
[0051]在识别到两个以上的虚拟机16 (例如,虚拟机16A和16B)和特定任务正在执行OSPF计算的实例中,每个虚拟机可以接收一部分所接收的链路状态消息,以使虚拟机16A对第一部分的链路状态消息进行迭代并返回网络的局部图,而虚拟机16B对第二部分的链路状态消息进行迭代并返回网络的另一个局部图。在某些实例中,虚拟机16A和16B中的任一个都可以与请求一起从虚拟机代理18 (图2)接收两个局部图并基于这两个局部图生成完整图。相似地,虚拟机16A和16B中的每个虚拟机可以执行最短路径计算的一部分。
[0052]在某些实施方式中,计算云10支持开放式虚拟机主机基础结构集成第三方虚拟机。在这些实施方式中,第三方虚拟机不是本地网络操作系统的一部分。为了能够在虚拟机16和第三方虚拟机之间进行通信,第三方虚拟机被视为单独的设备,利用应用程序编程接口(API)与本地虚拟机进行通信。第三方虚拟机可以提供本地虚拟机不支持的额外功能。
[0053]图4是根据本公开的一个方面示出在虚拟机之间分配网络设备任务的示例过程的流程图。为了简洁起见,将关于图1的系统2和图2的路由器12B描述图4中所示的进程。尽管下面关于路由器和路由协议进行描述,但是本公开的技术的其他实施方式可以使用其他网络设备和其他进程、后台进程、或网络协议。
[0054]路由器12B确定需要完成的一个或多个任务,虚拟机代理18发送请求到计算云10确定计算云10是否能够执行至少一部分任务(100)。在某些实施方式中,路由器12B和虚拟机管理器14利用两级设置进程来建立路由器12B和一个或多个虚拟机16之间的连接。在这些实施方式中,初始请求消息是确定计算云10是否具有任何可用计算资源的请求。虚拟机管理器14接收请求(102)和确定当前是否有任何虚拟机16正在运行和/或虚拟机管理器14是否可以实例化计算云10内的任何其他的虚拟机。虚拟机管理器14向路由器12B发送表明在计算云10内是否有可用资源的响应消息(104)。
[0055]虚拟机代理18从虚拟机管理器14接收响应消息(106)。如果响应消息表明计算云10中不存在可用的计算资源,那么虚拟机代理18终止设置过程并且路由器12B执行任务。如果响应消息表明计算云10中存在可用计算资源,那么虚拟机代理18生成包括在路由器12B运行的网络操作系统版本和所请求任务的细节的第二请求消息。在路由器12B和虚拟机管理器14利用单步设置进程建立路由器12B与一个或多个虚拟机16之间的连接的实施方式中,从路由器12B发送到虚拟机管理器14的初始请求消息对应于第二请求消息。也就是说,在这些实施方式中,路由器12B可以跳过在确定计算云10是否具有充足可用的计算资源帮助执行任务的过程中使用的初始请求消息。虚拟机代理18将第二请求消息发送到虚拟机管理器14 (108)。[0056]虚拟机管理器14接收第二请求消息(110)和识别具有相同版本的网络操作系统且能够执行任务的一个或多个虚拟机16 (112)。一个或多个当前运行的虚拟机16可以被配置有执行任务所需版本的网络操作系统和所需的进程、后台进程、或其他性能。然而,如果没有虚拟机16满足第二需求消息中具体指定的需求,那么虚拟机管理器14可以实例化满足需求且可以执行所请求的任务的新的虚拟机16。响应于识别可以进行所请求任务的一个或多个虚拟机16,虚拟机管理器14在一个或多个所识别的虚拟机16中的每个虚拟机处建立套接字连接并将套接字信息发送到路由器12B (114)。
[0057]响应于接收套接字信息(116),虚拟机代理18利用套接字信息将特定的任务信息(例如,链路状态消息、配置信息等等)发送到一个或多个所识别的虚拟机16 (118)。每个所识别的虚拟机16接收任务信息(120)并进行完成任务所需的操作(122)。在完成任务之后,相应的所识别的虚拟机16利用套接字将任务结果发送到虚拟机代理18。虚拟机代理18接收任务的结果(124),路由器12B应用任务的结果(例如,路由单元30基于该结果更新路由信息44)。
[0058]根据本公开的技术配置的网络设备可以包括被配置为发送和接收消息的至少一个网络接口、包括被配置为运行一个版本的网络操作系统的一个或多个处理器的路由单元、以及虚拟机代理,其中,该虚拟机代理被配置为:识别在通信耦接至该网络设备的计算云处运行的虚拟机,其中所识别的虚拟机运行所述版本的网络操作系统的实例;利用至少一个网络接口将执行任务的请求发送到虚拟机;以及利用至少一个网络接口从虚拟机接收包括执行任务的结果的任务响应,其中,路由单元被配置为基于包括在任务响应中的结果更新网络设备。
[0059]在某些示例中,虚拟机是第一虚拟机,所述版本的操作系统的实例是在第一虚拟机中运行的操作系统的第一实例,任务是第一任务,任务响应是第一任务响应。在这些示例中,虚拟机代理被配置为识别在计算云运行的第二虚拟机,其中第二虚拟机运行所述版本的网络操作系统第二实例,并且其中第一虚拟机和第二虚拟机是不同的虚拟机,将执行第二任务的请求发送到第二虚拟机,从第二虚拟机接收包括执行第二任务的结果的第二任务响应,路由单元被配置为基于第一任务响应和第二任务响应更新网络设备。
[0060]在某些实例中,第一任务是第三任务的第一部分,并且其中,第二任务是第三任务的第二部分。
[0061]在某些示例中,虚拟机代理被配置为:将对计算资源的请求发送到虚拟机管理器,其中,请求包括对在网络设备运行的网络操作系统的版本的指示和对要执行的任务的指示;从虚拟机管理器接收响应,其中,响应包括对套接字的指示,通过该套接字,虚拟机是可到达的(可直接通信的,reachable);利用套接字将任务请求发送到虚拟机;以及利用套接字从虚拟机接收任务响应。
[0062]在某些示例中,对计算资源的请求是第二请求,响应是第二响应,虚拟机代理被配置为:在发送对计算资源的第二请求之前将对于计算资源的第一请求发送到虚拟机管理器,以确定计算云是否具有可用资源执行任务;接收表明计算云是否具有可用计算资源的第一响应;基于第一响应确定计算云是否具有可用资源;以及响应于确定计算云具有可用计算资源,将对计算资源的第二请求发送到虚拟机管理器。
[0063]在某些示例中,任务与在路由单元执行的路由协议相关联,其中,路由协议是开放式最短路径优先、生成树协议、边界网关协议、中间系统对中间系统协议、虚拟专用局域网服务、和资源预留协议中的一个。
[0064]在某些实例中,存储器被配置为存储配置信息、转发信息、和路由信息中的至少一个,路由单元基于包括在任务响应中的结果更新配置信息、转发信息、和路由信息中的至少一个。
[0065]在某些示例中,虚拟机是在计算云处运行的多个虚拟机中的一个,其中,多个虚拟机的至少一个子集被配置为执行路由协议、接口控制进程、管理进程、和机架进程中的一个或多个。
[0066]本公开中描述的技术可以至少部分地被实现为硬件、软件、固件或其组合。例如,所描述的技术的各种方面可以被实现在一个或多个处理器中,包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或任何其他等效集成或分布式逻辑电路,以及这些部件的任意组合。术语“处理器”或“处理电路”一般可以指任何前述的逻辑电路、单独或与其他逻辑电路组合、或任何其他等效电路。包括硬件的控制单元还可以执行一个或多个本公开的技术。
[0067]这样的硬件、软件、和固件可以实现在相同设备内或单独设备内以支持本公开中描述的各种操作和功能。此外,任何所描述的单元、模块、或部件可以实施在一起或单独地作为离散但可共用的逻辑设备。描述作为模块或单元的不同特征是为了突出不同的功能方面,不一定意味着这些模块或单元必须通过单独的硬件或软件部件实现。相反,与一个或多个模块或单元相关联的功能可以由单独的硬件或软件部件执行,或集成在共同的或单独的硬件或软件部件内。
[0068]本公开中描述的技术还可以体现或编码在含有指令的计算机可读介质上,例如计算机可读存储介质。例如,当执行指令时,内嵌或编码在计算机可读介质中的指令可以使得可编程处理器、或其他处理器执行方法。计算机可读存储介质可以包括随机存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(RPROM)、电可擦除可编程只读存储器(EEPR0M)、闪存、硬盘驱动器、⑶-ROM、软盘、盒式磁带、磁介质、光学介质、或其他计算机可读存储介质。应当理解,术语“计算机可读存储介质”是指物理存储介质、(例如,非易失性介质)而非信号、载波、或其他传输介质。
[0069]已经描述了各种实施方式。这些实施方式和其他实施方式都在所附权利要求的保护范围内。
【权利要求】
1.一种方法,包括: 通过网络设备运行一个版本的网络操作系统; 利用在所述网络设备运行的虚拟机代理识别在通信耦接至所述网络设备的计算云处运行的虚拟机,其中,所识别的虚拟机运行所述版本的网络操作系统的实例; 利用所述虚拟机代理将执行任务的请求发送到所述虚拟机; 利用所述虚拟机代理从所述虚拟机接收包括执行所述任务的结果的任务响应;以及 基于所述任务响应中所包括的结果更新所述网络设备。
2.根据权利要求1所述的方法,其中,所述虚拟机是第一虚拟机,其中,所述版本的网络操作系统的所述实例是在所述第一虚拟机运行的所述网络操作系统的第一实例,其中,所述任务是第一逻辑段的第一任务,并且其中,所述任务响应是第一任务响应,所述方法还包括: 识别在所述计算云运行的第二虚拟机,其中,所述第二虚拟机运行所述版本的网络操作系统的第二实例,并且其中,所述第一虚拟机和第二虚拟机是不同的虚拟机; 利用所述虚拟机代理将执行第二任务的请求发送到所述第二虚拟机,其中,所述第二任务用于第二逻辑段;以及 利用所述虚拟机代理从所述虚拟机接收包括执行所述第二任务的结果的第二任务响应, 其中,更新所述网络设备的步骤包括:基于包括在所述第一任务响应中的结果和包括在所述第二任务响应中的结果来更新所述网络设备。
3.根据权利要求2所述的方法,其中,所述第一任务是第三任务的第一子任务,并且其中,所述第二任务是所述第三任务的第二子任务。
4.根据权利要求1至3中的任一项所述的方法, 其中,识别所述虚拟机包括: 将对计算资源的请求发送到虚拟机管理器,其中,所述请求包括对所述网络操作系统的版本的指示和对要执行的任务的指示;以及 从所述虚拟机管理器接收响应,其中,所述响应包括对套接字的指示,通过所述套接字,所述虚拟机是可到达的, 其中,将所述任务请求发送到所述虚拟机的步骤包括:利用所述套接字将所述任务请求发送到所述虚拟机,以及 其中,接收所述任务响应的步骤包括:利用所述套接字接收所述任务响应。
5.根据权利要求4所述的方法,其中,对计算资源的所述请求是第二请求,其中,所述响应是第二响应,以及其中,识别所述虚拟机的步骤包括: 在发送对计算资源的所述第二请求之前,将对计算资源的第一请求发送到所述虚拟机管理器,以确定所述计算云是否具有执行所述任务的可用计算资源;并且 利用所述虚拟机代理接收表明所述计算云是否具有可用计算资源的第一响应;以及 基于所述第一响应确定所述计算云是否具有可用的计算资源, 其中,响应于确定所述计算云具有可用的计算资源,将对计算资源的所述第二请求发送到所述虚拟机管理器。
6.根据权利要求1到5中的任一项所述的方法,其中,所述任务与在所述网络设备执行的路由协议相关联,其中,所述路由协议是开放式最短路径优先、生成树协议、边界网关协议、中间系统对中间系统协议和虚拟专用局域网服务中的一个。
7.根据权利要求1到6中的任一项所述的方法,其中,更新所述网络设备包括基于包括在所述任务响应中的结果更新存储在所述网络设备处的更新配置信息、转发信息和路由信息中的至少一个。
8.根据权利要求1到7中的任一项所述的方法,其中,所述虚拟机是在所述计算云运行的多个虚拟机中的一个,并且其中,所述多个虚拟机的至少一个子集被配置为执行路由协议、接口控制进程、管理进程和机架进程中的一个或多个。
9.一种网络设备,包括: 至少一个网络接口,被配置为发送和接收消息;路由单元,包括被配置为运行一个版本的网络操作系统的一个或多个处理器;以及虚拟机代理,被配置为:识别在通信耦接至所述网络设备的计算云处运行的虚拟机,其中,所识别的虚拟机运行所述版本的网络操作系统的实例;利用所述至少一个网络接口将执行任务的请求发送至所述虚拟机,以及利用所述至少一个网络接口从所述虚拟机接收包括执行所述任务的结果的任务响应, 其中,所述路由单元被配置为基于包括在所述任务响应中的结果来更新所述网络设备。
10.根据权利要求9所述的网络设备,进一步包括用于执行根据权利要求1到8中的任一项所述方法的装置。
【文档编号】H04L29/08GK103516782SQ201310253577
【公开日】2014年1月15日 申请日期:2013年6月24日 优先权日:2012年6月26日
【发明者】乔尔·奥布斯特费尔德, 戴维·沃德, 科尔比·巴思, 穆林 申请人:丛林网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1