一种负载均衡处理方法及装置与流程

文档序号:14914549发布日期:2018-07-11 00:21阅读:147来源:国知局

本申请涉及通信技术领域,尤其涉及一种负载均衡方法及装置。



背景技术:

随着科技的发展,现代数据中心网络中网络设备的主流带宽也逐渐增大。为了充分利用网络设备带宽,负载均衡技术成为当前研究的热点。

目前,等负荷多路径负载均衡(Equal-cost multi-path routing,ECMP)是比较常用的负载均衡处理方法。ECMP技术包括基于包(Packet)的路径选择方式和基于流(Flow)的路径选择方式。基于Packet的路径选择方式可以做到负载均衡。多路径中不同路径的时延存在差别,导致在接收端接收到的Packet会出现乱序。需要Packet重排序。基于流的路径选择方式中可以根据哈希(hash)算法确定出转发报文的出接口(报文转发路径)。接收端不需要报文重排序。不同Flow的速率会有差别(例如占据带宽较大的大流(Elephant Flow)和占据带宽较小的小流(Mice Flow)),不同路径中传输的Flow也不同。当不同路径中传输的Flow的速率不相等时,可能会导致负载不均衡。

为了能够达到更好的负载均衡,提出了一种基于Flowlet机制的负载均衡处理方法。在基于Flowlet机制的负载均衡处理方法中,将某个流中连续发送的多个Packet作为一个Flowlet,并应用Flowlet机制进行路径选择,以将该Flowlet中包括的多个Packet基于选择的路径进行转发。基于Flowlet机制的负载均衡处理方法,将基于Packet的路径选择方式和基于流的路径选择方式这两种路径选择方式进行结合,能够较好的做到负载均衡处理。

应用Flowlet机制进行路径选择的过程中,需要基于Flowlet机制流表进行路径选择。然而,大流存在的几率比较大,使得Flowlet的数目也会比较庞大。故,若应用Flowlet机制进行路径选择,则需要建立表项数量比较多的Flowlet流表。当需要创建的Flowlet流表表项的数目超出报文转发装置能够创建的Flowlet流表表项的数量的最大值时,负载均衡处理由基于Flowlet机制的路径选择方式转换为基于哈希算法确定报文转发路径的路径选择方式。

现有技术中,无法实现从基于哈希算法的路径选择方式切换为基于Flowlet机制的路径选择方式。另外,现有技术中,执行路径选择方式的切换容易导致乱序。



技术实现要素:

本申请实施例提供一种负载均衡处理方法及装置,可以实现由基于哈希算法的路径选择方式切换为基于Flowlet机制的路径选择方式。另外,在上述切换过程中,可以避免发生乱序。

第一方面,提供一种负载均衡处理方法,在该方法中,报文发送设备采用TCP发送第一报文,所述第一报文为报文发送设备在第一TCP发送窗口内发送的最后一个报文。报文转发设备接收报文发送设备采用TCP发送的第一报文,并根据所述第一报文的特征信息以及哈希算法确定出接口,并经由所述出接口转发所述第一报文。报文发送设备采用TCP发送第二报文,并为第二报文设置Flowlet开始标记,所述Flowlet开始标记用于标识Flowlet中的第一个报文。报文转发设备接收报文发送设备采用TCP发送的第二报文,所述第二报文为报文发送设备在第二TCP发送窗口内发送的第一个报文,且所述第二报文包含Flowlet开始标记,故可基于第二报文中包括的Flowlet开始标记创建第一Flowlet流表表项,并依据创建的所述第一Flowlet流表表项,转发第二报文。

其中,第二TCP发送窗口是与所述第一TCP发送窗口相邻的TCP发送窗口,且所述报文发送设备接收到在第一TCP发送窗口内发送的报文对应的ACK确认后在所述第二TCP发送窗口内发送报文。其中,在第一TCP发送窗口内发送的报文对应的ACK确认是指在第一TCP发送窗口内发送的最后一个报文(第一报文)对应的ACK确认。

其中,报文转发设备基于第二报文中包括的Flowlet开始标记创建第一Flowlet流表表项所指示的用于转发第二报文的报文转发路径可以与基于哈希算法确定的用于转发第一报文的转发路径相同,也可不同。例如,第一Flowlet流表表项所指示的用于转发第二报文的出接口与基于哈希算法确定的用于转发第一报文的出接口是同一个出接口,或者是不同的出接口。

本申请实施例通过上述方法,报文转发设备可以由应用基于哈希算法确定报文转发路径的方式切换为采用Flowlet进行路径选择的方式,并且报文转发设备是基于Flowlet开始标记创建的Flowlet流表表项,该Flowlet开始标记用于标识第二TCP发送窗口内发送的第一个报文,由于报文发送设备在第一TCP发送窗口内发送报文后需要接收到ACK确认才会继续发送报文,而报文发送设备接收到ACK确认,则表明报文接收设备已经接收到报文发送设备发送的报文,故报文发送设备再在第二TCP发送窗口内向报文接收设备发送报文,使得报文到达报文接收设备时不会发生乱序,可避免发生乱序。

