1.本技术涉及网络通信技术领域,尤其涉及一种拥塞控制方法、装置、设备及存储介质。
背景技术:
2.随着网络通信技术的发展,云计算和大数据服务越来越多地被应用在各个方面。为了满足大量用户对云计算和大数据服务的要求,建立了大量的数据中心(data center,dc)。在每个数据中心内部都存在大量的通过数据中心网络连接的服务器。服务器可提供的很多应用服务均需要低延迟的网络,比如在线搜索、社交网络等应用服务。
3.现有的流控方法,连接的发送端根据接收端返回的报文,使用数据中心量化拥塞通知(data center quantized congestion notification,dcqcn)作为拥塞控制策略,根据该策略调整发送端的发送速率,从而控制连接的数据传输以避免连接中拥塞的发生。然而这种拥塞控制策略,并不能保证数据传输的稳定性,连接的传输性能差,具体表现为,数据传输过程中,拥塞发生的概率高以及容易丢包,丢包率高。
技术实现要素:
4.本技术提供了一种拥塞控制方法、装置、设备及存储介质,能够更准确地调整发送端的拥塞窗口,使用这样的拥塞窗口发送数据,可以降低连接发生拥塞的概率,在不对交换节点做控制的情况下,使交换节点具有稳定而较浅的待转发数据的队列深度,从而减小网络中的丢包,提高网络的稳定性。
5.第一方面,本技术提供了一种拥塞控制方法,拥塞控制方法包括:
6.发送端通过与接收端之间的连接(link),在一个拥塞窗口内向接收端发送多个数据包,多个数据包的数目为第一值,第一值为连接的拥塞窗口的值,其中,连接处于拥塞避免状态;发送端接收来自接收端的与多个数据包中的全部数据包或者部分数据包对应的多个报文,多个报文包括一个或多个第一报文,以及一个或多个第二报文,第一报文用于表示连接在传输多个数据包中的一个或多个数据包时拥塞,第二报文用于表示连接在传输多个数据包中的一个或多个数据包时不拥塞;发送端根据多个报文调整拥塞窗口,以将拥塞窗口的值调整到第二值,其中,多个报文中的第一报文,使拥塞窗口的值减小,多个报文中的第二报文,使拥塞窗口的值增加。
7.由于上述方法中,一个拥塞窗口对应的第一报文和第二报文都会对该拥塞窗口产生影响,则,第二值可以大于或者小于第一值,甚至在一些情况下,第一值和第二值可以相等。
8.以及,连接在传输多个数据包中的一个或多个数据包时拥塞。一种实现方式下,可以是,一个或多个数据包在传输的过程中,被该连接的某一个交换节点,或者接收端确定为发生拥塞;相应的,连接在传输多个数据包中的一个或多个数据包时不拥塞,一种实现方式下,可以是,一个或多个数据包在传输的过程中,被该连接任一交换节点以及接收端都未得
到或生成用于指示拥塞的信息。
9.一个第一报文可以对应一个或多个数据包,一个第二报文也可以对应一个或多个数据包。第二报文可以是数据包的确认字符ack(acknowledge),或者其他。第一报文也可以是使用一个专门格式的报文以指示网络拥塞。例如可以是拥塞通知报文(congestion notification packet,cnp)。
10.一种实现方式下,该多个报文可以都是反馈报文,每个报文还用于指示多个数据包中一定数目的数据包到达接收端,一定数目为一个或多个;第一报文携带拥塞反馈标识,第二报文不携带拥塞反馈标识。第一报文通过拥塞标识表示网络拥塞。例如该拥塞标识可以是基于显示拥塞通知反馈(explicit congestion notification echo)技术在ack中打上的标签等。
11.第一报文对应和第二报文共同反映综合的网络拥塞程度的严重性,发送端可根据第一报文和第二报文共同反映综合的网络拥塞程度的严重性,有比例的减小和增加拥塞窗口的值。实现对拥塞窗口值的精细调整,从而使得网络能够快速对网络拥塞做出反应。在发送端对拥塞窗口的值的不断调整中,使得交换节点的队列深度得到控制,可达到一个较浅稳定的队列深度,减小网络中的丢包,避免网络性能出现跳变,提高了网络的稳定性。保证交换节点的队列缓存充足,降低了数据传输过程中的延时。而且,交换节点的队列深度始终保持在一个稳定的数值上,保证队列中一直存在数据包,也能够提高网络的带宽利用率,使网络保持高带宽的数据传输。一种实现方式下,多个报文中的一个第一报文,使拥塞窗口的值减小第三值,多个报文中的一个第二报文,使拥塞窗口的值增加第四值,第三值与一个第一报文指示的数据包的数目相关,第四值与一个第二报文指示的数据包的数目相关。
12.第一报文指示的数据包的数目和第二报文指示的数据包的数目,可进体现更加精确的网络拥塞的程度。发送端调整拥塞窗口的值减小与第一报文指示的数据包的数目相关的第三值,增加与第二报文指示的数据包的数目相关的第四值,能够进一步提高拥塞窗口调整的精细度,即使得交换节点的队列深度控制更加精准,进一步减少丢包,并提高网络的稳定性。
13.一种实现方式下,第二值为第一值、第一和的相反数与第二和的加和,第一和为多个报文中的每个第一报文对应的第三值相加的和,第二和为多个报文中的每个第二报文对应的第四值相加的和。
14.在一种可能的实现方式中,第四值还与第一值和增加系数相关。
15.一种实现方式下,发送端根据多个报文调整拥塞窗口,包括:发送端根据多个报文中的一个第一报文,将拥塞窗口的值减小第三值;以及发送端根据多个报文中的一个第二报文,将拥塞窗口的值增加第四值。实时对拥塞窗口的值进行调整,保证了拥塞窗口的值调整的及时性,能够进一步提高网络对网络拥塞做出反应的速度,进一步提高网络的稳定性。
16.一种实现方式下,发送端根据多个报文调整拥塞窗口,包括:发送端根据第一报文的数目,每个第一报文使拥塞窗口的值减小的量,第二报文的数目以及每个第二报文使拥塞窗口的值增加的量,计算出第二值,发送端将拥塞窗口的值从第一值调整到第二值。待基于该多个报文计算出第二值后,再调整,这样可以避免过于频繁地调整拥塞窗口,更加简便。
17.一种实现方式下,该方法还包括:向连接的接收端发送数目为第二值的多个数据
包。
18.第二方面,本技术提供了一种拥塞控制装置,包括:发送模块,用于通过与接收端之间的连接,在一个拥塞窗口内向接收端发送多个数据包,多个数据包的数目为第一值,第一值为连接的拥塞窗口的值,其中,连接处于拥塞避免状态;接收模块,用于接收来自接收端的与多个数据包中的全部数据包或者部分数据包对应的多个报文,多个报文包括一个或多个第一报文,以及一个或多个第二报文,第一报文用于表示连接在传输多个数据包中的一个或多个数据包时拥塞,第二报文用于表示连接在传输多个数据包中的一个或多个数据包时不拥塞;控制模块,用于根据多个报文调整拥塞窗口,以将拥塞窗口的值调整到第二值,其中,多个报文中的第一报文,使拥塞窗口的值减小,多个报文中的第二报文,使拥塞窗口的值增加。
19.一种实现方式下,第一报文为拥塞通知报文cnp,第二报文为确认字符ack。
20.一种实现方式下,多个报文为反馈报文,每个反馈报文还用于指示多个数据包中一定数目的数据包到达接收端,一定数目为一个或多个;第一报文携带拥塞反馈标识,第二报文不携带拥塞反馈标识。
21.一种实现方式下,多个报文中的一个第一报文,使拥塞窗口的值减小第三值,多个报文中的一个第二报文,使拥塞窗口的值增加第四值,第三值与一个第一报文指示的数据包的数目相关,第四值与一个第二报文指示的数据包的数目相关。
22.一种实现方式下,第二值为第一值、第一和的相反数与第二和的加和,第一和为多个报文中的每个第一报文对应的第三值相加的和,第二和为多个报文中的每个第二报文对应的第四值相加的和。
23.一种实现方式下,在根据多个报文调整拥塞窗口的方面,控制模块用于根据多个报文中的一个第一报文,将拥塞窗口的值减小第三值;以及根据多个报文中的一个第二报文,将拥塞窗口的值增加第四值。
24.一种实现方式下,在根据多个报文调整拥塞窗口的方面,控制模块用于根据第一报文的数目,每个第一报文使拥塞窗口的值减小的量,第二报文的数目以及每个第二报文使拥塞窗口的值增加的量,计算出第二值,以及将拥塞窗口的值从第一值调整到第二值。
25.一种实现方式下,发送模块还用于向连接的接收端发送数目为第二值的多个数据包。
26.在一种可能的实现方式中,第四值还与第一值和增加系数相关。其中增加系数可以是预设的值。
27.第二方面以及第二方面的各个可能的实现方式中的拥塞控制装置也可达到与上述技术方案中的拥塞控制方法相同的技术效果。
28.第三方面,本技术提供了一种设备,包括存储介质、处理电路和通信接口;存储介质用于存储可执行程序;处理电路用于读取存储介质中存储的可执行程序,以在通信接口的配合下执行上述技术方案中的拥塞控制方法。其中,数据包的发送、报文的接收等均可由处理电路调用通信接口来实现,处理电路具体可实现调整拥塞窗口的步骤。本技术提供的设备可达到与上述技术方案中的拥塞控制方法相同的技术效果。
29.第四方面,本技术提供了一种存储介质,存储介质上存储有程序;程序被处理电路执行时实现如上述技术方案中的拥塞控制方法,可达到与上述技术方案中的拥塞控制方法
相同的技术效果。
附图说明
30.图1为本技术实施例中一种网络应用场景图;
31.图2为本技术实施例中的一种拥塞控制方法的流程图;
32.图3为本技术实施例中一种拥塞标识设置概率与队列深度正相关的示意图;
33.图4为本技术实施例中一种拥塞控制方法的流程图;
34.图5为本技术实施例中一种设备的结构示意图;
35.图6为本发明实施例中一种拥塞控制装置的结构示意图。
具体实施方式
36.本技术提供了一种拥塞控制方法、装置、设备及存储介质,可应用于通信协议栈中的传输控制协议/用户数据报协议(transmission control protocol/user datagram protocol,tcp/udp)层和网络协议(internet protocol,ip)层,以及以太网交换机(即ethernet switch)和与主机通道适配器(即host channel adapter)之间的基于融合以太网的远程内存直接访问(remote direct memory access over converged ethernet,roce)。例如,一个典型的本技术的技术方案的应用场景,就是远程内存直接访问(remote direct memory access,rdma)网络。在一个示例中,本技术中的拥塞控制方法可应用于rdma数据存取的场景中。比如,用户终端将数据直接写入远程服务器的内存,在数据写入的过程中无内核干预和内存拷贝发生。rdma可降低远程服务器侧数据处理的延迟。在以太网中,用户终端先将数据以数据包的形式发送至交换节点,再由交换节点将数据包发送至远程服务器。在数据存储至远程服务器的过程中,数据快速移动到了远程服务器的存储器中,数据交换的过程并没有经过远程服务器的中央处理器,从而减少了数据传输时远程服务器的中央处理器的开销。数据在用户终端和交换节点中的传输即可采用本技术中的拥塞控制方法。
37.图1为本技术实施例中一种网络应用场景图。如图1所示,应用缓存(即application buffers)为应用程序中的用户缓存空间。一方面,数据可从应用缓存通过用户的套接字应用程序编程接口(sockets application programming interface,sockets api)进入操作系统内核(即kernel),在操作系统内核中通过套接字(即sockets)、传输控制协议(transmission control protocol,tcp)、第四版网络协议/第六版网络协议(即ipv4/ipv6)、网络设备(即network device),到达操作系统内核中的设备驱动(device driver)。另一方面,数据也可从应用缓存通过远程内存直接访问应用于直接内存存取的应用程序编程接口(remote direct memory access verbs application programming interface,rdma verbs api)进入操作系统内核,利用操作系统内核旁路(即kernel bypass)功能,直接到达操作系统内核中的设备驱动,实现了远程内存直接访问(remote direct memory access,rdma)。操作系统内核中的缓存标头(即buffers headers)可存储数据实际的内存地址、数据类型、缓存标头所在的链表、数据状态、数据标记等,在此并不限定。操作系统内核可通过服务器安装的主机通道适配器(host channel adapter,hca)利用无限带宽技术(即infiniband)与无线带宽技术交换器(infiniband)进行数据交互。操作系统内核还可通
过主机通道适配器利用互联网的广域远程内存直接访问协议(internet wide area remote direct memory access protocol,iwarp)、基于融合以太网的远程内存直接访问(remote direct memory access over converged ethernet,roce)等技术与以太网交换机进行数据交互。
38.本技术实施例中拥塞控制方法的数据流动涉及图1所示的虚线框中的部分,即涉及网络协议和传输控制协议,以及交换节点和发送端之间的数据流通。应理解,本技术的技术方案涉及三端交互场景,即发送端,交换节点和接收端,但是一种实现方式下,本技术的技术改进在发送端,交换节点和接收端可以仍然使用现有技术中的方式给予配合。交换节点可以是路由器,交换机等,发送端可以是服务器,终端,云平台,甚至是某些网络设备,如智能网卡。比如,本技术实施例中拥塞控制方法可根据网络协议,比如根据第四版网络协议或第六版网络协议标记的拥塞标识,标记根据传输控制协议得到的拥塞反馈标识。根据报文,采用本技术实施例中的拥塞控制方法,调整发送端的拥塞窗口的值。又比如,在服务器(即发送端)与以太网交换机(即交换节点)之间的roce过程中采用本技术实施例中的拥塞控制方法,调整发送端的拥塞窗口的值。
39.本技术实施例中的拥塞控制方法主要应用于一个连接中的发送端。在一个连接中包括发送端、交换节点和接收端。发送端可将数据包发送至交换节点,数据包进入交换节点中的队列。交换节点可用于对数据包进行拥塞标识的设置(即打标)。交换节点按照队列中数据包的排列顺序,将数据包依次向接收端发送。接收端依据接收到的数据包向发送端发送报文。发送端根据报文调制拥塞窗口的值。
40.图2为本技术实施例中的一种拥塞控制方法的流程图。如图2所示,拥塞控制方法包括步骤s101至步骤s106,为了便于理解,以三方交互的流程进行说明。
41.在步骤s101中,发送端通过与接收端之间的连接,在一个拥塞窗口内向交换节点发送多个数据包。
42.其中,发送端发送的这多个数据包的数目即为第一值,第一值为连接的拥塞窗口的值。该连接处于拥塞避免(即congestion avoidance)状态。具体的,发送端通过交换节点向接收端发送多个数据包。也就是说,发送端将多个数据包向交换节点发送,交换节点再将这多个数据包向接收端发送。
43.在步骤s102中,交换节点接收多个数据包,按照拥塞标识设置概率使得数据包指示连接拥塞或指示连接不拥塞,并将数据包发送至接收端。
44.这里数据包指示连接拥塞即表示连接在传输多个数据包中的一个或多个数据包时拥塞。数据包指示连接不拥塞即表示连接在传输多个数据包中的一个或多个数据包时不拥塞。
45.在一个示例中,可为数据包设置拥塞标识,携带拥塞标识的数据包指示连接拥塞。将拥塞标识在网络第三层即ip层标记,即标记在数据包的ip包头上。拥塞标识表征网络发生拥塞。比如,拥塞标识可以为拥塞经历(congestion experienced,ce)。例如,ce为ip数据包的包头上设置的11。不携带拥塞标识的数据包指示连接不拥塞。需要说明的是,交换节点的队列深度位于队列正常范围内,拥塞标识设置概率与队列深度正相关。交换节点的队列深度为等待发送的数据包的数目。在一个示例中,队列正常范围与带宽延时积、队列正常范围的最大值、队列正常范围的最小值、增加系数、拥塞标识最大设置概率、第一报文对应的
第三值、慢启动(即slow start)状态中发送端接收到的第二报文对应的第五值等参数中的一个或多个相关。慢启动(即slow start)状态为连接建立初始的一段时间内的状态。慢启动状态开始于连接建立,终止于发送端首次接收到第一报文之后。第一报文和第二报文的相关说明将会在下面具体介绍。
46.交换节点的队列深度位于队列正常范围内的情况下,拥塞标识设置概率与队列深度可线性正相关,也可为非线性正相关。比如,图3为本技术实施例中一种拥塞标识设置概率与队列深度正相关的示意图。如图3所示,横坐标为队列深度,纵坐标为拥塞标识设置概率。设队列正常范围的最小值为kmin,队列正常范围的最大值为kmax。队列深度大于或等于kmin,且队列深度小于或等于kmax,拥塞标识设置概率与队列深度线性正相关。队列深度小于kmin,则拥塞标识设置概率为0。队列深度大于kmax,则拥塞标识设置概率为100%。
47.在步骤s103中,接收端根据多个数据包中的全部数据包或者部分数据包,生成多个报文,并向发送端发送多个报文。
48.在一个示例中,接收端可将接收到的多个数据包中的全部数据包作为生成报文的依据。比如,发送端向接收端发送了100个数据包。在这100个数据包中,20个数据包指示连接拥塞,80个数据包指示连接不拥塞。则可根据这100个数据包,生成多个报文,并向发送端发送。
49.在另一个示例中,接收端也可将接收到的多个数据包中的部分数据包作为生成报文的依据。比如,发送端向接收端发送了100个数据包。在这100个数据包中,20个数据包指示连接拥塞,80个数据包指示连接不拥塞。接收端可随机或按照某种规律在100个数据包中选取60个数据包。根据选取的60个数据包,生成多个报文,并向发送端发送。
50.其中,多个报文包括一个或多个第一报文,以及一个或多个第二报文。第一报文用于表示连接在传输多个数据包中的一个或多个数据包时拥塞。第二报文用于表示连接在传输多个数据包中的一个或多个数据包时不拥塞。
51.在一个示例中,第一报文可以为用于指示网络拥塞而使用的一个专门的报文,例如专门的拥塞通知报文(congestion notification packet,cnp)等。第二报文可以是数据包的确认字符(acknowledge,ack)。
52.在另一个示例中,多个报文可以为反馈报文。每个反馈报文还可用于指示多个数据包中一定数目的数据包达到接收端。其中,一定数目为一个或多个。也就是说,每个反馈报文可对应一个或多个数据包。在多个报文为反馈报文的情况下,第一报文携带拥塞反馈标识,通过拥塞反馈标识表示连接在传输多个数据包中的一个或多个数据包时拥塞。例如该拥塞反馈标识可以是基于显示拥塞通知反馈(explicit congestion notification echo)技术在ack中打上的标签等。具体的,拥塞反馈标识可根据拥塞标识在报文中标记,标记拥塞反馈标识的报文即为第一报文。具体的,接收端接收到交换节点发送来的数据包,若数据包的ip包头标记有拥塞标识,则可将拥塞反馈标识在网络第四层即tcp层标记,可标记在tcp包头上。第一报文的拥塞反馈标识可具体为显式拥塞通知反馈(explicit congestion notification echo,ece)。例如,ece为tcp数据包的包头上设置的1。第二报文不携带拥塞反馈标识,即接收端生成的第二报文中并不标记拥塞反馈报文。
53.在步骤s104中,发送端接收多个数据包中的全部数据包或部分数据包对应的多个报文。
54.在步骤s105中,发送端根据多个报文调整拥塞窗口,以将拥塞窗口的值调整到第二值。
55.发送端接收多个报文,可对多个报文进行解析,从而确定多个报文中的第一报文和第二报文。比如,报文为反馈报文,则发送端接收到反馈报文后,对反馈报文进行解析。若解析反馈报文得到拥塞反馈标识,则确定该报文为第一报文。若解析反馈报文未得到拥塞反馈标识,则确定该报文为第二报文。
56.第一报文使拥塞窗口的值减小,第二报文使拥塞窗口的值增大。比如,多个报文中的一个第一报文,使拥塞窗口的值减小第三值。多个报文中的一个第二报文,使拥塞窗口的值增加第四值。第三值与一个第一报文指示的数据包的数目相关。第四值与一个第二报文指示的数据包的数目相关。在一个示例中,第三值与一个第一报文指示的数据包的数目正相关;第四值与一个第二报文指示的数据包的数目正相关。
57.比如,对应n个数据包的第一报文所对应的第三值,为对应一个数据包的第一报文所对应的第三值的n倍。对应n个数据包的第二报文所对应的第四值,为对应一个数据包的第二报文所对应的第四值的n倍。其中,n为正整数。
58.在一个示例中,接收端设置每个第一报文和第二报文均各自对应固定数目个数据包,固定数目为一个或多个。则每个第一报文对应的第三值均相等。每个第二报文对应的第四值相等。比如,每个第一报文均对应两个指示连接拥塞的数据包,一个指示连接拥塞的数据包对应的第一报文可调整拥塞窗口的值的减少量为β,则每个第一报文对应的第三值为2β。每个第二报文均对应两个指示连接不拥塞的数据包,一个指示连接不拥塞的数据包对应的第二报文可调整拥塞窗口的值的增加量为θ,则每个第二报文对应的第四值为2θ。需要说明的是,第一报文对应的数据包数目与第二报文对应的数据包数目可以相同,也可以不同,在此并不限定。
59.在另一个示例中,接收端可不限定每个第一报文对应的数据包的数目和每个第二报文对应的数据包的数目。比如,处于拥塞避免状态的连接中发送端接收到两个第一报文和两个第二报文。第一个第一报文对应一个数据包,第二个第一报文对应两个数据包。一个指示连接拥塞的数据包对应的第一报文可调整拥塞窗口的值的减少量为β。则第一个第一报文对应的第三值为β。第二个第一报文对应的第三值为2β。第一个第二报文对应两个数据包,第二个第二报文对应一个数据包。一个指示连接不拥塞的数据包对应的第二报文可调整拥塞窗口的值的增加量为θ。则第一条第二报文对应的第四值为2θ。第二条第二报文对应的第四值为θ。
60.每个报文可对应一个或多个数据包。每个报文对应的数据包数目可以相同。报文对应数据包的数目可在接收端与发送端之间预先设定,比如,预先设定每个报文对应一个数据包。又比如,预先设定每个报文对应两个数据包。每个报文对应的数据包数目也可以不同。可在报文中的空闲字节中设置数据包数目位,通过解析报文,读取数据包数目位上的信息,确定报文对应的数据包数目。需要说明的是,第一报文可以为特殊的专用于表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文,该特殊的报文可对应一个用于表示连接拥塞的数据包,或者对应多个专用于表示连接拥塞的数据包。该特殊的报文对应的专用于表示连接拥塞的数据包的数目的设置可参考与上述普通的报文对应的数据包的数目的设置。
61.针对每一个数据包各生成一个报文,可实现发送端的细粒度发送速率控制,从而提高拥塞控制的精度。但考虑到拥塞控制的资源占用等计算代价,可适当设置两个以上的数据包共享一条报文,从而达到计算代价和拥塞控制精度的平衡。
62.在一个示例中,在调整拥塞窗口的过程中,发送端每接收到一个报文,就可实时根据该报文进行拥塞窗口的调整。若发送端接收到的多个报文中的一个报文为第一报文,则根据接收到的这一个第一报文,将拥塞窗口的值减小与该第一报文对应的第三值。若发送端接收端到的多个报文中一个报文为第二报文,则根据接收到的这一个第二报文,将拥塞窗口的值增大与该第二报文对应的第四值。
63.需要说明的是,上述说明内容中的一个指示连接拥塞的数据包对应的第一报文可调整拥塞窗口的值的减少量(即对应一个数据包的第一报文对应的第三值),以及一个指示连接不拥塞的数据包对应的第二报文可调整拥塞窗口的值的增加量(即对应一个数据包的第二报文对应的第四值)可根据具体工作场景和工作需求预先设定。在一个示例中,第四值还与第一值和增加系数相关。比如,对应一个数据包的第二报文对应的第四值为增加系数与第一值的商。设对应一个数据包的第二报文对应的第四值为θ;增加系数为γ;第一值为cwnd1。增加系数也可根据具体工作场景和工作需求设定。则上述参数之间的关系如算式(1)所示:
64.θ=γ/cwnd1
ꢀꢀꢀ
(1)
65.在具体操作中,发送端可根据第一报文的数目、每个第一报文使拥塞窗口的值减小的量、第二报文的数目以及每个第二报文使拥塞窗口的值增加的量,计算出第二值。发送端得到第二值,将拥塞窗口的值从第一值调整到第二值。根据第一报文的数目,以及每个第一报文使拥塞窗口的值减小的量,可以得到所有第一报文使拥塞窗口的值减小的总量。根据第二报文的数目,以及每个第二报文使拥塞窗口的值增加的量,可以得到所有第二报文使拥塞窗口的值增加的总量。根据所有第一报文使拥塞窗口的值减小的总量、所有第二报文使拥塞窗口的值增加的总量以及拥塞窗口的值,可以得到第二值。
66.也就是说,上述说明中的第二值为发送端接收到一个拥塞窗口所有报文多次调整后的拥塞窗口的值。比如,第二值为第一值、第一和的相反数与第二和的加和。其中,第一和为多个报文中的每个第一报文对应的第三值的加和。第二和为多个报文中的每个第二报文对应的第四值的加和。例如,处于拥塞避免状态的连接中一个拥塞窗口中,发送端接收到一个第一报文和两个第二报文。假设第一值为cwnd1;第二值为cwnd2;第一报文对应的第三值为β1;第一个第二报文对应的第四值为θ1;第二个第二报文对应的第四值为θ2。
67.则可以得到算式(2)如下:
68.cwnd2=cwnd1-β1+θ1+θ2ꢀꢀꢀ
(2)
69.本技术实施例中的拥塞控制方法中,接收端根据一个拥塞窗口的数据包的拥塞标识,生成表示连接在传输多个数据包中的一个或多个数据包时拥塞的第一报文,和表示连接在传输多个数据包中的一个或多个数据包时不拥塞的第二报文。发送端根据多个报文中的第一报文和第二报文,有比例的减小和增加拥塞窗口的值,从而对拥塞窗口的值进行更精细的调整。在本技术实施例中,拥塞窗口的调整中存在李雅普诺夫平衡点,在对拥塞窗口的值的不断调整中,使得交换节点的队列深度得到控制,达到较浅的一个稳定队列深度。
70.比如,设对应一个数据包的第二报文对应的第四值如算式(1)所示;拥塞标识设置
概率为p;时刻t的拥塞窗口的值为cwnd(t),则在时刻t经过一个往返时延(round-trip time,rtt)的拥塞窗口的值cwnd(t+rtt)计算见算式(3):
71.cwnd(t+rtt)=cwnd(t)+γ
×
(1-p)-β
×
cwnd(t)
×
p
ꢀꢀꢀ
(3)
72.其中,γ为上述说明内容中的增加系数。β为对应一个数据包的第二报文对应的第四值。
73.根据算式(3)可以得到算式(4),算式(4)如下:
74.(dcwnd/dt)=(1/rtt)
×
[(γ/cwnd)
×
(1-p)-β
×
p]
ꢀꢀꢀ
(4)
[0075]
令∑(dcwnd/dt)=0,可得,∑cwnd=(nγ/β)[(1/p)-1]。其中,n为网络链路流的数目。当∑cwnd等于带宽延时积(bandwidth-delay product,bdp)时达到李雅普诺夫平衡点,可计算得到较小的稳定队列深度q,具体计算如下:
[0076]
q=(k
×
nγ)/[(bdp
×
β)+nγ]
ꢀꢀꢀ
(5)
[0077]
其中,k为队列深度的最大值与队列深度的最小值的差值。
[0078]
达到李雅普诺夫平衡点的情况下,交换节点中队列深度将稳定维持在较浅的稳定队列深度q。在现有技术中,交换节点中的队列深度上下波动非常大,且队列深度非常大,队列深度可达到100至256。由于交换节点中的队列缓存有限,队列深度大导致交换节点中的队列缓存紧张,数据传输过程中的延时增大,使得丢包率增高。采用本技术实施例的拥塞控制方法,发送端在不断调整拥塞窗口的过程中,按照第一报文和第二报文,有比例地减小和增加拥塞窗口的值。使得拥塞窗口的值可稳定维持在一个较浅的稳定队列深度,比如,本技术实施例中的稳定队列深度可达到10至20。稳定队列深度较浅,为交换节点留出了足够的队列缓存。从而降低了数据传输过程中的延时,使得丢包率更加可控,而更能抗击突发因素对丢包率等网络性能的破坏,使得数据传输更加稳定,质量更有保障,。而且,采用本技术实施例中的拥塞控制方法,可以在不启用基于优先级的流控控制(priority-based flow control,pfc)等复杂机制的情况下,更加精确地对拥塞窗口进行控制,提高网络的稳定性。可在避免死锁等稳定性问题的基础上,保证网络的稳定性,从而提升网络服务质量。
[0079]
而且,在本技术实施例中,稳定队列深度不为0的情况下,即保证队列中一直存在数据包,也可保证较高的网络带宽利用率。从而达到了数据传输过程中延时低和网络带宽利用率高的协调平衡。
[0080]
比如,在一个示例中,在相同网络条件下采用传输控制协议(transmission control protocol,tcp)算法、数据中心量化拥塞通知(data center quantized congestion notification,dcqcn)算法和本技术方案算法的效果如表一所示:
[0081] 利用的带宽队列深度tcp算法13.8gbps0至256dcqcn算法25.2gbps0至100本技术方案算法35.9gbps0至20
[0082]
表一
[0083]
可以得知,本技术方案算法的带宽明显高于tcp算法和dcqcn算法,且本技术方案算法的队列深度明显低于tcp算法和dcqcn算法,且队列深度得到有效控制,变化较小,可保证极低丢包率。而且,队列深度始终保持在一个稳定的队列深度值上,也能够进一步提高网络的带宽的利用率。
[0084]
在步骤s106中,发送端向连接的接收端发送数目为第二值的多个数据包。
[0085]
调整拥塞窗口的值后,在下一个拥塞窗口发送数据包的过程中,发送端向交换节点发送调整后得到的第二值数目个数据包,以调整交换节点的队列深度。
[0086]
在另一个实施例中,上述连接还可处于慢启动状态。在步骤s101之前,即在发送端的连接处于拥塞避免状态之前,发送端的连接处于慢启动(即slow start)状态。慢启动状态开始于连接初始建立,终止于发送端首次接收到表示连接拥塞的第一报文之后。在慢启动状态中,发送端可根据处于慢启动状态的连接的拥塞窗口的第六值,向处于慢启动状态的连接的接收端发送多个数据包。处于慢启动状态的连接中的多个数据包的数目为上述第六值。
[0087]
具体的,发送端通过交换节点向接收端发送数据包。也就是说,发送端先将数据包发送至交换节点,交换节点按照拥塞标识设置概率使得数据包指示连接拥塞或指示连接不拥塞,并将数据包发送至接收端。接收端根据数据包,生成慢启动报文。其中,慢启动报文为处于慢启动状态的连接中多个数据包对应的报文。慢启动报文包括一个第一报文和整数个第二报文。接收端将第一报文和第二报文发送至发送端。发送端根据处于慢启动状态的连接中的慢启动报文中的每一个报文调整拥塞窗口,以将拥塞窗口的值调整至第一值。
[0088]
慢启动报文中的每个报文的作用与上述拥塞避免状态的连接中的报文基本相同。需要注意的是,在处于慢启动状态的连接中,每一个第一报文,使拥塞窗口减小第三值。每一个第二报文,使拥塞窗口增加第五值。
[0089]
在慢启动状态终止后,可切换至拥塞避免状态。处于拥塞避免状态的连接开始于发送端首次接收到携带拥塞反馈标识的第一报文之后。在处于慢启动状态的连接中不断调整拥塞窗口的值,慢启动状态终止时拥塞窗口的值即为处于拥塞避免状态的连接开始时的拥塞窗口的值。
[0090]
为了便于理解,下面举例说明从慢启动状态到拥塞避免状态的整个过程中拥塞控制方法中拥塞窗口的值的调整算法。
[0091]
假设处于慢启动状态的连接中对应一个数据包的第一报文对应的第三值为β;处于慢启动状态的连接中对应一个数据包的第二报文对应的第五值为α;处于拥塞避免状态的连接中对应一个数据包的第一报文对应的第三值为β;处于拥塞避免状态的连接中对应一个数据包的第二报文对应的第四值为θ。设θ如算式(1)所示。假设一个拥塞窗口中,发送端接收到了10条报文。每条报文均对应一个数据包。其中,10条报文按顺序分别为第二报文、第二报文、第一报文、第二报文、第一报文、第一报文、第二报文、第二报文、第一报文和第二报文。
[0092]
则前两条第二报文和第一条第一报文均为处于慢启动状态的连接中的报文,剩余部分的第一报文和第二报文均为处于拥塞避免状态的连接中的报文。设第六值为cwnd3,则第一值cwnd1的计算可如算式(6)所示:
[0093]
cwnd1=cwnd3+α+α-β=cwnd3-2
×
α-β
ꢀꢀꢀ
(6)
[0094]
第二值cwnd2的计算可如算式(7)所示:
[0095]
cwnd2=cwnd1+(γ/cwnd1)-β-β+(γ/cwnd1)+(γ/cwnd1)-β+(γ/cwnd1)=cwnd3-2
×
α-4
×
β+4
×
(γ/cwnd1)
ꢀꢀꢀ
(7)
[0096]
则经过一个拥塞窗口不断的调整,下一拥塞窗口的值即第二值cwnd2为cwnd3-2
×
α-4
×
β+4
×
(γ/cwnd1)。
[0097]
需要理解的是,上述的参数α,β和γ,可以根据网络的拓扑和网络参数等信息,先在数据传输前,例如组网过程中,或者连接建立过程中使用上述举例的计算方式或者其他计算方式确定后,作为系统参数配置好,在连接传输数据的过程中(如上文描述的从s101开始的过程,或者慢启动状态中),直接使用即可。又例如,可预先设置期望的稳定队列深度q,设置可达到期望的稳定队列深度q的α,β和γ,并将α,β和γ作为系统参数配置。
[0098]
下面将以一实例说明本技术实施例中拥塞控制方法的过程。设置发送端初始发送的拥塞窗口值为100,即发送端初始发送的拥塞窗口为100个数据包。队列深度的最小值kmin=0,队列深度的最大值kmax=40。初始的队列深度为20。初始的拥塞标识设置概率为10%。对应一个数据包的第一报文的第三值β=0.5,增加系数γ=1.0。在队列正常范围内,拥塞标识设置概率的曲线公式为y=0.005x,其中,y为拥塞标识设置概率,x为队列深度。假设,每个数据包均对应一条报文。
[0099]
第一次拥塞窗口的值调整:发送端将根据初始的拥塞窗口值100,将100个数据包发送至交换节点。交换节点按照初始的拥塞标识设置概率10%设置用于指示连接拥塞的数据包和指示连接不拥塞的数据包,则100个数据包包括90个指示连接不拥塞的数据包和10个指示连接拥塞的数据包。接收端接收90个指示连接不拥塞的数据包和10个指示连接拥塞的数据包,生成90个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和10个未表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文。发送端接收接收端发送的90个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和10个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文,并进行第一次拥塞窗口值的调整。调整后的拥塞窗口值为100+1.0
×
(90/100)-0.5
×
10≈96。调整后的拥塞窗口值的计算方法具体可参见上述算式(3)。
[0100]
第二次拥塞窗口的值调整:发送端将根据第一次调整后的拥塞窗口值96,将96个数据包发送至交换节点。由于拥塞窗口值减小,因此队列深度也对应减小。计算第二次拥塞窗口值调整所需的拥塞标识设置概率为[20-(100-96)]
×
0.05=8%。交换节点按照拥塞标识设置概率8%设置用于指示连接拥塞的数据包和指示连接不拥塞的数据包,则96个数据包包括88个指示连接不拥塞的数据包和8个指示连接拥塞的数据包。接收端接收88个指示连接不拥塞的数据包和8个指示连接拥塞的数据包,生成88个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和8个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文。发送端接收接收端发送的88个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和8个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文,并进行第二次拥塞窗口值的调整。调整后的拥塞窗口值为96+1.0
×
(88/96)-0.5
×
8≈93。
[0101]
第三次拥塞窗口的值调整:发送端将根据第二次调整后的拥塞窗口值93,将93个数据包发送至交换节点。由于拥塞窗口值减小,因此队列深度也对应减小。计算第二次拥塞窗口值调整所需的拥塞标识设置概率为[20-(100-93)]
×
0.05=6.5%。交换节点按照拥塞标识设置概率6.5%设置用于指示连接拥塞的数据包和指示连接不拥塞的数据包,则93个数据包包括87个指示连接不拥塞的数据包和6个指示连接拥塞的数据包。接收端接收87个指示连接不拥塞的数据包和6个指示连接拥塞的数据包,生成87个表示连接在传输多个数
据包中的一个或多个数据包时不拥塞的报文和6个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文。发送端接收接收端发送的87条表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和6条表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文,并进行第三次拥塞窗口值的调整。调整后的拥塞窗口值为93+1.0
×
(87/93)-0.5
×
6≈91。
[0102]
依次类推,直至第八次拥塞窗口的值调整。
[0103]
第八次拥塞窗口的值调整:发送端将根据第七次调整后的拥塞窗口值86,将86个数据包发送至交换节点。由于拥塞窗口值减小,因此队列深度也对应减小。计算第二次拥塞窗口值调整所需的拥塞标识设置概率为[20-(100-86)]
×
0.05=3%。交换节点按照拥塞标识设置概率3%设置用于指示连接拥塞的数据包和指示连接不拥塞的数据包,则86个数据包包括83个指示连接不拥塞的数据包和3个指示连接拥塞的数据包。接收端接收83个指示连接不拥塞的数据包和3个指示连接拥塞的数据包,生成83个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和3个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文。发送端接收接收端发送的83个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和3个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文,并进行第八次拥塞窗口值的调整。调整后的拥塞窗口值为86+1.0
×
(83/86)-0.5
×
3≈85。
[0104]
第九次拥塞窗口的值调整:发送端将根据第八次调整后的拥塞窗口值85,将85个数据包发送至交换节点。由于拥塞窗口值减小,因此队列深度也对应减小。计算第二次拥塞窗口值调整所需的拥塞标识设置概率为[20-(100-85)]
×
0.05=2.5%。交换节点按照拥塞标识设置概率2.5%设置用于指示连接拥塞的数据包和指示连接不拥塞的数据包,则85个数据包包括83个指示连接不拥塞的数据包和2个指示连接拥塞的数据包。接收端接收83个指示连接不拥塞的数据包和2个指示连接拥塞的数据包,生成83个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和2个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文。发送端接收接收端发送的83个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和2个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文,并进行第九次拥塞窗口值的调整。调整后的拥塞窗口值为85+1.0
×
(83/85)-0.5
×
2≈85。
[0105]
依次类推,在之后的拥塞窗口的值调整中,队列深度稳定为5,不再发生较大波动。从而保证了较小的稳定队列深度,为交换节点留出了足够的队列缓存,降低了数据传输过程中的延时,从而降低了丢包率。
[0106]
下面将以发送端为执行主体说明本技术实施例中拥塞控制方法的实施步骤。图4为本技术实施例中一种拥塞控制方法的流程图。图4所示的拥塞控制方法应用于一个连接的发送端。如图4所示,拥塞控制方法包括步骤s201至步骤s203。
[0107]
在步骤s201中,发送端通过与接收端之间的连接,在一个拥塞窗口内向连接的接收端发送多个数据包。
[0108]
其中,多个数据包的数目为第一值,第一值为连接的拥塞窗口的值。其中,连接处于拥塞避免状态。
[0109]
在步骤s202中,发送端接收来自接收端的与多个数据包中的全部数据包或者部分
数据包对应的多个报文。
[0110]
其中,多个报文包括一个或多个第一报文,以及一个或多个第二报文,第一报文用于表示连接在传输多个数据包中的一个或多个数据包时拥塞,第二报文用于表示连接在传输多个数据包中的一个或多个数据包时不拥塞。
[0111]
在步骤s203中,发送端根据多个报文调整拥塞窗口,以将拥塞窗口的值调整到第二值。
[0112]
其中,多个报文中的一个第一报文,使拥塞窗口减小。多个报文中的一个第二报文,使拥塞窗口增加。
[0113]
上述步骤s201至步骤s203的相关说明请参见上述实施例中步骤s101至步骤s106的相关说明,在此不再赘述。
[0114]
下面介绍本技术实施例中的一种网卡以及一种设备,例如该设备可以是终端或者服务器,甚至是某些网络设备,例如云平台等。图5为本技术实施例中一种设备30的结构示意图。如图5所示,设备包括处理器31、存储器32和网卡33。其中网卡33可包括处理电路(例如asic电路,fpga,dsp等,图5中将处理电路示意为处理芯片331)、和存储介质332和通信接口333。在一个示例中,网卡33还可包括连接接口(图5中将连接接口示意为外部组件连接快速接口334)。在一个示例中,上述实施例中的拥塞控制方法可应用于网卡33。也就是说,网卡33中的存储介质332用于存储程序。处理芯片331用于执行程序,程序被处理芯片332执行时可实现上述实施例中的拥塞控制方法。外部组件连接快速接口334用于将网卡33连接在设备30上。通信接口333被处理芯片331调用,使得网卡向其他设备发送数据包,以及接收上述的报文。存储介质332还可用于存储拥塞控制方法涉及到的参数,比如处于慢启动状态的连接中对应一个数据包的第一报文对应的第三值β、处于慢启动状态的连接中对应一个数据包的第二报文对应的第四值θ、处于拥塞避免状态的连接中对应一个数据包的第一报文对应的第三值β、处于拥塞避免状态的连接中对应一个数据包的第二报文对应的第五值α,以及拥塞窗口的值等参数。需理解,图5中描述的网卡可以安装在各种设备上,本技术不限定设备的结构,图5只做示意性说明。
[0115]
应理解的是,类似于网卡,本技术所描述的方法还可以应用于芯片或者其他装置,这些装置的构成类似网卡,包括存储介质,处理电路和通信接口,且三者之间电连接,以实现本技术上述的方法,本技术不再赘述。
[0116]
在另一个示例中,上述实施例中的拥塞控制方法可应用于设备30。也就是说,设备中的存储器32相当于用于存储程序的存储介质。处理器31相当于用于执行存储介质中的程序的处理电路,程序被处理器31执行时可实现本技术所记载的拥塞控制方法。设备中的存储器32属于存储介质中的一种,处理器31属于处理电路的一种。而网卡33则可认为是设备30的通信接口一种实现。一种实现方式下,设备30的通信接口还可以包括天线等硬件器件。通信接口主要用于实现本技术实施例中各模块、装置、单元和/或设备之间的通信。也可通过通信接口接入输入设备和/或输出设备。
[0117]
上述处理器31可以包括中央处理器(cpu),或者特定集成电路(asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
[0118]
存储器32可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器32可包括hdd、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(usb)驱动器或者两个
或更多个以上这些的组合。在合适的情况下,存储器32可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器32可在设备30的内部或外部。在特定实施例中,存储器32是非易失性固态存储器。在特定实施例中,存储器32包括只读存储器(rom)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、电可改写rom(earom)或闪存或者两个或更多个以上这些的组合。
[0119]
处理器31通过读取存储器32中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行上述各个实施例中的发送端的拥塞控制方法。
[0120]
在一个示例中,设备30还包括总线35其中,如图5所示,处理器31、存储器32、网卡33通过总线34连接并完成相互间的通信。
[0121]
总线34包括硬件、软件或两者,将设备的部件彼此耦接在一起。举例来说而非限制,总线34可包括加速图形端口(agp)或其他图形总线、增强工业标准架构(eisa)总线、前端总线(fsb)、超传输(ht)互连、工业标准架构(isa)总线、无限带宽互连、低引脚数(lpc)总线、存储器总线、微信道架构(mca)总线、外围组件互连(pci)总线、pci-express(pci-x)总线、串行高级技术附件(sata)总线、视频电子标准协会局部(vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线34可包括一个或多个总线。尽管本技术实施例描述和示出了特定的总线,但本技术考虑任何合适的总线或互连。
[0122]
本技术实施例还提供了一种存储介质,该存储介质上存储有程序。程序被处理电路执行时实现如本技术所记载的拥塞控制方法。存储介质可以包括能够存储或传输信息的任何介质。存储介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。程序、代码段可以经由诸如因特网、内联网等的计算机网络被下载。
[0123]
图6为本发明实施例中一种拥塞控制装置的结构示意图。如图6所示,拥塞控制装置400包括发送模块401、接收模块402和控制模块403。其中,发送模块401和接收模块402可以通过处理电路执行存储介质中的可执行代码,调用通信接口实现,控制模块403可以通过处理电路执行存储介质中的可执行程序实现,关于处理电路、存储介质和通信接口的具体形态,可以参考图5对应的描述。关于图6所示装置的其他实现细节和有益效果的描述,请参考本技术的记载。
[0124]
发送模块401,用于通过与接收端之间的连接,在一个拥塞窗口内向接收端发送多个数据包。
[0125]
其中,多个数据包的数目为第一值。第一值为连接的拥塞窗口的值。其中,连接处于拥塞避免状态。
[0126]
在一个示例中,发送模块401还用于向连接的接收端发送数目为第二值的多个数据包。
[0127]
接收模块402,用于接收来自接收端的与多个数据包中的全部数据包或者部分数据包对应的多个报文。
[0128]
多个报文包括一个或多个第一报文,以及一个或多个第二报文,第一报文用于表示连接在传输多个数据包中的一个或多个数据包时拥塞,第二报文用于表示连接在传输多个数据包中的一个或多个数据包时不拥塞。
[0129]
在一个示例中,第一报文为拥塞通知报文,第二报文为确认字符。
[0130]
在另一个示例中,多个报文为反馈报文。每个反馈报文还用于指示多个数据包中一定数目的数据包到达接收端。一定数目为一个或多个。第一报文携带拥塞反馈标识,第二报文不携带拥塞反馈标识。
[0131]
控制模块403,用于根据多个报文调整拥塞窗口,以将拥塞窗口的值调整到第二值。
[0132]
其中,多个报文中的第一报文,使拥塞窗口的值减小,多个报文中的第二报文,使拥塞窗口的值增加。
[0133]
在一个示例中,多个报文中的一个第一报文,使拥塞窗口的值减小第三值,多个报文中的一个第二报文,使拥塞窗口的值增加第四值,第三值与一个第一报文指示的数据包的数目相关,第四值与一个第二报文指示的数据包的数目相关。
[0134]
在一个示例中,在根据多个报文调整拥塞窗口的方面,控制模块403用于根据多个报文中的一个第一报文,将拥塞窗口的值减小第三值;以及根据多个报文中的一个第二报文,将拥塞窗口的值增加第四值。
[0135]
在一个示例中,在根据多个报文调整拥塞窗口的方面,控制模块403用于根据第一报文的数目,每个第一报文使拥塞窗口的值减小的量,第二报文的数目以及每个第二报文使拥塞窗口的值增加的量,计算出第二值,以及将拥塞窗口的值从第一值调整到第二值。
[0136]
上述第二值为第一值、第一和的相反数与第二和的加和,第一和为多个报文中的每个第一报文对应的第三值相加的和,第二和为多个报文中的每个第二报文对应的第四值相加的和。
[0137]
在一个示例中,第四值还与第一值和增加系数相关。其中增加系数可以是预设的值。
[0138]
本说明书的各个部分均采用递进的方式进行描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点介绍的都是与其他实施例不同之处。尤其,对于装置实施例、设备实施例和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例部分的说明即可。
[0139]
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
技术特征:
1.一种拥塞控制方法,其特征在于,所述拥塞控制方法包括:所述发送端向接收端发送多个数据包;所述发送端接收来自所述接收端的一个或多个第一报文,以及一个或多个第二报文,所述第一报文对应所述多个数据包中一个或多个经历了拥塞的数据包,所述第二报文对应所述多个数据包中一个或多个未经历拥塞的数据包;所述发送端根据接收到的所述第一报文和所述第二报文调整所述发送端的窗口,其中,每个所述第一报文,使所述窗口的值减小,每个所述第二报文,使所述窗口的值增加,所述发送端的窗口用于控制所述发送端的发送速率。2.根据权利要求1所述的方法,其特征在于,所述第一报文使所述窗口减小的值,与所述第一报文对应的数据包的数目正相关。3.根据权利要求1或2所述的方法,其特征在于,在所述多个第一报文中的每个第一报文对应的数据包的数目相同的情况下,每个所述第一报文使所述窗口的值减小的量相等。4.根据权利要求1到3任一权利要求所述的方法,其特征在于,所述第二报文使所述窗口的值增加的值,与所述第二报文对应的数据包的数目正相关。5.根据权利要求1到4任一权利要求所述的方法,其特征在于,所述第二报文使所述窗口的值增加的值,还与所述窗口当前的值,以及增加系数有关,所述窗口当前的值是受所述第二报文调整前,所述窗口的值。6.根据权利要求1到4任一权利要求所述的方法,其特征在于,在所述多个第二报文中的每个第二报文对应的数据包的数目相同的情况下,每个所述第二报文使所述窗口的值增加的量相等。7.根据权利要求1到6任一权利要求所述的方法,其特征在于,在一个所述第二报文对应一个数据包的情况下,所述一个第二报文使所述窗口增加的值,满足如下公式:θ=γ/cwnd1,其中,θ为一个所述第二报文使所述窗口增加的值,γ为增加系数,cwnd1为所述窗口基于所述一个第二报文调整之前的值。8.根据权利要求1到7任一权利要求所述的方法,其特征在于,所述发送端根据所述多个报文调整所述窗口之前,所述窗口的值为第一值,所述发送端根据所述多个报文调整所述窗口,包括:所述发送端根据所述第一报文的数目,每个所述第一报文使所述窗口的值减小的量,所述第二报文的数目以及每个所述第二报文使所述窗口的值增加的量,计算出第二值,所述发送端将所述窗口的值从所述第一值调整到第二值。9.根据权利要求1到7任一权利要求所述的方法,所述发送端根据接收到的所述第一报文和所述第二报文调整所述发送端的窗口,包括:所述发送端每接收到一个所述第一报文,就增加所述窗口的值,每接收到一个所述第二报文,就减小所述窗口的值。10.根据权利要求1到9任一权利要求所述的方法,其特征在于,所述第一报文为拥塞通知报文cnp,所述第二报文为确认字符ack。11.根据权利要求1到9任一权利要求所述的方法,其特征在于,所述第一报文携带拥塞反馈标识,所述第二报文不携带拥塞反馈标识。12.一种拥塞控制装置,其特征在于,包括:
发送模块,用于向接收端发送多个数据包;接收模块,用于接收来自所述接收端的一个或多个第一报文,以及一个或多个第二报文,所述第一报文对应所述多个数据包中一个或多个经历了拥塞的数据包,所述第二报文对应所述多个数据包中一个或多个未经历拥塞的数据包;控制模块,用于根据接收到的所述第一报文和所述第二报文调整所述发送端的窗口,其中,每个所述第一报文,使所述窗口的值减小,每个所述第二报文,使所述窗口的值增加,所述发送端的窗口用于控制所述发送端的发送速率。13.根据权利要求12所述的装置,其特征在于,所述第一报文使所述窗口减小的值,与所述第一报文对应的数据包的数目正相关。14.根据权利要求12或13所述的装置,其特征在于,在所述多个第一报文中的每个第一报文对应的数据包的数目相同的情况下,每个所述第一报文使所述窗口的值减小的量相等。15.根据权利要求12到14任一权利要求所述的装置,其特征在于,所述第二报文使所述窗口的值增加的值,与所述第二报文对应的数据包的数目正相关。16.根据权利要求12到15任一权利要求所述的装置,其特征在于,所述第二报文使所述窗口的值增加的值,还与所述窗口当前的值,以及增加系数有关,所述窗口当前的值是受所述第二报文调整前,所述窗口的值。17.根据权利要求12到15任一权利要求所述的装置,其特征在于,在所述多个第二报文中的每个第二报文对应的数据包的数目相同的情况下,每个所述第二报文使所述窗口的值增加的量相等。18.根据权利要求12到17任一权利要求所述的装置,其特征在于,在一个所述第二报文对应一个数据包的情况下,所述一个第二报文使所述窗口增加的值,满足如下公式:θ=γ/cwnd1,其中,θ为一个所述第二报文使所述窗口增加的值,γ为增加系数,cwnd1为所述窗口基于所述一个第二报文调整之前的值。19.根据权利要求12到18任一权利要求所述的装置,其特征在于,所述发送端根据所述多个报文调整所述窗口之前,所述窗口的值为第一值,所述发送端根据所述多个报文调整所述窗口,包括:所述发送端根据所述第一报文的数目,每个所述第一报文使所述窗口的值减小的量,所述第二报文的数目以及每个所述第二报文使所述窗口的值增加的量,计算出第二值,所述发送端将所述窗口的值从所述第一值调整到第二值。20.根据权利要求12到18任一权利要求所述的装置,所述发送端根据接收到的所述第一报文和所述第二报文调整所述发送端的窗口,包括:所述发送端每接收到一个所述第一报文,就增加所述窗口的值,每接收到一个所述第二报文,就减小所述窗口的值。21.根据权利要求12到20任一权利要求所述的装置,其特征在于,所述第一报文为拥塞通知报文cnp,所述第二报文为确认字符ack。22.根据权利要求12到20任一权利要求所述的装置,其特征在于,所述第一报文携带拥塞反馈标识,所述第二报文不携带拥塞反馈标识。23.一种设备,其特征在于,包括存储介质、处理电路和通信接口;
所述存储介质用于存储可执行程序;所述处理电路用于读取所述存储介质中存储的可执行程序,以在所述通信接口的配合下,执行权利要求1至11任意一项所述的拥塞控制方法。24.一种存储介质,其特征在于,所述存储介质上存储有程序;所述程序被处理电路执行时实现如权利要求1至11任意一项所述的拥塞控制方法。
技术总结
本发明提供了一种拥塞控制方法、装置、设备及存储介质,涉及网络通信领域。拥塞控制方法包括:发送端向接收端发送多个数据包;接收来自所述接收端的一个或多个第一报文,以及一个或多个第二报文,所述第一报文对应所述多个数据包中一个或多个经历了拥塞的数据包,所述第二报文对应所述多个数据包中一个或多个未经历拥塞的数据包;根据接收到的所述第一报文和所述第二报文调整所述发送端的窗口,其中,每个所述第一报文,使所述窗口的值减小,每个所述第二报文,使所述窗口的值增加,利用本发明的技术方案能够减小网络中的丢包,提高网络的稳定性。的稳定性。的稳定性。
技术研发人员:董建波 付斌章 谭焜
受保护的技术使用者:华为技术有限公司
技术研发日:2018.05.04
技术公布日:2022/3/7