针对虚拟网络分组流的物理路径确定的制作方法

文档序号:11460085阅读:323来源:国知局
针对虚拟网络分组流的物理路径确定的制造方法与工艺

分案申请说明

本申请是申请日为2013年6月5日、申请号为201380041497.5、发明名称为“针对虚拟网络分组流的物理路径确定”的中国发明专利申请的分案申请。

相关申请的交叉引用

本申请要求2012年11月23日提交的美国临时申请no.61/729,474;2012年11月7日提交的美国临时申请no.61/723,684;2012年11月7日提交的美国临时申请no.61/723,685;2012年11月5日提交的美国临时申请no.61/722,696;2012年11月2日提交的美国临时申请no.61/721,979;2012年11月2日提交的美国临时申请no.61/721,994;2012年10月25日提交的美国临时申请no.61/718,633;2012年6月6日提交的美国临时申请no.61/656,468;2012年6月6日提交的美国临时申请no.61/656,469;以及2012年6月6日提交的美国临时申请no.61/656,471的权益;这些申请中的每个申请的整体内容通过引用方式并入于此。

本发明涉及计算机网络,并且更具体地涉及虚拟网络。



背景技术:

在典型的云数据中心环境中,存在大集合的互连服务器,服务器提供计算和/或存储容量以运行各种应用。例如,数据中心可以包括托管用于订户(即,数据中心的客户)的应用和服务的设施。例如,数据中心可以托管所有的基础结构设备,诸如联网和存储系统、冗余电源和环境控制。在典型的数据中心中,存储系统和应用服务器的集群经由由一个或多个层级的物理网络交换机和路由器提供的高速交换机结构互连。更复杂的数据中心通过位于各种物理托管设施中的订户支持设备提供遍布世界的基础结构。



技术实现要素:

总体上,技术被描述用于配制和管理虚拟网络。例如,描述了配制和管理由多个交换机形成的物理网络内的重叠网络的虚拟网络控制器。多个服务器通过交换机结构互连,并且每个服务器提供执行经由重叠网络进行通信的一个或多个虚拟机的操作环境。服务器包括使重叠网络作为虚拟网络延伸到虚拟机的操作环境的一组虚拟交换机。控制器可以指示服务器和虚拟交换机执行各种操作,诸如确定由网络分组流的分组所采取的物理网络路径、确定通过网络的延迟、由于网络事件重新路由虚拟网络中的流量、复制用于多播的流量、提供多租户服务以支持多个虚拟网络、监控虚拟网络内的流量特性和将虚拟网络内的流量特性记入日志、以及其它操作。

还描述了用于使用分布式虚拟网络控制器便于一个或多个虚拟网络的操作的技术。系统可以包括被配置为控制一个或多个虚拟网络中的元件的第一集的操作的第一控制器节点设备。系统可以进一步包括被配置为控制一个或多个虚拟网络中的元件的第二集的操作的第二控制器节点设备。第一控制器节点设备和第二控制器节点设备可以使用对等协议对等,并且根据对等协议可以是对等体。系统可以包括与第一控制器节点设备和第二控制器节点设备中的一个或多个关联的硬件(和软件)。

在一些示例中,系统包括实现一个或多个虚拟网络的元件的第一集和元件的第二集。系统还包括各自通过交换机结构连接到网络的第一服务器设备和第二服务器设备。系统还包括被配置为控制一个或多个虚拟网络中的元件的第一集的操作的第一控制器节点设备,其中元件的第一集包括第一服务器设备。系统进一步包括被配置为控制一个或多个虚拟网络中的元件的第二集的操作的第二控制器节点设备,其中元件的第二集包括第二服务器设备,其中第一控制器节点设备和第二控制器节点设备根据对等协议是对等体,第一控制器节点设备和第二控制器节点设备通过对等协议交换涉及元件的第一集和元件的第二集的操作的信息。

在一些示例中,一种用于便于一个或多个虚拟网络的操作的方法(一个或多个虚拟网络包括各自通过交换机结构连接到网络的第一服务器设备和第二服务器设备)包括使用第一控制器节点设备控制一个或多个虚拟网络中的元件的第一集的操作,其中元件的第一集包括第一服务器设备。方法还包括使用第二控制器节点设备控制一个或多个虚拟网络中的元件的第二集的操作,其中元件的第二集包括第二服务器设备。方法进一步包括使用对等协议使第一控制器节点设备和第二控制器节点设备对等,以在第一控制器节点设备和第二控制器节点设备之间,交换涉及元件的第一集和元件的第二集的操作的信息。

在一些示例中,一种虚拟网络控制器节点设备包括一个或多个处理器以及由处理器执行的控制平面虚拟机,控制平面虚拟机用于使用可扩展消息传递和到场协议(xmpp)与多个虚拟网络交换机进行通信。虚拟网络控制器节点设备还包括用于存储和管理包括针对虚拟网络交换机的配置信息的配置数据库的配置虚拟机。虚拟网络控制器节点设备还包括分析虚拟机,用于存储和管理包括针对虚拟网络交换机的日志记录信息的分析数据库,其中配置虚拟机和分析虚拟机使用元数据接入点接口协议与控制平面虚拟机进行通信,其中控制平面虚拟机通过使用xmpp向虚拟网络交换机发送路由数据和配置信息来配置虚拟网络交换机,以及其中控制平面虚拟机使用xmpp接收针对虚拟网络交换机的日志记录信息并且将日志记录信息路由到分析虚拟机以存储到分析数据库。

在一些示例中,一种网络系统包括交换机结构(包括多个交换机)以及具有依照对等协议与彼此进行对等通信的一组控制器节点设备的分布式控制器,其中每个控制器节点设备配置和管理多个交换机内的重叠网络。网络系统还包括通过交换机结构互连的多个服务器,其中每个服务器包括执行经由重叠网络进行通信的一个或多个虚拟机的操作环境,以及其中服务器包括使重叠网络作为虚拟网络延伸到虚拟机的操作环境的一组虚拟交换机。

另外,技术被描述用于确定由网络分组流的分组所采取的、诸如在本文中描述的虚拟网络内的物理网络路径。可以应用技术以确定或者“跟踪”虚拟化网络域中的物理网络路径。在虚拟化或重叠网络环境中,网络的边缘从物理网络元件(例如,交换机或路由器)延伸到各自由物理服务器的管理程序或主机操作系统执行的软件交换机(即,虚拟交换机)。在这样的环境中,物理服务器可以执行通过使用虚拟网络交换层三(l3或“网络”)分组而进行通信的应用实例,虚拟网络由一个或多个软件交换机实现并且正交于物理网络和对应物理寻址方案。虚拟网络元件(其包括虚拟交换机和物理网络元件两者)将由应用的实例生成或消耗的分组封装在隧道报头中的虚拟网络域中,隧道报头包括符合物理网络寻址方案的地址。据此,并且在下文中,由应用实例生成或消耗的分组可以被称为“内部分组”,而包括封装在添加隧道报头内的内部分组的物理网络分组可以被称为“外部分组”。隧道报头允许物理网络使内部分组朝向目的地虚拟交换机隧穿,以递送到目的地应用实例。在一些情况下,隧道报头可以包括针对诸如传输层(例如,传输控制协议(tcp)或用户数据报协议(udp)报头)、网络层和/或隧道层之类的多个层的子报头。

在一些示例中,虚拟网络元件接收确定由网络分组流的分组所采取的物理网络路径的请求。针对对应于特定分组流的分组,虚拟网络元件生成具有与分组流的分组完全相同的一个或多个隧道报头字段的第一流跟踪分组。结果,第一流跟踪分组将遍历与分组流的分组完全相同的物理网络路径。为了确定沿着由分组流采取的物理网络路径的第一下一跳,虚拟网络元件将针对流跟踪分组的生存时间(ttl)值设置成1,然后根据虚拟网络元件网络转发表将第一流跟踪分组转发到第一下一跳。因为针对第一流跟踪分组的ttl值被设置成1,第一下一跳抛弃第一流跟踪分组,并且返回针对第一流跟踪分组的超时消息,诸如因特网控制消息协议(icmp)超时消息。超时消息包括第一下一跳的网络地址。虚拟网络元件在连续流跟踪分组上迭代ttl值,其它方面类似于第一流跟踪分组,并且根据虚拟网络元件转发表转发连续流跟踪分组。因此,沿着针对分组流的物理路径的连续下一跳各自接收具有设置成1的ttl值的流跟踪分组,并且各自返回超时消息。虚拟网络元件可以使用从沿着物理路径的物理下一跳返回的返回超时消息,生成物理下一跳的列表,虚拟网络元件可以将该列表返回到已经请求物理网络路径的设备。

因为流跟踪分组是跟踪分组并且可能不包括用于应用的应用数据,虚拟网络元件可以在一些实例中将特殊的流跟踪分组指示符添加到流跟踪分组的隧道报头的字段。隧道终端虚拟网络元件或者“隧道端点”通常解封装接收的隧道分组流的外部分组以移除外部报头,并且朝向应用转发得到的内部分组。流跟踪分组指示符向隧道端点指示,接收分组是流跟踪分组并且应当被抛弃而非转发。因此,隧道端点标识包括流跟踪分组指示符的分组流分组并且抛弃该分组。在一些实例中,隧道端点可能先前已经接收了针对分组流的先行流跟踪分组,针对该先行流跟踪分组,隧道端点向发出虚拟网络元件返回超时消息。在一些示例中,在接收到流跟踪分组的同时,隧道端点可以向发出虚拟网络元件返回icmp回应答复消息或其它确认消息,以便确认流跟踪分组在隧道终端处的接收。

本文中描述的技术可以提供一个或多个优点。例如,技术可以允许确定分组流遍历虚拟化网络域的物理网络路径。使用所述技术确定针对分组流的物理网络路径还可以克服确定物理网络路径通常使用的网络跟踪路由工具的某些限制。在一些情况下,等价的多个路径存在于虚拟网络元件和目的地之间。虚拟网络元件可以根据分组流分组报头的特殊性将具有相同源和目的地的分组流分配到不同等价路径。相比于跟踪路由工具(其可以产生icmp回应请求消息,icmp回应请求消息形成由虚拟网络元件分配给多个路径中的不同路径的分组流),技术可以确保在多路径环境中由流跟踪分组所采取的路径匹配由对应分组流所采取的物理网络路径。

在一个方面中,用于确定分组流的物理网络路径的方法包括利用网络设备生成具有递增式增加的相应生存时间(ttl)值的一个或多个流跟踪分组。方法还包括利用网络设备在用于物理网络路径的网络设备的出站接口上发送流跟踪分组。方法进一步包括利用网络设备接收针对流跟踪分组的对应超时消息,其中每个超时消息包括在物理网络路径上的网络元件的源网络地址。

在另一方面中,网络设备包括一个或多个处理器以及由处理器执行的用于将分组流的分组转发到物理网络路径的交换机。网络设备还包括流跟踪模块,以生成具有递增式增加的相应生存时间(ttl)值的一个或多个流跟踪分组,其中交换机模块在用于物理网络路径的网络设备的出站接口上转发流跟踪分组,其中流跟踪模块接收针对流跟踪分组的对应超时消息,以及其中每个超时消息包括在物理网络路径上的网络元件的源网络地址。

在另一方面中,非瞬态计算机可读介质包含指令。指令使得一个或多个可编程处理器利用网络设备生成具有递增式增加的相应生存时间(ttl)值的一个或多个流跟踪分组。指令进一步使得可编程处理器利用网络设备在用于物理网络路径的网络设备的出站接口上发送流跟踪分组。指令进一步使得可编程处理器利用网络设备接收针对流跟踪分组的对应超时消息,其中每个超时消息包括在物理网络路径上的网络元件的源网络地址。指令还使得可编程处理器利用网络设备使用超时消息的源网络地址确定物理网络路径。

在附图和下面描述中阐述本发明的一个或多个实施例的细节。根据描述和附图,并且根据权利要求,本发明的其它特征、目的和优点将是容易理解的。

附图说明

图1是图示具有其中可以实现本文中描述的技术示例的数据中心的示例网络的框图。

图2a是进一步详细图示图1的数据中心的示例实施方式的框图。

图2b进一步图示图1和图2a的数据中心的示例细节以在不要求底层物理网络中的多播支持情况下在虚拟重叠网络内提供多播服务。

图3是图示示例系统的另一框图,该示例系统图示在如本文中描述的底架交换机和架顶(tor)交换机内的路由信息的示例配置。

图4是图示依照本公开的一个或多个实施例的用于在一个或多个虚拟网络内实现本文中描述的技术的任何组合的虚拟网络控制器的示例实施方式的框图。

图5是图示依照本公开的一个或多个实施例的虚拟网络控制器的示例实施方式的框图。

图6是图示依照本公开中描述的技术的用于确定虚拟化网络域中的物理网络路径的网络元件操作的示例模式的流程图。

图7是图示根据本公开的技术的网络元件操作的示例模式的流程图。

图8是图示根据本文中描述的技术生成的示例流跟踪分组的字段的框图。

图9是图示根据本文中描述的技术生成的示例流跟踪分组的字段的框图。

图10是图示依照本公开的一个或多个方面的示例计算设备的框图。

图11至图12是图示依照本公开的一个或多个实施例的网络设备的示例操作的流程图。

图13是详细图示根据本文中描述的技术用于动态地修改由数据中心元件生成的日志记录信息的虚拟网络控制器的示例部件的框图。

图14是图示根据本文中描述的技术用于动态地修改由数据中心元件或其它生成器生成的日志记录信息的虚拟网络控制器的操作的示例模式的流程图。

图15是图示根据本公开中描述的技术的被配置为响应于来自收集器的指导而动态地修改日志记录范围的示例计算设备的框图。

图16是图示根据本公开中描述的技术的由应用响应于来自收集器的指导而动态地修改日志记录范围的操作的示例模式的流程图。

图17a是图示包括依照本公开的技术进行操作的网络设备的系统的框图。

图17b是图示依照一个示例实施例的示例隧道封装的框图。

图17c是图示在没有链路故障时指向默认虚拟子网的分组的框图。

图17d是图示依照一个示例实施例的示例隧道封装的框图。

图17e是图示依照一个示例实施例的示例非封装分组的框图。

图18a至图18b是图示依照一个示例实施例的示例网络转发表的框图。

图19至图20是图示依照本公开的一个或多个实施例的网络设备的示例操作的流程图。

图21是图示依照本公开的一个或多个方面的示例设备的框图。

图22a至图22b是图示由虚拟网络控制器创建的用于提供虚拟网络中的分布式多播服务的不平衡和平衡多播树的示例的概念图。

图23a至图23c是图示由虚拟网络控制器创建的针对多播群组中的网络端点的多播树的示例的概念图,其中任何端点操作作为树的源节点。

图24是图示由虚拟网络控制器创建的针对具有最小化复制限制的多播群组中的所有服务器的示例多播树的概念图。

图25a是图示依照本公开的一个或多个方面用于根据由虚拟网络控制器创建的多播树复制和转发分组的示例计算设备的框图。

图25b是图示利用虚拟网络控制器创建针对虚拟网络中的多播群组的网络端点的多播树、并且利用端点之一依照多播树复制和转发分组以在虚拟网络中提供分布式多播服务的示例操作的流程图。

图26是图示依照本公开中描述的技术的各种方面的存储会话信息的系统的另一框图。

图27是描绘根据本公开中描述的技术的各种方面的由服务器执行的虚拟交换机在执行查询翻译过程中的操作的流程图。

图28是图示依照本公开的一个或多个方面的用于便于一个或多个虚拟网络操作的示例计算设备的框图。

贯穿图和正文,同样的附图标记指示同样的元件。

具体实施方式

图1是图示具有其中可以实现本文中描述的技术示例的数据中心10的示例网络8的框图。一般,数据中心10为通过服务提供商网络7耦合到数据中心的客户11提供用于应用和服务的操作环境。例如,数据中心10可以托管诸如联网和存储系统、冗余电源和环境控制之类的基础结构设备。服务提供商网络7可以耦合到由其它提供商管理的一个或多个网络,并且从而可以形成例如因特网的大规模公共网络基础结构的一部分。

在一些示例中,数据中心10可以表示许多地理上分布式网络数据中心之一。如在图1的示例中图示的,数据中心10可以是为客户11提供网络服务的设施。客户11可以是诸如企业和政府之类的集合实体或个体。例如,网络数据中心可以托管用于若干企业和最终用户的网络服务。其它示例性服务可以包括数据存储、虚拟专用网络、流量工程、文件服务、数据挖掘、科学计算或超级计算等。在一些实施例中,数据中心10可以是个体网络服务器、网络对等体或以其他方式。

在这个示例中,数据中心10包括经由由一个或多个层级的物理网络交换机和路由器提供的高速交换机结构14互连的一组存储系统和应用服务器12a至12x(本文中,“服务器12”)。交换机结构14由耦合到底架交换机18a至18m(统称为“底架交换机18”)的分布层的一组互连架顶(tor)交换机16a至16bn(统称为“tor交换机16”)提供。尽管未示出,数据中心10还可以包括例如一个或多个非边缘交换机、路由器、集线器、网关、诸如防火墙、入侵检测和/或入侵防护设备之类的安全设备、服务器、计算机终端、膝上型电脑、打印机、数据库、诸如蜂窝电话或个人数字助理之类的无线移动设备、无线接入点、桥接器、电缆调制解调器、应用加速器或者其它网络设备。

在这个示例中,tor交换机16和底架交换机18向ip结构20和服务提供商网络7提供具有冗余(多宿主)连接的服务器12。底架交换机18聚集流量流并且提供在tor交换机16之间的高速连接。tor交换机16可以是提供层2(mac)和/或层3(例如,ip)路由和/或交换功能的网络设备。tor交换机16和底架交换机18可以各自包括一个或多个处理器和存储器,并且有能力执行一个或多个软件过程。底架交换机18耦合到ip结构20,ip结构20执行层3路由以通过服务提供商网络7路由数据中心10和客户11之间的网络流量。

依照本公开的一个或多个实施例,虚拟网络控制器22(“vnc”)提供逻辑上并且在一些情况下物理上集中控制器,以便于一个或多个虚拟网络在数据中心10内的操作。在一些示例中,虚拟网络控制器22可以响应于从网络管理员24接收的配置输入而进行操作。

通常,在任何两个网络设备之间(诸如,在ip结构20内的网络设备(未示出)之间、或者在服务器12和客户11之间、或者在服务器12之间)的流量例如可以使用许多不同路径遍历物理网络。例如,在两个网络设备之间可以存在等价的若干不同路径。在一些情况下,属于从一个网络设备到另一个网络设备的网络流量的分组可以在每个网络交换机节点处被分布在使用路由策略的各种可能路径(被称为多路径路由)当中。例如,因特网工程任务组(ietf)rfc2992“analysisofanequal-costmulti-pathalgorithm”描述了用于沿着多条等价路径路由分组的路由技术。rfc2992的技术分析涉及通过散列分组报头字段将流指派给仓(bin)的一种特定多路径路由策略,该策略通过单个确定性路径发送来自特定网络流的所有分组。

例如,“流”可以由在报头中用于分组的五个值来定义,或者由用于通过物理网络路由分组的“五元组”(即,协议、源ip地址、目的地ip地址、源端口和目的地端口)定义。例如,协议指定诸如tcp或udp之类的通信协议,并且源端口和目的地端口指的是连接的源和目的地端口。匹配特定流条目的一个或多个分组数据单元(pdu)的集表示流。使用诸如源和目的地mac和ip地址之类的pdu的任何参数、虚拟局域网(vlan)标签、传输层信息、多协议标记交换(mpls)或通用mpls(gmpls)标记、以及接收流的网络设备的入口端,可以对流进行大致分类。例如,流可以是在传输控制协议(tcp)连接中发射的所有pdu、源自特定mac地址或ip地址的所有pdu、具有相同vlan标签的所有pdu、或者在相同交换机端口处接收的所有pdu。

网络中的每个个体交换机路由器可以执行其自身的独立的散列计算,以确定将由特定流使用的路径。在第一网络设备和第二网络设备之间的ecmp路径可以被虚拟网络看作一个物理连接,因为它们的分组(内部分组)由外部ip报头封装。

在图1的示例中,从服务器12a到服务器12x存在相等路由成本的多个路径27a至27b(统称为“路径27”)。路径27b遍历从服务器12a出发并且由tor交换机16a、底架交换机18a、tor交换机16n和服务器12x组成的物理网络路径。相比之下,路径27a遍历从服务器12a出发并且由tor交换机16a、底架交换机18m、tor交换机16n和服务器12x组成的物理网络路径。服务器12a可以根据分配方案向路径27中的任何路径分配由在服务器12a上执行的应用(在图1中未示出)生成的分组流。例如,分配方案可以根据分组报头字段的不变量选择来分配分组,从而分组括源ip地址、目的地ip地址、ip协议(ipv4)或下一个报头(ipv6)、传输层源端口和/或传输层目的地端口。不变量被用来指在属于分组流的分组当中不改变的分组字段。例如,属于分配给路径27a的分组流的分组遍历路径27a以到达服务器12x。

依照本公开中描述的技术,服务器12a可以接收请求29a以确定由服务器12a已经分配给路径27a的特定分组流的分组遍历的物理网络路径。服务器12a根据分配方案生成如下第一流跟踪分组:至少具有与请求分组流的分组完全相同、足以使得服务器12a匹配第一流跟踪分组与分组流并且从而使得第一流跟踪分组根据路径27a被转发的分组报头字段的第一流跟踪分组。结果,第一流跟踪分组将遍历与分组流的分组完全相同的物理网络路径。

为了确定沿着由分组流采取的物理网络路径的第一下一跳,服务器12a将针对流跟踪分组的生存时间(ttl)值设置成1,然后将第一流跟踪分组转发到路径27a的第一下一跳(即,tor交换机16a)。因为针对第一流跟踪分组的ttl值被设置成1,tor交换机16a将ttl值递减为零,抛弃第一流跟踪分组,并且返回针对第一流跟踪分组的因特网控制消息协议(icmp)超时消息(其包括tor交换机16a的网络地址)。尽管描述为icmp超时消息,超时消息可以包括指示tor交换机16a已经接收具有ttl值=1的ip分组的另一类型的消息。

服务器12a以类似于第一流跟踪分组的其它方式生成第二流跟踪分组,但是递增ttl值以将第二流跟踪分组上的ttl值设置成2。服务器12a沿着路径27a转发第二流跟踪分组。底架交换机18m接收第二流跟踪分组,抛弃分组,并且响应地将icmp超时消息返回到服务器12a。服务器12a迭代地生成针对分组流的另外的流跟踪分组,从而通过每个连续连续流跟踪分组递增ttl值并且沿着路径27a转发另外的流跟踪分组。结果,针对分组流,沿着路径27a的连续下一跳各自接收具有零ttl的流跟踪分组并且各自将icmp超时消息返回到服务器12a。相比于跟踪路由工具(如果由服务器12a执行,其将产生icmp回应请求消息,icmp回应请求消息形成可以由服务器12a分配给路径27b的分组流),技术可以确保由流跟踪分组所采取的路径匹配由对应分组流所采取的物理网络路径(即,多路径环境中的路径27a)。服务器12a可以使用从沿着路径27a的物理下一跳返回的返回icmp超时消息,以生成物理下一跳的列表,在响应29b中服务器12a将物理下一跳的列表返回到vnc22。在一些实例中,上面描述为由服务器12a执行的技术可以代替地或另外地由诸如tor交换机16和底架交换机18之类的交换机结构14元件执行。

在如图1的示例中示出的虚拟网络中,网络控制器22可以指导技术使用统计技术找到真实延迟。通常,虚拟网络域独立于物理网络域被控制,因此,确定虚拟网络域内的给定网络流的分组的实际路径的能力是不直接的,并且通常要求了解物理网络的状态。

可以被采用用于确定由通过交换机路由器网络的网络ip分组所采取的路径的一种技术是使用由大多数操作系统以及网络操作系统支持的ip跟踪路由功能。然而,在采用对于虚拟网络和虚拟路由技术来说不易得到的任何特定流的多路径延迟(即,分组经由交换机和连接器的特定路径从一个网络设备(例如,服务器)行进到另一个网络设备所用的时间(例如,在ip结构20内))时,这样的跟踪路由功能可能无法良好工作,这是因为不同网络流使用不同的路径通过网络并且用于确定路由的跟踪路由分组将不具有与应用分组相同的报头。因为大多数网络交换机路由器中的散列函数依赖于分组报头,这种跟踪路由分组可以不遵循相同的路径。

依照本公开的技术,用于确定多路径路由环境中的延迟的一种方法是收集每个虚拟交换机节点(例如,驻留在服务器12上的)上的统计数据,也就是说,每个交换机节点收集关于哪些分组已经行进通过服务器12之间的交换机节点和什么时候它们行进通过服务器12之间的交换机节点的数据。然后交换机将该数据发送到在虚拟网络控制器22上执行的分析引擎。分析引擎可以使用数据来计算延迟。然而,从所有服务器12上的虚拟交换机节点收集所有这样的数据可能会导致可能难以有效地使用并且将侵蚀网络带宽的大量数据。所以在一些示例性实施例中,管理员24可以选择限制被聚集的数据。例如,管理员24可以在虚拟网络控制器22处指定要针对某类流量捕获统计数据,并且还可以限制收集统计数据的时间段。为了捕获某类流量,分组可以像匹配列表那样被使用,称为分组分类器。虚拟网络控制器22可以向下发送分组分类器,以安装在适当的服务器12上。

为了为客户11提供网络服务,数据中心10的服务器12可以经由交换机结构14彼此交换大量数据。一般,可能期望服务器12使用多播服务进行通信。多播服务涉及在单个发射中将数据从源设备通过网络基本上同时地递送到订户的群组。在图1的示例中,在两个或更多的服务器12有兴趣接收来自例如源服务器12a的相同多播数据时,感兴趣的服务器12可以请求加入与多播数据关联的多播群组。

在常规的数据中心中,为了将多播数据从源服务器转发到两个或更多其它服务器,多播数据按需由交换机结构内的物理网络交换机和路由器复制。用于复制和转发针对多播群组的多播数据的网络交换机和路由器可以创建通过交换机结构的多播分布树,以管理多播数据的复制和递送。在其中大量服务器(例如,2000个服务器)通过交换机结构互连的情况下,每对服务器可以具有大量的在它们之间的等价路径。物理服务器可以使用单播服务进行通信,但是由于交换机结构中的大量冗余路径,物理服务器之间的多播服务可能更难以管理。

另外,在常规数据中心中使用的多播协议会通过没有高效地使用交换机结构内的所有可用链路而浪费带宽。而且,交换机结构内的物理交换机和路由器可以仅能够支持非常少数的多播表,使得常规数据中心将不能够扩展以支持针对大量互连服务器所必要的大量多播群组。

在大数据中心中在服务器之间提供l3多播服务情况下的上述问题然而可能无法利用建立在交换机结构上、用于仿真在服务器上执行的虚拟交换机之间的l2网络的虚拟重叠网络来解决。通常,为了虚拟重叠网络仿真l2多播服务,底层交换机结构也必须支持多播服务。

总体上,本公开描述在不要求底层网络中的多播支持情况下用于在虚拟网络内提供多播服务的技术。更具体地,技术使用虚拟网络控制器22和端点复制使得能够在交换机结构14的虚拟重叠网络中支持l2多播服务。虚拟网络控制器22被配置为创建针对虚拟网络中的多播群组的端点设备(例如,服务器12)的多播树。多播树被认为是多播树,因为它在仿真l2多播的虚拟重叠网络中被创建,使得任何服务器12可以是多播流量的源服务器,称为双向多播。然后,虚拟网络控制器22将多播树传达给多播群组的一个或多个服务器12,以指示服务器12根据多播树复制多播分组并且将多播分组转发到属于多播群组的两个或更多服务器12。

