用于低开销数据传输的方法和系统转让专利

申请号 : CN200980131451.6

文献号 : CN102124449A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : S·特里帕西

申请人 : 甲骨文美国公司

摘要 :

一种用于低开销数据传输的方法。该方法包括由第一应用启动与第二应用的传输通信协议(TCP)连接;响应于所述启动,建立第一应用和第二应用之间的TCP连接;由第一应用向第二应用提供预发布缓存信息,其中该预发布缓存信息对应于第一计算机的物理存储器中的位置,且其中物理存储器中的该位置对应于第一应用的虚拟存储器地址。该方法还包含由第二应用使用该预发布缓存信息向第一应用传输数据,其中传输数据包含直接向第一计算机的物理存储器中的位置写入所述数据。

权利要求 :

1.一种用于低开销数据传输的方法,包含:

由第一应用启动与第二应用的传输通信协议(TCP)连接,其中第一应用在第一虚拟机中在第一计算机上运行,第二应用在第二虚拟机中在第二计算机上运行,且第一计算机和第二计算机位于机柜中且通过机柜互连通信;

响应于所述启动,建立第一应用和第二应用之间的TCP连接;

判断所述第一计算机和所述第二计算机位于所述机柜中;

由第一应用向第二应用提供预发布缓存信息,其中所述预发布缓存信息对应于第一计算机的物理存储器中的位置,且其中物理存储器中的该位置对应于第一应用的虚拟存储器地址;以及使用预发布缓存信息由第二应用向第一应用传输数据,其中传输数据包含直接向第一计算机的物理存储器中的位置写入数据。

2.根据权利要求1所述的方法,还包含:

产生预发布信息,其中产生预发布信息包含:

在与第一应用相关的虚拟存储器中分配虚拟存储器地址;

向运行第一应用的来宾操作系统(OS)提供虚拟存储器地址,其中该来宾OS在第一虚拟机中运行;

转换虚拟存储器地址以获得与来宾操作系统相关的来宾OS虚拟存储器地址;

向其上运行来宾操作系统的主机操作系统提供来宾OS虚拟存储器地址;

转换所述虚拟机存储器地址以获得与主机操作系统相关的主机OS虚拟存储器地址,其中该主机OS虚拟存储器地址对应于第一计算机的物理存储器中的所述位置。

3.根据权利要求1或权利要求2所述的方法,其中该预发布信息通过TCP连接被提供且该预发布信息被提供到第一虚拟网络接口卡(VNIC)。

4.根据权利要求3所述的方法,其中该第一VNIC被配置成将从第二VNIC接收的物理存储器中的位置与第一应用相关的允许地址范围进行比较以判断数据是否可以被发送到所述物理存储器中的所述位置,其中该第一VNIC位于第一计算机上。

5.根据前述权利要求其中任一项所述的方法,其中该第二应用向位于第二计算机上的第二虚拟网络接口卡(VNIC)提供与所述TCP连接相关的物理存储器的位置。

6.根据权利要求5所述的方法,其中传输数据包含:

使用远程直接存储器访问(RDMA)和第一计算机的物理存储器中的所述位置,由第二VNIC向第一计算机的物理存储器中的所述位置写入数据。

7.根据权利要求5或6所述的方法,其中第一VNIC和第二VNIC是虚拟网络路径中的节点,其中所述虚拟网络路径包含第一VNIC和第二VNIC之间的第一虚拟线路。

8.根据权利要求5所述的方法,其中第二虚拟机被配置成从第一虚拟机向第一计算机的物理存储器中的位置直接传输数据,其中第二VNIC使用远程直接存储器访问(RDMA)引擎传输所述数据。

9.根据前述权利要求其中任一项所述的方法,其中第一计算机和第二计算机是刀片。

10.一种系统,包含:

机柜互连;以及

运行在第一虚拟机中的第一计算机上的第一应用以及运行在第二虚拟机中的第二计算机上的第二应用,其中第一计算机和第二计算机位于机柜中且通过机柜互连通信,其中第一应用被配置成启动与第二应用的传输通信协议(TCP)连接,其中响应于所述启动,在第一应用和第二应用之间建立所述TCP连接,其中第一应用被配置成在第一应用被判断为在与第二应用相同的机柜上运行之后向第二应用提供预发布缓存信息,其中所述预发布缓存信息对应于第一计算机的物理存储器中的位置且其中物理存储器中的所述位置对应于第一应用的虚拟存储器地址,并且其中第二应用使用预发布缓存信息向第一应用传输数据,其中传输数据包含直接向第一计算机的物理存储器中的所述位置写入数据。

11.根据权利要求10所述的系统,其中预发布信息通过以下步骤产生:在与第一应用相关的虚拟存储器中分配虚拟存储器地址;

向运行第一应用的来宾操作系统(OS)提供虚拟存储器地址,其中该来宾OS在第一虚拟机中运行;

转换虚拟存储器地址以获得与来宾操作系统相关的来宾OS虚拟存储器地址;

向其上运行来宾操作系统的主机操作系统提供来宾OS虚拟存储器地址;

转换所述虚拟存储器地址以获得与主机操作系统相关的主机OS虚拟存储器地址,其中该主机OS虚拟存储器地址对应于第一计算机的物理存储器中的位置。

12.根据权利要求10或权利要求11所述的系统,其中通过所述TCP连接提供所述预发布信息。

13.根据权利要求10至12中任何一项所述的系统,其中第二应用向位于第二计算机上的虚拟网络接口卡(VNIC)提供与所述TCP连接相关的物理存储器的位置。

14.根据权利要求13所述的系统,其中传输数据包含:使用远程直接存储器访问(RDMA)和第一计算机的物理存储器中的所述位置,由所述VNIC向第一计算机的物理存储器中的所述位置写入数据。

