一种实现发送端调速的方法、装置和系统与流程

文档序号:16630595发布日期:2019-01-16 06:32阅读:220来源:国知局
一种实现发送端调速的方法、装置和系统与流程

本申请涉及通信领域,尤其涉及一种实现发送端调速的方法、装置和系统。



背景技术:

现有网络设备对数据流的处理能力有限,当网络发生拥塞时,网络设备会对经过网络设备的所有数据流作公平处理。例如,截止期限(deadline)很短和很长的数据流会被分配相同的发送速率。这样一来,可能会出现数据丢失,时延增加,吞吐量下降,严重时甚至会导致“拥塞崩溃”(congestioncollapse)。

为了减少网络拥塞,需要对网络拥塞的拥塞点及时反馈。现有技术中,可以通过丢包(packetloss)机制或者拥塞标记(explicitcongestionnotification,ecn)机制来实现网络中的拥塞反馈。丢包机制即网络设备在发生网络拥塞时,主动丢弃一些数据流的数据包,从而使接收端获知网络设备发生拥塞。ecn机制即网络设备在发生网络拥塞时,给数据流的数据包添加拥塞的标识,从而使接收端获知网络设备发生拥塞。

但丢包机制或者ecn机制都是端到端的反馈,即接收端到发送端的反馈,这种反馈机制需要的反馈周期长且拥塞反馈不及时。



技术实现要素:

本申请实施例提供一种实现发送端调速的方法,能够解决拥塞反馈周期长和拥塞反馈不及时的问题。

一方面,本申请实施例提供第一网络设备接收上一跳网络设备发送的第一数据报文;第一数据报文包括第一数据流对应的第一需求速率、第一截止期限和第一发送速率,第一发送速率用于指示上一跳网络设备获取的第一数据流的最小发送速率;第一网络设备根据第一数据流对应的第一需求速率(requiredrate)和第一截止期限,以及第二数据流对应的第二需求速率和第二截止期限获取第一数据流的第二发送速率;在第二发送速率小于第一发送速率的情况下,第一网络设备向第二网络设备发送反馈报文,反馈报文包括第二发送速率,反馈报文用于指示第二网络设备根据第二发送速率通知发送端调整发送第一数据流的速率。这样一来,在第一网络设备确定第一发送速率大于或等于第二发送速率的情况下,第一网络设备可以向第一数据流经过的第二网络设备发送反馈报文,反馈报文包括第二发送速率。第二网络设备接收到反馈报文后,可以通知发送端调整发送第一数据流的速率。相比现有技术,需要进行端到端的反馈,本申请实施例可以在第一数据流的第一数据报文还未到达对端时,反馈报文用于指示第二网络设备通知发送端调整第一数据流的速率,缩短了反馈时间,从而能够解决端到端的反馈导致的拥塞反馈周期长和拥塞反馈不及时的问题。

在一种可能的设计中,上述方法还包括:第一网络设备向下一跳网络设备发送第二数据报文;其中,第二数据报文包括第一需求速率、第一截止期限和第二发送速率。这样一来,第一网络设备的下一跳网络设备可以根据第一需求速率和第一截止期限确定自身的第二发送速率,并可以将自身确定出的的发送速率与第二发送速率进行比较,以确定出自身确定的发送速率以及接收到的发送速率中较小的一个。而后第一网络设备的下一跳网络设备可以向第二网络设备发送确定出的较小的速率,而后第二网络设备可以通知发送端调整发送第一数据流的速率,从而能够解决端到端的反馈导致的拥塞反馈周期长和拥塞反馈不及时的问题。

在一种可能的设计中,上述方法还包括:在第二发送速率大于或等于第一发送速率的情况下,第一网络设备不发送反馈报文。这是由于第一网络设备并非当前最拥塞的网络设备,因此可以不发送反馈报文,以节省带宽。

在一种可能的设计中,上述方法还包括:第一网络设备向下一跳网络设备发送第二数据报文;其中,第二数据报文包括第一需求速率、第一截止期限和第一发送速率。这样一来,第一网络设备的下一跳网络设备可以根据第一需求速率和第一截止期限确定自身的第二发送速率,并可以将自身确定出的第二发送速率与接收到的第一发送速率进行比较,以确定出自身的第二发送速率以及接收到的第一速率中较小的一个。而后第一网络设备的下一跳网络设备可以向第二网络设备发送确定出的较小的速率,而后,第二网络设备可以通知发送端调整发送第一数据流的速率,从而能够解决端到端的反馈导致的拥塞反馈周期长和拥塞反馈不及时的问题。