根据技术,多播树在虚拟网络控制器22处被计算,而不是由服务多播群组的交换机结构14中的网络交换机和路由器以分布式方式来计算。另外,多播分组的复制和转发由执行在虚拟网络的服务器12上的虚拟交换机来执行。在底层交换机结构14内不执行复制。用这种方法,技术使得多播服务能够在不要求底层网络中的多播支持情况下在虚拟网络内进行。例如,交换机结构14不需要支持l3多播,这可以使交换机结构14简单和易于管理。

另外,虚拟网络控制器22可以创建多播树以最小化复制限制,使得若干服务器12可以复制和转发少数的多播分组,而不是单个源服务器必须承担复制分组并且将分组转发到属于多播群组的所有服务器的负载。进一步地,虚拟网络控制器22可以配置针对多播群组的多播树中的每个链路方向的唯一虚拟网络隧道封装,以便高效地使用交换机结构14中的带宽。在图2a和图2b中关于虚拟网络控制器22和服务器12更详细地描述技术。

在一些示例中,虚拟网络控制器22作为日志记录信息收集器进行操作,以从数据中心10的不同元件(包括底架交换机18、tor交换机16、if-map服务器26中的任何一个,以及服务器12或执行在其上的应用中的任何一个)获得日志记录信息。底架交换机18、tor交换机16、if-map服务器26以及任何服务器12本文中一般可以被称为“生成器”。尽管下面主要关于服务器12a进行描述,本公开的技术因此可应用于至少任何前述网络元件。

服务器12a被配置为依照日志记录的基线范围来生成日志记录信息。服务器12a以及日志记录信息的其它生成器在本文中备选地被称为“生成器”。基线范围指的是在日志记录范围未被vnc22修改的情况下由生成器在普通或“基线”操作环境下收集的日志记录信息的类型和数量。服务器12a将收集的日志记录信息以日志消息发送到vnc22。服务器12a可以周期性地或响应于一些事件(例如,新日志记录信息的生成或者所生成的日志记录信息的某个数量)发送日志消息,以更新vnc22上针对服务器12a的日志记录信息。在图示的示例中,服务器12a将包括新生成的日志记录信息的日志消息25发送到vnc22。

依照本文中描述的技术,vnc22分析日志消息25中的日志记录信息,确定应当修改由服务器12a执行的日志记录的范围。因此,虚拟网络控制器22生成日志记录修改消息27并且将日志记录修改消息27发送到服务器12a,以向服务器12a指示新的日志记录范围。服务器12a修改其日志记录操作以符合由vnc22指定的日志记录范围,这可以包括通过以下方式来增加日志记录的数量:例如,返回针对应用的已经存储到存储器的状态信息,指导应用执行一个或多个诊断子例程以生成另外的日志记录信息,设置使得应用生成比基线更大范围的日志记录信息的变量或标志。服务器12a在日志消息29中返回依照超过基线范围的增加所生成的日志记录信息。用这种方法,vnc22动态地适配由服务器12a执行的日志记录的范围,以扩大在由先前接收的日志记录信息(这里,日志消息25中的日志记录信息)指示时收集的日志记录信息的数量。

在一些示例中,除了动态地调整由服务器12a生成的日志记录信息的范围,vnc22还可以指导服务器12a修改发送日志消息的速率。例如,服务器12a可以周期性地生成针对基线日志记录信息的日志消息。在根据所描述的技术由vnc22指导时,服务器12a可以增加日志消息的速率,和/或可以将依照超过基线范围的增加所生成的日志记录信息在其生成之后尽可能快地发送,以快速地向vnc22提供日志记录信息,以便于对感兴趣事件(例如,由服务器12a执行一个或多个应用所造成的错误和/或异常)的快速响应。

在一些示例中,vnc22可以实现技术以便于在诸如元数据接入点接口(if-map)服务器26(“if-map服务器26”)之类的厂商中立服务器的上下文中的多租户。if-map服务器26可以表示依照厂商中立数据模型存储信息的中间网络设备。“if-map”原本指的是提供厂商可以采用的标准化授权数据模型的授权数据模型,以便于降低在厂商指定或专有授权数据模型之间出现的通信或互操作性问题。负责引入if-map的群组(称为可信计算组织(tcg))正在鼓励厂商接受这种新的if-map标准,并且厂商正在发行与该标准兼容的设备。

if-map标准不仅提供厂商中立或跨厂商数据模型,而且提供if-map协议,通过if-map协议访问根据该标准(厂商中立授权数据模型)存储的授权信息。if-map协议支持各种if-map消息或通信,通过if-map消息或通信公布授权信息、搜索存储在if-map服务器内的授权信息、订阅存储在if-map服务器内的授权信息、以及轮询针对给定设备订阅的授权信息的if-map服务器。关于if-map跨厂商或厂商中立数据模型和协议的更多信息可以在日期为2012年5月7日、规范版本2.1、修订15、名称为“tncif-mapbindingforsoap”的说明书中找到,其内容通过引用方式并入于此,如同将其整体阐述一样。

此后,if-map已经被扩大或修改,以适应包括云计算(其可以涉及托管云计算应用的诸如数据中心10之类的数据中心)的不同技术。if-map服务器26可以表示实现符合在该云计算上下文中的if-map的数据模型并且支持用于公布、轮询、访问和/或接收存储到if-map数据模型的该云计算版本的数据的if-map协议的if-map服务器。

虽然本文中关于通过if-map标准阐述的该特定厂商中立授权数据模型进行描述,但是技术可以关于任何标准或接受授权数据模型来实现。而且,虽然描述为例如独立数据库的分离设备,但是if-map服务器22可以被集成在示出为驻留在图1中的数据中心10内的任何一个网络设备内。例如,虚拟网络控制器22可以包括集成if-map服务器26。因此在这方面,本公开的技术不应当被限制于图1的示例。

虚拟网络可以通过多租户使用。术语“多租户”可以指其中单个硬件和软件平台同时支持来自共同数据存储的多个租户(例如,客户、客户端)的系统。多租户架构中的共享平台通常实际上设计成分区数据和操作,因此每个租户利用唯一的虚拟应用实例进行工作。在一个实施方式中,图1中示出的每个子网可以服务一个租户,例如一家公司。在一些示例中,第一虚拟网络将属于公司a,第二虚拟网络将属于公司b等。

然而,在来自不同公司的标识符重叠时,if-map服务器26可以不支持多租户。为了通过示例的方式图示,公司a和公司b两者都可以具有标识为“雇员#5”的雇员,其中该标识符可以用于检索关于“雇员#5”的授权或其它信息。if-map服务器26可能不能够决定针对关于“雇员#5”的信息的请求将被返回到公司a和公司b中的哪个。在这个意义上,if-map服务器26可能不能够保持针对公司a处的“雇员#5”和公司b处的“雇员#5”的不同记录,这会导致用于公司a和公司b处的雇员#5两者的单个记录。跨公司a和公司b以这种方式的信息混合可以表示实质性的安全漏洞,特别是考虑到if-map服务器26可以存储授权信息,该授权信息可以导致雇员#5接收授权以访问针对雇员#5可能不在该处工作的公司a的数据。

依照本公开中描述的技术的各种方面,一个或多个服务器12可以将可以被称为“局部唯一”标识符的翻译成在数据中心10的上下文内是唯一的全局唯一标识符。换言之,服务器12可以将用于访问存储到if-map服务器26的数据、在公司的上下文内是局部唯一的标识符翻译成跨访问数据中心10的所有公司唯一的标识符,从而可能在数据仅由特定公司a访问而不能由数据中心10的另一公司或客户访问的意义上,确保存储到if-map服务器26的数据保持安全。

在操作中,作为一个示例,服务器12a可以接收关于与标识符关联的数据的请求,该标识符在发起请求的数据中心10的若干客户之一(其中,如下面更加详细描述的,每个客户在数据中心10内常常由对应若干虚拟网络之一表示)内是唯一的。在图1的示例中,请求符合厂商中立if-map协议,但是技术可以关于任何厂商中立或厂商指定协议来执行。