一种可能的设计中,报文转发设备接收到报文发送设备采用TCP发送的第二报文之后,继续接收报文发送设备采用TCP在发送第二TCP发送窗口内发送的报文,并依据创建的第一Flowlet流表表项转发后续接收到的报文发送设备采用TCP在发送第二TCP发送窗口内发送的报文。

另一种可能的设计中,若报文转发设备接收到报文发送设备采用TCP在第二TCP发送窗口内发送的第三报文,且该第三报文包含Flowlet结束标记,报文转发设备基于第三报文中包括的Flowlet结束标记,删除所述第一Flowlet流表表项,以释放资源,该释放的资源可用于创建其它Flowlet所遵循的Flowlet流表表项,使更多的Flowlet能够匹配到Flowlet流表表项,进行负载均衡处理。

又一种可能的设计中,报文转发设备接收报文发送设备采用TCP发送的第三报文后,可继续接收后续报文。报文转发设备接收报文发送设备采用TCP发送的第四报文。第四报文为报文发送设备在第三TCP发送窗口内发送的第一个报文,所述第四报文包含Flowlet开始标记。报文转发设备基于第四报文中包括的Flowlet开始标记,创建第二Flowlet流表表项,并依据创建的第二Flowlet流表表项,转发所述第四报文,实现基于Flowlet机制的路径选择方式进行路径选择。

其中,第三TCP发送窗口是与所述第二TCP发送窗口相邻的TCP发送窗口,且报文发送设备在接收到在第二TCP发送窗口内发送的报文对应的ACK确认后,在所述第三TCP发送窗口内发送报文。其中,该第二TCP发送窗口内发送的报文对应的ACK确认是指第二TCP发送窗口内发送的最后一个报文(第三报文)对应的ACK确认。

其中,报文转发设备基于第四报文中包括的Flowlet开始标记创建第二Flowlet流表表项所指示的用于转发第四报文的报文转发路径可以与基于第二报文中包括的Flowlet开始标记创建第一Flowlet流表表项所指示的用于转发第二报文的报文转发路径相同,也可不同。例如,第二Flowlet流表表项所指示的用于转发第四报文的出接口与第一Flowlet流表表项所指示的用于转发第二报文的出接口是同一个出接口,或者是不同的出接口。

又一种可能的设计中,Flowlet开始标记和/或Flowlet结束标记通过报文头中的空闲比特位携带。例如,可扩充已有TCP,通过报文头字段中的预留比特位(Reserved)携带Flowlet开始标记和/或Flowlet结束标记。例如,第二报文中包括的Flowlet开始标记通过所述第二报文的报文头中的空闲比特位携带,第三报文中包括的Flowlet结束标记通过所述第三报文的报文头中的空闲比特位携带,第四报文中包括的Flowlet开始标记通过所述第四报文的报文头中的空闲比特位携带。

第二方面,提供一种负载均衡处理装置,该负载均衡处理装置具备实现上述负载均衡处理方法的全部功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。所述模块可以是软件和/或硬件。

一种可能的设计中,所述负载均衡处理装置包括接收单元、处理单元和发送单元,接收单元、处理单元和发送单元的功能可以和各方法步骤相对应,在此不予赘述。

第三方面,提供一种报文转发设备,所述报文转发设备包括处理器、存储器和通信接口,所述处理器、存储器和通信接口通过总线相连接。所述存储器,用于存储所述处理器执行的程序代码;所述处理器,调用所述存储器存储的程序代码,通过所述通信接口获取并转发报文,当处理器执行所述存储器存储的指令时,用于完成如第一方面中所涉及的任意一种负载均衡处理方法。

第四方面,提供一种计算机存储介质,用于存储一些指令,这些指令被执行时,可以完成前述所涉及的任意一种负载均衡处理方法。

本申请实施例中,报文转发设备接收到报文发送设备在第一TCP发送窗口内发送的最后一个报文后,根据第一报文的特征信息以及哈希算法确定出接口,并经由所述出接口转发所述第一报文,是一种应用哈希算法确定报文转发路径的方式。报文转发设备接收到报文发送设备采用TCP在第二TCP发送窗口内发送的第二报文后,基于第二报文中包括的Flowlet开始标记创建第一Flowlet流表表项,并依据创建的所述第一Flowlet流表表项,转发第二报文,是一种基于Flowlet机制进行路径选择的方式。故通过本申请实施例可实现由应用基于哈希算法确定报文转发路径的方式转换为采用Flowlet进行路径选择的方式进行负载均衡处理。进一步的,报文转发设备是基于第二报文中包括的Flowlet开始标记创建的Flowlet流表表项,该Flowlet开始标记用于标识第二TCP发送窗口内发送的第一个报文,由于报文发送设备在第一TCP发送窗口内发送报文后需要接收到ACK确认才会继续发送报文,而报文发送设备接收到ACK确认,则表明报文接收设备已经接收到报文发送设备发送的报文,故报文发送设备再在第二TCP发送窗口内向报文接收设备发送报文,使得报文到达报文接收设备时不会发生乱序,报文接收设备无需对接收到的报文进行重排序。