另一方面,本申请实施例提供一种实现发送端调速的方法,包括:第二网络设备接收第一网络设备发送的反馈报文,反馈报文包括第二发送速率,第二发送速率用于指示第一网络设备获取的第一数据流的发送速率;在第二发送速率小于第三发送速率的情况下,第二网络设备通知发送端降低发送第一数据流的速率;其中,第三发送速率为第二网络设备最后一次保存的第一数据流的最小发送速率。第二网络设备即第一数据流经过的第一跳网络设备。也就是说,第一数据流的第一跳网络设备可以根据接收到的反馈报文中包括的第二发送速率通知发送端降低发送第一数据流的速率。相比现有技术,需要进行端到端的反馈,本申请实施例在第一数据流的第一数据报文还未到达对端时,发送端可以降低发送第一数据流的速率,缩短了反馈时间,从而能够解决端到端的反馈导致的拥塞反馈周期长和拥塞反馈不及时的问题。

在一种可能的设计中,第二网络设备通知发送端降低发送第一数据流的速率包括:第二网络设备向发送端发送确认报文;其中,确认报文包括第一接收窗口(receiverwindow,rwnd),第一rwnd小于第二rwnd,第二rwnd用于指示第一数据流的数据报文对应的反向数据报文中携带的rwnd。由此,发送端可以降低发送第一数据流的速率,以缓解网络中的拥塞情况。

在一种可能的设计中,上述方法还包括:在第二发送速率大于第三发送速率的情况下,第二网络设备通知发送端升高发送第一数据流的速率,以提高网络的传输性能。

在一种可能的设计中,第二网络设备通知发送端升高发送第一数据流的速率包括:第二网络设备向发送端发送确认报文;其中,确认报文包括第三rwnd,第三rwnd大于第二rwnd,第二rwnd用于指示第一数据流的数据报文对应的反向数据报文中携带的rwnd。由此,发送端可以升高发送第一数据流的速率,以提高网络的传输性能。

再一方面,本申请实施例提供了一种第一网络设备,包括:接收单元,用于接收上一跳网络设备发送的第一数据报文;第一数据报文包括第一数据流对应的第一需求速率、第一截止期限和第一发送速率,第一发送速率用于指示上一跳网络设备获取的第一数据流的最小发送速率;处理单元,用于根据第一数据流对应的第一需求速率和第一截止期限,以及第二数据流对应的第二需求速率和第二截止期限获取第一数据流的第二发送速率;发送单元,用于在第二发送速率小于第一发送速率的情况下,向第二网络设备发送反馈报文,反馈报文包括第二发送速率,反馈报文用于指示第二网络设备根据第二发送速率通知发送端调整发送第一数据流的速率。

在一种可能的设计中,发送单元还用于:向下一跳网络设备发送第二数据报文;其中,第二数据报文包括第一需求速率、第一截止期限和第二发送速率。

在一种可能的设计中,发送单元还用于:在第二发送速率大于或等于第一发送速率的情况下,不发送反馈报文。

在一种可能的设计中,发送单元还用于:向下一跳网络设备发送第二数据报文;其中,第二数据报文包括第一需求速率、第一截止期限和第一发送速率。

再一方面,本申请实施例提供了一种第二网络设备,包括:接收单元,用于接收第一网络设备发送的反馈报文,反馈报文包括第二发送速率,第二发送速率用于指示第一网络设备获取的第一数据流的发送速率;发送单元,用于在第二发送速率小于第三发送速率的情况下,通知发送端降低发送第一数据流的速率;其中,第三发送速率为最后一次保存的第一数据流的最小发送速率。

在一种可能的设计中,发送单元用于:向发送端发送确认报文;其中,确认报文包括第一接收窗口rwnd,第一rwnd小于第二rwnd,第二rwnd用于指示第一数据流的数据报文对应的反向数据报文中携带的rwnd。

在一种可能的设计中,发送单元还用于:在第二发送速率大于第三发送速率的情况下,通知发送端升高发送第一数据流的速率。

在一种可能的设计中,发送单元还用于:向发送端发送确认报文;其中,确认报文包括第三rwnd,第三rwnd大于第二rwnd,第二rwnd用于指示第一数据流的数据报文对应的反向数据报文中携带的rwnd。

再一方面,本申请实施例提供了一种第一网络设备,包括:收发器,用于接收上一跳网络设备发送的第一数据报文;第一数据报文包括第一数据流对应的第一需求速率、第一截止期限和第一发送速率,第一发送速率用于指示上一跳网络设备获取的第一数据流的最小发送速率;处理器,用于根据第一数据流对应的第一需求速率和第一截止期限,以及第二数据流对应的第二需求速率和第二截止期限获取第一数据流的第二发送速率;收发器,用于在第二发送速率小于第一发送速率的情况下,向第二网络设备发送反馈报文,反馈报文包括第二发送速率,反馈报文用于指示第二网络设备根据第二发送速率通知发送端调整发送第一数据流的速率。