然后,服务器12a可以翻译包括在请求内的标识符(例如,雇员#5),以生成在多个虚拟网络内唯一的全局唯一标识符。通常,这种翻译对于客户来说是透明的,这是考虑到标识符在公司a的上下文内是局部唯一的,客户(在这个示例中,公司a)不知道这种翻译的另一种方法。也就是说,服务器12a可以以这样的方式翻译标识符,使得公司a的用户和设备不能够检测出翻译发生。

通常,服务器12a可以存储在每个客户(或者客户的虚拟网络表示)和名称空间之间的关联。作为一个示例,名称空间可以包括客户(例如,公司a)的名称。然后,服务器12a可以将该名称空间附加到标识符,以生成全局唯一标识符。为了说明,服务器12a可以接收来自具有标识符(雇员#5)的公司a的请求。通过将公司a附加到雇员#5、利用得到的“公司a:雇员#5”的全局唯一标识符,服务器12a可以将标识符雇员#5翻译成全局唯一标识符。以这种方式附加名称空间类似于名称空间如何被用在诸如c++之类的各种计算机编程语言中。

在任何情况下,在生成全局唯一标识符之后,服务器12a可以更新请求,以用全局唯一标识符替换包含在请求内的标识符。然后,服务器12a可以将更新的请求发射到if-map服务器26。该请求可以包括任何形式的通信,从而包括数据公布请求、数据轮询请求、数据检索请求或者任何其它形式的if-map请求或通信。因此在这个意义上,术语“请求”不应被限制于针对数据的请求,而是可以指任何请求或通信。

if-map服务器26可以发出对请求的响应,其中响应可以包括全局唯一标识符。考虑到客户(在这个示例中,公司a)常常不知道由服务器12a执行的翻译,服务器12a可以翻译该全局唯一标识符以恢复原始标识符,该原始标识符再次在公司a的上下文内是局部唯一的。服务器12a然后可以更新响应,以用恢复的局部唯一标识符替换全局唯一标识符。服务器12a然后可以将更新的响应发射到公司a,公司a可以以任何数量的方式处理响应,但是常常在授权标识符以访问由一个或多个服务器12存储的数据或者由一个或多个服务器12执行的应用的上下文中。

虽然上面描述为使用名称空间,技术一般可以涉及标识符从局部唯一标识符到全局唯一标识符的翻译或变换。以上面描述的方式使用名称空间只是这种翻译的一个示例,并且技术可以关于其它形式的翻译来执行。例如,翻译可以使用客户/标识符组合和全局唯一标识符之间的映射(其可以是到表中的数字或索引)来执行。换言之,虽然名称空间被附加到标识符以形成全局唯一标识符,技术可以关于不以上面关于名称空间描述的方式重新使用局部唯一标识符的其它形式的翻译来执行。

用这种方法,每个租户在其自己的子网内将被指派其自己的名称空间,诸如“公司a”和“公司b”。租户保持在其相应上下文/子网中唯一的标识符,但是标识符可以不是全局唯一的。例如,在它们相应的名称空间中,公司a可以具有标识符“雇员#5”并且公司b也可以具有相同的标识符“雇员#5”。由于每个公司具有其自己的名称空间,相同的标识符可以被多个公司使用而不冲突。然后,每个租户可以仅知道在其自己的名称空间中的标识符。

图2a是进一步详细图示图1的数据中心10的示例实施方式的框图。在图2a的示例中,数据中心10包括使交换机结构14从物理交换机16、物理交换机18延伸至软件或“虚拟”交换机30a至30x(统称为“虚拟交换机30”)的重叠网络。虚拟交换机30动态地创建和管理可用于应用实例之间的通信的一个或多个虚拟网络34。在一个示例中,虚拟交换机30将虚拟网络执行为重叠网络,该重叠网络提供从应用执行在其上的服务器12a至12x(“服务器12”)之一的物理地址(例如,ip地址)解耦应用的虚拟地址的能力。每个虚拟网络可以使用其自己的寻址和安全性方案,并且可以被视为正交于物理网络及其寻址方案。各种技术可以用于在物理网络之上的虚拟网络34内并且跨物理网络之上的虚拟网络34传输分组。在一些示例中,本公开中描述的技术在虚拟网络34内提供多播服务,而不要求底层物理网络中的多播支持。

每个虚拟交换机30可以在每个服务器12的管理程序、主机操作系统或其它部件内执行。在图2a的示例中,虚拟交换机30a在管理程序31(还常常被称为虚拟机管理器(vmm))内执行,管理程序31提供允许多个操作系统在主机服务器12之一上同时运行的虚拟化平台。在图2a的示例中,虚拟交换机30a管理虚拟网络34,每个虚拟网络34提供用于在由管理程序31提供的虚拟化平台的顶部上执行一个或多个虚拟机(vm)36的网络环境。每个vm36与由管理程序31管理的虚拟子网vn0至vn1之一关联。

一般,每个vm36可以是任何类型的软件应用,并且可以被指派虚拟地址以在对应虚拟网络34内使用,其中每个虚拟网络可以是由虚拟交换机30a提供的不同虚拟子网。vm36可以被指派其自己的虚拟层三(l3)ip地址例如以用于发送和接收通信,但是可以不知道虚拟机执行在其上的物理服务器12a的ip地址。用这种方法,“虚拟地址”是针对应用的地址,该地址不同于针对例如图2a和图2b的示例中的服务器12a的底层(物理计算机系统)的逻辑地址。

在一个实施方式中,每个服务器12包括对应虚拟网络(vn)代理35a至35x(统称为“vn代理35”)之一,vn代理35控制虚拟网络34的重叠并且协调数据分组在服务器12内的路由。一般,每个vn代理35与虚拟网络控制器22进行通信,虚拟网络控制器22生成命令以控制分组通过数据中心10的路由。vn代理35可以操作作为针对虚拟机36和虚拟网络控制器22之间的控制平面消息的代理。例如,vm36可以请求使用其虚拟地址经由vn代理35a来发送消息,并且vn代理35a可以转而发送消息并且请求发出第一消息的vm36的虚拟地址接收对消息的响应。在一些情况下,vm36可以调用由vn代理35a的应用编程接口给出的过程或函数调用,并且vn代理35a也可以处理消息的封装,从而包括寻址。

在一个示例中,例如在虚拟网络域内由虚拟机36执行的应用实例生成或消耗的层三(l3)ip分组或层二(l2)以太网分组的网络分组可以被封装在由物理网络传输的另一分组(例如,另一ip或以太网分组)中。在虚拟网络中传输的分组本文中可以被称为“内部分组”,而物理网络分组本文中可以被称为“外部分组”。虚拟网络分组在物理网络分组内的封装和/或解封装可以在虚拟交换机30内执行,例如在运行在每个服务器12上的管理程序或主机操作系统内执行。作为另一示例,封装和解封装功能可以在交换机结构14的边缘处在第一跳tor交换机16处执行,该第一跳tor交换机16从发起分组的应用实例移除的一跳。这一功能本文中被称为隧道,并且可以在数据中心10内使用以创建一个或多个重叠网络。除ipinip外,可以使用的其它示例隧道协议包括gre之上的ip、vxlan、gre之上的mpls等。

如上所述,虚拟网络控制器22提供逻辑集中控制器,以便于一个或多个虚拟网络在数据中心10内的操作。例如,虚拟网络控制器22可以保持路由信息库,例如存储针对数据中心10的物理网络以及一个或多个重叠网络的路由信息的一个或多个路由表。类似地,交换机16、交换机18和虚拟交换机30保持诸如一个或多个路由和/或转发表之类的路由信息。在一个示例实施方式中,管理程序31的虚拟交换机30a实现针对每个虚拟网络34的网络转发表(nft)32。一般,每个nft32存储针对对应虚拟网络34的转发信息,并且标识数据分组将被转发的地方以及分组是否将以隧道协议被封装,诸如具有可以包括针对虚拟网络协议栈的不同层的一个或多个报头的隧道报头。

例如,虚拟机36vm1通过内部链路发送分组41(“内部分组”)到虚拟交换机30a。虚拟交换机30a使用nft1查找分组41的虚拟网络目的地网络地址。nft1指定虚拟交换机30a的出站接口以及分组41的封装。虚拟交换机30a应用封装以添加隧道报头,以生成外部分组43并且在出站接口上输出外部分组43,在这种情况下朝向tor交换机16a输出外部分组43。

例如,路由信息可以将分组密钥信息(例如,来自分组报头的目的地ip信息和其它选择信息)映射到在由虚拟交换机30和交换机结构14提供的网络内的一个或多个指定下一跳。在一些情况下,下一跳可以链接指定在转发分组时对每个分组要执行一组操作的下一跳,诸如可以用于洪传输下一跳和多播复制。在一些情况下,虚拟网络控制器22以具有表示网络内的目的地的叶节点的基数树的形式保持路由信息。美国专利7,184,437提供了关于将基数树用于路由解决的路由器的示例性实施例的细节,美国专利7,184,437的内容通过引用方式整体并入于此。

如图2a所示,每个虚拟网络34提供针对通过交换机结构14建立的重叠网络的封装分组通信37的通信框架。用这种方法,与任何虚拟机36关联的网络分组可以作为封装分组通信37经由重叠网络传输。另外,在图2a的示例中,每个虚拟交换机30包括默认网络转发表nft0,并且提供允许分组在不封装的情况下被转发到虚拟子网vn0的默认路由,即按照数据中心10的物理网络的路由规则的非封装分组通信39。通过使用这种方法,子网vn0和虚拟默认网络转发表nft0提供用于绕过重叠网络并且将非封装分组通信39发送到交换机结构14的机制。

而且,在重叠网络的发现和初始化期间,以及在其中故障链路已经暂时停止了经由重叠网络的通信的条件期间,虚拟网络控制器22和虚拟交换机30可以依照默认网络转发表nft0使用虚拟子网vn0进行通信。一旦建立与虚拟网络控制器22的连接,虚拟网络控制器22就更新其本地路由表,以考虑关于任何故障链路的新信息并且指导虚拟交换机30更新它们的本地网络转发表32。例如,虚拟网络控制器22可以向虚拟网络代理35输出命令,以更新一个或多个nft32,以指导虚拟交换机30改变隧道封装,以便于重新路由在重叠网络内的通信,例如以避开故障链路。

在检测到链路故障时,故障链路本地的虚拟网络代理35(例如,vn代理35a)可以立即改变网络分组的封装,以使重叠网络内的流量改向并且通知虚拟网络控制器22路由改变。转而,虚拟网络控制器22更新其路由信息,可以发出消息到其它虚拟网络代理35,以更新由虚拟网络代理存储在网络转发表32内的本地路由信息。

服务器12a的虚拟交换机30a包括流跟踪模块(ftm)48,以确定由虚拟交换机30a交换的分组流所遍历的物理网络路径。流跟踪模块48可以由管理程序31、服务器12a的主机操作系统或者服务器12的vm代理35a来执行。为了跟踪外部分组45遍历的物理网络路径,流跟踪模块48生成流跟踪分组45a,流跟踪分组45a包括与外部分组43的隧道报头类似的隧道报头。然而,流跟踪模块48最初将第一流跟踪分组45a的ttl值设置为1。另外,流跟踪模块48可以在流跟踪分组45a以及对应于流跟踪分组45a的随后流跟踪分组(例如,流跟踪分组45b)的隧道报头的字段中设置特殊的流跟踪分组指示符,以指导数据中心10的接收虚拟交换机30:如果接收到具有设置为大于1的ttl值的第一流跟踪分组,则抛弃第一流跟踪分组的内部分组。虚拟交换机30a在由流跟踪分组45a和外部分组43共享的输出接口上输出流跟踪分组45a。其上针对流跟踪分组45a和外部分组43的物理网络路径上的第一下一跳的tor交换机16a接收流跟踪分组45a,使ttl值递减到0,并且因为ttl值是0,将icmp超时消息47a返回到虚拟交换机30a。

icmp超时消息47a可以包括超时消息代码0,以指示tor交换机16a由于过期ttl字段而抛弃了流跟踪分组45a。icmp超时消息47a是包括imcp超时消息(icmp类型11)的ip分组。ip分组报头具有tor交换机16a的源ip地址以及其是流跟踪分组45a的源ip地址的目的地ip地址(例如,虚拟机36vm1的ip地址)。imcp超时消息包括ip报头以及流跟踪分组45a的封装数据的前八个字节。

流跟踪模块48另外生成流跟踪分组45b,流跟踪分组45b与流跟踪分组45a类似,但是具有为2的ttl值。虚拟交换机30a在由流跟踪分组45b和外部分组43共享的输出接口上输出流跟踪分组45b。底架交换机18a接收具有设置为1的ttl值的流跟踪分组45b,流跟踪分组45b已经由tor交换机16a递减ttl值并且转发。像关于流跟踪分组45a的tor交换机16a那样,底架交换机18a将流跟踪分组45b的ttl值递减到0,并且因此将icmp超时消息47b返回到虚拟交换机30a。icmp超时消息47b类似于icmp超时消息47a,但是具有其是底架交换机18a的ip地址的源ip地址。

流跟踪模块48继续以这种方式生成流跟踪分组,直到交换机30a接收到确认消息49:随后的流跟踪分组之一已经到达另一虚拟交换机30(在这种情况下,服务器12x)。确认消息可以包括例如icmp回应答复消息。用这种方法,交换机30a的ftm48可以从外部分组45遍历的物理网络路径上的每个物理网络元件接收包括icmp超时消息47a、47b的消息。流跟踪模块48可以将来自相应接收消息的针对每个物理网络元件的ip地址聚集成列表,ftm48可以将该列表发送到例如数据中心10的虚拟网络控制器22。在一些实例中,流跟踪模块48可以将在确认消息49中接收的针对服务器12x的虚拟ip地址附加到列表。流跟踪模块48将针对物理网络元件的ip地址的列表返回到请求设备,或者例如,可以将列表提供给虚拟交换机30a的另一部件或者服务器12a的主机操作系统。

依照本公开的技术,网络控制器22可以指导部件找到通过虚拟化网络中的物理网络的延迟。例如,管理员24可以配置分组分类器,以经由在网络控制台42中输入的命令指定要在虚拟网络控制器22上针对延迟以及在哪些时域上监控哪些分组。虚拟网络控制器22基于分组分类器通知相关vn代理35分组监控定义。vn代理35在相应虚拟交换机30上安装分组捕获逻辑。虚拟交换机30使用分组捕获逻辑对分组进行匹配,并且将匹配分组的副本发送到vn代理35。vn代理35计算针对每个分组的分组签名,并且将信息发送到虚拟网络控制器22,诸如指定分组签名、对分组进行匹配的虚拟交换机30的交换机标识符、以及指示计算分组签名的时间(或者例如对分组进行匹配的时间)的时间戳的信息。虚拟网络控制器22的分布式分析引擎分析接收到的信息,并且关于分组延迟编译结果,如下面进一步详细描述的。虚拟网络控制器22可以将诸如报告之类的结果发送到网络控制台42,以向管理员24显示。

在一些示例中,vm136或者执行在其上的应用被配置为依照日志记录的基线范围生成日志记录信息。vm136将收集的日志记录信息以日志消息发送到vnc22。在图示的示例中,vm136将包括新生成的日志记录信息的日志消息41发送到vnc22。vm136可以被配置为使用提供默认路由的默认网络转发表nft0发送日志消息41,默认路由允许分组在不封装的情况下通过虚拟子网vn0被转发到vnc22,即按照数据中心10的物理网络的路由规则的非封装分组通信39。在一些示例中,针对日志消息41到vnc22的非封装发射,vm136可以配置具有虚拟交换机30a将其映射到vnc22的物理网络地址的虚拟网络地址。

在再进一步的示例中,vm136通过vn代理35a发送日志消息41,vn代理35a操作作为针对虚拟机36和虚拟网络控制器22之间的控制平面消息的代理。例如,vm136请求使用其虚拟地址经由vn代理35a发送日志消息41,并且vn代理35a可以转而发送日志消息41并且请求发起日志消息41的vm36的虚拟地址接收对消息的响应。在一些情况下,vm36可以调用由vn代理35a的应用编程接口给出的过程或函数调用,并且vn代理35a也可以处理消息的封装,从而包括寻址。

vnc22分析日志消息25中的日志记录信息以确定由vm136执行的日志记录的范围应当被修改。因此,虚拟网络控制器22生成日志记录修改消息43,并且将日志记录修改消息43发送到服务器vm136以向vm136指示新的日志记录范围。vm136修改其日志记录操作,以符合由vnc22指定的日志记录范围,这可以包括通过以下方式来增加日志记录的数量:例如,返回针对应用的已经存储到存储器的状态信息或者指导应用执行一个或多个诊断子例程以生成另外的日志记录信息。根据上面描述的技术,vm136可以将依照超过基线范围的增加所生成的日志记录信息以日志消息返回到vnc22。

如在图2的示例中进一步示出的,多个服务器12可以经由虚拟网络控制器22访问if-map服务器26。同样地,多个租户可以访问相同的if-map服务器26。每个服务器12具有多个租户vn1、vn2、vn3以及翻译器(以vn0的形式),翻译器知道由其服务器12管理的所有租户。在从属于公司a的诸如vn1之类的子网接收到查询(其可以是上面提及的请求的另一种提及方式)的同时,翻译器vn0通过添加查询租户的唯一名称空间(在这种情况下,公司a)将查询转换成全局唯一查询。

例如,假设关于雇员#5的查询由公司a生成。在没有翻译器vn0的情况下,关于雇员#5的查询可能不被处理,因为公司b和公司c也可以在它们的相应名称空间中具有标识符雇员#5,并且if-map服务器26将不知道查询涉及哪个雇员#5。通过标识查询通过其进入的连接(即,在图2的示例中,是否它来自vn1、vn2等),翻译器vn0将查询“雇员#5”翻译成“公司a:雇员#5”。利用其是全局唯一的翻译查询,技术可以促进if-map服务器26的高效使用(因为if-map服务器26可以由多个租户共享)。

由if-map服务器26生成的查询结果(其是上面提及的响应的另一种提及方式)可以包括名称空间“公司a”。如果需要的话,则在向子网vn1(其是发起请求/查询的子网)转发结果之前,翻译器vn0可以从全局唯一标识符剥离名称空间(并且从而恢复局部唯一标识符),这是因为子网vn1可能不识别包括名称空间“公司a”的结果。

虽然租户不是“虚拟化知道的”或者换言之,不知道数据中心10的多租户,但是if-map服务器26是虚拟化知道的,并且在关联针对特定标识符的会话数据与数据库中的名称空间:标识符时,可以使用诸如“名称空间:标识符”之类的格式。

在这个意义上,其可以表示虚拟交换机30a的翻译器的vn0(作为一个示例)可以接收关于与标识符关联的数据的请求,该标识符在发起请求的vn34之一内是唯一的。然后,vn0可以翻译包括在请求内的标识符,以生成在vn34内唯一的全局唯一标识符。vn0还可以更新请求,以用全局唯一标识符替换包括在请求内的标识符并且将更新请求经由虚拟网络控制器22发射到if-map服务器26。

在一些实例中,如上所述,通过将指派给发起请求的虚拟网络之一(即,在上面示例中的vn1)的名称空间附加到标识符以生成全局唯一标识符,vn0可以执行翻译。

如上所述,通过便于多租户,技术可以促进if-map服务器26的更高效使用。作为执行技术的结果,vn0可以从与发起上面描述的可以被称为第一请求的vn34之一(即,上面示例中的vn1)不同的vn34之一接收另一请求,其中该第二请求可以涉及与包括在第一请求中的标识符相同的标识符关联的数据。该相同标识符也可以在该另一个vn34(例如,vn2)内是唯一的。然后,vn0可以翻译包括在第二请求内的标识符,以生成第二全局唯一标识符,第二全局唯一标识符在vn34内是唯一的并且不同于针对第一请求生成的另一全局唯一标识符。vn0可以更新该第二请求以用第二全局唯一标识符替换包括在第二请求内的第二标识符,并且将更新的第二请求发射到if-map服务器26。以这种方式,在不必虚拟化或以其他方式创建和保持if-map服务器26的多个实例(诸如每个客户或租户一个)的情况下,技术可以促进if-map服务器26内的多租户。

图2b进一步图示图1和图2a的数据中心的示例细节以在不要求底层物理网络中的多播支持情况下在虚拟重叠网络内提供多播服务。依照技术,在这个示例中,虚拟网络控制器22包括树单元40,树单元40被配置为创建或计算针对属于虚拟网络34中给定多播群组的一个或多个服务器12的多播树。一般,树单元40可以创建针对每个虚拟网络34内的每个多播群组的不同多播树。树单元40可以创建多播树以便于针对多播群组的多播分组在虚拟网络34中的两个或更多服务器之间的递送。然后,树单元40将不同多播树存储在虚拟网络控制器22内的存储器42中。

在一些情况下,多播树可以是单向多播树,其中多播树的根节点操作作为针对多播群组的多播分组的源,并且多播分组沿从根节点的单个、下游方向进行通信。在其它情况下,多播树可以是双向多播树,其中多播树的任何节点可以操作作为针对多播群组的多播分组的源,并且多播分组可以沿从多播树的根节点的上游或下游方向进行通信。根据技术,虚拟网络控制器22可以创建双向多播树,这是因为虚拟网络34仿真其支持双向多播的l2多播。

根据技术,多播树在虚拟网络控制器22的集中位置处被计算,而不是由底层物理网络中的服务多播群组的tor交换机16和底架交换机18以分布式方式被计算。用这种方法,服务器12连接到底层网络的位置可以被考虑。例如,在数据中心中,可能期望树单元40创建多播树,使得由服务器在给定物理机架内的复制不跨机架边界。

在虚拟网络34中多播的上下文中,在服务器12中执行的vm36可以交换消息以了解其它服务器12中“邻近的”多播使能的vm36。在虚拟网络34的上下文中,服务器12可以被认为是通过隧穿通过底层物理网络直接可达的逻辑邻居。在一个示例中,服务器12可以在虚拟网络34中交换协议独立的多播(pim)消息。如上所述,底层物理网络可以不支持多播服务,使得多播邻居消息可以使用虚拟网络34在服务器12和虚拟网络控制器22之间传达。

为了创建多播树,虚拟网络控制器22可以接收来自有兴趣接收与特定多播群组关联的多播分组的一个或多个服务器12的加入请求。虚拟网络控制器22可以类似地接收来自想停止接收针对多播群组的多播分组的服务器12的离开请求。例如,虚拟网络控制器22可以接收作为符合因特网群组管理协议(igmp)或另一多播协议的分组的加入或离开请求。加入和离开请求分组可以包括多播群组标识符,以及有兴趣加入或离开标识多播群组的服务器12之一上执行的vm36的虚拟地址。如上所述,底层网络可以不支持多播服务,使得针对多播群组的加入和离开请求可以使用虚拟网络34在服务器12和虚拟网络控制器22之间传达。虚拟网络控制器22可以保持针对每个虚拟网络34的将vm36映射到多播群组的成员信息。

然后,基于针对物理网络和关联虚拟网络34保持的成员信息和路由信息,虚拟网络控制器22的树单元40可以创建给定多播群组的多播树。例如,基于包括属于多播群组的vm36的服务器12、物理网络中在包括在多播群组中的服务器12之间的可用路径、以及虚拟网络34中服务器12之间的隧道,树单元40可以确定多播树的拓扑结构。

另外,树单元40可以基于针对包括在多播树的多播群组中的每个服务器12的复制限制来确定多播树的拓扑结构。在一些情况下,树单元40可以计算多播树,以便最小化针对每个服务器的复制限制并且跨树平衡复制。通过使用这种方法,树单元40可以创建多播树,使得每个服务器12执行类似的、小量的复制,而不是一个或两个服务器必须承担复制分组并且将分组转发到属于多播群组的所有服务器的负载。

作为示例,树单元40可以创建多播树以最小化复制限制,使得每个服务器12至多发送若干(n)分组副本。复制限制可以被选择为大于或等于2并且远少于多播群组中服务器的量(m),即2≤n<<m。在另一示例中,复制限制可以被选择为少于或等于设备减去1的量,即2≤n≤m-1。在又一示例中,针对每个服务器12的复制限制可以被配置为固定在某个值,例如,8或16。

在一些情况下,树单元40可以被配置为至少基于多播群组中服务器的数目(m)和延迟要求来确定复制限制(n),延迟要求与复制阶段或级别的数目(即,多播树的深度)成比例。在这种情况下,复制限制可以基于平衡两个因素来确定:最小化多播树的树深度(d)和最小化针对多播树中每个服务器的复制限制(n)。树单元40可以能够配置为给予树深度或复制限制更大的权重。例如,可以确定复制限制以便满足[logn(m)]=d。在一些情况下,针对给定服务器12的复制的数目可以是服务器12的复制单元40的性能的函数。例如,树单元40可以在存储器42中保持表,该表基于服务器12的类型给出复制计数。如果针对多播群组中的服务器12的最小表条目等于k,则2≤n≤k使得如果[logk(m)]小于d并且[logn(m)]=d。下面关于图6a至图6b和图8更详细地描述用于最小化复制限制以及平衡复制限制和树深度的若干方法。

虚拟网络控制器22还可以被配置为生成针对生成多播树的每个链路方向的唯一隧道封装。在多播树中,每个方向上的隧道封装是唯一的,因为两个服务器12之间的链路的每个方向具有源ip地址(sip)、目的地ip地址(dip)和多播群组id(mgid)的不同组合。以有序元组{sip,dip,mgid}的这种组合不会针对任何其它群组或链路或相同链路的其它方向重复。用这种方法,服务器12可以使用针对每个分组副本的不同隧道封装报头。

在数据中心10中,服务器12之间通过交换机结构14的路径可以是基本上同等可能的,使得转发可以不限于由底层物理网络中的多播算法选择的某些链路。不同隧道封装报头允许物理网络中的多个等价路径被用于相同的多播群组,这高效地利用网络的带宽。其中多播树中的每个链路方向具有唯一隧道封装报头的配置可以使得虚拟网络控制器22能够使流量在底层物理网络中的多个等价路径之上的分布随机化。

为了执行虚拟网络34中的多播,虚拟网络控制器22在虚拟网络34中将针对指定多播群组创建的多播树传达给属于多播群组的服务器12。在一些示例中,虚拟网络控制器22将多播树作为包括多播树的与一个特定服务器12相关的一个或多个转发条目的树转发状态传达给服务器12之一。转发条目可以存储在与虚拟网络34对应的nft32中。树转发状态可以包括针对服务器12的虚拟交换机30的多播树的下一跳信息。下一跳可以是链接的下一跳,该链接的下一跳指定由虚拟交换机30在转发分组时执行对多播群组的每个多播分组的复制。

传达的多播树指示服务器12的虚拟交换机30根据多播树复制多播分组并且向其它服务器12转发多播分组。如在图2a中图示的,虚拟交换机30各自包括复制单元44a至44x(“rep.单元44”)中的一个对应复制单元。复制单元44基于多播树的拓扑结构复制接收到的多播分组。然后,虚拟交换机30使用隧道封装依照如由虚拟网络控制器22配置的nft32之一将分组副本转发到多播群组的一个或多个其它服务器。

根据技术,例如,服务器12a在虚拟网络34中从虚拟网络控制器22接收针对服务器12a属于的多播群组的多播树。然后,服务器12a可以接收针对多播群组的多播分组,该多播分组将根据针对多播群组的多播树在虚拟网络上被转发。服务器12a的虚拟交换机30a使用复制单元44a根据根据接收到的双向多播复制针对多播群组的多播分组。如果服务器12a是多播树中的源服务器或中间服务器,则复制单元44a可以创建如多播树所要求的分组的一个或多个副本。根据多播树,服务器12a的复制单元44a可以生成不多于n个副本的多播分组。服务器12b至12x中属于相同多播群组的一个或多个服务器也可以从虚拟网络控制器22接收多播树。服务器12b至12x中每个服务器的复制单元44b至44x也可以根据多播树生成多播分组的一些副本。在一些情况下,副本的数目可以与由复制单元44a生成的副本数目相同。在其它情况下,副本的数目可以不同于由复制单元44a生成的副本数目。

然后,虚拟交换机30a根据多播树使用隧道封装将复制的多播分组在虚拟网络中转发到多播群组的其它服务器12。虚拟交换机30a可以将分组的每个副本封装在如由虚拟网络控制器22配置的、如由虚拟交换机30a中的nft32之一指定的唯一隧道封装报头中。用这种方法,底层网络中的多个等价路径可以用于相同的多播群组,以高效使用带宽。唯一隧道封装报头可以由虚拟网络控制器22配置,使得多播树中的每个链路方向具有唯一的虚拟网络隧道封装。多播分组的复制和转发仅在虚拟网络中由服务器12上执行的虚拟交换机30执行。没有复制在底层网络内执行。用这种方法,技术使得多播服务能够在虚拟网络内进行,而不要求底层网络中的多播支持。

图3是图示示例系统50的另一框图,示例系统50图示了在如本文中描述的底架交换机和tor交换机内的路由信息的示例配置。例如,图3的系统50可以对应于图1和图2中图示的数据中心10的一部分。

在这个示例中,其可以是图1的任何底架交换机18的底架交换机52(“ch52”)通过底架链路60a和底架链路60b(“底架链路60”)分别耦合到架顶(tor)交换机58a至58b(“tor58”)。在一些示例中,tor58可以是图1的任何tor16。在图3的示例中,tor58通过tor链路62a至62d(“tor链路62”)还耦合到服务器51a至51b(“服务器51”)。服务器51可以是任何服务器210(图1)。这里,服务器51与两个tor58都进行通信,并且可以物理驻留在任一关联的机架中。tor58各自与包括底架交换机52的若干网络交换机进行通信。

底架交换机52具有与接口(用于与所示网络进行通信)进行通信的处理器54a,以及将存储器(未示出)连接到处理器54a的总线。存储器可以存储若干软件模块。这些模块包括控制网络路由的软件,诸如包含用于遵照ospf协议操作底架交换机52的指令的ospf模块(未示出)。底架交换机52保持包含针对分组的路由信息的路由表(“rt表”)56a,其描述网络的拓扑结构。例如,路由表56a可以是分组目的地因特网协议(ip)地址以及例如表示为到网络部件的链路的对应下一跳的表。本文中提及ip可以指ipv4或ipv6。

tor58各自具有相应处理器54b、54c、与底架交换机52进行通信的接口、以及存储器(未示出)。如上所述,每个存储器包含包括ospf模块的软件模块以及路由表56b、56c。

诸如通过使用诸如开放式最短路径优选(ospf)或is-is之类的链路状态路由协议,tor58和底架交换机52可以交换指定可用路由的路由信息。tor58可以被配置作为不同路由子网的所有者。例如,tor58a被配置作为其是图2a的示例中的子网10.10.10.0/24的子网1的所有者,并且tor58a被配置作为其是图2a和图2b的示例中的子网10.10.11.0/24的子网2的所有者。作为它们相应子网的所有者,tor58本地存储针对它们子网的个体路由,并且不需要播送所有路由通告直到底架交换机52。备选地,一般tor58将仅向底架交换机52通告它们的子网地址。

基于从tor58接收的路由通告,底架交换机52保持路由表(“rt表”)56a,该路由表包括表示为由tor58可达的子网的路由。在图2a的示例中,rt表56a存储路由,该路由指示目的地为子网10.10.11.0/24内的地址的流量可以在链路60b上被转发到tor58b,并且目的地为子网10.10.10.0/24内的地址的流量可以在链路60a上被转发到tor58a。

在典型的操作中,底架交换机52通过其网络接口接收因特网协议(ip)分组,读取分组的目的地ip地址,在路由表56a上查找这些地址以确定对应目的地部件,并且据此转发分组。例如,如果接收分组的目的地ip地址是10.10.10.0(即,tor58a的子网的地址),底架交换机52的路由表指示分组将经由链路60a被发送到tor58a,并且底架交换机52据此发射分组,最终以用于转发到一个指定的服务器51。

类似地,每个tor58通过其网络接口接收因特网协议(ip)分组,读取分组的目的地ip地址,在其路由表56上查找这些地址以确定对应目的地部件,并且根据查找结果转发分组。在一些情况下,网络元件(例如,tor48之一或底架交换机52)可以接收具有为1的ttl值的ip分组。结果,网络元件将icmp超时消息返回到分组的源ip地址。依照本文中描述的技术,服务器51可以通过发出具有迭代ttl值的连续流跟踪分组而“走过”系统50的物理网络路径,并且作为响应,从沿着路径的连续物理网络元件接收icmp超时消息。

在一个示例迭代中,服务器51a向tor58a发送具有设置为1的ttl值的流跟踪分组66(ip分组)。流跟踪分组66可以表示图2a的流跟踪分组45中的任何一个。tor58a接收流跟踪分组66,使ttl值递减并且因为ttl值现在是0,将icmp超时消息68返回到服务器51a。

图4是图示依照本公开的一个或多个实施例的用于便于一个或多个虚拟网络的操作的虚拟网络控制器22的示例实施方式的框图。例如,虚拟网络控制器22可以对应于图1和图2的数据中心10的虚拟网络控制器22。

图4的虚拟网络控制器(vnc)22图示vnc的分布式实施方式,vnc的分布式实施方式包括多个vnc节点80a至80n(统称为“vnc节点80”),以执行数据中心vnc的功能,从而包括管理针对在数据中心内实现的一个或多个虚拟网络的虚拟交换机的操作。每个vnc节点80可以表示数据中心的不同服务器(例如,图1至图2的服务器12中的任何一个服务器),或者备选地,通过例如服务提供商网络的边缘路由器或者数据中心网络的客户边缘设备耦合到ip结构的服务器或控制器。在一些实例中,一些vnc节点80可以作为分离虚拟机执行在相同服务器上。

每个vnc节点80可以控制诸如服务器、在服务器内执行的个体虚拟交换机、与虚拟交换机关联的个体接口、底架交换机、tor交换机和/或通信链路之类的数据中心元件的不同、非重叠集。vnc节点80使用对等链路86与彼此对等,以交换针对包括分布式数据库82a至82k(统称为“分布式数据库82”)的分布式数据库的信息以及针对路由信息库84a至84n(统称为“rib84”)的路由信息(例如路由)。对等链路86可以表示针对路由协议的对等链路(诸如边界网关协议(bgp)实施方式),或者针对通过其vnc节点80可以协调以根据对等关系共享信息的另一对等协议的对等链路。

vnc22的vnc节点80包括各自具有例如一个或多个路由表的相应rib84,一个或多个路由表存储针对由vnc22控制的数据中心的物理网络和/或一个或多个重叠网络的路由信息。在一些实例中,rib84之一(例如,rib84a)可以存储针对操作在数据中心内并且由对应vnc节点80(例如,vnc节点80a)控制的任何虚拟网络的完整路由表。

一般,分布式数据库82定义由分布式vnc22控制的数据中心的虚拟网络的配置或者描述由分布式vnc22控制的数据中心的虚拟网络的操作。例如,分布式数据库82可以包括描述以下内容的数据库:一个或多个虚拟网络的配置、数据中心服务器的硬件/软件配置和功能、针对一个或多个虚拟网络和/或底层物理网络的性能或诊断信息、包括服务器/底架交换机/tor交换机接口和互连链路的底层物理网络的拓扑结构等。分布式数据库82可以各自使用例如分布式散列表(dht)来实现,以提供针对由不同vnc节点80存储的分布式数据库的密钥/值对的查找服务。vnc节点80可以请求服务器12返回通过虚拟网络的针对网络流的物理路径。然后,vnc节点80可以将物理路径存储到分布式数据库82之一。在一些实例中,任何vnc节点80可以使用本文中描述的如由服务器12执行的技术来确定通过虚拟网络的针对网络流的物理路径。

依照本公开的技术的方面,在vn代理35通过物理网络向虚拟网络控制器22发送消息以触发虚拟网络控制器22用指定路由更新网络转发表280以重新路由网络流量时,这些通信可以诸如经由像bgp那样的路由协议或其它对等协议通过对等链路66发生。类似地,一旦已经利用虚拟网络控制器22建立初始接触(例如,建立bgp或其它通信会话),虚拟网络控制器22可以经由对等链路66向vn代理35a发送重叠路由。vn代理35a可以经由对等链路66利用重叠路由从虚拟网络控制器22接收消息。

图5是图示依照本公开的一个或多个实施例的用于便于一个或多个虚拟网络的操作的虚拟网络控制器100的示例实施方式的框图。例如,虚拟网络控制器100可以对应于图1和图2的数据中心10的虚拟网络控制器22或者图4的虚拟网络控制器22。

如在图5的示例中图示的,分布式虚拟网络控制器(vnc)100包括一个或多个虚拟网络控制器(“vnc”)节点102a至102n(统称为“vnc节点102”)。每个vnc节点102可以表示图4的虚拟网络控制器22的任何vnc节点80。根据对等协议与彼此对等的vnc节点102通过网络160进行操作。网络160可以表示图1交换机结构14和/或ip结构20的示例实例。在图示的示例中,vnc节点102使用边界网关协议(bgp)实施方式(对等协议的示例)与彼此对等。在这个意义上,vnc节点102a和102n可以表示使用对等协议对等的第一控制器节点设备和第二控制器节点设备。vnc节点102包括相应网络发现模块114a至114n,以发现网络160的网络元件。

vnc节点102使用对等协议向彼此提供与至少部分由vnc节点102管理的虚拟网络的相应元件有关的信息。例如,vnc节点102a可以管理作为用于虚拟网络的虚拟网络交换机进行操作的一个或多个服务器的第一集。vnc节点102a可以通过bgp118a向vnc节点102n发送涉及服务器的第一集的管理或操作的信息。由vnc节点102管理的其它元件可以包括例如网络控制器和/或器具、网络基础结构设备(例如,l2或l3交换机)、通信链路、防火墙以及vnc节点102。因为vnc节点102具有对等关系而不是主从关系,信息可以在vnc节点102之间充分容易地共享。另外,vnc节点102的硬件和/或软件可以充分容易地替换,从而提供令人满意的资源可备选性。

每个vnc节点102可以包括大致类似的部件以用于执行大致类似的功能,下文中主要关于vnc节点102a描述所述功能。vnc节点102a可以包括分析数据库106a以用于存储与由vnc节点102a管理的元件的第一集有关的诊断信息。vnc节点102a可以共享与由vnc节点102a管理的元件的第一集的一个或多个元件有关的并且存储在分析数据库106中的至少一些诊断信息,以及用于接收与由其它vnc节点102管理的任何元件有关的至少一些诊断信息。分析数据库106a可以表示例如分布式散列表(dht),或者用于与其它vnc节点102合作以分布式方式存储针对网络元件的诊断信息的任何适合数据结构。分析数据库106a至106n(统称为“分析数据库106”)可以至少部分表示图4的分布式虚拟网络控制器22的分布式数据库82之一。

vnc节点102a可以包括配置数据库110a以用于存储与由vnc节点102a管理的元件的第一集有关的配置信息。vnc节点102a的控制平面部件可以使用接口144a将配置信息存储到配置数据库110a,接口144a可以表示针对元数据接入点(if-map)协议实施方式的接口。vnc节点102a可以共享与由vnc节点102a管理的元件的第一集的一个或多个元件有关的并且存储在配置数据库110a中的至少一些配置信息,以及用于接收与由其它vnc节点102管理的任何元件有关的至少一些配置信息。配置数据库110a可以表示例如分布式散列表(dht),或者用于与其它vnc节点102合作以分布式方式存储针对网络元件的配置信息的任何适合数据结构。配置数据库110a至110n(统称为“配置数据库110”)可以至少部分表示图4的分布式虚拟网络控制器22的分布式数据库82之一。rib84的一部分可以由控制平面vm112存储,以便于网络发现模块和bgp118的操作。

虚拟网络控制器100可以执行由模块130表示的图示虚拟网络控制器操作中的任何一个或多个,模块130可以包括编配132、用户接口134、vnc全局负载平衡136和一个或多个应用138。响应于动态需求环境,vnc100执行编配模块132以通过以下方式便于一个或多个虚拟网络的操作:例如大量生成/移除数据中心服务器中的虚拟机、调整计算能力、分配网络存储资源、以及修改连接虚拟网络的虚拟交换机的虚拟拓扑结构。由vnc100执行的vnc全局负载平衡136支持例如在vnc节点102之间的分析、配置、通信任务的负载平衡。应用138可以表示由vnc节点102执行的一个或多个网络应用,以例如改变物理和/或虚拟网络的拓扑结构、添加服务、或者影响分组转发。

用户接口134包括管理员(或软件代理)可用于控制vnc节点102的操作的接口。例如,用户接口134可以包括通过其管理员可以修改例如vnc节点102a的配置数据库110a的方法。由vnc100操作的一个或多个虚拟网络的管理可以通过提供单点管理的统一用户接口134进行,这可以降低一个或多个虚拟网络的管理成本。

vnc节点102a可以包括控制平面虚拟机(vm)112a,控制平面虚拟机(vm)112a执行控制平面协议以便于本文中描述的分布式vnc技术。在一些实例中控制平面vm112a可以表示本机进程。在图示的示例中,控制vm112a执行bgp118a以向例如vnc节点102n的控制平面虚拟机112n提供与由vnc节点102a管理的元件的第一集有关的信息。控制平面vm112a可以使用基于开放标准的协议(例如,基于bgp的l3vpn),以利用其它控制平面实例和/或其它第三方联网设备来分布关于其虚拟网络的信息。给定根据本文中描述的一个或多个方面的基于对等的模型,不同控制平面实例(例如,控制平面vm112a至112n的不同实例)可以执行不同的软件版本。在一个或多个方面中,例如,控制平面vm112a可以包括一种类型软件的特定版本,并且控制平面vm112n可以包括相同类型软件的不同版本。控制节点设备的对等配置可以使得能够使用针对控制平面vm112a至112n的不同软件版本。由相应vnc节点102执行多个控制平面vm可以防止单点故障的出现。

控制平面vm112a使用通过网络160进行操作的通信协议与虚拟网络交换机(例如,图示的由服务器140执行的vm交换机174)进行通信。虚拟网络交换机便于一个或多个虚拟网络中的重叠网络。在图示的示例中,控制平面vm112a使用可扩展消息传递和到场协议(xmpp)116a以通过xmpp接口150a与至少虚拟网络交换机174进行通信。虚拟网络路由数据、统计信息收集、日志以及配置信息可以依照xmpp116a作为xml文档被发送,以用于在控制平面vm112a和虚拟网络交换机之间的通信。控制平面vm112a可以转而向其它其它xmpp服务器(诸如,分析收集器)路由数据,或者可以代表一个或多个虚拟网络交换机检索配置信息。控制平面vm112a可以进一步执行通信接口144a,以用于与配置虚拟机(vm)108a(与配置数据库110a关联)进行通信。通信接口144a可以表示if-map接口。

vnc节点102a可以进一步包括配置vm108a,以将针对元件的第一集的配置信息存储到配置数据库110a并且管理配置数据库110a。尽管被描述为虚拟机,在一些方面中配置vm108a可以表示在vnc节点102a的操作系统上执行的本机进程。配置vm108a和控制平面vm112a可以使用if-map通过通信接口144a并且使用xmpp通过通信接口146a进行通信。在一些方面中,配置vm108a可以包括可水平扩展多租户if-map服务器以及表示配置数据库110a的基于分布式散列表(dht)的if-map数据库。在一些方面中,配置vm108a可以包括配置翻译器,配置翻译器可以将用户友好更高级别虚拟网络配置翻译成基于标准的协议配置(例如,bgpl3vpn配置),该基于标准的协议配置可以使用配置数据库110a来存储。通信接口140可以包括if-map接口以用于与其它网络元件进行通信。假定if-map模式可以动态更新,使用if-map可以使虚拟网络配置的存储和管理非常灵活和可扩展。有利地,虚拟网络控制器100的方面对于新应用138而言可以是灵活的。

依照本公开中描述的技术的各种方面,一个或多个配置vm108的翻译器可以提供翻译,以便于if-map服务器/数据库内的多租户。也就是说,上面讨论的这些翻译器可以执行本公开中描述的技术,以将对于一个发起配置vm108唯一、但是跨所有配置vm108全局不唯一的标识符翻译成全局唯一标识符,以用上面描述的方式便于if-map服务器/数据库内的多租户。在这方面,这些翻译器可以执行与如上面关于图3的示例描述的由vn58执行的翻译相似的翻译。

vnc节点102a可以进一步包括分析虚拟机(vm)104a以存储与至少由vnc节点102a管理的元件的第一集有关的诊断信息(和/或可见性信息)。控制平面vm和分析vm104可以使用xmpp实施方式通过通信接口146a进行通信。尽管被描述为虚拟机,分析vm104a在一些方面中可以表示在vnc节点102a的操作系统上执行的本机进程。

分析vm104a可以包括分析数据库106a,分析数据库106a可以表示存储针对虚拟网络的可见性数据的分布式数据库的示例,诸如图4的分布式虚拟网络控制器22的分布式数据库82之一。可见性信息可以描述分布式vnc100本身和客户网络两者的可见性。分布式数据库可以包括在第一侧的xmpp接口以及在第二侧的rest/jason/xmpp接口。

虚拟网络交换机174可以实现针对一个或多个端点和/或一个或多个主机的层3转发和策略强制执行点。由于来自控制平面vm112a的配置,一个或多个端点或者一个和/或一个或多个主机可以被分类到虚拟网络中。控制平面vm112a还可以按照路由将针对每个端点的虚拟到物理映射分布到所有其它端点。这些路由可以给出将虚拟ip映射到物理ip的下一跳以及所使用的封装技术(例如,ipinip、nvgre、vxlan等之一)。虚拟网络交换机174可以不知道所使用的实际隧道封装。例如通过使用地址解析协议(arp)、动态主机配置协议(dhcp)、域名服务(dns)等之一,虚拟网络交换机174还可以捕集有趣的层2(l2)分组、播送分组、和/或实现针对分组的代理。

在一些情况下,不同vnc节点102可以由不同供应商提供。然而,vnc节点102的对等配置可以使得能够使用由不同供应商提供的不同硬件和/或软件,以实现分布式vnc100的vnc节点102。不论物理网络拓扑结构、接入类型和/或位置,根据上面描述的技术进行操作的系统可以向终端主机提供网络拓扑结构的逻辑视图。分布式vnc100为网络运营商和/或应用提供编程方法以改变拓扑结构、影响分组转发和/或添加服务,以及例如防火墙的网络服务的水平扩展,而不改变网络的终端主机视图。

控制平面vm112可以请求服务器12返回通过虚拟网络的针对网络流的物理路径。在控制平面vm112接收到物理路径的同时,对应分析vm104可以将物理路径存储到对应分析数据库106。在一些实例中,任何vnc节点102可以使用本文中描述的如由服务器12执行的技术来确定通过虚拟网络的针对网络流的物理路径。

依照本公开的一些技术,分析vm104(其还可以在本文中被称为“分析引擎”)分析由网络160指示的物理网络的状态,网络160可以包括ip结构20(图1)。例如,网络160可以包括交换机(路由器)和连接器。例如,分析vm104包括分析数据库106以及可以经由形成网络160的相同虚拟网络线性扩展的存储器(未示出)。分析vm104经由连接器148a至148n连接到网络160。图5的系统包括各种服务器(包括服务器170),其可以是诸如在图2a和图2b中描述为服务器12之类的服务器。服务器170包括有时还称为虚拟网络路由器(vn路由器)的虚拟交换机174,其封装应用分组并且通过物理网络转发应用分组,并且服务器170包括虚拟网络代理、vn交换机代理172,其通过与虚拟网络控制器100交谈向虚拟交换机174提供智能化并且向分析vm104提供统计信息。虚拟交换机174隐藏来自如在网络160的ip结构中找到的物理交换机和路由器的物理网络。从而,可以显得例如服务器12a直接连接到服务器12n(图1)。服务器12还包括一系列客户虚拟机vm36(图2)。在一些示例中,分析vm104实际上是vm36的一些实例。

用于确定多路径路由环境中的延迟的一种方法是在每一个虚拟交换机174上收集统计信息,也就是说,每一个虚拟交换机174收集关于在服务器170之间哪些分组已经行进通过虚拟交换机174以及它们什么时候行进通过虚拟交换机174的数据。然后虚拟交换机174将该数据发送到分析vm104之一。分析vm104可以使用数据计算延迟。例如,管理员可以指定要捕获针对某一类流量的统计信息,并且还可以限制收集统计信息的时间段。为了捕获某一类流量,可以像匹配列表那样来使用分组,称为分组分类器。

例如,为了看看某些流是如何做的,示例分组分类器“pc”被定义为:

这将捕获在2012年12月5日上午8时开始的一分钟内的到负载平衡器的网络流量以及从负载平衡器发送到防火墙的流量。该分类器可以由网络控制台42(图2)设置为分析vm104,分析vm104将通知所有相关vn交换机代理172。

在一些示例中,分布式虚拟网络控制器100可以执行本文中描述的技术以动态地适配由虚拟网络元件执行的日志记录的范围。这些技术可以以分布式方式来执行,其中不同vnc节点102控制日志记录信息收集并且动态地修改由网络元件生成的针对vnc节点102控制的日志记录信息的范围,下面关于vnc102a描述所述技术。

分析vm104a在配置数据库110中被配置作为由至少部分由vnc102a控制的网络元件集生成的日志记录信息的收集器。分析vm104a接收来自网络元件的日志记录信息并且将日志记录信息存储到分析数据库106a以用于分析。存储到分析数据库106a的日志记录信息可以指示若干不同网络元件操作方面中的任何方面,从而包括资源利用、所执行的应用类型、分组发射/接收速率、性能等,该方面可以向分析vm104a和/或数据中心管理员指示需要修改一个或多个网络元件的配置、增加资源的数量、修改用于执行应用的软件等。在图示的示例中,服务器170可以将一个或多个日志消息发送到vnc102,控制平面vm112a接收一个或多个日志消息并且使用xmpp通过通信接口146a将一个或多个日志消息传达给分析vm104a。日志消息可以包括根据基线范围生成和发送的日志记录信息。

相应分析vm104a至104n的规则引擎200a至200n将一个或多个(即,一组)规则应用于由分析vm104a收集并且存储到分析db106a的日志记录信息。管理员可以使用ui134动态地配置由规则引擎200a应用的规则,以添加、修改或移除规则。例如,在分析vm104a将日志记录信息存储到分析db106a之前,规则引擎200a可以将规则或规则的精确子集应用于由输入的日志消息传输的日志记录信息。备选地或另外,规则引擎200a可以不断地将规则或规则的精确子集应用于存储到分析db106a的日志记录信息。

每个规则包括针对对应条件的动作,在由接收到的日志记录信息应用和匹配时,该对应条件使得规则引擎200a执行动作。动作可以包括指导网络元件通过例如执行响应于vnc节点102a指导的“按需”信息收集来修改其生成和发送日志记录信息的范围。例如,按需信息收集可以包括跟踪在网络元件上执行的应用的虚拟/物理存储器空间中的事件,以获得日志记录信息,并且还可以(或备选地)包括通过指导应用执行生成诊断日志记录信息的一个或多个诊断子例程而主动探测应用。

一般,事件跟踪可以包括记录特定存储器空间中的信息是否由应用在响应于从vnc102a(即,收集器)接收的指导的正常操作期间写到存储器空间。因此,一旦接收到错误或任何其它信息消息,技术可以允许附加信息的产生和日志记录。一般,应用探测可以涉及指导考虑中的应用运行集成诊断子例程,以收集分析vm104a或管理员在诊断错误中可能有用的附加信息。这样的子例程的示例包括用于建立/监控新计数器或事件、运行各种诊断、以及执行跟踪路由或用于确定通过数据中心的虚拟或物理网络路径的其它方法的子例程。

分析vm104a可以使用各种技术(包括调用由应用依照xmpp接口150a公开的api的方法)指导应用修改生成日志记录信息的范围。在图示的示例中,分析vm104使用xmpp通过通信接口146a经由控制平面vm112a与服务器170进行通信。调用所公开的api的方法可以表示图2a的日志记录修改消息43的示例实例。

服务器170将附加的跟踪信息和/或通过主动探测检索的信息发送到vnc102a以存储在分析数据库106a中,其中出于故障排除目的可以由管理员检索或者由分析vm104a分析这些信息。在这个示例中,服务器170可以依照xmpp接口150a发送日志记录信息。然而,可以使用用于在vnc102a和服务器170之间交换日志记录信息的其它通信接口,从而包括简单对象访问协议(soap)、公共对象代理请求架构(corba)、远程过程调用(rpc)等。

针对虚拟网络分组流的物理路径确定

图6是图示依照本公开中描述的技术的用于确定虚拟化网络域中的物理网络路径的网络元件操作的示例模式的流程图。这种操作模式是关于图2a和图2b的服务器12a的部件进行描述的,但是可以由诸如tor16或底架交换机18之类的数据中心10的其它网络元件执行。

首先,服务器12a的流跟踪模块(ftm)48接收确定或者“跟踪”由分组流的分组遍历的物理网络路径的请求(200)。请求可以包括例如符合分组流的完整ip分组、与分组流的分组的ip报头匹配的ip报头、或者针对这样的ip报头的一个或多个字段(例如源ip地址和目的地ip地址)。分组流可以表示遍历重叠/虚拟网络的分组流。在一些示例中,vn代理35a从vnc22接收请求,并且将请求发送到ftm48。ftm48可以使用针对分组流的目的地ip地址查询与分组流的虚拟网络对应的网络转发表32(诸如nft1),以获得针对分组流的分组的隧道报头以及在一些情况下诸如出站接口之类的其它隧道信息(202)。为了初始化流跟踪,ftm48将变量ttl_var设置为0(204)。

通过生成包括诸如跟踪分组标识符和序列号之类的跟踪分组信息的内部分组并且将获得的隧道报头附加到内部分组并且将流跟踪分组指示符添加到外部分组的字段,流跟踪模块48生成针对虚拟网络的外部、流跟踪分组(206)。针对随后生成的针对该请求的流跟踪分组,ftm48可以使序列号递增。流跟踪分组指示符关于图8至图9进一步详细描述。流跟踪分组的内部分组是流跟踪分组的数据净荷。

流跟踪模块48使ttl_var递增(208),并且将流跟踪分组的ttl字段设置为ttl_var(210)。针对初始流跟踪分组,这意指ttl字段具有为1的值。交换机30a通过出站接口根据与分组流的虚拟网络对应的网络转发表转发流跟踪分组模块(212)。

如果交换机30a没有接收到确认消息(214的否分支)并且代替地接收响应于针对请求的最新流跟踪分组的超时消息(例如,icmp超时消息)(216),ftm48将超时消息的源地址附加到物理网络元件网络地址的列表(218)。源地址是发送超时消息的物理网络元件的地址。然后,流跟踪模块48再次执行至少步骤106至112,以生成具有递增的ttl字段值的另一流跟踪分组并且转发该另一流跟踪分组。用这种方法,流跟踪模块48生成具有递增式增加的相应生存时间值的一个或多个流跟踪分组。

如果交换机30a接收到响应于流跟踪分组的诸如icmp回应答复之类的确认消息(214的是分支),这指示针对虚拟网络的隧道端点已经接收流跟踪分组并且物理网络路径已经被充分跟踪。因此,fpm模块48通过将物理网络元件网络地址的列表发送到请求设备来答复请求(220)。在一些示例中,vm代理35a将列表发送到vnc22。

图7是图示根据本公开的技术的网络元件操作的示例模式的流程图。这种操作模式是关于图2a和图2b的服务器12a的部件进行描述的,但是可以由诸如tor16或底架交换机18之类的数据中心10的其它网络元件执行。

服务器12a的交换机30a是针对诸如与网络转发表32nft1关联的虚拟网络之类的虚拟网络的隧道端点,并且通过虚拟网络的隧道接收分组(230)。该分组是包括隧道报头的外部分组,并且可以表示关于图8至图9描述的分组之一。如果隧道报头不包括流跟踪分组指示符(232的否分支),则交换机30a解封装隧道报头的内部分组,并且将内部分组转发到vm32中的具有其是内部分组的目的地网络地址的网络地址的一个vm(234)。然而,如果隧道包括流跟踪分组指示符(232的是分支),该分组是流跟踪分组,并且交换机30a将确认消息发送到服务器12中的具有其是隧道报头的源网络地址的网络地址的另一个服务器,以确认在服务器12a处的接收(236)。确认消息可以传输至少内部分组的一部分,从而在一些情况下包括内部分组的ip报头。例如,确认消息可以是icmp回应答复消息。因为由服务器12a接收的流跟踪分组不携带针对vm32中任何一个的应用数据,交换机30a抛弃流跟踪分组(238)。

图8是图示根据本文中描述的技术生成的示例流跟踪分组的字段的框图。mpls-in-gre分组250是根据mpls-in-gre封装技术实现的针对虚拟网络生成的流跟踪分组,其将多协议标记交换(mpls)分组封装在针对gre隧道的通用路由封装(gre)中。为了简化和易于说明,mpls-in-gre分组250不图示典型mpls-in-gre分组的每一个字段,而是被提供以突出本文中描述的技术。

mpls-in-gre隧道端点生成mpls-in-gre分组250以包括隧道报头266,隧道报头266包括:由源ip地址252(“srcip252”)、目的地ip地址254(“dstip254”)、具有根据上面关于例如图6描述的技术递增式设置的值的生存时间字段256、以及定义在ip数据报的数据部分中使用的协议(这里,gre)的ip协议字段258(“proto258”)组成的外部ip报头268;由标识在gre数据报的数据部分中使用的协议(这里,mpls)的gre协议字段260(“greproto260”)组成的gre隧道报头270;以及包括mpls标记262(“mpls262”)的mpls标记栈272。mpls标记262是用于指派通信vm位于的个体mpls-in-gre重叠网络的mpls标记值。mpls-in-gre分组250还包括内部分组264,内部分组264可以包括诸如标识符和/或序列号之类的关于mpls-in-gre分组250的流跟踪信息。

在一些情况下,隧道端点可以向多个等价多路径中的任何一个分配分组流以到达分组流目的地。隧道端点可以将散列函数应用于针对分组流的分组的一个或多个报头字段,并且散列函数的输出确定等价多路径中针对分组流选择的路径。在示例mpls-in-gre分组250中,隧道端点将散列函数应用于srcip252、dstip254、ip协议字段258和gre协议字段260。然而,隧道端点没有将散列函数应用于mpls标记262。结果,mpls-in-gre分组250可以被散列到等价多路径的路径,该路径是与针对其物理网络路径正在被跟踪的分组流选择的路径相同的路径。换言之,针对正在被跟踪的分组流,隧道端点生成mpls-in-gre分组250以包括与分组的分组完全相同的散列字段。其它字段可以变化。因为在针对例如icmp回应请求的ip协议字段258的其它实例中icmp被不同地标识,并且因为ip协议字段258是散列字段,icmp分组将必定被隧道端点不同地散列成该mpls-in-gre分组250,并且可以导致icmp回应请求在从隧道端点行进的等价多路径中的不同路径上被传输。

据此,为了将mpls-in-gre分组250标识为流跟踪分组,mpls-in-gre分组250包括以针对mpls标记262的流跟踪分组指示符值形式的流跟踪分组指示符。像mpls标记262那样的流跟踪分组指示符值可以是20比特的值,其是专门指派的值,用于将分组标识为流跟踪分组,而不是用于指派个体的基于mpls-in-gre的重叠网络。因为隧道端点没有将mpls标记262散列在散列函数中,mpls-in-gre分组250可以遵循与正在被跟踪的分组流的分组相同的物理网络路径。

图9是图示根据本文中描述的技术生成的示例流跟踪分组的字段的框图。虚拟可扩展局域网(vxlan)分组280是根据vxlan技术实现的针对虚拟网络生成的流跟踪分组。为了简化和易于说明,vxlan分组280不图示典型vxlan分组的每一个字段,而是被提供以突出本文中描述的技术。

vxlan隧道端点是生成vxlan分组280以包括隧道报头296的隧道端点,隧道报头296包括:由源ip地址282(“srcip282”)、目的地ip地址284(“dstip284”)、具有针对vxlan分组280的多个实例的根据上面关于例如图6描述的技术递增式增加的值的生存时间字段286、以及定义在ip数据报的数据部分中使用的协议(这里,udp)的ip协议字段287组成的外部ip报头;由源udp端口288(“srcport288”)和目的地udp端口290(“dstport290”)组成的外部udp报头;以及包括vxlan网络标识符(vni)292(“vni292”)(备选地被称为vxlan区段标识符)的vxlan报头。vni292是用于指派通信vm位于的个体vxlan重叠网络的24比特值。vxlan分组280还包括内部分组294,内部分组294可以包括诸如标识符和/或序列号之类的关于vxlan分组280的流跟踪信息。

在一些情况下,隧道端点可以向多个等价多路径中的任何一个分配分组流以到达分组流目的地。隧道端点可以将散列函数应用于针对分组流的分组的一个或多个报头字段,并且散列函数的输出确定等价多路径中针对分组流选择的路径。在示例vxlan分组280中,隧道端点将散列函数应用于srcip282、dstip284、ip协议字段287、srcport288和dstport290。然而,隧道端点没有将散列函数应用于vni292。结果,vxlan分组280可以被散列到等价多路径的路径,该路径是与针对其物理网络路径正在被跟踪的分组流选择的路径相同的路径。换言之,针对正在被跟踪的分组流,隧道端点生成vxlan分组280以包括与分组的分组完全相同的散列字段。其它字段可以变化。因为在针对例如icmp回应请求的ip协议字段287的其它实例中icmp被不同地标识,并且因为ip协议字段287是散列字段,icmp分组将必定被隧道端点不同地散列成该vxlan分组280,并且可以导致icmp回应请求在从隧道端点行进的等价多路径中的不同路径上被传输。

据此,为了将vxlan分组280标识为流跟踪分组,vxlan分组280包括以针对vni292的流跟踪分组指示符值形式的流跟踪分组指示符。像vni292那样的流跟踪分组指示符值可以是24比特的值,其是专门指派的值,用于将分组标识为流跟踪分组,而不是用于指派个体vxlan重叠网络。因为隧道端点没有将vni292散列在散列函数中,vxlan分组280可以遵循与正在被跟踪的分组流的分组相同的物理网络路径。尽管上面关于基于mpls-in-gre和vxlan的网络虚拟化进行描述,本公开的技术可以能够用于包括mpls-in-ip、使用通用路由封装(nvgre)的网络虚拟化等的其它网络虚拟化封装类型。

图10是图示用于实现本文中描述的各种技术中的任何技术的示例计算设备的框图。例如,计算设备300可以表示图1的服务器12、tor16或底架交换机18中的任何一种。图10仅图示计算设备300的一个特定示例,并且在其它实例中可以使用计算设备300的许多其它示例。例如,实现tor16和底架交换机18的计算设备可以包括高速分布式转发平面。

如图10的具体示例所示,计算设备300包括一个或多个处理器301、一个或多个通信单元302、一个或多个输入设备304、一个或多个输出设备306和一个或多个存储设备308。计算设备300进一步包括操作系统310、虚拟化模块312和一个或多个应用314a至314n(统称为“应用314”)。虚拟化模块312可以表示例如服务器12a的管理程序31,并且应用314可以表示不同vm36。部件301、302、304、306和308中的每个部件可以互连(物理上、通信上和/或操作上)以用于部件间通信。作为图10中的一个示例,部件301、302、304、306和308可以通过一个或多个通信信道316耦合。在一些示例中,通信信道316可以包括系统总线、网络连接、进程间通信数据结构或者用于传达数据的任何其它信道。虚拟化模块312和应用314,以及操作系统310也可以与彼此以及与计算设备300中的其它部件传达信息。虚拟化模块312包括软件交换机320以在一个或多个虚拟网络上交换分组。虚拟化模块312还包括流跟踪模块318,以通过生成流跟踪分组并且递增式设置相应ttl值以使得下游交换设备向计算设备返回超时消息,确定由计算设备300交换的网络流的物理网络路径。流跟踪模块318可以表示图1的ftm48的示例实例。

在一个示例中,处理器301被配置为实现用于在计算设备300内执行的功能和/或过程指令。例如,处理器301可以有能力处理存储在存储设备308中的指令。处理器301的示例可以包括微处理器、控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者等效分立或集成逻辑电路装置中的任何一个或多个。

一个或多个存储设备308可以被配置为存储在操作期间计算设备300内的信息。在一些示例中,存储设备308被描述为计算机可读存储介质。在一些示例中,存储设备308是暂时存储器,从而意指存储设备308的主要目的不是长期存储。在一些示例中,存储设备308被描述为易失存储器,从而意指存储设备308在计算机关闭时不保持存储的内容。易失存储器的示例包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)以及本领域已知的其它形式的易失存储器。在一些示例中,存储设备308用于存储程序指令以用于由处理器301执行。在一个示例中,存储设备308由运行在计算设备300上的软件或应用(例如,操作系统310、虚拟化模块312等)使用,以在程序执行期间暂时存储信息。

在一些示例中,存储设备308还包括一个或多个计算机可读存储介质。存储设备308可以被配置为存储比易失存储器更大量的信息。存储设备308可以进一步被配置用于信息的长期存储。在一些示例中,存储设备308包括非易失存储元件。这样的非易失存储元件的示例包括磁性硬盘、盒式磁带或磁带盒、光盘、软盘、闪速存储器、或者电可编程存储器(eprom)或电可擦除可编程存储器(eeprom)的形式。

在一些示例中,计算设备300还包括一个或多个通信单元302。在一个示例中,计算设备300利用通信单元302与外部设备进行通信。在一些示例中,通信单元302可以通过经由入站和出站链路在一个或多个网络(诸如一个或多个无线网络)上发送数据分组而进行通信。通信单元302可以包括诸如以太网卡之类的一个或多个网络接口卡(ifc)、光学收发器、射频收发器、或者可以发送和接收信息的任何其它类型的设备。这样的网络接口的其它示例可以包括蓝牙、3g和wi-fi无线电部件。在一些示例中,计算设备300利用通信单元302与数据中心的虚拟化网络域中的其它计算设备交换隧道分组。

在一个示例中,计算设备300还包括一个或多个输入设备304。在一些示例中,输入设备304被配置为通过触觉、音频或视频反馈接收来自用户的输入。输入设备304的示例包括存在敏感(presence-sensitive)显示器、鼠标、键盘、语音响应系统、摄像机、麦克风、或者用于检测来自用户的命令的任何其它类型的设备。在一些示例中,存在敏感显示器包括触摸屏。

一个或多个输出设备306也可以被包括在计算设备300中。在一些示例中,输出设备306被配置为使用触觉、音频或视频刺激向用户提供输出。在一个示例中,输出设备306包括存在敏感显示器、声卡、视频图形适配器卡、或者用于将信号转换成人或机器可理解的适当形式的任何其它类型的设备。输出设备306的另外示例包括扬声器、阴极射线管(crt)监控器、液晶显示器(lcd)、或者可以生成用户可理解输出的任何其它类型的设备。

计算设备300可以包括操作系统310。在一些示例中,操作系统310控制计算设备300的部件的操作。例如,在一个示例中,操作系统310便于应用314和虚拟化模块312与处理器301、通信单元302、输入设备304、输出设备306以及存储设备310的通信。应用314可以各自包括可由计算设备300执行的程序指令和/或数据。作为一个示例,应用314a可以包括使得计算设备300执行本公开中描述的一个或多个操作和动作的指令。

找到通过虚拟化网络中的物理网络的延迟

总体上,本公开的以下章节描述用于确定包括若干网络设备的分组通过其行进的物理网络中的延迟的技术。在虚拟网络架构中,关于任何特定流的延迟(即,分组经由交换机和连接器的特定路径从一个网络设备(例如服务器)行进到另一个网络设备所用的时间)的信息可能对于虚拟网络来说不易得到。

在匹配监控分组的定义集的分组在定义时间段期间行进通过网络设备(例如,交换机或路由器)时,网络设备可以复制分组而不影响分组的流动,并且将来自复制分组的信息连同时间戳和网络设备的身份一起发送回到逻辑集中虚拟网络控制器的分析引擎。换言之,分析引擎接收关于分组已经行进的时间和位置的信息。通过分析来自若干网络设备的这些信息,虚拟网络控制器的分析引擎可以确定指定分组遍历物理网络所用的时间,并且可以标识物理网络中减慢网络速度的网络设备和/或连接。另外,代替发送回监控分组的完整副本,网络设备可以取用唯一标识分组的复制分组的不变部分(例如,净荷)的散列(即,签名),并且将签名连同设备标识符和时间戳信息一起发送回到分析引擎。发送签名而非完整分组可以通过压缩网络中需要发送和存储的信息的量,提供更加可扩展的机制。

通过使用这些延迟信息的集合,虚拟网络控制器可以标识物理网络中慢的地方或者什么地方正在发生流量瓶颈。这样的瓶颈可以指示物理网络问题,诸如例如劣化的电缆。标识物理网络中的这些问题而不必运行对网络的每个部件的具体测试可以节省时间和金钱,并且可以帮助确保网络以最佳方式执行并且没有中断。

在一个实施例中,用于确定网络中的物理网络路径的延迟的方法包括由虚拟网络控制器接收来自网络中的多个网络设备的多个消息,其中每个消息包括:(1)包括唯一标识原始分组的原始分组的不变部分的散列的分组签名,(2)从其接收相应消息的多个网络设备之一的标识符,以及(3)指示原始分组被从其接收相应消息的网络设备处理的时间的时间戳。方法还包括:由虚拟网络控制器标识具有共同分组签名的多个消息中的两个或更多信息,以及由虚拟网络控制器基于分析具有共同分组签名的标识消息的内容,确定网络中的物理网络路径的延迟。

在另一实施例中,方法包括:由网络设备从虚拟网络控制器接收指定待分析分组的分组特性的信息,响应于确定分组匹配指定特性并且由在网络设备上执行的虚拟网络代理接收分组,确定唯一标识分组的分组的不变部分的散列以获得分组签名,以及向虚拟网络控制器转发消息,该消息指定:(1)分组签名,(2)网络设备的标识符,以及(3)指示分组被网络设备处理的时间的时间戳。

在另一实施例中,计算机可读存储介质包括用于使得可编程处理器如下的指令:接收来自网络中的多个网络设备的多个消息的,其中每个消息包括(1)包括唯一标识原始分组的原始分组的不变部分的散列的分组签名,(2)从其接收相应消息的多个网络设备之一的标识符,以及(3)指示原始分组被从其接收相应消息的网络设备处理的时间的时间戳;标识具有共同分组签名的多个消息中的两个或更多信息;以及基于分析具有共同分组签名的标识消息的内容,确定网络中的物理网络路径的延迟。

在又一实施例中,虚拟网络控制器包括一个或多个处理器,以及由处理器执行的多个虚拟机以接收来自网络中的多个网络设备的多个消息,其中每个消息包括:(1)包括唯一标识原始分组的原始分组的不变部分的散列的分组签名,(2)从其接收相应消息的多个网络设备之一的标识符,以及(3)指示原始分组被从其接收相应消息的网络设备处理的时间的时间戳。虚拟网络控制器还包括多个分析虚拟机,其中多个虚拟机标识具有共同分组签名的多个消息中的两个或更多信息,并且基于分析具有共同分组签名的标识消息的内容,确定网络中的物理网络路径的延迟。

在另一示例中,系统包括虚拟网络控制器以及多个网络设备,虚拟网络控制器包括一个或多个处理器、由处理器执行的多个虚拟机,多个网络设备包括一个或多个处理器,其中多个网络设备从虚拟网络控制器接收指定待分析分组的分组特性的信息、接收分组,其中多个虚拟机从多个网络设备接收多个消息,其中每个消息包括:(1)包括唯一标识原始分组的原始分组的不变部分的散列的分组签名,(2)从其接收相应消息的多个网络设备之一的标识符,以及(3)指示原始分组被从其接收相应消息的网络设备处理的时间的时间戳,其中虚拟网络控制器进一步包括多个分析虚拟机,多个分析虚拟机标识具有共同分组签名的多个消息中的两个或更多信息,并且基于分析具有共同分组签名的标识消息的内容,确定网络中的物理网络路径的延迟,以及其中多个网络设备包括在处理器上执行的虚拟网络代理,响应于确定分组匹配指定特性,虚拟网络代理确定唯一标识分组的分组的不变部分的散列以获得分组签名,并且向虚拟网络控制器转发消息,该消息指定:(1)分组签名,(2)网络设备的标识符,以及(3)指示分组被网络设备处理的时间的时间戳。

图11是图示依照本公开的技术的网络设备的示例操作的流程图。图11是关于图1至图3进行描述的。如图11所示,为了确定一类流量的延迟,由管理员诸如经由用于接入网络的设备(例如网络控制台42)发起请求。请求可以指定描述待分析分组的特性的分组分类器,并且还可以诸如通过设置开始时间和结束时间,定义应当应用分组分类器的时间段。网络控制台42将具有分组分类器信息的消息递送到分析vm104(500)。

分析vm104转而接收消息(502),并且通知和安全地将分组分类器和时间段递送到网络中的适当vn交换机代理172(504)。分析vm104可以基于分组分类器标识需要通知哪些vn交换机代理172,诸如基于分组分类器中涉及由vn交换机代理172所拥有的子网的ip地址的比较。每个被通知的vn交换机代理172可以在它们的相应虚拟交换机174上安装该分组分类器以捕获适当分组(例如,在它们的出接口处)。从而每个虚拟交换机174可以在指定开始时间启用接收的分组分类器。如果结束时间过去了,虚拟交换机174可以忽略该分组分类器。如果开始时间过去了,虚拟交换机174可以立即启用分组分类器。虚拟交换机174将在结束时间禁用分组分类器。

在网络中行进的分组匹配虚拟交换机174上的分组分类器时(509),虚拟交换机174将分组的副本发送到慢路径以用于在vn交换机代理172处进行处理(510),而不影响原始接收分组的递送。在交换机和路由器的联网数据路径中,在分组来到被转发时,可以存在两条路径,快路径和慢路径。快路径像高速缓冲存储器,并且在无延迟的情况下确定如何处理分组,诸如将它发送到哪里。如果信息不在手边,例如像高速缓存未命中,分组排队等候以用于进一步处理,其中一些其它程序查找数据库如何处理该分组,并且如果必要,更新快路径高速缓存。

通常网络设备通过高速缓存或以其它方式存储针对两个设备之间的给定通信会话的分组流的流状态,执行这种基于流的转发。一般地,在识别新流的第一分组的同时,网络设备初始化数据,以记录针对会话的状态数据。vn交换机代理172可以检查针对会话的分组流。在一些情况下,vn交换机代理172可以包括两条转发路径:用于处理新建立流的第一分组的第一路径以及用于检查和转发与已存在流关联的随后分组的第二路径。通过vn交换机代理172的第一路径可以被称为“第一路径”、“慢路径”或“会话管理路径”。此时,在处理新建立流的第一分组之后,vn交换机代理172可以更新流表以记录会话并且另外初始化会话数据。通过vn交换机代理172的第二路径可以被称为“快路径”,因为由于缺乏针对已建立流中的随后分组所需要的详细检查,第二路径正常不会占用如第一路径则长的时间以遍历。涉及具有快路径和慢路径的网络设备的进一步细节可以在2008年7月30日提交的、名称为“streamlinedpacketforwardingusingdynamicfiltersforroutingandsecurityinasharedforwardingplane”的美国专利no.8,339,959中找到,其整体内容通过引用方式并入于此。虚拟交换机174向慢路径发送诸如时间戳、入口端和出端口等之类的附加信息,连同分组的副本一起。

如下面关于图7将更详细描述的,vn交换机代理172计算分组签名并且将分组签名与统计信息一起发送到分析vm104(512),分析vm104通过输入的签名进行计算,并且可以跨虚拟网络控制器100中的其它分析vm104分布计算结果(514),并且分析vm104编译结果(516)并且可选地可以将编译结果发送到网络控制台42,以用于显示和/或进一步使用(518)。网络控制台可以显示结果(520)。

图12是图示依照本公开的技术的网络设备的示例操作的流程图。图12图示延迟可以由虚拟网络控制器如何计算的一个示例操作,但是本公开的技术不限于这个特定示例。如图12所示,在接收到一个这样的分组的同时,vn交换机代理172首先计算分组的一部分的散列(550)(诸如,md5、sha1等),散列是路径不变量并且唯一标识分组(诸如,例如ip净荷)。这种散列将被视为分组的密钥或签名。该密钥连同交换机标识符(其对于vn交换机代理172来说是唯一的,并且其定义分组通过哪个虚拟交换机174)、时间戳、入口端、出端口等一起作为数据将被发送回到分析vm104以用于进一步处理(555)。分析vm104还从其它服务器170的vn代理172接收这种数据(图5中未示出)(560)。

在结束时间到期的同时(加上一些抖动),分析vm104将通过散列密钥开始处理每个分组。这样的初始处理可以包括:按照密钥聚集数据,并且形成密钥的值的列表以及按照密钥(分组散列)将工作分派给跨虚拟网络控制器100的分析vm104之一(565)。也就是说,每个原始分组产生唯一的散列,散列可以用作密钥以标识每个分组及它们的信息。针对每个散列,分析vm104可以获得交换机id、时间戳、入口端和出端口等的列表。

针对每个散列,然后分析vm104将通过时间戳对关联列表进行排序(570),并且基于交换机id和时间戳的列表,构建分组已经遍历的拓扑结构映射(虚拟网络拓扑结构映射),并且使拓扑结构映射与网络的已知物理拓扑结构匹配(575)。虚拟网络拓扑结构映射包括基于虚拟交换机id的虚拟交换机的拓扑结构映射。由于分析vm104线性扩展,每个分析vm104得到工作的一部分以处理和确定结果。假定时间戳的近似一致性以允许时钟漂移。

接着,分析引擎320标识由散列表示的该分组的源和目的地,并且该散列可以被分解为n个相异的流(580)。然后,在每个流上,分析vm104生成路径列表(590),路径列表由{交换机-1,交换机-2…交换机-r}组成,它们是分组遍历的指定物理交换机。分析vm104在该交换机列表或路径映射上生成散列(595),该散列被用作密钥以用于随后的计算。针对每个路径映射散列,可以确定分组从其源到其目的地所用的近似一致的时间。还计算预期错误,这将用于计算每个路径的抖动或延迟。

利用路径映射散列,针对路径映射检测的所有流可以被组合(600),并且分析vm104可以从那里计算延迟的统计量度(605)。通过跨分组分类器组合,分析vm104可以通过估算该网络中每个路径的最小值、最大值、平均值和标准偏差,确定真实延迟。

通过使用这些延迟信息的集合,虚拟网络控制器100可以标识物理网络中慢的地方或者什么地方正在发生流量瓶颈。这样的瓶颈可以指示物理网络问题,诸如例如劣化的电缆。标识物理网络中的这些问题而不必运行对网络的每个部件的具体测试节省了时间和金钱,并且可以帮助确保网络以最佳方式执行并且没有中断。

另外,该方法可以通过物理交换机的任何集来使用,假如针对集中的每个物理交换机,存在有能力接收pc、标识(和散列)标识的分组、并且将标识的分组转发到分析引擎以用于如上所述的进一步处理的关联vn代理。

技术被描述用于确定包括若干网络设备的分组通过其行进的物理网络中的延迟。虚拟网络控制器接收来自网络中的多个网络设备的多个消息,每个消息包括:包括唯一标识原始分组的原始分组的不变部分的散列的分组签名,从其接收相应消息的多个网络设备之一的标识符,以及指示原始分组被从其接收相应消息的网络设备处理的时间的时间戳。虚拟网络控制器基于分析具有共同分组签名的标识消息的内容,确定网络中的物理网络路径的延迟。

在以下条款(clause)中描述了各种示例。依照本文中描述的技术,在以下条款中的任一条款中阐述的示例可以被并入,并且可以与贯穿本公开描述的任何其它示例组合实现。

条款1.一种用于确定网络中的物理网络路径的延迟的方法,方法包括:由虚拟网络控制器接收来自网络中的多个网络设备的多个消息,其中每个消息包括(1)包括唯一标识原始分组的原始分组的不变部分的散列的分组签名,(2)从其接收相应消息的多个网络设备之一的标识符,以及(3)指示原始分组被从其接收相应消息的网络设备处理的时间的时间戳;由虚拟网络控制器标识具有共同分组签名的多个消息中的两个或更多信息;由虚拟网络控制器基于分析具有共同分组签名的标识消息的内容,确定网络中的物理网络路径的延迟。

条款2.条款1的方法,其中多个网络设备包括在网络中的多个服务器设备上执行的多个虚拟网络代理,其中网络设备的标识符包括与虚拟网络代理关联的虚拟交换机的标识符。

条款3.条款2的方法,其中多个服务器设备中的不同服务器设备在不同时间接收相同的原始分组。

条款4.条款1至3中的任一条款的方法,其中标识包括由在虚拟网络控制器上执行的多个分布式分析虚拟机标识具有共同分组签名的多个消息中的两个或更多信息,并且其中确定包括至少部分通过多个分布式分析虚拟机分析多个消息的内容以确定延迟来确定。

条款5.条款1至4中的任一条款的方法,进一步包括在接收多个消息之前,由虚拟网络控制器向多个网络设备发送指示待分析分组的特性和收集匹配特性的分组的时间范围的一个或多个命令,其中接收多个消息包括响应于发送一个或多个命令而接收多个消息。

条款6.条款1至5中的任一条款的方法,进一步包括:由虚拟网络控制器:通过签名对多个消息的内容进行排序;针对每个签名,获得网络设备标识符和时间戳的列表;以及通过时间戳对针对每个签名的列表进行排序。

条款7.条款6的方法,进一步包括:由虚拟网络控制器:针对给定签名,基于与该签名关联的虚拟网络设备标识符和时间戳的列表的列表,构建原始分组遍历的虚拟网络拓扑结构映射;以及使虚拟网络拓扑结构映射与网络的已知物理拓扑结构匹配。

条款8.条款7的方法,进一步包括:标识与签名之一关联的相异流;基于网络的已知物理拓扑结构,生成针对标识流之一的、包括流中分组遍历的物理网络设备的列表的路径映射;在路径映射上生成散列;以及针对每个路径映射散列,确定分组遍历从源到目的地的物理网络路径所用的时间。

条款9.条款8的方法,进一步包括:计算物理网络路径的延迟的统计量度。

条款10.一种方法包括:由网络设备从虚拟网络控制器接收指定待分析分组的分组特性的信息;接收分组;响应于确定分组匹配指定特性,并且由在网络设备上执行的虚拟网络代理,确定唯一标识分组的分组的不变部分的散列以获得分组签名;以及向虚拟网络控制器转发消息,该消息指定:(1)分组签名,(2)网络设备的标识符,和(3)指示分组被网络设备处理的时间的时间戳。

条款11.条款10的方法,其中网络设备的标识符包括与虚拟网络代理关联的虚拟交换机的标识符。

条款12.条款10至11中的任一条款的方法,其中分组的不变部分包括分组的净荷。

条款13.条款1至12中的任一条款的方法,其中接收的信息指定应用分组特性的时间段。

条款14.条款1至13中的任一条款的方法,其中分组特性包括待监控的分组的源地址和目的地地址。

条款15.一种包括指令的计算机可读存储介质,指令用于使得可编程处理器:

从网络中的多个网络设备接收多个消息,其中每个消息包括(1)包括唯一标识原始分组的原始分组的不变部分的散列的分组签名,(2)从其接收相应消息的多个网络设备之一的标识符,以及(3)指示原始分组被从其接收相应消息的网络设备处理的时间的时间戳;标识具有共同分组签名的多个消息中的两个或更多信息;以及基于分析具有共同分组签名的标识消息的内容,确定网络中的物理网络路径的延迟。

条款16.一种虚拟网络控制器包括:一个或多个处理器;由处理器执行的多个虚拟机,以从网络中的多个网络设备接收多个消息,其中每个消息包括(1)包括唯一标识原始分组的原始分组的不变部分的散列的分组签名,(2)从其接收相应消息的多个网络设备之一的标识符,以及(3)指示原始分组被从其接收相应消息的网络设备处理的时间的时间戳;以及多个分析虚拟机,其中多个虚拟机标识具有共同分组签名的多个消息中的两个或更多信息,并且基于分析具有共同分组签名的标识消息的内容,确定网络中的物理网络路径的延迟。

条款17.条款16的虚拟网络控制器,其中多个分析虚拟机通过签名对多个消息的内容进行排序,针对每个签名获得网络设备标识符和时间戳的列表,以及通过时间戳对针对每个签名的列表进行排序。

条款18.条款17的虚拟网络控制器,其中针对给定签名,多个分析虚拟机基于与该签名关联的虚拟网络设备标识符和时间戳的列表的列表,构建原始分组遍历的虚拟网络拓扑结构映射,并且使虚拟网络拓扑结构映射与网络的已知物理拓扑结构匹配。

条款19.条款18的虚拟网络控制器,其中多个分析虚拟机标识与签名之一关联的相异流,基于网络的已知物理拓扑结构生成针对标识流之一的、包括流中分组遍历的物理网络设备的列表的路径映射,在路径映射上生成散列,以及针对每个路径映射散列,确定分组遍历从源到目的地的物理网络路径所用的时间。

条款20.条款1至19中的任一条款的虚拟网络控制器,其中多个分析虚拟机计算物理网络路径的延迟的统计量度。

条款21.一种系统包括:虚拟网络控制器,虚拟网络控制器包括:

一个或多个处理器;由处理器执行的多个虚拟机;以及包括一个或多个处理器的多个网络设备,其中多个网络设备从虚拟网络控制器接收指定待分析分组的分组特性的信息,接收分组,其中多个虚拟机从多个网络设备接收多个消息,其中每个消息包括(1)包括唯一标识原始分组的原始分组的不变部分的散列的分组签名,(2)从其接收相应消息的多个网络设备之一的标识符,以及(3)指示原始分组被从其接收相应消息的网络设备处理的时间的时间戳;其中虚拟网络控制器进一步包括多个分析虚拟机,多个分析虚拟机标识具有共同分组签名的多个消息中的两个或更多信息,并且基于分析具有共同分组签名的标识消息的内容,确定网络中的物理网络路径的延迟;其中多个网络设备包括在处理器上执行的虚拟网络代理,响应于确定分组匹配指定特性,虚拟网络代理确定唯一标识分组的分组的不变部分的散列以获得分组签名,并且向虚拟网络控制器转发消息,该消息指定:(1)分组签名,(2)网络设备的标识符,和(3)指示分组被网络设备处理的时间的时间戳。

条款22.条款21的系统,其中多个网络设备包括多个服务器设备,多个服务器设备各自包括相应虚拟交换机和相应虚拟网络代理,并且其中由消息指定的标识符包括与虚拟网络代理关联的虚拟交换机的标识符。

动态日志记录

总体上,本公开的技术被描述用于动态地修改由日志记录信息生成器响应于在由收集器接收的日志记录信息中检测的事件而执行的日志记录的范围。例如,生成器设备可以将信息记入日志到符合日志记录基线的范围,并且利用基线日志记录信息定期更新收集器。通过分析基线日志记录信息,收集器可以确定指示需要更大日志记录范围的事件已经在生成器上出现或者已经由生成器检测。换言之,收集器可以确定由于例如错误事件,生成器要将比由日志记录基线规定的信息更多的信息记入日志。因此,收集器可以指导生成器增加其日志记录范围以将附加信息记入日志。在一些实例中,这种指导可以包括请求生成器答复附加的状态信息。在一些实例中,这种指导可以包括请求生成器通过例如触发生成除基线规定的信息外的附加日志记录信息的诊断子例程,主动探测应用。因此,技术可以使得收集器能够动态地适配由日志记录信息生成器执行的日志记录的范围,以在需要时扩大收集的日志记录信息的量。在其中大量设备可以生成日志记录信息的数据中心环境中,技术可以导致日志记录信息的更易管理的收集。

图13是详细图示根据本文中描述的技术用于动态地修改由数据中心元件生成的日志记录信息的虚拟网络控制器的示例部件的框图。vnc节点102a可以表示图5的vnc节点102a的示例实例。分析vm104a的收集器1204a与数据中心元件进行通信,以接收日志消息中的日志记录信息。在图示的示例中,收集器1204a从在服务器170的虚拟机1174上执行的应用1212接收日志消息1208。其可以表示图5的规则引擎200a的示例实例的规则引擎1200a将一个或多个规则1206a(其各自定义条件和一个或多个动作集)的集应用于接收到的日志消息,并且收集器1204a将日志消息(或者至少在其中传输的日志记录信息)的表示存储到分析数据库106a的日志数据库1202a。规则1206a是可编程的,这是因为管理员24可以与ui134交互,以使用规则修改消息1154添加、修改或删除规则1206a中的规则。因此,在现场或后开发中可以扩展规则1206a,并且因为在客户站点处的系统/解决方案测试或故障排除期间定义新规则。收集器1204a可以在硬件、软件、固件或其任何组合中实现。

尽管被描述为数据库,日志数据库1202a可以使用各种数据结构中的一个或多个数据结构来实现,各种数据结构包括各种类型的数据库、日志文件(即,具有一系列日志记录的平面文件)、表、链表、映射等。日志数据库1202a中的日志记录信息可以由分布式散列表的条目引用,例如,这允许多个vnc节点102标识特定服务器的位置并且获得针对特定服务器的日志记录信息。

通过日志消息传输的日志记录信息(包括日志消息1208)可以具有结构化格式(具有已知字段值),以使得能够将规则1206a应用于结构化数据。例如,日志消息可以使用xml编码,并且可以符合xmpp。

例如,消息可以包括以下一般格式的信息:

<msg-id,串1,字段1,串2,字段2,...>

消息标识符“msg-id”是唯一消息标识符,其允许用户标识并且选择日志数据库1202a中的消息。串字段“串1”、“串2”等可以是任何字符串或比特串,其中特定串可以标识特定对象、错误、异常等。字段“字段1”、“字段2”等可以包含涉及紧接在前的串的性质的信息。据此,规则1206a的规则:

如果(串=_____,字段1=_____)则(动作)

在上文中,动作的示例可以定义将由规则引擎1204a(或者vnc节点102a的其它部件)执行的一个或多个动作。例如,如果特定错误发生(如由串和字段1值指示的)并且产生在特定位置中的结果,规则引擎1200a可以执行动作,以通过指导应用1212生成关于错误的附加日志记录信息,确定关于错误的更多信息。串和字段值可以以任何方式用于指示任何形式的错误,并且动作可以是可以由计算机进行的任何动作。从规则引擎1200a对应用1212的指导可以是跟踪由应用使用(即将内容存储在分析数据库中)的特定缓冲器的内容、检索表或其它信息、建立主动探测等。

规则的进一步示例包括诸如以下的规则:

1.如果(方法_1消息类型是x),则(使用来自方法_1消息的参数得到方法_2消息)

2.如果(方法_1消息类型是y),则(使用来自方法_1消息的参数得到方法_2消息)

3.如果(方法_2消息类型是z),则(设置方法_3触发)

在紧接在前示例中,“方法1”指的是基线日志记录,“方法2”指的是应用跟踪,并且“方法3”指的是主动探测(例如,触发应用中的诊断子例程)。换言之,如果出现两个不同消息类型(例如,“x”和“y”,它们可以由特定串/字段组合指示)中的任一者,则示例规则1和示例规则2触发应用跟踪,并且如果出现另一消息类型(“z”),则规则3触发特定探测。在图示的示例中,规则1206a之一匹配在日志消息1208中接收的日志记录信息,并且规则引擎1200a执行针对规则的对应动作,以将日志记录修改消息1210发送到应用1212,以修改所生成的日志记录信息的范围。在一些实例中,规则可以使得在“方法_2”消息中接收的日志记录信息触发“方法_3”动作,并且反之亦然。如上所述,技术可以包括指导以其它方式生成日志记录信息的其它类型的规则的其它类型的“方法”。

可以由规则1206a定义的其它类型的动作是包含特定信息的次级表的实施方式和总数。例如,在由规则引擎1200a应用时,规则1206a可以指导应用生成由某些故障排除应用所要求的指定附加信息,并且将指定附加信息存储到次级表,次级表可以存储任何格式的信息。

图14是图示根据本文中描述的技术用于动态地修改由数据中心元件或其它生成器生成的日志记录信息的虚拟网络控制器的操作的示例模式的流程图。出于说明性目的关于图4的vnc节点102a的部件描述示例。首先,收集器1204a从应用1212接收依照针对应用1212的基线范围的日志消息1208中的基线日志记录信息(1300)。规则引擎1200a将规则1206a或其精确子集应用于基线日志记录信息,以尝试匹配相应规则条件与基线日志记录信息的性质(1302)。如果由规则引擎1200a应用的规则1206a之一匹配并且指定应用跟踪动作(1304的是分支),规则引擎1200a发送日志记录修改消息1210,以包括对应用1212执行应用跟踪的指导(1306)。随后,收集器1204a接收响应日志消息,响应日志消息包括应用跟踪结果以用于由例如分析vm104a进行分析(1308)。收集器1204a将日志记录信息存储到日志数据库1202a。

如果由规则引擎1200a应用的规则1206a之一匹配并且指定主动探测动作(1310的是分支),规则引擎1200a发送日志记录修改消息1210,以包括对应用1212执行主动探测的指导(1312)。随后,收集器1204a接收响应日志消息,响应日志消息包括主动探测结果,以用于由例如分析vm104a进行分析(1314)。收集器1204a将日志记录信息存储到日志数据库1202a。如果没有由规则引擎1200a应用于日志消息1208的规则1206a匹配(1310的否分支),则收集器1204a仅将日志记录信息存储到日志数据库1202a。在一些情况下,日志记录信息可以匹配多个规则1206a,并且使得规则引擎1200a执行不同类型的动作的多个对应集(例如,应用跟踪和主动探测两者)。

图15是图示根据本公开中描述的技术的被配置为响应于来自收集器的指导而动态地修改日志记录范围的示例计算设备的框图。例如,计算设备1400可以表示图1的服务器12、tor16或底架交换机18中的任何一种。图15仅图示计算设备1400的一个特定示例,并且在其它实例中可以使用计算设备1400的许多其它示例。例如,实现tor16和底架交换机18的计算设备可以包括高速分布式转发平面。

如在图15的具体示例中示出的,计算设备1400包括一个或多个处理器1401、一个或多个通信单元1402、一个或多个输入设备1404、一个或多个输出设备1406以及一个或多个存储设备1408。计算设备1400进一步包括操作系统1410、虚拟化模块1412以及一个或多个应用1414a至1414n(统称为“应用1414”)。例如,虚拟化模块1412可以表示服务器12a的管理程序31,并且应用1414可以表示不同vm36。部件1401、部件1402、部件1404、部件1406和部件1408中的每个部件可以互连(物理上、通信上和/或操作上)以用于部件间通信。作为图15中的一个示例,部件1401、部件1402、部件1404、部件1406和部件1408可以通过一个或多个通信信道1416耦合。在一些示例中,通信信道1416可以包括系统总线、网络连接、进程间通信数据结构或者用于传达数据的任何其它信道。虚拟化模块1412和应用1414,以及操作系统1410也可以与彼此以及与计算设备1400中的其它部件传达信息。虚拟化模块1412包括软件交换机1420以在一个或多个虚拟网络上交换分组。虚拟化模块1412还包括流跟踪模块1418,以通过生成流跟踪分组并且递增式设置相应ttl值以使得下游交换设备向计算设备返回超时消息,确定由计算设备1400交换的网络流的物理网络路径。流跟踪模块1418可以表示图1的ftm48的示例实例。

在一个示例中,处理器1401被配置为实现用于在计算设备1400内执行的功能和/或过程指令。例如,处理器1401可以有能力处理存储在存储设备1408中的指令。处理器1401的示例可以包括微处理器、控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者等效分立或集成逻辑电路装置中的任何一个或多个。

一个或多个存储设备1408可以被配置为存储在操作期间计算设备1400内的信息。在一些示例中,存储设备1408被描述为计算机可读存储介质。在一些示例中,存储设备1408是暂时存储器,从而意指存储设备1408的主要目的不是长期存储。在一些示例中,存储设备1408被描述为易失存储器,从而意指存储设备1408在计算机关闭时不保持存储的内容。易失存储器的示例包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)以及本领域已知的其它形式的易失存储器。在一些示例中,存储设备1408用于存储程序指令以用于由处理器1401执行。在一个示例中,存储设备1408由运行在计算设备1400上的软件或应用(例如,操作系统1410、虚拟化模块1412等)使用,以在程序执行期间暂时存储信息。