附图说明

图1为本申请实施例提供的负载均衡处理方法所应用的系统架构;

图2为基于Flowlet机制的路径选择方式示意图;

图3为本申请实施例提供的负载均衡处理方法的一种流程图;

图4为本申请实施例提供的负载均衡处理方法另一流程图;

图5为本申请实施例提供的负载均衡处理方法又一流程图;

图6为本申请实施例提供的负载均衡处理装置的结构示意图;

图7为本申请实施例提供的报文转发设备的结构示意图。

具体实施方式

下面将结合附图,对本申请实施例中的技术方案进行描述。

首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。

1)、Flowlet可以理解为是一个Flow中连续发送的多个报文组成的报文组,每个Flow中包括多个Flowlet。基于Flowlet机制进行报文转发时可基于Flowlet流表表项实现Flowlet中包括的多个报文的转发。不同的Flowlet对应不同的Flowlet流表表项。所述Flowlet流表表项用于指示每个Flowlet中包括的多个报文的报文转发路径。关于Flowlet,以及基于Flowlet机制进行报文转发的过程,请参考如下两篇文献,本申请完整引用如下两篇文献:“Dynamic Load Balancing Without Packet Reordering,Srikanth Kandula,Dina Katabi,Shantanu Sinha,Arthur Berger.ACM Computer Communications Review,2007”和“Harnessing TCP’s Burstiness with Flowlet Switching,Shan Sinha,Srikanth Kandula,Dina Katabi.ACM Hot Topics in Networks~(HotNets),2004”。

2)TCP中,定义了窗口、TCP发送窗口、确认(acknowledgement)、段(segment)、TCP发送器以及TCP接收器的概念。关于TCP窗口、确认(acknowledgement)、段(segment)、TCP发送器以及TCP接收器,请参见IETF发布的RFC793、RFC813、RFC879、RFC1180、RFC5681以及RFC5690。

本申请实施例提供的负载均衡处理方法及装置,可应用于支持ECMP技术进行负载均衡处理的网络,例如可应用于图1所示的网络架构。参阅图1所示,服务器采用诸如传输控制协议(Transmission Control Protocol,TCP)向路由交换网络的报文转发设备发送报文,路由交换网络中的报文转发设备(诸如交换机、路由器等)采用ECMP技术进行报文的转发,在整个网络的负载均衡情况下,向终端转发接收到的报文。报文转发设备采用ECMP技术进行报文转发时可应用Flowlet机制进行路径选择,然而应用Flowlet机制进行路径选择的负载均衡处理过程中存在诸如背景技术部分所提及的技术问题:当需要创建的Flowlet流表表项的数目超出报文转发装置能够创建的Flowlet流表表项的数量的最大值时,将不能应用Flowlet机制进行路径选择,负载均衡处理由基于Flowlet机制的路径选择方式转换为基于哈希算法确定报文转发路径的路径选择方式,并一直应用基于哈希算法确定报文转发路径的方式进行负载均衡处理。

以下将结合实际应用对上述技术问题进行说明。

本申请实施例首先对基于Flowlet机制进行路径选择的实施过程进行说明。图2为本申请实施例提供的基于Flowlet机制的路径选择方式示意图。基于Flowlet机制进行路径选择时,报文转发设备需要将流中包括的多个报文拆分为多个报文组,每个报文组中包括多个报文。每个报文组可以理解为是一个Flowlet,本申请实施例以下涉及“报文组”和“Flowlet”经常交替使用,但本领域的技术人员可以理解其含义。其中,不同的报文组对应不同的Flowlet流表表项,所述Flowlet流表表项用于指示报文转发设备转发报文的报文转发路径,例如用于指示报文转发设备转发报文的出接口。针对不同的报文组,报文转发设备可利用不同的Flowlet流表表项进行转发。具体拆分流中的多个报文得到多个报文组的依据为:若流中两个相邻报文到达报文接收设备(报文最终的目的地址对应的设备)所用时间的时间差(Gap)大于等于通过两条不同转发路径所用时间的时间差的绝对值,则这两个相邻待转发报文通过两条不同转发路径转发到报文接收设备,不会产生乱序,报文接收设备也无需进行报文重排序,故可将每个符合这种条件的Gap,确定报文是否是某个flowlet流表表项能够指示转发的报文组中的第一个报文或者最后一个报文报文。将流中包括的待转发报文拆分为多个报文组后,报文转发设备可基于Flowlet机制流表对待拆分得到的报文组中的报文进行转发。其中,Flowlet流表中的每一流表项均包括报文转发的源地址和目的地址,该报文转发的源地址和目的地址是执行Flowlet选路策略得到的Flowlet的选路结果。例如图2中,报文转发设备接收到流中包括的待转发报文分别为报文1、报文2、报文3、报文4和报文5,报文2和报文3到达报文接收设备所用时间的时间差为Gap,报文2和报文3通过转发路径1所用时间为d1,报文2和报文3通过转发路径2所用时间为d2,若Gap≥|d1-d2|,则可将报文2和报文1划分为一个报文组并通过转发路径1转发到报文接收设备,而将报文3、报文4和报文5划分为另一个报文组并通过转发路径2转发到报文接收设备。