15.根据权利要求13所述的系统,其中第二虚拟机被配置成从第一虚拟机向第一计算机的物理存储器中的位置直接传输数据,其中所述VNIC使用远程直接存储器访问(RDMA)引擎传输所述数据。

16.根据权利要求10至15其中任一项所述的系统,其中第一计算机和第二计算机是刀片。

17.一种计算机程序产品,包含用于低开销数据传输的多个可运行指令,其中该多个可运行指令包含用于以下目的的指令:由第一应用启动与第二应用的传输通信协议(TCP)连接,其中第一应用在第一虚拟机中在第一计算机上运行,第二应用在第二虚拟机中在第二计算机上运行,且第一计算机和第二计算机位于机柜中且通过机柜互连通信;

响应于所述启动,建立第一应用和第二应用之间的TCP连接;

判断第一计算机和第二计算机位于所述机柜中;

由第一应用向第二应用提供预发布缓存信息,其中所述预发布缓存信息对应于第一计算机的物理存储器中的位置,且其中物理存储器中的该位置对应于第一应用的虚拟存储器地址;以及使用预发布缓存信息由第二应用向第一应用传输数据,其中传输数据包含直接向第一计算机的物理存储器中的位置写入数据。

18.根据权利要求17所述的计算机程序产品,其中所述多个可运行指令还包含用于以下目的的指令:产生预发布信息,其中产生预发布信息包含:

在与第一应用相关的虚拟存储器中分配虚拟存储器地址;

向运行第一应用的来宾操作系统(OS)提供虚拟存储器地址,其中该来宾OS在第一虚拟机中运行;

转换虚拟存储器地址以获得与来宾操作系统相关的来宾OS虚拟存储器地址;

向其上运行来宾操作系统的主机操作系统提供来宾OS虚拟存储器地址;

转换所述虚拟机存储器地址以获得与主机操作系统相关的主机OS虚拟存储器地址,其中该主机OS虚拟存储器地址对应于第一计算机的物理存储器中的所述位置。

19.根据权利要求17或权利要求18所述的计算机程序产品,其中在位于第一计算机上的第一虚拟网络接口卡(VNIC)和位于第二计算机上的第二VNIC之间建立所述TCP连接,其中第一计算机和第二计算机是刀片。

20.根据权利要求19所述的计算机程序产品,使用远程直接存储器访问(RDMA)引擎,由第二VNIC向第一计算机的物理存储器中的所述位置写入所述数据。

21.根据权利要求17至20其中任一项所述的计算机程序产品,包含计算机可读介质,该计算机可读介质承载该多个可运行指令。

说明书 :

用于低开销数据传输的方法和系统

背景技术

[0001] 常规地,在计算机相关领域中,网络是配置成彼此通信的物理计算机系统的布置。在一些情况中,物理计算机系统包括虚拟机,该虚拟机也可以配置成与网络交互(即,与网络中的其他物理计算机和/或虚拟计算机通信)。存在很多不同类型的网络,且网络可以基于网络的各个方面分类,诸如通过规模、连接方法、网络中计算机系统的功能关系和/或网络拓扑。
[0002] 在连接方法方面,网络可以广义地分为有线(使用诸如以太网线缆的有形连接媒介)或无线(使用诸如无线电波的无形连接媒介)。不同连接方法也可以组合在单个网络中。例如,有线网络可以扩展为允许装置无线地连接到网络。然而,诸如路由器、交换机和服务器的核心网络组件一般使用物理布线连接。以太网是电子和电气工程师协会(IEEE)内限定的802.3标准,由802.3工作组监督管理。
[0003] 为了形成有线网络,计算机系统必须彼此物理连接。即,物理布线(例如以太网线缆)的端部必须物理连接到形成网络的计算机系统中的网络接口卡。为了重新配置网络(例如,为了更换服务器或者改变网络拓扑),物理布线其中的一个或多个必须从计算机系统断开且连接到不同的计算机系统。
[0004] 而且,当在网络中的计算机之间传输数据时,一个或多个网络协议常用于帮助确保数据被成功传输。例如,网络协议可以使用校验和、小数据分组、确认以及其他数据完整性特征来帮助避免数据丢失或数据传输期间的破坏。在(多个)网络协议中需要的数据完整性特征的量一般依赖于被传输的数据的类型以及计算机系统之间的(多个)连接的质量。

发明内容

[0005] 一般地,在一个方面中,本发明涉及一种用于低开销数据传输的方法。该方法包括:由第一应用启动与第二应用的传输通信协议(TCP)连接,其中第一应用在第一虚拟机中在第一计算机上运行,第二应用在第二虚拟机中在第二计算机上运行,且第一计算机和第二计算机位于机柜中且通过机柜互连通信;响应于所述启动,建立第一应用和第二应用之间的TCP连接;判断第一计算机和第二计算机位于所述机柜中;由第一应用向第二应用提供预发布缓存信息,其中所述预发布缓存信息对应于第一计算机的物理存储器中的位置,且其中物理存储器中的该位置对应于第一应用的虚拟存储器地址;以及使用预发布缓存信息由第二应用向第一应用传输数据,其中传输数据包含直接向第一计算机的物理存储器中的位置写入数据。
[0006] 一般地,在一个方面中,本发明涉及一种系统。该系统包含机柜互连以及运行在第一虚拟机中的第一计算机上的第一应用以及运行在第二虚拟机中的第二计算机上的第二应用,其中第一计算机和第二计算机位于机柜中且通过机柜互连通信,其中第一应用被配置成启动与第二应用的传输通信协议(TCP)连接,其中响应于所述启动,在第一应用和第二应用之间建立所述TCP连接,其中第一应用被配置成在第一应用被判断为在与第二应用相同的机柜上运行之后向第二应用提供预发布缓存信息,其中所述预发布缓存信息对应于第一计算机的物理存储器中的位置且其中物理存储器中的所述位置对应于第一应用的虚拟存储器地址,并且其中第二应用使用预发布缓存信息向第一应用传输数据,其中传输数据包含直接向第一计算机的物理存储器中的所述位置写入数据。
[0007] 一般地,在一个方面中,本发明涉及一种例如在计算机可读介质上实施的程序产品,该程序产品包含用于低开销数据传输的多个可执行指令,其中该多个可执行指令包含用于以下目的的指令:由第一应用启动与第二应用的传输通信协议(TCP)连接,其中第一应用在第一虚拟机中在第一计算机上运行,第二应用在第二虚拟机中在第二计算机上运行,且第一计算机和第二计算机位于机柜中且通过机柜互连通信;响应于所述启动,建立第一应用和第二应用之间的TCP连接;判断第一计算机和第二计算机位于所述机柜中;由第一应用向第二应用提供预发布缓存信息,其中所述预发布缓存信息对应于第一计算机的物理存储器中的位置,且其中物理存储器中的该位置对应于第一应用的虚拟存储器地址;以及使用预发布缓存信息由第二应用向第一应用传输数据,其中传输数据包含直接向第一计算机的物理存储器中的位置写入数据。
[0008] 本发明的其他方面将从下面的说明和所附权利要求显现。

