用于分布式虚拟交换机的私有虚拟局域网方法和系统的制作方法

文档序号:7895296阅读:181来源:国知局
专利名称:用于分布式虚拟交换机的私有虚拟局域网方法和系统的制作方法
技术领域
本发明一般涉及计算机网络,具体涉及虚拟局域网(VLAN)。更具体地,本发明涉及由分布式虚拟交换机支持的私有VLAN。
背景技术
虚拟局域网(VLAN)是本领域所公知的,并且表示一种广播域,在该广播域中客户端(典型地为虚拟客户端)可以向存在于同一 VLAN中的其他客户端发送帧。私有VLAN(PVLAN)表示该虚拟网络范型的扩展,其在网络中提供附加的安全性,以防止对正在通信的业务的监视,以及具有其他优点。私有VLAN (PVLAN)是在大多数基于硬件和软件的层2交换机上支持的标准特征集。将分布式虚拟交换机(DVS)引入到PVLAN实施中对虚拟连网范 型添加了新的复杂度层。

发明内容
本发明公开了一种方法、数据处理系统和计算机程序产品,其提供支持配置有群体、隔离和混杂子域的一个或多个私有虚拟局域网(PVLAN)的分布式虚拟交换机(DVS)的虚拟端口内的分组的高效处理。主机系统的虚拟化管理器的分组处理逻辑在具有三个位映射(bitmap)阵列的虚拟端口的DVS的进入或离开路径上检测分组,所述虚拟端口用于处理虚拟逻辑局域网(VLAN)内的分组。所述逻辑检查分组的VLAN标识符(VID),以基于对应的位映射阵列内的偏移位置确定所述端口是否支持该VLAN。进入VLAN位映射阵列偏移位置和离开VLAN位映射阵列偏移位置都对应于VID的值,并且在端口上配置VLAN期间设定在特定位映射阵列内。当VLAN被端口支持时,该逻辑使得分组能够被端口处理。否则,该逻辑丢弃该分组。剥离(strip)位映射阵列指示在端口的离开路径上转发分组之前何时应该移除该分组的VID。在所述实施例中,在具有虚拟化管理器的主机数据处理系统(主机系统)内执行所述方法,所述虚拟化管理器配置和使能虚拟化计算环境。虚拟化计算环境包括一个或多个虚拟机以及层2分布式虚拟交换机(DVS)的本地可访问组件,该DVS包括多个在至少一个虚拟局域网(VLAN)内支持分组传输的虚拟端口。虚拟化管理器的处理资源执行虚拟化管理器的分组处理逻辑/代码,所述逻辑/代码使得虚拟化管理器执行各种功能处理,所述功能处理使得能够利用从分组取回到的VLAN ID以及用于虚拟端口的进入路径上的分组的进入位映射阵列和用于离开路径上的分组的离开位映射阵列,经由虚拟端口进行分组转发。当在特定位映射阵列内未识别出该VLAN ID,则丢弃分组。仅在VID识别了设定了在位映射阵列中的对应偏移位置的VLAN时,进入路径或离开路径上检测的分组才允许由端口处理。所述虚拟端口是访问端口和上行链路端口中的一个或多个,并且每个端口包括进入VLAN位映射,其包含对应于在到所述端口的进入路径中被所述端口支持的VLAN的VID的设定的偏移位置;离开VLAN位映射,其包含对应于在所述端口的离开路径中被所述端口支持的VLAN的VID的设定的偏移位置;以及剥离VLAN位映射,其包含对应于识别下述VLAN的VID的设定的偏移位置,其中对于所述VLAN,在从所述端口转发接收到的分组之前要在离开路径上移除所述VID。每个虚拟端口还包括端口 VLAN ID (PVID),其指示添加到所述进入路径上的未加标签分组的VLAN标签。所述方法则包括响应于在所述进入路径上接收到的分组不具有VLAN标签,自动地利用所述虚拟端口的PVID对所述分组加标签;以及响应于在所述离开路径上检测到的分组添加了 PVID,在转发所述分组之前自动地将所述PVID从所述分组移除。所述方法的一个实施例还包括检查是否设定了在所述虚拟端口的剥离位映射阵列内的剥离阵列偏移位置,所述剥离阵列偏移位置指示所述VLAN被所述端口支持以及所述VID应该在所述分组被转发之前被移除,其中所述剥离阵列偏移位置对应于所述VID的值,并且在所述端口上配置所述VLAN期间在所述剥离位映射阵列内设定;以及响应于设定
了所述剥离阵列偏移位置,从所述分组移除所述VID,并将没有VID的所述分组转发到所述分组识别的VLAN的目的地设备。在一个实施例中,所述进入位映射阵列、离开位映射阵列和剥离位映射阵列中的每一个是包括N个位条目的一维阵列,其中每个位对应于从O至N-I的偏移位置,N是整数,其表示能够由所述虚拟端口使用值的范围为从O至N-I的全局唯一的标识符(ID)支持的单独VLAN的最大数目;所述进入位映射阵列、离开位映射阵列和剥离位映射阵列之一中的偏移位置在该位位置在相应位映射阵列中的值具有值一(I)时被设定;以及所述检查是否设定了所述偏移位置的处理包括将所述偏移位置处的值与一(I)进行比较,并当所述值等于一(I)时指示设定了所述偏移位置。最后,所述方法的实施例使得虚拟化管理器能够在配置新虚拟端口时产生所述三个位映射的组,并分配全局唯一的端口 ID,以及修改/更新虚拟端口的位映射以支持多个VLAN,反之亦然。该三个位映射的组被分配给每个被配置和更新来支持添加附加VLAN的虚拟端口,以使得能够高效地处理在虚拟端口的进入路径和离开路径上检测到的分组。以上总结包含细节的简化、概括以及省略,并且不意在作为要求权利的主题的全面描述,而是意在提供与其关联的某些功能的简要概述。要求权利的主题的其它系统、方法、功能、特征和优点,对于本领域的技术人员而言,在查阅了以下附图和详细文字描述后将是明显的或将变得明显。本发明的以上以及其它目的、特征和优点在以下详细文字描述中将变得明显。