通过上述描述可知,若确定了基于Flowlet流表表项进行转发的每个报文组中的第一个报文,则对每个报文组基于Flowlet流表表项进行转发,报文到达报文接收设备时不会发生乱序。但是传统技术中,报文转发设备进行转发过程中,并不能确定基于Flowlet流表表项进行转发的报文组中的第一个报文,故若报文转发设备由于Flowlet流表规格不足,将基于Flowlet进行路径选择的方式转换为基于哈希算法确定报文转发路径的路径选择方式之后,即使后续存在可用的Flowlet流表,但由于不确定当前待转发报文是否为基于Flowlet流表表项进行转发的报文组的第一个报文,故为了避免报文乱序,不能转换回应用Flowlet机制进行路径选择的方式,只能一直应用基于哈希算法确定报文转发路径的路径选择方式进行负载均衡处理。

本申请实施例提供一种负载均衡处理方法,在该方法中,针对拆分得到的每一基于Flowlet流表表项转发的报文组中的第一个报文设置Flowlet开始标记,通过所述Flowlet开始标记标识该该基于Flowlet流表表项转发的报文组中的第一个报文。其中,上述实施例中涉及的将流中的多个报文拆分为多个报文组所涉及的依据中的两个相邻待转发报文中转发时间在后的报文可以作为一个基于Flowlet流表表项转发的报文组的第一个报文。报文转发设备在转发报文时,可通过该Flowlet开始标记,确定该基于Flowlet流表表项转发的报文为报文组中的第一个报文,进而即使报文转发设备当前是应用基于哈希算法确定报文转发路径的路径选择方式进行负载均衡处理,在能够匹配到Flowlet流表的情况下,仍可以由应用基于哈希算法确定报文转发路径的方式转换为采用Flowlet进行路径选择的方式进行负载均衡处理,并可使得报文到达报文接收设备时不会发生乱序,报文接收设备无需对接收到的报文进行重排序。

由于报文发送设备(诸如图1中的服务器,也可以是报文转发设备)能够确定报文的发送时间,故报文发送设备可以识别每个基于Flowlet流表表项转发的报文组中的第一个报文和最后一个报文,故本申请实施例中,可由报文发送设备来为每一基于Flowlet流表表项转发的报文组中的第一个报文设置Flowlet开始标记。该Flowlet开始标记可以由Flowlet中基于Flowlet流表表项转发的报文组中的首个报文携带。

采用传输控制协议(Transmission Control Protocol,TCP)传输报文,是实现报文可靠传输的一种机制。TCP中,定义了窗口的概念,所述窗口用于指示发送器(sender)在接收到许可之前允许传输的字节数目。本申请实施例中可将采用TCP发送报文的设备称为TCP发送器(Transmission Control Protocol sender,TCP sender),并将采用TCP接收报文的设备称为TCP接收器(Transmission Control Protocol receiver,TCP receiver)。TCP网络中,TCP发送器在一个TCP发送窗口内向TCP接收器发送包含有数据段(segment)的报文,该报文可称为TCP报文。本申请实施例以下涉及的采用TCP发送的报文是指上述TCP报文。所述TCP发送窗口能够表征TCP接收器期望接收到的报文的序列号,通过该序列号能够指示TCP接收器通过所述TCP发送窗口接收到的报文所包含的数据段。TCP接收器接收到TCP发送器通过TCP发送窗口发送的数据报文后,根据接收到的报文向所述TCP发送器发送确认(ACKnowledge,ACK)。所述TCP发送器接收到ACK后,才会在另一个TCP发送窗口内继续向所述TCP接收器发送报文。

本申请实施例中若报文发送设备采用TCP发送报文,由于报文发送设备在第一TCP发送窗口内发送报文后需要接收到ACK确认才会继续发送报文,而报文发送设备接收到ACK确认,则表明报文接收设备已经接收到报文发送设备发送的报文,故报文发送设备再在第二TCP发送窗口内向报文接收设备发送报文,其中,所述第二TCP发送窗口不同于第一TCP发送窗口,该第二TCP发送窗口是与所述第一TCP发送窗口相邻的TCP发送窗口,且所述报文发送设备接收到在第一TCP发送窗口内发送的报文对应的ACK确认后在所述第二TCP发送窗口内发送报文,其中,在第一TCP发送窗口内发送的报文对应的ACK确认是指在第一TCP发送窗口内发送的最后一个报文(第一报文)对应的ACK确认,故可使得报文到达报文接收设备时不会发生乱序,报文接收设备无需对接收到的报文进行重排序,故本申请实施例中可以认为报文发送设备采用TCP在每个TCP发送窗口发送的报文就是一个基于Flowlet流表表项转发的报文组中的多个报文。