在一种可能的设计中,收发器还用于:向下一跳网络设备发送第二数据报文;其中,第二数据报文包括第一需求速率、第一截止期限和第二发送速率。

在一种可能的设计中,收发器还用于:在第二发送速率大于或等于第一发送速率的情况下,不发送反馈报文。

在一种可能的设计中,收发器还用于:向下一跳网络设备发送第二数据报文;其中,第二数据报文包括第一需求速率、第一截止期限和第一发送速率。

再一方面,本申请实施例提供了一种第二网络设备,包括:收发器,用于接收第一网络设备发送的反馈报文,反馈报文包括第二发送速率,第二发送速率用于指示第一网络设备获取的第一数据流的发送速率;收发器,用于在第二发送速率小于第三发送速率的情况下,通知发送端降低发送第一数据流的速率;其中,第三发送速率为最后一次保存的第一数据流的最小发送速率。

在一种可能的设计中,收发器用于:向发送端发送确认报文;其中,确认报文包括第一接收窗口rwnd,第一rwnd小于第二rwnd,第二rwnd用于指示第一数据流的数据报文对应的反向数据报文中携带的rwnd。

在一种可能的设计中,收发器还用于:在第二发送速率大于第三发送速率的情况下,通知发送端升高发送第一数据流的速率。

在一种可能的设计中,收发器还用于:向发送端发送确认报文;其中,确认报文包括第三rwnd,第三rwnd大于第二rwnd,第二rwnd用于指示第一数据流的数据报文对应的反向数据报文中携带的rwnd。

再一方面,本申请实施例提供了一种实现发送端调速的系统,包括第一网络设备和第二网络设备;其中,第一网络设备用于,接收上一跳网络设备发送的第一数据报文,第一数据报文包括第一发送速率;获取第一数据流的第二发送速率;在第二发送速率小于第一发送速率的情况下,向第二网络设备发送反馈报文,反馈报文包括第二发送速率;第二网络设备用于,在第二发送速率小于第三发送速率的情况下,第二网络设备通知发送端降低发送第一数据流的速率;其中,第三发送速率为第二网络设备最后一次保存的第一数据流的最小发送速率。

再一方面,提供一种网际协议(internetprotocol,ip)数据包格式,该ip数据包格式的首部可用于携带第一发送速率或第二发送速率。

一种可能的实现方式中,提供一种ip数据包格式,该ip数据包格式的首部中的选项字段可用于携带第一发送速率或第二发送速率。

再一方面,本申请实施例提供了一种计算机存储介质,用于储存为上述第一网络设备所用的计算机软件指令,其包含用于执行上述方面所设计的程序。

再一方面,本申请实施例提供了一种计算机存储介质,用于储存为上述第二网络设备所用的计算机软件指令,其包含用于执行上述方面所设计的程序。

由此,在第一网络设备确定第一发送速率大于或等于第二发送速率的情况下,第一网络设备可以向第二网络设备发送反馈报文,反馈报文包括第二发送速率。第二网络设备接收到反馈报文后,可以根据第二发送速率和第二网络设备保存的第三发送速率通知发送端降低或升高发送第一数据流的速率。相比现有技术,需要进行端到端的反馈,本申请实施例中,第二网络设备可以在第一数据流的第一数据报文还未到达对端时,通知发送端调整第一数据流的速率,缩短了反馈时间,从而能够解决端到端的反馈导致的拥塞反馈周期长和拥塞反馈不及时的问题。

附图说明

图1为本申请实施例提供的一种系统架构示意图;

图2为本申请实施例提供的一种第一网络设备的一种内部结构示意图;

图3为本申请实施例提供的一种第二网络设备的一种内部结构示意图;

图4为本申请实施例提供的一种实现发送端调速的方法的信号交互示意图;

图5为本申请实施例提供的一种架构示意图;

图6为本申请实施例提供的一种实现发送端调速的方法的信号交互示意图;

图7为本申请实施例提供的一种数据块从应用层到tcp层的转换示意图;

图8为本申请实施例提供的一种ip报文头格式的示意图;

图9为本申请实施例提供的一种选项a的格式示意图;

图10a为本申请实施例提供的一种选项b的格式示意图;

图10b为本申请实施例提供的一种选项b的结构示意图;

图11为本申请实施例提供的一种第一网络设备的结构示意图;

图12为本申请实施例提供的一种第一网络设备的结构示意图;

图13为本申请实施例提供的一种第二网络设备的结构示意图;

图14为本申请实施例提供的一种第二网络设备的结构示意图。

具体实施方式

