专利名称:使用两个端口的数据中心服务器的可缩放互连的制作方法
使用两个端口的数据中心服务器的可缩放互连政府、公司、院校以及其他日益依赖于位于数据中心中的大量计算机。这些数据中心可以包括数百或甚至数千的互连的服务器。互连这些服务器传统上已经是昂贵的预期。基于树的互连基础设施依赖于给商用交换机馈送的多个服务器,商用交换机又将流量馈送给高容量交换机。然而,高容量交换机是昂贵的,并且对于依赖于它们的服务器引入了单个故障点。放置附加的冗余交换机以最小化单个故障点进一步增加了成本。此外,预期连续的数据中心增长。数据中心中的服务器的数目的这一增长可以超出现有的基础设施的容量和成本效益。MM如上所述,数据中心正逐渐结合日益增加数量的服务器。在那些服务器之间的互连已经要求具有关于可以如何互连许多服务器的有限限制的昂贵硬件。所公开的是用于以利用低成本网络基础设施硬件的高度可缩放互连结构来互连服务器的方法。所得到的互连结构导致相对低的直径,即两个服务器之间的最大距离相对于结构的总体大小来说是相对低的。因而,互连结构能够支持实时应用程序,以及展示指示稳健的链路容错的高的等分带宽(bisection)。附图简述参考附图来描述本公开内容。在各图中,最左边的附图标记标识其中该附图标记第一次出现的图。不同的图中的相同附图标记的使用指示相似的或相同的术语。
图1是描绘三个单元的数据中心服务器的互连结构的说明性的图,每一个单元具有一交换机和四个服务器,且1级组具有三个单元。图2是描绘包括被互连以形成2级组的四个1级组的互连结构的说明性的图。图3是在服务器之间构建互连结构的说明性的流程图。图4是使用图3中所构建的互连结构的说明性的流程图。图5是用来通过图3的互连结构路由网络流量的流量知晓路由模块的说明性的流程图。详细描述大量服务器可以使用低成本的商用网络交换机、在每一个商用服务器上的第一网络端口、在每一个商用服务器上的第二网络端口和在每一个商用服务器上执行的流量知晓路由模块来廉价地互连。经由在每一个服务器上的第一网络端口将包括商用服务器的两个或更多个服务器连接到商用网络交换机形成“单元”。经由第二网络端口连接不同的单元的两个商用服务器形成“组”。每一个单元具有经由该单元中的服务器上的第二网络端口到另一个单元的直接连接。另外或替代地,每一组可以具有经由该组中的服务器上的第二网络端口到另一组的直接连接。在每一个商用服务器上执行的流量知晓路由模块使用贪婪法来确定在服务器之间的数据的路由并平衡跨第一端口和第二端口的流量。使用此贪婪法导致在计算上用低的计算开销优化每一个流量知晓的路由模块的个体输出,同时提供跨互连结构的良好的总体性能。图1是描绘根据一种实现的数据中心服务器的互连结构100的说明性的图。在此阐释中,单元102包括四端口网络交换机104或诸如集线器、菊花链(daisy chain)、令牌环等其他网络互连基础设施或设备。在单元102内的是四个服务器106A、106B、106C和106D。 为便于引用,在本申请中使用的106N标识服务器106A-D中的任一个或在相同单元中通过第一网络端口连接到相同的交换机的另一个服务器。每一个服务器106N具有两个网络端口 108,即第一网络端口(端口 “0”)和第二网络端口(端口 “1”)。网络端口可以采用以太网或其他通信协议。每一个服务器106N从第一网络端口连接到服务器106N的单元102 内的交换机104,且此链路被指定为0级链路110。尽管在此阐释中叙述的服务器示出两个网络端口,但在其他实现中,也可以使用具有多于两个网络端口的服务器。与单元102相似,单元112包括经由0级链路110而连接到服务器116A、116B、116C 和116D上的第一网络端口的四端口交换机114。与上面的单元102相似,单元118包括经由0级链路110而连接到服务器122A、 122B、122C和122D上的第一网络端口的四端口交换机120。经由在不同的单元中的服务器上的第二网络端口之间的1级链路IM而连接各单元。在本申请中,在1级和更高的级别,所有可用服务器的二分之一可以以相同的级别链接到服务器。可用服务器是具有未使用的第二网络端口的服务器。例如,在互连之前,单元102具有四个可用服务器(106A-106D),这是因为没有一个使用它们的第二端口。这四个中的二分之一是两个。因此,来自具有四个服务器的每一个单元的两个服务器可以被用作单元连接的服务器以相同的级别与其他单元链接。在此示例中,每一个单元中的四个服务器得到被限于三个单元的组。至其他单元的这些链路阐释为如下1级链路1 从单元118中的服务器122D上的第二端口连接到单元102中的服务器106C上的第二端口。1级链路1 从单元118中的服务器122B上的第二端口连接到单元112中的服务器116C上的第二端口。1级链路130 从单元102中的服务器106A上的第二端口连接到单元112中的服务器116A上的第二端口。 因而,每一个单元具有至每一个其他单元的一个直接1级链路并形成1级组132。各组可以以相似的方式链接至其他组,且所有可用服务器的二分之一用于链接。 在此示例中,在解决1级链路之后,存在六个可用的服务器单元102中的106B和106D、单元112中的116B和116D、以及单元118中的122A和122C。这六个可用服务器的二分之一可以提供链路,这提供了至其他组的三个链路。链路跨单元或组而分布,以防止一个单元或组中的多于一个的单一服务器连接至其他单元或组。例如,单元102中的服务器106B可以在组之间提供2级链路134的一端,从而得到在下面更深入地描述的连接136。类似地,单元112中的服务器116B可以在组之间提供 2级链路134的一端,从而得到也在下面更深入地描述的连接138。最后,单元118中的服务器122C可以在组之间提供2级链路134的一端,从而得到也在下面描述的连接140。因而,在此示例中,至位于相同的级别的三个不同的组的三个链路是可能的。注意,此安排留下服务器116D、106D和122A可用于附加链路142。这些可用附加链路142是以图1中所描述的方式构建互连结构的结果。在互连的每一级别,附加服务器保持可用于互连,因而互连结构从不被关闭。互连结构的“直径”是在两个节点(例如服务器)之间的最大距离。此互连结构的直径相对于节点的数量而言是小的。此小的直径意味着此互连结构可以支持具有实时要求的应用程序,这是因为对延时敏感的数据在节点之间具有最小数量的跳跃。此互连结构,例如,可以具有相对小的总直径, 且具有2k+1上限,其中k是服务器的级别且级别一般地以0开始并按整数值增加,即,1、2、
9 A坐坐 、兮寸寸O另外,互连结构的指数性质允许快速扩展到大量服务器。例如,如果使用48端口交换机而不是以上所描述的四端口交换机,则两级互连结构可以支持361,200个服务器。 给定该指数性质,级别的数量可以是相对地小,例如2或3,从而得到如上所述的相对地小的总直径。此外,使用传统上被认为是“备份”端口的第二网络端口,在网络端口中的一个的故障事件中不会不利地影响服务器的可靠性。这是因为服务器仍然可以使用剩余的网络端口来运载流量。图2是描绘包括四个1级组的简化的互连结构的说明性的图,四个1级组包括图 1的1级组,它们互连以形成2级组200。在此阐释中为了清晰起见而忽略的是在每一个服务器上的第一网络端口(端口 “0”)以及所关联的0级链路和交换机。在此阐释中为了清晰起见还忽略的是各组的1级链路互连单元。所阐释的每一个服务器是具有可用于连接至位于相同的级别的另一组的第二网络端口的组连接的服务器。除了如以上在图1中描述的1级组132之夕卜,阐释下列的1级组和它们的构成1级组202包括单元206中的服务器204Ν、单元210中的服务器208Ν和单元214 中的服务器212Ν。1级组216包括单元220中的服务器218Ν、单元224中的服务器222Ν和单元2 中的服务器226N。1级组230包括单元234中的服务器232N、单元238中的服务器236N和单元242 中的服务器Μ0Ν。互连1级组形成2级组200。来自每一个组的一个服务器连接到不同组中的服务器。不备份连接,即,组不会多于一次地直接地连接到另一组。在此示例中,连接如下2级链路136连接1级组132的单元102中的服务器106B和1级组230的单元 234中的服务器232N。2级链路138连接1级组132的单元112中的服务器116B和1级组202的单元 206中的服务器204N。2级链路140连接1级组132的单元118中的服务器122C和1级组216的单元 224中的服务器222N。2级链路244连接1级组216的单元220中的服务器218N和1级组202的单元 214中的服务器212N。2级链路246连接1级组216的单元228中的服务器226N和1级组230的单元 242中的服务器Μ0Ν。2级链路248连接1级组230的单元238中的服务器236N和1级组202的单元 210中的服务器208N。伪代码描述本申请的递归定义的互连结构的构建。下列变量被定义为
k是服务器的级别,级别一般地以0开始并按整数值增加,即,1、2、3、4等等。Unitci (单元J是包括η个服务器和连接该η个服务器的η端口交换机的基本构造单元。通常η是偶数,尽管奇数是可能的,且可以在使用期间出现。例如,在使用四个服务器且一个服务器故障时,Unit0现在包括三个服务器。Groupk(组k)是多个Unit。的集合,其中k > O。b是具有可用第二网络端口的服务器的计数。gk是Groupk中k_l级组的数量,且等于b/2+l。Nl是链接服务器的数量,其为b/2。μ k,有序数,可以用来标识Groupk中的服务器S。假定Groupk中服务器的总数是 Nk,则 O 彡 μ k < Nko使用这些变量,一旦^^Groupn成组,下列的伪代码就构造&0uPk (其中k > 0)。 在每一个Groups中,满足式1的服务器被选择为k级服务器并如在下面的伪代码1中所描述地被互连。
(uk_1-2"+l)mod2k == O(式 1)
InterconnectionConstruct(k) { for(/! = 0; i\< gk; Z1 + +)
for (J1 = h * 2k + 2kA - VJ1 < D1 =J1 + 2k) i2 = (/V 2k'x + l)/2k+l
J1 =h *2k +2m)-1
将服务器[Ly1 ]与[W2]连接起来
return
}伪代码1此互连结构允许经由多个链路来路由。例如,数据流可以具有服务器122A的源和服务器212N的目的地。在此示例中,数据流可以遍历下列路由122A经由O级链路至122B,122B经由1级链路至116C,116C经由O级链路至116B,116B 经由 2 级链路 138 至 204N,204N经由O级链路至相同的单元中的204X(未示出),其中204X具有至单元214 中的服务器212Y的1级链路;212Y(未示出)经由O级链路至212Ν。网络的互连本质提供了稳健性和冗余。如果2级链路故障,则数据流仍然可以经由其他2级链路流至目的地。例如,假设2级链路138故障或具有不足的带宽。一个替换的路由可以包括122Α经由O级链路至122C,122C 经由 2 级链路 140 至 222Ν,
70102
04
05
06
07
08
222N经由0级链路至相同的单元中的222Y(未示出),其中222Υ具有至单元220 中的服务器218Ζ的1级链路;218Ζ经由0级链路至218Ν ;218Ν经由2级链路至212Ν。122C经由1级链路至116C,116C经由0级链路至116Β,116Β 经由 2 级链路 138 至 204Ν,204Ν经由0级链路至相同的单元中的204Χ(未示出),其中204Χ具有至单元214 中的服务器212Υ的链路;212Υ(未示出)经由0级链路至212Ν。因为互连结构中的诸如服务器、单元或组之类的每一元件具有两个连接,所以替换的路由保持是可用的,只要那些两个连接中的一个起作用。互连结构的等分带宽是可以被移除以便将它分成两个同等大小的断开网络的链路的最小数量。在本申请中描述的互连结构的情况中,如下确定Groupk的等分带宽的下限等分带宽=^^,其中Nk是Groupk中服务器的总数(式2)这一高的等分带宽指示在给定的服务器对之间存在许多可能的路径,阐释固有的容错和在诸如数据中心等动态的网络环境中提供多路径路由的可能性。图3是在如上所述的服务器300之间构建互连的说明性的流程图。在302,Ν个服务器使用端口 O连接至公共交换机以形成位于0级的第一单元,其中“N”是位于“L”级的服务器的总数。在304,第一单元中的Ν/2个服务器使用端口 1经由1级链路连接至每一个其他单元中的服务器,形成了 1级组,其中每一个1级链路是至不同的单元中的不同的服务器。在306,Ν/4个服务器经由每一个1级组中的2级链路连接至每一个其他1级组中的服务器以形成2级组,其中每一个2级链路是至不同的组中的不同的服务器。在308,通过将每一个“L”级组中所有可用服务器的高达二分之一连接到每一个其他L级组中的可用服务器以形成使用L+1级链路的L+1级组,可以继续添加级别,其中每一个L+1级链路是至不同的组中的服务器。图4是使用图3中构建的互连400的说明性的流程图。在402,源服务器向目的地服务器发起数据流。例如,服务器可能已经完成处理任务且现在向协调服务器返回经处理的数据。在404,源服务器使用流量知晓路由(TAR)模块来向目的地服务器发送路径探测分组(PPP)。TAR基于动态流量状态通过路由流量来提供有效的链路利用。TAR不要求用于流量调度的集中服务器,从而消除单一故障点。TAR也不要求在甚至邻近服务器当中交换流量状态信息,从而降低了网络流量。每一个中间服务器使用TAR模块基于中间服务器上的每一个端口的可用带宽在逐跳的基础上计算流量知晓路径(TAP)。TAR将在本申请中稍后更深入地被讨论。PPP也可以将渐进路由(progressive route :PR)字段结合到分组头部中。I3R字段防止关于路由返回和多次旁路的问题。路由返回问题在中间服务器选择旁路其L级(其中L>0)链路并将PPP路由到相同的单元中的下一个跳传输服务器时出现,然后该单元使用级别递归路由将相同的PPP路由回去,从而形成循环。在一个L级(其中L>0)链路被旁路且位于较低的级别的第三服务器被选择作为中继且当前级别中的两个其他L级链路将被旁路时,发生多次旁路问题。然而,可能需要再次旁路两个L级链路,这导致太长的或潜在地生成循环的路径。ra字段通过为TAR提供计数器来防止这些问题。中间服务器可以修改ra字段。 PR字段可以具有m个条目,其中m是源服务器和目的地服务器的最低公共级别。指示 I3R字段的第L个条目,其中(1彡L彡m)。每一个PI^扮演两个角色第一,在旁路L级链路时,所选择的第三Groups)(组α_υ)中的L级服务器被选择作为代理服务器并且在中被设置。中间服务器检查I3R字段并将分组路由到最低级别的代理服务器。因而,PPP将不被路由回去。第二,?&可以运载关于在当前的Grou1^ (组J中旁路的旁路信息。如果旁路的次数超过旁路阀值,则PPP跳出当前的GrouA且将另一个GrouA选择作为中继。一般地,旁路阀值越高,PPP查找平衡路径的可能性越大,这是因为对于更高的旁路阀值,具有更多的机会找到在组内的较少利用的链路。例如,在旁路阀值是1时,可以指定用于的两个专用标识符BY^R0和ΒΥ0ΝΕ。 这些专用标识符不同于服务器标识符。BY^RO指示当前的Grou1^中没有L级链路被旁路, 因此在分组被初始化时或如果i > L则在跨越i级链路之后,将设置为BY^RO。BYONE 值指示已经具有在当前的Grou1^中被旁路的一个L级链路,因此在遍历当前的Grou1^中的 L级代理服务器之后,将设置为ΒΥ0ΝΕ。将设置为在选择代理服务器和到达代理服务器之间的L级代理服务器的标识符。源服务器将PPP中的ra条目初始化为BY^RO。在406,目的地服务器接收PPP。一旦接收到,在408,目的地服务器通过交换原始 PPP的源和目的地字段来将回复PPP (RPPP)发回到源服务器。在410,源服务器对RPPP的接收确认路径可用于传送,且数据流可以开始。然后, 中间服务器基于在PPP的传输期间构建的它们的路由表中的所建立的条目来转发流。在412,周期性地在源服务器和目的地服务器之间的数据传递会话期间,PPP可以被发送以更新路由路径。此更新提供了基于互连结构内的动态流量状态来改变路由路径。 例如,故障或网络中其他地方的拥挤可以使得原始的路由路径不如由TAR确定的新路径有效。因而,PPP更新提供了响应于在会话期间改变的网络条件发现新路径的机制。图5是流量知晓路由模块404的说明性的流程图。在502,在服务器s,TAR模块 (TARM)接收PPP。在504,在目的地服务器是服务器s时,TARM将PPP递送给处理系统中的上层506。此处理系统可以是协议管理器模块、应用程序模块等等。在目的地服务器不是服务器s时,在508,TARM测试用于PPP的前一跳是否等于路由表中的下一跳,且如果是这样,则使用源重新路由(SRI )模块510处理PPP。SRR提供了供PPP来旁路繁忙或不起作用的链路的机制。在服务器s决定旁路其L级(其中L > 0)链路并选择代理服务器时,服务器s可以修改ra字段并将PPP重新路由回服务器s从其接收分组的前一跳。然后,从源服务器至 S的原始中间服务器将全部接收来自在路由表中的流的下一跳服务器的PPP。源服务器接收PPP分组,且清除流的路由条目,然后将PPP重新路由到PPP的ra字段中的最低级别的代理服务器。在512,在s =当前级别的L级代理服务器时,在514,PRl被修改为ΒΥ0ΝΕ。一旦 PRl已经被修改,或在s不等于当前级别的L级代理服务器时,在516,使用级别递归路由来确定下一跳。另一个实现是在使用级别递归路由的传出链路是L级链路且0级链路的可用带宽较大时,随机地选择第三Groups服务器。然后,此随机地选择的第三Groups服务器中继PPP。在516,级别递归路由包括确定路由中的下一跳。PPP的I^R字段中的最低级别的代理服务器被返回。在不存在代理服务器时,分组的目的地服务器被返回且使用级别递归路由来计算朝向目的地的下一跳。在服务器s将分组路由到所期望的目的地dst的情况中, 递归地计算的路由可以用下列的伪代码来描述
权利要求
1.一种互连服务器的方法,所述方法包括连接两个或更多个服务器以形成单元,每一个服务器具有第一网络端口和第二网络端口,其中单元中的服务器使用每一个服务器的所述第一网络端口来彼此耦合以形成所述单元;使用单元连接的服务器上的所述第二网络端口连接两个或更多个单元以形成第一组;使用组连接的服务器上的所述第二网络端口连接两个或更多个组以形成较大的组;以及将每一个服务器上的流量知晓路由模块配置成在所述服务器之间路由数据。
2.如权利要求1所述的方法,其特征在于,所述连接两个或更多个单元包括在两个单元连接的服务器之间建立连接,所述单元连接的服务器包括单元中所有可用服务器中的二分之一,其中可用服务器包括其中所述服务器上的所述第二网络端口不被连接到另一个服务器的服务器;以及将在两个单元连接的服务器之间的所述连接限于不同的单元中的单元连接的服务器之间的连接,其中在每一对单元之间仅建立一个连接。
3.如权利要求1至2中的任一项所述的方法,其特征在于,使用所述第二网络端口连接两个或更多个组来形成超组包括在两个组连接的服务器之间建立连接,所述组连接的服务器包括组中所有可用服务器中的二分之一,其中可用服务器包括其中所述服务器上的所述第二网络端口不被连接到另一个服务器的服务器;以及将在两个组连接的服务器之间的所述连接限制为不同的组中的组连接的服务器之间的连接,其中在每一对组之间仅建立一个连接。
4.如权利要求1至3中的任一项所述的方法,其特征在于,进一步包括 发起从源服务器到目的地服务器的数据流;使用流量知晓的路由向所述目的地服务器发送路径探测分组(PPP);在所述目的地服务器处接收所述PPP ;将回复PPP (RPPP)从所述目的地服务器发送到所述源服务器;在所述源服务器处接收所述RPPP ;以及发送从所述源服务器到所述目的地服务器的所述数据流。
5.如权利要求1至4中的任一项所述的方法,其特征在于,所述流量知晓路由包括 在中间服务器处接收所述PPP ;在所述中间服务器是所述目的地服务器时将所述PPP传输到上层; 在前一跳服务器等于所述PPP的路由表中的下一跳服务器时使用源重新路由(SRR)来处理所述PPP。
6.如权利要求1至5中的任一项所述的方法,其特征在于,进一步包括在所述中间服务器不是所述源时将所述PPP路由到所述下一跳服务器。
7.如权利要求1至6中的任一项所述的方法,其特征在于,进一步包括当所述中间服务器是位于当前L级的L级代理服务器时,修改头部中的渐进路由(PR)字段以指示当前单元或组中的L级链路已经被旁路。
8.如权利要求1至7中的任一项所述的方法,其特征在于,所述方法被存储在计算机可读存储介质上。
9.如权利要求1至8中的任一项所述的方法,其特征在于,进一步包括,在使用级别递归路由的所述下一跳服务器在相同的单元内但其L级链路的可用带宽大于所述单元的0级链路的可用带宽时,选择L级邻近服务器作为所述下一跳服务器。
10.如权利要求1至9中的任一项所述的方法,其特征在于,进一步包括,在使用级别递归路由的所述下一跳服务器在所述相同的单元内但其L级链路的可用带宽大于所述单元的0级链路的可用带宽时,选择L级邻近服务器作为所述下一跳服务器,其中使用虚拟流来计算所述可用带宽。
11.如权利要求1至10中的任一项所述的方法,其特征在于,进一步包括查找代理服务器以旁路所述中间服务器的L级链路、更新所述ra字段、以及在旁路L级链路且代理服务器可用时返回去往所述代理服务器的所述下一跳。
12.如权利要求1至11中的任一项所述的方法,其特征在于,进一步包括在旁路L级链路且没有代理服务器可用时,增加所述中间服务器上的虚拟流计数器并将所述PPP发送给所述流的所述前一跳以供SRR处理;以及在所述前一跳服务器是所述L级邻近服务器且所述下一跳服务器与所述L级邻近服务器不相同时,或在所述前一跳来自所述相同的单元且所述L级链路的可用带宽不小于所述 ο级链路的可用带宽时,重置所述ra字段并更新所述路由表,然后返回所述下一跳服务器并减小所述中间服务器上的虚拟流计数器。
13.—种互连服务器的系统,所述系统包括单元,所述单元包括经由第一网络端口连接到普通商用网络交换机的多个商用服务器,每一个商用服务器具有第一网络端口和第二网络端口 ;组,所述组包括使用在所述组里的所述单元内的服务器上的第二网络端口彼此连接的多个单元;在每一个商用服务器上执行的流量知晓路由模块,所述流量知晓路由模块将所述商用服务器配置成在所述服务器之间路由数据。
14.如权利要求13所述的系统,其特征在于,进一步包括经由在所述组里的所述单元内的服务器上的第二网络端口互连的两个或更多个组。
15.如权利要求13至14中的任一项所述的系统,其特征在于,每一个单元被限于与另一单元的单个连接,且每一组被限于与另一单元的单个连接。
全文摘要
数据中心中的大量商用服务器可以使用低成本的商用网络交换机、在每一个商用服务器上的第一网络端口、在每一个商用服务器上的第二网络端口和在每一个商用服务器上执行的流量知晓路由模块来廉价地互连。经由在每一个服务器上的第一网络端口将两个或更多个商用服务器连接到商用网络交换机形成单元。连接在不同的单元中的两个商用服务器形成组。每一个单元具有经由单元中的商用服务器上的第二网络端口到另一个单元的直接连接。每一组可以具有经由该组中的商用服务器上的第二网络端口到另一组的直接连接。在每一个商用服务器上执行的流量知晓路由模块判断在服务器之间的数据的路由并跨第一端口和第二端口平衡流量。
文档编号H04L12/28GK102246476SQ200980151577
公开日2011年11月16日 申请日期2009年11月20日 优先权日2008年12月16日
发明者C·郭, D·李, H·吴, K·谭, Y·张 申请人:微软公司