一种可能的实施方式中,本申请实施例中采用TCP发送报文的报文发送设备可为在每个TCP发送窗口内发送的第一个报文设置Flowlet开始标记,所述Flowlet开始标记用于标识Flowlet中的第一个报文,换言之,若报文中包含有Flowlet开始标记,则可认为该包含有Flowlet开始标记的报文为Flowlet中的第一个报文。采用TCP发送报文的报文发送设备发送包含Flowlet开始标记的报文之后,若报文转发设备接收到报文发送设备采用TCP发送的该包含Flowlet开始标记的报文,则可基于接收到的报文中包含的Flowlet开始标记创建Flowlet流表表项,并依据创建的Flowlet流表表项转发报文,实现基于Flowlet机制的路径选择方式。

另一种可能的实施方式中,本申请实施例中采用TCP发送报文的报文发送设备可为在每个TCP发送窗口内发送的最后一个报文设置Flowlet结束标记。所述Flowlet结束标记用于标识基于Flowlet流表表项转发的报文组中的最后一个报文,换言之,若报文中包含有Flowlet结束标记,则可认为该包含有Flowlet结束标记的报文为基于Flowlet流表表项转发的一个报文组中的最后一个报文。采用TCP发送报文的报文发送设备发送包含Flowlet结束标记的报文之后,若报文转发设备接收到报文发送设备采用TCP发送的该包含Flowlet结束标记的报文,则可确定该报文为基于Flowlet流表表项转发的一个报文组中的最后一个报文,将该包含有Flowlet结束标记的报文转发完成后,确定该报文组转发结束,进而可将该结束转发的报文组所基于的Flowlet流表表项删除,以释放资源,该释放的资源可用于创建其它报文组所遵循的Flowlet流表表项,使更多的报文组能够匹配到Flowlet流表表项,进行负载均衡处理。

本申请实施例中Flowlet开始标记和/或Flowlet结束标记通过报文头中的空闲比特位携带。例如,可扩充已有TCP,通过报文头字段中的预留比特位(Reserved)携带。例如,可通过报文头字段中2个预留的比特位,标记Flowlet开始标记和Flowlet结束标记。本申请实施例中可通过比特位置位的方式来表示Flowlet开始标记和Flowlet结束标记,例如,报文中用于表示Flowlet开始标记的比特位若置位为1,则表示该报文中包含Flowlet开始标记,该报文为基于Flowlet流表表项转发的报文组中的第一个报文。报文中用于表示Flowlet结束标记的比特位若置位为1,则表示该报文中包含Flowlet结束标记,该报文为基于Flowlet流表表项转发的报文组中的最后一个报文。报文中用于表示Flowlet开始标记的比特位若置位为0,且用于表示Flowlet结束标记的比特位也置位为0,则表示该报文为基于Flowlet流表表项转发的报文组中位于第一个报文和最后一个报文之间的报文。

本申请实施例基于上述思想,提供一种由应用基于哈希算法确定报文转发路径的方式转换为采用Flowlet进行路径选择的方式进行负载均衡处理的实施方案。以下以报文发送设备采用TCP发送,并以每个TCP发送窗口发送的报文为基于Flowlet流表表项转发的一个报文组为例进行说明。

图3为本申请实施例提供的一种负载均衡处理方法流程图。图3所示方法的执行主体可以为报文转发设备,或者也可以是报文转发设备中的部件。所述报文转发设备可以是交换机、路由器等具有报文转发功能的设备,本申请实施例不做限定。参阅图3所示,该方法包括:

S101:报文转发设备接收报文发送设备采用TCP发送的第一报文。

本申请实施例中,所述第一报文为报文发送设备在第一TCP发送窗口内发送的最后一个报文。报文发送设备在第一TCP发送窗口内发送的最后一个报文在时间维度上可以理解为是在第一TCP发送窗口内最后发送的报文,而若通过序列号表示,则可理解为是在第一TCP发送窗口内发送的序列号最大的报文。

S102:报文转发设备根据所述第一报文的特征信息以及哈希算法确定出接口,并经由所述出接口转发所述第一报文。

本申请实施例中报文转发设备接收到报文发送设备发送的第一报文后,基于哈希算法确定报文转发路径。报文转发设备执行哈希算法时输入的哈希关键字可以为诸如第一报文的五元组等表征第一报文属性的特征信息。报文转发设备执行哈希算法时输出的哈希值可以用于表征转发路径信息,转发路径信息例如可以是转发报文的出接口等信息。