在一些示例中,存储设备1408还包括一个或多个计算机可读存储介质。存储设备1408可以被配置为存储比易失存储器更大量的信息。存储设备1408可以进一步被配置用于信息的长期存储。在一些示例中,存储设备1408包括非易失存储元件。这样的非易失存储元件的示例包括磁性硬盘、盒式磁带或磁带盒、光盘、软盘、闪速存储器、或者电可编程存储器(eprom)或电可擦除可编程存储器(eeprom)的形式。

在一些示例中,计算设备1400还包括一个或多个通信单元1402。在一个示例中,计算设备1400利用通信单元1402与外部设备进行通信。在一些示例中,通信单元1402可以通过经由入站和出站链路在一个或多个网络(诸如一个或多个无线网络)上发送数据分组而进行通信。通信单元1402可以包括诸如以太网卡之类的一个或多个网络接口卡(ifc)、光学收发器、射频收发器、或者可以发送和接收信息的任何其它类型的设备。这样的网络接口的其它示例可以包括蓝牙、3g和wi-fi无线电部件。在一些示例中,计算设备1400利用通信单元1402与数据中心的虚拟化网络域中的其它计算设备交换隧道分组。

在一个示例中,计算设备1400还包括一个或多个输入设备14014。在一些示例中,输入设备1404被配置为通过触觉、音频或视频反馈接收来自用户的输入。输入设备1404的示例包括存在敏感显示器、鼠标、键盘、语音响应系统、摄像机、麦克风、或者用于检测来自用户的命令的任何其它类型的设备。在一些示例中,存在敏感显示器包括触摸屏。