本申请实施例可以应用于网络的拥塞反馈和调速中,例如可以应用于二层网络或三层网络的拥塞反馈和调速中。举例来说,假设发送端是用户主机a,接收端是用户主机b,用户主机a可以通过中间网络设备发送第一数据流给用户主机b,中间网络设备即第一数据流经过的网络设备。假设第二网络设备为设备c、第二跳网络设备为设备d,第三跳网络设备为设备e,在设备c、设备d和设备e中的至少一个发生拥塞的情况下,发生拥塞的网络设备可以向网络设备c发送反馈报文,以便网络设备c可以向用户主机a反馈拥塞以及指示用户主机a调速。

本申请实施例的系统架构可以包括第二网络设备、第一网络设备、发送端和接收端。如图1所示,第二网络设备即第一数据流经过的第一跳网络设备,第二网络设备与发送端连接。第一网络设备可以是第一数据流所经过的第二跳网络设备、第三跳网络设备.....或最后一跳网络设备。第一网络设备或第二网络设备可以是路由器、交换机(switch,sw)或虚拟交换机(virtualswitch,vs)等。第一数据流的发送端或第一数据流的接收端可以是用户主机或服务器等。

图2为本申请的第一网络设备的一种内部结构示意图,在本申请中,第一网络设备可以包括接收模块201、处理模块202和发送模块203。在本申请实施例中,接收模块201用于接收上一跳网络设备发送的第一数据报文,第一数据报文包括第一数据流对应的第一requiredrate、第一deadline和第一发送速率。处理模块202用于根据第一数据流对应的第一requiredrate、第一deadline,以及第二数据流对应的第二requiredrate、第二deadline获取第一数据流的第二发送速率。发送模块203用于根据第二发送速率与第一发送速率的大小关系向第二网络设备发送反馈报文。

其中,第一数据流可以包括多个数据报文,第一数据报文可以为多个数据报文中的一个。第二数据流也可以包括多个数据报文,但第二数据流所包括的数据报文不同于第一数据流所包括的数据报文。

图3为本申请的第二网络设备的一种内部结构示意图,在本申请中,第二网络设备可以包括接收模块301和发送模块302。接收模块301用于接收第一网络设备发送的反馈报文,反馈报文可以包括第一发送速率或第二发送速率。发送模块302用于在第二发送速率小于第三发送速率的情况下,第二网络设备通知发送端降低发送第一数据流的速率。其中,第三发送速率为第二网络设备最后一次保存的最小速率。

下面提供一种实现发送端调速的方法,如图4所示,包括:

401、第一网络设备接收上一跳网络设备发送的第一数据报文。

其中,第一数据报文包括第一数据流对应的第一requiredrate、第一deadline和第一发送速率。第一requiredrate为发送第一数据流的requiredrate,第一deadline为发送第一数据流的deadline。第一发送速率用于指示上一跳网络设备获取的第一数据流的最小发送速率。

402、第一网络设备根据第一数据流对应的第一requiredrate、第一deadline以及第二数据流对应的第二requiredrate和第二deadline获取第一数据流的第二发送速率。

其中,第二requiredrate为发送第二数据流的requiredrate,第二deadline为发送第二数据流的deadline。

可以理解的是,第一网络设备可以同时接收到多个数据流的数据报文,因此第一网络设备可以同时根据多个数据报文携带的requiredrate和deadline获取多个数据流的第二发送速率。其中,第一网络设备获取到的多个第二发送速率中包括第一数据流的第二发送速率。

举例来说,假设第一网络设备为设备a,设备a可以同时接收设备b发送的第一数据流的数据报文和设备c发送的第二数据流的数据报文。其中,第一数据流的数据报文中携带第一数据流的第一requiredrate和第一deadline,第二数据流的数据报文中携带第二数据流的第二requiredrate和第二deadline。设备a可以根据第一requiredrate和第一deadline,以及第二requiredrate和第二deadline获取第一数据流的第二发送速率或第二数据流的第二发送速率。

403、第一网络设备根据第二发送速率与第一发送速率的大小关系向第二网络设备发送反馈报文。

其中,第二网络设备即发送第一数据流的第一跳网络设备。

在第一网络设备确定第二发送速率小于第一发送速率的情况下,第一网络设备向第二网络设备发送反馈报文,反馈报文包括第二发送速率。

在第一网络设备确定第二发送速率大于或等于第一发送速率情况下,第一网络设备可以不向第二网络设备发送反馈报文。

404、第二网络设备通知发送端调整发送第一数据流的速率。

在第一发送速率小于第三发送速率的情况下,第二网络设备通知发送端降速。其中,第三发送速率为第二网络设备最后一次保存的第一数据流的最小发送速率。在第一发送速率大于第三发送速率的情况下,第二网络设备通知发送端升速。

在第二发送速率小于第三发送速率的情况下,第二网络设备通知发送端降速。在第二发送速率大于第三发送速率的情况下,第二网络设备通知发送端升速。