S103:报文转发设备接收报文发送设备采用TCP发送的第二报文。

本申请实施例中,所述第二报文为报文发送设备在第二TCP发送窗口内发送的第一个报文,且所述第二报文包含Flowlet开始标记。报文发送设备在第二TCP发送窗口内发送的第一个报文在时间维度上可以理解为是在第二TCP发送窗口内第一个发送的报文,而若通过序列号表示,则可理解为是在第二TCP发送窗口内发送的序列号最小的报文。

本申请实施例中第二TCP发送窗口是与所述第一TCP发送窗口相邻的TCP发送窗口,且报文发送设备接收到在第一TCP发送窗口内发送报文对应的ACK确认后,在第二TCP发送窗口内发送报文。其中,所述第一TCP发送窗口内发送的报文对应的ACK用于指示所述所述第一TCP发送窗口内发送的所有报文已到达目的地。例如,在第一TCP发送窗口内发送的报文对应的ACK确认是指在第一TCP发送窗口内发送的最后一个报文(第一报文)对应的ACK确认。所述ACK确认中携带的序列号与所述第一TCP报文中携带的序列号相等。

其中,第二报文中包括的Flowlet开始标记可通过第二报文的报文头中的空闲比特位携带。

本申请实施例中,所述第二报文可以和所述第一报文之间具有相同的特征信息。换言之,所述第二报文和所述第一报文是属于同一流中的报文。

S104:报文转发设备基于第二报文中包括的Flowlet开始标记创建第一Flowlet流表表项,并依据创建的所述第一Flowlet流表表项,转发第二报文。

本申请实施例中,报文转发设备基于第二报文中包括的Flowlet开始标记创建第一Flowlet流表表项所指示的用于转发第二报文的报文转发路径可以与基于哈希算法确定的用于转发第一报文的转发路径相同,当然也可不同。例如,第一Flowlet流表表项所指示的用于转发第二报文的出接口与基于哈希算法确定的用于转发第一报文的出接口是同一个出接口,或者是不同的出接口。

本申请实施例中,报文转发设备接收到报文发送设备在第一TCP发送窗口内发送的最后一个报文后,根据第一报文的特征信息以及哈希算法确定出接口,并经由所述出接口转发所述第一报文,是一种应用哈希算法确定报文转发路径的方式。报文转发设备接收到报文发送设备采用TCP在第二TCP发送窗口内发送的第二报文后,基于第二报文中包括的Flowlet开始标记创建第一Flowlet流表表项,并依据创建的所述第一Flowlet流表表项,转发第二报文,是一种基于Flowlet机制进行路径选择的方式。故通过本申请实施例可实现由应用基于哈希算法确定报文转发路径的方式转换为采用Flowlet进行路径选择的方式进行负载均衡处理。进一步的,报文转发设备是基于第二报文中包括的Flowlet开始标记创建的Flowlet流表表项,该Flowlet开始标记用于标识第二TCP发送窗口内发送的第一个报文,由于报文发送设备在第一TCP发送窗口内发送报文后需要接收到ACK确认才会继续发送报文,而报文发送设备接收到ACK确认,则表明报文接收设备已经接收到报文发送设备发送的报文,故报文发送设备再在第二TCP发送窗口内向报文接收设备发送报文,使得报文到达报文接收设备时不会发生乱序,报文接收设备无需对接收到的报文进行重排序。

本申请实施例中,报文转发设备接收到报文发送设备采用TCP发送的第二报文之后,继续接收报文发送设备采用TCP在发送第二TCP发送窗口内发送的报文,并依据创建的第一Flowlet流表表项转发后续接收到的报文发送设备采用TCP在发送第二TCP发送窗口内发送的报文。

本申请实施例中,若报文转发设备接收到报文发送设备采用TCP,在第二TCP发送窗口内发送的最后一个报文,且该在第二TCP发送窗口内发送的最后一个报文包含Flowlet结束标记,则在图3所示方法流程基础上,还可包括如下实施步骤,如图4所示:

S105:报文转发设备接收报文发送设备采用TCP发送的第三报文。

本申请实施例中将报文转发设备接收到的报文发送设备在第二TCP发送窗口内发送的最后一个报文称为第三报文,所述第三报文包含Flowlet结束标记。其中,第三报文中包括的Flowlet结束标记可通过第三报文的报文头中的空闲比特位携带。

S106:报文转发设备基于第三报文中包括的Flowlet结束标记,删除所述第一Flowlet流表表项。

本申请实施例中,报文转发设备基于第三报文中包括的Flowlet结束标记,删除所述第一Flowlet流表表项,能够释放资源,该释放的资源可用于创建其它报文组所遵循的Flowlet流表表项,使更多的报文组能够匹配到Flowlet流表表项,进行负载均衡处理。