一个或多个输出设备1406也可以被包括在计算设备1400中。在一些示例中,输出设备1406被配置为使用触觉、音频或视频刺激向用户提供输出。在一个示例中,输出设备1406包括存在敏感显示器、声卡、视频图形适配器卡、或者用于将信号转换成人或机器可理解的适当形式的任何其它类型的设备。输出设备1406的另外示例包括扬声器、阴极射线管(crt)监控器、液晶显示器(lcd)、或者可以生成用户可理解输出的任何其它类型的设备。

计算设备1400可以包括操作系统1412。在一些示例中,操作系统1412控制计算设备1400的部件的操作。例如,在一个示例中,操作系统1412便于模块应用1414与处理器1401、通信单元1402、输入设备1404、输出设备1406以及存储设备1410的通信。应用1414可以各自包括可由计算设备1400执行的程序指令和/或数据。

作为一个示例,应用1414a可以包括使得计算设备1400执行本公开中描述的一个或多个操作和动作的指令。应用1414a包括探测例程1418和跟踪例程1420。响应于来自收集器的指导,探测例程1418增加应用1414a生成日志记录信息的范围。响应于来自收集器的指导,跟踪例程1420从存储器读取应用跟踪信息以生成附加日志记录信息。应用1414a将生成的日志记录信息发送到收集器。

图16是图示根据本公开中描述的技术的由应用响应于来自收集器的指导而动态地修改日志记录范围的操作的示例模式的流程图。出于说明性目的关于图15的计算设备1400描述操作的示例模式。

首先,计算设备1400的应用1414a被配置为将基线日志记录信息以日志消息发送到诸如图1的vnc22之类的收集器(1530)。应用1414a从收集器接收日志记录修改消息,日志记录修改消息指导应用1414a修改日志记录信息生成的范围(1532)。如果日志记录修改消息包括执行应用跟踪的指导(1534的是分支),跟踪例程1420执行,以依照日志记录修改消息中指定的零个或多个参数执行应用跟踪并且生成新的日志记录信息(1536)。例如,日志记录修改消息可以指定执行关于由应用1414a存储的特定数据结构的应用跟踪。

如果日志记录修改消息包括执行主动探测的指导(1538的是分支),探测例程1418执行,以执行探测以生成新的日志记录信息(1540)。执行探测可以包括设置标志或修改变量,以增加应用1414a生成日志记录信息的范围。应用1414a将新生成的日志记录信息以新日志消息发送到收集器以用于分析(1542)。

在以下条款中描述了各种示例。依照本文中描述的技术,在以下条款中的任一条款中阐述的示例可以被并入,并且可以与贯穿本公开描述的任何其它示例组合实现。

条款1.一种方法包括:由收集器从生成器接收包括日志记录信息的日志消息;由收集器将各自指定条件和对应动作的一个或多个规则应用于日志记录信息,以标识匹配规则;以及在标识匹配规则的同时,执行匹配规则的动作以生成和发送日志记录修改消息,以增加生成器生成日志记录信息的范围。

条款2.条款1的方法,进一步包括由收集器接收包括由生成器依照增加的范围生成的附加日志记录信息的附加日志消息。

条款3.条款1至2中的任一条款的方法,其中匹配规则的动作指定主动探测,并且日志记录修改消息包括指导生成器执行应用的主动探测。

条款4.条款1至3中的任一条款的方法,其中匹配规则的动作指定应用跟踪,并且日志记录修改消息包括指导生成器执行应用的应用跟踪。

条款5.条款1至4中的任一条款的方法,进一步包括:由收集器接收包括新规则的规则修改消息;将新规则添加到一个或多个规则;以及将新规则应用于日志记录信息。

条款6.一种网络设备包括:一个或多个处理器;收集器,被配置用于由处理器执行,以从生成器接收包括日志记录信息的日志消息;以及规则引擎,用于将各自指定条件和对应动作的一个或多个规则应用于日志记录信息,以标识匹配规则,其中在标识匹配规则的同时,规则引擎执行匹配规则的动作以生成和发送日志记录修改消息,以增加生成器生成日志记录信息的范围。

条款7.条款6的网络设备,其中收集器接收包括由生成器依照增加的范围生成的附加日志记录信息的附加日志消息。

条款8.条款6至7中的任一条款的网络设备,其中匹配规则的动作指定主动探测,并且日志记录修改消息包括指导生成器执行应用的主动探测。

条款9.条款6至8中的任一条款的网络设备,其中匹配规则的动作指定应用跟踪,并且日志记录修改消息包括指导生成器执行应用的应用跟踪。

条款10.条款6至9中的任一条款的网络设备,进一步包括控制平面过程,用于接收包括新规则的规则修改消息并且将新规则添加到一个或多个规则,其中规则引擎将新规则应用于日志记录信息。

条款11.条款6至10中的任一条款的网络设备,其中收集器包括控制一个或多个虚拟网络的操作的虚拟网络控制器。

条款12.条款11的网络设备,进一步包括其包括日志数据库的分布式分析数据库,其中收集器将日志记录信息存储到日志数据库。

条款13.条款12的网络设备,进一步包括分析虚拟机,用于分析分布式分析数据库,以诊断一个虚拟网络的条件。