结合附图阅读所述实施例,其中图I是示出根据一个实施例的虚拟计算机网络的拓扑的图,所述虚拟计算机网络配置有一个或多个虚拟交换机;图2是根据一个实施例的物理和虚拟化组件的层视图,所述物理和虚拟化组件构成具有分布式虚拟交换机的示例虚拟计算机网络;图3是根据一个实施例的物理服务器的组件的框图,所述物理服务器被虚拟化来提供多个虚拟机和虚拟服务器;图4是根据一个实施例的、包括私有局域网(PVLAN)域的虚拟网络中的层2分布式虚拟交换机(DVS)在多个物理主机上的示例分布的框图5A示出了根据一个实施例的、配置有位映射阵列的示例PVLAN内存在的不同端Π ;图5B是示出根据一个实施例的、在图5A的PVLAN内分组从一个类型的端口到另一类型的可传输性的表;图6是根据一个实施例的、示出针对接收的VLAN标识符(ID)被添加到分布式虚拟交换机(DVS)的虚拟端口而产生和更新进入位映射、离开位映射和剥离位映射阵列的方法的高层逻辑流程图;图7示出了根据一个实施例的、由图4的方法所产生并被用于使得能够经由DVS在PVLAN内进行高效路由的示例进入、离开和剥离位映射阵列;图8A和图8B是根据一个实施例的、分别示出利用分组的VLAN ID和位映射阵列(诸如图7的位映射阵列)而通过DVS处理接收的分组的方法的不同实施例的高层逻辑流程图;图9是示出根据一个实施例的、利用位映射阵列对在虚拟端口的进入路径上和离开路径上检测/接收到的分组进行处理的处理图。
具体实施例方式示例性实施例提供了一种方法、数据处理系统和计算机程序产品,其使得能够在虚拟化计算环境中的分布式虚拟交换机(DVS)的虚拟网络端口处进行高效分组处理。在虚拟平台中执行该方法,在该虚拟平台中,分组处理逻辑被增强,以使能在私有虚拟局域网(PVLAN)的虚拟端口内更高效的分组处理。根据所述实施例的一个或多个方面,分组处理逻辑使得虚拟和物理客户端机器都能够利用分配到每个虚拟端口的PVID和一组位映射更高效地在分布式虚拟网络上相互通信。具体地,该方法的所提供的方面包括在DVS的第一虚拟端口处检测分组的传入,其中第一虚拟端口被分配为使得能够向和从一个或多个VLAN 内的设备路由接收的分组;从分组的头部取回(retrieve)VLAN ID (VID),其中VLAN ID是被分配为相对于可以被第一虚拟端口支持的多个VLAN的其他VLAN唯一地识别特定VLAN的值。该方法接着使得能够利用从分组取回到的VLAN ID以及用于虚拟端口的进入路径上的分组的进入位映射阵列和用于虚拟端口的离开路径上的分组的离开位映射阵列,经由虚拟端口进行分组转发。当在特定位映射阵列内未识别出VLAN ID时,丢弃分组。仅在VID识别了在位映射阵列中设定了对应偏移位置的VLAN时,在进入路径上或离开路径上检测到的分组允许由端口处理。此外,在下面更详细描述的一个实施例中,当在端口的离开路径上检测到分组时,该方法包括检查是否设定了虚拟端口的剥离位映射阵列内的剥离阵列偏移位置,指示VLAN被端口支持以及在将分组转发前应该移除VID,其中剥离阵列偏移位置对应于VID的值并在端口上配置VLAN期间在剥离位映射阵列内设定;以及响应于设定了剥离阵列偏移位置,从分组移除VID,并将没有VID的分组转发到由分组识别的VLAN的目的地设备。本方法的一个或多个实施例使得虚拟化管理器能够在配置新虚拟端口时生成三个位映射的组并分配全局唯一的端口 ID,以及能够修改/更新虚拟端口的位映射以支持多个VLAN,反之亦然。该三个位映射的组被分配到被配置和更新来支持添加附加VLAN的每个虚拟端口,以使得能够高效地处理在虚拟端口的进入和离开路径上检测到的分组。
在本发明的示例实施例的以下详细说明中,以足够的细节描述了可以实践本发明的特定示例实施例,以使得本领域的技术人员能够实践本发明,并且应该理解,可以采用其他实施例,并且在不偏离本发明的精神和范围的情况下可以进行逻辑、架构、程序、机械、电学和其他改变。因此,以下详细描述不被认为是限制性的,并且本发明的范围由所附权利要求及其等同物限定。在附图的不同视图的描述中,相似的元件被提供与之前的附图相似的名称和附图标记。提供分配给元件的特定附图标记仅是辅助说明而不意在隐含对所述实施例的任何限制(结构或功能或者其他方面的)。应该理解,特定组件、设备和/或参数名称(诸如这里所描述的执行工具/逻辑/固件的那些)的使用仅是作为示例,而不意在隐含对发明的任何限制。因此,本发明可以利用用于描述这里的组件/设备/参数的不同名称/术语来实施,没有限制。 在描述实施例的一个或多个元素、特征或概念时对任何特定协议或私有名称的引用仅是作为一个实施例的示例而提供,并且这样的引用不限制本发明扩展到使用不同元素、特征或概念的实施例。因此,这里使用的每个术语在使用所述术语的上下文中被给予其最广泛的解释。如这里所使用的,术语“进入(ingress)”是指分组在该端口进入交换机(在所述实施例中时DVS),而术语“离开”是指分组使用该端口从交换机出去。进入和离开被用于分别指端口的进入路径和该端口的离开路径。如下面进一步描述的,本发明的功能特征的实施被提供在处理设备/结构内,并涉及硬件、固件的组合以及若干软件层构成(例如程序代码)的使用。所述的附图示出了数据处理架构的特定示例内的硬件组件和软件组件。图示和描述的实施例假设系统架构可以被扩展到大得多的数据处理系统和/或网络。现在特别参照图1,描述了示例虚拟化网络结构的框图,所述虚拟化网络结构诸如数据中心或企业网络,并且其也可以被传统地称为“云”。虚拟化网络结构100包括底层的物理网络105。物理网络105可以包括多个机器/设备(如物理网络105内一般地示出的),包括一个或多个物理服务器、路由器、适配器、数据库、以及物理交换机,它们彼此互联并经由一个或多个类型/形式的连接结构(由虚线指示)彼此通信。虚拟化网络结构100还包括网络虚拟化层120,其由一个或多个网络系统管理器(hypervisor) 110产生,以支持多个虚拟局域网(VLAN) 130。虚拟机/设备驻留于具有物理硬件资源的虚拟化平台(诸如服务器)上(见图2和图3),所述物理硬件资源经由虚拟化管理器(见图3)的一个或多个实施提供,诸如国际商业机器(IBM)公司的强劲系统管理器(Power Hypervisor (PHYP))。物理网络105由物理转发元件构成。转发元件可以是具有标准转发硅的传统硬件交换机(例如交换机107)、以及诸如系统管理器内包括的虚拟交换机。交换机提供对协议的支持,以允许调整他们的流表来支持分布虚拟网络的实施。物理交换机107可以包括任何商业可得或私有的交换机,其可以包括OpenFlow或其他标准或私有协议。物理网络105中的转发元件被网络系统管理器110用于实施分布虚拟交换机(DVS),诸如DVS 145a、145b。如这里所述的,DVS提供交换机的逻辑视图,其与底层的硬件分离并可以延伸跨越多个物理交换机或多个系统管理器。虚拟交换机145a、145b与虚拟机通信并且还可以具有与物理NIC的物理连接,而物理交换机107与物理主机通信。如这里所提供的,DVS 145由网络系统管理器110保持,并可以延伸跨越子网。每个DVS 145可以包括多个物理主机或物理网络端口,并且多个DVS可以共享同一物理硬件。网络系统管理器110提供供给(provisioning)功能,其创建和保持网络虚拟化层120,并且系统管理器110也创建和保持逻辑转发元件并将这些元件映射到底层的硬件。在一个实施例中,网络系统管理器110可以由控制器(例如管理控制台115)使用网络操作系统实施。网络虚拟化层的控制由网络控制管理器150 (其被一般显示为与管理控制台115关联)提供。网络控制管理器150是软件工具,其在管理控制台115 (其可以是连接到网络系统管理器110的物理或虚拟设备)上执行,并且网络控制管理器150被用于设立各种虚拟设备以及向这些虚拟设备供给资源。网络虚拟化层120使得DVS145内的虚拟端口能够被抽象化和使用(物理网络105内的)物理网络交换机,以在VLAN (例如,PVLAN 140)的设备之间传递分组。因此,网络系统管理器110保持映射,该映射使得在路由单个VLAN的设备之间路由通信,并使得能够将来自或去往VLAN的分组路由到外部设备。在上述虚拟化网络结构内,示出了示例性私有VLAN (PVLAN)HO和VLAN 142。应理解,这两个VLAN仅表示潜在的大量VLAN (其可以包括多个PVLAN 140和多个VLAN 142) 中的两个。可以经由各个分布虚拟交换机(DVS) 145支持PVLAN 140和VLAN 142两者,所述DVS 145可以跨越多个主机设备,并且每个DVS 145提供多个被分配到各种虚拟机的虚拟端口,所述各种虚拟机在PVLAN 140或VLAN 142内互连。本领域的技术人员知道,随着虚拟化计算范型的快速扩展和向云计算的进展,大集合(hosting)服务或企业网络可以在若干地点(其可以地理上分散,例如,旧金山、纽约等)保持多个数据中心或网络。因此,将来自这些地理上分散的地点内的客户端机器/设备连接到单个虚拟局域网(VLAN)中需要使用一个或多个分布虚拟交换机(DVS)。这些DVS(例如DVS 145)经由网络系统管理器110产生的网络虚拟化层120支持。每个DVS 145继而提供多个虚拟端口,所述多个虚拟端口被用于支持去往/来自一个或多个VLAN 130、或一个或多个VLAN 130内的分组传输,所述一个或多个VLAN130包括一个或多个私有VLAN(PVLAN) 140 和 / 或一个或多个 VLAN 142。现在参照图2,其示出了描绘图I的物理硬件层和网络虚拟化层的一些组件的扩展视图。应该理解,图2中示出的计算资源、层和功能仅意在示例性的,主张权利的发明的实施例不限于此。如所描绘的,物理层200包括各种物理硬件和软件组件,其可以被用于例示在虚拟化网络结构内使用的虚拟实体。作为示例,硬件组件可以包括大型机(例如,IBM zSeries 系统)、精简指令集计算机(RISC)架构服务器(例如,iBMpSeries 系统)、iBMxSeries 系统、iBMBladeCenter 系统、存储设备(例如,闪存驱动器、磁盘驱动器、光盘驱动器、磁带驱动器等)、物理网络和连网组件(例如路由器、交换机等)。软件组件可以包括操作系统软件(例如,AIX、Windows, Linux等)、网络应用服务器软件(例如,iBM^WebSphere 应用服务器软件,其包括网站服务器软件)、以及数据库软件(例如IBM DB2 数据库软件)。IBM>zSeries>pSeries>xSeries>BladeCenter>WebSphere 和 DB2是国际商业机器公司在全球许多管辖地的注册商标。Windows是微软公司的商标,Linux是Linux Torvalds 的商标。驻留于物理层205中的计算资源由一个或多个虚拟机监控器(VMM)或系统管理器(例如,网络系统管理器110)虚拟化和管理。如所示的,虚拟化层220包括多个虚拟实体(例如虚拟服务器、虚拟存储器、虚拟网络(包括虚拟私有网络))、虚拟应用和虚拟客户端。可以通过在虚拟化网络环境内连接的客户端设备147访问这些虚拟实体,其是物理层200中的底层资源的抽象。客户端设备147可以是实际设备或虚拟设备(例如,虚拟机,VM)。图3示出了已经被虚拟化来产生多个虚拟客户端设备的示例计算机服务器平台,所述多个虚拟客户端设备中的一个或多个是由具有多个虚拟端口的DVS支持的VLAN或PVLAN内的客户端设备。这里,服务器300可互换地称为主机或主机设备或主机数据处理系统。因此,主机设备300包括硬件组件和软件/固件/OS组件,其被逻辑分区,以创建多个虚拟机(VM)或操作系统(OS)分区,所述分区可被配置为客户端逻辑分区(LPAR)和/或虚拟I/O服务器(VIOS)。为了简单,所有客户端LPAR在下文中都称为VM,其中作为示例示出VM1220a和VM2220b。还示出单个VIOS 230作为参考。然而,应该理解,在一个或多个实施方式中,系统可以仅利用VM配置,即没有任何VI0S。物理层310包括一个或多个处理器302、一个或多个存储器304、和逻辑(数据)存储器31。该一个或多个处理器302经由总线、互连/交换机或互连结构(一般地称为互连结构305)与一个或多个存储器304和本地存储器312互连。可以跨大范围的互连结构分布的组件的特定内部连接性与所述的实施例 不相关,并且不再提供关于系统硬件组件之间的特定类型的互连性的细节。在物理层310中还包括的是一个或多个物理网络接口(NI) 308 (也传统地称为网络适配器),其支持/使能主机系统300 (以及VM 220a/220b和VI0S230)到外部网络(例如网络105,图I)的物理连接。此外,物理层310包括多个I/O适配器和I/O设备306,其为主机系统300提供I/O接口。I/O适配器306是物理层适配器,该物理层适配器使得主机系统300能够支持经由I/O接口与本地连接的和远程连接(网络化)的I/O设备的I/O操作。I/O适配器的示例包括外围组件接口(PCI)、PCI-X或高速PCI (PCI EXpress)适配器、以及小型计算机系统互连(SCSI)适配器,等等。主机系统300被逻辑分区,使得不同的I/O适配器306被虚拟化,并且虚拟I/O适配器可以接着被唯一地分配给不同的逻辑分区(VM和/或VI0S)。逻辑上位于物理层310之上的是虚拟化管理器320,在一个实施例中,其可以是强劲系统管理器(PHYP),IBM公司的商标。虽然作为PHYP引入,但完全可以理解,其他类型的虚拟化管理组件可以被使用,并且同等地适用于各种所描述的实施例的实施方式。虚拟化管理器320可以具有在物理层310内或者位于相对于虚拟化管理器320的其他地方的关联的服务处理器(未示出)。服务处理器可以被用于为一个或多个逻辑分区提供各种服务。如所示出的,存在于物理层310之外的硬件管理控制器(HMC)315经由虚拟化管理器320与主机系统300通信。可以通过HMC 315控制不同逻辑分区的操作,HMC 315可以是独立的数据处理系统,系统管理员(administrator)可以从该独立的数据处理系统执行各种功能,诸如将资源重分配到不同的逻辑分区。主机系统300还包括多个用户层的逻辑分区(LPAR),其中示出了两个虚拟机(VM1220a和VM2220b)和一个虚拟I/O服务器(VI0S)230。根据各种示例实施例,主机系统300支持多个客户端和在虚拟环境中创建的其他功能操作系统(OS)分区。每个LPAR接收特定虚拟硬件和OS资源(包括虚拟CPU资源、虚拟存储器资源、虚拟OS)的分配,并访问所分配的本地存储器。每个LPAR包括相应的主机操作系统,其控制对物理层310和/或对通过VIOS 230提供的虚拟I/O功能和/或服务的低层访问。在一个实施例中,操作系统可以使用0S/400实施,0S/400被设计为与分区管理固件(诸如PHYP)接口,并可从国际商业机器公司获得。应理解,取决于具体实施方式
,例如也可以使用其他类型的操作系统(诸如高级交互执行环境(AIX)操作系统,其为IBM公司的商标;微软Windows ,其为微软公司的商标;或者GNU /Linux ,其为自由软件基金和Linux Torvalds的注册商标),并且0S/400仅用作示例。此外,根据示例实施例,每个逻辑分区被提供了一个或多个虚拟网络接口,仅为了示例的目的而编号为ΝΙΡ··ΝΙ4。这些NI允许LPAR与其他LPAR通信,所述LPAR均在主机系统上,并允许LPAR与跨越分布网络上的其他设备通信。在所述实施例中,VM 220a/220b中的至少一个是PVLAN的一部分并连接到可以使能跨越PVLAN的连接的DVS。DVS 330可以是跨越多个主机系统的更大DVS的本地部分,其提供在虚拟化管理器320内。DVS 330包括多个虚拟端口,每个端口被分配到PVLAN内的一个或多个VM,以使能在PVLAN内向和从所述关联设备的分组传输。根据一个实施例,使用端口路由位映射阵列使跨DVS的虚拟端口的分组传输更高效。如主机系统300内进一步示出的,虚拟管理器320包括端口控制器325,其与主机系统300支持的一个或多个DVS关联。端口控制器325包括策略软件组件342,其定义端口路由 策略和连接性策略,等等。端口控制器还包括端口注册和位映射设置(PRBS)工具343以及端口分组处理(PPH)工具344。下面在图6-8的描述内详细说明PRBS工具343和PPH工具344提供的功能。此外,端口控制器325包括多个与各个端口关联的单独(individual)PVID 345以及对应的三个VLAN阵列340的组,每个组对应于一个PVID和所关联的端口。下面将参照图6-9更详细地说明产生位映射阵列340并接着使用位映射阵列340通过DVS的虚拟端口提供更高效的分组处理的方法。现在参照图4,示出了数据处理环境的视图,该数据处理环境包括支持在包括分布虚拟路由器的虚拟网络拓扑/环境内互连的虚拟机的多个物理主机系统之间的实际和虚拟连接。在所示实施例中,数据处理环境400包括因特网协议(IP)网络402,其包括多个网段404a、404b,每个网段耦接到物理路由器406a、406b中相应的一个。如本领域所公知的,每个物理路由器406a、406b包括相应的转发表407a、407b,物理路由器406a、406b通过所述转发表基于包含在分组中的OSI层3 (例如因特网协议(IP))地址将到来的数据分组转发到分组的目的地。物理主机系统410a、410b耦接到网段404a,并且物理主机系统410c耦接到网段404b。物理主机(诸如物理主机系统410a、410b)可选地可以由辅助主机连接408(诸如直接电缆连接或私有非路由网络)附加地耦接。例如可以利用如图3所示的主机系统300实施每个物理主机系统410a-410c。每个物理主机系统410a_410c执行虚拟化管理器412a_412c中相应的一个,其例如,在通过IP网络402耦接到物理主机系统410a-410c的管理控制台415处的人工和/或自动管理员的指引下,虚拟化和管理其相应的物理主机410的资源。物理主机系统410a上的虚拟化管理器412a支持VM 414a-414c的执行,物理主机系统410b上的虚拟化管理器412b支持VM 414d-414f的执行,并且物理主机系统410c上的虚拟化管理器412c支持VM414g-414i的执行。在各种实施例中,VM 414a-414i可以包括一个或多个云用户和/或云提供商的VM。在所述实施例中,每个VM 414具有至少一个(以及在某些情况下为多个)虚拟网络接口 NI1-NI11,其至少在OSI模型的层2和3上提供网络连接。如所述的,每个虚拟化管理器412a_412c提供一个或多个(并且在所述实施例中,至少两个)虚拟网络,管理器的VM 414可以附接到所述虚拟网络。为了视觉地将它们从物理子网404a-404b区分开,在图4中用虚线图示表示虚拟网络。例如,在所示实施例中,虚拟化管理器412a-412c全都通过提供层2的连接性的单独虚拟交换机430al、430bl和430cl的实施而提供第一分布虚拟网络420a。虚拟化管理器412a-412b类似地通过DVS 430a2和430b2的实施提供第二虚拟网络420b。此外,虚拟化管理器412c通过分布交换机430c2的实施提供第二·虚拟网络420c。在各种实施例中,每个虚拟网络420a_420c可以例如是特定云用户的私有网络(例如PVLAN)、多个云用户共享的合作私有网络和/或云提供商,或者公共网络。在所述示例中,网络接口 NI2、NI4、NI6、NI8和NIlO连接到第一虚拟网络420a,网络接口 Nil、NI3、NI5和NI7连接到第二虚拟网络420b,并且网络接口 NI9和NIll连接到第三虚拟网络420c。每个虚拟化管理器412优选地记录关于特定虚拟化管理器支持的虚拟网络420以及对应的VM414与虚拟网络420的连接的信息。此信息被记录为网络信息422a、422b和422c中相应的一个。例如,当供应、布置或迁移进特定VM 414时第一虚拟化管理器412a可以在其网络信息422a中创建条目用于它的VM 414a、414b或414c之一,并 且当迁移出或破坏VM 414时第一虚拟化管理器412a可以从网络信息422a移除条目。在一个可选实施方式中,为了支持在虚拟网络420a_420c之间以及在虚拟网络420与物理网络402和/或404之间通信,虚拟化管理器412a_420c可以各自实施分布式路由器432a-432c中相应的一个,以提供OSI层3路由。然而,在替代实施例中,可以不在物理主机内实施任何路由功能。在所示实施例中,每个分布式路由器432为由路由器的虚拟化管理器412实例化的每个虚拟网络420提供相应的网络接口、以及至物理主机410所附接(例如通过物理网络接口 304的软件端口)的物理网段404的网络接口。每个分布式路由器432附加地包括相应的转发表434a、434b和434c,用于存储路由信息。本领域的普通技术人员将理解,图1-4中所示的硬件、固件/软件工具以及软件组件及其基本配置可以变化。各个图的示例组件不意在是穷举的,而是代表性的,以强调用于实施某一所述实施例的一些组件。例如,可以提供数据处理系统和/或主机系统的不同配置,包括其他设备/组件,其可以额外地使用或代替所述硬件而使用,并可以被不同地配置。所示示例不意在隐含对当前描述的实施例和/或它们的逻辑扩展的架构限制或其他限制。现在参照图5A,示出了 PVLAN域的端口视图。PVLAN域500包括主VLAN 505,其继而提供两个群体(community) VLAN (称为群体IVLAN 520a和群体2VLAN 520b)以及隔离(Isolated)VLAN 525。这些VLAN在层2 (L2)交换机内相互关联和定义。群体VLAN 520a、520b和隔离VLAN 525在这里统称为辅助VLAN (由虚环绕线指示)。每个VLAN具有关联的VLANID,其唯一地识别DVS内的VLAN。在PVLAN内是三个相关端口,分别定义为混杂端口、隔离端口和群体端口。如这里所提供的,混杂端口连接到层3 (L3)或层4 (L4)设备(例如路由器),其可以继而连接到英特网或监管(administrative)工作站或者公共网络服务器,例如动态主机配置协议(DHCP)服务器。隔离端口和群体端口连接到独立虚拟和物理用户设备或服务器,诸如图3和4中的VM,并且隔离端口和群体端口携带来源于PVLAN内的设备之一或者针对其而接收的业务。在分组路由期间,主VLAN 505将混杂端口 510与群体端口 522a_d或隔离端口526a、526b连接。具体地,主VLAN 505在混杂端口 510处从L3/L4设备接收分组,并将分组传递到一个或多个辅助VLAN。如这里所提供的,隔离VLAN被定义为功能性地将隔离端口连接到混杂端口的VLAN。在隔离VLAN中,业务仅是单向的,即分组在隔离端口处接收且仅从该隔离端口传输到混杂端口。对于其他隔离或群体端口,分组不可用。群体VLAN被定义为功能性地将群体端口连接到混杂端口的VLAN。在群体VLAN内,仅单向路由业务,即分组在群体端口处接收且仅从群体端口传输到混杂端口以及传输到该群体VLAN上的其他群体端口。在所述路由协议中,分组不从群体端口传输到隔离端口或传输到可能存在于同一交换机上的不同群体VLAN上的群体端口。当在L2交换机内配置VLAN时,管理员可以手动地指定VLAN内的端口。然而,当配置PVLAN时,管理员定义主VALN和一个或多个辅助VLAN。利用所述实施例,对于软件使能的用以支持PVLAN特征的DVS (如图4所呈现的),DVS必须支持PVLAN内支持的所有三种类型的端口,强制执行(enforce)由PVLAN强制的通信限制(其可以例如由策略软件342定义,图4),并支持多个PVLAN域。虽然存在于通信的层2域内,但PVLAN 500具有多个子域。如这里所定义的,每个 PVLAN子域由两个VLAN ID (VID)构成,具体为主VLAN ID和辅助VLAN ID。主VLAN表示PVLAN通信域,而辅助VLAN是PVLAN域的通信子域。因此,辅助VLAN ID是网络中支持的所有PVLAN中的全局唯一的ID。每个网络端口落入单个PVLAN内的3个类型的子域之一(并且仅仅是一个)中,如下定义 (I)混杂端口一这些端口可以与PVLAN域中的所有端口通信。混杂端口支持与PVLAN 500 的主 VLAN ID 545 相同的辅助 VLAN ID 547。( 2 )群体端口一这些端口可以与同一群体内的混杂端口和其他端口通信(例如,群体端口 522a可以与群体IVLAN 520a内的群体端口 522b通信)。如图5所示的,在单个/同一 PVLAN 500内可以存在多个群体。每个群体由唯一的VLAN ID 547a、547b表示,其与主群体VLAN ID 545、隔离VLAN ID550以及其他群体的VLAN ID不同。(3)隔离端口一这些端口仅能与混杂端口通信。隔离端口 526a、526b的辅助VLANID是与主VLAN ID 545不同的VLAN ID。在一个实施例中,在PVLAN 500内仅支持一个隔离 VLAN ID (550)。每个端口使能到和从一个或多个端设备的通信,示出了所述端设备中的端设备524a-524b作为每个(per)群体VLAN 520a、520b的两个端设备(SI、S2)。每个隔离VLAN525还包括端设备528a、528b,对于每个隔离VLAN 525示出了一个端设备(分别为S4、S5)。图5B的表500总结了图5A所示的私有VLAN内的端口动作。在DVS上支持PVLAN方案取决于强制执行PVLAN所需要的通信限制的每个主机上的软件实体。在DVS相关的应用中,DVS方案典型地由多个主机/机器中的软件实体构成。软件实体在主机系统内在DVS访问端口(例如连接到虚拟机的端口)之中转发分组,并通过使用主机系统上的网络卡(上行链路端口)(向和从主机)转发而与外部网络通信。特定虚拟机上的软件实体仅知道在该虚拟器上支持的端口,其可以仅是整个DVS方案支持的所有端口的(小)子网。虽然可以使软件实体知道(同一 DVS内的)其他主机上的端口,但该配置将对软件实体(即本地DVS)中的转发表增加不必要的复杂度和尺寸的层。在层2上交换的业务基于具有MAC头部的数据的帧。层2交换机可以在单个交换机上包括几百个端口。私有VLAN在同一广播域内的端口之间提供层2隔离。私有VLAN将常规VLAN域分区为子域,其由一对VLAN (主VLAN和辅助VLAN)表示。私有VLAN中的每个端口是主VLAN的构件(member )。主VLAN携带从混杂端口到隔离和群体端口以及到其他混杂端口的向下游的单向业务。隔离VLAN携带从隔离端口朝向混杂端口的向上游的单向业务。群体VLAN携带从群体端口到混杂端口以及到同一群体中的其他主机端口的向上游的业务。多个群体VLAN可以被配置在私有VLAN中。在一个实施例中,群体端口还可以接收向上游的业务。此外,接收向上游的业务的端口可以支持超过一个VLAN。如这里所提供的,隔离端口是属于隔离的辅助VLAN的主机端口。隔离端口具有与同一私有VLAN内除混杂端口之外的其他端口的完全层2分离。私有VLAN阻止所有业务到达隔离端口,除了来自混杂端口的业务,并且从隔离端口接收的业务仅被转发到混杂端口。群体端口是属于群体辅助VLAN的主机端口。群体端口可以与同一群体VLAN中的 其他端口以及与混杂端口通信。这些接口在层2中与其他群体中的所有其他接口隔离以及与他们的私有VLAN内的隔离端口隔离。在PVLAN内,施加若干配置限制。这些限制的列表可以包括下列中的一个或多个(I)在私有VLAN中仅可以存在一个隔离VLAN ;(2)隔离端口不能是上行链路端口;(3)辅助VLAN端口不能与同一私有VLAN域中的其他VLAN重叠;(4 )网络中的缺省VLAN不能是私有VLAN ;(5)映射到辅助VLAN的主VLAN需要被创建并被使能;(6)如果端口未被加标签(tag),则其不能支持超过一个VLAN ;(7)端口可以是私有VLAN域内的混杂端口或群体端口或隔离端口 ;(8)可以支持高达4095个PVLAN,其中识别号O和4095被保留;以及(9)私有VLAN需要被创建并使能,以便端口支持PVLAN。随着在虚拟化方案中对基于软件的层2交换机的需要的增加,这里所述的实施例的多个方面提供了一种用于DVS软件中的网络分组处理的高效算法。如下文所定义的,这些实施例提供DVS中的高效0(1)分组处理(数据路径)PVLAN方案。所述实施例建立在以下事实上PVLAN内的任何子域(不论是混杂、隔离还是群体)的VLAN ID是全局唯一的。因此,所述实施例的一个方面涉及(主机系统上的)软件实体,其通过利用正确的VLAN ID在从端口的向外(outbound) /进入路径中向分组加标签以及验证(validate)到端口的向内(inbound)/离开和/或离开路径上的分组的VLAN ID,而实施特定PVLAN策略的强制执行。该方法确保多个DVS能够支持同一组PVLAN以及统一地强制执行PVLAN策略。根据所陈述的实施例,所述方案的效率基于端口如何验证分组上的VLAN标签。虽然在DVS内可能存在多个PVLAN域并且每个访问端口可能属于多个PVLAN本身,但所述实施例所陈述的方法避免在分组处理期间遍历任何PVLAN列表。在实施例所提供的优化方案下,DVS中的每个端口(访问端口和上行链路端口两者)支持三个VLAN位映射(这里也可替换地称为位映射阵列)。如现在参照图7所描述的,每个端口的三个位映射(或位映射阵列)是进入VLAN位映射742、离开VLAN位映射744、和剥离VLAN位映射746。进入VLAN位映射742包含端口在进入路径中支持的VLAN。离开VLAN位映射包含该端口在离开路径中支持的VLAN。最后,剥离VLAN位映射包含在发送帧/分组到端口之前软件模块必须移除/剥离的离开路径上的VLAN。位映射阵列保持在端口位映射340内,端口位映射340在一个实施例中保持多个端口位映射740a…740m,用于DVS内支持的M个端口,其中M是整数。如图7以及用于端口 I的示例位映射阵列(740)所示的,每个位映射阵列具有对应于特定DVS上支持的VLAN的最大数目的N个条目。三个VLAN位映射中的每个是N位的一维阵列。在一个实施例中,N=4096位(512字节)。然而,N的值是系统参数,其在替代实施例中可以是不同的数值。如这里所提供的,当位的值从零(O)变换为I时可以设定位。因此未设定的所有位包含零值。当在阵列的第M个位置(相对于阵列的开始的偏移)中设定位时,则VLAN M出现在位映射中。端口 I的进入VLAN位映射742内示出的数值以从O至N-I的范围的连续次序表示N位。离开VLAN位映射744则示出存在出现和分配到离开VLAN位映射744的位置1、3、4和N-2的对应VLAN。而且,剥离VLAN位映射746指示路由到VLAN 4和最后的VLAN (N-I)的分组应该在向/从虚拟端口路由来自该PVLAN的分组之前被剥离VLAN ID。除了位映射阵列742、744 和 746,每个端口还具有 PVID VLAN ID 750。PVID 750指示必须添加到进入路径上的未加标签的分组的VLAN标签并且还指示在离开路径上将移除哪些标签。根据一个实施例,并且如图6的方法所示,当端口初始被添加到PVLAN(或非私有VLAN)时,在端口的每个位映射上适当地设置PVLAN (和VLAN),或者反之亦然(vice-versa),其是不经常的操作,因此不在分组处理的路径中。
现在参照图6,示出了管理员使用管理控制台和执行其上的软件而完成将端口添加到DVS的处理的方法。一旦端口信息被提供给软件,控制软件随后产生用于该端口的适当的三个位映射阵列。应该理解,这些步骤中的某些可以被自动化并由管理控制台315的处理组件执行,并且所述步骤中的大多数也可以由在管理控制台115工作的网络管理员手动执行。如这里所描述的,经由/利用端口注册和位映射设置(PRBS)工具343完成所述方法,所述工具343在管理控制台315 (图3)的一个或多个处理(或虚拟管理器)或主机系统本身上的虚拟化管理器的处理器上执行。因此各种处理被描述为由PRBS工具343所执行,PRBS工具343可以继而由网络管理员配置和/或实例化。该工具的执行可以提供执行各种所述功能的处理逻辑。当被网络管理员启动时,在一个实施例中,管理员可以经由管理控制台315上的命令行接口(CLI)与PRBS工具343交互。图6的方法在块602中开始,在块602中将VLAN ID (VID)添加到DVS上的虚拟机端口。在步骤604中确定VID是否用于私有VLAN。当VLAN ID用于私有VLAN时,该私有VLAN被处理和认作现有私有VLAN的辅助VLAN(块606)。接着在块608中确定VID是否是私有VLAN中的主VLANID。响应于VID是私有VLAN中的主VLAN ID,私有VLAN中的所有VLANID被添加到端口的进入位映射,并且私有VLAN中的所有VLAN ID也被添加到端口离开位映射(块601)。在决定块612中,PRBS工具343 (图3)和/或管理员确定VID是否是该端口的PVID。响应于VID是该端口的PVID,该工具/管理员将私有VLAN中的所有VLANID添加到端口剥离位映射阵列/阵列(块614)。然后注册该VID的路径完成(块640)。返回到决定块608,如果VID不是PVLAN中的主VLAN,则在块616中检查VID是否是PVLAN中的群体VLAN ID。响应于VID是PVLAN中的群体VLAN ID,工具/管理员将VID添加到端口进入位映射阵列以及端口离开位映射阵列,并还将私有VLAN的主VID添加到端口离开位映射(块618)。接着在块620中检查VID是否是端口的PVID,并且当VID是该端口的PVID,则工具/管理员将该VID和PVLAN的主VID添加到端口剥离位映射阵列(块622)。然后,注册VID的该路径完成(块640)。在决定块616中,如果VID不是PVLAN中的群体VLAN ID,则在块624中检查VID是否是PVLAN中的隔离VLAN ID。响应于VID是PVLAN中的隔离VLAN ID (隔离端口)的确定,工具/管理员将该VID添加到端口进入位映射,并还将PVLAN的主VID添加到端口离开位映射阵列(块626)。然后,接着在块628中执行VID是否是端口的PVID的检查。响应于VID是端口的PVID (同时VID也是PVLAN中的隔离VLAN ID),工具/管理员将PVLAN的主VID添加到端口剥离位映射(块630)。返回决定块604,响应于VID不是私有VLAN的VID,则工具/管理员将该VID作为常规VID处理(块632)。工具/管理员将该VID添加到端口进入位映射,并还将该VID添加到端口离开位映射(块634)。工具接着在块636中检查VID是否是端口的PVID,并且响应于VID是端口的PVID,工具将VID添加到端口剥离位映射(块638)。在接收到新VLAN用于在PVLAN内注册时注册VLAN和更新VLAN位映射的处理的非私有VLAN部分在终止块640完成。也可以从正在为其执行位映射产生的访问端口的类型的特定角度描述上述方法。因此,例如,当执行各个端口的产生和/或更新时,以下条件变得可用。(I)对于隔离端口,在端口在PVLAN的隔离子域中的情况下,进入VLAN位映射包 含隔离VLAN ID,离开VLAN位映射包含混杂(主)VLANID,并且如果端口的PVID设置为隔离VID则剥离VLAN位映射包含混杂VLAN ID。(2)对于群体端口,在端口属于PVLAN的群体子域的情况下,进入VLAN位映射包含群体VLAN ID,离开VLAN位映射包含群体和混杂VLANID,并且如果端口的PVID被设置为群体VID则剥离VLAN位映射包含群体和混杂VLAN ID两者。(3)对于混杂端口,在端口属于PVLAN的混杂子域的情况下,进入VLAN位映射包含混杂VLAN ID,离开VLAN位映射包含PVLAN中的所有VID,即所有群体、隔离和主VID,并且如果端口的PVID被设置为混杂VID则剥离VLAN位映射包含PVLAN中的所有VID (类似于离开)。此外,如果端口属于多个PVLAN,则端口的结果位映射是通过简单地合并如上产生的位映射而产生的组合位映射。因为每个PVLAN支持的VID的组是全局唯一的,所以进入、离开和剥离位映射的同一组合可以支持单个端口上的多个PVLAN。同样,在同样的位映射上可以支持非私有VLAN ID (S卩,常规VLAN)。在此情形中,在VLAN不是私有VLAN的情况中,进入和离开VLAN位映射将都包含用于常规VLAN的相同位设置。可以通过执行访问端口位映射的合并和联合而自动地产生上行链路端口位映射。在一个替代实施例中,管理员可以在上行链路端口上明确地配置VLAN。在这里所述的实施例内,用于正确处理分组的方法需要位映射的配置阶段的精确性。在进入部分中,检查帧的VLAN ID是否被端口支持,并且针对于进入位映射执行该检查。在转发部分内,检查目的地端口是否支持帧的VID。针对离开位映射执行该检查。在离开部分中,执行检查来确定是否剥离帧的标签。根据剥离位映射执行该检查。一旦正确地设置了位映射和对应的PVID值,则分组转发逻辑可以处理/验证(verify)接收的分组的VLAN并适当地响应。用于执行分组的该验证和处理的方法提供0(1)方案(solution),这是因为每个分组必须经由三(3)个基本恒定的位映射来验证,并且该方案是恒定的而不管(即不依赖于)系统中的VLAN的数目。而且,因此使得可以检查分组VLAN ID是否被设定在(属于)特定位映射中的算法也是0(1)算法。图8A和SB示出了通过执行控制相关端口的固件或软件来实施0(1)算法的某些所述特征的方法的两个实施例。虽然图6的方法已经被描述为经由端口控制器340内的PBRS工具343的执行来实施,但本方法经由/利用端口转发逻辑中的一个或多个来完成,所述端口转发逻辑可以经由端口分组处理(PPH)工具344的执行来实施(图3)。PPH工具344在主机系统自身上的虚拟化管理器的一个或多个处理器(或虚拟处理器)上执行。因此,各种处理可以被描述为通过PPH工具344和/或端口转发逻辑执行,所述端口转发逻辑可以继而由网络管理员配置和/或实例化。当被网络管理员启动时,在一个实施例中,管理员可以经由管理控制台315上的命令行接口(CLI)与PRBS工具343交互。还应该理解,PPH工具334的功能可以与PRBS工具343的功能集成,以形成单个组合的工具,其本身表示在支持一个或多个PVLAN的DVS的端口内实施的可执行代码段和/或逻辑。为了使得能够更好地理解图8A和SB的方法,参照图9,其示出了在示例虚拟端口的进入路径和离开路径上检测到的分组的转发和处理中涉及的虚拟端口和DVS的组件。如所提供的,DVS 900包括一个或多个端口控制器逻辑(端口控制器)905,在所述端口控制器逻辑905中保持了使能和/或执行这里所描述的实施例的各种功能的若干组件和工具。端口控制器905包括策略组件342和PRBS工具343。此外,端口控制器905包括多组端口 VLAN阵列340a…η和关联的PVID 345a…η。如这里所描述的,每组端口 VLAN阵列(例如阵列340a)包括三个位映射阵列,即进入位映射阵列、离开位映射阵列和剥离位映射阵列。端口控制器905还包括端口转发逻辑910 (其可以经由前述PHH工具344 (图3)的执行来产生)。端口转发逻辑连接到虚拟端口 920的进入路径930和离开路径940各自的接收接口 932和942 (或者在替代实施例中,接收队列934和944)并与之接口。在所示实施例中,进入路径930和离开路径940两者都包括接收队列934、944,其耦接到各自的接收接口932、942。类似地,两个路径(930、940)都包括发送队列936、946,其耦接到各自的发送接口938、948。分组处理逻辑935、945也被提供在每个路径(930、940)内。将理解,分组处理逻辑935、945可以简单地是抽象到各个路径(930、940)内发生接收分组的处理的位置的、端口转发逻辑910的扩展。而且,在一个实施例中,虚拟端口 920也可以保持端口的端口 VLAN阵列340a和关联PVID 345a的复本。再次参照图8A,方法在块802中开始,在块802中,用于源端口的进入分组处理器(handler)被实例化来处理具有VLAN ID (VID)的分组。当端口检测/接收到用于处理的分组时,从分组头部取回VLAN ID。PPH工具在块804中确定分组的VID是否被设定。响应于分组的VID未被设定,PPH工具利用源端口的PVID对分组加标签(块806)。一旦分组的VID被设定或者在PPH工具利用源端口的PVID对分组加标签之后,PPH工具在块808中确定源端口的进入位映射是否支持VID。如果源端口进入位映射不支持分组的VID,则丢弃分组(块810)。然而,响应于源端口的进入位映射支持VID,PPH工具使得源端口能够处理分组(块812)。在块814中,PPH工具实例化用于分组的转发功能,并确定分组的目的地端口。利用识别的目的地端口,PPH工具在块816检查分组的VID是否在目的地端口的离开位映射中。响应于分组VID不在目的地端口的离开位映射中,PPH工具丢弃分组(块818)。然而,响应于分组VID在目的地端口的离开位映射中,PPH工具在目的端口处理分组(块820)。在决定块822,PPH工具检查分组的VID是否在目的地端口的剥离位映射中。响应于分组的VID在目的地端口的剥离位映射中,PPH工具从分组中移除VID (块824)。PPH工具接着完成该分组的处理(块826)。
现在参照图8B,提供了也参照图9的端口转发逻辑定义的方法的特定实施方式。该方法在块830开始,并进入到块832中,块832指示端口转发逻辑910在DVS 900的虚拟端口(例如端口 920)处检测分组的到来传输。虚拟端口被分配为使得能够向和从一个或多个VLAN内的设备路由接收的分组。处理块834接着提供端口转发逻辑从分组的头部取回VLAN ID(VID)0 VLAN ID是分配来从可以由第一虚拟端口支持的多个VLAN的其它VLAN唯一地识别特定VLAN的值。接着,在块836中确定是否在虚拟端口的进入路径(相对于离开路径)上检测到分组。响应于在虚拟端口的进入 路径上检测到分组,端口转发逻辑910检查(在块838中)是否设定了在虚拟端口的进入位映射阵列内的进入阵列偏移位置,这将指示VLAN被该端口所支持。进入阵列偏离位置对应于VID的值并在端口上配置VLAN期间在进入位映射阵列内设定。此外,每个虚拟端口还包括PVID VLAN ID,其指示添加到进入路径上的非标签分组的VLAN标签。该方法处理因此包括端口转发逻辑在块840中检查接收的分组是否不具有PVID。响应于进入路径上的接收的分组不具有PVID,端口转发逻辑910自动地利用虚拟端口的PVID对分组加标签(块842)。响应于进入阵列偏移位置被设定并指示VLAN被端口支持,端口转发逻辑910接收端口处的分组并启动端口对接收的分组的处理(经由分组处理逻辑935)(块844)。然而,响应于进入阵列偏移位置未被设定,端口转发逻辑905丢弃分组(846)。因此,仅在VID识别了在进入位映射阵列中设定了对应的偏移位置的VLAN时,进入路径上的检测到的分组被允许由端口处理。接着进入路径上的分组的处理结束,并且类似地处理在端口上接收到的下一分组,为了效率可以并行的完成所述处理。返回决定块836,响应于在端口的离开路径940上检测到分组传输(B卩,在进入路径930上未检测到分组),端口转发逻辑910检查(块848)是否设定了在虚拟端口的离开位映射内的离开阵列偏移位置,这将指示VLAN被端口支持。离开阵列偏移位置对应于VID的值并在端口上配置VLAN期间在离开位映射阵列内设定。响应于离开阵列偏移位置被设定并且指示VLAN被端口所支持,端口转发逻辑910接收端口处的分组,并启动端口对接收的分组的处理(块850)。响应于离开阵列偏移位置未被设定,端口转发逻辑910丢弃分组(块842)。再次,仅在VID识别了在尚开位映射阵列中设定了对应的偏移位置的VLAN时,尚开路径上检测到的分组被允许由端口处理。对于在离开路径上检测和/或接收的分组,方法处理还包括端口转发逻辑910,其在块852检查是否设定了在虚拟端口的剥离位映射阵列内的剥离阵列偏移位置,其将指示VLAN被端口所支持以及VID应该在转发分组之前被移除。剥离阵列偏移位置对应于VID的值,并在端口上配置VLAN期间在剥离位映射阵列内设定。响应于离开路径上检测到的分组添加了 PVID标签,端口转发逻辑自动在转发该分组之前将PVID从分组移除(块858)。响应于设定了剥离阵列偏移位置,端口转发逻辑910将VID从分组中移除并将没有VID的分组转发到分组所识别的VLAN的目的地设备(块856)。然后进入路径上的分组的处理结束,并且类似地处理端口上接收的下一分组,为了效率可以并行地完成所述处理。上述示例实施例呈现了用于在DVS的虚拟端口内高效地处理分组的方法,所述DVS支持配置有群体、隔离和混杂子域的一个或多个PVLAN。在具有配置和使能虚拟化计算环境的虚拟化管理器的主机数据处理系统(主机系统)内执行该方法。虚拟化计算环境包括一个或多个虚拟机以及层2分布式虚拟交换机(DVS)的本地可访问组件,所述DVS包括支持至少一个虚拟局域网(VLAN)内的分组传输的多个虚拟端口。虚拟化管理器的处理资源执行产生执行所述方法的处理逻辑(例如端ロ转发逻辑910)的代码(例如PPH工具344)。在该方法的一个实施例中进入位映射阵列、离开位映射阵列和剥离位映射阵列中的每个是包括N个位条目的一维阵列,其中每一位对应于从0至N-I的偏移位置,N是整数,其表示能够由所述虚拟端ロ使用值的范围为从0至N-I的全局唯一的标识符(ID)支持的単独VLAN的最大数目;进入位映射阵列、离开位映射阵列和剥离位映射阵列之一中的偏移位置在相应位映射阵列中该位位置的值具有值ー(I)时被设定;以及检查是否设定了偏移位置的处理包括将偏移位置处的值与一(I)进行比较,并当所述值等于一(I)时指示设定了偏移位置。在一个实施方式中,虚拟端ロ可以是访问端ロ或上行链路端ロ,并且每个端ロ包括进入VLAN位映射,其包含对应于在到端ロ的进入路径中端ロ支持的VLAN的VID的设定的偏移位置;离开VLAN位映射,其包含对应于在端ロ的离开路径中端ロ支持的VLAN的VID 的设定的偏移位置;以及剥离VLAN位映射,其包含对应于识别下述VLAN的VID的设定的 偏移位置,其中对于所述VLAN,在从所述端ロ转发接收到的分组之前要在离开路径上移除VID。在一个实施例中,该方法包括接收将新VLAN添加到虚拟端ロ的请求(包括但不限于经由命令行接ロ(CLI)或⑶I接收请求);向新VLAN分配全局唯一的ID作为新VID ;在为新VLAN产生的每ー个位映射阵列中识别偏移位置,其中偏移位置对应于新VID的值;基于虚拟端ロ的类型特征,利用指示新VLAN的关联的值更新每个位映射阵列内的相应偏移位置。该方法还提供基于从CLI接收的输入向新VLAN关联属性;存储新VLAN的属性,并实例化端ロ,以处理去往和来自新VLAN的设备的分组,所述端ロ支持新VLAN的分组通信。在一个实施例中,该方法还包括响应于接收到将新端ロ添加到PVLAN的请求向新端ロ分配唯一的PVID VLAN ID ;为新端ロ自主地产生进入位映射阵列、离开位映射阵列和剥离位映射阵列;对应于端ロ支持的每个VLAN和每个PVLAN,设定进入位映射阵列、离开位映射阵列和剥离位映射阵列中的每个的适当的偏移位置;存储进入位映射阵列、离开位映射阵列和剥离位映射阵列,用于在处理在新端ロ的进入路径和离开路径上接收到的分组时使用;以及与位映射阵列一起存储所分配的PVID VLAN ID。此外,在一个实施方式中,自主地产生和设定进入位映射阵列、离开位映射阵列和剥离位映射阵列中的每个的适当的偏移位置包括识别新端ロ与PVLAN的隔离子域、群体子域和混杂子域中的哪个关联,其中隔离子域具有隔离VLAN ID (VID),群体子域具有群体VID,群体VID对于多个群体子域之中的该群体子域是唯一的,并且混杂子域共享主VLAN ID作为混杂VID。该方法还提供响应于新端ロ与隔离子域关联,在进入位映射阵列内对应于隔离VID的进入偏移位置处设定位值,在离开位映射阵列内对应于混杂VID的离开偏移位置处设定位值,其中混杂VID与主VLAN ID相同,并且如果新端ロ的PVID被设定为隔离VID,则在剥离位映射内对应于混杂VID的的剥离偏移位置处设定位值;响应于新端ロ与群体子域关联,设定进入位映射阵列内对应于群体VID的进入偏移位置,在离开位映射阵列内对应于混杂VID的第一离开偏移位置处设定第一位值并在离开位映射阵列内对应于群体VID的第二离开偏移位置处设定第二位值,并且如果新端ロ的PVID被设定为群体VID,则在剥离位映射内分别对应于群体VID和混杂VID的第一剥离偏移位置处和第二剥离偏移位置处设定第一位值和第二位值;以及响应于新端ロ与混杂子域关联,设定进入位映射阵列内对应于混杂VID的进入偏移位置,在离开位映射阵列内对应于PVLAN中的每个群体子域、隔离子域和主域的VID的ー个或多个离开偏移位置处设定位值,并且在离开位映射阵列内对应于PVLAN中的每个群体子域、隔离子域和主域的VID的一个或多个离开偏移位置处设定位值。此外,上述实施例提供响应于新端ロ与每ー个都具有全局唯一 VID的多个PVLAN关联,自主产生和设定进入位映射阵列、离开位映射阵列和剥离位映射阵列中的每个的适当的偏移位置包括将为每个PVLAN产生的三个位映射的每个组中的各个组合并为三个组合的位映射的单个组,其中多个进入位映射阵列被合并为单个组合的进入位映射阵列,多个离开位映射阵列被合并为单个组合的离开位映射阵列,并且多个剥离位映射阵列被合并为单个组合的剥离位映射阵列。根据ー个实施方式,响应于接收到将VLAN添加到DVS的请求,所述方法包括利用相同的位设置产生进入位映射阵列和离开位映射阵列,用于非私有VLAN的访问端ロ位映射;以及通过将属于VLAN的所有离开位映射和进入位映射合并而自动地产生上行链路端 ロ的进入位映射和离开位映射。在一个实施例中,可以通过包含以下处理的替代方法产生上行链路端ロ的VLAN位映射Ca)对于进入位映射,合并上行链路端ロ所支持的所有访问端ロ(进入和离开)的VLAN位映射;对于离开位映射,合井上行链路端ロ所支持的所有访问端ロ(进入和离开)的VLAN位影射。最后,剥离位映射取决于分配到上行链路端ロ的PVID。本发明的一个实施例提供计算机程序产品,包括计算机可读存储介质;以及计算机可读介质上的程序代码,当该程序代码被与在数据处理系统上执行以产生具有ー个或多个分布式虚拟交換机(DVS)的虚拟化计算环境的虚拟化管理器关联的处理器执行时,使得虚拟化管理器执行上述方法功能中的每个。而且,本发明的另ー实施例提供ー种数据处理系统,包括一个或多个处理器,提供处理资源;一个或多个存储器,耦接到所述ー个或多个处理器;一个或多个网络接ロ,使得能够经由物理网络与其它设备通信;以及虚拟化管理器,将数据处理系统配置为具有分布式虚拟交換机(DVS)以及在虚拟环境内经过由与DVS关联的端ロ在虚拟局域网(VLAN)内通信的一个或多个虚拟机的虚拟化机器,并且其中虚拟化管理器包括ー个或多个可执行エ具,包括分组处理逻辑,其在处理资源上执行并使得所述虚拟化管理器向在主机系统上的虚拟化环境内建立的PVLAN的每个子域分配全局唯一的VLAN标识符(ID);利用正确的VID对来自PVLAN内的DVS的虚拟端ロ的向外路径以及去往PVLAN内的DVS的虚拟端ロ的向内路径中的分组加标签;以及通过执行该方法的上述实施例的各种功能而动态地验证该虚拟端ロ的向内路径和向外路径上的接收的分组的VID。此外,在数据处理系统的ー个实施例中虚拟端ロ是访问端ロ和上行链路端ロ中的ー个或多个,并且每个端ロ包括进入VLAN位映射,其包含对应于在到端ロ的进入路径中端ロ支持的VLAN的VID的设定的偏移位置;离开VLAN位映射,其包含对应于在端ロ的离开路径中端ロ支持的VLAN的VID的设定的偏移位置;以及剥离VLAN位映射,其包含对应于识别下述VLAN的VID的设定的偏移位置,其中对于所述VLAN,在从端ロ转发接收到的分组之前要在离开路径上移除所述VID ;VLAN是私有VLAN (PVLAN)并且每个虚拟端ロ还包括PVID VLAN ID,其指示添加到进入路径上的未加标签分组的VLAN标签;多个分布式虚拟交换机由同一组PVLAN支持,多个PVLAN域被提供在单个DVS内,以及虚拟化管理器的分组处理逻辑统一地强制执行PVLAN策略;并且ー个或多个可执行工具还使得虚拟化管理器响应于在进入路径上的接收的分组不具有PVID,自动地利用虚拟端ロ的PVID对分组加标签;以及响应于在离开路径上的检测的分组添加了 VID,自动地在转发所述分组之前将VID从所述分组移除。这里所呈现和描述的各个附图中的流程图和框示了根据本发明各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。在这一点上,所述流程图或框图中的每个块可以表示模块、片段或代码部分,其包括用于实现指定的一个或多个逻辑功能的一个或多个可执行指令。还应当注意,在某些替代实现方式中,块中标注的功能可以不按照图中标注的顺序进行。例如,连续示出的两个块实际上可以基本同时地执行,或者根据所涉及的功能,有时候可以按照相反的顺序执行所述块。还将注意到,可以通过执行指定的功能或动作的基于专用硬件的系统或者专用硬件和计算机指令的组合来实现所述框图和/或流程示的每个块、以及所述框图和/或流程示中的块的组合。在以上流程图中,ー个或多个方法在计算机程序产品中具体化,所述计算机程序产品具有包含计算机可读/程序代码/指令的计算机可读介质,从而当计算机可读/程序代码/指令在计算机设备/机器上(由处理单元/处理器)执行时执行一系列步骤。在某些 实施方式中,方法的某些处理被组合、同时执行或以不同的顺序执行、或者也许被省略,而不偏离本发明的精神和范围。因此,虽然方法处理以特定的序列说明和图示,但特定序列的处理的使用并非意在隐含对本发明的任何限制。可以关于处理的序列进行改变而不偏离本发明的精神和范围。因此,使用特定的序列不被认为是限制性的,并且本发明的范围延伸到所附权利要求及其等价物。如本领域技术人员将认识到的,可以作为系统、方法或计算机程序产品来具体化本发明的各方面。因此,本发明的各方面可以采取全硬件实施例的形式、全软件实施例(包括固件、驻留软件、微代码等)的形式、或者组合了在这里均可通称为“电路”、“模块”或“系统”的软件和硬件方面的实施例的形式。此外,本发明的各方面可采取在一个或多个计算机可读介质中包含的计算机程序产品的形式,所述计算机可读介质具有在其上具体化的计算机可读程序代码。可以使用一个或多个计算机可读介质的任何组合。该计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是但不限于电子、磁、光、电磁、红外或半导体系统、装置、或设备,或者前述各项的任何适当组合。计算机可读存储介质的更多具体示例(非穷尽性列挙)包括以下各项具有一条或多条导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式致密盘只读存储器(CD-ROM)、光存储设备、磁存储设备、或者前述各项的任何适当组合。在本文档的上下文中,计算机可读存储介质可以是可包含或存储程序以便由指令执行系统、装置或设备使用或者结合所述指令执行系统、装置或设备使用的任何有形介质。计算机可读信号介质可包括在基带中或者作为载波的一部分的传播的数据信号,其中在该传播的数据信号中包含计算机可读程序码。这种传播的信号可以采用多种形式,包括但不限于电磁、光或任何以上适当的组合。计算机可读信号介质可以是并非是计算机可读存储介质、但是能发送、传播或者传输用于由指令执行系统、装置或者设备使用或者与其结合使用的程序的任何计算机可读介质。
可以使用任何适当的介质传送在计算机可读介质上包含的程序,所述介质包括但不限于无线、有线、光纤缆线、RF等,或者前者的任意适当的组合。用于执行本发明的各方面的操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,所述编程语言包括面向对象编程语言,例如Java、Smalltalk、C++等;以及传统的过程编程语言,例如“C”编程语言或类似编程语言。该程序代码可以完全在用户的计算机上执行、部分地在用户的计算机上执行、作为独立软件包执行、部分地在用户的计算机上并且部分地在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后ー场景中,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用户的计算机,或者可以形成到外部计算机的连接(例如,使用因特网服务提供商通过因特网)。下面參照根据本发明实施例的方法、装置(系统)和计算机程序产品 的流程示和/或框图描述了本发明的各方面。将理解可以通过计算机程序指令来实现所述流程示和/或框图的每个块、以及所述流程示和/或框图中的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机、或者其他可编程数据处理装置的处理器以便产生机器,使得经由所述计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在所述流程图和/或框图的一个或多个块中指定的功能/动作的部件。也可以将这些计算机程序指令存储在计算机可读介质中,该计算机可读介质可以指示计算机、其他可编程数据处理装置或者其他设备以特定的方式发挥作用,使得存储在计算机可读介质中的指令产生ー种制造产品,该制造产品包括实现在所述流程图和/或框图的ー个或多个块中指定的功能/动作的指令。也可以将计算机程序指令加载到计算机、其他可编程数据处理装置或者其他设备上,以使得在计算机、其他可编程装置或者其他设备上执行一系列操作步骤,从而产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在所述流程图和/或框图的一个或多个块中指定的功能/动作的过程。如将进ー步理解的,可以使用软件、固件或硬件的任何组合实施本发明的实施例中的处理。作为以软件实践本发明的预备步骤,程序代码(不论软件还是固件)将典型地存储在ー个或多个机器可读存储介质中,诸如固定(硬盘)驱动器、磁盘、光盘、磁带、半导体存储器(诸如ROM、PROM等),从而根据本发明做出制造产品。通过直接从存储设备执行代码、通过将代码从存储设备复制到另一存储设备(诸如硬盘、RAM等)、或者通过使用传输类型介质(诸如数字和模拟通信链路)传输代码用于远程执行来使用包含程序代码的制造产品。可以通过将包含根据本发明的代码的ー个或多个机器可读存储设备与适当的处理硬件组合来执行其中包含的代码,而实践本发明的方法。用于实践本发明的装置可以是ー个或多个处理设备和存储系统,其包含或具有对根据本发明而编码的程序的网络访问。因此,重要的是,虽然在具有安装的(或执行的)软件的全功能计算机(服务器)的上下文中描述了本发明的实例实施例,但本领域的技术人员将理解,本发明的实例实施例的软件方面能够作为程序产品以各种形式分发,并且本发明的示例实施例同等适用,而不管用于实际执行分发的介质的特定类型。虽然已经參照示例实施例描述了本发明,但本领域的技术人员将理解,可以进行各种改变并且可以用等同物替代其元件,而不偏离本发明的范围。此外,可以进行许多修改,以将特定系统、设备或其组件适配到本发明的教导,而不偏离本发明的实质范围。因此,本发明不意在被限制到用于执行本发明而公开的特定实施例,而是本发明将包括落入所附权利要求范围内的所有实施例。此外,术语“第一”、“第二”等的使用不表示任何顺序或重要性,而是术语“第一”、“第二”等被用来将元件彼此区分。在这里使用的术语只是出于描述特定实施例的目的,而非意图限制本发明。如这里使用的,単数形式“一”和“所述”意图是也包括复数形式,除非上下文清楚地指出不是这样。还将理解的是,当在本说明书中使用吋,术语“包括”和/或“包含”指明存在所述特征、整数、步骤、操作、元件和/或组件,但是不排除ー个或多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或附加。下面的权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等价物意在包括用干与特别要求权利的其它要求组件组合地执行功能的任何结构、材料或动作。已经为了示例性和说明性的目的呈现了本发明的说明,但该说明不意在是穷举的或将本发明限制到所公开的形式。许多修改和改变对于本领域的普通技术人员而言将是显而易见的,而不偏离本发明的范围和精神。选择和说明实施例,以便更好地说明本发明的原理和 实际应用,并使得本领域的其它普通技术人员能够理解具有适于所构思的特定使用的各种修改的各种实施例的本发明。
权利要求
1.一种在具有虚拟化管理器的主机数据处理系统(主机系统)中,所述虚拟化管理器的处理资源执行所述虚拟化管理器的分组处理逻辑而执行的方法,所述虚拟化管理器配置和使能虚拟化计算环境,所述虚拟化计算环境包括一个或多个虚拟机以及层2分布式虚拟交换机(DVS)的本地可访问组件,所述DVS包括支持至少一个虚拟局域网(VLAN)内的分组传输的多个虚拟端口,所述方法包括 在所述DVS的第一虚拟端口处检测分组的到来传输,其中所述第一虚拟端口被分配为使能接收分组向和从一个或多个VLAN内的设备的路由; 从所述分组的头部取回VLAN ID(VID),其中所述VLAN ID是被分配为相对于能够被所述第一虚拟端口支持的多个VLAN的其它VLAN唯一地识别特定VLAN的值; 响应于在所述第一虚拟端口的进入路径上检测到分组 检查是否设定了在所述虚拟端口的进入位映射阵列内的进入阵列偏移位置,其指示所 述VLAN被所述端口支持,其中所述进入阵列偏移位置对应于所述VID的值,并且在所述端口上配置所述VLAN期间在所述进入位映射阵列内被设定; 响应于所述进入阵列偏移位置被设定并指示所述VLAN被所述端口支持,在所述端口处接收分组,并启动由所述端口对接收的分组的处理; 响应于所述进入阵列偏移位置未被设定,丢弃分组; 其中,仅在所述VID识别了在所述进入位映射阵列中设定了对应的偏移位置的VLAN时,所述进入路径上的检测到的分组被允许由所述端口处理。
2.如权利要求I所述的方法,还包括 响应于在所述端口的离开路径上检测到分组传输 检查是否设定了在所述虚拟端口的离开位映射阵列内的离开阵列偏移位置,其指示所述VLAN被所述端口支持,其中所述离开阵列偏移位置对应于所述VID的值,并且在所述端口上配置所述VLAN期间在所述离开位映射阵列内被设定; 响应于所述离开阵列偏移位置被设定并指示所述VLAN被所述端口支持,在所述端口处接收分组,并启动由所述端口对接收的分组的处理; 响应于所述离开阵列偏移位置未被设定,丢弃分组; 其中,仅在所述VID识别了在所述离开位映射阵列中设定了对应的偏移位置的VLAN时,所述离开路径上的检测到的分组被允许由所述端口处理。
3.如权利要求2所述的方法,还包括 检查是否设定了在所述虚拟端口的剥离位映射阵列内的剥离阵列偏移位置,其指示所述VLAN被所述端口支持并且所述VID应该在分组被转发之前被移除,其中所述剥离阵列偏移位置对应于所述VID的值,并且在所述端口上配置所述VLAN期间在所述剥离位映射阵列内被设定; 响应于所述剥离阵列偏移位置被设定,从分组移除所述VID,并将没有所述VID的分组转发到所述分组识别的VLAN的目的地设备。
4.如权利要求3所述的方法,其中 所述进入位映射阵列、离开位映射阵列和剥离位映射阵列中的每个是包括N个位条目的一维阵列,其中每一位对应于从O至N-I的偏移位置,N是整数,其表示能够由所述虚拟端口使用值的范围为从O至N-I的全局唯一的标识符(ID)支持的单独VLAN的最大数目;所述进入位映射阵列、离开位映射阵列和剥离位映射阵列之一中的偏移位置在相应位映射阵列中该位位置的值具有值一(I)时被设定;以及 所述检查是否设定了偏移位置包括将所述偏移位置处的值与一(I)进行比较,并当所述值等于一(I)时指示设定了所述偏移位置。
5.如权利要求3所述的方法,其中所述虚拟端口是访问端口和上行链路端口中的一个或多个,并且每个端口包括进入VLAN位映射,其包含对应于在到所述端口的进入路径中所述端口支持的VLAN的VID的设定的偏移位置;离开VLAN位映射,其包含对应于在所述端口的离开路径中所述端口支持的VLAN的VID的设定的偏移位置;以及剥离VLAN位映射,其包含对应于识别下述VLAN的VID的设定的偏移位置,其中对于所述VLAN,在从所述端口转发接收到的分组之前要在所述离开路径上移除所述VID。
6.如权利要求5所述的方法,其中 所述VLAN是私有VLAN (PVLAN)并且每个虚拟端口还包括PVID VLAN ID,其指示添加到所述进入路径上的未加标签分组的VLAN标签;并且所述方法包括 响应于在所述进入路径上接收到的分组不具有PVID,自动地利用所述虚拟端口的PVID对所述分组加标签;以及 响应于在所述离开路径上检测到的分组添加了 PVID,自动地在转发所述分组之前将所述PVID从所述分组移除。
7.如权利要求3所述的方法,还包括 接收将新VLAN添加到虚拟端口的请求; 向所述新VLAN分配全局唯一的ID作为新VID ; 在为所述新VLAN产生的每一个位映射阵列中识别偏移位置,其中所述偏移位置对应于所述新VID的值; 基于所述虚拟端口的类型特征,利用指示所述新VLAN的关联的值更新每个位映射阵列内的相应偏移位置。
8.如权利要求7所述的方法,还包括 基于从CLI接收的输入向所述新VLAN关联属性; 存储所述新VLAN的属性,并实例化所述端口,以处理去往和来自所述新VLAN上的设备的分组。
9.如权利要求I所述的方法,还包括 响应于接收到将新端口添加到PVLAN的请求 向所述新端口分配唯一的PVID VLAN ID; 为所述新端口自主地产生进入位映射阵列、离开位映射阵列和剥离位映射阵列;对应于所述端口支持的每个VLAN和每个PVLAN,设定所述进入位映射阵列、离开位映射阵列和剥离位映射阵列中的每个的适当的偏移位置; 存储所述进入位映射阵列、所述离开位映射阵列和所述剥离位映射阵列,用于在处理在所述新端口的进入路径和离开路径上接收到的分组时使用;以及与所述位映射阵列一起存储所分配的PVID VLAN ID。
10.如权利要求9所述的方法,其中所述自主地产生和设定所述进入位映射阵列、所述离开位映射阵列和所述剥离位映射阵列中的每个的适当的偏移位置包括 识别所述新端口与PVLAN的隔离子域、群体子域和混杂子域中的哪个关联; 其中所述隔离子域具有隔离VLAN ID(VID),所述群体子域具有群体VID,所述群体VID对于多个群体子域之中的该群体子域是唯一的,并且所述混杂子域共享主VLAN ID作为混杂 VID ; 响应于所述新端口与隔离子域关联,在所述进入位映射阵列内对应于所述隔离VID的进入偏移位置处设定位值,在所述离开位映射阵列内对应于所述混杂VID的离开偏移位置处设定位值,其中所述混杂VID与所述主VLAN ID相同,并且如果所述新端口的PVID被设定为所述隔离VID,则在所述剥离位映射内对应于所述混杂VID的剥离偏移位置处设定位值; 响应于所述新端口与群体子域关联,设定所述进入位映射阵列内对应于所述群体VID的进入偏移位置,在所述离开位映射阵列内对应于所述混杂VID的第一离开偏移位置处设定第一位值并在所述离开位映射阵列内对应于所述群体VID的第二离开偏移位置处设定第二位值,并且如果所述新端口的PVID被设定为群体VID,则在所述剥离位映射内分别对应于所述群体VID和所述混杂VID的第一剥离偏移位置处和第二剥离偏移位置处设定第一位值和第二位值;以及 响应于所述新端口与混杂子域关联,设定所述进入位映射阵列内对应于所述混杂VID的进入偏移位置,在所述离开位映射阵列内对应于所述PVLAN中的每个群体子域、隔离子域和主域的VID的一个或多个离开偏移位置处设定位值,并且在所述离开位映射阵列内对应于所述PVLAN中的每个群体子域、隔离子域和主域的VID的一个或多个离开偏移位置处设定位值。
11.如权利要求9所述的方法,其中响应于所述新端口与每一个都具有全局唯一VID的多个PVLAN关联,所述自主产生和设定所述进入位映射阵列、所述离开位映射阵列和所述剥离位映射阵列中的每个的适当的偏移位置包括 将为每个PVLAN产生的三个位映射的每个组中的各个组合并为三个组合的位映射的单个组,其中多个进入位映射阵列被合并为单个组合的进入位映射阵列,多个离开位映射阵列被合并为单个组合的离开位映射阵列,并且多个剥离位映射阵列被合并为单个组合的剥离位映射阵列。
12.如权利要求9所述的方法,其中响应于接收到将非私有VLAN添加到所述DVS的命令行接口请求,所述方法包括 利用相同的位设置产生所述进入位映射阵列和所述离开位映射阵列,用于非私有VLAN的访问端口位映射;以及 通过将所述VLAN的所有访问端口位映射(进入和离开)合并而自动地产生上行链路端口进入位映射和上行链路端口离开位映射。
13.一种数据处理系统,包括 一个或多个处理器,提供处理资源; 一个或多个存储器,耦接到所述一个或多个处理器; 一个或多个网络接口,使得能够经由物理网络与其它设备通信; 虚拟化管理器,将所述数据处理系统配置为具有分布式虚拟交换机(DVS)以及在虚拟环境内经由与DVS关联的端口在虚拟局域网(VLAN)内通信的一个或多个虚拟机的虚拟化机器,并且其中所述虚拟化管理器包括一个或多个可执行工具,所述可执行工具在处理资源上执行并使得所述虚拟化管理器 向在所述主机系统上的虚拟化环境内建立的PVLAN的每个子域分配全局唯一的VLAN标识符(ID); 利用正确的VID对来自所述PVLAN内的DVS的虚拟端口的离开路径以及去往所述PVLAN内的DVS的虚拟端口的进入路径中的分组加标签; 通过以下步骤动态地验证在所述虚拟端口的进入路径和离开路径上的接收分组的VID 在所述DVS的第一虚拟端口处检测分组的到来传输,其中所述第一虚拟端口被分配为使能接收分组向和从一个或多个VLAN内的设备的路由; 从所述分组的头部取回VLAN ID(VID),其中所述VLAN ID是被分配为从能够相对于所述第一虚拟端口支持的多个VLAN的其它VLAN唯一地识别特定VLAN的值; 响应于在所述第一虚拟端口的进入路径上检测到分组 检查是否设定了在所述虚拟端口的进入位映射阵列内的进入阵列偏移位置,其指示所述VLAN被所述端口支持,其中所述进入阵列偏移位置对应于所述VID的值,并且在所述端口上配置所述VLAN期间在所述进入位映射阵列内被设定; 响应于所述进入阵列偏移位置被设定并指示所述VLAN被所述端口支持,在所述端口处接收分组,并启动由所述端口对接收的分组的处理; 响应于所述进入阵列偏移位置未被设定,丢弃分组;并且 其中,仅在所述VID识别了在所述进入位映射阵列中设定了对应的偏移位置的VLAN时,所述进入路径上的检测到的分组被允许由所述端口处理; 响应于在所述端口的离开路径上检测到分组传输 检查是否设定了在所述虚拟端口的离开位映射阵列内的离开阵列偏移位置,其指示所述VLAN被所述端口支持,其中所述离开阵列偏移位置对应于所述VID的值,并且在所述端口上配置所述VLAN期间在所述离开位映射阵列内被设定; 响应于所述离开阵列偏移位置被设定并指示所述VLAN被所述端口支持,在所述端口处接收分组,并启动由所述端口对接收的分组的处理; 响应于所述离开阵列偏移位置未被设定,丢弃分组; 其中,仅在所述VID识别了在所述离开位映射阵列中设定了对应的偏移位置的VLAN时,所述离开路径上的检测到的分组被允许由所述端口处理。
14.如权利要求13所述的数据处理系统,其中在所述处理资源上执行的所述一个或多个可执行工具还使得所述虚拟化管理器 检查是否设定了在所述虚拟端口的剥离位映射阵列内的剥离阵列偏移位置,其指示所述VLAN被所述端口支持并且所述VID应该在分组被转发之前被移除,其中所述剥离阵列偏移位置对应于所述VID的值,并且在所述端口上配置所述VLAN期间在所述剥离位映射阵列内被设定; 响应于所述剥离阵列偏移位置被设定,从分组移除所述VID,并将没有所述VID的分组转发到所述分组识别的VLAN的目的地设备。
15.如权利要求14所述的数据处理系统,其中 所述进入位映射阵列、离开位映射阵列和剥离位映射阵列中的每个是包括N个位条目的一维阵列,其中每一位对应于从O至N-I的偏移位置,N是整数,其表示能够由所述虚拟端口使用值的范围为从O至N-I的全局唯一的标识符(ID)支持的单独VLAN的最大数目; 所述进入位映射阵列、离开位映射阵列和剥离位映射阵列之一中的偏移位置在相应位映射阵列中该位位置的值具有值一(I)时被设定;以及 一个或多个可执行工具在处理资源上执行并使得所述虚拟化管理器 所述可执行工具使得所述虚拟化管理器检查所述偏移位置是否被设定包括所述工具使得所述虚拟化管理器将所述偏移位置处的值与一(I)进行比较,并当所述值等于一(I)时指示所述偏移位置被设定。
16.如权利要求14所述的数据处理系统,其中 所述虚拟端口是访问端口和上行链路端口中的一个或多个,并且每个端口包括进入VLAN位映射,其包含对应于在到所述端口的进入路径中所述端口支持的VLAN的VID的设定的偏移位置;离开VLAN位映射,其包含对应于在到所述端口的离开路径中所述端口支持的VLAN的VID的设定的偏移位置;以及剥离VLAN位映射,其包含对应于识别下述VLAN的VID的设定的偏移位置,其中对于所述VLAN,在从端口转发接收到的分组之前要在所述离开路径上移除所述VID; 所述VLAN是私有VLAN (PVLAN)并且每个虚拟端口还包括PVID VLAN ID,其指示添加到所述进入路径上的未加标签分组的VLAN标签; 多个分布式虚拟交换机由同一组PVLAN支持,多个PVLAN域被提供在单个DVS内,以及所述虚拟化管理器的分组处理逻辑统一地强制执行PVLAN策略;并且 所述一个或多个可执行工具还使得所述虚拟化管理器响应于在所述进入路径上的接收的分组不具有PVID,自动地利用所述虚拟端口的PVID对所述分组加标签;以及响应于在所述离开路径上的检测的分组添加了 VID,自动地在转发所述分组之前将所述VID从所述分组移除。
17.一种在具有虚拟化管理器的主机数据处理系统(主机系统)中,所述虚拟化管理器的处理资源执行的方法,所述虚拟化管理器配置和使能虚拟化计算环境,所述虚拟化计算环境包括一个或多个虚拟机以及层2分布式虚拟交换机(DVS)的本地可访问组件,所述DVS包括支持至少一个虚拟局域网(VLAN)内的分组传输的多个虚拟端口,所述方法包括 响应于接收到将VLAN和私有VLAN(PVLAN)之一分配到端口的请求,产生一组端口 VLAN位映射; 将所述一组端口 VLAN位映射与端口 VLAN标识符(ID) (PVID) 一起存储;以及 响应于检测到在所述端口的进入路径和离开路径之一上穿过的分组,检查所述分组的VLAN ID (VID),将所述分组的VID设定并匹配到用于所述端口的一组端口 VLAN位映射,并且当所述VID在所述一组端口 VLAN位映射内匹配时使能分组传输,其中能够使用进入位映射对于源端口完成分组进入,并且能够使用目的地端口的离开位映射和剥离位映射对于所述目的地端口完成分组离开。
全文摘要
本发明涉及用于分布式虚拟交换机的私有虚拟局域网方法和系统。主机系统的虚拟化管理器的分组处理逻辑在去往/来自具有三个位映射阵列的虚拟端口的进入或离开路径上检测分组,所述虚拟端口用于处理虚拟逻辑局域网(VLAN)内的分组。所述逻辑检查分组的VLAN标识符(VID),以基于对应的位映射阵列内的偏移位置确定所述端口是否支持该VLAN。进入阵列偏移位置和离开阵列偏移位置两者都对应于VID的值,并且在端口上配置VLAN期间在特定位映射阵列内设定。当VLAN被端口所支持时,该逻辑使得分组能够被该端口处理。否则,该逻辑丢弃分组。剥离位映射阵列指示在端口(或目的地端口)的离开路径上转发分组之前何时应该移除该分组的VID。
文档编号H04L12/46GK102780608SQ20121014561
公开日2012年11月14日 申请日期2012年5月11日 优先权日2011年5月13日
发明者A.比斯瓦斯, D.G.卡玛思, D.龙德, J.基达姆比, J.巴斯韦尔, V.潘德伊 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1