在一种可能的设计中,第二网络设备通知发送端降速包括:第二网络设备向发送端发送确认报文;其中,确认报文包括第一rwnd,第一rwnd小于第二rwnd,第二rwnd用于指示第一数据流的数据报文对应的反向数据报文中携带的rwnd。第二网络设备通知发送端升速包括:第二网络设备向发送端发送确认报文;其中,确认报文包括第三rwnd,第三rwnd大于第二rwnd。

由此,在第一网络设备确定第一发送速率大于或等于第二发送速率的情况下,第一网络设备可以向第二网络设备发送反馈报文,反馈报文包括第二发送速率。第二网络设备接收到反馈报文后,可以通过向发送端发送确认报文,以便发送端根据确认报文升高或降低发送第一数据流的速率。相比现有技术,需要进行端到端的反馈,本申请实施例可以在第一数据流的第一数据报文还未到达对端时,通过中间的第一网络设备向第一数据流的第二网络设备发送反馈报文,从而使发送端调整第一数据流的速率,缩短了反馈时间,能够解决端到端的反馈导致的拥塞反馈周期长和拥塞反馈不及时的问题。

如图5所示,为一种实现发送端调速的方法的架构示意图。该架构可以包括发送端、接收端、vs1、vs2、sw1、sw2……swn。对于发送端来说,可以假设第二网络设备为vs1,第一网络设备可以为sw1、sw2……swn或vs2。

下面提供一种实现发送端调速的方法,以图5所示的架构为例进行说明,如图6所示,包括:

601、发送端向vs1发送第一数据报文,第一数据报文中携带发端需求。

其中,发端需求可以包括发送端发送的第一数据流的第一requiredrate和第一deadline。第一requiredrate和第一deadline即当前第一数据流的传输控制协议(transmissioncontrolprotocol,tcp)发送窗口对应的requiredrate和deadline。

第一requiredrate和第一deadline的计算过程具体可以为:发送端的应用层在向tcp层提交待发送数据块时,同时提交该数据块对应的requiredrate和deadline。tcp层记录各待发送数据块对应的requiredrate和deadline需求,并确定第一requiredrate为当前tcp发送窗口内待发送数据块的requiredrate的最大值。第一deadline为当前tcp发送窗口内待发送数据块的deadline之和。

如图7所示,数据块1、数据块2和数据块3分别对应不同的requiredrate和deadline,假设当前tcp发送窗口内待发送数据块为数据块1、数据块2和数据块3之和,则当前tcp发送窗口内待发送数据块的requiredrate的最大值即数据块1、数据块2和数据块3对应的requiredrate中的最大值;当前tcp发送窗口内待发送数据块的deadline之和即数据块1、数据块2和数据块3对应的deadline之和。

第一requiredrate和第一deadline可以携带在第一数据报文的ip报文头的选项(options)字段,例如携带在optiona字段中。如图8所示,为ip报文头的格式,报文头的前20个字节是固定的,后面的可变。其中:

版本:占4位(bit),指示ip协议的版本号。目前的主要版本为ipv4,即第4版本号。在进行通信时,通信双方的ip协议版本号必须一致,否则无法直接通信。

首部长度:占4位(bit),指示ip报文头的长度。最大的长度(即4个bit都为1时)为15个长度单位,每个长度单位为4字节,所以ip协议报文头的最大长度为60个字节,最短为图8所示的20个字节。

服务类型:占8位(bit),其中的前3位表示报文的优先级,后面的几位分别表示要求更低时延、更高的吞吐量、更高的可靠性、更低的路由代价等。

总长度:16位(bit),指示报文的总长度。注意这里的单位为字节,而不是4字节,所以一个ip报文的的最大长度为65535个字节。

标识(identification):该字段标记当前分片为第几个分片。

标志(flag):该字段用于标记该报文是否为分片(有一些可能不需要分片,或不希望分片),后面是否还有分片(是否是最后一个分片)。

片偏移:指当前分片在原数据报(分片前的数据报)中相对于用户数据字段的偏移量,即在原数据报中的相对位置。

生存时间(timetolive,ttl):该字段表明当前报文还能生存多久。每经过1ms或者一个网关,ttl的值自动减1,当生存时间为0时,报文将被认为目的主机不可到达而丢弃。

协议:该字段指出在上层(网络7层结构或tcp/ip的传输层)使用的协议,可能的协议tcp、用户数据报协议(userdatagramprotocol,udp)、互联网控制报文协议(internetcontrolmessageprotocol,icmp)、互联网组管理协议(internetgroupmanagementprotocol,igmp)、内部网关协议(interiorgatewayprotocols,igp)等。

首部校验和:用于检验ip报文头部在传播的过程中是否出错,主要校验报文头中是否有某一个或几个bit被修改了。

源ip地址:32位(bit),即4个字节,每一个字节为0~255之间的整数,及我们日常见到的ip地址格式。