条款14.一种方法包括:由计算设备并且向收集器以日志消息发送针对应用的基线日志记录信息;由计算设备并且从收集器接收日志记录修改消息;响应于日志记录修改消息,增加应用生成日志记录信息的范围;以及由计算设备并且向收集器发送包括由应用依照增加的范围生成的附加日志记录信息的附加日志消息。

条款15.条款14的方法,其中日志记录修改消息包括执行应用的主动探测的指导,方法进一步包括由应用执行主动探测。

条款16.条款14至15中的任一条款的方法,其中日志记录修改消息包括执行应用的应用跟踪的指导,方法进一步包括由应用执行应用跟踪。

条款17.一种网络设备包括:一个或多个处理器;被配置用于由处理器执行的应用;输出设备,用于向收集器以日志消息发送针对应用的基线日志记录信息;输入设备,用于从收集器接收日志记录修改消息,其中响应于日志记录修改消息,应用增加应用生成日志记录信息的范围,并且其中输出设备向收集器发送包括由应用依照增加的范围生成的附加日志记录信息的附加日志消息。

条款18.条款17的网络设备,其中日志记录修改消息包括执行应用的主动探测的指导,网络设备进一步包括应用执行主动探测的主动探测模块。

条款19.条款17至18中的任一条款的网络设备,其中日志记录修改消息包括执行应用的应用跟踪的指导,网络设备进一步包括应用跟踪模块以执行应用跟踪。

在链路故障之后重新路由网络流量

总体上,本公开的这部分描述用于网络设备之间通信的技术。例如,依照本公开的技术,即使在底层物理网络中通信时,服务器可以被配置为使用虚拟网络重叠。服务器可以被配置具有表示物理网络的预留虚拟网络。在一个示例中,虚拟网络被称为虚拟网络0或vn0。vn0可以是配置在服务器上的多个虚拟网络之一。然而,相比于针对其服务器根据重叠网络规则封装分组并且转发封装分组的其它虚拟网络,在将分组转发到vn0虚拟网络时,基于由针对vn0的网络转发表指定的转发信息,服务器根据物理网络的规则不封装分组并且转发它们。

在服务器的虚拟网络代理和虚拟网络控制器之间的通信会话被建立之前或者在建立通信会话期间,在服务器的虚拟网络代理和虚拟网络控制器之间的初始通信通过由vn0指定的默认路由发生。一旦在服务器的虚拟网络代理和虚拟网络控制器之间建立通信会话,虚拟网络控制器向服务器的虚拟网络代理发送命令,以安装针对vn0的路由表(转发表)中的指定路由,其中安装的指定路由将使用重叠网络和封装。

以这种方式,在重叠网络的发现和初始化期间,以及在其中故障链路、节点或其它网络中断已经暂时停止了经由重叠网络的通信的条件期间,虚拟网络控制器和服务器可以使用虚拟子网vn0依照默认网络转发表nft0进行通信。依照本公开的技术,在检测到链路故障时,故障链路本地的虚拟网络代理可以改变网络分组的封装,以使重叠网络内的流量改向,并且虚拟网络代理通知虚拟网络控制器路由改变。转而,虚拟网络控制器更新其路由信息,可以发出消息到其它服务器的其它虚拟网络代理,以更新由虚拟网络代理存储在网络转发表内的本地路由信息。

在一个示例中,方法包括在虚拟网络控制器和在服务器设备上执行的虚拟网络代理之间建立通信会话之前,由服务器设备使用针对物理网络的默认路由向虚拟网络控制器发送网络分组,以及在虚拟网络控制器设备和虚拟网络代理之间建立通信会话之后,从虚拟网络控制器接收命令以在服务器设备处安装新路由,其中新路由指定封装网络分组所使用的封装信息,以用于通过重叠网络将网络分组发送到虚拟网络控制器。方法还包括,响应于检测到物理网络中的故障链路,在重叠网络中的备选路由上将分组发送到虚拟网络控制器。

在一个示例中,网络设备包括虚拟网络代理以及网络接口,网络接口用于在虚拟网络控制器和虚拟网络代理之间建立通信会话之前,将网络分组使用针对物理网络的默认路由发送到虚拟网络控制器,其中,在虚拟网络控制器设备和虚拟网络代理之间建立通信会话之后,虚拟网络代理从虚拟网络控制器接收命令以在网络设备处安装新路由,其中新路由指定封装网络分组所使用的封装信息,以用于通过重叠网络将网络分组发送到虚拟网络控制器,以及其中,响应于检测到物理网络中的故障链路,虚拟网络代理在重叠网络中的备选路由上将分组发送到虚拟网络控制器。

在另一示例中,计算机可读存储介质包括指令,指令使得可编程处理器:在虚拟网络控制器和服务器设备上执行的虚拟网络代理之间建立通信会话之前,由服务器设备将网络分组使用针对物理网络的默认路由发送到虚拟网络控制器,在虚拟网络控制器设备和虚拟网络代理之间建立通信会话之后,从虚拟网络控制器接收命令以在服务器设备处安装新路由,其中新路由指定封装网络分组所使用的封装信息,以用于通过重叠网络将网络分组发送到虚拟网络控制器,以及响应于检测到物理网络中的故障链路,在重叠网络中的备选路由上将分组发送到虚拟网络控制器。

在又一示例中,系统包括虚拟网络控制器和服务器网络设备,服务器网络设备包括虚拟网络代理和网络接口,网络接口用于在虚拟网络控制器和虚拟网络代理之间建立通信会话之前,将网络分组使用针对物理网络的默认路由发送到虚拟网络控制器。在虚拟网络控制器设备和虚拟网络代理之间建立通信会话之后,虚拟网络代理从虚拟网络控制器接收命令以在网络设备处安装新路由,其中新路由指定封装网络分组所使用的封装信息,以用于通过重叠网络将网络分组发送到虚拟网络控制器。响应于检测到物理网络中的故障链路,虚拟网络代理在重叠网络中的备选路由上将分组发送到虚拟网络控制器。虚拟网络控制器包括一个或多个处理器以及由处理器执行的多个虚拟机,其中多个虚拟机从包括服务器网络设备的多个网络设备接收多个消息,其中多个消息中的每个消息指定相应默认路由。

图17a是图示包括依照本公开的技术进行操作的网络设备的系统2250的框图。图17a包括表示物理服务器到ip结构2260的连接的链路。服务器2252a至2252b(“服务器2252”)可以类似于图1至图2的服务器12、图3的服务器50以及图5的服务器170中的任何服务器。在图17a的描绘中,每个服务器2252经由第一链路a和第二链路b连接到ip结构2260。服务器2252a具有第一链路a和第二链路b,第一链路a具有ip地址ip1a并且第二链路b具有ip地址ip1b。服务器2252b具有被分派ip地址ip2a的第一链路a和被分派ip地址ip2b的第二链路b。服务器2252a的vm2254a至2254b(“vm2254”)生成拥有源ip地址为ipv1的分组,并且服务器2252b生成拥有源ip地址为ipv2的分组。

在一个示例中,例如在虚拟网络域内由虚拟机36执行的应用实例生成或消耗的层三(l3)ip分组或层二(l2)以太网分组的网络分组可以被封装在由物理网络传输的另一分组(例如,另一ip或以太网分组)中。在虚拟网络中传输的分组本文中可以被称为“内部分组”,而物理网络分组本文中可以被称为“外部分组”。虚拟网络分组在物理网络分组内的封装和/或解封装可以在虚拟交换机内执行,例如在运行在每个服务器2252上的管理程序或主机操作系统内执行。在诸如服务器2252之类的第一和第二网络设备之间的ecmp路径可以被虚拟网络看作一个物理连接,因为它们的分组(内部分组)通过外部ip封装来封装。

图17b是图示依照一个示例实施例的示例隧道封装的框图。例如,图17b图示隧道封装以给具有源ip地址ip1a和目的地ip地址ip2a的数据分组指向。如上面提到的,隧道封装用于在虚拟网络中重新路由分组。在封装期间,分组2262(示出为具有ipv1的源地址和ipv2的目的地地址)利用外部包封2264进行封装,其指示分组2262应当被路由到的地址。在该特定示例中,分组2262从具有ip地址ip1a的服务器2252a的接口在链路a上、通过ip结构2260、并且然后在链路a上被路由到服务器2252b到目的地ip地址ip2a。

图17c是图示在没有链路故障时指向默认虚拟子网vn0的分组的框图。在没有链路故障时,虚拟交换机30a封装分组2266,使得封装包封2268上的地址匹配分组2266的原始旨在地址,因为不需要调整。这样的结果是与图17b的示例相同。

图17d是图示依照一个示例实施例的示例隧道封装的框图。例如,图17d图示其中发送服务器2252a的管理程序31已经在到目的地的路径上检测到故障链路的示例情况。例如,在ip结构2260和服务器2252b之间的链路可能已经故障,并且将故障通知服务器2252a的管理程序。在网络中发生故障链路时,将故障通知管理程序31,并且更新其转发信息,以指示使用具有备选目的地地址的包封2272封装分组2270。在该特定示例中,因为ip结构2260和服务器2252b之间的链路故障,在故障之前将从源地址ip1a被路由到目的地地址ip2a的分组2270现在将从源地址ip1a被路由到目的地地址ip2b。

图17e是图示依照一个示例实施例的示例非封装分组2274的框图。图17e图示其中nft32指示交换机应当把数据分组路由到默认路由(其将分组带到tor交换机16a)的示例情况。在使用默认路由时,不使用重叠网络,并且虚拟交换机30a在不封装的情况下将分组转发到tor交换机16a。

图18a至图18b是图示依照一个示例实施例的示例网络转发表的框图。网络转发表2280是l3路由表,并且可以对应于虚拟交换机30a的nft32之一(图1)(诸如与vn0关联的nft32)。在图18a的示例中,在与虚拟交换机30a关联的vn代理35a已经建立与虚拟网络控制器22的通信会话之前的时间,描绘示例网络转发表2280。在图18a的示例中,nft2280包括用于在物理网络上将分组转发到虚拟网络控制器的默认路由。nft2280包括指示封装地址的路由条目,该封装地址包括分派到物理网络中的物理网络设备的实际网络地址。

在图18b的示例中,在vn代理35a已经建立与虚拟网络控制器22的通信会话并且已经接收重叠路由2296(其已经被安装在网络转发表2280中)之后的时间,描绘网络转发表2280。

网络转发表2280的每个路由条目指向相应下一跳。下一跳指定关于如何转发分组以及分组是否被封装在外部ip分组中(或其它封装)的信息。为(例如,ip结构14的)物理网络预留特殊的虚拟网络vn0。网络转发表2280中的默认路由2282指向下一跳2284,下一跳2284指示在不封装的情况下将分组转发到物理网络,如按照物理网络的路由规则。一旦与虚拟网络控制器22的连接建立,虚拟网络控制器22开始将新的指定路由放在该路由表中,其使用封装重叠技术。封装工作在网络层,并且不破坏任何l4连接,这对于应用来说是透明的。这保持ip结构简单并且有成本效益。例如,虚拟网络控制器22添加指定重叠路由并且指向封装动作2298的条目2296。在一些示例中,虚拟网络控制器22的控制平面vm使用诸如通过网络2260进行操作的xmpp之类的通信协议(诸如上面关于图5描述的)与虚拟网络交换机(例如,图示的由服务器2252执行的vm交换机2254)进行通信。

服务器设备可以保持多个路由表或nft,诸如一个路由表针对由服务器支持的每个子网。例如,除nft2280之外,服务器还可以包括除针对vn0的默认表外的第二l3路由表,即与针对其虚拟网络中的网络部件的网络地址不同于物理网络中的网络设备的网络地址的虚拟网络关联的表。

响应于在虚拟网络控制器设备和虚拟网络代理之间建立通信会话之前检测到物理网络中的故障链路,虚拟交换机在物理网络中的备选路由上将分组发送到虚拟网络控制器,并且响应于在虚拟网络控制器设备和虚拟网络代理之间建立通信会话之后检测到物理网络中的故障链路,虚拟交换机在重叠网络中的备选路由上将分组发送到虚拟网络控制器。

图19是描绘依照本公开的技术的启动过程的流程图。如参照图18a至图18b描述的,网络转发表2280包括默认路由2282,如果采用默认路由2282,其在不封装的情况下将分组发送到子网vn0。在vn代理已经建立与虚拟网络控制器的通信会话之前,与vn代理关联的虚拟交换机使用默认路由2282,以通过物理网络转发分组(2320)。也就是说,当与虚拟网络控制器22的初始接触尚未建立时,虚拟交换机30a将非封装的接收分组指向子网vn0。例如,在不封装的情况下,分组经由tor交换机16a被发送到虚拟网络控制器22。子网vn0不使用重叠网络,并且vn代理35a通过物理网络将消息发送到虚拟网络控制器22(2322),以触发虚拟网络控制器22利用指定路由更新网络转发表2280。一旦已经建立与虚拟网络控制器22的初始接触(诸如使用xmpp),虚拟网络控制器22可以将重叠路由发送到vn代理35a,以安装在具有下一跳的网络转发表2280中,以使用重叠网络规则封装分组并且将封装分组指向旨在目的地。vn代理35a从虚拟网络控制器22接收具有重叠路由的消息(2324),并且将重叠路由安装到网络转发表2280处的数据平面(2326)。

图20是描绘依照本公开的技术的网络设备的示例操作的流程图。将为了关于图2a的示例的目的描述图20。在接收到分组的同时(2352),例如基于在分组的报头中指定的目的地地址,服务器12a确定包含正确目的地的虚拟子网(2354)。然后,管理程序31(例如,管理程序31的虚拟交换机30a)使用诸如最长前缀匹配(lpm)算法之类的任何技术在nft0中查找路由(2356)。如果虚拟交换机30a确定路由不存在(2358的否分支),分组被丢弃,并且重新开始下一个分组的处理(2360)。另一方面,如果虚拟交换机30a确定在nft0中存在路由(2358的是分支),则虚拟交换机30a确定针对来自nft0的路由的下一跳(2362)。如果下一跳说要封装分组(2364的是分支),则包封信息如图17b所示被添加,并且虚拟交换机30a将分组发送到目的地地址。如果虚拟交换机30a确定下一跳没有规定封装(2364的否分支),则虚拟交换机30a在不封装的情况下发送分组,如图17e中的。

图21是图示依照本公开的一个或多个方面的示例设备2190的框图。图19仅图示计算设备2190的一个特定示例,并且在其它实例中可以使用计算设备2190的许多其它示例。例如,计算设备2190可以表示例如图1至图2的服务器12、tor交换机16、底架交换机18、虚拟网络控制器22、网络控制台42或ifmap服务器26中的任何一种。

如在图19的具体示例中示出的,计算设备2190包括一个或多个处理器2200、一个或多个通信单元2202、一个或多个输入设备2204、一个或多个输出设备2206以及一个或多个存储设备2208。在图19的具体示例中,计算设备2190进一步包括操作系统2210、虚拟化模块2212以及一个或多个应用2214a至2214n(统称为“应用2214”)。部件2200、部件2202、部件2204、部件2206和部件2208中的每个部件可以互连(物理上、通信上和/或操作上)以用于部件间通信。作为图19中的一个示例,部件2200、部件2202、部件2204、部件2206和部件2208可以通过一个或多个通信信道2216耦合。在一些示例中,通信信道2216可以包括系统总线、网络连接、进程间通信数据结构或者用于传达数据的任何其它信道。虚拟化模块2212和应用2214,以及操作系统2210也可以与彼此以及与计算设备2190中的其它部件传达信息。虚拟化可以允许这些部件的功能分布在多个机器或多个虚拟机之上,而管理程序给出单个部件的外观。

在一个示例中,处理器2200被配置为实现用于在计算设备2190内执行的功能和/或过程指令。例如,处理器2200可以有能力处理存储在存储设备2208中的指令。处理器2200的示例可以包括微处理器、控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者等效分立或集成逻辑电路装置中的任何一个或多个。

一个或多个存储设备2208可以被配置为存储在操作期间计算设备2190内的信息。在一些示例中,存储设备2208被描述为计算机可读存储介质。在一些示例中,存储设备2208是暂时存储器,从而意指存储设备2208的主要目的不是长期存储。在一些示例中,存储设备2208被描述为易失存储器,从而意指存储设备2208在计算机关闭时不保持存储的内容。易失存储器的示例包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)以及本领域已知的其它形式的易失存储器。在一些示例中,存储设备2208用于存储程序指令以用于由处理器2200执行。在一个示例中,存储设备2208由运行在计算设备2190上的软件或应用(例如,操作系统2210、虚拟化模块2212等)使用,以在程序执行期间暂时存储信息。

在一些示例中,存储设备2208还包括一个或多个计算机可读存储介质。存储设备2208可以被配置为存储比易失存储器更大量的信息。存储设备2208可以进一步被配置用于信息的长期存储。在一些示例中,存储设备2208包括非易失存储元件。这样的非易失存储元件的示例包括磁性硬盘、盒式磁带或磁带盒、光盘、软盘、闪速存储器、或者电可编程存储器(eprom)或电可擦除可编程存储器(eeprom)的形式。

在一些示例中,计算设备2190还包括一个或多个通信单元2202。在一个示例中,计算设备2190利用通信单元2202与外部设备进行通信。在一些示例中,通信单元2202可以通过经由入站和出站链路在一个或多个网络(诸如一个或多个无线网络)上发送数据分组而进行通信。通信单元2202可以包括诸如以太网卡之类的一个或多个网络接口卡(ifc)、光学收发器、射频收发器、或者可以发送和接收信息的任何其它类型的设备。这样的网络接口的其它示例可以包括蓝牙、3g和wi-fi无线电部件。在一些示例中,计算设备2190利用通信单元2202与其它网络设备进行通信,诸如用于如本文中描述的发送或接收消息。

在一个示例中,计算设备2190还包括一个或多个输入设备2204。在一些示例中,输入设备2204被配置为通过触觉、音频或视频反馈接收来自用户的输入。输入设备2204的示例包括存在敏感显示器、鼠标、键盘、语音响应系统、摄像机、麦克风、或者用于检测来自用户的命令的任何其它类型的设备。在一些示例中,存在敏感显示器包括触摸屏。

一个或多个输出设备2206也可以被包括在计算设备2190中。在一些示例中,输出设备2206被配置为使用触觉、音频或视频刺激向用户提供输出。在一个示例中,输出设备2206包括存在敏感显示器、声卡、视频图形适配器卡、或者用于将信号转换成人或机器可理解的适当形式的任何其它类型的设备。输出设备2206的另外示例包括扬声器、阴极射线管(crt)监控器、液晶显示器(lcd)、或者可以生成用户可理解输出的任何其它类型的设备。

计算设备2190可以包括操作系统2212。在一些示例中,操作系统2212控制计算设备2190的部件的操作。例如,在一个示例中,操作系统2212便于模块应用2214与处理器2200、通信单元2202、输入设备2204、输出设备2206以及存储设备2210的通信。应用2214可以各自包括可由计算设备2190执行的程序指令和/或数据。作为一个示例,应用2214a可以包括使得计算设备2190执行本公开中描述的一个或多个操作和动作的指令。

依照本公开的技术,计算设备2190可以依照图19至图20中描述的示例过程进行操作。

在以下条款中描述了各种示例。依照本文中描述的技术,在以下条款中的任一条款中阐述的示例可以被并入,并且可以与贯穿本公开描述的任何其它示例组合实现。

条款1.一种方法包括:在虚拟网络控制器和服务器设备上执行的虚拟网络代理之间建立通信会话之前,由服务器设备使用针对物理网络的默认路由将网络分组发送到虚拟网络控制器;在虚拟网络控制器设备和虚拟网络代理之间建立通信会话之后,从虚拟网络控制器接收命令以在服务器设备处安装新路由,其中新路由指定封装网络分组所使用的封装信息,以用于通过重叠网络将网络分组发送到虚拟网络控制器;以及响应于检测到物理网络中的故障链路,在重叠网络中的备选路由上将分组发送到虚拟网络控制器。

条款2.条款1的方法,进一步包括:由服务器设备,保持具有默认路由的层三(l3)路由表,以用于在物理网络上将分组转发到虚拟网络控制器。

条款3.条款2的方法,其中l3路由表包括指示封装地址的路由条目,该封装地址包括分派到物理网络中的物理网络设备的实际网络地址。

条款4.条款1至3中的任一条款的方法,进一步包括:由服务器设备,保持第二l3路由表,其中第二l3路由表与针对其虚拟网络中的网络部件的网络地址不同于物理网络中的网络设备的网络地址的虚拟网络关联。

条款5.条款1至4中的任一条款的方法,进一步包括:响应于接收到来自虚拟网络控制器的命令,将新路由安装到l3路由表;并且至少基于新路由,使用重叠网络将网络分组作为封装网络分组发送到虚拟网络控制器。

条款6.条款1至5中的任一条款的方法,其中默认路由被表示为分派给物理网络设备的因特网协议(ip)地址。

条款7.条款1至6中的任一条款的方法,其中虚拟网络控制器设备和虚拟网络代理是软件定义网络(sdn)的一部分。

条款8.条款1至7中的任一条款的方法,其中在备选路由上发送分组包括:响应于在虚拟网络控制器设备和虚拟网络代理之间建立通信会话之前检测到物理网络中的故障链路,在物理网络中的备选路由上将分组发送到虚拟网络控制器;并且响应于在虚拟网络控制器设备和虚拟网络代理之间建立通信会话之后检测到物理网络中的故障链路,在重叠网络中的备选路由上将分组发送到虚拟网络控制器。

条款9.一种包括指令的计算机可读存储介质,指令用于使得可编程处理器:在虚拟网络控制器和服务器设备上执行的虚拟网络代理之间建立通信会话之前,由服务器设备使用针对物理网络的默认路由将网络分组发送到虚拟网络控制器;在虚拟网络控制器设备和虚拟网络代理之间建立通信会话之后,从虚拟网络控制器接收命令以在服务器设备处安装新路由,其中新路由指定封装网络分组所使用的封装信息,以用于通过重叠网络将网络分组发送到虚拟网络控制器;以及响应于检测到物理网络中的故障链路,在重叠网络中的备选路由上将分组发送到虚拟网络控制器。

条款10.一种网络设备包括:虚拟网络代理;以及网络接口,用于在虚拟网络控制器和虚拟网络代理之间建立通信会话之前,将网络分组使用针对物理网络的默认路由发送到虚拟网络控制器,其中,在虚拟网络控制器设备和虚拟网络代理之间建立通信会话之后,虚拟网络代理从虚拟网络控制器接收命令以在网络设备处安装新路由,其中新路由指定封装网络分组所使用的封装信息,以用于通过重叠网络将网络分组发送到虚拟网络控制器,以及其中,响应于检测到物理网络中的故障链路,虚拟网络代理在重叠网络中的备选路由上将分组发送到虚拟网络控制器。

条款11.条款10的网络设备,进一步包括:具有默认路由的层三(l3)路由表,以用于在物理网络上将分组转发到虚拟网络控制器设备。

条款12.条款10或11中的任一条款的网络设备,其中响应于接收到来自虚拟网络控制器设备的命令,虚拟网络代理将新路由安装到l3路由表,并且基于新路由,使用重叠网络将网络分组作为封装网络分组发送到虚拟网络控制器。

条款13.条款10至12中的任一条款的网络设备,其中默认路由被表示为分派给物理网络设备的因特网协议(ip)地址。

条款14.条款10至13中的任一条款的网络设备,其中虚拟网络控制器设备和虚拟网络代理是软件定义网络(sdn)的一部分。

条款15.一种系统包括:虚拟网络控制器;以及服务器网络设备,包括:虚拟网络代理;以及网络接口,用于在虚拟网络控制器和虚拟网络代理之间建立通信会话之前,将网络分组使用针对物理网络的默认路由发送到虚拟网络控制器,其中,在虚拟网络控制器设备和虚拟网络代理之间建立通信会话之后,虚拟网络代理从虚拟网络控制器接收命令以在网络设备处安装新路由,其中新路由指定封装网络分组所使用的封装信息,以用于通过重叠网络将网络分组发送到虚拟网络控制器,以及其中,响应于检测到物理网络中的故障链路,虚拟网络代理在重叠网络中的备选路由上将分组发送到虚拟网络控制器,其中虚拟网络控制器包括:一个或多个处理器;由处理器执行的多个虚拟机,其中多个虚拟机从包括服务器网络设备的多个网络设备接收多个消息,其中多个消息中的每个消息指定相应默认路由。

虚拟网络中的多播服务

在典型的云数据中心环境中,存在大集合的互连服务器,服务器提供计算和/或存储容量以运行各种应用。例如,数据中心可以包括托管用于订户(即,数据中心的客户)的应用和服务的设施。例如,数据中心可以托管所有的基础结构设备,诸如联网和存储系统、冗余电源和环境控制。在典型的数据中心中,存储系统和应用服务器的集群经由由一个或多个层级的物理网络交换机和路由器提供的高速交换机结构(例如,clos网络)互连。更复杂的数据中心通过位于各种物理托管设施中的订户支持设备提供遍布世界的基础结构。

一般,多播服务涉及在单个发射中将数据从源设备(例如服务器)通过网络基本上同时地递送到订户(例如,数据中心的客户或者数据中心内的服务器)的群组。作为示例,在两个或更多订户有兴趣接收相同的多播数据时,每个订户可以请求加入与多播数据关联的多播群组。来自源的多播数据按需由网络内的物理网络交换机和路由器复制,以便到达多播群组的订户。用于复制和转发针对多播群组的多播数据的网络交换机和路由器可以创建通过网络的多播分布树,以用于多播数据的递送。

在其中大量服务器通过交换机结构互连的情况下,每对服务器可以具有大量的在它们之间的等价路径。在这种情景中,物理服务器之间的层二(l2)连接可能变得难管理,并且物理服务器可能仅使用层三(l3)连接与彼此连接。经由交换机结构连接的物理服务器可以使用单播服务进行通信,但是由于网络中的大量冗余路径,物理服务器之间的多播服务可能更难以管理。在一些情况下,虚拟重叠网络可以使用例如ip-in-ip、nvgre或vxlan的隧道封装协议建立在交换机结构的顶部上,以仿真服务器上执行的虚拟交换机之间的l2网络。然而,为了虚拟重叠网络仿真l2多播服务,底层交换机结构也必须支持多播服务。

总体上,技术被描述为提供虚拟网络内的多播服务,而不要求底层网络中的多播支持。更具体地,技术使用逻辑集中虚拟网络控制器和端点复制使得能够在交换机结构的虚拟重叠网络中支持l2多播服务。虚拟网络控制器被配置为创建针对虚拟网络中的多播群组的端点设备(例如,服务器)的多播树。然后,虚拟网络控制器将多播树传达给多播群组的一个或多个端点设备,以指示端点设备根据多播树复制多播分组并且将多播分组转发到其它。端点设备。多播树可以是单向多播树或双向多播树。

根据技术,多播树在虚拟网络控制器的集中位置处被计算,而不是由服务多播群组的网络交换机和路由器以分布式方式被计算。另外,多播分组的复制和转发由执行在虚拟网络中的端点设备上的虚拟交换机执行。在底层网络内不执行复制。用这种方法,在不要求底层网络中的多播支持的情况下,技术使得虚拟网络内的多播服务能够进行。另外,集中虚拟网络控制器可以创建多播树以最小化复制限制,使得若干虚拟网络的端点可以复制和转发少数的多播分组,而不是源端点必须承担复制分组并且将分组转发到属于多播群组的所有端点的负载。进一步地,虚拟网络控制器可以配置针对多播群组的多播树中的每个链路方向的唯一虚拟网络隧道封装,以便高效地使用网络中的带宽。

在一个示例中,方法包括:利用虚拟网络的虚拟网络控制器创建针对虚拟网络中的多播群组的端点设备的多播树;将多播树存储在虚拟网络控制器内的存储器中;以及利用虚拟网络控制器将多播树传达给多播群组的一个或多个端点设备,以便指示在端点设备上执行的虚拟交换机根据多播树复制和转发多播分组。