附图说明

[0009] 图1示出根据本发明的一个或多个实施例的刀片机柜的示图。
[0010] 图2示出根据本发明的一个或多个实施例的刀片的示图。
[0011] 图3示出根据本发明的一个或多个实施例的网络直通管理器的示图。
[0012] 图4示出根据本发明的一个或多个实施例的虚拟机的示图。
[0013] 图5示出根据本发明的一个或多个实施例的用于创建虚拟网络路径的方法的流程图。
[0014] 图6A-6C示出根据本发明的一个或多个实施例的创建虚拟网络路径的示例。
[0015] 图7-8示出根据本发明的一个或多个实施例的用于低开销数据传输的方法的流程图。
[0016] 图9示出根据本发明的一个或多个实施例的低开销数据传输的示例。

具体实施方式

[0017] 参考附图,现在将仅作为示例详细描述本发明的特定实施例。出于一致性,各个附图中相似的元件由相似的附图标记指示。
[0018] 在下面的本发明的实施例的详细描述中,提出了各种特定细节以提供本发明的更彻底的理解。然而,对于本领域技术人员而言,很明显,本发明可以不使用这些特定细节实践。在其他实例中,并不详细描述公知的特性以避免使得说明书不必要地复杂化。
[0019] 一般而言,本发明的实施例提供用于低开销数据传输的方法和系统。更具体而言,本发明的实施例提供用于使得在公共刀片机柜内的刀片上执行的两个应用能够使用低开销数据传输通信的方法和系统。而且,本发明的实施例提供使得两个应用参与零拷贝握手且然后使用低开销数据传输进行通信的方法和系统。
[0020] 在本发明的一个或多个实施例中,VNIC经由机柜互连彼此连接。尤其是,VNIC可以是虚拟网络路径的节点,该虚拟网络路径包括用于经由机柜互连发射网络流量的“虚拟线路”。虚拟线路的概念在稍后详细讨论。
[0021] 图1示出根据本发明的一个或多个实施例的刀片机柜(100)的示图。刀片机柜(100)包括与机柜互连(106)耦合通信的多个刀片(例如,刀片A(102)、刀片B(104))。例如,刀片机柜(100)可以是Sun微系统公司的Sun Blade 6048机柜、IBM机柜、惠普公司的HP BladeSystem机箱或者任意其他类型的刀片机柜。刀片可以是与刀片机柜(100)兼容的任意(多种)类型。 是总部设在纽约Armonk的国际
商业机器公司(IBM)的注册商标。
[0022] 在本发明的一个或多个实施例中,刀片配置成经由机柜互连(106)彼此通信。因而,刀片机柜(100)允许刀片之间的通信而无需刀片之间的传统网络线路(诸如以太网线缆)。例如,依赖于刀片机柜(100)的类型,机柜互连(106)可以是外围部件互连直通(PCI-E)底板,且刀片可以配置成经由PCI-E端点彼此通信。本领域技术人员应当意识到,其他连接技术可用于连接刀片和刀片机柜。
[0023] 继续图1的讨论,为了与刀片机柜(100)外部的客户端通信,刀片配置成共享物理网络接口(110)。物理网络接口(110)包括一个或多个网络端口(例如以太网端口),且提供刀片机柜(100)与刀片机柜(100)所连接的网络(即,刀片机柜(100)外部的互连计算机系统)之间的接口。刀片机柜(100)例如可以使用多个网络端口连接到多个网络。
[0024] 在一个或多个实施例中,物理网络接口(110)通过网络直通管理器(108)管理。具体而言,网络直通管理器(108)配置成管理刀片对于物理网络接口(110)的访问。网络直通管理器(108)还可以配置成以稍后详细讨论的方式管理刀片自身之间的内部通信。网络直通管理器(108)可以是硬件、软件和/或包括用于管理网络流量的可执行逻辑的固件的任意组合。
[0025] 图2示出了根据本发明的一个或多个实施例的刀片(200)的示图。“刀片”在技术方面指的是位于刀片机柜(例如图1的刀片机柜(100))中的计算机系统。刀片典型地比分立计算机系统或常规服务器包含更少的组件。在本发明的一个或多个实施例中,也可以使用全特征的分立计算机系统或常规服务器来代替刀片或者与刀片一起使用。一般而言,刀片机柜中的刀片各包括一个或多个处理器和相关存储器(例如RAM、ROM等)。刀片还可以包括存储装置(例如,硬盘和/或光盘驱动)和很多现今计算机系统(未示出)常见的其他元件和功能,诸如键盘、鼠标和/或诸如监视器的输出装置。上述组件其中一个或多个可以被位于刀片机柜中的多个刀片到共享。例如,多个刀片可以共享单个输出设备。
[0026] 继续图2的讨论,刀片(200)包括配置成运行一个或多个虚拟机(例如,虚拟机C(202),虚拟机D(204))的主机操作系统(未示出)。广义地说,虚拟机是配置成经由抽象层继承主机操作系统的底层功能性的不同的操作环境。在本发明的一个或多个实施例中,每个虚拟机包括操作系统的单独的实例(例如操作系统实例C(206)、操作系统实例D(208))。例如, 虚拟化项目允许在一个主机操作系统中执行多个来宾操作系统。 是Xen项目顾问委员会管理的商标。在本发明的一个或多个实施例中,主机操作系统支持虚TM TM
拟运行环境。虚拟运行环境的一个示例是Solaris 容器。在这种情况下,Solaris 容器TM TM
可以在主机操作系统中运行,该主机操作系统可以是Solaris 操作系统。Solaris 是Sun微系统公司的商标。在本发明的一个或多个实施例中,主机操作系统可以包括虚拟机和虚拟运行环境。
[0027] 存在很多不同类型的虚拟机和虚拟运行环境。而且,虚拟机可以包括很多不同类型的功能性,诸如交换机、路由器、防火墙、负载均衡器、应用服务器、任意其他类型的支持网络的服务或其任意组合。
[0028] 在本发明的一个或多个实施例中,虚拟机和/或虚拟运行环境经由VNIC(例如VNIC C(210)、VNIC D(212))从主机操作系统继承网络连接性。对于虚拟机和虚拟运行环境,VNIC看成是物理NIC。在本发明的一个或多个实施例中,VNIC的使用允许任意数目的虚拟机和/或虚拟运行环境共享刀片(200)的联网功能性。而且,在本发明的一个或多个实施例中,每个虚拟机和/或虚拟运行环境可以与任意数目的VNIC相关联,由此提高在可用于虚拟机和/或虚拟运行环境的联网功能性的类型方面的的灵活性。例如,虚拟机可以使用一个VNIC来用于输入的网络流量,且使用另一VNIC来用于输出的网络流量。
[0029] 根据本发明的一个或多个实施例的VNIC在Nicolas G.Droux,Erik Nordmark和Sunay Tripathi等人名下的名为“Multiple VirtualNetwork Stack Instances using Virtual Network Interface Cards”的共同所有的美国专利申请No.11/489,942中详细描述,此处通过引用结合其全部内容作为参考。根据本发明的一个或多个实施例的VNIC还在Sunay Tripathi,Tim P.Marsland和Nicolas G.Droux等人名下的名为“Method and System for Controlling Virtual Machine Bandwidth”的共同所有的美国专利申请No.11/480,000中详细描述,此处通过引用结合其全部内容作为参考。
[0030] 如上面所讨论,每个刀片的联网功能性(以及通过扩展,通过VNIC继承的联网功能性)包括对于共享物理网络接口的访问以及经由机柜互连与其他刀片的通信。图3示出根据本发明的一个或多个实施例的网络直通管理器(300)的示图。网络直通管理器(300)配置成从/向位于刀片中的VNIC路由网络流量。尤其是,网络直通管理器(300)包括虚拟交换表(302),该交换表包括VNIC标识符(304)到机柜互连中的VNIC位置(306)的映射。在一个或多个实施例中,VNIC标识符(304)是因特网协议(IP)地址,且VNIC位置(306)是与刀片相关联的PCI-E端点(例如,如果机柜互连是PCI-E底板)。备选地,可以使用其他路由机制。
[0031] 在一个或多个实施例中,网络直通管理器(300)配置成经由物理网络接口接收网络流量且使用虚拟交换表(302)将网络流量路由到适当位置(例如VNIC所处的位置)。而且,网络直通管理器(300)可以配置成在位于在刀片机柜中的不同VNIC之间路由网络流量。在本发明的一个或多个实施例中,以这种方式使用虚拟交换表(302)有利于包括虚拟线路的虚拟网络路径的创建。因而,使用虚拟交换表(302),位于不同刀片中的虚拟机可以互连以形成任意虚拟网络拓扑,其中与每个虚拟机相关联的VNIC不需要知道其他VNIC的物理位置。而且,如果虚拟机从一个刀片迁移到另一刀片,虚拟物理拓扑可以通过更新虚拟交换表(302)被保留以反映相应VNIC的新物理位置(例如,不同的PCI-E端点)。
[0032] 在一些情形中,来自一个VNIC的网络流量的目的地可能是位于相同刀片中但与不同虚拟机相关联的VNIC。在本发明的一个或多个实施例中,虚拟交换机可用于路由VNIC之间的网络流量,而与刀片机柜无关。根据本发明的一个或多个实施例的虚拟交换机在Nicolas G.Droux,Sunay Tripathi和Erik Nordmark名下的名为“VirtualSwitch”的共同所有的美国专利申请No.11/480,261中详细讨论,此处通过引用结合其全部内容作为参考。
[0033] 例如,图4示出根据本发明的一个或多个实施例的虚拟交换机(400)的示图。虚拟交换机(400)提供在与虚拟机X相关的VNIC X(406)以及与虚拟机Y(404)相关的VNIC Y(408)之间的连接。在一个或多个实施例中,虚拟机(400)通过其中布置虚拟机X(402)和虚拟机Y(404)的主机操作系统(410)管理。具体而言,主机操作系统(410)可以配置成识别目标为相同刀片中的VNIC的网络流量,且使用虚拟交换机(400)将流量路由到VNIC。在本发明的一个或多个实施例中,虚拟交换机(400)可以通过避免不必要的来回传输的网络流量减小刀片机柜和网络直通管理器的使用。
[0034] 图5示出根据本发明的一个或多个实施例用于创建虚拟网络路径的方法的流程图。在本发明的一个或多个实施例中,图5中示出的步骤其中的一个或多个可以被忽略、重复和/或以不同顺序执行。相应地,本发明的实施例不应认为限制于图5中示出的特定步骤布置。
[0035] 在本发明的一个或多个实施例中,在步骤502中,为多个虚拟机实例化VNIC。如上所述,虚拟机位于刀片中。而且,虚拟机各自可以与一个或多个VNIC相关。在本发明的一个或多个实施例中,实例化VNIC涉及在存储器中装载VNIC对象且向主机操作系统(即宿有与VNIC相关的虚拟机的操作系统)登记VNIC对象。登记VNIC对象建立了主机操作系统联网功能性与VNIC提供的抽象层之间的接口。此后,当主机操作系统接收寻址到VNIC的网络流量时,主机操作系统将网络流量转发到VNIC。根据本发明的一个或多个实施例的VNIC的实例化在上面通过引用结合于此的美国专利申请11/489,942中详细讨论。
[0036] 如上面所讨论,单个刀片可以包括配置成彼此通信的多个虚拟机。在本发明的一个或多个实施例中,在步骤504,虚拟交换机实例化为促进虚拟机之间的通信。如上所述,虚拟交换机允许VNIC之间的通信,而与机柜互连无关。根据本发明的一个或多个实施例的虚拟交换机的实例化在上面通过引用结合于此的美国专利申请11/480,261中详细讨论。
[0037] 在本发明的一个或多个实施例中,在步骤506,填充虚拟交换表。如上所述,虚拟交换表可以位于配置成管理流入到虚拟机且从虚拟机流出的网络流量的网络直通管理器中。填充虚拟交换表涉及将VNIC标识符(例如,因特网协议和/或介质访问控制(MAC)地址)与VNIC位置(例如PCI-E端口)相关联。在本发明的一个或多个实施例中,响应于经由控制操作系统(即,包括功能性以控制网络直通管理器的操作系统)发布的用户命令而填充虚拟交换表。
[0038] 在本发明的一个或多个实施例中,VNIC包括用于控制网络包的处理的设置。在本发明的一个或多个实施例中,在步骤508,根据联网策略,设置被分配给VNIC。使用VNIC中的设置,可以强加很多不同类型的联网策略。例如,设置可用于向一个或多个VNIC提供刀片可用带宽的特定部分。作为另一示例,设置可用于将VNIC的使用限制于特定类型的网络流量,诸如IP电话(VoIP)或传输控制协议/IP(TCP/IP)。而且,用于虚拟网络路径中的多个VNIC的设置可以相同。例如,虚拟网络路径中的VNIC可以具有相同的带宽限制,由此允许一致数据流经过虚拟网络路径。在本发明的一个或多个实施例中,网络直通管理器配置成向VNIC发送所需设置。
[0039] 在本发明的一个或多个实施例中,一旦VNIC被实例化且虚拟交换表被填充,网络流量可以从一个刀片中的VNIC发送到另一刀片中的VNIC。两个VNIC之间的连接可以被认为是“虚拟线路”,因为该布置消除了对于诸如以太网线缆的常规网络布线的需要。在经过一个虚拟线路的网络流量与经过另一虚拟线路的网络流量隔离的意义上说,虚拟线路功能类似于物理线路,甚至网络流量可以经过相同的刀片(即,使用位于刀片中的相同的虚拟机或不同虚拟机)。
[0040] 而且,两个或更多虚拟线路的组合可以被认为是“虚拟网络路径”。具体而言,在虚拟网络路径上发射网络流量涉及使得网络流量路由通过第一虚拟线路(步骤510),且然后通过第二虚拟线路(步骤512)。例如,当经由物理网络接口从客户端接收网络流量时,一个虚拟线路可以位于物理网络接口和VNIC之间,且第二虚拟线路可以位于VNIC和另一VNIC之间。
[0041] 图6A-6C示出根据本发明的一个或多个实施例用于创建虚拟网络路径的示例。具体而言,图6A示出根据本发明的一个或多个实施例的实际拓扑(600)的示图,图6B示出网络流量可以如何通过实际拓扑(600)路由,且图6C示出如图6B所示通过路由网络流量创建的虚拟网络拓扑(640)。图6A-6C仅以示例提供,且不应解读为限制本发明的范围。
[0042] 首先参考图6A,实际拓扑(600)包括多个虚拟机。具体而言,实际拓扑(600)包括路由器(602)、防火墙(604)、应用服务器M(606)以及应用服务器N(608),它们中的每一个在分离的虚拟机上运行。虚拟机位于与机柜互连(622)通信耦合的刀片中且包括经由VNIC(即VNIC H(610),VNIC J(612),VNIC K(614),VNIC M(618)和VNIC N(620))由刀片提供的联网功能性。为了说明的简便性,在示图中不包括刀片本身。
[0043] 在本发明的一个或多个实施例中,路由器(602)、防火墙(604)、应用服务器M(606)和应用服务器N(608)均位于分离的刀片中。备选地,如上所述,刀片可以包括多个虚拟机。例如,路由器(602)和防火墙(604)位于单个刀片中。而且,每个虚拟机可以与图6A中示出的VNIC的数目不同数目的VNIC相关联。
[0044] 继续图6A的讨论,网络直通管理器(624)配置成管理流入或流出虚拟机的网络流量。而且,网络直通管理器(624)配置成管理对于物理网络接口(626)的访问,该物理网络接口用于与客户端O(628)和客户端P(630)通信。在图6A中,虚拟机、VNIC、机柜互连(622)、网络直通管理器(624)以及物理网络接口(626)全都位于机柜互连内。客户端O(628)和客户端P(630)位于机柜互连所连接的一个或多个网络(未示出)中。
[0045] 图6B示出根据本发明的一个或多个实施例,网络流量可以如何路由通过实际拓扑(600)。在本发明的一个或多个实施例中,利用虚拟交换表(634)由网络直通管理器(624)执行路由。
[0046] 如上面所讨论,路由进入或输出VNIC的网络流量可以被认为流过“虚拟线路”。例如,图6B示出位于应用服务器M(606)和应用服务器N(608)之间的虚拟线路(632)。为了使用该虚拟线路,应用服务器M(606)经由VNIC M(618)发送网络包。网络包被寻址到与应用服务器N(608)相关的VNIC N(620)。网络直通管理器(624)经由机柜互连(622)接收网络包,检测该网络包,且使用虚拟交换表(634)判断目标VNIC位置。如果在虚拟交换表(634)中没有发现该目标VNIC位置,则该网络包可被丢弃。在该示例中,目标VNIC位置是VNIC N(620)所位于的刀片。网络直通管理器(624)将该网络包路由到目标VNIC位置,且应用服务器N(608)经由VNICN(620)接收该网络包,由此结束虚拟线路(632)。在本发明的一个或多个实施例中,虚拟线路(632)还可用于在相反的方向,即从应用服务器N(608)到应用服务器M(606)发送网络流量。
[0047] 而且,如上面所讨论,多个虚拟线路可以组合以形成“虚拟网络路径”。例如,图6B示出虚拟网络路径R(636),其从客户端O流出,通过路由器(602),通过防火墙(604),且终止在应用服务器M(606)。具体而言,虚拟网络路径R(636)包括下面的虚拟线路。一虚拟线路位于物理网络接口(626)和VNIC H(610)之间。另一虚拟线路位于VNIC J(612)和VNIC K(614)之间。又一虚拟线路位于VNIC L(616)和VNIC M(618)之间。如果路由器(602)和防火墙(604)位于相同的刀片中,则虚拟交换机可以代替VNIC J(612)和VNIC K(614)之间的虚拟线路,由此消除用于在路由器(602)和防火墙(604)之间通信的机柜互连的使用。
[0048] 类似地,图6B示出虚拟网络路径S(638),其从客户端P(630)流出,通过路由器(602)且终止在应用服务器N(608)。虚拟网络路径S包括物理网络接口(626)和VNIC H(610)之间的虚拟线路以及VNIC J(612)和VNIC N(620)之间的虚拟线路。虚拟网络路径R(636)和虚拟网络路径S(638)之间的差异示意了多个虚拟网络路径如何位于相同的刀片机柜中。
[0049] 在本发明的一个或多个实施例中,针对每个虚拟网络路径分别应用VNIC设置。例如,不同的带宽限制可用于虚拟网络路径R(636)和虚拟网络路径S(638)。因而,虚拟网络路径可以被认为是包括很多与常规网络路径(例如以太网线缆)相同的特征,尽管常规网络线路在刀片机柜中并不使用。然而,在机柜外,例如在物理网络接口(626)与客户端O(628)和/或客户端P(630)之间,可能仍需要常规网络线路。
[0050] 图6C示出从使用如图6B所示的虚拟网络路径R(636)、虚拟网络路径S(638)和虚拟线路(632)得出的虚拟网络拓扑(640)的示图。虚拟网络拓扑(640)允许各种网络组件(即,路由器(602)、防火墙(604)、应用服务器M(606)、应用服务器N(608)、客户端O(628)和客户端P(630))以类似于常规有线网络的方式交互。然而,如上面所讨论,位于刀片机柜内的组件(即,路由器(602)、防火墙(604)、应用服务器M(606)和应用服务器N(608))之间的通信无需使用常规网络线路实现。
[0051] 在本发明的一个实施例中,使用传输控制协议(TCP)和因特网协议(IP),可以在刀片机柜中不同刀片上运行的虚拟机之间传输数据。而且,可以使用低开销数据传输方式在虚拟机之间传输数据。尤其是,数据可以直接从一个刀片上的物理存储器传输到另一刀片上的物理存储器。
[0052] 更具体而言,虚拟机(或其中执行的应用)可以建立与另一虚拟机的TCP连接,且然后,使用TCP连接执行零拷贝握手。在本发明的一个实施例中,零拷贝握手涉及判断虚拟机是否能够使用低开销数据传输通信且虚拟机(或其中运行的应用)是否希望使用低开销数据传输来传输数据。在本发明的一个实施例中,虚拟机可以使用TCP/IP上的数据传输与使用低开销数据传输的数据传输的组合来通信。
[0053] 在本发明的一个实施例中,通过允许来自与发送应用(在第一虚拟机上运行)相关联的虚拟存储器的数据直接传输到接收应用(在第二虚拟机上运行)的虚拟存储器来实现低开销数据传输,其中第一应用在第一刀片上运行且第二应用在第二刀片上运行。在本发明的一个实施例中,必须在数据传输之前提供传输所用的目标虚拟存储器地址。如果接收应用在来宾操作系统(在虚拟机中运行)上运行,该来宾操作系统在主机操作系统中运行,则接收应用必须向发送应用(或相关进程)提供物理存储器地址(对应于与接收应用相关联的虚拟存储器)以用于将数据传输到的缓存。然而,接收应用仅能够提供用于接收应用的虚拟存储器地址。该虚拟机存储器地址必须转换一次或更多次以获得底层物理存储器地址。转换处理在下面的图7中描述。一旦完成了转换,物理存储器地址(以及任何其他必要信息)被提供到发送应用(或相关处理)以进行低开销数据传输,如图8所述。
[0054] 图7示出在使用低开销数据传输的应用之前用于为应用预发布(pre-posting)缓存的方法的流程图。在本发明的一个或多个实施例中,如图7所示的步骤其中的一个或多个可以省略、重复和/或以与图7示出的顺序不同的顺序进行。相应地,本发明的实施例不应解读为限制为图7中示出的特定步骤布置。
[0055] 在步骤700,应用指定预发布缓存地址。在本发明的一个实施例中,预发布缓存地址是与该应用相关的虚拟存储器中的虚拟存储器地址。在本发明的一个实施例中,预发布缓存地址可以指容量大于1MB的缓存。在步骤702,来宾操作系统接收且转换预发布缓存地址为来宾OS虚拟存储器地址。在本发明的一个实施例中,来宾OS虚拟存储器地址是与来宾操作系统相关的虚拟存储器中的虚拟存储器地址。
[0056] 在步骤704,来宾操作系统向主机操作系统提供来宾OS虚拟存储器地址。在步骤706,主机操作系统接收且转换来宾OS虚拟存储器地址为主机OS虚拟存储器地址。基于主机虚拟存储器地址,操作系统可以判断对应于主机OS虚拟存储器地址的底层物理存储器地址。对应于主机OS虚拟存储器地址的物理存储器地址是对应于该预发布缓存地址的相同物理存储器地址。
[0057] 在本发明的一个实施例中,主机操作系统告知来宾操作系统该预发布缓存地址已经被成功预发布。来宾操作系统进而可以告知应用该预发布缓存地址已经被成功预发布。另外,主机操作系统可以保持转换的物理地址和任意其他相关信息(总称为“预发布缓存信息”)。
[0058] 在此阶段,该应用现在可以参与低开销数据传输。更具体而言,该应用可以使用低开销数据传输来接收数据。本领域技术人员应当意识到,对于给定应用,图7可以重复多次,以使得应用预发布在低开销数据传输中使用的多个缓存。而且,如果其他应用也使用图7示出的方法预发布缓存,则应用还可以使用低开销数据传输向另一应用发送数据。
[0059] 图8示出启动和使用低开销数据传输的方法的流程图。在本发明的一个或多个实施例中,如图8所示的步骤其中的一个或多个可以省略、重复和/或以与图8示出的顺序不同的顺序进行。因此,本发明的实施例不应解读为限制为图8中示出的特定步骤布置。
[0060] 在步骤800,应用A试图发起与应用B的TCP连接。在本发明的一个实施例中,应用A提供分配给其上运行应用B的虚拟机(或者分配给与该虚拟机相关的VNIC)的IP地址。另外,应用A还可以提供端口号。
[0061] 在步骤802,来宾OS内核响应于来自应用A的启动TCP连接的请求,创建套接字A。在本发明的一个实施例中,套接字A是IP端口号对所标识的内核层进程,且是配置成与应用A和在主机操作系统(其上运行来宾OS)上运行的VNIC接口的通信端点。在步骤804,TCP连接通过套接字A启动。在步骤806,套接字B应答该连接请求且建立TCP连接。
[0062] 在步骤808,启动零拷贝握手。在本发明的一个实施例中,零拷贝握手是一种数据交换,其设计为确立两个应用是否可以使用低开销数据传输来传输数据。在本发明的一个实施例中,在应用A向应用B发送一个或多个请求以判断应用A和应用B是否可以使用低开销数据传输来传输数据时,启动零拷贝握手。在本发明的一个实施例中,所述请求可以包括在TCP SYN包中放置特定标记。
[0063] 在本发明的一个实施例中,代替启动零拷贝握手的应用,在各个主机操作系统(见下面的图9)上运行的VNCI可以启动且随后进行零拷贝握手。在这种情况下,在TCP连接的启动之前,应用之一或二者已经指示它们能够使用低开销数据传输来传输数据且已经执行了图7中示出的方法以获得预发布缓存信息。
[0064] 在步骤810,作为零拷贝握手的一部分,判断应用A和应用B是否通过本地TCP连接相连。在本发明的一个实施例中,当应用A和应用B在相同刀片机柜内的刀片上运行时,应用A和应用B通过本地TCP连接相连。如果应用A和应用B通过本地TCP连接相连,则处理前进到步骤812。否则,处理前进到步骤820。在步骤820,应用A和应用B使用TCP/IP通信。
[0065] 在步骤812,作为零拷贝握手的一部分,判断应用B是否希望参与低开销数据传输。在本发明的一个实施例中,这种判断可以包括以下判断其中任一:(i)应用B将使用低开销数据传输向应用A发送数据但是将仅经由TCP/IP从应用A接收数据;以及(ii)应用B将使用低开销数据传输向应用A发送数据且应用B将使用低开销数据传输从应用A接收数据。如果应用B希望参与低开销数据传输,则处理前进到步骤814。否则,处理前进到步骤820(即,应用B不希望参与上述方案任意一个)。在本发明的一个实施例中,通过TCP连接执行零拷贝握手。
[0066] 在步骤814,应用B被提供以应用A的预发布缓存信息。在步骤816,取决于步骤812中的判断,应用A可以被提供以应用B的预发布缓存信息。在本发明的一个实施例中,在步骤814和步骤816中传输的信息通过TCP连接传递。在步骤818,应用A和应用B参与低开销数据传输。
[0067] 在本发明的一个或多个实施例中,从应用A到应用B的低开销数据传输例如使用直接存储器访问(DMA)操作,其中DMA操作使用应用B的预发布缓存信息作为输入。本领域技术人员将意识到,其他写操作(例如RDMA)可用于直接从一个物理存储器位置向不同刀片上的另一物理存储器写入数据。
[0068] 在本发明的一个实施例中,由在各个主机操作系统上运行(或管理)的DMA(或DRMA)引擎执行低开销传输。而且,因为数据传输直接从一个刀片到另一刀片,数据传输不需要与诸如TCP的其他传输协议相关的附加处理开销。而且,在本发明的一个实施例中,低开销数据传输可以使用机柜互连的底层错误检测和校正功能来以确保数据以非破坏方式传输。
[0069] 在本发明的一个实施例中,一旦来自应用B的数据使用低开销数据传输被传输到应用A,应用A被通知数据的存在。在本发明的一个实施例中,应用A从运行它的来宾操作系统接收通知。而且,该来宾操作系统被运行它的主机操作系统通知。最后,主机操作系统被应用B、运行应用B的来宾操作系统或者运行上述来宾操作系统(或其上运行的进程)的主机操作系统通知。
[0070] 在本发明的一个实施例中,应用A和应用B可以使用TCP/IP和低开销数据传输二者通信。例如,TCP/IP可用于某一类型(例如特定文件格式的所有文件)和/或小于某一大小的所有通信,且低开销数据传输可用于另一类型和/或大于某一大小的所有通信。
[0071] 图9示出根据本发明的一个或多个实施例的低开销数据传输的示例。图9仅用于示例性目的且不应解读为限制本发明的范围。参考图9,刀片A(900)和刀片B(902)各自通信地耦合到机柜互连(912)。刀片A(900)中的应用A(908)被配置成经由使用套接字A(918)和套接字B(920)作为端点的TCP连接与刀片B(902)中的应用B(910)通信。具体而言,套接字A(918)被配置成通过VNIC A(926)、VNIC B(928)和机柜互连(912)向套接字B(902)传输数据。而且,应用A(908)在来宾OS A(未示出)上的虚拟机A(904)中运行,且应用B(910)在来宾OS B(未示出)上的虚拟机B(906)中运行。
[0072] 基于上述内容,考虑应用A(908)和应用B(910)各自执行了图7所述的方法以产生缓存预发布信息的场景。更具体而言,应用A(908)在应用A虚拟存储器(VM)(914)中分配预发布缓存A(未示出)。与预发布缓存A相关的虚拟存储器地址然后被转换成来宾操作系统VM(922)地址。来宾操作系统VM(922)地址然后由主机操作系统A(930)转换以从主机VM(934)获得对应于底层物理存储器地址的主机VM地址。针对应用B执行类似的过程,且使用应用B VM(916)且转换成来宾操作系统VM(924)地址且最后转换成对应于主机VM(936)中的主机VM地址的底层物理存储器地址。
[0073] 使用上述预发布缓存信息,根据本发明的一个实施例,应用可以按照以下方式通信。具体而言,应用A(908)被配置成请求与应用B(910)的TCP连接以用于传输数据。套接字A(918)经由VNIC A(926)至VNIC B(928)启动与套接字B(920)的TCP连接。
[0074] 一旦建立TCP连接,就进行零拷贝握手。具体而言,VNIC A(926)做出应用A(908)和应用B(910)通过本地TCP连接相连的判断。做出应用B(910)将使用低开销数据传输向应用A(908)发送数据且应用B(910)将使用低开销数据传输从应用A(908)接收数据的另一判断。
[0075] 在本发明的一个或多个实施例中,VNIC A(926)然后将应用A的预发布缓存信息传送到VNIC B(928)且VNIC B(928)将应用B的预发布缓存信息传送到VNIC A(926)。两个应用然后可以使用低开销数据传输来传输数据。
[0076] 在本发明的一个实施例中,来自应用B(910)的数据使用RDMA引擎传输且应用A的预发布缓存信息被直接传输到应用A的VM(914),其中RDMA引擎位于刀片B(902)中且由VNIC B(928)管理。在传输之前,VNIC A可以将从VNIC B接收的物理存储器中的位置与应用A相关的允许地址范围进行比较以判断数据是否可以被传输到预发布缓存信息指定的存储器中的位置。如果VNIC A接收的物理存储器中的位置处于允许地址范围之外,则传输被拒绝。
[0077] 本发明的实施例还可用于通过使用本发明的实施例来传输数据应用以在虚拟机(例如,虚拟机A(904)和虚拟机B(906))之间传输数据。例如,参考图9,从应用A(908)向应用B(910)发送数据。应用A(908)可以通过到VNIC A(926)的连接传输数据。根据本发明的实施例,VNIC A(926)获得用于虚拟机B(906)的预发布缓存且随后例如使用RDMA引擎直接将数据传输到虚拟来宾OSB VM(924)。当接收时,数据被拷贝到应用B VM(916)。在这种情形中,与应用相对,虚拟机知道使用低开销数据传输来传输数据的能力。然而,应用则不知道这种功能性。而且,在该场景中,应用不需要包括预发布缓存的功能性。而是,虚拟机需要包括预发布缓存的功能性。
[0078] 本领域技术人员将意识到,尽管使用刀片来描述本发明,本发明可以扩展为与非刀片的其他计算机系统一起使用。具体而言,本发明可以扩展到至少包括存储器、处理器以及物理连接到和通过机柜互连通信的机制的任意计算机。这种计算机的示例包括但不限于多处理器服务器、网络电器以及轻量化计算装置(例如,仅包括存储器、处理器、物理连接到且通过机柜互连通信的机制)以及使得上述组件实现交互的必要硬件。
[0079] 而且,本领域技术人员应当意识到,如果非刀片的一个或多个计算机不用于实现本发明,则可以使用适当的机柜来代替刀片机柜。
[0080] 包含软件指令的计算机程序产品可以执行本发明的实施例。软件指令可以存储在诸如光盘(CD)、磁盘、磁带或任意其他计算机可读存储装置的计算机可读存储介质上。
[0081] 尽管参考有限数目的实施例描述了本发明,在获知本公开的益处之后,本领域技术人员将意识到可以设计其他实施例而不偏离此处公开的本发明的范围。因此,本发明的范围仅由所附权利要求限定。