目的ip地址:32位(bit),即4个字节,每一个字节为0~255之间的整数,及我们日常见到的ip地址格式。

options:位数可变,其中可以包括多个option,例如optiona、optionb等,用于标记网络设备的特殊信息。

示例性的,optiona的格式可以如图9所示,即optiona的等级为0,编号为10,长度为6字节,其中第一requiredrate和第一deadline可以各占两字节,另外两字节可以已被定义好或已被占用。

602、vs1获取第一数据流的最小发送速率。

首先,vs1可以根据第一requiredrate、第一deadline以及第二数据流对应的第二requiredrate和第二deadline确定vs1的发送速率,vs1的发送速率即本地设备(vs1)决策的速率(localdevice-assignedrate)。

可以理解的是,vs1可以同时接收到多个数据流的数据报文。也就是说,vs1除了可以接收到第一数据流对应的数据报文,还可以接收到第二数据流对应的数据报文。vs1可以为每个数据流分别决策一个localdevice-assignedrate。本申请实施例以vs1为第一数据流决策localdevice-assignedrate的过程为例进行说明。

vs1首先根据各数据流的数据报文对应的出端口为各数据报文分组,同组内的各数据报文共享出端口带宽(或已配置的最大可用带宽)。然后,vs1根据同组内各数据报文的requiredrate和deadline综合决策vs1的发送速率,具体方式如下:

1、同组内任一数据报文的deadline越小,该数据报文的发送速率越接近该数据报文携带的requiredrate。2、同组内各数据报文的deadline相等,任一数据报文的requiredrate越大,该数据报文的发送速率越接近该数据报文携带的requiredrate。3、在同组内各数据报文的requiredrate相等的情况下,任一数据报文的requiredrate*deadline越小,该数据报文的发送速率越接近该数据报文携带的requiredrate。

当vs1确定出vs1的发送速率时,可以将vs1的发送速率暂时作为第一数据流的最小发送速率。vs1可以将上述第一数据流的最小发送速率携带在第一数据报文的ip报文头的options字段。

举例来说,假设vs1将暂定的第一数据流的最小发送速率携带在optionb字段中,optionb的格式如图10a所示,即optionb的等级为0,编号为11,长度为7字节。具体地,如图10b所示,optionb的7个字节中的前两个字节已经被定义或占用了,第三个字节是value,即保留字节(即r部分),第四、五个字节暂时可以为空,第六、七个字节(即g部分)用于携带第一数据流的最小发送速率。

603、sw1接收上一跳网络设备发送的第一数据报文。

可以理解的是,sw1的上一跳网络设备即vs1,vs1发送的第一数据报文包括第一requiredrate、第一deadline和第一发送速率,这里第一发送速率即vs1决策的第一数据流的localdevice-assignedrate。

604、sw1根据第一requiredrate、第一deadline以及第二数据流对应的第二requiredrate和第二deadline获取第二发送速率。

其中,第二发送速率是指sw1为第一数据流决策的发送速率,sw1获取第二发送速率的过程可以参考步骤602。

同时,sw1可以根据第一数据报文中携带的信息更新sw1对应的设备表项。sw1对应的设备表项如表1所示:

表1

由表1可以得出,sw1对应的设备表项可以包括:数据报文的五元组、第一requiredrate、第一deadline、第二发送速率、第一数据流的最小发送速率、软超时(idletimeout)和硬超时(hardtimeout)。其中,数据报文的五元组即第一数据报文的源ip地址、目的ip地址、协议号、源端口、目的端口。第一requiredrate列和第一deadline列可以用于保存第一requiredrate和第一deadline。localdevice-assignedrate列用于存放sw1获取的第二发送速率。第一数据流的最小发送速率列可以用于存放vs1的localdevice-assignedrate和sw1获取的第二发送速率中较小的速率。也就是说,对于不同的网络设备来说,第一数据流的最小发送速率可以是不同的。可选的,sw1也可以不更新第一数据流的最小发送速率列。idletimeout和hardtimeout用于指示当前数据流是否超时。

需要说明的是,vs1也可以具有设备表项,vs1在第一数据流的最小发送速率列可以暂时存放vs1决策的localdevice-assignedrate。

此外,sw1可以在如下4个时机重新计算数据报文的第二发送速率:1、表项增加,即数据流的数据报文增加。2、表项软超时,即第一数据流的部分数据报文暂停传输。3、表项重新激活,即暂停传输的部分数据报文重新开始传输。4、表项的requiredrate和deadline列更新,即第一数据流的数据报文的requiredrate和deadline发生变化。

605、sw1根据第二发送速率与第一发送速率的大小关系向vs1发送反馈报文。