在另一示例中,方法包括:利用虚拟网络中的多播群组的端点设备接收针对多播群组的多播分组,以根据针对多播群组的多播树在虚拟网络上转发,多播树由虚拟网络的虚拟网络控制器创建;利用在端点设备上执行的虚拟交换机根据多播树复制针对多播群组的多播分组;以及利用在端点设备上执行的虚拟交换机根据多播树将复制的多播分组使用隧道封装转发到多播群组的一个或多个其它端点设备。

在又一示例中,虚拟网络的虚拟网络控制器包括存储器和一个或多个处理器,一个或多个处理器被配置为创建针对虚拟网络中的多播群组的端点设备的多播树、将多播树存储在虚拟网络控制器的存储器中、并且将多播树传达给多播群组的一个或多个端点设备,以便指示在端点设备上执行的虚拟交换机根据多播树复制和转发多播分组。

在另外的示例中,虚拟网络中的端点设备包括:一个或多个处理器,被配置为接收针对端点设备所属多播群组的多播分组,以根据针对多播群组的多播树在虚拟网络上转发,其中多播树由虚拟网络的虚拟网络控制器创建;以及在处理器上执行的虚拟交换机,被配置为根据多播树复制针对多播群组的多播分组,并且根据多播树将复制的多播分组使用隧道封装转发到多播群组的一个或多个其它端点设备。

在另一示例中,虚拟网络的系统,系统包括:虚拟网络控制器,被配置为创建针对虚拟网络中的多播群组的端点设备的多播树、将多播树存储在虚拟网络控制器内的存储器中、并且将多播树传达给多播群组的一个或多个端点设备;以及多播群组的端点设备之一,被配置为接收将在虚拟网络上被转发的针对多播群组的多播分组,并且执行虚拟交换机,以根据多播树复制针对多播群组的多播分组、并且根据多播树将复制的多播分组使用隧道封装转发到多播群组的一个或多个其它端点设备。

在又一示例中,计算机可读存储介质包括指令,指令在被执行时使得一个或多个处理器:利用虚拟网络的虚拟网络控制器创建针对虚拟网络中的多播群组的端点设备的多播树,将多播树存储在虚拟网络控制器内的存储器中,以及利用虚拟网络控制器将多播树传达给多播群组的一个或多个端点设备,以便指示在端点设备上执行的虚拟交换机根据多播树复制和转发多播分组。

在另一示例中,计算机可读存储介质包括指令,指令在被执行时使得一个或多个处理器:利用虚拟网络中的多播群组的端点设备接收针对多播群组的多播分组,以根据针对多播群组的多播树在虚拟网络上转发,多播树由虚拟网络的虚拟网络控制器创建;利用在端点设备上执行的虚拟交换机根据多播树复制针对多播群组的多播分组;以及利用在端点设备上执行的虚拟交换机根据多播树将复制的多播分组使用隧道封装转发到多播群组的一个或多个其它端点设备。

图22a图示可以由虚拟网络控制器(例如,来自图2a和图2b的虚拟网络控制器22)创建的不平衡多播树。虚拟网络控制器22可以创建图示的多播树,以便最小化针对每个服务器的复制限制。针对给定多播树的复制限制(n)可以基于多播群组中的设备总数(m)来选择,使得2≤n≤(m-1)。在一些情况下,可以选择针对多播树的复制限制(n)使得2≤n<<m。又在其它情况下,针对多播树的复制限制(n)可被确定为满足[logn(m)]=d,其中d等于树的深度,并且[x]意指等于不大于x的最大整数的地板函数(floorfunction)。复制限制指定多播树中的每个服务器必须复制的多播分组副本的最大数量。树深度指定多播树的拓扑结构中的服务器的阶段或级别的数量。

在一些情况下,虚拟网络控制器22可以创建多播树以平衡复制限制(n)和树深度(d)。最小化针对多播树中的所有服务器的复制限制避免了具有过度水平的树拓扑结构,在过度水平的树拓扑结构中,树中的一个或两个服务器承担复制分组并且将分组转发到大多数服务器的负载。复制限制可以与树深度进行平衡,以避免具有过度竖直的树拓扑结构,在过度竖直的树拓扑结构中,每个服务器仅复制多播分组的几个(例如,一个)副本以用于进一步发射。用这种方法,可以保存计算资源和网络资源,并且计算负载可以跨多播群组的所有服务器分布。

在图22a所示的示例中,多播树的多播群组中的服务器数量等于10(m=10),并且多播树具有两个服务器阶段或级别(d=2)。因此,基于等于3的复制限制(n=3),这满足2≤n≤9、2≤n<<10、和[logn(10)]=2,虚拟网络控制器22可以创建图22a所示的多播树。如图22a所示,假定根服务器s10是源服务器,s103190复制三个分组副本,并且将副本发射到s83188、s23182和s33183。然后,s83188复制三个分组副本,并且将副本发射到s13181、s73187和s93189。s23182复制两个分组副本,并且将副本发射到s43184和s53185。s33183仅复制一个分组副本,并且将副本发射到s63186。如可以看到的,尽管多播树中的每个服务器在3的复制限制内,但是复制负载不均匀分布,其中s103190和s83188各自生成3个副本(n=3),s23182生成2个副本(2<n),并且s33183生成1个副本(1<n)。

在节点的总数量不是(n(d+1)-1)/(n-1)时,则一些倒数第二个叶节点可以不具有n个叶。图6a中图示的多播树就是这样,其中节点的总数量不等于13,所以不是所有的s83188、s23182和s33183都可以具有3个叶节点。在这样的情况下,虚拟网络控制器22可以生成平衡多播树,如图22b所示,使得每个倒数第二个叶节点将具有彼此相差+/-(n/2)的叶节点数量。

图22b图示可以由虚拟网络控制器22创建的平衡多播树。如图22b所示,再次假定根服务器s10是源服务器,s103190复制三个分组副本,并且将副本发射到s83188、s23182和s33183。然后,s83188复制两个分组副本,并且将副本发射到s13181和s73187。s23182复制两个分组副本,并且将副本发射到s43184和s53185。s33183也复制两个分组副本,并且将副本发射到s63186和s93189。如可以看到的,多播树中的每个服务器在3的复制限制内,并且复制负载均匀分布,其中s10190生成3个副本(n=3)并且s83188、s23182和s33183各自生成2个副本(2<n)。

图23a至图23c是图示由虚拟网络控制器创建的针对多播群组中的所有服务器的多播树的示例的概念图,其中任何服务器操作作为树的源节点。在图示的示例中,多播树包括与图22b所示多播树相同的十个服务器和相同的平衡拓扑结构。依照本公开的技术,多播树被创建在有能力仿真l2多播的虚拟重叠网络中。因此,多播树可以是双向多播树,其中任何服务器可以操作作为针对多播群组的多播分组的源服务器。在任何中间服务器接收来自树中另一服务器的分组时,中间服务器执行复制并且在多播树的每个链路上发射分组副本,除了在其上接收分组的链路。

图23a图示其中服务器s23182操作作为源服务器的双向多播树。如图23a所示,s23182复制三个分组副本,并且将副本发射到s43184、s53185和s103190(即,根服务器)。然后,s103190复制两个分组副本,并且将副本发射到s83188和s33183。s103190不在其接收来自s23182的分组的链路上发送分组副本。然后,s83188复制两个分组副本,并且将副本发射到s13181和s73187,但是s83188不在其接收来自s103190的分组的链路上发送分组副本。s33183也复制两个分组副本,并且将副本发射到s63186和s93189,但是不在其接收来自s103190的分组的链路上发送分组副本。

图23b图示其中服务器s43184操作作为源服务器的双向多播树。如图23b所示,s43184复制一个分组副本,并且将副本发射到s23182。然后,s23182复制两个分组副本,并且将副本发射到s53185和s103190(即,根服务器)。s23182不在其接收来自s43184的分组的链路上发送分组副本。然后,s103190复制两个分组副本,并且将副本发射到s83188和s33183。s103190不在其接收来自s23182的分组的链路上发送分组副本。然后,s83188复制两个分组副本,并且将副本发射到s13181和s73187,但是s83188不在其接收来自s103190的分组的链路上发送分组副本。s33183也复制两个分组副本,并且将副本发射到s63186和s93189,但是不在其接收来自s103190的分组的链路上发送分组副本。

图23c图示其中服务器s103190(即,根服务器)操作作为源服务器的多播树。在这个示例中,图示的多播树可以是单向多播树或双向多播树。如图23c所示,s103190复制三个分组副本,并且将副本发射到s83188、s23182和s33183。然后,s83188复制两个分组副本,并且将副本发射到s13181和s73187,但是s83188不在其接收来自s103190的分组的链路上发送分组副本。s23182复制两个分组副本,并且将副本发射到s43184和s53185,s23182不在其接收来自s103190的分组的链路上发送分组副本。s33183也复制两个分组副本,并且将副本发射到s63186和s93189,但是不在其接收来自s103190的分组的链路上发送分组副本。

图24是图示由虚拟网络控制器创建的针对具有最小化复制限制的多播群组中的所有服务器的示例多播树的概念图。在图示的示例中,多播树包括在不同拓扑结构中的与图22a至图22b和图23a至图23c所示的多播树相同的十个服务器。多播树按阶段或级别布置服务器,使得一个或多个服务器生成多播分组副本以发射到中间服务器,中间服务器转而可以复制另外的多播分组副本以发射到多播群组中的其它服务器。

图24中图示的多播树可以由虚拟网络控制器(例如,来自图2a和图2b的虚拟网络控制器22)创建。虚拟网络控制器22可以创建图示的多播树,以便进一步最小化针对每个服务器的复制限制。在图22a至图22b和图23a至图23c中的示例多播树中,基于多播树的多播群组中的服务器数量等于10(m=10)并且多播树具有两个服务器阶段或级别(d=2),复制限制(n)被设置为等于3。在图24中图示的示例多播树中,多播树的多播群组中的服务器数量再次等于10(m=10),只是树的拓扑结构已经改变为包括三个服务器阶段或级别(d=3)。因此,基于等于2(n=2)的复制限制,这满足2≤n≤9、2≤n<<10和[logn(10)]=3,虚拟网络控制器22可以创建图24所示的多播树。

如图24所示,假定根服务器s103190是源服务器,s103190复制两个分组副本,并且将副本发射到s83188和s23182。然后,s83188复制两个分组副本,并且将副本发射到s13181和s73187。s73187也复制两个分组副本,并且将副本发射到s93189和s43184。s23182复制两个分组副本,并且将副本发射到s53185和s63186。然后,s53185复制一个分组副本,并且将副本发射到s33183。如可以看到的,多播树中的每个服务器在2的复制限制内,并且复制负载均匀分布,其中s103190、s83188、s73187和s23182各自生成2个副本(n=2),并且s53185生成1个副本(1<n)。

图25a是图示依照本公开的一个或多个方面用于根据由虚拟网络控制器创建的多播树复制和转发分组的示例计算设备3198的框图。图25a仅图示计算设备3198的一个特定示例,并且在其它实例中可以使用计算设备3198的许多其它示例。

如图33的具体示例所示,计算设备3198包括一个或多个处理器3200、一个或多个通信单元3202、一个或多个输入设备3204、一个或多个输出设备3206以及一个或多个存储设备3208。在图25a的具体示例中,计算设备3198进一步包括操作系统3210、虚拟化模块3212以及一个或多个应用3214a至3214n(统称为“应用3214”)。部件3200、3202、3204、3206和3208中的每个部件可以互连(物理上、通信上和/或操作上)以用于部件间通信。作为图25a中的一个示例,部件3200、3202、3204、3206和3208可以通过一个或多个通信信道3216耦合。在一些示例中,通信信道3216可以包括系统总线、网络连接、进程间通信数据结构或者用于传达数据的任何其它信道。虚拟化模块3212和应用3214,以及操作系统3210也可以与彼此以及与计算设备3198中的其它部件传达信息。

在一个示例中,处理器3200被配置为实现用于在计算设备3198内执行的功能和/或过程指令。例如,处理器3200可以有能力处理存储在存储设备3208中的指令。处理器3200的示例可以包括微处理器、控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者等效分立或集成逻辑电路装置中的任何一个或多个。

一个或多个存储设备3208可以被配置为存储在操作期间计算设备3198内的信息。在一些示例中,存储设备3208被描述为计算机可读存储介质。在一些示例中,存储设备3208是暂时存储器,从而意指存储设备3208的主要目的不是长期存储。在一些示例中,存储设备3208被描述为易失存储器,从而意指存储设备3208在计算机关闭时不保持存储的内容。易失存储器的示例包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)以及本领域已知的其它形式的易失存储器。在一些示例中,存储设备3208用于存储程序指令以用于由处理器3200执行。在一个示例中,存储设备3208由运行在计算设备3198上的软件或应用(例如,操作系统3210、虚拟化模块3212等)使用,以在程序执行期间暂时存储信息。

在一些示例中,存储设备3208还包括一个或多个计算机可读存储介质。存储设备3208可以被配置为存储比易失存储器更大量的信息。存储设备3208可以进一步被配置用于信息的长期存储。在一些示例中,存储设备3208包括非易失存储元件。这样的非易失存储元件的示例包括磁性硬盘、盒式磁带或磁带盒、光盘、软盘、闪速存储器、或者电可编程存储器(eprom)或电可擦除可编程存储器(eeprom)的形式。

在一些示例中,计算设备3198还包括一个或多个通信单元3202。在一个示例中,计算设备3198利用通信单元3202与外部设备进行通信。在一些示例中,通信单元3202可以通过经由入站和出站链路在一个或多个网络(诸如一个或多个无线网络)上发送数据分组而进行通信。通信单元3202可以包括诸如以太网卡之类的一个或多个网络接口卡(ifc)、光学收发器、射频收发器、或者可以发送和接收信息的任何其它类型的设备。这样的网络接口的其它示例可以包括蓝牙、3g和wi-fi无线电部件。

在一个示例中,计算设备3198还包括一个或多个输入设备3204。在一些示例中,输入设备3204被配置为通过触觉、音频或视频反馈接收来自用户的输入。输入设备3204的示例包括存在敏感显示器、鼠标、键盘、语音响应系统、摄像机、麦克风、或者用于检测来自用户的命令的任何其它类型的设备。在一些示例中,存在敏感显示器包括触摸屏。

一个或多个输出设备3206也可以被包括在计算设备3198中。在一些示例中,输出设备3206被配置为使用触觉、音频或视频刺激向用户提供输出。在一个示例中,输出设备3206包括存在敏感显示器、声卡、视频图形适配器卡、或者用于将信号转换成人或机器可理解的适当形式的任何其它类型的设备。输出设备3206的另外示例包括扬声器、阴极射线管(crt)监控器、液晶显示器(lcd)、或者可以生成用户可理解输出的任何其它类型的设备。

计算设备3198可以包括操作系统3210。在一些示例中,操作系统3210控制计算设备3198的部件的操作。例如,在一个示例中,操作系统3210便于应用3214与处理器3200、通信单元3202、输入设备3204、输出设备3206以及存储设备3208的通信。应用3214可以各自包括可由计算设备3198执行的程序指令和/或数据。作为一个示例,应用3214a可以包括使得计算设备3198执行本公开中描述的一个或多个操作和动作的指令。

依照本公开的技术,计算设备3198可以操作作为虚拟网络的端点设备,诸如来自图1、图2a和图2b的数据中心10中的服务器12之一。更具体地,计算设备3198可以使用虚拟化模块3212执行一个或多个虚拟交换机(未示出),一个或多个虚拟交换机创建和管理作为数据中心交换机结构的虚拟重叠网络的一个或多个虚拟网络。计算机设备3198的通信单元3202可以从虚拟网络控制器接收针对虚拟网络的通信。

根据技术,通信单元3202可以从虚拟网络控制器接收针对虚拟网络的多播群组的多播树,并且将多播树传达给在虚拟化模块3212上执行的复制单元(“rep.单元”)3216。然后,通信单元3202可以接收针对多播群组的多播分组以在虚拟网络上转发。多播树可以指示复制单元3216根据多播树复制多播分组并且将多播分组转发到其它端点设备。多播树由集中位置中的虚拟网络控制器针对虚拟网络来计算,而不是由底层物理网络中的部件以分布式方式计算。另外,多播分组的复制和转发仅由执行在虚拟网络的计算设备3198和其它端点设备上的虚拟交换机执行。在底层网络内不执行复制。用这种方法,在不要求底层网络中的多播支持的情况下,技术使得虚拟网络内计算设备3198和其它端点设备之间的多播服务能够进行。

图25b是图示利用虚拟网络控制器创建针对虚拟网络中的多播群组的网络端点的多播树、并且利用端点之一依照多播树复制和转发分组以在虚拟网络中提供分布式多播服务的示例操作的流程图。关于来自图2a的虚拟网络控制器22和服务器12a描述图25b的操作。

虚拟网络控制器22创建针对虚拟网络中的多播群组的服务器12的多播树(3220)。用这种方法,多播树被创建在逻辑集中位置(即,虚拟网络控制器22)中,而不是由服务多播群组的底层网络中的部件以分布式方式创建。虚拟网络控制器22可以创建多播树以便于针对多播群组的多播分组在虚拟网络中的两个或更多端点或服务器之间的递送。

在一些情况下,多播树可以是单向多播树,其中多播树的根节点操作作为针对多播群组的多播分组的源,并且多播分组在从根节点的单个、下游方向上被传达。在其它情况下,多播树可以是双向多播树,其中多播树的任何节点可以操作作为针对多播群组的多播分组的源,并且多播分组可以在从多播树的根节点的上游或下游方向上被传达。根据技术,因为虚拟重叠网络仿真其支持双向多播的l2多播,虚拟网络控制器22可以创建双向多播树。

虚拟网络控制器22可以基于例如依照vnc22执行的路由协议接收的底层物理网络的拓扑结构信息,计算多播树。另外,虚拟网络控制器22可以计算多播树,以便最小化在每个服务器处的复制限制并且跨树平衡复制。用这种方法,虚拟网络控制器22可以创建多播树,使得每个源服务器和中间服务器执行类似的、小量的复制,而不是源服务器必须承担复制分组并且将分组转发到属于多播群组的所有服务器的负载。虚拟网络控制器22将多播树存储到存储器(3222)。然后,虚拟网络控制器22将多播树传达到多播群组的一个或多个服务器12(3224)。

例如,服务器12a从虚拟网络控制器22接收针对服务器12a所属多播群组的多播树(3226)。服务器12a还接收针对多播群组的多播分组,以根据多播树在虚拟网络上转发(3227)。服务器12a执行管理程序31内的针对虚拟网络的虚拟交换机30a。服务器12a使用虚拟交换机30a的复制单元(例如,计算设备3198的复制单元3216)根据多播树复制针对多播群组的多播分组(3228)。例如,如果服务器12a是多播树中的源服务器或中间服务器,则复制单元44a可以创建如多播树要求的分组的一个或多个副本。

然后服务器12a使用虚拟交换机30a,以根据多播树将复制的多播分组使用隧道封装转发到虚拟网络中的多播群组的其它服务器(3230)。虚拟交换机30a可以将分组的每个副本封装在唯一隧道封装报头中。用这种方法,底层网络中的多个等价路径可以被用于相同的多播群组,以高效地使用带宽。唯一隧道封装报头可以由虚拟网络控制器22配置,使得多播树中的每个链路方向具有唯一的虚拟网络隧道封装。多播分组的复制和转发仅由执行在虚拟网络中的服务器12上的虚拟交换机30执行。在底层网络内不执行复制。用这种方法,在不要求底层网络中的多播支持的情况下,技术使得虚拟网络内的多播服务能够进行。

在以下条款中描述了各种示例。依照本文中描述的技术,在以下条款中的任一条款中阐述的示例可以被并入,并且可以与贯穿本公开描述的任何其它示例组合实现。

条款1.一种方法包括:利用虚拟网络的虚拟网络控制器创建针对虚拟网络中的多播群组的端点设备的多播树;将多播树存储在虚拟网络控制器内的存储器中;以及利用虚拟网络控制器将多播树传达给多播群组的一个或多个端点设备,以便指示在端点设备上执行的虚拟交换机根据多播树复制和转发多播分组。

条款2.条款1的方法,其中将多播树传达给端点设备中的一个特定端点设备包括传达与端点设备中的一个特定端点设备相关的多播树的一个或多个转发条目。

条款3.条款2的方法,其中一个或多个转发条目包括多播树的下一跳信息,并且其中下一跳信息包括链接的下一跳,该链接的下一跳指定由端点设备中的一个特定端点设备执行对针对多播群组的每个多播分组的复制。

条款4.条款1至3中的任一条款的方法,其中创建多播树包括配置针对多播树中的每个链路方向的唯一虚拟网络隧道封装。

条款5.条款1至4中的任一条款的方法,其中创建多播树包括基于针对多播群组的一个或多个成员信息、虚拟网络的物理网络底层的网络拓扑结构信息、以及虚拟网络的网络拓扑结构信息来创建多播树。

条款6.条款1至5中的任一条款的方法,其中创建多播树包括创建多播树以最小化针对多播群组中的每个端点设备的复制限制。

条款7.条款1至6中的任一条款的方法,其中创建多播树包括创建多播树以平衡针对多播群组中的每个端点设备的复制限制与多播树的树深度。

条款8.条款1至7中的任一条款的方法,其中虚拟网络的虚拟网络控制器包括数据中心交换机结构的虚拟重叠网络的集中控制器。

条款9.条款1至8中的任一条款的方法,其中多播树包括单向多播树或双向多播树之一。

条款10.一种方法包括:利用虚拟网络中的多播群组的端点设备接收多播分组,以根据针对多播群组的多播树在虚拟网络上转发,多播树由虚拟网络的虚拟网络控制器创建;利用在端点设备上执行的虚拟交换机根据多播树复制针对多播群组的多播分组;以及利用在端点设备上执行的虚拟交换机根据多播树将复制的多播分组使用隧道封装转发到多播群组的一个或多个其它端点设备。

条款11.条款10的方法,进一步包括利用端点设备从虚拟网络控制器接收与端点设备相关的多播树的一个或多个转发条目。

条款12.条款11的方法,其中一个或多个转发条目包括多播树的下一跳信息,并且其中下一跳信息包括链接的下一跳,该链接的下一跳指定由端点设备执行对针对多播群组的每个多播分组的复制。

条款13.条款10至12中的任一条款的方法,其中转发多播分组包括利用由虚拟网络控制器配置的唯一虚拟网络隧道封装来封装多播分组的每个副本。

条款14.条款10至13中的任一条款的方法,其中复制多播分组包括基于针对端点设备的最小化复制限制来复制多播分组。

条款15.条款10至14中的任一条款的方法,其中端点设备包括多播树的源节点,其根据多播树复制多播分组并且将多播分组转发到多播群组的一个或多个其它端点设备。

条款16.条款10至14中的任一条款的方法,其中端点设备包括中间节点,其从多播群组的另一端点设备接收多播分组,并且根据多播树复制多播分组并且将多播分组转发到多播群组的一个或多个其它端点设备,而不在到从其接收多播分组的端点设备的链路上发送多播分组。

条款17.条款10至14中的任一条款的方法,其中虚拟网络中的端点设备包括数据中心交换机结构的虚拟重叠网络中的服务器。

条款18.条款10的方法,其中多播树包括单向多播树或双向多播树之一。

条款19.一种虚拟网络的虚拟网络控制器包括:存储器;以及一个或多个处理器,被配置为创建针对虚拟网络中的多播群组的端点设备的多播树、将多播树存储在虚拟网络控制器的存储器中、并且将多播树传达给多播群组的一个或多个端点设备,以便指示在端点设备上执行的虚拟交换机根据多播树复制和转发多播分组。

条款20.条款19的虚拟网络控制器,其中处理器被配置为按照与端点设备中的一个特定端点设备相关的多播树的一个或多个转发条目,将多播树传达给端点设备中的一个特定端点设备。

条款21.条款20的虚拟网络控制器,其中一个或多个转发条目包括多播树的下一跳信息,并且其中下一跳信息包括链接的下一跳,该链接的下一跳指定由端点设备中的一个特定端点设备执行对针对多播群组的每个多播分组的复制。

条款22.条款19至21中的任一条款的虚拟网络控制器,其中处理器被配置为配置针对多播树中的每个链路方向的唯一虚拟网络隧道封装。

条款23.条款19至22中的任一条款的虚拟网络控制器,其中处理器被配置为基于针对多播群组的一个或多个成员信息、虚拟网络的物理网络底层的网络拓扑结构信息、以及虚拟网络的网络拓扑结构信息来创建多播树。

条款24.条款19至22中的任一条款的虚拟网络控制器,其中处理器被配置为创建多播树以最小化针对多播群组中的每个端点设备的复制限制。

条款25.条款19至22中的任一条款的虚拟网络控制器,其中处理器被配置为创建多播树以平衡针对多播群组中的每个端点设备的复制限制与多播树的树深度。

条款26.条款19至25中的任一条款的虚拟网络控制器,其中虚拟网络的虚拟网络控制器包括数据中心交换机结构的虚拟重叠网络的集中控制器。

条款27.一种虚拟网络中的端点设备包括:一个或多个处理器,被配置为接收针对端点设备所属多播群组的多播分组,以根据针对多播群组的多播树在虚拟网络上转发,其中多播树由虚拟网络的虚拟网络控制器创建;以及在处理器上执行的虚拟交换机,被配置为根据多播树复制针对多播群组的多播分组,并且根据多播树将复制的多播分组使用隧道封装转发到多播群组的一个或多个其它端点设备。

条款28.条款27的端点设备,其中处理器被配置为从虚拟网络控制器接收与端点设备相关的多播树的一个或多个转发条目。

条款29.条款27至28中的任一条款的端点设备,其中一个或多个转发条目包括多播树的下一跳信息,并且其中下一跳信息包括链接的下一跳,该链接的下一跳指定由端点设备执行对针对多播群组的每个多播分组的复制。

条款30.条款27至29中的任一条款的端点设备,其中虚拟交换机被配置为利用由虚拟网络控制器配置的唯一虚拟网络隧道封装来封装多播分组的每个副本。

条款31.条款27至30中的任一条款的端点设备,其中虚拟交换机被配置为基于针对端点设备的最小化复制限制来复制多播分组。

条款32.条款27至31中的任一条款的端点设备,其中端点设备包括多播树的源节点,其根据多播树复制多播分组并且将多播分组转发到多播群组的两个或更多其它端点设备。

条款33.条款27至31中的任一条款的端点设备,其中端点设备包括中间节点,其从多播群组的另一端点设备接收多播分组,并且根据多播树复制多播分组并且将多播分组转发到多播群组的一个或多个其它端点设备,而不在到从其接收多播分组的端点设备的链路上发送多播分组。

条款34.条款27至31中的任一条款的端点设备,其中虚拟网络中的端点设备包括数据中心交换机结构的虚拟重叠网络中的服务器。

条款35.一种虚拟网络的系统,系统包括:虚拟网络控制器,被配置为创建针对虚拟网络中的多播群组的端点设备的多播树、将多播树存储在虚拟网络控制器内的存储器中、并且将多播树传达给多播群组的一个或多个端点设备;以及多播群组的端点设备之一,被配置为接收将在虚拟网络上被转发的针对多播群组的多播分组,并且执行虚拟交换机,以根据多播树复制针对多播群组的多播分组、并且根据多播树将复制的多播分组使用隧道封装转发到多播群组的一个或多个其它端点设备。

条款36.一种包括指令的计算机可读存储介质,指令在被执行时使得一个或多个处理器:利用虚拟网络的虚拟网络控制器创建针对虚拟网络中的多播群组的端点设备的多播树;将多播树存储在虚拟网络控制器内的存储器中;以及利用虚拟网络控制器将多播树传达给多播群组的一个或多个端点设备,以便指示在端点设备上执行的虚拟交换机根据多播树复制和转发多播分组。

