用于在分布式虚拟交换机上提供位置无关的动态端口镜像的方法
【专利摘要】本发明公开了一种用于在分布式虚拟交换机上提供位置无关的动态端口镜像的方法。提供控制器来配置一组物理机内的一个或多个虚拟交换机以使其呈现为一组分布式虚拟交换机。响应于在物理机的端口处接收到数据分组,做出该端口是否具有位于该物理机上的监控端口的确定。如果该端口具有位于相同的物理机上的监控端口,则将数据分组的副本发送至该物理机的该监控端口。如果该端口具有位于不同的物理机上的监控端口,则将数据分组的副本连同该端口的标识(ID)以及该监控端口的ID一起封装,并将封装信息发送至控制器。
【专利说明】用于在分布式虚拟交换机上提供位置无关的动态端口镜像的方法
【技术领域】
[0001]本公开总体涉及服务器虚拟化,尤其涉及分布式虚拟交换机。更具体地,本公开涉及用于在分布式虚拟交换机上提供位置无关的(location independent)动态端口镜像的方法。
【背景技术】
[0002]一般而言,服务器虚拟化描述将物理资源及其使用与底层物理机相分离的软件抽象。大多数物理资源(诸如处理器、存储设备和网络适配器等)都可以被抽象和提供作为虚拟化实体。
[0003]虚拟机(VM)在服务器虚拟化中担任中心角色。VM是物理机及其硬件组件的虚拟化。VM通常包括虚拟处理器、虚拟系统存储器以及各种虚拟设备。单个物理机可以承载(host)多个VM。客户操作系统可在VM上执行,并如同在物理机的实际硬件上执行那样运行。
[0004]管理程序(hypervisor)或虚拟机管理器提供VM与物理机的底层硬件之间的接口。通过在各个VM之间多路复用对底层硬件的所有访问,管理程序保证各个VM对物理机的诸如处理器、系统存储器等实际硬件的使用。
[0005]典型的服务器虚拟化实现一般需要多个VM来共享物理机的网络适配器或网络接口卡(NIC),以便执行外部网络输入/输出操作。管理程序通常提供虚拟交换机(vswitch),该虚拟交换机在物理机上的VM之间提供互连性。在每个VM具有一个或多个虚拟NIC( vNIC)的情况下,vswitch接合于物理机的NIC与关联的VM的vNIC之间。一般而言,每个vNIC像物理NIC —样运行,被分配有媒体访问控制(MAC)地址,该MAC地址通常不同于物理NIC的MAC地址。该vswitch在各个vNIC与物理NIC之间执行分组路由。
【发明内容】
[0006]本公开提供了用于在分布式vswitch上提供端口镜像的改进方法。
[0007]根据本公开的优选实施方式,提供控制器来配置一组物理机内的一个或多个虚拟交换机以呈现为一组分布式虚拟交换机。响应于在物理机的端口处接收到数据分组,对该端口是否具有位于该物理机上的监控端口做出确定。如果该端口具有位于同一物理机上的监控端口,则将该数据分组的副本发送至该物理机的该监控端口。如果该端口具有位于不同物理机上的监控端口,则将数据分组的副本连同该端口的标识(ID)以及监控端口的ID一起封装,并将封装的信息发送至控制器。
[0008]本公开的所有特征和优点将在以下的详细书面描述中变得明显。
【专利附图】
【附图说明】
[0009]通过连同附图参考阅读以下说明性实施方式的详细描述,将会更好地理解本公开本身及其优选使用模式和优点,其中:
[0010]图1为可实现本发明优选实施方式的具有多个物理机的数据中心的框图;
[0011]图2为来自图1的数据中心的逻辑表示的框图;
[0012]图3为图示来自图2的末端节点与下行链路虚拟端口之间关系的示图;
[0013]图4为根据本发明优选实施方式的、在分布式虚拟交换机上的位置无关的动态端口镜像的总体架构的框图;以及
[0014]图5为根据本发明优选实施方式的、用于在分布式虚拟交换机上提供位置无关的动态端口镜像的方法的高级逻辑流程图。
【具体实施方式】
[0015]现参考附图,特别是图1,其描绘了可实现本发明优选实施方式的具有多个物理机的数据中心的框图。如图所示,数据中心10包括多个物理机12a-12n,所述物理机12a_12n通过网络交换机19与网络14通信。网络14可以是局域网(LAN)、广域网(WAN)或城域网(MAN)0数据中心10的设备可一同居于本地的单一地点或分布在分开的地点。
[0016]物理机12a_12n之中的每一个可包括如下硬件:诸如处理器、存储器、输入/输出(I/O)设备、网络接口卡(NIC)或融合网络适配器(CNA)等。物理机12a-12n可单独驻留或一起堆叠在机架内,诸如堆叠在机架式服务器中或刀片式服务器中,并且网络交换机19可单独驻留或与物理机12a-12n之中的一个或多个物理机一起堆叠在相同的机架内。
[0017]物理机12a_12n之中的每一个均可承载一个或多个末端节点。在图1中,物理机12a示出为承载两个末端节点18a和18b,并且物理机12η示出为承载一个末端节点18η。末端节点18a-18n可以是物理的或是虚拟的。末端节点18a_18b的示例包括但不限于应用程序、操作系统、虚拟机、管理程序、虚拟NIC和物理NIC、虚拟NIC队列和物理NIC队列以及虚拟存储设备和物理存储设备。末端节点18a-18b的类型包括但不限于网络末端节点和存储末端节点。网络末端节点处理网络数据分组,而存储末端节点处理存储数据分组。执行数据联网的物理末端节点和虚拟末端节点分别称为物理网络末端节点和虚拟网络末端节点,而执行存储联网的物理末端节点和虚拟末端节点分别称为物理存储末端节点和虚拟存储末端节点。
[0018]网络交换机19包括多个物理下行链路端口 15a_15n和多个物理上行链路端口16a-16n。网络交换机19执行物理下行链路端口 15a_15n与物理上行链路端口 16a_16n之间的数据分组交换。物理机12a-12n之中的每一个经由物理链路13a_13n之中对应的一个物理链路直接连接至物理下行链路端口 15a-15n之中的一个端口。物理上行链路端口16a-16n用来将网络交换机19经由物理上行链路17a_17n连接至网络14。
[0019]网络交换机19可包括管理模块11,通过该管理模块11来配置网络交换机19以基于虚拟端口(V-端口)而执行数据分组交换。以太网交换机是网络交换机19的示例性实现。
[0020]现参考图2,其描绘了数据中心10的逻辑表示。如图所示,数据中心10’包括与V-端口交换机29通信的末端节点28a-28n。v-端口交换机29是这样的网络单元:其可获悉物理机的一个或多个末端节点的存在和标识,并且可以检测、监控和控制发往和来自这些末端节点的数据分组流量。在图2中,末端节点28a-28n之中的每一个在逻辑上连接至V-端口交换机29的虚拟端口(V-端口)25a-25n之中一个不同的端口。V-端口 25a_25n之中的每一个被唯一地分配给末端节点28a-28n之中的一个节点。例如,在逻辑上,V-端口25a经由虚拟下行链路23a连接至末端节点28a ;v-端口 25b经由虚拟下行链路23b连接至末端节点28b ;并且V-端口 25η经由虚拟下行链路23η连接至末端节点28η。
[0021 ] 末端节点28a_28n是在连接至v_端口交换机19的物理端口的物理机12a_12n上运行的计算实体或流量处理实体。此类实体可以是诸如网络接口卡(NIC)等物理实体,或者是诸如虚拟机的虚拟NIC等虚拟实体。
[0022]V-端口交换机29的V-端口的生成可静态地通过管理员配置或者动态地(即,实时地)通过末端节点发现和自动V-端口分配而发生。V-端口交换机29以类似于这些物理端口的方式来使用V-端口 25a-25n。由于完整物理端口功能性可扩展至v_端口 25a_25n,因此将V-端口 25a-25n之中的每一个视为至少具有与物理端口相同的能力。
[0023]V-端口 25a_25n至末端节点23a_23n的关联为一对一关系。v_端口的末端节点关联的示例包括但不限于以下关联:与操作于物理机上的虚拟机的虚拟NIC或其子集的关联;与物理机上多队列NIC的不同队列或其子集的关联;与CNA的不同网络队列或其子集的关联;以及与CNA上不同类型流量(诸如以太网光纤信道(FCoE)流量)的关联。
[0024]V-端口交换机29还定义上行链路V-端口 26a_26n,所述上行链路V-端口 26a_26n在逻辑上通过虚拟上行链路27a-27n连接至物理上行链路端口 16a_16n (来自图1)。虚拟上行链路27a-27n之中的每一个与上行链路V-端口 26a_26n中之一具有——对应,并将该上行链路V-端口连接至物理上行链路端口 16a-16n (来自图1)中之一。多个虚拟上行链路27a-27n,以及因此的多个上行链路V-端口 26a_26n可在逻辑上连接至相同的物理上行链路端口 16a-16n。下行链路V-端口 25a_25n之中的每一个在逻辑上关联于上行链路V-端口 26a-26n中之一,其中下行链路V-端口 25a_25n之中的不止一个端口有可能与上行链路V-端口 26a-26n之中任何给定的一个端口相关联。当数据分组经由下行链路v_端口 25a-25n中之一抵达v_端口交换机29时,V-端口交换机29将该数据分组交换至上行链路V-端口 26a-26n之中相关联的一个,并且从该上行链路v_端口将该数据分组交换至物理上行链路端口 16a-16n之中在逻辑上与该上行链路V-端口相连的特定一个端口。
[0025]现参考图3,其图示了来自图2的末端节点与下行链路虚拟端口之间的关系。如图所示,多个末端节点在连接至相同物理接口的虚拟机(VM)内运行。物理机12a (来自图O具有虚拟化软件,该虚拟化软件包括管理程序30,用于将物理机12a的硬件抽象成一个或多个 VM31a、VM31b 和 VM31c。
[0026]VM31a_31c之中的每一个都具有一个或多个关联的虚拟接口(VIF)诸如虚拟NIC,其中每个VIF具有其自己唯一的虚拟MAC地址(vMAC)。在图3中,虚拟机31a、虚拟机31b二者分别具有一个VIF34a、VIF34b,并且虚拟机31c具有两个VIF——VIF34c和VIF34d。此外,VM31a-31c之中的每一个都包括在其自己的客户操作系统内执行的至少一个软件应用。任何类型的应用均可在VM31a-31c中之一上执行。
[0027]VIF34a_34d之中的每一个均为虚拟末端节点的示例。可以配置VIF34a_34d之中给定的一个VIF来处理数据联网通信或存储通信。处理数据联网通信的VIF为虚拟网络末端节点的示例,而处理存储通信的VIF为虚拟存储末端节点的示例。管理程序30与处理发往和来自V-端口交换机29的I/O的NIC60通信。通过管理程序30,VIF34a_34d在逻辑上经由虚拟链路38连接至NIC60。
[0028]NIC60通过物理链路39a连接至物理端口 32a。如由虚拟链路36a_36d所表示,逻辑上与物理端口 32a相关联的是四个下行链路V-端口 25a-25d。下行链路v_端口 25a_25d之中的每一个被唯一地分配给虚拟末端节点VIF34a-34d中之一。例如,可将V-端口 25a分配给VIF34a ;将V-端口 25b分配给VIF34b ;将V-端口 25c分配给VIF34c ;以及将V-端口 25d分配给VIF34d。还可以认为这四个下行链路V-端口 25a-25d是在逻辑上关联于物理链路39a ;亦即,下行链路V-端口 25a-25d之中的每一个均为物理链路39a的细分部分。
[0029]现参考图4,其图示了根据本发明的优选实施方式、在分布式虚拟交换机上的位置无关的动态端口镜像的总体架构的框图。为了实现在其中源端口与监控端口位于分离的物理机上的端口镜像特征,解决方案需要包括作为分布式虚拟交换机(DVS)解决方案的一部分的其他组件。例如,网络管理员配置DVS和端口设置需要中央控制器41。DVS与控制器之间存在一对一映射。此外,在对应的物理机12a_12n中包含内核模式模块42a_42n,用于处理分组转发。并且,可以在对应的物理机12a-12n中可选地包含用户模式模块43a_43n,用于处理一些控制平面协议。
[0030]内核模式模块42a_42n之中的每个模块和用户模式模块43a_43n之中的每个模块使用操作系统特定机制来彼此交互。另一方面,用户模式模块43a-43n之中的每个模块经由套接字与控制器41通信。本发明利用内核模式模块42a-42n、用户模式模块43a_43n以及控制器41之间的通信路径,来封装数据分组以及将数据分组从物理机12a-12n之中的一个物理机上的内核模式模块发送至物理机12a-12n之中不同的一个物理机上的内核模式模块。
[0031]由控制器41执行(镜像)数据分组目的地的多路复用。为了实现这一点,控制器41必须能够知晓位于每个物理机处的用户模式模块的(套接字)位置,并且位于源端口(端口镜像末端)处的用户模式模块必须在封装数据分组中封装足够的信息,以便控制器41能够决定应当将封装分组定向至物理机12a-12n之中的哪个物理机。
[0032]为了在V-端口上激活VM,V-端口需要首先向控制器41报告。例如,在图3中,VIF34a连接至物理机12a上的管理程序30,并且在VIF34a向控制器(未示出)发送消息之后,VM31a在物理机12a上激活。控制器转而在其数据库中记录VIF34a的位置。VIF在任何给定时间仅能在一个物理机上激活。如果VIF在迁移期间移至不同的物理机,则VIF在激活于不同物理机上之前将必须从当前的物理机断开。例如,在VIF34a已从物理机12a上的管理程序30断开之后,VIF34a向控制器发送消息,并且VM31a不再激活于物理机12a上。控制器继而从其数据库移除VIF34a的位置。
[0033]用户可通过使用管理工具来分配和配置分布式交换机上的(镜像)端口的监控端口。例如,VIF34a可具有监控端口 VIF34a’。
[0034]现参考图5,其描绘了根据本发明的优选实施方式、用于处理分布式虚拟交换机上的本地端口镜像的方法的高级逻辑流程图。起始于块50,响应于抵达物理机(例如,物理机12a)的端口(例如,VIF34a)的传入数据分组,如块51中所示对该端口是否具有监控端口做出确定。
[0035]如果该端口具有监控端口(例如,监控端口 VIF34a’),则如块52中所描绘做出该监控端口是否位于同一物理机(例如,物理机12a)上的另一确定。如果监控端口不位于同一物理机上,则继而如块53中所示将数据分组的副本、源端口 ID (B卩,VIF34a的端口 ID)以及监控端口 ID (即,VIF34a’的端口 ID)封装并发送至控制器(例如,控制器41 )。控制器继而如块54中所描绘,确定监控端口 ID是否存储在其数据库中。如果监控端口 ID被存储在控制器数据库中,则该控制器如块55中所示,基于存储在控制器数据库中的信息而将数据分组发送至监控端口 ID的位置。否则,如果监控端口 ID未被存储在控制器数据库中,则如块56中所描绘那样丢弃该数据分组。
[0036]另外,如果监控端口位于相同的物理机上,则继而如块57中所示,将传入数据分组的完整副本发送至监控端口(即,监控端口 VIF34a’)。
[0037]如上文所述,本公开提供了用于在分布式虚拟交换机上提供位置无关的动态端口镜像的方法。
[0038]还应当着重注意的是,尽管本发明是在全功能计算机系统的背景下得到描述,但本领域技术人员将会明白,本发明的机制能够作为程序产品而分布于诸如光盘和数字视频盘等多种可记录类型介质中。虽然已特别参考优选实施方式而示出并描述了本公开,但本领域技术人员将会理解,可以在其中做出形式上和细节上的各种更改而不偏离本公开的范围。
【权利要求】
1.一种用于提供位置无关的动态端口镜像的方法,所述方法包括: 通过控制器来配置与多个物理机相关联的一个或多个虚拟交换机,以呈现为一组分布式虚拟交换机; 响应于在所述物理机之中的一个物理机的端口处接收到数据分组,确定所述端口是否具有位于所述一个物理机上的监控端口; 响应于确定所述端口具有位于所述一个物理机上的监控端口,将所述数据分组的副本发送至所述监控端口 ;以及 响应于确定所述端口具有位于所述物理机之中的一个不同的物理机上的监控端口,将所述数据分组的副本连同所述端口的标识(ID)以及所述监控端口的ID进行封装,并且将所述经封装的信息发送至所述控制器。
2.根据权利要求1中所述的方法,其中所述方法还包括: 由所述控制器确定所述监控端口 ID是否被存储在与所述控制器相关联的数据库中;响应于确定所述监控端口 ID被存储在与所述控制器相关联的数据库中,根据存储在与所述控制器相关联的所述数据库中的所述监控端口 ID,将所述数据分组发送至所述监控端口 ;以及 响应于确定所述监控端口 ID未被存储在与所述控制器相关联的数据库中,丢弃所述数据分组。
3.根据权利要求1或权利要求2中所述的方法,其中所述虚拟交换机与每个所述物理机的管理程序相关联。
4.根据权利要求3中所·述的方法,其中所述控制器使用与每个所述物理机的管理程序相关联的通信模块,来与每个所述物理机通信。
5.一种具有用于提供位置无关的动态端口镜像的计算机程序产品的计算机可读介质,所述计算机可读介质包括: 用于通过控制器来配置与多个物理机相关联的一个或多个虚拟交换机以呈现为一组分布式虚拟交换机的程序代码; 用于响应于在所述物理机之中的一个物理机的端口处接收到数据分组、确定所述端口是否具有位于所述一个物理机上的监控端口的程序代码; 用于响应于确定所述端口具有位于所述一个物理机上的监控端口、将所述数据分组的副本发送至所述监控端口的程序代码;以及 用于响应于确定所述端口具有位于所述物理机之中的一个不同的物理机上的监控端口、将所述数据分组的副本连同所述端口的标识(ID)以及所述监控端口的ID进行封装并且将所述经封装的信息发送至所述控制器的程序代码。
6.根据权利要求5中所述的计算机可读介质,其中所述计算机可读介质还包括: 用于由所述控制器确定所述监控端口 ID是否被存储在与所述控制器相关联的数据库中的程序代码; 用于响应于确定所述监控端口 ID被存储在与所述控制器相关联的数据库中、根据存储在与所述控制器相关联的所述数据库中的所述监控端口 ID来将所述数据分组发送至所述监控端口的程序代码;以及 用于响应于确定所述监控端口 ID未被存储在与所述控制器相关联的数据库中、丢弃所述数据分组的程序代码。
7.根据权利要求5或权利要求6中所述的计算机可读介质,其中所述虚拟交换机与每个所述物理机的管理程序相关联。
8.根据权利要求7中所述的计算机可读介质,其中所述控制器使用与每个所述物理机的管理程序相关联的通信模块来与每个所述物理机通信。
9.一种用于提供位置无关的动态端口镜像的装置,所述装置包括: 控制器,用于配置与多个物理机相关联的一个或多个虚拟交换机以呈现为一组分布式虚拟交换机; 用于响应于在所述物理机之中的一个物理机的端口处接收到数据分组而确定所述端口是否具有位于所述一个物理机上的监控端口的装置; 用于响应于确定所述端口具有位于所述一个物理机上的监控端口、将所述数据分组的副本发送至所述监控端口的装置;以及 用于响应于确定所述端口具有位于所述物理机之中的一个不同的物理机上的监控端口、将所述数据分组的副本连同所述端口的标识(ID)以及所述监控端口的ID进行封装的装置;以及 用于将所述经封装的信息发送至所述控制器的装置。
10.根据权利要求9中所述的装置,其中所述控制器可操作用于确定所述监控端口ID是否被存储在与所述控制器相关联的数据库中,所述装置还包括: 用于响应于确定所述监控端口 ID被存储在与所述控制器相关联的数据库中、根据存储在与所述控制器相关联的所述数据库中的所述监控端口 ID来将所述数据分组发送至所述监控端口的装置;以及 用于响应于确定所述监控端口 ID未被存储在与所述控制器相关联的数据库中、丢弃所述数据分组的装置。
11.根据权利要求9或权利要求10中所述的装置,其中所述虚拟交换机与每个所述物理机的管理程序相关联。
12.根据权利要求11中所述的装置,其中所述控制器可操作用于使用与每个所述物理机的管理程序相关联的通信模块来与每个所述物理机通信。
【文档编号】H04L12/46GK103548327SQ201280023789
【公开日】2014年1月29日 申请日期:2012年4月18日 优先权日:2011年5月14日
【发明者】J·基达姆比, A·比斯瓦斯, J·I·巴斯韦尔, H·帕迪耶, V·潘迪, D·龙德 申请人:国际商业机器公司