本申请实施例中,报文转发设备接收报文发送设备采用TCP发送的第三报文后,可继续接收后续报文,并基于Flowlet机制的路径选择方式进行路径选择,实现过程如图5所示。图5所示的方法流程,在图4所示方法流程基础上,还可包括如下实施步骤:

S107:报文转发设备接收报文发送设备采用TCP发送的第四报文。

本申请实施例中,第四报文为报文发送设备在第三TCP发送窗口内发送的第一个报文,所述第四报文和所述第一报文之间具有相同的特征信息,换言之,第四报文和第一报文属于同一流。

所述第四报文包含Flowlet开始标记。第四报文中包含的Flowlet开始标记可通过第四报文的报文头中的空闲比特位携带。

本申请实施例中第四报文中包含的Flowlet开始标记与第二报文中包含的Flowlet开始标记可以相同也可以不同,但是第四报文中包含的Flowlet开始标记的功能与第二报文中包含的Flowlet开始标记的功能相同,都是用于标识数据发送设备在TCP发送窗口内发送的首个报文。

本申请实施例中第三TCP发送窗口是与所述第二TCP发送窗口相邻的TCP发送窗口,且报文发送设备在接收到在第二TCP发送窗口内发送报文对应的ACK确认后,在第三TCP发送窗口内发送报文。所述第二TCP发送窗口内发送的报文对应的ACK用于指示所述所述第二TCP发送窗口内发送的所有报文已到达目的地。例如,在第二TCP发送窗口内发送的报文对应的ACK确认是指在第二TCP发送窗口内发送的最后一个报文(第三报文)对应的ACK确认。所述ACK确认中携带的序列号与所述第三TCP报文中携带的序列号相等。

S108:报文转发设备基于第四报文中包括的Flowlet开始标记,创建第二Flowlet流表表项,并依据创建的第二Flowlet流表表项,转发所述第四报文。

本申请实施例中,报文转发设备基于第四报文中包括的Flowlet开始标记创建第二Flowlet流表表项所指示的用于转发第四报文的报文转发路径可以与基于第二报文中包括的Flowlet开始标记创建第一Flowlet流表表项所指示的用于转发第二报文的报文转发路径相同,当然也可不同。例如,第二Flowlet流表表项所指示的用于转发第四报文的出接口与第一Flowlet流表表项所指示的用于转发第二报文的出接口是同一个出接口,或者是不同的出接口。

本申请实施例中S107和S108中实施基于Flowlet机制的路径选择方式进行路径选择的实施过程,与S103和S104的实施过程类似,故相似之处可参阅上述实施例中S103和S104的描述,在此不再赘述。

本申请实施例中,报文转发设备接收到报文发送设备采用TCP发送的第四报文之后,继续接收报文发送设备采用TCP在发送第三TCP发送窗口内发送的报文,并依据创建的第二Flowlet流表表项转发后续接收到的报文发送设备采用TCP在发送第三TCP发送窗口内发送的报文。

本申请实施例中,还可周期性的检测已创建的Flowlet流表中占用流表资源时间超出设定时长的非活跃流表项,并删除所述非活跃流表项,以便能够释放资源,该释放的资源可用于创建其它Flowlet的Flowlet流表,使更多的Flowlet能够匹配到Flowlet流表,进行负载均衡处理。其中,所述非活跃流表项为在设定时长内未被执行的流表项。

基于上述实施例涉及的负载均衡处理方法,本申请实施例还提供了一种负载均衡处理装置。可以理解的是,负载均衡处理装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本申请实施例中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的技术方案的范围。

本申请实施例可以根据上述方法示例对负载均衡处理装置进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用集成的单元的情况下,图6示出了本申请实施例提供的负载均衡处理装置100的结构示意图。图6中,负载均衡处理装置100包括接收单元101、处理单元102和发送单元103。

所述接收单元101,用于接收报文发送设备采用TCP发送的第一报文,所述第一报文为所述报文发送设备在第一TCP发送窗口内发送的最后一个报文;并接收所述报文发送设备采用TCP发送的第二报文,所述第二报文为所述报文发送设备在第二TCP发送窗口内发送的第一个报文,所述第二报文包含Flowlet开始标记。其中,第二TCP发送窗口是与所述第一TCP发送窗口相邻的TCP发送窗口,且所述报文发送设备接收到在第一TCP发送窗口内发送的报文的正确ACK确认后在所述第二TCP发送窗口内发送报文。

所述处理单元102,用于根据所述接收单元101接收的第一报文的特征信息以及哈希算法确定出接口;并基于所述第二报文中包括的所述Flowlet开始标记创建第一Flowlet流表表项。

所述发送单元103,用于经由所述处理单元102确定的出接口转发所述第一报文,并依据所述处理单元102创建的所述第一Flowlet流表表项,转发所述第二报文,所述第二报文和所述第一报文之间具有相同的特征信息。

