1.本技术涉及通信技术领域,特别涉及一种拥塞控制方法、电子设备及可读存储介质。
背景技术:2.随着互联网技术的飞速发展,网络带宽和用户规模呈爆炸式增长,网络数据从最初的文字传输、网页浏览转变为音视频传输、游戏影音等,网络数据日益复杂。
3.网络数据传输过程中,经常会由于网络数据量过大或网络传输带宽限制等原因,导致网络数据发生拥塞,影响网络传输性能。为了解决网络数据拥塞的问题,通常采用瓶颈带宽和往返传播时间(bottleneck bandwidth and round-trip propagation time,bbr)拥塞控制方法,来调整发送端发送的数据量。基于bbr拥塞控制方法,发送端设备通过测量瓶颈带宽和往返传播时延来动态调控网络传输时的拥塞窗口(congestion window,cwnd)以及数据包发送速率(pacing rate)。
4.上述的bbr拥塞控制方法对定时器的精度要求较高,要求定时器精度至少达到微秒级别。然而,手机、平板电脑等很多电子设备无法提供高精度的定时器,导致无法进行拥塞控制。
技术实现要素:5.本技术提供一种拥塞控制方法、电子设备及可读存储介质,由于对定时器精度的要求较低,使得不具备高精度定时器的电子设备也能够支持pacing发送,提高pacing发送方法的适用范围。
6.第一方面,本技术实施例提供一种拥塞控制方法,应用于发送端设备,该方法包括:
7.每次接收到ack包后,确定发送速率;
8.确定第一时刻和第二时刻之间的时间间隔,所述第一时刻和所述第二时刻是相邻两轮发送中每轮发送的初始时刻,所述第二时刻是所述发送端设备接收到所述ack包后首次发送数据包的时刻,所述时间间隔为毫秒级的时间间隔;
9.根据所述时间间隔和所述发送速率,确定数据量;
10.在所述第二时刻根据所述数据量发送数据包。
11.第二方面,本技术实施例提供一种拥塞控制装置,包括:
12.第一确定模块,用于在发送端设备每次接收到ack包后,确定发送速率;
13.第二确定模块,用于确定第一时刻和第二时刻之间的时间间隔,所述第一时刻和所述第二时刻是相邻两轮发送中每轮发送的初始时刻,所述第二时刻是所述发送端设备接收到所述ack包后首次发送数据包的时刻,所述时间间隔为毫秒级的时间间隔;
14.处理模块,用于根据所述时间间隔和所述发送速率,确定数据量;
15.收发模块,用于在所述第二时刻根据所述数据量发送数据包。
16.第三方面,本技术实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时使得所述电子设备实现如上第一方面或第一方面各种可能的实现方式所述的方法。
17.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令在被处理器执行时用于实现如上第一方面或第一方面各种可能的实现方式所述的方法。
18.第五方面,本技术实施例提供一种包含计算程序的计算机程序产品,所述计算机程序被处理器执行时实现如上第一方面或第一方面各种可能的实现方式所述的方法。
19.本技术实施例提供的拥塞控制方法、电子设备及可读存储介质,发送端设备每次接收到ack包后,确定出新的发送速率,根据发送速率和相邻两轮发送的时间间隔确定新的一轮发送中需要发送的数据量。之后,当当前时间到达第二时刻,即新的一轮发送时刻时,按照发送速率匀速根据数据量发送数据包,从而使得这些数据包的发送能够平稳发送。采用该种方案,无需发送端设备支持高精度的定时器,而是只支持毫秒级别的定时器就能够保证数据包的平稳发送,降低发送设备支持平稳发送的成本。而且,相较于突发发送,能够降低网络抖动和丢包,能够减少数据包的排队时间。另外,无需电子设备处理高精度的定时任务,有利于降低电子设备的耗电量,提高电子设备的续航能力。
附图说明
20.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1是本技术实施例提供的拥塞控制方法的网络架构示意图;
22.图2是本技术实施例提供的拥塞控制方法的流程图;
23.图3是本技术实施例提供的拥塞控制方法的另一个流程图;
24.图4是本技术实施例提供的拥塞控制方法中每次发送数据包后的参数设置流程图;
25.图5是本技术实施例提供的拥塞控制方法中发送端设备根据ack确定带宽的流程图;
26.图6是本技术实施例提供的拥塞控制方法中确定发送速率的流程图;
27.图7为本技术实施例提供的一种拥塞控制装置的示意图;
28.图8为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
29.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
30.相较于突发(burst)发送,pacing发送是一种平稳发送。基于pacing发送,一段时间内发送端设备以均匀速率将数据发送给接收端。目前,很多网络传输协议都已支持pacing发送。pacing发送具有如下优点:
31.1、减少突发数据带来的网络抖动和丢包;
32.2、减少数据在中间路由器缓存的排队时间;
33.3、对网络中传输的其他流更加友好。
34.显然,pacing发送能够提高端到端的带宽利用率以及服务质量(quality of service,qos)。
35.通常情况下,pacing发送对定时器的精度要求比较高,比如传输控制协议(transmission control protocol,tcp)的bbr pacing发送要求定时器的精度至少达到微秒级别。因此,该种pacing发送只能用于硬件性能较高的设备,如linux设备,linux设备内核使用高精度的硬件定时器进行pacing发送,定时器的精度为纳秒级别。
36.然而,目前很多设备的硬件性能比较差,无法提供纳秒级别的定时器,导致这些硬件性能比较差的设备无法支持pacing发送。
37.而且,即使一个电子设备能够提供纳秒级别的定时器,由于频繁处理高精度的定时任务对电子设备的电池电量消耗很大,使得该电子设备无法频繁运行高精度的定时器。
38.再者,对于超文本传输协议(hyper text transfer protocol,http)或其他应用层传输协议,调度延迟也会造成无法及时pacing发送。
39.显然,目前的pacing发送方法,由于对定时器精度的要求较高,导致一些定时器精度较低的电子设备无法实现pacing发送。而且,即使一个电子设备支持高精度定时器,由于频繁处理定时器任务对电池电量消耗大,导致目前的pacing发送方法无法频繁运行在具有高精度定时器的设备上。
40.基于此,本技术实施例提供一种拥塞控制方法、电子设备及可读存储介质,由于对定时器精度的要求较低,使得不具备高精度定时器的电子设备也能够支持pacing发送,提高pacing发送方法的适用范围,保证数据包的平稳发送。而且,无需电子设备处理高精度的定时任务,有利于降低电子设备的耗电量,提高电子设备的续航能力。
41.图1是本技术实施例提供的拥塞控制方法的网络架构示意图。请参照图1,该网络架构包括发送端设备11和接收端设备12。发送端设备11和接收端设备12之间建立网络连接。
42.发送端设备11内置低精度的定时器,该定时器的精度例如为毫秒级别等。发送端设备11可以为安装有安卓操作系统、微软操作系统、塞班操作系统、linux操作系统或苹果ios操作系统的手机、平板电脑、个人电脑、电子书阅读器、膝上型便携电脑、台式计算机等。或者,发送端设备11也可以为服务器等。
43.接收端设备12具备计算能力、存储能力等,能够响应发送端设备11。例如,接收端设备12为服务器等。再如,接收端设备12为手机等。
44.本技术实施例中,发送端设备11和接收端设备12是相对的。例如,设备a向设备b发送数据包,则设备a是发送端设备、设备b是接收端设备。当设备b向设备a发送数据时,设备b是发送端设备,设备a是接收端设备。
45.应当理解的是,图1中的发送端设备11和接收端设备12的数量仅仅是示意性的。实际实现中,根据实际需求部署任意数量的发送端设备11和接收端设备12。而且,发送端设备11和接收端设备12之间可以存在多个网络节点。
46.下面,基于图1所示网络架构,对本技术实施例提供的拥塞控制方法进行详细说
明。示例性的,请参照图2。图2是本技术实施例提供的拥塞控制方法的流程图。本实施例是从发送端设备的角度说明,本实施例包括:
47.201、每次接收到ack包后,确定发送速率。
48.本技术实施例中,发送端设备按批次向接收端设备发送数据包。一个批次也称之为一轮,一个批次需要发送的数据包有多个,一轮发送中,发送端设备根据确定出的发送速率(pacing速率)发送数据包。例如,一轮发送10个数据包,则发送端设备按照pacing速率匀速的向接收端设备发送这10个数据包。
49.从发送端设备的角度,一个数据包被发送出去后,可能有三种状态:
50.第一种、预设时长内发送端设备接收到接收端设备回复的确认应答(acknowledge,ack)包,这种数据包称之为已确认或已送达的数据包,或者也称之为正确包。
51.第二种、预设时长后,接收端设备没有接收到ack包,则发生丢包。
52.第三种、预设时长内,发送端设备还没有接收到ack包,则这种数据包称之为飞行(in flight)数据。
53.另外,本技术实施例中,一个ack包指示至少一个数据包被正确接收。例如,一轮发送中,发送端设备发送了10个数据包,即数据包1~数据包10。发送这10个数据包的过程中未接收到ack包。发送数据包10之后,接收到一个ack包,ack包用于指示已经被接收端正确接收的数据包。
54.若ack包指示数据包1~数据包10均被接收,则表示飞行数据为0。
55.若ack包指示数据包1~数据包5被接收,则表示存在飞行数据,飞行数据为数据包6-数据包10。
56.又如,第1轮发送中,发送端设备发送了数据包1~数据包10,第2轮发送中,发送端设备发送了数据包11~数据包15。发送数据包11的时候,发送端设备接收到ack包a,该ack包a指示接收端设备正确接收数据包1~数据包5。发送数据包15之后,发送端设备接收到ack包b,该ack包b指示接收端设备正确接收数据包6~数据包12。
57.发送端设备每次接收到ack后,重新确定发送速率。
58.202、确定第一时刻和第二时刻之间的时间间隔,所述第一时刻和所述第二时刻是相邻两轮发送中每轮发送的初始时刻,所述第二时刻是所述发送端设备接收到所述ack包后首次发送数据包的时刻,所述时间间隔为毫秒级的时间间隔。
59.示例性的,相邻两轮发送之间存在一个时间间隔,该时间间隔和ack包的接收处理没有必然联系。假设相邻两轮发送分别为第一轮和第二轮,则第一轮发送数据包的初始时刻为第一时刻,第二轮发送数据包的初始时刻为第二时刻,第一时刻和第二时刻之间一个时间间隔。这个时间间隔可以是一个毫秒级别的时间间隔。例如,第一时刻为11:00,时间间隔为30毫秒,则下次发送数据包的时间,即第二时刻为11:00:00:30。其中,时间间隔可表示为pacing_interval。
60.203、根据所述时间间隔和所述发送速率,确定数据量。
61.例如,发送端设备根据时间间隔和发送速率的乘积确定数据量。这个数据量就是下一轮发送数据包的数量。
62.再如,发送端设备考虑当前网络状况,针对不同的网络状况设置一些系数,根据系
数、时间间隔和发送速率等确定数据量。
63.由于时间间隔是一个毫秒级的时间间隔,因此,根据时间间隔和发送速率确定出的数据量,能够使得具有毫秒级定时器的发送端设备按时发送。
64.204、在所述第二时刻根据所述数据量发送数据包。
65.发送端设备确定好时间间隔后,根据时间间隔倒计时,倒计时结束时,表示当前时刻为第二时刻。此时,发送端设备在第二时刻开始新的一轮的数据包的发送。
66.本技术实施例提供的拥塞控制方法,发送端设备每次接收到ack包后,确定出新的发送速率,根据发送速率和相邻两轮发送的时间间隔确定新的一轮发送中需要发送的数据量。之后,当当前时间到达第二时刻,即新的一轮发送时刻时,按照发送速率匀速根据数据量发送数据包,从而使得这些数据包的发送能够平稳发送。采用该种方案,无需发送端设备支持高精度的定时器,而是只支持毫秒级别的定时器就能够保证数据包的平稳发送,降低发送设备支持平稳发送的成本。而且,相较于突发发送,能够降低网络抖动和丢包,能够减少数据包的排队时间。另外,无需电子设备处理高精度的定时任务,有利于降低电子设备的耗电量,提高电子设备的续航能力。
67.可选的,上述实施例中,发送端设备确定第一时刻和第二时刻之间的时间间隔的过程中,首先,根据ack包更新网络状态参数。之后,根据更新后的网络状态参数确定时间间隔。其中,网络状态参数包括带宽、拥塞窗口、往返时间(round-trip time,rtt)、丢包率等。
68.本技术实施例中,更新后的网络状态参数在一定程度上反应出当前的网络状态。发送端设备可根据一个或多个网络状态参数确定时间间隔。
69.例如,更新后的网络状态参数包括带宽(band width,bw),最大报文段长度(maximum segment size,mss)已知,则发送端设备根据带宽和mss确定出每秒发包量(packet per second,pps)。之后,根据pps确定出一个时间间隔。例如,bw=200kbps,mss=1400,则pps=bw/mss=146。发送端设备预先存储一个映射表,该映射表中存储pps和时间间隔的对应关系。发送端设备根据pps查表可知:时间间隔为10毫秒。
70.再如,更新后的网络状态参数包括rtt,若rtt比较大,则增大时间间隔;若rtt比较小,则减小时间间隔。
71.又如,更新后的网络状态参数包括丢包率,若丢包率比较大,则增大时间间隔,若丢包率比较小,则降低时间间隔。
72.又如,更新后的网络状态参数包括rtt和带宽,若rtt和带宽都比较大,则减小时间间隔;若rtt和带宽都比较小,则增大时间间隔。
73.虽然上述几个例子中,发送端设备根据带宽、rtt或丢包率中的一个或两个网络状态参数确定时间间隔。然而,本技术实施例并不限制,其他可行的实现方式中,发送端设备可以根据三个或更多网络状态参数确定时间间隔。
74.采用该种方案,发送端设备根据更新后的网络状态参数确定时间间隔,进而确定下一次发送数据包的时间,准确率高、速度快。
75.可选的,上述实施例中,发送端设备在第二时刻根据数据量发送数据包的过程中,首先,根据所述ack包确定拥塞窗口的大小。之后,确定飞行数据量是否小于拥塞窗口,飞行数据量是发送端设备接收到所述ack包后,确定出的飞行数据量。若飞行数据量小于所述拥塞窗口,则根据所述超时间隔设置定时器。之后,当所述定时器超时时,根据所述数据量发
送数据包。
76.示例性的,发送端设备每次接收到ack包后,都要更新网络状态参数,根据更新后的网络状态参数确定出一个发送速率,根据时间间隔设置一个定时器,根据发送速率和时间间隔计算出一个数据量。同时,发送端设备确定处理ack包后飞行数据量是否小于更新后的拥塞窗口。若飞行数据量小于拥塞窗口,则表示网络不拥塞,还能够发送数据。因此,定时器超时后发送端设备根据数据量发送数据包。若飞行数据量大于或等于拥塞窗口,说明网络拥塞,不能再发送数据了。因此,即使定时器超时也不发送数据包。
77.采用该种方案,发送端设备每次根据时间间隔启动定时器时,都需要判断网络是否拥塞。只有在网络不拥塞的情况下,当定时器超时时发送数据包,能够有效避免网络拥塞,保证网络质量。
78.图3是本技术实施例提供的拥塞控制方法的另一个流程图。本实施例包括:
79.301、发送端设备接收ack包。
80.302、发送端设备根据ack包更新网络状态参数。
81.网络状态参数包括带宽、cwnd、rtt等。
82.303、发送端设备根据更新后的网络状态参数确定发送速率。
83.304、发送端设备确定第一时刻和第二时刻之间的时间间隔。
84.其中,所述第一时刻和所述第二时刻是相邻两轮发送中每轮发送的初始时刻,所述第二时刻是所述发送端设备接收到所述ack包后首次发送数据包的时刻,所述时间间隔为毫秒级的时间间隔。
85.305、根据时间间隔和发送速率确定数据量。
86.306、发送端设备确定处理ack包后的飞行数据量是否小于拥塞窗口,若飞行数据量小于拥塞窗口,则执行步骤306;若第一飞行数据量大于或等于拥塞窗口,则结束。
87.其中,拥塞窗口是发送端设备接收到ack包后,根据ack包更新后的拥塞窗口。
88.307、根据时间间隔设置定时器。
89.308、定时器超时时,根据数据量发送数据包。其中,定时器超时的时刻即为第二时刻。
90.例如,第一时刻为11:00,发送端设备处理ack包后确定出飞行数据量小于cwnd,若时间间隔为30毫秒,即第二时刻为11:00:00:30毫秒,则发送端设备在第一时刻启动一个30毫秒的定时器,定时器超时后,即第二时刻时,发送数据包。
91.可选的,上述实施例中,发送端设备在第二时刻根据所述数据量发送数据包之后,每次发送数据包之后,都要进行时间戳等参数的设置。示例性的,请参照图4。
92.图4是本技术实施例提供的拥塞控制方法中每次发送数据包后的参数设置流程图。本实施例包括:
93.401、发送端设备在第二时刻发送一个数据包p。
94.发送端设备根据发送速率和时间间隔确定出数据量。定时器超时后,即第二时刻时,发送端设备根据数据量发送数据包。假设数据量为10,则需要发送10个数据包,数据包p是10个数据包中的任意一个数据包。
95.402、发送端设备判断第二时刻之前飞行数据量是否为0,若飞行数据量为0,则执行步骤403;若飞行数据量不为0,则执行步骤404。
96.示例性的,发送端设备每次发送数据包p后,判断发送数据包p之前,即第二时刻之前飞行数据量是否为0。
97.本技术实施例中,飞行数据量用一个变量表示,该变量例如为inflight。不同时刻inflight的值不同。总的来说,随着数据传输的进行,发送端设备发送完数据包后,inflight值会增大。发送端设备处理完ack后,inflight值会减小。发送端设备判断丢包后,inflight值也会减小。
98.403、将全局基准发送时间和全局基准ack时间设置为所述数据包的发送时间。之后,执行步骤404。
99.示例性的,假设数据包p的发送时间为p.sent.time,全局基准发送时间为cn.first_tx_time,全局基准ack时间cn.delievered_time,则cn.first_tx_time=p.sent.time,cn.delievered_time=p.sent.time。
100.例如,数据包p的发送时间p.sent.time为11点,则cn.first_tx_time=p.sent.time=11点,cn.delievered_time=p.sent.time=11点。
101.404、针对每个数据包p,设置数据包p的基准发送时间和数据包p的基准ack时间。
102.数据包p的基准发送时间p.first_tx_time=cn.first_tx_time;
103.数据包p的基准ack时间p.delievered_time=cn.delievered_time。
104.继续沿用上述的例子,由于全局基准发送时间cn.first_tx_time为11点,全局基准ack时间cn.delievered_time也为11点,则数据包p的基准发送时间p.first_tx_time=cn.first_tx_time=11点,数据包p的基准ack时间p.delievered_time=cn.delievered_time=11点。
105.对于每一个数据包p而言,其具有数据包p的基准发送时间和数据包p的基准ack时间,这些时间统称为数据包p的时间戳。发送端设备记录每个数据包p的时间戳,发送端设备在第二时刻接收到ack包后,根据ack包确定出已被接收端设备正确接收的正确包,根据正确包的时间戳就能够确定出正确包对应的轮次,即正确包是发送端设备在哪轮发送中发送的数据包。
106.本技术实施例中,从发送端设备的角度而言,数据包的发送和ack包的处理是串行的。传输模式包括如下两种:
107.第一种传输模式:每轮发送时,第二飞行数据量为0。
108.例如,第一轮发送中,发送端设备依次进行如下2个步骤:
109.步骤a、发送数据包1~数据包10;
110.步骤b、接收并处理ack包,该ack包指示接收端设备正确接收数据包1~数据包10;
111.第二轮发送中,发送端设备依次执行如下2个步骤:
112.步骤c、发送数据包11~20;
113.步骤d、接收并处理ack包,该ack包指示接收端设备正确接收数据包11~数据包20;
114.第三轮以及后续发送中,每轮发送前,第二飞行数据量均为0,即inflight=0,不存在飞行数据。
115.第二种传输模式:从第二轮开始,存在第二飞行数据量不为0的情况。
116.例如,第一轮发送中,发送端设备依次执行如下2个步骤:
117.步骤e、发送数据包1~数据包10;
118.步骤f、接收并处理ack包,该ack包指示接收端设备正确接收数据包1~数据包5;
119.第二轮发送中,发送端设备依次执行如下2个步骤:
120.步骤e、发送数据包11~数据包15;
121.步骤f、接收并处理ack包,该ack包指示接收端设备正确接收数据包6~数据包13;
122.显然,从第二轮开始,第二飞行数据量不为0,之后的多轮,也可能出现第二飞行数据量为0或不为0的情况。
123.第二种传输模式下,ack包指示的正确包包括所述发送端设备在所述第一时刻对应的轮次发送的部分数据包。由于第一种传输模式是理想模式,而第二种传输模式才是普遍模式。因此,能够确保本技术实施例提供的拥塞控制方法的普适性。
124.每次发送数据包后,发送端设备根据发送数据包之前的第二飞行数据量,设置一些时间戳,如全局基准发送时间、全局基准ack时间、数据包p的基准发送时间、数据包p的基准ack时间等。这样一来,发送端设备接收到ack包后,就能够确定一个数据包p是在哪轮发送的。进一步的,发送端设备处理ack包的时候基于该轮来计算采样带宽。
125.采用该种方案,发送端设备每次发送数据包p后,都会设置一些参数,便于确定ack包指示的正确包的轮次,进而便于后续准确计算出带宽。
126.可选的,上述实施例中,发送端设备每次接收到ack包后,确定发送速率的过程中,根据所述ack包确定正确包,所述正确包为所述ack包指示的、已被接收端设备正确接收的数据包,所述正确包至少为一个。之后,根据正确包括确定带宽,进而根据带宽确定发送速率。
127.示例性的,一个ack包指示接收端设备正确接收的一个或多个数据包。例如,一轮发送中,发送端设备发送数据包1~数据包10,之后,接收到一个ack包,发送端设备根据该ack包确定出接收端设备正确接收数据包1~数据包5。
128.发送端设备根据ack包确定出已经被接收端设备正确接收的数据包后,将这些数据包作为正确包。对于每一个正确包,发送端设备根据该正确包更新传输信息。传输信息包括但不限于速率样本参数、全局基准发送时间(cn.first_tx_time)、全局基准ack时间(cn.delievered_time)等,速率样本参数包括样本大小(rs.prior_delivered_size)、样本时间(rs.prior_delivered_tome)等。
129.发送端设备更新传输信息后,根据更新后的传输信息确定出带宽,进而根据带宽就能确定出发送速率。
130.采用该种方案,发送端设备每次接收到ack后,更新带宽,进而实现准确确定出发送速率的目的。
131.图5是本技术实施例提供的拥塞控制方法中发送端设备根据ack确定带宽的流程图。本实施例包括:
132.501、发送端设备接收到ack包,初始化速率样本参数。
133.速率样本(rate sample)参数包括样本大小(rs.prior_delivered_size)、样本时间(rs.prior_delivered_time)。初始化后,样本大小(rs.prior_delivered_size)为0,样本时间(rs.prior_delivered_time)为0。
134.502、根据每个正确包,更新传输参数。
135.发送端设备能够根据ack包确定出接收端设备正确接收的数据包,这些数据包称之为正确包。例如,发送端设备发送了数据包1~数据包10,发送数据包10之后接收到ack包,发送端设备根据该ack包确定出已被接收端设备正确接收的数据包包括包括数据包1~数据包5,则这5个数据包是正确包。
136.针对每个正确包,发送端设备更新传输参数的过程包括步骤5021、步骤5022、步骤5023。
137.5021、更新全局已确认数据量。
138.全局已确认数据量cn.delievered_size=cn.delievered_size+p.data_size。
139.继续沿用上述的例子,接收到ack包之前,全局已确认数据量cn.delievered_size=0,发送端设备接收到ack包之后,全局已确认数据量cn.delievered_size=cn.delievered_size+1=1。显然,由于发送端设备根据ack包确定出接收端设备已正确接收数据包1~数据包5,因此,发送端设备对该5个数据包中的每个数据包都执行步骤5021~步骤5023后,全局已确认数据量cn.delievered_size=5。
140.5022、发送端设备判断发送数据包p时全局已确认数据量(p.delivered_size)是否大于样本大小(rs.prior_delivered_size),若p.delivered_size>rs.prior_delivered_size,则执行步骤5023,若p.delivered_size≤rs.prior_delivered_size,则执行步骤503。
141.示例性的,p.delivered_size表示发送数据包p的时候全局已确认数据量。
142.5023、发送端设备更新本轮传输信息。
143.传输信息的更新包括:
144.a、样本大小rs.prior_delivered_size=p.delivered_size;
145.b、样本时间rs.prior_delivered_tome=p.delivered_time;
146.c、全局基准发送时间cn.first_tx_time=p.sent_time;
147.d、全局基准ack时间cn.delievered_time=now,now表示当前时间;
148.e、发送间隔时长send_interval=全局基准发送时间cn.first_tx_time-数据包p的基准发送时间p.first_tx_time;
149.f、ack间隔时长ack_interval=全局基准ack时间cn.delievered_time-样本时间rs.prior_delivered_time。
150.503、发送端设备判断是否还存在未处理的正确包,如存在未处理的正确包,则返回步骤5021,若不存在未正确处理的正确包,则执行步骤504。
151.示例性的,对于每个正确包,比如,一个ack包表示数据包1~数据包5倍正确接收,则发送端设备对这个5个正确包中的每个包都执行上述的步骤5021~步骤5023。
152.504、发送端设备判断样本大小(rs.prior_delivered_size)是否大于0,若样本大小(rs.prior_delivered_size)大于0,则执行步骤505;若样本大小(rs.prior_delivered_size)小于或等于0,则结束。
153.505、发送端设备计算带宽。
154.具体确定过程如下:
155.首先,发送端设备计算本轮已确认的数据量rs.delivered_size。
156.示例性的,rs.delivered_size=全局已确认数据量cn.delievered_size-样本大
小(rs.prior_delivered_size)。
157.接着,发送端设备确定采样间隔rs.interval。
158.采样间隔rs.interval=max(发送间隔时长send_interval,ack间隔时长ack_interval)
159.最后,发送端设备确定带宽rs.bw_sample。
160.带宽rs.bw_sample=本轮已确认的数据量rs.delivered_size/采样间隔rs.interval。
161.采用该种方案,发送端设备根据本轮已确认的数据量和采样间隔确定带宽,实现准确确定出带宽的目的。
162.图6是本技术实施例提供的拥塞控制方法中确定发送速率的流程图。本实施例包括:
163.601、发送端设备确定是否存在带宽,若存在带宽,则执行步骤602;若不存在带宽,则执行步骤603。
164.示例性,发送端设备每次接收到ack包后,确定是否可根据ack包计算出的带宽。
165.本技术实施例适用于所有使用pacing技术的无线通信系统,传输协议可以替换成使用pacing的tcp协议,网络可以替换成通用移动通信系统(universal mobiletelecommunications system,umts)、高速下行链路分组接入(high speed downlinkpackage access,hsdpa)、无线局域网(wireless local area network,wlan)等。传输协议可以采用不同的拥塞控制算法。例如,对于linux tcp协议,若采用bbr算法,则会计算带宽。若采用cubic算法,则不会计算带宽。
166.602、发送端设备根据带宽确定发送速率。
167.例如,发送速率(pacing rate)=bw
×
gain。其中,bw例如为采用上述图5所示方案确定出的带宽,是当前测量并估计出的带宽。gain标识发送速率增益。
168.603、发送端设备根据拥塞窗口cwnd、最大报文段长度mss、经过平滑处理的连接rtt或发送速率增益中的至少一个确定所述发送速率。
169.例如,发送速率(pacing rate)=(cwnd
×
mss/srtt)
×
gain。其中,cwnd表示发送端设备接收ack包,处理ack包得到的拥塞窗口,mss表示最大报文段长度(maximum segment size),srtt表示经过平滑处理的连接rtt,gain表示发送速率增益。
170.采用该种方式,当发送端设备无法根据ack包确定出带宽时,根据其他参数确定发送速率,灵活性高,准确率高。
171.下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
172.图7为本技术实施例提供的一种拥塞控制装置的示意图。该拥塞控制装置700包括:第一确定模块71、第二确定模块72、处理模块73和收发模块74。
173.第一确定模块71,用于在发送端设备每次接收到ack包后,确定发送速率;
174.第二确定模块72,用于确定第一时刻和第二时刻之间的时间间隔,所述第一时刻和所述第二时刻是相邻两轮发送中每轮发送的初始时刻,所述第二时刻是所述发送端设备接收到所述ack包后首次发送数据包的时刻,所述时间间隔为毫秒级的时间间隔;
175.处理模块73,用于根据所述时间间隔和所述发送速率,确定数据量;
176.收发模块74,用于在所述第二时刻根据所述数据量发送数据包。
177.一种可行的实现方式中,所述第二确定模块72,用于根据所述ack包更新网络状态参数,所述网络状态参数包括下述参数中的至少一个:带宽、拥塞窗口cwnd、往返时间rtt、丢包率;根据所述网络状态参数确定所述时间间隔。
178.一种可行的实现方式中,所述处理模块73,还用于根据所述ack包确定拥塞窗口的大小;若飞行数据量小于所述拥塞窗口,则根据所述时间间隔设置定时器,所述飞行数据量是所述发送端设备处理所述ack包后的飞行数据量;
179.所述收发模块74,用于当所述定时器超时时,根据所述数据量发送数据包。
180.一种可行的实现方式中,所述处理模块73在所述收发模块74在所述第二时刻根据所述数据量发送数据包之后,还用于针对所述第二时刻起发送的每一个数据包,记录时间戳,所述时间戳用于所述发送端设备确定所述第二时刻之后接收到ack包指示的数据包的轮次。
181.一种可行的实现方式中,所述第一确定模块71,用于在所述收发模块74每次接收到ack包后,根据所述ack包确定正确包,所述正确包为所述ack包指示的、已被接收端设备正确接收的数据包,所述正确包至少为一个;根据各所述正确包,确定带宽;根据所述带宽,确定所述发送速率。
182.一种可行的实现方式中,所述第一确定模块71根据各所述正确包,确定带宽时,用于根据各所述正确包,确定所述正确包所属的轮次;确定所述正确包所属的轮次已确认的数包的数量和采样间隔;根据所述已确认的数据包的数量和所述采样间隔,确定所述带宽。
183.一种可行的实现方式中,所述第一确定模块71,还用于当无法确定出所述带宽时,根据拥塞窗口cwnd、最大报文段长度mss、经过平滑处理的连接rtt或发送速率增益中的至少一个确定所述发送速率。
184.一种可行的实现方式中,所述ack包指示的正确包包括所述发送端设备在所述第一时刻对应的轮次发送的部分数据包。
185.本技术实施例提供的拥塞控制装置,可以执行上述实施例中发送端设备的动作,其实现原理和技术效果类似,在此不再赘述。
186.图8为本技术实施例提供的一种电子设备的结构示意图。如图8所示,该电子设备800例如为上述的发送端设备,该电子设备800包括:
187.处理器81和存储器82;
188.所述存储器82存储计算机指令;
189.所述处理器81执行所述存储器82存储的计算机指令,使得所述处理器81执行如上发送端设备实施的拥塞控制方法。
190.处理器81的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
191.可选地,该电子设备800还包括通信部件83。其中,处理器81、存储器82以及通信部件83可以通过总线84连接。
192.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如发送端设备实施的拥塞控制方法。
193.本技术实施例还提供一种计算机程序产品,该计算机程序产品包含计算机程序,计算机程序被处理器执行时实现如上发送端设备实施的拥塞控制方法。
194.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。
195.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。
技术特征:1.一种拥塞控制方法,其特征在于,应用于发送端设备,所述方法包括:每次接收到ack包后,确定发送速率;确定第一时刻和第二时刻之间的时间间隔,所述第一时刻和所述第二时刻是相邻两轮发送中每轮发送的初始时刻,所述第二时刻是所述发送端设备接收到所述ack包后首次发送数据包的时刻,所述时间间隔为毫秒级的时间间隔;根据所述时间间隔和所述发送速率,确定数据量;在所述第二时刻根据所述数据量发送数据包。2.根据权利要求1所述的方法,其特征在于,所述确定第一时刻和第二时刻之间的时间间隔,包括:根据所述ack包更新网络状态参数,所述网络状态参数包括下述参数中的至少一个:带宽、拥塞窗口cwnd、往返时间rtt、丢包率;根据所述网络状态参数确定所述时间间隔。3.根据权利要求1所述的方法,其特征在于,所述在所述第二时刻根据所述数据量发送数据包,包括:根据所述ack包确定拥塞窗口的大小;若飞行数据量小于所述拥塞窗口,则根据所述时间间隔设置定时器,所述飞行数据量是所述发送端设备处理所述ack包后的飞行数据量;当所述定时器超时时,根据所述数据量发送数据包。4.根据权利要求1-3任一项所述的方法,其特征在于,所述在所述第二时刻根据所述数据量发送数据包之后,还包括:针对所述第二时刻起发送的每一个数据包,记录时间戳,所述时间戳用于所述发送端设备确定所述第二时刻之后接收到ack包指示的数据包的轮次。5.根据权利要求1-3任一项所述的方法,其特征在于,所述每次接收到ack包后,确定发送速率,包括:每次接收到ack包后,根据所述ack包确定正确包,所述正确包为所述ack包指示的、已被接收端设备正确接收的数据包,所述正确包至少为一个;根据各所述正确包,确定带宽;根据所述带宽,确定所述发送速率。6.根据权利要求5所述的方法,其特征在于,所述根据各所述正确包,确定带宽,包括:根据各所述正确包,确定所述正确包所属的轮次;确定所述正确包所属的轮次已确认的数包的数量和采样间隔;根据所述已确认的数据包的数量和所述采样间隔,确定所述带宽。7.根据权利要求5所述的方法,其特征在于,还包括:当无法确定出所述带宽时,根据拥塞窗口cwnd、最大报文段长度mss、经过平滑处理的连接rtt或发送速率增益中的至少一个确定所述发送速率。8.根据权利要求1-3任一项所述的方法,其特征在于,所述ack包指示的正确包包括所述发送端设备在所述第一时刻对应的轮次发送的部分数据包。9.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运
行的计算机程序,其特征在于,所述处理器执行所述计算机程序时使得所述电子设备实现如权利要求1至8任一所述的方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一所述的方法。
技术总结本申请公开了一种拥塞控制方法、电子设备及可读存储介质,发送端设备每次接收到ACK包后,确定出新的发送速率,根据发送速率和相邻两轮发送的时间间隔确定新的一轮发送中需要发送的数据量。之后,当当前时间到达第二时刻,按照发送速率匀速根据数据量发送数据包,从而使得这些数据包的发送能够平稳发送。采用该种方案,无需发送端设备支持高精度的定时器,而是只支持毫秒级别的定时器就能够保证数据包的平稳发送,降低发送设备支持平稳发送的成本。而且,相较于突发发送,能够降低网络抖动和丢包,能够减少数据包的排队时间。另外,无需电子设备处理高精度的定时任务,有利于降低电子设备的耗电量,提高电子设备的续航能力。提高电子设备的续航能力。提高电子设备的续航能力。
技术研发人员:陈伟龙 陈文生
受保护的技术使用者:网宿科技股份有限公司
技术研发日:2022.06.21
技术公布日:2022/11/1