在sw1确定第二发送速率小于vs1决策的第一数据流的localdevice-assignedrate的情况下,sw1可以向vs1发送反馈报文,该反馈报文可以为控制报文。其中,控制报文包括第二发送速率,即sw1的发送速率。控制报文的作用是:使vs1可以及时通知发送端调速。在sw1确定第二发送速率大于第一发送速率的情况下,sw1可以不发送控制报文。

vs1接收到sw1发送的控制报文后,可以比较反馈报文中包括的第二发送速率与vs1保存的第一数据流的最小发送速率进行比较,在第二发送速率小于vs1保存的第一数据流的最小发送速率的情况下,vs1可以通知发送端降速。这是由于此sw1是当前最拥塞的网络设备(相较于vs1),因此vs1可以通知发送端降速。

另外,vs1接收到sw1发送的控制报文后,可以相应地更新vs1保存的第一数据流的最小发送速率,即更新设备表项的第一数据流的最小发送速率列,vs1可以将sw1的反馈报文中包括的第二发送速率保存在该列。

可选的,在sw1确定第二发送速率大于第一发送速率的情况下,sw1可以向vs1发送控制报文,控制报文包括第一发送速率,即vs1获取的第一数据流的最小发送速率。此时vs1接收到sw1发送的控制报文后,可以不通知发送端调速,这是因为sw1并非最拥塞的网络设备。

可选地,在sw1确定第二发送速率大于第一发送速率的情况下,sw1可以不发送控制报文。

控制报文通过中间的网络设备传输时,中间的网络设备(vs1、vs2、sw1、sw2……swn)不对控制报文做处理,仅vs1截获控制报文并做相应地处理。控制报文类似数据报文的确认(acknowledgement,ack)报文,但与ack报文稍有不同。举例来说,控制报文与ack报文的不同之处可以是:控制报文中ip报文头中特定option(例如,optionb)的value第一bit置1,而ack报文中该特定option的value第一bit置0。如图10b所示,sw1可以将第二发送速率或第一发送速率写入optionb中的第六、七个字节(即g部分)。

另外,sw1可以向sw2发送第二数据报文。在第二发送速率小于第一发送速率的情况下,第二数据报文包括第一requiredrate、第一deadline和第二发送速率。在第二发送速率大于或等于第一发送速率的情况下,第二数据报文包括第一requiredrate、第一deadline和第一发送速率。

第二数据报文的格式与第一数据报文类似,第二数据报文的optionb的第六、七个字节中携带的是第一发送速率和第二发送速率中较小的一个。

类似地,当第一网络设备分别为sw2......swn时,可以循环执行步骤603到步骤605。

606、vs2向vs1发送反馈报文。

在vs2确定第二发送速率(即vs2获取的第一数据流的发送速率)小于第一发送速率(即swn确定的第一数据流的最小发送速率)的情况下,vs2向vs1发送反馈报文,反馈报文包括第二发送速率。

vs2可以将第二发送速率携带在反馈报文中发送给vs1,这里的反馈报文可以是反向数据报文。具体地,vs2可以截取当前数据报文对应的反向数据报文(即当前数据报文的ack数据报文),将第一发送速率或第二发送速率写入ack数据报文的ip报文头中optionb中的第六、七个字节(即图10b中的g部分)。

可选地,vs2可以通过控制报文向vs1反馈第二发送速率。即将第二发送速率写入控制报文的ip报文头中的optionb中的第六、七个字节(即g部分)。

607、vs1通知第一数据流的发送端调整发送第一数据流的速率。

具体地,vs1可以比较vs1最后一次保存的第一数据流的最小发送速率(第三发送速率)与反向数据报文中携带的第二发送速率(即vs2获取的第一数据流的发送速率)的大小。其中,最后一次保存的最小发送速率可以是vs1根据各网络设备(即sw1......swn)发送的控制报文确定的。也就是说,第三发送速率可以是vs1的设备表项的第一数据流的最小发送速率列最后一次更新的值。在第二发送速率小于第三发送速率的情况下,vs1通知发送端降速;在第二发送速率大于第三发送速率的情况下,vs1通知发送端升速;

其中,之所以反向数据报文中携带的第一发送速率或第二发送速率可以大于第三发送速率,是由于网络可能发生了改变,sw1......swn其中的至少一个所确定的第二发送速率发生改变,因此vs2携带在反向数据报文的速率也相应发生了改变。此时vs1可以通知发送端升速。

在vs1通知发送端降低发送第一数据流的速率的情况下:vs1向发送端发送确认报文;其中,确认报文包括第一rwnd,第一rwnd小于第二rwnd,第二rwnd用于指示第一数据流的数据报文对应的反向数据报文中携带的rwnd。其中,第一rwnd=第二发送速率*往返时延(round-triptime,rtt)。rtt即正向数据报文与其对应的反向ack报文到达vs1的时间差。然后,vs1将反向ack报文中的第二rwnd修改为当前确定的第一rwnd以实现发送端降速。