其中,所述接收单元101,还用于:创建第一Flowlet流表表项之后,接收所述报文发送设备采用TCP发送的第三报文,所述第三报文为所述报文发送设备在所述第二TCP发送窗口内发送的最后一个报文,所述第三报文包含Flowlet结束标记。所述处理单元102,还用于:基于所述接收单元101接收的第三报文中包括的所述Flowlet结束标记,删除所述第一Flowlet流表表项。

其中,所述接收单元101,还用于:在所述处理单元102确定所述报文发送设备采用TCP发送的第三报文中包括Flowlet结束标记之后,接收所述报文发送设备发送的第四报文,所述第四报文为所述报文发送设备在第三TCP发送窗口内发送的第一个报文,所述第四报文包含Flowlet开始标记。所述处理单元102,还用于:基于所述接收单元101接收的所述第四报文中包括的所述Flowlet开始标记,创建第二Flowlet流表表项;所述发送单元103,还用于:依据所述处理单元102创建的所述第二Flowlet流表表项,转发所述第四报文。

当采用硬件形式实现时,本申请实施例中,处理单元102可以是处理器,接收单元101和发送单元103可以是通信接口,通信接口是统称,可以包括一个或多个接口。

当处理单元102是处理器,接收单元101和发送单元103是通信接口时,本申请实施例提供的负载均衡处理装置100可具有如图7所示的结构。图7所示的负载均衡处理装置100可以是报文转发设备,该报文转发设备可以是负载均衡设备,也可以是交换机或者路由器等。

图7示出了本申请实施例提供的一种报文转发设备1000的结构示意图。参阅图7所示,报文转发设备1000采用通用计算机系统结构,包括总线,处理器1001,存储器1002和通信接口1003,执行本申请实施例方案的程序代码保存在存储器1002中,并由处理器1001来控制执行。

存储器1002中存储的程序用于指令处理器1001执行上述实施例涉及的负载均衡处理方法,包括:通过通信接口1003接收报文发送设备采用TCP发送的第一报文,所述第一报文为所述报文发送设备在第一TCP发送窗口内发送的最后一个报文。根据所述第一报文的特征信息以及哈希算法确定出接口,并经由所述出接口转发所述第一报文。通过通信接口1003接收所述报文发送设备采用TCP发送的第二报文,所述第二报文为所述报文发送设备在第二TCP发送窗口内发送的第一个报文,所述第二报文包含Flowlet开始标记,所述第二TCP发送窗口是与所述第一TCP发送窗口相邻的TCP发送窗口,且报文发送设备在接收到在第一TCP发送窗口内发送报文对应的ACK确认后,在所述第二TCP发送窗口内发送报文。数据转发设备基于所述第二报文中包括的所述Flowlet开始标记创建第一Flowlet流表表项,并依据创建的所述第一Flowlet流表表项,转发所述第二报文,所述第二报文和所述第一报文之间具有相同的特征信息。

一种可能的实施方式中,存储器1002中存储的程序还用于指令处理器1001在创建第一Flowlet流表表项之后,通过通信接口1003接收所述报文发送设备采用TCP发送的第三报文,所述第三报文为所述报文发送设备在所述第二TCP发送窗口内发送的最后一个报文,所述第三报文包含Flowlet结束标记,并基于所述第三报文中包括的所述Flowlet结束标记,删除所述第一Flowlet流表表项。

另一种实施方式中,一种可能的实施方式中,存储器1002中存储的程序还用于指令处理器1001确定所述报文发送设备发送的第三报文中包括Flowlet结束标记之后,通过通信接口1003接收所述报文发送设备采用TCP发送的第四报文,所述第四报文为所述报文发送设备在第三TCP发送窗口内发送的第一个报文,所述第四报文包含Flowlet开始标记,并基于所述第四报文中包括的所述Flowlet开始标记,创建第二Flowlet流表表项,并依据创建的所述第二Flowlet流表表项,转发所述第四报文。

需要说明的是,本申请实施例提供的负载均衡处理装置100和报文转发设备1000具备上述实施例中涉及的报文转发设备的功能,对于本申请实施例描述不够详尽的地方,可参阅上述实施例的相关描述,本申请实施例在此不再赘述。

进一步需要说明的是,上述涉及的总线可包括一通路,在计算机各个部件之间传送信息。

处理器可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路application-specific integrated circuit(ASIC),或一个或多个用于控制本申请实施例方案程序执行的集成电路。计算机系统中包括的一个或多个存储器,可以是只读存储器read-only memory(ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器random access memory(RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是磁盘存储器。这些存储器通过总线与处理器相连接。

通信接口,可以使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等.

存储器,如RAM,保存有操作系统和执行本申请实施例方案的程序。操作系统是用于控制其他程序运行,管理系统资源的程序。

本申请实施例还提供一种存储介质,用于储存上述负载均衡处理装置和报文转发设备所用的计算机软件指令,其包含用于执行上述第一方面涉及的用户读写请求调度方法所涉及的程序。

显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请实施例权利要求及其等同技术的范围之内,则本申请实施例也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1