专利名称:虚拟网络拓扑结构生成的制作方法
技术领域:
本发明涉及分布式计算系统以及在分布式计算系统上运行的分布式应用。更特别地,本发明涉及通过物理分布计算系统自动创建任意的虚拟网络拓扑结构以允许该系统支持多个分布式应用的技术。
背景技术:
因特网的使用在过去的几年里得到爆炸性的增长并且仍在持续增长。人们能够舒适地使用万维网(或简称“Web”)上提供的很多服务,如电子邮件、在线购物、收集新闻和信息、听音乐、观看视频剪辑、找工作等等。为了跟上基于因特网的服务需求增长,专门用于支持网站的计算机系统有大量的增长,这些系统提供那些站点的后端服务,并存储与那些站点关联的数据。
一种类型的分布式计算机系统是因特网数据中心(IDC),这是专门设计的、容纳很多支持基于因特网的服务的计算机的复合体。IDC,也被称为“Web农场”和“服务器农场”,通常在气候控制、物理安全的建筑中容纳成百上千台计算机。这些计算机被互连以运行一个或多个支持一个或多个因特网服务或网站的程序。IDC提供可靠的因特网访问,可靠的电源,及安全的操作环境。其他类型的分布式计算机系统为企业数据中心(EDC)。EDC类似于IDC,但是面向企业。
图1展示因特网数据中心100。它包含安排在专门构建的房间中的多个服务器计算机102。这些计算机为通用计算机,通常配置为服务器。因特网数据中心可以构建为容纳单个实体的单个站点(如Yahoo!或MSN的数据中心),或容纳多个实体的多个站点(如,支持多个公司的站点的Exodus中心)。
所示的IDC 100有三个实体,实体A、实体B和实体C,它们共享计算机资源。这些实体表示需要出现在Web上的各种公司。IDC 100有包含附加计算机的共享池104,它可以由实体在流量大时使用。例如,从事在线零售的实体在圣诞节期间会经历显著增加的需求。附加的计算机向IDC提供灵活性以满足这样的需求。
今天,大型IDC是很复杂的并且通常被用于支持多个应用。例如,一些网站会操作几千台计算机,并支持很多分布式应用。这些分布式应用通常有复杂的网络需求,要求操作员物理地连接计算机到特定的网络交换机,并手动地安排IDC内的布线配置以支持复杂的应用。结果,构建物理网络拓扑结构以符合应用需求这样的任务会成为麻烦而耗时并且容易因为人工操作而出错的处理。因此,需要改进设计分布式应用并部署其到物理计算机上的技术。
发明内容
说明用于自动地通过物理计算系统创建任意的虚拟网络拓扑结构的结构和方法。所述结构和方法允许在同一物理计算系统上自动化及远程地安装多个分布式应用而无需物理地连接计算机并配置系统内的布线。
在一个实施例中,分布式计算系统包括很多通过交换机(如,以太网交换机)网络互连的计算机。计算机可被编程为执行各种特定任务,这些任务由应用(如,Web服务器、数据库、负载均衡、防火墙、大容量数据存储等等)调用。所述方法对每个在分布式计算系统上支持的分布式应用在物理网络上创建一个或多个虚拟局域网(VLAN)。用于支持分布式应用的计算机自动地连接到和应用关联的相应VLAN。VLAN确保应用互相之间隔离操作。
计算机之间的自动连接包括两个操作。第一个操作是将VLAN成员资格分配给连接该计算机的交换机端口。这指定该交换机端口接受用关联的VLAN标识标记的包。第二个操作是在每个计算机的单个物理网络接口(NIC)上创建虚拟网络接口(VNIC)。每个VNIC唯一地表示关联的VLAN。这允许有单个物理NIC的计算机加入几个VLAN。和特殊的VLAN关联的包被路由到计算机并通过对应该VLAN的VNIC处理。
创建虚拟网络拓扑结构的能力允许应用设计师自动地即时创建本质上任何类型的网络配置。例如,设计师可以通过远程地分配防火墙计算机给VLAN、分配交换机并增加服务器到给定区域内的VLAN来定义隔离区域(即,“DMZ”)。然后可以在同一计算系统上部署应用,其中单独的服务器支持多个不同应用。
图1展示常规的因特网数据中心(IDC);图2展示有物理计算资源的分布式计算系统,可以自动地将其配置为支持一个或多个分布式应用;图3展示在分布式计算系统上自动设计、部署和管理分布式应用的平台结构层次;图4展示可以用于支持分布式应用的典型物理计算资源的物理网络拓扑结构;图5展示可以支持在图4的物理计算资源上的分布式应用的虚拟网络拓扑结构;图6展示用在图4的虚拟网络拓扑结构中的服务器,及在该服务器上实现的虚拟局域网(VLAN)驱动程序。图6进一步展示用于根据虚拟网络拓扑结构部署分布式应用的物理资源的资源管理器;图7展示通过物理计算资源生成虚拟网络拓扑结构的处理。
具体实施例方式
下面所揭示的内容说明用于在物理计算资源上自动部署分布式软件应用的虚拟网络拓扑结构的生成。通过物理计算资源生成任意的虚拟网络拓扑结构的能力允许对同一分布式计算系统上支持的每个分布式应用创建自定义的网络拓扑结构。这对大型数据中心尤为有用,大型数据中心很复杂并且通常被用于支持多个应用。在这样的数据中心安装的分布式应用通常有复杂的联网需求,同时构建物理网络拓扑结构以符合这些需求是麻烦而耗时并且容易因为人工操作而出错的处理。允许生成不需要对每个部署的应用物理地重新配置计算系统的虚拟网络拓扑结构(如,重路由连线、物理地连接计算机到各种交换机等等)减少了对以人为中心的操作的依赖,从而减少了成本及人工操作错误的可能性。
分布式计算系统图2展示分布式计算系统200,可以根据需要自动地对其部署以支持一个或多个分布式应用。分布式计算系统200包括通过交换机网络204互连的很多服务器202(1)、202(2)、...、202(N)的整体集合。在一个实施例中,网络交换机204为无阻塞的以太网交换机,虽然可以使用其他类型的交换机。所示的网络204有各自连接服务器202(1)-202(N)的多个物理端口P1、P2、...、PN。分布式计算系统200进一步包括一个或多个负载均衡计算机206和一个或多个防火墙计算机208。所示的这些计算机类型的每一个连接到网络交换机204的物理端口PN+2和PN+2。除了负载均衡和防火墙,分布式计算系统可以进一步包括其他类型的专用处理设备,如web高速缓存、SSL(安全套接字层)加速器、NAS(网络附连存储)等等。
分布式计算系统200表示在大规模计算系统中使用的物理资源,大规模计算系统如支持基于因特网的服务的因特网数据中心(IDC),或更一般地,数据中心。典型的数据中心可以由通过局域网(LAN)互连的成百上千台计算机构成。
分布式计算系统200进一步包括一个或多个虚拟网络拓扑结构生成服务器210,如图所示,它通过物理端口PN+3连接到网络交换机204。服务器210使应用设计师能够通过分布式计算系统200创建虚拟网络拓扑结构从而在同一系统200上可以支持多个分布式应用。分布式应用是在多个联网的计算机上实现并执行的软件程序。这样的应用的例子包括电子邮件服务、网站、内容数据库、在线商务、存储、新闻和信息服务、娱乐服务等等。
为了生成虚拟网络拓扑结构,服务器210对每个分布式应用创建至少一个虚拟局域网(VLAN)。然后服务器210指示选择的服务器和关联的交换机端口将其自身与特殊的VLAN关联。虚拟网络拓扑结构生成服务器210运行一个或多个资源管理器212,资源关联器帮助将物理资源部署到相应的VLAN以支持分布式应用。资源管理器212和服务器202、网络交换机204、负载均衡计算机206和防火墙计算机208通讯以建立各种VLAN以使得关联的应用可以安全地彼此隔离操作。资源管理器212追踪VLAN的创建和分配,以及哪些计算机被连接到VLAN。这样的信息可以保存在由虚拟网络拓扑结构生成服务器210上的资源管理器212维护的数据库中。服务器210也支持应用的拓扑结构的自定义。例如,它可以在应用内创建隔离区域,或“DMZ”,以隔离关键组件。
有几种利用虚拟网络拓扑结构的方法。虚拟拓扑结构生成可被用于,例如,帮助自动化。网络拓扑结构可以根据需要生成而无需人工干预,如下面更详细的说明。虚拟拓扑结构生成也允许同一物理网络以安全的方式支持多个应用,而应用之间不会互相干涉。虚拟拓扑结构生成允许应用设计师定义并实施将应用的一部分和其他部分隔离的独立隔离区域。可以用很少的时间即时构建这样的隔离区域。而虚拟拓扑结构生成的另一种可能用法是使得在多个分布式应用之间能够共享专用硬件资源。例如,在图2中,可以定义负载均衡计算机的共享池并在物理网络的任何点上进行连接。然后可以从这个共享池中分配负载均衡器并将其放置于应用的虚拟网络中。
在说明如何生成虚拟网络拓扑结构及如何自动地部署应用到物理计算资源上之前,下面一节说明在物理计算系统之上构建的平台结构。此结构提供这样的框架,在其中可以开发自动部署和关联功能的各部分。
平台结构图3展示在分布式计算系统200上自动设计、部署和管理分布式应用的平台结构。结构300展示在表示分布式计算系统200的物理计算资源的基层302上的多个层。自动部署服务层304提供转换机器为在分布式计算系统200中使用的服务器的工具。这样的工具允许OS(操作系统)映象的创建、编辑和部署。机器的远程编程由完整的编程接口实现,如WMI(Windows管理工具),它是Microsoft的Windows操作系统中允许配置和管理系统和网络设备的编程接口(API)。
网络管理层306位于自动部署服务层304之上。网络管理层306支持网络管理和虚拟拓扑结构生成。网络管理层部分地支持网络计算机的驱动程序模型,驱动程序模型帮助单个的计算机通过连接到网络交换机204的关联端口的单个物理网络接口连接到一个或多个VLAN。根据驱动程序模型,VLAN驱动程序被安装在服务器并被用于在单个物理网络接口之上创建虚拟网络接口(VNIC)。VLAN驱动程序对每个VLAN创建一个虚拟网络接口(VNIC)。VNIC在服务器的IP栈中正好位于网络接口(NIC)之上,以使得服务器可以处理在不止一个VLAN上传输的包,即使所有的包通过同一物理NIC物理地传输。下面引用图6对此进行更加详细的说明。
驱动程序模型支持VLAN标记在交换机端口上的配置以允许数据包通过用它们所属的VLAN的标识标记的分布式计算系统来传输。网络交换机204实现标记并且只接受有标识交换机所属的VLAN的标记的包。在一个实施例中,网络交换机204有标记端口和非标记端口。交换机的标记端口用VLAN标识符标记且用于连接其他交换机的标记端口。这允许包通过交换机网络快速传输。交换机的非标记端口被用于连接服务器202或计算机206、208。当包到达其目的地服务器的交换端口时,在向上游传送包至服务器之前,从包中剥离VLAN标记以使得服务器不需要知道有关标记的任何事情。
物理资源管理层308位于物理管理层306之上。物理资源管理层308维护分布式计算系统300的物理模型,追踪所有权并协调所有物理计算资源的分配。物理资源管理层308进一步支持资源分配批处理,从而允许动态地配置和管理物理计算资源。
逻辑资源管理层310位于物理资源管理层308之上。逻辑资源管理层310帮助由分布式应用请求的逻辑资源的分配。例如,应用可以请求这样的资源,如数据库、负载均衡服务、防火墙、web服务等等。逻辑资源管理层310暴露这样的逻辑资源。
下一个层是服务定义模型和运行时间层312,它允许对分布式应用进行说明并追踪其操作。服务定义模型(SDM)提供用于说明操作处理的名字空间和上下文以及用于应用自省和控制应用资源的API。它进一步使操作员和开发者能够共享同一应用视图。
在计算资源层200上的第六层是组件层314。这一层允许定义分布式应用的可重用基本构件,它对上下文、命名和绑定使用SDM API。这些基本构件被称为“组件”。
顶层是操作逻辑层316,它提供分布式应用的操作方面。操作逻辑负责启动服务、增长或缩减服务、升级和降级、错误检查和恢复,及状态划分。操作逻辑使得能够在部署和应用中重用验证过的操作实践。通过SDM层的使用,操作逻辑有更好地理解可能出现的情况的上下文。例如,当发生错误,操作逻辑可以确定错误发生在电子邮件服务的前端,而不仅仅是在屋子中间的某一服务器上。
虚拟网络拓扑结构平台结构提供在物理资源之上生成虚拟网络拓扑结构的框架以使得同一计算系统可以支持多个应用。可以对每个应用创建虚拟LAN(VLAN)以使得该应用可以和运行在分布式计算系统上的其他应用隔离执行。一旦创建了网络拓扑结构,系统帮助物理资源的自动部署和到适当的VLAN的连接以支持分布式应用的执行。
图4展示有典型安排的物理网络拓扑结构400,它包含通过网络交换机404互连的5个服务器402(1)-402(5)。每个服务器402物理地连接到网络交换机404的关联的端口P1-P5。为说明起见,网络交换机是作为一个或多个以太网交换机实现的。
可以创建虚拟网络拓扑结构以表示运行在物理计算资源400上的分布式应用。在此典型实施例中,使用以太网交换机、VLAN和虚拟网络接口(VNIC)来创建虚拟网络拓扑结构。以太网允许分隔为多个VLAN以进行网络隔离。VLAN中的节点可以自由地和同一VLAN中的其他节点通讯,但是不能和该VLAN外的节点直接对话。VLAN可以作为基于端口的VLAN和基于协议的VLAN实现。基于端口的VLAN在单个交换机内实现而基于协议的VLAN可以跨越多个交换机。根据IEEE 802.1Q,基于协议的VLAN是标准化的。IEEE802.1Q标准说明如何标记包以及如何支持VLAN。此标准说明了作为标记头的802.1Q包扩展,因为通过增加标记头至帧将每个包(帧)用802.1Q信息标明(标记)。
将两个或更多计算机放置到一个VLAN中是连接那些计算机到同一物理网络的物理等价。此属性被延伸到在物理网络之上创建任意的虚拟拓扑结构。例如,假设应用调用服务器402(1)、402(3)和402(5)上的三个web服务器以及服务器402(2)上的一个数据库。再者,应用设计师考虑到安全性并可能放置web服务器402(1)、402(3)和402(5)在一个隔离区域中而数据库服务器402(2)在单独的隔离区域中,并通过防火墙连接两个隔离区域。
图5展示虚拟网络拓扑结构500,它可以通过图4的物理资源400构成,以实现应用设计师的目标。虚拟网络拓扑结构500有两个VLANWeb VLAN502和数据库(DB)VLAN 504。Web服务器402(1)、402(3)和402(5)被放置在Web VLAN 502中而数据库服务器402(2)被放置在DB VLAN 504中。部署防火墙到服务器402(4)上,然后它连接到Web VLAN 502和数据库VLAN 504两者。防火墙402(4)创建应用的两个隔离区域,由DMZweb506和DMZDB508表示。
在此例中,防火墙服务器402(4)为两个VLAN的成员。然而,此服务器只有一个接口用于连接网络交换机404的端口P4。为了使得单个物理接口能够支持两个VLAN,VLAN驱动程序被安装在服务器402(4)上以创建两个虚拟网络接口(VNIC),以使得物理网络接口(NIC)看起来连接两个VLAN。从服务器的角度,每个虚拟网络接口看起来象它是物理地连接到单独的网络。
图6更详细地展示防火墙服务器402(4)。它实现VLAN驱动程序602,VLAN驱动程序602在协议栈中被安装到网络接口(NIC)驱动程序604和IP驱动程序606之间。在一个实施例中,VLAN驱动程序602由资源管理器212下载并安装。NIC驱动程序604处理到交换机404的端口P4的物理连接上的所有包流量。VLAN驱动程序602绑定到物理网络接口并在每个物理网络接口上创建一个或多个虚拟网络接口(VNIC)。每个虚拟网络接口表示唯一的VLAN标识。在此例中,VLAN驱动程序602创建两个虚拟网络接口Web VLAN 502的VNIC VLANweb608和DB VLAN 504的VNIC VLANDB610。
在关联的VNIC用对应的VLAN标识符标记向外发送到特殊VLAN的包。应用通过直接绑定到特定的VNIC接口来选取合适的VLAN。然后通过物理接口将包发送到网络交换机。交换机检查VLAN标记并能够确定包应被发送到哪一个LAN。也类似地使用VLAN标识对进入的包进行标记。关联的VNIC接收包,剥离标记,并向上游传输包至IP驱动程序由适合的应用来使用。这允许有单个NIC的服务器加入几个VLAN。
虚拟网络拓扑结构生成服务器210如所示连接到交换机404。使用远程可编程技术,服务器210可以下载并安装在防火墙服务器的VLAN驱动程序(如果尚未出现)然后提供指令以创建虚拟网络拓扑结构的VNIC。应注意如果服务器只是一个VLAN的成员(如,Web服务器402(1)、402(3)和402(5)和数据库服务器402(2)),那么不需要安装VLAN驱动程序602或创建VNIC。网络接口可以指定适合的到交换机端口的物理连接,且该交换机端口可以配置为有适合的VLAN成员资格,转发所有到/来自VLAN上的服务器的流量。换句话说,即使服务器只被用于一个VLAN,安装VLAN驱动程序并创建单个VNIC也是没有缺点的。
对特定的专用设备,资源管理器也许不能在这些设备上安装VNIC。然而,这些设备仍然可以编程为特殊的VLAN。一些设备装备有多个物理端口。通过对连接这些设备的交换机端口编程,这些端口的每一个可以成为不同的VLAN的成员。对其他专用设备,资源管理器程序用设备特定的驱动程序对它们编程,将适合的端口放置在特定的VLAN上。
生成虚拟网络拓扑结构图7展示用于生成虚拟网络拓扑结构以支持分布式应用并部署应用的资源的处理700。处理700如所示为一系列的块,它们表示由计算系统200中的各种计算机执行的操作。操作可以用在各种计算机上执行的软件实现。同样,这些块表示存储在计算机可读媒体上的指令,这些指令可以在处理器上执行以执行关联的操作。
在块702,应用设计师设计部署在分布式计算系统200上的分布式应用的虚拟布局。虚拟布局指定使用什么组件以及那些组件如何互连。例如,为了设计如图5所示的应用,设计师可以指定web服务器、数据库服务器、防火墙的组件,及这些组件之间的连接。
在块704,系统确定分配用于以实例化分布式应用的各种组件的物理资源。例如,系统确定部署多少服务器来支持该应用。此确定部分基于从设计师接收到的输入,这些输入表示这样的参数,如服务的大小、估计有多少用户等等。
在构建应用并确定组件的实例化之后,在虚拟网络拓扑结构生成服务器210上实现的资源管理器212使用虚拟LAN(VLAN)和虚拟网络接口(VNIC)来实现从虚拟网络拓扑结构到物理网络的映射。在块706虚拟网络拓扑结构生成服务器210对每个应用创建至少一个虚拟LAN(VLAN)。单个应用的虚拟网络拓扑结构可以利用不止一个VLAN来建立多个隔离区域,如图5中所示的虚拟网络拓扑结构500的情况。在该例子中,虚拟网络拓扑结构生成服务器210创建两个VLANWeb VLAN 502和DB VLAN 504。两个VLAN将Web服务器402(1)、402(3)、402(5)与数据库服务器402(2)隔离,从而创建两个隔离区域DMZweb506和DMZDB508。
在块708,虚拟网络拓扑结构生成服务器210上的资源管理器212向相应的VLAN部署物理计算资源。换句话说,资源管理器212通过物理网络400(图4)分配物理资源以支持应用的虚拟网络拓扑结构。此部署包括两个子操作,由图7中的块708(1)和708(2)指定。
在块708(1),资源管理器212将网络交换机404的外部交换机端口(即,连接到服务器的端口)分配给该服务器所属的VLAN。外部交换机端口可以配置为有一个或多个VLAN成员资格。
在块708(2),资源管理器212在服务器上创建虚拟网络接口(VNIC)以允许在指定的VLAN上通讯从而使得该服务器可以成为该VLAN的成员。应注意,如果该服务器只是一个VLAN的成员(如,Web服务器402(1)、402(3)、402(5)和数据库服务器402(2)),那么此操作是可选的。在此情况,配置有该VLAN成员资格的交换机端口是足够的,因为该服务只在一个VLAN上通讯。交换机假设来自服务器的所有流量的目的地是单个已配置的VLAN。当服务器为两个或多个VLAN的成员时(如,防火墙服务器402(4)),在服务器上安装VLAN驱动程序。VLAN驱动程序绑定到物理网络接口并在其上创建两个或多个虚拟网络接口(VNIC)。每个虚拟网络接口表示唯一的VLAN标识。使用该VLAN的标识标记VNIC上发送出的包。交换机检查VLAN标记并能够确定包将发送到哪个VLAN。
仍然以此两操作方式部署物理计算资源直到应用完全安装,如判别块710所示。
为了展示物理资源的配置,考虑资源管理器212如何部署图5的虚拟网络拓扑结构的计算机。现引用图5和图6说明此处理。开始,两个VLAN-WebVLAN 502和DB VLAN 504-在操作706创建出。接下来,假设资源管理器212确定增加防火墙402(4)到Web VLAN 502以定义隔离区域DMZweb506。资源管理器212通知交换机404设置端口4引用Web VLAN 502,这在图6中由增加“VLANweb”标识到端口4展示。这代表处理700中的操作708(1)。现在交换机404理解它是隔离区域DMZweb506的部分。然后资源管理器212指示防火墙服务器402(4)的VLAN驱动程序602创建Web VLAN的VNIC,它在图6中由VNIC VLANweb604展示。这代表700中的操作708(2)。在VNIC VLANweb604上传输的包用VLANweb标识来标记并正确地由交换机404在Web VLAN502上路由。
现在,假设资源管理器212增加同一防火墙服务器402(4)到DB VLAN 504来定义另一个隔离区域DMZDB508。资源管理器212通知交换机404设置端口4另外引用DB VLAN 504,这在图6中由增加“VLANDB”标识到端口4展示。这再次代表处理700中的操作708(1)。现在交换机404也是隔离区域DMZDB508的部分并且将接受有VLANDB标识的包。然后资源管理器212指示防火墙服务器402(4)的VLAN驱动程序602创建第二个VNIC,这次对DBVLAN,在图6中由VNIC VLANDB606展示。这亦代表700中的操作708(2)。在VNIC VLANDB606上传输的包用VLANDB标识来标记并正确地由交换机404在DB VLAN 504上路由。
可以重复此处理以连接每个Web服务器402(1)、402(3)和402(5)到WebVLAN 502且连接数据库服务器到DB VLAN 504。如上所述,可以通过简单地配置有适合的VLAN成员资格的对应交换机端口P1、P2、P3和P5来实现这些服务器的增加。不需要在服务器创建虚拟网络接口,因为服务器当前只是一个VLAN的部分。
典型资源管理器API下面一节提供由资源管理器(RM)212提供用于远程配置交换机和服务器的应用编程接口(API)的典型集合。这些API被用来建立VLAN,连接交换机到合适的VLAN,并创建服务器的VNIC以帮助关联的VLAN上的通讯,从而实现从虚拟网络拓扑结构到物理网络连接的映射。应注意,此拓扑结构映射是在现有网络上使用合并技术,而不是使用专门的网络来实现的。因此,有通过其开始的缺省连接性,从而提供根据需要配置新VLAN的基础。
虚拟拓扑结构的构建和释放由通过下面的由RM暴露的核心web方法提供●AllocateVlan()●ConstructVlan()
●AttachComputerToVlan()●DetachComputerFromVlan()●ReleaseVlan()下面列出由RM提供的典型接口,包括这5个web方法的说明Register///<summary>
///用机器“runtimeAddress”上的运行时间注册此资源管理器。
///</summary>
///<param name=″runtimeAddress″>用于注册的运行时间的IP地址。</param>
///<returns>此资源管理器的组件实例。</returns>
///<remarks>
///对重复调用仅返回此资源管理器的组件实例。
///</remarks> public long Register(string runtimeAddress)Unregister///<summary>
///从机器“runtimeAddress”上的运行时间注销此资源管理器。
///</summary>
///<param name=″runtimeAddress″>从其注销的运行时间的IP地址。</param>
///<remarks>
///对重复调用不进行任何动作。
///</remarks> public void Unregister(string runtimeAddress)
RegisterComputer///<summary>
///用网络资源管理器注册计算机及其与网络设备的关系(通常为交换机)。
///</summary>
///<param name=″computer″>注册的计算机的信息</param>
///<remarks>
///必须于在计算机上执行操作之前计算机注册(调用该操作的任何方法需要‘computerId’)///“被管理的”计算机是包含VLAN标记驱动程序并且网络资源管理器有权限更新其虚拟接///口和IP地址设置的计算机。如果不被管理,计算机被移动到指定的VLAN并且不被访问///(调用者必须在该计算机上创建正确的虚拟接口)。
///</remarks> public void RegisterComputer(NrmComputer computer)RegisterDevice///<summary>
///用网络资源管理器注册网络设备。
///</summary>
///<param name=″device″>要注册的设备上的信息。</param>
///<remarks>
///必须于在设备上执行任何操作之前注册该设备。当注册时,将连接到设备并简缩其软件///配置信息。
///</remarks> public void RegisterDevice(NrmDevice device)UnregisterComputer///<summary>
///从网络资源管理器注销计算机///</summary>
///<param name=″computerId″>要注销的计算机的标识符</param>
///<param name=″force″>强制自动清除占用的资源</param>
///<remarks>
///计算机必须先注册并且在被注销前释放所有占用的网络资源。
//////“force”标志将清楚数据库中对设备的任何引用而无需尝试与该设备通讯。
///</remarks> public void UnregisterComputer(long computerId,bool force)UnregisterDevice///<summary>
///从网络资源管理器注销设备///</summary>
///<param name=″deviceId″>要注销的设备的标识符</param>
///<param name=″force″>强制清除占用的资源</param>
///<remarks>
///设备必须先注册并且在被注销前释放所有占用的网络资源。
///
///″force″标志将清楚数据库中对设备的任何引用而无需尝试与该设备通讯。
///</remarks> public void UnregisterDevice(long deviceId,bool force)AllocateVlan///<summary>
///如果可用并由该网络环境支持,则分配新的VLAN从网络资源数据库。如果成功,分配///的VLAN被标记上所有者标识。
///</summary>
///<param name=″ownerId″>分配的资源的所有者标识</param>
///<returns>新分配的VLAN的VLAN标记标识符</returns>
///<remarks>
///分配仅在网络资源数据库中执行而不影响网络。需要调用‘ConstructVlan’以在网络环///境中创建实际的VLAN。
///</remarks> ///<algorithm>
///原有状态///网络构架内的可用VLAN的数量由三个因素确定物理交换机的类型和配置、保留作///内部使用的VLAN的数量、及原先分配的VLAN。虽然当前VLAN的理论范围是1到///4095,实际数量受到VLAN在交换机上的实现的限制。例如,交换机可以只支持1到
///1001、最多分配256个VLAN的范围。交换机结构的知识、保留作内部使用的VLAN///和原先分配的VLAN在持续数据库中进行追踪。
//////说明///1.校验参数合法性。ownerId必须为非0值。
///2.对数据库交易加锁。
///3.检查数据库以确定是否可以分配新的VLAN而不超过当前网络构架允许的最大值。
///4.如果不允许更多的VLAN,抛出异常并释放数据库锁。
///5.在数据库中创建新的行来表示分配的VLAN条目。通过线性扫描现有VLAN条目找///出第一个可用的(未分配的)标识符来确定VLAN标识符。
///6.确认交易。
///7.向调用者返回分配的VLAN标识符。
///</algorithm>
public AllocateVlan(long ownerId)AllocateVlanWithId///<summary>
///如果可用并且由该网络环境支持,则从网络资源数据库分配请求的特定VLAN。如果成///功,用所有者标识标记分配的VLAN。
///</summary>
///<param name=″ownerId″>分配的资源的所有者标识</param>
///<param name=″vlanId″>要分配的VLAN的标识符</param>
///<remarks>
///分配仅在网络资源数据库中执行而不影响网络。需要调用′ConstructVlan′以在网络环境中///创建实际的VLAN。不能分配缺省的VLAN。
///</remarks> public void AllocateVlanWithId(long ownerId,int vlanId)ConstructVlan///<summary>
///通过在网络硬件(交换机)中创建新的VLAN条目并更新数据库中的网络VLAN条目的状态来构建原先分配的VLAN。
///</summary>
///<param name=″vlanId″>要构建的VLAN的标识符</param>
///<remarks>
///必须已通过‘AllocateVlan’方法成功创建VLAN。
///</remarks>
///<devdoc> ///<algorithm>
///原有状态///要构建的VLAN标识符在前面的AllocateVlan()方法调用中已分配,AllocateVlan()方法调用在持续数据库中保留VLAN标识符。所有的网络交换机都在数据库中定义并且可用于配置。
//////说明///1.对数据库进行交易加锁。
///2.vlanId必须以‘allocated’状态存在于数据库中。
///3.对数据库中的每个交换机,使用对该交换机的类型特定的设备驱动程序在该交换机上分配VLAN标识符。
///4.在数据库中更新VLAN的状态为‘constructed’。
///5.确认交易。
///</algorithm>
public void ConstructVlan(int vlanId)AttachComputerToVlan///<summary>
///将计算机加入VLAN并且如果是被管理的,则更新其虚拟接口和寻址。
///</summary>
///<param name=″computerId″>要加入的计算机的标识符</param>
///<param name=″vlanId″>将端口加入其中的VLAN标识符</param>
///<param name=″tagged″>VLAN为标记的并且需要VLAN驱动程序</param>
///<param name=″managed″>目标计算机是被管理的</param>
///<returns>
///用于在指定的VLAN上访问该计算机的IP地址和子网掩码。
///</returns>
///<remarks>
///不可能加入缺省的VLAN。将计算机从所有的VLAN中退出将会置其于缺省VLAN。
//////如果‘tagged’参数为真,那么计算机将以标记模式的加入指定的VLAN。这要求计算机///使用虚拟VLAN驱动程序来创建该VLAN访问网络的虚拟接口。计算机可以存在于多个标///记的VLAN,但只能存在于一个非标记的VLAN。不可能混淆标记的和非标记的VLAN。
//////‘被管理的’计算机是包含VLAN标记驱动程序的计算机并且网络资源管理器有权限更新///该计算机的虚拟接口和IP地址设置。如果不是被管理的,该计算机被移动到指定的VLAN
///并且不能被访问。如果‘mannaged’为真,那么‘tagged’参数必须为真。如果‘managed’///为假而‘tagged’为真,那么调用者负责在该计算机上创建虚拟接口。
///</remarks> ///<algorithm>
///原有状态///将被加入的计算机已对NRM注册以提供计算机上的物理NIC和所连接的交换机端口之///间的连线路径的细节。已成功地构建VLAN标识符。
//////说明///1.对数据库进行交易加锁。
///2.computerId必须和拓扑结构细节存在于数据库中。
///3.vlanId必须以‘constructed’状态存在于数据库中。
///4.使用远程调用,在指定的计算机上对所提供的VLAN标识符加入新的虚拟NIC。
///5.对数据库中的每个交换机,使用该交换机类型特定的设备驱动程序连接与计算机物理///地连接的交换机端口和VLAN标识符。
///6.增加新的‘attached’记录到数据库以指示计算机和VLAN的关系。
///7.确认交易。
///</algorithm>
public string AttachComputerToVlan(long computerId,int vlanId,bool tagged,bool managed)DetachComputerFromVlan///<summary>
///从VLAN断开计算机。
///</summary>
///<param name=″vlanId″>从中断开的VLAN标识符</param>
///<param name=″computerId″>从中断开的计算机标识符</param>
///<param name=″managed″>目标计算机是被管理的</param>
///<remarks>
///不可能从缺省的VLAN中断开计算机。如果managed标志被设置,那么网络资源管理器///需要对VLAN标记驱动程序的远程访问并且虚拟VLAN接口将被从指定的计算机移除。如///果远程计算机失败,那么设置‘managed’参数为‘假’。
///</remarks> ///<algorithm>
///原有状态///将被加入的计算机已对NRM注册以提供计算机上的物理NIC和所连接的交换机端口之///间的连线路径的细节。已成功地构建VLAN标识符。计算机已在前面的///AttachComputerToVlan方法调用中加入VLAN。
//////说明///1.对数据库进行交易加锁。
///2.computerId必须和拓扑结构细节存在于数据库中。
///3.vlanId必须以′constructed′状态存在于数据库中。
///4.‘attached’的记录必须存在于数据库中。
///5.对数据库中的每个交换机,使用该交换机类型特定的设备驱动程序连接与计算机物理///地连接的交换机端口和VLAN标识符。
///6.使用远程调用,对所提供的VLAN标识符去除在指定计算机上的虚拟NIC。
///7.从数据库中去除‘attached’记录以指示计算机和VLAN的关系不再存在。
///8.确认交易。
///</algorithm>
public void DetachComputerFromVlan(long computerId,int vlanId,boolmanaged)AttachComputerToExternal///<summary>
///将计算机加入外部VLAN且如果是被管理的,则更新其虚拟接口和地址。
///</summary>
///<param name=″computerId″>将加入的计算机的标识符</param>
///<param name=″tagged″>VLAN是标记的并且需要VLAN驱动程序</param>
///<param name=″managed″>目标计算机是被管理的</param>
///<returns>
///用于访问指定的VLAN上的计算机的IP地址和子网掩码。
///</returns>
///<remarks>
///如果‘tagged’参数为真,则计算机将以标记的模式连接到指定的VLAN。这要求计算机///使用虚拟VLAN驱动程序创建该VLAN访问网络的虚拟接口。计算机可以存在于多个标记///的VLAN中,但只能存在于单个非标记的VLAN中。不可能混淆标记的和非标记的///VLAN。
//////′被管理的′计算机是包含VLAN标记驱动程序的计算机并且网络资源管理器有权限更新///该计算机的虚拟接口和IP地址设置。如果不是被管理的,该计算机被移动到指定的VLAN///并且不能被访问。如果′mannaged′为真,那么′tagged′参数必须为真。如果′managed′///为假而′tagged′为真,那么调用者负责在该计算机上创建虚拟接口。
///</remarks> public string AttachComputerToExternal(long computerId,bool tagged,boolmanaged)DetachComputerFromExternal///<summary>
///从外部VLAN断开计算机。
///</summary>
///<param name=″computerId″>从中断开的计算机的标识符</param>
///<param name=″managed″>目标计算机是被管理的</param>
///<remarks>
///如果managed标志被设置,那么网络资源管理器需要对VLAN标记驱动程序的远程访问并///且虚拟VLAN接口将被从指定的计算机移除。如果远程计算机失败,那么设置′managed′///参数为′假′。
///</remarks> public void DetachComputerFromExternal(long computerId,bool managed)ReleaseVlan///<summary>
///释放原先分配/构建的VLAN。如果已构建,从网络构架中删除VLAN资源。
///</summary>
///<param name=″vlanId″>将释放的VLAN的标识符</param>
///<remarks>
///VLAN必须已通过‘AllocateVlan’成功地创建。
///</remarks>
///<devdoc> ///<algorithm>
///原有状态///已成功构建VLAN标识符。没有计算机连接记录引用此VLAN标识符。
//////说明///1.对数据库交易加锁。
///2.vlandID必须以‘constructed’状态存在于数据库中。
///3.对数据库中的每个交换机,使用对该交换机类型特定的设备驱动程序删除VLAN标识///符。
///4.从数据库中移除VLAN记录以指示该VLAN标识符已被释放。
///5.确认交易。
///</algorithm>
public void ReleaseVlan(int vlanId)ReleaseComputerToDiscovery///<summary>
///释放计算机占用的所有网络资源并将该计算机返回给‘Discovery’VLAN。返回该计算///机的IP地址。
///</summary>
///<param name=″computerId″>在HRM中要释放的计算机的标识符</param>
///<param name=″managed″>目标计算机是被管理的</param>
///<returns>计算机在Discovery VLAN中的IP地址</returns>
///<remarks>
///如果该计算机至少有一个创建的VLAN,那么它将返回由网络资源管理器设置的静态IP///地址,否则它将返回由硬件资源管理器提供的初始IP。
///</remarks>
///<devdoc>
///写出此代码以支持返回计算机到Discovery VLAN的PcFactory需求以允许它远程地重启///计算机来强制执行PXE引导序列。
///</devdoc> public string ReleaseComputerToDiscovery(long computerId,bool managed)ReleaseResourcesByOwner///<summary>
///释放和特定所有者关联的所有网络资源。
///</summary>
///<param name=″ownerId″>表示资源所有者的对象</param>
///<devdoc> public void ReleaseResourceByOwner(long ownerId)ReleaseResourcesByComputer
///<summary>
///释放和特定计算机关联的所有网络资源。
///</summary>
///<param name=″computerId″>表示该计算机的标识符</param>
///<param name=″managed″>目标计算机是被管理的</param>
///<remarks>
///释放所有连接到此计算机的VLAN。通常由清除逻辑用来从网络中移除计算机。如果///managed标志被设置,那么网络资源管理器需要对VLAN标记驱动程序的远程访问并且虚///拟VLAN接口将被从指定的计算机移除。如果远程计算机失败,那么设置′managed′参数///为′假′。
///</remarks> public void ReleaseResourcesByComputer(long computerId,bool managed)QueryConfiguration///<summary>
///返回网络资源管理器的配置设置的信息。
///</summary>
///<returns>NrmConfigruation值</returns> public NrmConfiguration QueryConfiguration()QueryComputer
///<summary>
///返回特定的注册的网络计算机的信息。
///</summary>
///<returns>NrmComputer值</returns> public NrmComputer QueryComputer()QueryComputerIpAddress///<summary>
///查询特定的VLAN上的计算机的IP地址。
///</summary>
///<param name=″computerId″>查询的计算机的标识符</param>
///<param name=″vlanId″>查询IP地址所属的VLAN标识符</param>
///<returns>
///用于在指定VLAN上访问该计算机的IP地址。
///</returns>
///<remarks>
///对与计算机连接的每个VLAN,将有固定的(静态)IP地址用于通过特定VLAN远程///访问该计算机。
///</remarks> public string QueryComputerIpAddress(long computerId,int vlanId)QueryComputers///<summary>
///返回网络资源管理器的数据库内的所有注册的网络计算机。
///</summary>
///<returns>NrmComputer值的数组</returns> public NrmComputer[] QueryComputers()QueryDevice///<summary>
///返回特定的注册的网络设备的信息。
///</summary>
///<returns>NrmDevice值</returns> public NrmDevice QueryDevice(long deviceId)QueryDevices///<summary>
///网络资源管理器的数据库内的返回所有注册的网络设备。
///</summary>
///<returns>NrmDevice值的数组</returns>
///<remark>通常用于诊断和/或管理工具。</remark> public NrmDevice[] QueryDevices()QueryExternalVlanId///<summary>
///检索外部VLAN的VLAN标识符。
///</summary>
///<returns>外部VLAN的标识符</returns> public int QueryExternalVlanId()QueryVlans///<summary>
///检索所有分配的VLAN的状态。
///</summary>
///<returns>NetworkVlan行的数据集</returns>
///<remark>通常用于诊断和/或管理工具。</remark> public DataSet QueryVlans()UpdateComputerToStatic///<summary>
///将VLAN-0虚拟接口从其缺省的DHCP状态更新为使用静态IP地址。此命令特定于配置///运行虚拟VLAN/MUX驱动程序的新映象的“被管理的”计算机的联网的序列。
///</summary>
///<param name=″computerId″>要更新的计算机的标识符</param>
///<remarks>
///为了支持PXE/ADS映象环境,新计算机节点PXE启动并被映象到使用DHCP来获取它///们的IP地址的非标记的VLAN上。为了向NRM提供在晚些时候(在移除所有VLAN
///之后)访问计算机节点的方法,将DHCP地址更新为不冲突的地址范围内的静态IP地址。
//////用于产生IP地址的VLAN编号是“静态”VLAN并且在数据库中的全局网络配置条目中///定义。由于“静态的”VLAN跨越多个地址范围,使用较小的子网掩码并且也将其定义///在数据库中的全局网络配置条目中。
//////此调用不能使用DHCP地址来访问计算机并且原先创建的虚拟NIC接口必须被用来访///问。
///</remarks> public void UpdateComputerToStatic(long computerId)Status///<summary>
///由外部服务使用来获取此Web服务的当前状态。
///</summary>
///<returns>正常则返回0,未注册则返回1</returns>
///<remarks>
///由监控服务用于检查可用性。
///</remarks> public int Status()结论虽然已用特定于结构化特性和/或方法论的动作的语言对本发明进行了说明,应理解在后附的权利要求中定义的本发明不一定限制于所述的特定特性或动作。相反,特定特性和动作是作为实现所请求的本发明的典型形式来揭示的。再者,这些权利要求只是可能范围和主体的典型,并且通过很多专利申请经由此临时申请而完善,在此所述的特性的很多组合或子组合应被视为权利要求的主体。
权利要求
1.一种方法,其特征在于,所述方法包括提供分布式应用;及在物理分布式计算系统上构建分布式应用的虚拟网络拓扑结构而无需重新配置分布式系统的物理连接。
2.一种方法,其特征在于,所述方法包括构建分布式应用的虚拟网络拓扑结构;及根据所述虚拟网络拓扑结构自动地和远程地在包括多个计算机和网络交换机的物理分布式计算系统上部署分布式应用而无需重新配置分布式系统的物理连接。
3.如权利要求2所述的方法,其特征在于,所述构建包括为分布式应用创建至少一个虚拟局域网(VLAN)。
4.如权利要求3所述的方法,其特征在于,所述部署包括远程地指示分布式计算系统的物理资源连接到所述应用的VLAN。
5.如权利要求3所述的方法,其特征在于,所述部署包括向VLAN分配网络交换机;在被用来支持分布式应用的每个计算机上构成虚拟网络接口;及将虚拟网络接口和VLAN关联。
6.一个或多个计算机可读媒体,所述媒体存储计算机可执行指令,所述指令在被执行时执行如权利要求2所述的方法。
7.一种方法,其特征在于,所述方法包括生成多个在同一个分布式检索系统上支持的关联的分布式应用的虚拟网络拓扑结构;对每个虚拟网络拓扑结构至少创建一个虚拟局域网(VLAN);及以使分布式应用能够通过互相隔离的关联的VLAN进行通讯的方式,自动地部署分布式计算系统的物理资源到虚拟网络拓扑结构。
8.如权利要求7所述的方法,其特征在于,所述部署包括远程地向VLAN分配分布式计算系统的网络交换机;及远程地指示用于支持特殊的分布式应用的每个计算机创建虚拟网络接口并将虚拟网络接口和与特殊的分布式应用关联的VLAN相关联。
9.一个或多个计算机可读媒体,所述媒体存储计算机可执行指令,所述指令在被执行时执行如权利要求7所述的方法。
10.在有通过交换机网络互连的多个计算机的分布式计算系统中的一种方法,其特征在于,所述方法包括创建有VLAN标识的虚拟局域网(VLAN);及对每个和VLAN关联的计算机,向交换机网络与所述计算机相连的交换机端口分配VLAN标识;及在计算机上创建虚拟网络接口并将虚拟网络接口和VLAN关联。
11.如权利要求10所述的方法,其特征在于,所述VLAN包括有第一个VLAN标识的第一个VLAN,并进一步包括创建有第二个VLAN标识的第二个虚拟局域网(VLAN);及对每个和第二个VLAN关联的计算机,向与所述计算机相连的交换机端口分配第二个VLAN标识;及在计算机上创建虚拟网络接口并关联虚拟网络接口和VLAN。
12.一个或多个计算机可读媒体,所述媒体存储计算机可执行指令,所述指令在被执行时执行如权利要求10所述的方法。
13.在有通过交换机网络互连的多个计算机的分布式计算系统中,一种部署第一个和第二个虚拟局域网(VLAN)到所述分布式计算系统上的方法,其特征在于,所述方法包括对连接到第一个和第二个VLAN两者的计算机,向交换机网络与所述计算机相连的交换机端口分配和第一个VLAN关联的第一个VLAN标识;在计算机上创建第一个虚拟网络接口并将第一个虚拟网络接口和第一个VLAN关联;向所述交换机端口分配和第二个VLAN关联的第二个VLAN标识;及在计算机上创建第二个虚拟网络接口并将第二个虚拟网络接口和第二个VLAN关联。
14.如权利要求13所述的方法,其特征在于,所述第一个VLAN的数据包通过交换机端口并由计算机上的第一个虚拟网络接口处理,并且所述第二个VLAN的数据包通过交换机端口并由计算机上的第二个虚拟网络接口处理。
15.一个或多个计算机可读媒体,所述媒体存储计算机可执行指令,所述指令在被执行时执行如权利要求13所述的方法。
16.分布式计算系统中的计算机,其特征在于,所述计算机包括由网络的物理连接使用的网络接口;及绑定到所述网络接口的虚拟局域网(VLAN)驱动程序,所述VLAN驱动程序响应于远程指令以在所述网络接口上创建一个或多个虚拟网络接口,每个虚拟网络接口和唯一的VLAN关联。
17.如权利要求16所述的方法,其特征在于,所述VLAN驱动程序对关联的第一个和第二个VLAN创建第一个和第二个虚拟网络接口,且在网络接口接收和第一个VLAN关联的数据包并由第一个虚拟网络接口处理,并且在网络接口接收和第二个VLAN关联的数据包并由第二个虚拟网络接口处理。
18.安装在连接到局域网(LAN)的计算机上的软件驱动程序,其特征在于,所述软件驱动程序包括在物理网络接口之上创建虚拟网络接口的方法,所述虚拟网络接口与所述LAN支持的虚拟LAN(VLAN)关联;及指示通过物理网络接口发送到所述LAN或从所述LAN接收的数据包通过适合的虚拟网络接口,以使得计算机可以通过所述物理网络接口加入多个VLAN的方法。
19.一种操作系统,其特征在于,所述操作系统包括控制物理网络接口的网络接口驱动程序;处理通过物理网络接口接收的数据包的协议驱动程序;及将如权利要求18所述的软件驱动程序插入到所述网络接口驱动程序和协议驱动程序之间,以帮助数据包在物理网络接口和协议驱动程序之间的流转。
20.一个或多个计算机可读媒体,其特征在于,所述媒体存储计算机可执行指令,所述指令在被执行时执行多种功能,所述功能包括帮助设计在分布式计算系统上支持的分布式应用的虚拟网络拓扑结构,所述分布式计算系统包括计算机和网络交换机;对分布式应用的每一个创建至少一个虚拟局域网(VLAN);对每个和特殊的VLAN关联的计算机,向交换机网络与所述计算机相连的交换机端口分配和所述特殊的VLAN关联的VLAN标识;及对每个和多个VLAN关联的计算机,在计算机上创建多个虚拟网络接口并关联虚拟网络接口和多个VLAN中与其对应的一个,以使得计算机可以被用于支持多个分布式应用程序。
21.一个或多个计算机可读媒体,所述媒体存储计算机可执行指令,所述指令在被执行时执行多种功能,所述功能包括在物理分布式计算系统上构建分布式应用的虚拟网络拓扑结构而无需重新配置分布式计算系统的物理连接。
22.一种系统,其特征在于,所述系统包括位于作为分布式计算系统的一部分的计算机上驱动程序,所述计算机通过网络交换机连接到所述分布式计算系统;及远离所述计算机的资源管理器,向网络交换机分配虚拟局域网(VLAN)并指示驱动程序在物理网络接口之上创建虚拟网络接口,其中虚拟网络接口和VLAN关联。
23.如权利要求22所述的系统,其特征在于,所述资源管理器配置为在所述计算机上下载并安装驱动程序。
24.如权利要求22所述的系统,其特征在于,所述资源管理器使用应用编程接口来建立VLAN和所述虚拟网络接口。
25.如权利要求22所述的系统,其特征在于,所述网络交换机有单独的的端口,且所述资源管理器向计算机与其物理地连接的特殊端口分配VLAN标识,以使得该端口将接受和由VLAN标识所识别的VLAN关联的数据包。
26.在包括计算机和网络交换机的分布式计算系统中,资源管理器的应用编程接口,所述应用编程接口在计算机可读媒体上实现并且有执行下述功能的方法分配新的虚拟局域网(VLAN);通过在网络交换机上创建新的VLAN条目来构建原先已分配的VLAN;通过指示在计算机上创建虚拟网络接口,连接计算机到所述VLAN并向VLAN分配所述虚拟网络接口;从所述VLAN断开计算机;及释放原先已分配的VLAN。
全文摘要
用于自动地通过物理计算系统创建任意的虚拟网络拓扑结构的结构和方法。所述结构和方法允许在同一物理计算系统上自动化及远程地安装多个分布式应用而无需物理地连接计算机并配置系统内的布线。
文档编号G06F15/16GK1703016SQ20041002861
公开日2005年11月30日 申请日期2004年3月4日 优先权日2003年3月6日
发明者A·海的里, K·D·西多拉 申请人:微软公司