类似的,在vs1通知发送端升高发送第一数据流的速率的情况下:vs1向发送端发送确认报文;其中,确认报文包括第三rwnd,第三rwnd大于第二rwnd。其中,第三rwnd=第二发送速率*往返时延(round-triptime,rtt)。rtt即正向数据报文与其对应的反向ack报文到达vs1的时间差。然后,vs1将反向ack报文中的第二rwnd修改为当前确定的第三rwnd以实现发送端升速。

需要说明的是,通过修改rwnd实现灵活的升速和降速的一个前提条件是:发送端的tcp始终满足拥塞窗口(congestionwindow,cwnd)>rwnd,可以通过调高tcp初始拥塞窗口大小实现该条件。

另外,在反向数据报文中携带的速率小于vs1的设备表项中保存的第一数据流的最小速率的情况下,vs1可以将反向数据报文中携带的速率更新到相应的设备表项中。

可以理解的是,对于接收端来说,vs2可以是传输反向数据报文的第一跳网络设备(即第二网络设备),相应地swn可以是第二跳网络设备......sw1可以是第n跳网络设备,vs1可以是最后一跳网络设备(即swn......sw1以及vs1可以为第一网络设备)。因此各网络设备在传输反向数据报文的过程中,可以参考步骤601-607,以实现反向数据报文的拥塞反馈。

需要说明的是,最后一跳网络设备可以将反向数据报文自身的最小发送速率携带在ip报文头的optionb中的第四、五个字节中,也可以携带在其他option字段中,本申请不做限定。

这样一来,在第一网络设备(即sw1、sw2……swn或vs2)确定第一发送速率(上一跳网络设备确定的第一数据流最小发送速率)大于或等于第二发送速率(当前网络设备确定的第一数据流的发送速率)的情况下,第一网络设备可以向第二网络设备(即vs1)发送反馈报文,反馈报文包括第二发送速率。第二网络设备接收到反馈报文后,可以根据第二发送速率和自身最后一次保存的第一数据流的最小速率(第三发送速率)通知发送端调整发送第一数据流的速率。相比现有技术,需要进行端到端的反馈,本申请实施例可以在第一数据流的第一数据报文还未到达对端时,使第二网络设备通知发送端调整第一数据流的速率,缩短了反馈时间,从而能够解决端到端的反馈导致的拥塞反馈周期长和拥塞反馈不及时的问题。

上述主要从第一网络设备和第二网络设备的角度对本申请实施例提供的方案进行了介绍。可以理解的是,第一网络设备和第二网络设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法示例对第一网络设备和第二网络设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图11示出了上述实施例中所涉及的第一网络设备11的一种可能的结构示意图,第一网络设备包括:接收单元1101,处理单元1102和发送单元1103。接收单元1101用于支持第一网络设备执行图4中的过程401,图6中的过程603;处理单元1102用于支持第一网络设备执行图4中的过程402,图6中的过程604;发送单元1103用于支持第一网络设备执行图4中的过程403,图6中的过程605或606。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

参阅图12所示,该第一网络设备12包括:处理器1201、收发器1202、存储器1203以及总线1204。其中,收发器1202、存储器1203以及总线1204通过总线1204相互连接;总线1204可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

需要说明的是,本实施例也可以基于通用的物理服务器结合网络功能虚拟化(英文:networkfunctionvirtualization,nfv)技术实现的虚拟第一网络设备,所述虚拟第一网络设备可以是运行有用于获取和比较数据流的速率功能的程序的虚拟机(virtualmachine,vm),所述虚拟机部署在硬件设备上(例如,物理服务器)。虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

在采用对应各个功能划分各个功能模块的情况下,图13示出了上述实施例中所涉及的第二网络设备13的一种可能的结构示意图,第二网络设备包括:接收单元1301和发送单元1302。接收单元1301用于支持第二网络设备执行图4中的过程403,图6中的过程601、605和606;发送单元1302用于支持第二网络设备执行图4中的过程404,图6中的过程607。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

参阅图14所示,该第一网络设备14包括:处理器1401、收发器1402、存储器1403以及总线1404。其中,收发器1402、存储器1403以及总线1404通过总线1404相互连接;总线1404可以是pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

需要说明的是,本实施例也可以基于通用的物理服务器结合nfv技术实现的虚拟第二网络设备,所述虚拟第二网络设备可以是运行有用于获取和比较数据流的速率功能的程序的vm,所述虚拟机部署在硬件设备上(例如,物理服务器)。虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(randomaccessmemory,ram)、闪存、只读存储器(readonlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablerom,eprom)、电可擦可编程只读存储器(electricallyeprom,eeprom)、寄存器、硬盘、移动硬盘、只读光盘(cd-rom)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

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