TCP拥塞窗口的确定方法和装置与流程

文档序号:14359318阅读:471来源:国知局
本发明涉及网络传输
技术领域
,尤其涉及一种tcp拥塞窗口的确定方法和装置。
背景技术
:传输控制协议(transmissioncontrolprotocol,简称tcp)是目前互联网应用的主要传输协议之一,提供面向连接的、可靠的报文传输服务。其可以用于分组网络中的各节点之间进行可靠数据传输。其中,文件传输协议(filetransferprotocol,简称ftp)、超文本传送协议(hypertexttransferprotocol,简称http)及安全套接层(securesocketslayer,简称ssl)等当前互联网上使用的基础协议,都由tcp进行承载。在分组交换网络中,当需要传输的数据报文数目太多时,会出现链路带宽资源有限而导致网络传输性能下降的情况,也就是拥塞。当网络中发生拥塞时,会出现数据报文丢失,时延增大,网络吞吐量下降等现象,严重时会导致“拥塞崩溃”现象。拥塞控制是tcp保证分组网络中数据报文可靠传输的一个重要控制功能,其中拥塞窗口是拥塞控制主要涉及的一个关键参数,描述了tcp发送端针对某一数据流在一个往返时延(round-triptime,简称rtt)内最多可以发送的数据报文的数量。tcp发送端可以根据接收到的确认(acknowledge,简称ack)报文,通过调整拥塞窗口的大小实现报文发送窗口的调整,进而能够实现调整数据发送速率,避免网络崩溃现象的发生。因此,拥塞窗口设置的是否合理会直接影响对网络的拥塞控制效果。目前常用的tcp拥塞控制方法包括基于丢包检测的算法,一般认为丢包是网络拥塞的指示,当tcp发送端检测到三个重复ack报文就认为检测到发生丢包,随即启动拥塞控制策略,把拥塞窗口减半,按照新的拥塞窗口主动降低速率发送各连接的数据报文,以便网络从拥塞中恢复;其主要过程包括tcp慢启动、拥塞避免、快速重传和快速恢复等。由于现有的基于丢包反馈的拥塞控制是tcp发送端根据tcp接收端的ack反馈确认信息而对下一rtt周期的发送进行控制,其控制存在较大的滞后性,在网络已经出现拥塞,丢包明显后,tcp接收端才触发速率调整,这时候已经影响到用户感受了。为了改善这种“事后”的拥塞控制机制,现有技术引入了显式拥塞通知(explicitcongestionnotification,简称ecn)技术。这种技术需要具备“预警”的功能,就是在网络快拥塞还没有引起明显丢包的时候,通知tcp发送端提前降低速率。ecn方法的主要原理是:具有ecn能力的网络节点检测到即将发生的拥塞时,在接收的数据报文ip头部设置“经历拥塞”(congestionexperienced,简称ce)码点并将数据报文转发给tcp接收端。tcp接收端观察ce码点,并且在其向tcp发送端发送的下一ack报文的tcp头部设置“ecn回声标志”(ecnecho,简称ece)。tcp发送端接收具有ece的ack报文后,采用与类似分组已经被丢弃的方式相同的方式来响应。由此可见,ecn用于允许网络节点在即将出现拥塞时发送信号通知tcp接收端,tcp接收端收到具有ce标记的数据报文就知道有网络节点将要发生拥塞,从而通知tcp发送端提前实现降低传输速率以避免网络拥塞。然而,采用现有技术的方法,存在以下问题:首先,ecn的主要目的是在网络节点即将拥塞时提前让tcp发送端减小拥塞窗口来实现拥塞控制,但缺乏网络轻载时的处理机制。在网络轻载时,ecn方法无法快速通知tcp发送端网络资源的空闲状况,让tcp发送端快速增大拥塞窗口,提高传输速度,更好的利用网络传输资源。其次,ecn机制不能准确反应网络拥塞状况,当数据报文传输路径中多个网络节点出现拥塞时,ecn方法只进行ce码点标记,无法获知网络节点中拥塞最严重的节点以及区分各节点的拥塞程度,无法做到让tcp发送端准确获取网络的拥塞程度和瓶颈节点,导致tcp发送端难以快速而准确地减小拥塞窗口,进行高效拥塞控制避免。技术实现要素:本发明的目的在于克服现有技术的缺陷,提出了一种新的tcp拥塞窗口的确定方法和装置,从而实现根据数据报文经历路径的网络负载情况快速准确地调整tcp拥塞窗口。第一方面,本发明实施例提供一种tcp拥塞窗口的确定方法。其中,该方法包括:网络节点接收数据报文,所述数据报文的头部携带该数据报文所经历路径的负载程度;所述网络节点获取发送所述数据报文对应的第一输出端口的负载程度;所述网络节点根据第一输出端口的负载程度更新所述数据报文的负载程度;所述网络节点发送所述更新后的数据报文。结合第一方面,在第一方面的第一种可能的实现方式中,所述网络节点更新数据报文的负载程度包括:所述网络节点将发送数据报文对应的第一输出端口的负载程度添加到所述数据报文的头部。结合第一方面,在第一方面的第二种可能的实现方式中,所述网络节点更新数据报文的负载程度包括:所述网络节点确定发送数据报文对应的第一输出端口的负载程度大于所述数据报文头部的负载程度;所述网络节点将发送数据报文对应的第一输出端口的负载程度替换所述数据报文头部的负载程度。结合第一方面至第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述负载程度可以表征为空闲率或拥塞度。结合第一方面,在第一方面的第四种可能的实现方式中,所述数据报文是ip数据报文。第二方面,本发明实施例提供一种tcp拥塞窗口的确定方法。其中,该方法包括:tcp发送端发送源数据报文,等待接收ack报文;所述tcp发送端接收ack报文;所述tcp发送端根据所述ack报文头部携带的负载程度确定tcp拥塞窗口。结合第二方面,在第二方面的第一种可能的实现方式中,所述确定tcp拥塞窗口的方法还包括:当负载程度小于或等于1时,新的tcp拥塞窗口=当前拥塞窗口*(1+(1-负载程度)/负载程度);当负载程度大于1时,新的tcp拥塞窗口=当前拥塞窗口/负载程度。第三方面,本发明实施例提供一种tcp拥塞窗口的确定方法。其中,该方法包括:tcp接收端接收数据报文;所述tcp接收端生成所述数据报文的ack报文,所述ack报文头部携带所述数据报文头部的负载程度;所述tcp接收端发送ack报文。第四方面,本发明实施例提供一种网络节点。所述网络节点包括通信接口和处理器。所述处理器用于通过通信接口接收数据报文,并获取发送所述数据报文对应的第一输出端口的负载程度;所述数据报文的头部携带该数据报文所经历路径的负载程度;根据第一输出端口的负载程度更新所述数据报文的负载程度;通过通信接口发送所述更新后的数据报文。结合第四方面,在第四方面的第一种可能的实现方式中,所述处理器更新数据报文的负载程度包括:所述处理器将发送数据报文对应的第一输出端口的负载程度添加到所述数据报文的头部。结合第四方面,在第四方面的第二种可能的实现方式中,所述处理器更新数据报文的负载程度包括:所述处理器确定发送数据报文对应的第一输出端口的负载程度大于所述数据报文头部的负载程度;所述处理器将发送数据报文对应的第一输出端口的负载程度替换所述数据报文头部的负载程度。结合第四方面至第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述负载程度可以表征为第一输出端口的空闲率或拥塞度。结合第四方面,在第四方面的第四种可能的实现方式中,所述数据报文是ip数据报文。第五方面,本发明实施例提供一种tcp发送端。所述tcp发送端包括通信接口和处理器。所述处理器用于通过通信接口发送源数据报文和接收ack报文;根据所述ack报文头部携带的负载程度确定tcp拥塞窗口。结合第五方面,在第五方面的第一种可能的实现方式中,所述处理器确定tcp拥塞窗口的步骤还包括:当负载程度小于或等于1时,新的tcp拥塞窗口=当前拥塞窗口*(1+(1-负载程度)/负载程度);当负载程度大于1时,新的tcp拥塞窗口=当前拥塞窗口/负载程度。第六方面,本发明实施例提供一种tcp接收端。所述tcp接收端包括通信接口和处理器。所述处理器用于通过通信接口接收数据报文;生成所述数据报文的ack报文,所述ack报文头部携带所述数据报文头部的负载程度;通过通信接口发送ack报文。在本发明实施例中,在确定tcp拥塞窗口的过程中,由于考虑了数据报文所经历的路径上各网络节点的负载程度,可以更加合理准确地确定拥塞窗口大小。在网络低负载或高负载阶段,本发明方法可以实现快速而准确地增大或减小拥塞窗口至理想状态,使网络传输资源快速收敛于高利用率并提高网络吞吐量;同时,应用本实施例的tcp发送窗口调整的方法,tcp发送端的每条业务流可以获得的负载程度相同,在网络低负载或高负载阶段,拥塞窗口的增加或减少的比例也相同,从而提高每条业务流之间的公平性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种网络架构示意图;图2是本发明实施例提供的一种确定tcp拥塞窗口方法的流程示意图;图3是本发明实施例提供的另一种确定tcp拥塞窗口方法的流程示意图;图4是本发明实施例提供的一种网络节点确定tcp拥塞窗口方法的流程示意图;图5是本发明实施例提供的另一种网络节点确定tcp拥塞窗口方法的流程示意图;图6是本发明实施例提供的另一种网络节点确定tcp拥塞窗口方法的流程示意图;图7是本发明实施例提供的一种tcp发送端确定tcp拥塞窗口方法的流程示意图;图8是本发明实施例提供的一种tcp接收端确定tcp拥塞窗口方法的流程示意图;图9是本发明实施例提供的一种tcp发送端的组成结构示意图;图10是本发明实施例提供的另一种tcp发送端的组成结构示意图;图11是本发明实施例提供的一种网络节点的组成结构示意图;图12是本发明实施例提供的另一种网络节点的组成结构示意图;图13是本发明实施例提供的一种tcp接收端的组成结构示意图;图14是本发明实施例提供的另一种tcp接收端的组成结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。本发明实施例提供的tcp拥塞窗口的确定方法和装置,适用于网络数据传输,尤其是在tcp发送端与tcp接收端之间通过一个或多个网络节点进行数据报文传输的场景。图1示出了本发明实施例应用的网络架构,网络中包含tcp发送端、网络节点以及tcp接收端等网元,其中tcp发送端通过m个网络节点将数据报文发送到tcp接收端,m为大于或等于1的整数。图1中m为2。首先对本发明实施例提供的tcp拥塞窗口的确定方法中各种方法执行主体进行说明。如图1所示,tcp发送端,包括但不限于网络服务器(英文:webserver)、视频服务器(英文:videoserver)、即时通信服务器(英文:imserver)和游戏服务器(英文:gameserver)等,向tcp接收端提供网络页面、视频文件、im交流和游戏等功能。tcp接收端,包括但不限于浏览器、视频播放器、im聊天软件和网络游戏等多种不同应用,获取tcp发送端发送的数据,为用户提供网络浏览、视频播放、通信交流及娱乐休闲等功能。网络节点为位于tcp发送端和tcp接收端之间的数据报文转发设备,网络节点具有ip地址,支持传输层协议传输控制协议/因特网互联协议(transmissioncontrolprotocol/internetprotocol,tcp/ip),可以是数字用户线路接入复用器(digitalsubscriberlineaccessmultiplexer,dslam)、交换机、路由器或光线路终端设备(opticallineterminal,olt)等网络节点。本发明实施例的实现,部署在tcp发送端、网络节点以及tcp接收端的网元上。图2为本发明提供的tcp拥塞窗口的确定方法的一种实施例的流程示意图。如图2所示,tcp发送端通过第一网络节点以及第二网络节点与tcp接收端连接。本实施例中将与tcp发送端直接连接的网络节点称为第一网络节点;第一网络节点和第二网络节点以及tcp接收端的连接可以是直接的连接,也可以是间接的连接,如第一网络节点和第二网络节点之间、以及第二网络节点与tcp接收端之间还可以连接有其他中继设备、交换设备、汇聚设备等网络节点,第一网络节点也可以直接和tcp接收端连接。本发明实施例的方法可以应用在tcp发送端和tcp接收端建立起tcp连接后的数据报文发送过程中。如图2所示,该方法包含如下步骤:201、tcp发送端向第一网络节点发送源数据报文。其中,所述源数据报文指tcp发送端向tcp接收端发送的数据报文。202、第一网络节点获取其用于发送所述源数据报文对应的第一输出端口的负载程度,并将所述负载程度添加到源数据报文的头部。在本发明实施例中,第一网络节点可以通过查找数据发送表来获取发送所述源数据报文对应的第一输出端口,其中获取发送数据报文对应的第一输出端口的方法可参阅现有技术,具体的实现细节在此不再赘述。所述负载程度反应了网络节点在发送数据报文的第一输出端口的数据发送状况与该输出端口发送能力之间的关系。负载程度的取值为大于或等于0的实数。当负载程度小于1时,表明第一输出端口有超过发送数据报文所需的传输资源;当负载程度等于1时,表明第一输出端口的传输资源和发送数据报文所需的传输资源相当;当负载程度大于1时,表明第一输出端口的传输资源不能满足发送数据报文所需的传输资源,即第一输出端口进入拥塞状态。在一些实施方式中,负载程度可以表征为第一输出端口的空闲率,空闲率可表示为第一输出端口的剩余的或未使用的发送能力。示例性地,第一输出端口的带宽为1gbps,实际的数据发送量只有600mbps,那么第一输出端口的空闲率为40%(即(1gbps-600mbps)/1gbps=40%)。由此可见,当第一输出端口的负载程度越小,对应的空闲率越大;反之,当第一输出端口的负载程度越大,对应的空闲率越小。在另一些实施方式中,负载程度可以表征为第一输出端口的拥塞度,拥塞度可表示为第一输出端口未能满足数据报文发送需求的所需的额外的传输资源。示例性地,第一输出端口发送的数据报文速率需求为1.2gbps,而其对应的带宽为1gbps,那么第一输出端口的拥塞度为20%(即1.2gbps/1gbps-1=20%),即数据报文发送流量超出可用带宽20%。由此可见,当第一输出端口的负载程度越大,对应的拥塞度越大;反之,当第一输出端口的负载程度越小,对应的拥塞度也越小。可选地,第一网络节点对第一输出端口负载程度的获取方式为,第一网络节点在通过第一输出端口发送的一个或多个tcp业务流的最大rtt之后(一般为200ms左右)检测各个tcp业务流的流量趋于稳定,经过随后的多个采样周期(一般为ms级)检测第一输出端口的数据发送状况和传输资源,从而获取所述第一输出端口的负载程度。此外,所述负载程度还可以使用第一端口的繁忙程度、队列长度、或资源剩余量来表征。在本发明实施例中,第一网络节点根据所述第一输出端口的负载程度更新所接收的源数据报文。具体地,第一网络节点将第一输出端口的所述负载程度添加到所接收的源数据报文的头部,源数据报文的载荷保持不变,生成第一网络节点数据报文。示例性地,如果tcp发送端发送的是ip数据报文,则数据报文的ip头部携带的负载程度可以通过扩展ip选项来实现。具体地,可以将需要封装的内容封装到ip报文的类型、长度、数值tlv(type-length-value)字段中,如表格1所示。表格1typelengthvalue负载程度value字段为float类型,占用4个字节0.8值得说明的是,表格1示例性地给出第一网络节点第一输出端口的负载程度为0.8,在实际网络中,该数值的大小根据第一网络节点第一输出端口基于前述的负载程度定义计算所得。例如,第一输出端口的带宽为1gbps,负载程度为0.8,则表示第一输出端口的空闲率为20%。203、第一网络节点向第二网络节点发送第一网络节点数据报文。所述数据报文的头部携带了负载程度。其中,所述负载程度是第一网络节点在接收的源数据报文的头部添加的第一网络节点第一输出端口的负载程度。204、第二网络节点接收第一网络节点发送的第一网络节点数据报文,获取第二网络节点发送所述数据报文对应的第二输出端口的负载程度,若所述负载程度大于第一网络节点数据报文头部的负载程度时,更新第一网络节点数据报文头部的负载程度,生成第二网络节点数据报文,所述第一网络节点数据报文和第二网络节点数据报文的载荷是相同的;否则不改变第一网络节点数据报文头部的负载程度,将第一网络节点数据报文作为第二网络节点数据报文。在本发明实施例中,第二网络节点可通过查找数据发送表来获取发送所述数据报文对应到第二输出端口,其中获取发送数据报文对应的第二输出端口的方法可参阅现有技术,具体的实现细节在此不再赘述。具体地,第二网络节点获取自身在第二输出端口的负载程度,并将所述负载程度与所接收的第一网络节点数据报文头部的负载程度进行比较。一方面,若所述负载程度大于第一网络节点数据报文头部的负载程度,表明第二网络节点为所述数据报文能提供的传输能力低于第一网络节点为所述数据报文提供的传输能力。在这种情况下,第二网络节点是网路中传输所述tcp源数据报文的瓶颈节点。此时,第二网络节点将第二网络节点第二输出端口的负载程度替换所接收的第一网络节点数据报文的头部的负载程度,并保持第一网络节点数据报文的载荷不变,作为第二网络节点发送的数据报文。另一方面,若所述负载程度等于或小于所接收到的第一网络节点数据报文头部的负载程度,表明第二网络节点为所述数据报文能提供的传输能力不低于第一网络节点为所述数据报文提供的传输能力。在这种情况下,第二网络节点不是网络中传输所述tcp数据报文的瓶颈节点。此时,第二网络节点可以不对接收到的第一网络节点数据报文的头部的负载程度进行处理,直接将接收到的第一网络节点数据报文作为第二网络节点数据报文。205、第二网络节点向tcp接收端发送第二网络节点数据报文。该数据报文的头部携带了经过第二网络节点处理后的负载程度。在本发明实施例中,根据上述步骤204的操作,一方面,如果第二网络节点第二输出端口的负载程度大于第一网络节点数据报文头部的负载程度,则第二网络节点数据报文的头部携带的负载程度是第二网络节点第二输出端口的负载程度;另一方面,如果第二网络节点第二输出端口的负载程度等于或小于第一网络节点数据报文头部的负载程度,则第二网络节点数据报文的头部携带的负载程度是第一网络节点第一输出端口的负载程度。206、tcp接收端通过解析所接收的第二网络节点数据报文,从数据报文的头部获取负载程度,并将所述负载程度封装到ack报文的头部。其中,所述ack报文的头部携带的负载程度是tcp接收端接收到的第二网络节点数据报文头部携带的负载程度。在本发明实施例中,tcp接收端通过解析所接收的数据报文,从接收的数据报文的头部获取负载程度,并将该负载程度封装到ack报文的头部。示例性地,所述ack报文可以以tcp协议承载,则ack报文的tcp头部携带的负载程度可以通过扩展tcp选项来实现。具体地,可以将需要封装的内容封装到tcp报文的类型、长度、数值tlv(type-length-value)字段中,具体实现和表格1所示的ip选项是一致的。tcp接收端从数据报文头部获取负载程度并将该负载程度重新封装到ack报文的tcp头部的方法可参阅现有技术,具体的实现细节在此不再赘述。207、tcp接收端向tcp发送端返回确认(acknowledgement,ack)报文,所述ack报文的头部携带负载程度。其中,所述负载程度是tcp接收端经过上述步骤206操作后获取的负载程度。208、tcp发送端接收到tcp接收端返回的ack报文后,根据ack报文头部携带的负载程度以及tcp发送端当前的拥塞窗口,确定新的tcp拥塞窗口。其中,tcp发送端根据所述负载程度确定新的tcp拥塞窗口的具体方法在后续实施例中有详细描述。图3为本发明提供的tcp拥塞窗口的确定方法的另一实施例的流程示意图。该方法包含如下步骤:301、tcp发送端向第一网络节点发送源数据报文。302、第一网络节点获取其用于发送所述数据报文对应的第一输出端口的负载程度。第一网络节点根据所述第一输出端口的负载程度更新所接收的源数据报文。具体地,第一网络节点将第一输出端口的所述负载程度添加到所接收的源数据报文的头部,源数据报文的载荷保持不变,生成第一网络节点数据报文。303、第一网络节点向第二网络节点发送第一网络节点数据报文。该数据报文的头部携带了负载程度。上述步骤301、302和303分别与前述实施例中步骤201、202和203的实现方式相类似,此处不再赘述。304、第二网络节点接收第一网络节点发送的数据报文,获取第二网络节点发送所述数据报文对应的第二输出端口的负载程度,将所述负载程度添加到所接收的数据报文头部以更新数据报文头部的负载程度,生成第二网络节点数据报文,所述第一网络节点数据报文和第二网络节点数据报文的载荷是相同的。在本发明实施例中,第二网络节点不修改所接收到的第一网络节点数据报文头部的负载程度,第二网络节点将发送所述数据报文对应的第二输出端口的负载程度添加到第一网络节点数据报文的头部。示例性地,如果tcp发送端发送的是ip数据报文,第二网络节点可以将第二输出端口的负载程度以tlv字段形式添加到所接收的第一网络节点数据报文ip头部的负载程度的tlv字段之后,形成新的负载程度。与前述实施例中步骤204不同之处在于,经过步骤304后,所述第二网络节点数据报文的ip头部携带的负载程度包含了第一网络节点第一输出端口的负载程度和第二网络节点第二输出端口的负载程度。305、第二网络节点向tcp接收端发送第二网络节点数据报文。该数据报文的头部携带了经过第二网络节点处理后的负载程度。其中,所述数据报文的头部携带的负载程度包含了第一网络节点第一输出端口的负载程度和第二网络节点第二输出端口的负载程度。306、tcp接收端通过解析所接收的第二网络节点数据报文,从数据报文的头部获取负载程度,并将该负载程度封装到ack报文的头部。在一些实施方式中,所述ack报文的头部携带的负载程度是未经处理的tcp接收端接收到的数据报文头部携带的负载程度。示例性地,tcp接收端接收到的数据报文头部携带的负载程度包含第一网络节点和第二网络节点的负载程度,tcp接收端可以将所述第一网络节点第一输出端口的负载程度和第二网络节点第二输出端口的负载程度不进行处理,直接封装到ack报文的头部。在另一些实施方式中,所述ack报文的头部携带的负载程度是经处理的tcp接收端接收到的数据报文头部携带的负载程度。示例性地,tcp接收端接收到的数据报文头部携带的负载程度包含第一网络节点第一输出端口的负载程度和第二网络节点第二输出端口的负载程度,tcp接收端把所述第一网络节点和第二网络节点的负载程度进行数学运算处理,如进行平均处理,将平均后的负载程度封装到ack报文的头部。307、tcp接收端向tcp发送端返回确认(acknowledgement,ack)报文,所述ack报文的头部携带负载程度。在一些实施方式中,所述ack报文的头部携带的负载程度包含了第一网络节点第一输出端口的负载程度和第二网络节点第二输出端口的负载程度。在另一些实施方式中,所述ack报文的头部携带的负载程度包含了将第一网络节点第一输出端口的负载程度和第二网络节点第二输出端口的负载程度进行数学运算处理后的负载程度。308、tcp发送端接收到tcp接收端返回的ack报文后,根据ack报文头部携带的负载程度以及tcp发送端当前的拥塞窗口,确定新的tcp拥塞窗口。其中,tcp发送端根据所述负载程度确定新的tcp拥塞窗口的具体方法在后续实施例中有详细描述。接下来首先从网络节点侧介绍本发明实施例提供的tcp拥塞窗口的确定方法。图4为本发明网络中拥塞窗口确定方法的一种实施例的流程示意图,本实施例的执行主体是网络节点,本实施例的方法如下:401、接收数据报文,所述数据报文的头部携带该数据报文所经历路径的负载程度。其中,所述数据报文的头部携带负载程度。在一些实施方式中,网络节点接收tcp发送端发送的源数据报文;此时所述网络节点对应如图2所示的第一网络节点。在这种情况下,所述网络节点默认所接收的数据报文头部携带的负载程度为0。在另一些实施方式中,网络节点接收其他网络节点发送的数据报文;此时所述网络节点对应如图2所示的第二网络节点。在这种情况下,所述网络节点所接收的数据报文头部携带经过所述其他网络节点处理后的负载程度。402、获取发送所述数据报文对应的第一输出端口的负载程度。所述负载程度反映了网络节点在发送数据报文的第一输出端口的数据发送状况与该输出端口发送能力之间的关系。负载程度的取值为大于或等于0的实数。当负载程度小于1时,表明第一输出端口有超过发送数据报文所需的传输资源;当负载程度等于1时,表明第一输出端口的传输资源和发送数据报文所需的传输资源相当;当负载程度大于1时,表明第一输出端口的传输资源不能满足发送数据报文所需的传输资源,即第一输出端口进入拥塞状态。在一些实施方式中,负载程度可以表征为第一输出端口的空闲率,空闲率可表示为第一输出端口的剩余的或未使用的发送能力。示例性地,第一输出端口的带宽为1gbps,实际的数据发送量只有600mbps,那么第一输出端口的空闲率为40%(即(1gbps-600mbps)/1gbps=40%)。由此可见,当第一输出端口的负载程度越小,对应的空闲率越大;反之,当第一输出端口的负载程度越大,对应的空闲率越小。在另一些实施方式中,负载程度可以表征为第一输出端口的拥塞度,拥塞度可表示为第一输出端口未能满足数据报文发送需求的所需的额外的传输资源。示例性地,第一输出端口发送的数据报文速率需求为1.2gbps,而其对应的带宽为1gbps,那么第一输出端口的拥塞度为20%(即1.2gbps/1gbps-1=20%),也就是说数据报文发送流量超出可用带宽20%。由此可见,当第一输出端口的负载程度越大,对应的拥塞度越大;反之,当第一输出端口的负载程度越小,对应的拥塞度也越小。此外,所述负载程度还可以使用第一端口的繁忙程度、队列长度、或资源剩余量来表征。可选地,第一网络节点对第一输出端口负载程度的获取方式为,第一网络节点在通过第一输出端口发送的一个或多个tcp业务流的最大rtt之后(一般为200ms左右)检测各个tcp业务流的流量趋于稳定,经过随后的多个采样周期(一般为ms级)检测第一输出端口的数据发送状况和传输资源,从而获取所述第一输出端口的负载程度。403、根据第一输出端口的负载程度更新所述数据报文的负载程度。在本发明实施例中,网络节点根据第一输出端口的负载程度更新所接收的数据报文头部的负载程度,并保持数据报文的载荷不变,作为更新后的数据报文。404、发送所述更新后的数据报文。可选地,在上述步骤403中,网络节点接收其他网络节点发送的数据报文,并在确定第一输出端口的负载程度大于接收的数据报文头部的负载程度时,将所述第一输出端口的负载程度替换所接收到的数据报文的头部的负载程度,并保持数据报文的载荷不变,作为更新后的数据报文。可选地,在上述步骤403中,网络节点不修改所接收的数据报文头部的负载程度,将第一输出端口的负载程度添加到所接收的数据报文的头部,并保持数据报文的载荷不变,作为更新后的数据报文。图5为结合上述第一种更新数据报文方式的网络节点的流程示意图,本实施例的方法如下:501、接收数据报文。502、获取其用于发送所述数据报文对应的第一输出端口的负载程度。503、判断第一输出端口的负载程度是否大于所接收的数据报文头部的负载程度。若是,则进入步骤504;否则,跳至步骤505。在一些实施方式中,网络节点接收tcp发送端发送的源数据报文,则默认为接收的数据报文头部携带的负载程度为0。在另一些实施方式中,网络节点接收其他网络节点发送的数据报文,接收的数据报文的负载程度为所述数据报文头部携带的负载程度。进一步地,网络节点获取发送数据报文对应的第一输出端口的负载程度,并将该负载程度与接收的数据报文头部的负载程度进行比较。504、将第一输出端口的负载程度替换所述数据报文头部的负载程度,所述数据报文的载荷保持不变,生成网络节点数据报文。在本发明实施例中,网络节点是网路中传输所述tcp源数据报文的瓶颈节点。此时,所述网络节点将第一输出端口的负载程度替换所接收到的数据报文的头部的负载程度,并保持数据报文的载荷不变,作为所述网络节点发送的数据报文。505、发送网络节点数据报文。其中,所述网络节点数据报文中的头部携带负载程度。在一些实施方式中,所述负载程度可以是所述网络节点接收的数据报文头部的负载程度。在另一些实施方式中,所述负载程度可以是所述网络节点第一输出端口的负载程度。图6为结合上述第二种更新数据报文方式的网络节点的流程示意图,本实施例的方法如下:601、接收数据报文。602、获取其用于发送所述数据报文对应的第一输出端口的负载程度。上述步骤601、602分别与前述实施例中步骤501、502的实现方式相类似,此处不再赘述。603、将第一输出端口的负载程度添加入数据报文头部,所述数据报文的载荷保持不变,生成网络节点数据报文。在本发明实施例中,网络节点不修改所接收的数据报文头部的负载程度,网络节点将发送所述数据报文对应的第一输出端口的负载程度添加到所接收的数据报文的头部,并保持数据报文的载荷不变,作为所述网络节点发送的数据报文。与前述实施例中步骤503不同之处在于,经过步骤603后,所述网络节点数据报文的头部携带的负载程度包含了所述网络节点接收的数据报文头部携带的负载程度以及所述网络节点的第一输出端口的负载程度。604、发送网络节点数据报文。其中,所述网络节点数据报文中的头部携带负载程度。该负载程度可以包含所述网络节点接收的数据报文头部携带的负载程度和所述网络节点的第一输出端口的负载程度。接下来从tcp发送端侧介绍本发明实施例提供的tcp拥塞窗口的确定方法。图7为本发明网络中拥塞窗口确定方法的一种实施例的流程示意图,本实施例的执行主体是tcp发送端,结合图1所示的网络场景,本实施例的方法如下:701、发送源数据报文,等待接收ack报文。其中,所述源数据报文指tcp发送端向tcp接收端发送的数据报文。在本发明实施例中,tcp发送端发送源数据报文后,进入等待接收状态,等待tcp接收端返回的ack报文。702、接收ack报文。其中,所述ack报文是tcp接收端返回给tcp发送端,用以确认收到tcp发送端发送的源数据报文。703、根据ack报文头部携带的负载程度确定tcp拥塞窗口。在本发明实施例中,tcp发送端根据接收的ack报文头部携带的负载程度,结合当前的拥塞窗口,确定新的tcp拥塞窗口。可选地,在上述步骤703中,tcp发送端接收到的ack报文头部携带的负载程度包含一个负载程度tlv。新的tcp拥塞窗口可以确定为当前拥塞窗口与负载程度的数学运算。示例性地,当负载程度小于或等于1时,新的tcp拥塞窗口=当前拥塞窗口*(1+(1-负载程度)/负载程度);当负载程度大于1时,新的tcp拥塞窗口=当前拥塞窗口/负载程度。例如,当前tcp拥塞窗口=100,如果负载程度=50%,即网络中的空闲率为50%,则新的tcp拥塞窗口=100*(1+(1-50%)/50%)=200,即新的tcp拥塞窗口比当前tcp拥塞窗口增加了一倍;如果负载程度=120%,即网络中的拥塞率为20%,则新的tcp拥塞窗口=100/120%=83,即新的tcp拥塞窗口比当前tcp拥塞窗口减少了20%。当tcp发送端同时发送多个业务流时,如第一业务流和第二业务流,每个业务流有各自的tcp拥塞窗口。相应地,每个业务流的新的tcp拥塞窗口可以确定为每个业务流的当前拥塞窗口与负载程度的数学运算。示例性地,当负载程度小于或等于1时,每个业务流的新的tcp拥塞窗口=每个业务流的当前拥塞窗口*(1+(1-负载程度)/负载程度);当负载程度大于1时,每个业务流的新的tcp拥塞窗口=每个业务流的当前拥塞窗口/网络拥塞程度。例如,第一业务流当前tcp拥塞窗口=50,第二业务流当前tcp拥塞窗口=80,如果负载程度=50%,即网络中的空闲率为50%,则第一业务流的新的tcp拥塞窗口=50*(1-50%)/50%=100,第二业务流的新的tcp拥塞窗口=80*(1+(1-50%)/50%)=160;如果负载程度=120%,即网络中的拥塞率为20%,则第一业务流的新的tcp拥塞窗口=50/120%=41,第二业务流的新的tcp拥塞窗口=80/120%=66。可选地,在上述步骤703中,tcp发送端收到的ack报文头部携带的负载程度包含多个负载程度tlv。新的tcp拥塞窗口可以确定为当前拥塞窗口与负载程度中的多个负载程度的数学运算。示例性地,当负载程度小于或等于1时,新的tcp拥塞窗口=当前拥塞窗口*(1+(1-负载程度)/负载程度);当负载程度大于1时,新的tcp拥塞窗口=当前拥塞窗口/网络拥塞程度。其中,所述负载程度i,n表示负载程度包含了n个负载程度。当tcp发送端发送一个业务流时,如果当前tcp拥塞窗口=100并且负载程度包含两个负载程度tlv为负载程度1=50%、负载程度2=70%,则负载程度=(50%+70%)/2=60%,即网络中的空闲率为40%,则新的tcp拥塞窗口=100*(1+(1-60%)/60%)=166;如果当前tcp拥塞窗口=100并且负载程度包含两个负载程度tlv为负载程度1=120%,负载程度2=110%,则负载程度=(120%+110%)/2=105%,即网络中的拥塞率为5%,则新的tcp拥塞窗口=100/105%=95。当tcp发送端同时发送多个业务流时,每个业务流的新的tcp拥塞窗口可以确定为每个业务流的当前拥塞窗口与负载程度的数学运算。示例性地,第一业务流当前tcp拥塞窗口=50,第二业务流当前tcp拥塞窗口=80,如果负载程度包含两个负载程度tlv为负载程度1=50%,负载程度2=70%,则负载程度=(50%+70%)/2=60%,即网络中的空闲率为40%,则第一业务流的新的tcp拥塞窗口=50*(1+(1-60%)/60%)=83,第二业务流的新的tcp拥塞窗口=80*(1+(1-60%)/60%)=133;如果负载程度包含两个负载程度tlv为负载程度1=120%,负载程度2=110%,则负载程度=(120%+110%)/2=105%,即网络中的拥塞率为5%,则第一业务流的新的tcp拥塞窗口=50/105%=47,第二业务流的新的tcp拥塞窗口=80/105%=76。接下来从tcp接收端侧介绍本发明实施例提供的tcp拥塞窗口的确定方法。图8为本发明网络中拥塞窗口确定方法的一种实施例的流程示意图,本实施例的执行主体是tcp接收端,结合图1所示的网络场景,本实施例的方法如下:801、接收数据报文。802、生成所述数据报文的ack报文,所述ack报文头部携带所述数据报文头部的负载程度。803、发送ack报文。其中,所述ack报文的头部携带负载程度。可选地,在上述步骤802中,tcp接收端把接收的数据报文头部携带的负载程度不进行处理,直接封装到ack报文的头部。在这种情况下,ack报文的头部携带的负载程度可包含一个或多个负载程度tlv。可选地,在上述步骤802中,tcp接收端把接收的数据报文头部携带的负载程度进行数学运算处理,将经过运算处理的负载程度封装到ack报文的头部。在这种情况下,ack报文的头部携带的负载程度包含一个负载程度tlv。上述主要从各个网元之间的交互以及网元自身的处理的角度对本发明实施例提供的方案进行了介绍。可以理解的是,各个网元为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例,本专利申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本专利申请的范围。本专利申请进一步给出实现上述方法实施例中各步骤及方法的装置实施例。值得注意的是,装置实施例可以与上述方法配合使用,也可以单独使用。图9是本发明实施例提供的一种tcp发送端的结构示意图。如图9所示,该tcp发送端包括处理器901、存储器902以及通信接口903。处理器901连接到存储器902和通信接口903,例如处理器901可以通过总线连接到存储器902和通信接口903。处理器901被配置为支持tcp发送端执行上述方法中相应的功能。该处理器901可以是中央处理器(英文:centralprocessingunit,cpu),网络处理器(英文:networkprocessor,np),硬件芯片或者其任意组合。上述硬件芯片可以是专用集成电路(英文:application-specificintegratedcircuit,asic),可编程逻辑器件(英文:programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,cpld),现场可编程逻辑门阵列(英文:field-programmablegatearray,fpga),通用阵列逻辑(英文:genericarraylogic,gal)或其任意组合。存储器902存储器用于存储tcp发送端需要发送的数据报文、以及来自tcp接收端返回的ack报文等。存储器902可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-accessmemory,缩写:ram);存储器902也可以包括非易失性存储器(英文:non-volatilememory),例如只读存储器(英文:read-onlymemory,缩写:rom),快闪存储器(英文:flashmemory),硬盘(英文:harddiskdrive,缩写:hdd)或固态硬盘(英文:solid-statedrive,缩写:ssd);存储器902还可以包括上述种类的存储器的组合。通信接口903用于与网络节点或者tcp接收端连接,与网络节点或者tcp接收端收发上述方法中所涉及的消息。处理器901可以执行以下操作:通过通信接口903发送源数据报文,并接收tcp接收端返回的ack报文,所述ack报文的头部携带负载程度;根据所述负载程度来确定tcp拥塞窗口。具体实施方式请参阅图7所述实施例的描述。图10是本发明实施例提供的另一种tcp发送端的结构示意图。如图10所示,该tcp发送端包括:接收模块1001,用于接收ack报文,所述ack报文的头部携带负载程度。处理模块1002,用于根据接收到的所述ack报文的头部携带的负载程度,调整tcp发送窗口。具体实施方式请参阅图7所述实施例的描述。发送模块1003,用于发送源数据报文。图11是本发明实施例提供的一种网络节点的结构示意图。如图11所示,该网络节点包括处理器1101、存储器1102以及通信接口1103。处理器1101连接到存储器1102和通信接口1103,例如处理器1101可以通过总线连接到存储器1102和通信接口1003。处理器1101被配置为支持网络节点执行上述方法中相应的功能。该处理器1101可以是中央处理器(英文:centralprocessingunit,cpu),网络处理器(英文:networkprocessor,np),硬件芯片或者其任意组合。上述硬件芯片可以是专用集成电路(英文:application-specificintegratedcircuit,asic),可编程逻辑器件(英文:programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,cpld),现场可编程逻辑门阵列(英文:field-programmablegatearray,fpga),通用阵列逻辑(英文:genericarraylogic,gal)或其任意组合。存储器1102存储器用于存储网络节点所接收的数据报文。存储器1102可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-accessmemory,缩写:ram);存储器1102也可以包括非易失性存储器(英文:non-volatilememory),例如只读存储器(英文:read-onlymemory,缩写:rom),快闪存储器(英文:flashmemory),硬盘(英文:harddiskdrive,缩写:hdd)或固态硬盘(英文:solid-statedrive,缩写:ssd);存储器1102还可以包括上述种类的存储器的组合。通信接口1103用于与tcp发送端、其他网络节点或者tcp接收端连接,与tcp发送端、其他网络节点或者tcp接收端收发上述方法中所涉及的消息。处理器1101可以执行以下操作:通过通信接口1103接收tcp发送端或者其他网络节点的数据报文,和向其他网络节点或tcp接收端发送数据报文。具体实施方式请参阅图4至图6所述实施例的描述。图12是本发明实施例提供的另一种网络节点的结构示意图。如图12所示,该网络节点包括:接收模块1201,用于接收tcp发送端或其他网络节点发送的数据报文。处理模块1202,用于根据接收到的数据报文以及第一输出端口的拥塞度对数据报文进行处理,生成所述网络节点发送的数据报文。具体实施方式请参阅图4至图6所述实施例的描述。发送模块1203,用于发送经过所述网络节点处理的数据报文。图13是本发明实施例提供的一种tcp接收端的结构示意图。如图13所示,该tcp接收端包括处理器1301、存储器1302以及通信接口1303。处理器1301连接到存储器1302和通信接口1303,例如处理器1301可以通过总线连接到存储器1302和通信接口1303。处理器1301被配置为支持tcp接收端执行上述方法中相应的功能。该处理器1301可以是中央处理器(英文:centralprocessingunit,cpu),网络处理器(英文:networkprocessor,np),硬件芯片或者其任意组合。上述硬件芯片可以是专用集成电路(英文:application-specificintegratedcircuit,asic),可编程逻辑器件(英文:programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,cpld),现场可编程逻辑门阵列(英文:field-programmablegatearray,fpga),通用阵列逻辑(英文:genericarraylogic,gal)或其任意组合。存储器1302存储器用于存储tcp接收端接收的数据报文等。存储器1302可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-accessmemory,缩写:ram);存储器1302也可以包括非易失性存储器(英文:non-volatilememory),例如只读存储器(英文:read-onlymemory,缩写:rom),快闪存储器(英文:flashmemory),硬盘(英文:harddiskdrive,缩写:hdd)或固态硬盘(英文:solid-statedrive,缩写:ssd);存储器1302还可以包括上述种类的存储器的组合。通信接口1303用于与网络节点或者tcp发送端连接,与网络节点或者tcp发送端收发上述方法中所涉及的消息。处理器1301可以执行以下操作:通过通信接口1303接收数据报文,所述数据报文的头部携带负载程度;根据所述负载程度来确定ack报文的头部的负载程度。具体实施方式请参阅图8所述实施例的描述。图14是本发明实施例提供的另一种tcp接收端的结构示意图。如图14所示,该tcp接收端包括:接收模块1401,用于接收数据报文,所述数据报文的头部携带负载程度。处理模块1402,用于根据接收到的所述数据报文的头部携带的负载程度,生成ack报文的头部的负载程度。具体实施方式请参阅图8所述实施例的描述。发送模块1403,用于发送ack报文。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。本发明实施例提出了一种网络节点通过接收tcp发送端发送的数据报文,获取第一输出端口的负载程度,通过第一输出端口的负载程度和数据报文的头部携带的负载程度进行比较来更新数据报文头部的负载程度,并发送数据包到tcp接收端,tcp接收端在返回的ack报文头部携带数据报文中的负载程度,tcp接收端根据接收的ack报文头部的负载程度来确定拥塞窗口大小。可以看出,在确定tcp拥塞窗口的过程中,考虑了数据报文的发送路径上各网络节点的负载程度,因此,可以更加合理准确地确定拥塞窗口大小。在网络低负载或高负载阶段,本发明方法的主要目的是快速增大或减小拥塞窗口至理想状态,使网络收敛于高利用率,提高带宽利用率和网络吞吐量;同时,提高数据流连接之间的公平性。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本专利申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本专利申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包含若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本专利申请各个实施例方法的全部或部分步骤。而前述的存储介质包含:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上,仅为本专利申请的具体实施方式,但本专利申请的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本专利申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本专利申请的保护范围之内。因此,本专利申请的保护范围应以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1