条款37.一种包括指令的计算机可读存储介质,指令在被执行时使得一个或多个处理器:利用虚拟网络中的多播群组的端点设备接收多播分组,以根据针对多播群组的多播树在虚拟网络上转发,多播树由虚拟网络的虚拟网络控制器创建;利用在端点设备上执行的虚拟交换机根据多播树复制针对多播群组的多播分组;以及利用在端点设备上执行的虚拟交换机根据多播树将复制的多播分组使用隧道封装转发到多播群组的一个或多个其它端点设备。

用于数据中心内的虚拟网络的多租户服务器

总体上,技术被描述为便于在诸如元数据接入点接口(if-map)服务器之类的厂商中立服务器的上下文中的多租户。本公开中描述的各种技术可以提供在数据中心内执行的若干虚拟网络的上下文中的多租户if-map服务器,其中每个虚拟网络与不同租户关联并且访问if-map服务器以保持会话数据。支持这些虚拟网络的虚拟交换机可以确保,与会话数据关联的标识符可以是跨虚拟网络全局唯一的,以便于有效地保持针对每个虚拟网络的分离或非重叠的虚拟if-map服务器空间。为了确保这种分离,虚拟交换机可以将从虚拟网络响应的标识符从在虚拟网络的上下文内唯一的局部唯一标识符翻译成跨所有虚拟网络唯一的全局唯一标识符。通常,这种翻译涉及响应于创建“名称空间:标识符”形式的全局唯一标识符,将名称空间附加到标识符。以这种方式,技术可以便于厂商中立数据库内的多租户。

图26是图示依照本公开中描述的技术的各种方面的存储会话信息的系统4050的框图。多个服务器4052a至4052n(“服务器4052”)可以访问if-map服务器4054。服务器4052可以各自表示在上面示例中示出的服务器12之一。在一些示例中,if-map服务器4054可以表示if-map服务器26。如上所述,if-map服务器4054感知虚拟化,并且可以使用诸如“名称空间:标识符”之类的格式。同样地,多个租户可以访问if-map服务器26。每个服务器4052具有多个租户vn1、vn2、vn3(其可以被统称为“vn4056”)和翻译器vn0(其还可以被称为翻译器4058”),翻译器vn0包括定义由其对应一个服务器4052管理的所有租户的数据。

在接收到来自属于例如公司a的子网vn1的查询的同时,通过添加查询租户的唯一名称空间(在这种情况下,公司a),翻译器vn0将查询转换成全局唯一查询。例如,假设查询是由公司a生成的关于雇员#5的。在没有翻译器vn0的情况下,关于雇员#5的查询可能不被处理,这是因为公司b和公司c也可以在它们的相应名称空间中具有标识符雇员#5,并且if-map服务器4054将不知道查询涉及哪个雇员#5。通过标识查询通过其进入的连接,翻译器vn0将查询“雇员#5”翻译成“公司a:雇员#5”。利用其是全局唯一的翻译查询,考虑到多个租户可以“共享”相同的if-map服务器(即,图3的示例中的if-map服务器4054),可以高效使用if-map服务器4052。

由if-map服务器4054生成的查询结果可以包括名称空间“公司a”。因为子网vn1可能不识别包括名称空间“公司a”的结果,在向子网vn1转发结果之前,翻译器vn0可以剥离名称空间。

通常,vn4056向vn4058(其表示针对数据中心10的vn)转发指向数据中心10内部的资源的所有分组。换言之,在配置vn4056时,每个vn4056被配置为向vn4058转发对数据中心10内部的资源(诸如if-map服务器4054)的请求。然后vn4058可以处理这些请求,这在if-map服务器4054的情况下可以包括翻译该标识符(根据开放系统互连(osi)模型,其是层七(l7)数据),并且修改请求以用全局唯一标识符替换该标识符。

尽管未示出在图3的示例中,vn4058还可以包括表或其它数据结构,表或其它数据结构标识哪些vn4056已经被配置为使用名称空间以便于自动生成全局唯一标识符以及哪些vn4056还没有被配置为使用名称空间以便于自动生成全局唯一标识符。也就是说,一些vn4056可以被配置为在格式化针对与特定标识符关联的会话数据的请求时使用名称空间,而其它vn4056可以不被配置为以这种方式使用名称空间。针对未被配置为使用名称空间的那些vn4056,翻译器4058可以透明地翻译这些请求中的标识符,以生成具有代替由不使用名称空间的那些vn4056生成的标识符的全局唯一标识符的更新请求。通过使用该表处理发送到if-map服务器4054的请求和来自if-map服务器4054的响应两者,vn4058可以保持数据结构以标识使用名称空间的那些vn4056和不使用名称空间的那些。

图27是描绘根据本公开中描述的技术的各种方面的由服务器执行的虚拟交换机在执行查询翻译过程中的操作的流程图。通常,查询翻译过程(在图35的示例中表示为查询翻译过程“4180”)将在服务器4052a中例如由翻译器vn0(或者在服务器4052a中例如由vn4058)执行。在一些实例中,一个或多个配置vm108可以执行查询翻译过程4180。

翻译器vn0从诸如由子网vn1托管的公司a之类的一个租户接收查询(例如,针对与标识符“雇员#5”关联的数据)(步骤4182)。如果查询不包括名称空间(步骤4183),通过基于查询来自哪个租户而将名称空间添加到查询(步骤4184),翻译器vn0使查询全局化。如果查询已经包括名称空间,则没有名称空间被添加,并且可以绕过步骤4184。具有添加的名称空间的查询现在可以是“公司a:雇员#5”。然后,具有添加的名称空间的这种查询被转发到if-map服务器4054(步骤4186),并且接收结果(步骤4188)。由于if-map服务器4054是通用的并且处理来自不同子网218的查询,结果包括名称空间“公司a”。例如,结果可以是“公司a:迈阿密”。如果原始查询不包括名称空间,翻译器vn0去掉名称空间(步骤4190),并且将结果(“迈阿密”)转发给租户(步骤4192)。如果原始查询包括名称空间,翻译器vn0可以在不去掉名称空间的情况下将查询结果转发给租户。

利用查询翻译过程4180,服务器4052a可以自动将名称空间添加到标识符,而客户端或租户不知道命名方案。在这个意义上,服务器4052a可以有效地在局部唯一标识符和全局唯一标识符之间进行翻译,从而允许多个租户共享if-map服务器4054。

如上所述,技术可以便于由数据中心的虚拟网络访问的服务器的多租户。在以下条款中描述了各种示例。依照本文中描述的技术,在以下条款中的任一条款中阐述的示例可以被并入,并且可以与贯穿本公开描述的任何其它示例组合实现。

条款1.一种方法包括:利用支持在数据中心内执行的多个虚拟网络的虚拟交换机接收关于与在发起请求的多个虚拟网络之一内唯一的标识符关联的数据的请求;翻译包括在请求内的标识符,以生成在多个虚拟网络内唯一的全局唯一标识符;更新请求,以用全局唯一标识符替换包括在请求内的标识符;以及将更新的请求发射到数据中心的服务器。

条款2.条款1的方法,其中翻译包括在请求内的标识符包括将分派给发起请求的一个虚拟网络的名称空间附加到标识符以生成全局唯一标识符。

条款3.条款1至2中的任一条款的方法,其中发起请求的多个虚拟网络之一包括多个虚拟网络中的第一虚拟网络,其中请求包括第一请求,其中全局唯一标识符包括第一全局唯一标识符,以及其中方法进一步包括:利用虚拟交换机接收关于与包括在第一请求中的标识符相同的标识符关联的数据的第二请求,其中相同标识符在发起第二请求的多个虚拟网络中的第二虚拟网络内也是唯一的;翻译包括在第二请求内的标识符,以生成在多个虚拟网络内唯一的并且不同于第一全局唯一标识符的第二全局唯一标识符;更新第二请求以用第二全局唯一标识符替换包括在第二请求内的第二标识符;以及将更新的第二请求发射到服务器。

条款4.条款1至3中的任一条款的方法,进一步包括:从服务器接收包括全局唯一标识符的响应;翻译全局唯一标识符,以恢复包括在请求内的标识符;更新响应,以用恢复的标识符替换全局唯一标识符;以及将响应发射给发出请求的多个虚拟网络之一。

条款5.条款4的方法,其中翻译请求包括透明地翻译包括在请求内的标识符以生成在多个虚拟网络内唯一的全局唯一标识符,使得发起响应的多个虚拟网络之一无法检测到翻译,以及其中翻译全局唯一标识符包括透明地翻译包括在响应内的全局唯一标识符以恢复包括在请求内的标识符,使得发起响应的多个虚拟网络之一不知道翻译。

条款6.条款1至5中的任一条款的方法,其中翻译标识符包括透明地翻译包括在请求内的标识符以生成在多个虚拟网络内唯一的全局唯一标识符,使得发起响应的多个虚拟网络之一不知道翻译。

条款7.条款1至6中的任一条款的方法,其中请求符合厂商中立协议,以及其中服务器包括依照厂商中立数据模型存储数据的厂商中立服务器。

条款8.条款1至5中的任一条款的方法,其中请求符合元数据接入点接口(if-map)协议,以及其中服务器包括依照if-map数据模型存储数据的if-map服务器。

条款9.条款1的方法,其中多个虚拟网络中的每个虚拟网络与数据中心的不同客户关联,以及其中服务器包括存储针对不同客户中的至少两个客户的数据的多租户服务器。

条款10.一种包括在数据中心内的设备包括:一个或多个处理器,被配置为执行支持在数据中心内执行的多个虚拟网络的虚拟交换机,其中虚拟交换机被配置为接收关于与在发起请求的多个虚拟网络之一内唯一的标识符关联的数据的请求、翻译包括在请求内的标识符以生成在多个虚拟网络内唯一的全局唯一标识符、更新请求以用全局唯一标识符替换包括在请求内的标识符、以及将更新的请求发射到数据中心的服务器。

条款11.条款10的设备,其中一个或多个处理器进一步被配置为,在翻译包括在请求内的标识符时,将分派给发起请求的一个虚拟网络的名称空间附加到标识符,以生成全局唯一标识符。

条款12.条款10至11中的任一条款的设备,其中发起请求的多个虚拟网络之一包括多个虚拟网络中的第一虚拟网络,其中请求包括第一请求,其中全局唯一标识符包括第一全局唯一标识符,以及其中一个或多个处理器进一步被配置为:接收关于与包括在第一请求中的标识符相同的标识符关联的数据的第二请求,其中相同标识符在发起第二请求的多个虚拟网络中的第二虚拟网络内也是唯一的;翻译包括在第二请求内的标识符,以生成在多个虚拟网络内唯一的并且不同于第一全局唯一标识符的第二全局唯一标识符;更新第二请求以用第二全局唯一标识符替换包括在第二请求内的第二标识符;以及将更新的第二请求发射到服务器。

条款13.条款10至12中的任一条款的设备,其中一个或多个处理器进一步被配置为:从服务器接收包括全局唯一标识符的响应;翻译全局唯一标识符,以恢复包括在请求内的标识符;更新响应,以用恢复的标识符替换全局唯一标识符;以及将响应发射给发出请求的多个虚拟网络之一。

条款14.条款13的设备,其中一个或多个处理器进一步被配置为,在翻译请求时,透明地翻译包括在请求内的标识符以生成在多个虚拟网络内唯一的全局唯一标识符,使得发起响应的多个虚拟网络之一无法检测到翻译,以及其中一个或多个处理器进一步被配置为,在翻译全局唯一标识符时,透明地翻译包括在响应内的全局唯一标识符以恢复包括在请求内的标识符,使得发起响应的多个虚拟网络之一不知道翻译。

条款15.条款10至14中的任一条款的设备,其中一个或多个处理器进一步被配置为,在翻译标识符时,透明地翻译包括在请求内的标识符以生成在多个虚拟网络内唯一的全局唯一标识符,使得发起响应的多个虚拟网络之一不知道翻译。

条款16.条款10至15中的任一条款的设备,其中请求符合厂商中立协议,以及其中服务器包括依照厂商中立数据模型存储数据的厂商中立服务器。

条款17.条款10至15中的任一条款的设备,其中请求符合元数据接入点接口(if-map)协议,以及其中服务器包括依照if-map数据模型存储数据的if-map服务器。

条款18.条款10的设备,其中多个虚拟网络中的每个虚拟网络与数据中心的不同客户关联,以及其中服务器包括存储针对不同客户中的至少两个客户的数据的多租户服务器。

条款19.一种具有存储在其上的指令的非瞬态计算机可读存储介质,指令在被执行时使得包括在数据中心内的设备的一个或多个处理器执行支持在数据中心内执行的多个虚拟网络的虚拟交换机,其中虚拟交换机被配置为:接收关于与在发起请求的多个虚拟网络之一内唯一的标识符关联的数据的请求,翻译包括在请求内的标识符以生成在多个虚拟网络内唯一的全局唯一标识符,更新请求以用全局唯一标识符替换包括在请求内的标识符,以及将更新的请求发射到数据中心的服务器。

便于一个或多个虚拟网络的操作

总体上,描述了用于使用分布式虚拟网络控制器便于一个或多个虚拟网络的操作的技术。一个或多个虚拟网络可以至少包括通过至少交换机设备连接到因特网协议网络的服务器设备。系统可以包括被配置为控制一个或多个虚拟网络中的元件的第一集的操作的第一控制器节点设备。系统可以进一步包括被配置为控制一个或多个虚拟网络中的元件的第二集的操作的第二控制器节点设备。第一控制器节点设备和第二控制器节点设备可以使用对等协议对等,并且根据对等协议可以是对等体。系统可以包括与第一控制器节点设备和第二控制器节点设备中的一个或多个关联的硬件(和软件)。

图28是图示依照本公开的一个或多个方面的用于便于一个或多个虚拟网络的操作的示例设备5200的框图。图28仅图示计算设备5200的一个特定示例,并且在其它实例中可以使用计算设备5200的许多其它示例。例如,计算设备5200可以表示图1的任何服务器12的示例实例。

如图6的具体示例所示,计算设备5200包括一个或多个处理器5201、一个或多个通信单元5202、一个或多个输入设备5204、一个或多个输出设备5206以及一个或多个存储设备5208。在图6的具体示例中,计算设备5200进一步包括操作系统5210、虚拟化模块5212以及一个或多个应用5214a至5214n(统称为“应用5214”)。部件5201、部件5202、部件5204、部件5206和部件5208中的每个部件可以互连(物理上、通信上和/或操作上)以用于部件间通信。作为图6中的一个示例,部件5201、部件5202、部件5204、部件5206和部件5208可以通过一个或多个通信信道5216耦合。在一些示例中,通信信道5216可以包括系统总线、网络连接、进程间通信数据结构或者用于传达数据的任何其它信道。虚拟化模块5212和应用5214,以及操作系统5210也可以与彼此以及与计算设备5200中的其它部件传达信息。

在一个示例中,处理器5201被配置为实现用于在计算设备5200内执行的功能和/或过程指令。例如,处理器5201可以有能力处理存储在存储设备5208中的指令。处理器5201的示例可以包括微处理器、控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者等效分立或集成逻辑电路装置中的任何一个或多个。

一个或多个存储设备5208可以被配置为存储在操作期间计算设备5200内的信息。在一些示例中,存储设备5208被描述为计算机可读存储介质。在一些示例中,存储设备5208是暂时存储器,从而意指存储设备5208的主要目的不是长期存储。在一些示例中,存储设备5208被描述为易失存储器,从而意指存储设备5208在计算机关闭时不保持存储的内容。易失存储器的示例包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)以及本领域已知的其它形式的易失存储器。在一些示例中,存储设备5208用于存储程序指令以用于由处理器5201执行。在一个示例中,存储设备5208由运行在计算设备5200上的软件或应用(例如,操作系统5210、虚拟化模块5212等)使用,以在程序执行期间暂时存储信息。

在一些示例中,存储设备5208还包括一个或多个计算机可读存储介质。存储设备5208可以被配置为存储比易失存储器更大量的信息。存储设备5208可以进一步被配置用于信息的长期存储。在一些示例中,存储设备5208包括非易失存储元件。这样的非易失存储元件的示例包括磁性硬盘、盒式磁带或磁带盒、光盘、软盘、闪速存储器、或者电可编程存储器(eprom)或电可擦除可编程存储器(eeprom)的形式。

在一些示例中,计算设备5200还包括一个或多个通信单元5202。在一个示例中,计算设备5200利用通信单元5202与外部设备进行通信。在一些示例中,通信单元5202可以通过经由入站和出站链路在一个或多个网络(诸如一个或多个无线网络)上发送数据分组而进行通信。通信单元5202可以包括诸如以太网卡之类的一个或多个网络接口卡(ifc)、光学收发器、射频收发器、或者可以发送和接收信息的任何其它类型的设备。这样的网络接口的其它示例可以包括蓝牙、3g和wi-fi无线电部件。

在一个示例中,计算设备5200还包括一个或多个输入设备5204。在一些示例中,输入设备5204被配置为通过触觉、音频或视频反馈接收来自用户的输入。输入设备5204的示例包括存在敏感显示器、鼠标、键盘、语音响应系统、摄像机、麦克风、或者用于检测来自用户的命令的任何其它类型的设备。在一些示例中,存在敏感显示器包括触摸屏。

一个或多个输出设备5206也可以被包括在计算设备5200中。在一些示例中,输出设备5206被配置为使用触觉、音频或视频刺激向用户提供输出。在一个示例中,输出设备5206包括存在敏感显示器、声卡、视频图形适配器卡、或者用于将信号转换成人或机器可理解的适当形式的任何其它类型的设备。输出设备5206的另外示例包括扬声器、阴极射线管(crt)监控器、液晶显示器(lcd)、或者可以生成用户可理解输出的任何其它类型的设备。

计算设备5200可以包括操作系统5212。在一些示例中,操作系统5212控制计算设备5200的部件的操作。例如,在一个示例中,操作系统5212便于应用5214与处理器5201、通信单元5202、输入设备5204、输出设备5206以及存储设备5210的通信。应用5214可以各自包括可由计算设备5200执行的程序指令和/或数据。作为一个示例,应用5214a可以包括使得计算设备5200执行本公开中描述的一个或多个操作和动作的指令。

依照本公开的技术,计算设备5200可以进一步包括虚拟交换机5216和虚拟网络代理5218,它们可以执行在作为计算设备5200的管理程序进行操作的虚拟化模块5212上或者在计算设备5200的本机操作系统上。虚拟交换机5216和虚拟交换机代理5218可以分别执行图5的虚拟交换机174和虚拟网络交换机代理172。虚拟交换机5216可以实现针对执行在计算设备5200上的一个或多个端点和/或一个或多个主机(例如,vm36)的层3转发和策略强制执行点。由于从诸如图1的vnc22之类的虚拟网络控制器接收的配置信息,一个或多个端点或者一个和/或一个或多个主机可以被分类到虚拟网络中。

技术被描述用于使用分布式虚拟网络控制器便于一个或多个虚拟网络的操作。在以下条款中描述了各种示例。依照本文中描述的技术,在以下条款中的任一条款中阐述的示例可以被并入,并且可以与贯穿本公开描述的任何其它示例组合实现。

条款1.一种系统包括实现一个或多个虚拟网络的元件的第一集和元件的第二集;第一服务器设备和第二服务器设备各自通过交换机结构连接到网络;第一控制器节点设备被配置为控制一个或多个虚拟网络中的元件的第一集的操作,其中元件的第一集包括第一服务器设备;以及第二控制器节点设备被配置为控制一个或多个虚拟网络中的元件的第二集的操作,其中元件的第二集包括第二服务器设备,其中第一控制器节点设备和第二控制器节点设备根据对等协议是对等体,第一控制器节点设备和第二控制器节点设备通过对等协议交换涉及元件的第一集和元件的第二集的操作的信息。

条款2.条款1的系统,进一步包括第一服务器设备的虚拟网络交换机,虚拟网络交换机被配置为通过使用层3协议使分组隧穿到第二服务器设备,便于一个或多个虚拟网络中的多个网络的重叠。

条款3.条款1至2中的任一条款的系统,其中第一控制器节点设备包括用于存储与元件的第一集有关的诊断信息的第一分析数据库,其中第二控制器节点设备包括用于存储与元件的第二集有关的诊断信息的第二分析数据库,以及其中第一控制器节点设备和第二控制器节点被配置为共享与元件的第一集和元件的第二集中的一个或多个有关的至少一些诊断数据。

条款4.条款3的系统,其中第一分析数据库和第二分析数据库是分布式数据库的一部分。

条款5.条款1至4中的任一条款的系统,其中第一控制器节点设备包括用于使用元数据接入点接口协议存储与元件的第一集有关的配置信息的第一配置数据库,其中第二控制器节点设备包括用于存储与元件的第二集有关的配置信息的第二配置数据库,以及其中第一控制器节点设备和第二控制器节点被配置为共享与元件的第一集和元件的第二集中的一个或多个有关的至少一些配置数据。

条款6.条款1至5中的任一条款的系统,进一步包括用户接口,配置用于与第一控制器节点设备交互并且用于与第二控制器节点设备交互。

条款7.条款1至6中的任一条款的系统,其中第一控制器节点设备被配置为使用对等协议向第二控制器节点设备提供与元件的第一集有关的信息。

条款8.条款1至7中的任一条款的系统,其中对等协议是边界网关协议。

条款9.条款1至8中的任一条款的系统,其中第一控制器节点设备包括第一控制平面虚拟机,其中第二控制器节点设备包括第二控制平面虚拟机,以及其中第一控制平面虚拟机被配置为使用对等协议向第二控制平面虚拟机提供与元件的第一集有关的信息。

条款10.条款1至9中的任一条款的系统,进一步包括虚拟网络交换机,其实现在第一服务器设备中并且被配置为便于一个或多个虚拟网络中的多个网络的重叠,其中第一控制平面虚拟机被配置为使用可扩展消息传递和到场协议与虚拟网络交换机进行通信。

条款11.条款1至9中的任一条款的系统,其中第一控制器节点设备进一步包括被配置为存储与元件的第一集有关的配置信息的第一配置虚拟机,以及其中第一控制平面虚拟机被配置为使用可扩展消息传递和到场协议和元数据接入点接口协议中的至少一个,与第一配置虚拟机进行通信。

条款12.条款1至9中的任一条款的系统,其中第一控制器节点设备进一步包括被配置为存储与元件的第一集有关的诊断信息的第一分析虚拟机,以及其中第一控制平面虚拟机被配置成使用可扩展消息传递和到场协议与第一分析虚拟机进行通信。

条款13.条款1至9中的任一条款的系统,其中第一控制平面虚拟机包括一种类型软件的特定版本,以及其中第二控制平面虚拟机包括该种类型软件的不同于特定版本的不同版本。

条款14.一种用于便于一个或多个虚拟网络的操作的方法,一个或多个虚拟网络包括各自通过交换机结构连接到网络的第一服务器设备和第二服务器设备,方法包括:使用第一控制器节点设备控制一个或多个虚拟网络中的元件的第一集的操作,其中元件的第一集包括第一服务器设备;使用第二控制器节点设备控制一个或多个虚拟网络中的元件的第二集的操作,其中元件的第二集包括第二服务器设备;以及使用对等协议使第一控制器节点设备和第二控制器节点设备对等,以在第一控制器节点设备和第二控制器节点设备之间,交换涉及元件的第一集和元件的第二集的操作的信息。

条款15.条款14的方法,进一步包括使用实现在服务器设备中的虚拟网络交换机并且使用层3协议,便于一个或多个虚拟网络中的多个网络的重叠。

条款16.条款14至15中的任一条款的方法,进一步包括:使用实现在第一控制器节点设备中的第一分析数据库存储与元件的第一集有关的诊断信息;使用实现在第二控制器节点设备中的第二分析数据库存储与元件的第二集有关的诊断信息;以及使用第一控制器节点设备向第二控制器节点提供与元件的第一集和元件的第二集中的一个或多个有关的至少一些诊断数据。

条款17.条款14至16中的任一条款的方法,其中第一分析数据库和第二分析数据库是分布式数据库的一部分。

条款18.条款14至17中的任一条款的方法,进一步包括:使用实现在第一控制器节点设备中的第一配置数据库并且使用元数据接入点接口协议存储与元件的第一集有关的配置信息;使用实现在第二控制器节点设备中的第二配置数据库存储与元件的第二集有关的配置信息;以及使用第一控制器节点设备向第二控制器节点设备提供与元件的第一集和元件的第二集中的一个或多个有关的至少一些配置数据。

条款19.一种虚拟网络控制器节点设备包括:一个或多个处理器;由处理器执行的控制平面虚拟机,用于使用可扩展消息传递和到场协议(xmpp)与多个虚拟网络交换机进行通信;配置虚拟机,用于存储和管理包括针对虚拟网络交换机的配置信息的配置数据库;分析虚拟机,用于存储和管理包括针对虚拟网络交换机的日志记录信息的分析数据库,其中配置虚拟机和分析虚拟机使用元数据接入点接口协议与控制平面虚拟机进行通信,其中控制平面虚拟机通过使用xmpp向虚拟网络交换机发送路由数据和配置信息来配置虚拟网络交换机,以及其中控制平面虚拟机使用xmpp接收针对虚拟网络交换机的日志记录信息并且将日志记录信息路由到分析虚拟机以存储到分析数据库。

条款20.一种网络系统包括:包括多个交换机的交换机结构;具有依照对等协议与彼此进行对等通信的一组控制器节点设备的分布式控制器,其中每个控制器节点设备配置和管理多个交换机内的重叠网络;通过交换机结构互连的多个服务器,其中每个服务器包括执行经由重叠网络进行通信的一个或多个虚拟机的操作环境,以及其中服务器包括使重叠网络作为虚拟网络延伸到虚拟机的操作环境的一组虚拟交换机。

条款21.条款20的网络系统,其中网络包括网络数据中心。

条款22.条款20至21中的任一条款的网络系统,其中控制器节点设备经由对等协议交换涉及虚拟交换机的操作的信息。

本文中描述的技术(包括前述任何章节中的)可以被实现在硬件、软件、固件或其任何组合中。描述为模块、单元或部件的各种特征可一起实现在集成逻辑设备中或者单独作为分立但可互操作的逻辑设备或其它硬件设备。在一些情况下,电子电路装置的各种特征可以被实现为诸如集成电路芯片或芯片组之类的一个或多个集成电路设备。

如果实现在硬件中,本公开可以涉及处理器或集成电路设备这样的装置,诸如集成电路芯片或芯片组。备选地或另外,如果实现在软件或固件中,技术可以至少部分通过包括指令的计算机可读数据存储介质来实现,指令在被执行时使得处理器执行上面描述的一个或多个方法。例如,计算机可读数据存储介质可以存储这样的指令以用于由处理器执行。

计算机可读介质可以形成其可以包括包装材料的计算机程序产品的一部分。计算机可读介质可以包括计算机数据存储介质,诸如随机存取存储器(ram)、只读存储器(rom)、非易失随机存取存储器(nvram)、电可擦除可编程只读存储器(eeprom)、闪速存储器、磁性或光学数据存储介质等。在一些示例中,一件制造品可以包括一个或多个计算机可读存储介质。

在一些示例中,计算机可读存储介质可以包括非瞬态介质。术语“非瞬态”可以指示存储介质不是在载波或传播信号中体现的。在某些示例中,非瞬态存储介质可以存储可以随着时间的推移改变的数据(例如,在ram或高速缓存中)。

代码或指令可以是由处理电路装置执行的软件和/或固件,处理电路装置包括一个或多个处理器,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或者其它等效的集成或分立逻辑电路装置。据此,如本文中使用的术语“处理器”可以指任何前述结构或者适合于实现本文中描述的技术的任何其它结构。另外,在一些方面中,本公开中描述的功能可以被提供具有软件模块或硬件模块。

已经描述了各种实施例。这些和其它实施例在以下示例的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1