CN114285803A - 拥塞控制方法和装置 - Google Patents
拥塞控制方法和装置 Download PDFInfo
- Publication number
- CN114285803A CN114285803A CN202010988470.9A CN202010988470A CN114285803A CN 114285803 A CN114285803 A CN 114285803A CN 202010988470 A CN202010988470 A CN 202010988470A CN 114285803 A CN114285803 A CN 114285803A
- Authority
- CN
- China
- Prior art keywords
- message
- sending
- scheduling
- flow
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 128
- 230000011664 signaling Effects 0.000 claims abstract description 224
- 238000013475 authorization Methods 0.000 claims description 88
- 230000005540 biological transmission Effects 0.000 claims description 58
- 238000004891 communication Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 9
- 230000000875 corresponding effect Effects 0.000 description 83
- 238000012545 processing Methods 0.000 description 39
- 230000008569 process Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 239000000243 solution Substances 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000007788 liquid Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000033764 rhythmic process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/80—Actions related to the user profile or the type of traffic
- H04L47/801—Real time traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/78—Architectures of resource allocation
- H04L47/781—Centralised allocation of resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/82—Miscellaneous aspects
- H04L47/826—Involving periods of time
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
Abstract
本申请公开了拥塞控制方法和装置。本申请中,发送设备生成第一流的无调度数据报文后,若根据所有流所共享的无调度报文发送窗口判定该无调度数据报文满足发送条件,则判断是否请求为该无调度报文发送窗口和第一流对应的有调度报文发送窗口中的至少一个增加配额;若判定为需要,则在该无调度数据报文中设置指示信息,并向接收设备发送设置有该指示信息的无调度数据报文,该指示信息用于指示接收设备发送信令报文以触发发送设备为无调度报文发送窗口和第一流对应的有调度报文发送窗口中的至少一个增加配额。采用本申请可降低网络时延。
Description
技术领域
本申请涉及通信技术领域,尤其涉及拥塞控制方法和装置。
背景技术
数据中心(data center,DC)用于安置计算机系统及相关配套设备(例如通信网络和存储系统)的设施。它一般包含冗余的数据通信连接、环境控制设备、监控设备以及各种安全装置。这些设备通常放置于具有相同环境条件的同一个物理位置,以便于安全管理和资源维护。连接数据中心内部计算机服务器和存储资源的通信系统称为数据中心网络(data center network,DCN),数据中心网络通常要求较高的网络带宽以及较低的基础网络传播时延。
数据中心承载高性能大数据量计算业务,要求亚us级低时延性能,亚us级低时延要求将队列维持在浅积压或无积压的状态,即平均队列深度极低。随着数据中心网络走向超大规模,网络节点数量可达到万级甚至十万级。节点规模、带宽、交换容量增大,聚播和突发数据量随之增大,对传输时延提出了更高要求。
在云存储等业务中,由于操作的高并发特性,数据中心网络会同时存在大量并发流,容易造成网络拥塞。网络拥塞会引入额外延时,造成报文的传输时延高、吞吐率低及资源的大量耗费。
因此,如何降低网络传输时延,是目前数据中心网络亟待解决的技术问题。
发明内容
本申请实施例提供一种拥塞控制方法和装置,用以降低网络传输时延,进而提升网络性能。
第一方面,提供一种拥塞控制方法,包括:
发送设备生成待发送的第一流的无调度数据报文;
若所述发送设备根据所有流所共享的无调度报文发送窗口判定所述无调度数据报文满足发送条件,则判断是否请求为所述无调度报文发送窗口和所述第一流对应的有调度报文发送窗口中的至少一个增加配额,所述第一流对应的有调度报文发送窗口用于判断所述第一流的有调度数据报文是否满足发送条件;
若判定需要请求为所述无调度报文发送窗口和所述第一流对应的有调度报文发送窗口中的至少一个增加配额,则在所述无调度数据报文中设置指示信息,并向接收设备发送设置有所述指示信息的无调度数据报文,所述指示信息用于指示所述接收设备发送信令报文以触发所述发送设备为所述无调度报文发送窗口和所述第一流对应的有调度报文发送窗口中的至少一个增加配额。
上述实施例中,一方面,为所有流设置共享的无调度报文发送窗口,并根据该无调度报文发送窗口来判断任意一个流的无调度数据报文是否满足发送条件,可以实现基于发送端的驱动对所有流的无调度数据报文进行拥塞控制;另一方面,在判定满足发送条件的情况下,进一步判断是否请求为无调度报文发送窗口和第一流对应的有调度报文发送窗口中的至少一个增加配额,并在判定为是的情况下,在该无调度数据报文中设置指示信息,以使得接收设备发送信令报文从而触发发送设备为无调度报文发送窗口和第一流对应的有调度报文发送窗口中的至少一个增加配额,从而在基于发送端驱动的拥塞控制过程中,利用无调度数据报文中设置的指示信息,使得接收设备能够感知发送设备需要的带宽,从而可以在利用无调度数据报文进行数据传输的同时实现拥塞控制,进而可以降低网络传输时延,提高网络吞吐量。
在一种可能的实现方式中,所述判断是否请求为所述无调度报文发送窗口和所述第一流对应的有调度报文发送窗口中的至少一个增加配额,包括:
若第一计数器的计数值达到设定阈值,则判定需要请求为所述无调度报文发送窗口增加配额,其中,所述第一计数器用于统计所有流的无调度数据报文累积发送的数据量,并当判断需要请求为所述无调度报文发送窗口增加配额后清零;
若第二计数器的计数值达到设定阈值,且所述第一流在一个往返时延后仍有数据需要发送,则判定需要请求为所述第一流对应的有调度报文发送窗口增加配额,其中,所述第二计数器用于统计所述第一流的数据报文累积发送的数据量,并当判定需要请求为所述第一流对应的有调度报文发送窗口增加配额后清零。
上述实施例中,用于统计所有流的无调度数据报文发送的数据量的第一计数器的计数值达到设定阈值时,请求为无调度报文发送窗口增加配额,可以及时为无调度数据报文的发送增加配额,以保证无调度数据报文的传输;当用于统计某个流的数据报文发送的数据量的第二计数器的计数值达到设定阈值且该流在一个往返时延后仍有数据需要发送时,请求为该流对应的有调度报文发送窗口增加配额,可以根据有调度数据报文的传输需求及时为有调度数据报文的发送增加配额,以保证有调度数据报文的传输。
在一些可能的实现方式中,还包括:所述发送设备接收所述接收设备发送的信令报文,根据所述信令报文为所述无调度报文发送窗口和所述第一流对应的有调度报文发送窗口中的至少一个增加配额;其中,增加的配额等于与所述设定阈值相应大小的数据量。
上述实施例中,将为无调度报文发送窗口增加的配额大小设置为等于所述设定阈值相应大小的数据量,可以在发送设备发送一定数据量的无调度数据报文后,将无调度报文发送窗口的大小增加相应的数据量,从而保证无调度数据报文的发送的同时,实现拥塞控制以避免缓存队列积压。将为有调度报文发送窗口增加的配额大小设置为等于所述设定阈值相应大小的数据量,可以为第一流的有调度数据报文的传输提前申请配额,以保证有调度数据报文的传输的同时实现拥塞控制以避免缓存队列积压。
在一些可能的实现方式中,还包括:当所述第一计数器的计数值达到设定阈值时,将所述无调度报文发送窗口减小与所述设定阈值相应大小的配额;当所述第二计数器的计数值达到设定阈值时,将所述第一流对应的有调度报文发送窗口减小与所述设定阈值相应大小的配额。
在一种可能的实现方式中,所述在所述无调度数据报文中设置指示信息,包括:
若判定需要请求为所述无调度报文发送窗口增加配额,则在所述无调度数据报文中设置第一指示信息,所述第一指示信息用于指示所述接收设备发送债务信令报文,所述债务信令报文用于触发所述发送设备为所述无调度报文发送窗口增加配额;
若判定需要请求为所述第一流对应的有调度报文发送窗口增加配额,则在所述无调度数据报文中设置第二指示信息,所述第二指示信息用于指示所述接收设备发送授权信令报文,所述授权信令报文用于触发所述发送设备为所述第一流对应的无调度报文发送窗口增加配额。
上述实施例中,当判定需要请求为无调度报文发送窗口增加配额时,在无调度数据报文中设置第一指示信息,以使得接收设备根据第一指示信息发送债务信令报文,从而可以触发发送设备为无调度报文发送窗口增加配额;当判定需要请求为有调度报文发送窗口增加配额时,在无调度数据报文中设置第二指示信息,以使得接收设备根据第二指示信息发送授权信令报文,从而可以触发发送设备为有调度报文发送窗口增加配额。
在一种可能的实现方式中,还包括:所述发送设备接收所述债务信令报文,并根据所述债务信令报文为所述无调度报文发送窗口增加配额;和/或,所述发送设备接收所述授权信令报文,所述授权信令报文携带所述第一流的指示信息,所述发送设备根据所述授权信令报文为所述第一流对应的有调度报文发送窗口增加配额。
在一种可能的实现方式中,还包括:
所述发送设备生成待发送的所述第一流的有调度数据报文;
若所述发送设备根据所述第一流对应的有调度报文发送窗口判定所述有调度数据报文满足发送条件,则判断是否请求为所述第一流对应的有调度报文发送窗口增加配额;
若判定需要请求为所述第一流对应的有调度报文发送窗口增加配额,则在所述有调度数据报文中设置指示信息,所述指示信息用于指示所述接收设备发送授权信令报文;
所述发送设备接收所述接收设备发送的授权信令报文,所述授权信令报文携带所述第一流的指示信息,所述发送设备根据所述授权信令报文为所述第一流对应的有调度报文发送窗口增加配额。
上述实施例中,发送设备在有调度数据报文中设置指示信息,以使得接收设备发送授权信令报文,从而触发发送设备根据该授权信令报文对该流对应的有调度报文发送窗口增加配额,从而实现基于接收端驱动的拥塞控制,并可以实现根据发送设备的有调度数据报文的发送情况控制有调度数据报文的传输,实现拥塞控制以避免缓存队列积压。
在一种可能的实现方式中,所述无调度报文发送窗口的初始值被配置为RTTByte*m字节,RTTByte表示一个往返时延内可发送的字节数,m为大于或等于1的整数;所述第一流对应的有调度报文发送窗口的初始值被配置为0。
上述实施例中,将无调度报文发送窗口的初始值设置为RTTByte*m字节,而将有调度报文发送窗口的初始值设置为0,相当于预先为无调度数据报文的传输增加了配额,从而可以优先保证无调度数据报文的传输;而针对第一流的有调度数据报文的传输,将对应的有调度报文发送窗口初始值为0,在第一流已经传输一定量的数据后为该流对应的有调度报文发送窗口增加配额,相当于根据该流的数据发送量来有针对性地控制有调度数据报文的传输,从而实现拥塞控制以避免缓存队列积压。
第二方面,提供一种拥塞控制方法,包括:
接收设备接收发送设备发送的数据报文;
若所述数据报文中设置有第一指示信息,则生成债务信令报文,并将所述债务信令报文发送给所述发送设备,所述债务信令报文用于触发所述发送设备为所有流共享的无调度报文发送窗口增加配额;
若所述数据报文中设置有第二指示信息,则生成授权信令报文,并将所述授权信令报文发送给所述发送设备,所述授权信令报文携带流指示信息,所述流指示信息与所述数据报文携带的流指示信息相同,所述授权信令报文用于触发所述发送设备为相应流对应的有调度报文发送窗口增加配额。
在一种可能的实现方式中,所述发送设备发送所述债务信令报文和所述授权信令报文时,根据为债务信令报文和授权信令报文共享的报文发送速率,发送所述债务信令报文和所述授权信令报文。
第三方面,提供一种通信装置,该通信装置包括至少一个处理器,所述至少一个处理器与存储器相连,所述至少一个处理器用于读取并执行所述存储器中存储的程序,以使得所述装置执行如上述第一方面中任一项所述的方法。
第四方面,提供一种通信装置,该通信装置包括至少一个处理器,所述至少一个处理器与存储器相连,所述至少一个处理器用于读取并执行所述存储器中存储的程序,以使得所述装置执行如上述第二方面中任一项所述的方法。
第五方面,提供一种芯片,所述芯片与存储器耦合,用于读取并执行所述存储器中存储的程序指令,以实现如上述第一方面中任一项所述的方法。
第六方面,提供一种芯片,所述芯片与存储器耦合,用于读取并执行所述存储器中存储的程序指令,以实现如上述第二方面中任一项所述的方法。
第七方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述指令在计算机上运行时,使得计算机执行如上述第一方面中任一所述的方法。
第八方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述指令在计算机上运行时,使得计算机执行如上述第二方面中任一所述的方法。
第九方面,提供一种计算机程序产品,所述计算机程序产品在被计算机调用时,使得计算机执行如上述第一方面中任一所述的方法。
第十方面,提供一种计算机程序产品,所述计算机程序产品在被计算机调用时,使得计算机执行如上述第二方面中任一所述的方法。
附图说明
图1为本申请实施例提供的一种网络架构示意图;
图2为DCQCN拥塞控制机制示意图;
图3a为DCQCN拥塞控制算法的发送速率/窗口大小随时间变化图;
图3b为DCQCN拥塞控制算法的队列长度随时间变化图;
图4a、图4b为Expresspass拥塞控制方法的示意图;
图5为Homa拥塞控制方法的示意图;
图6为本申请实施例提供的发送设备和接收设备的功能结构示意图;
图7a为本申请实施例中发送设备发送无调度数据报文以及对无调度数据报文的传输进行拥塞控制的过程示意图;
图7b为本申请实施例中发送设备发送有调度数据报文以及对有调度数据报文的传输进行拥塞控制的过程示意图;
图8为本申请实施例中接收设备对数据报文的传输进行拥塞控制的过程示意图;
图9为本申请实施例中发送设备和接收设备之间传输数据报文以及信令报文的示意图;
图10为本申请实施例提供的通信装置的结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
以下,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)流(flow)
从源端点(endpoint)发送到目标端点的单向数据包的集合形成flow。一般通过五元组<协议类型、源IP地址、目的IP地址、源端口号、目的端口号>或其他能够用于区分流的信息来定义一条流。
(2)发送窗口
用于流量控制,发送窗口的大小决定了发送端最大允许传送的字节数。发送窗口的大小一般使用字节数表示。本申请实施例中,为发送窗口所分配的字节数,可称为该发送窗口的配额,发送窗口的配额,可随着数据的发送而减小。也可以通过为发送窗口增加配额来增加发送窗口的大小。也就是说,本申请实施例中,为发送窗口增加配额,可以理解为增加发送窗口的大小,比如,为发送窗口增加M个字节的配额,意味着该发送窗口的大小增加了M个字节。
本申请实施例中的术语“系统”和“网络”可被互换使用。“多个”是指两个或两个以上,鉴于此,本申请实施例中也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个。例如,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个,例如,包括A、B和C中的至少一个,那么包括的可以是A、B、C、A和B、A和C、B和C、或A和B和C。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。
图1示例性示出了为本申请实施例可应用的一种数据中心网络。
如图1所示,该数据中心网络包括两级交换设备,其中,第一级交换设备相较于第二级交换设备更靠近终端设备。第一级交换设备包括交换设备11~14,第二级交换设备包括交换设备21~22。一个第一级交换设备可连接一个或多个终端设备,比如图中交换设备11连接有终端设备11-1至终端设备11-n1(n1表示大于1的整数)。
一个终端设备可以作为发送设备以向其他终端设备发送数据,也可以作为接收设备以接收其他终端设备发送的数据。
一个发送设备发送的数据可能经过一级交换设备路由到接收设备,比如终端设备11-1发送的数据经过交换设备11被路由到终端设备11-n1;一个发送设备发送的数据也有可能经过多级交换设备路由到接收设备,比如终端设备12-1发送的数据依次经过交换设备12、交换设备21、交换设备11被路由到终端设备11-1。
其中,交换设备可以是交换机、路由器等能够实现数据传输与转发功能的设备,终端设备可以是具有数据处理功能的设备,比如可以是服务器。
图1仅是一种示例,并不对数据中心内包括的设备的数量、类型等构成限定。本申请实施例描述的数据中心网络是为了说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变,本申请实施例提供的技术方案可用于类似的交换网络。
当前,用于数据中心网络的拥塞控制方法包括基于发送端驱动的拥塞控制方法以及基于接收端驱动的拥塞控制方法。
基于发送端驱动的拥塞控制方法中,发送设备通过积极探测网络状况并根据网络的反馈启发式地调整数据报文的发送速率或发送窗口。图2示例性示出了一种基于发送端驱动的拥塞控制方法,以数据中心量化拥塞通知(data center quantized congestionnotification,DCQCN)算法为例,如图所示,发送设备首先按照自身最大能力(通常为线速)发送数据;交换设备接收发送设备发送的数据报文,当该交换设备检测到该交换设备端口的缓存队列积压并超过设定阈值时,对数据报文进行显示拥塞通知(explicit congestionnotification,ECN)打标后发送给接收设备;接收设备接收到ECN打标的数据报文后,向发送设备回复拥塞通知报文(congestion notification packet,CNP);发送设备收到CNP报文后,调整发送速率,以解除网络拥塞。拥塞解除后,发送设备加性升速,直至收到下一个CNP报文。
如图3a和图3b所示,基于发送端驱动的拥塞控制方法由于借助网络的状态反馈,存在不可忽略的反馈时延。基于ECN打标的反馈和控速机制使得发送速率(或发送窗口)处于波动型稳态,没有固定的稳定点,如图3a所示,发送速率或发送窗口在链路欠吞吐状态与缓存积压状态之间波动,调速节奏比真实的网络状态慢一个往返时延(round-trip time,RTT)的周期,使得流量在升速的过程中导致网络设备的排队长度较大,瓶颈网络设备的队列深度与流的数量以及发送速率(或发送窗口)呈正相关,没有固定理论上限,如图3b所示。大队列深度带来排队时延的增加进而影响业务的完成时间等性能指标;发送端驱动多条流同时升速的场景会触发基于优先级的流控(priority-based flow control,PFC),导致网络的欠吞吐。
基于接收端驱动的拥塞控制方法中,由接收设备发送信令报文驱动发送设备发送数据报文,通过接收设备以及交换机对信令报文进行限速传输来分配数据带宽,在数据发送前完成流控。其中,Expresspass方法和Homa方法是两种典型的基于接收端驱动的拥塞控制方法。
Expresspass方法的原理为:发送设备与接收设备建立连接以后,由接收设备发送信令报文,发送设备根据收到的信令报文的速率决定数据报文的发送速率,交换机对信令报文进行限速进而保障数据报文不会在网络中积压。
该方法在流建立初期需要向接收设备请求信令,导致第一个RTT周期带宽浪费,大幅增加小流的完成时间,如图4a所示。接收设备感知发送设备需要的带宽资源存在一定的反馈时延,容易造成信令不能按需分配,导致网络欠吞吐,小流多的情况下影响较大,如图4b所示。
Homa方法的原理为:流到达发送设备时,盲目地发送1个RTTbyte(即1个RTT内可以发送的字节数)的无调度(unscheduled)数据。待收到GRANT信令后,再将余下的数据以有调度(scheduled)数据报文发送。另外,利用交换机的优先级队列优先小流发送,从而就可以大幅提高小流完成时间。
该方法中,无调度数据报文仍采用基于发送端驱动的拥塞控制,造成缓存的积压正比于并发的流数,缓存峰值无上限,会导致交换机队列拥塞并丢包。另外,该方法需使用大量交换机优先级队列,如图5所示,技术实现复杂。
由此可见,上述基于发送端驱动的拥塞控制方法和基于接收端驱动的拥塞控制方法,传输时延均有待提高。
基于上述存在的问题,本申请实施例提供一种拥塞控制方法及装置,用以降低网络传输时延,进而提升网络性能。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
本申请实施例适用于交换网络,比如数据中心网络。以图1所示的数据中心网络为例,本申请实施例提供的拥塞控制方法可在终端设备中实现,即在作为发送设备和接收设备的终端设备上实现。
图6示例性示出了本申请实施例中发送设备和接收设备的功能结构示意图。
如图所示,发送设备610可包括以下模块:信令报文接收模块611、报文处理模块612、数据报文发送模块613。接收设备620可包括以下模块:数据报文接收模块621、报文处理模块622、信令报文发送模块623。
在发送设备610端:
信令报文接收模块611被配置为:接收信令报文,提取信令报文信息,并将提取的信令报文信息传入到报文处理模块612,其中,信令报文信息可包括信令报文类型信息,进一步地还可以包括流指示信息。在本申请实施例中,信令报文类型包括债务信令报文和授权信令报文,流指示信息可以是五元组等用于识别流的信息。
报文处理模块612被配置为:从信令报文接收模块611接收信令报文信息,根据其中的信令报文类型为相应的发送窗口增加配额;当有数据报文需要发送时,根据相应的发送窗口判断是否满足发送条件,并可根据在待发送的数据报文中设置指示信息以指示接收设备发送信令报文,并将设置有该指示信息的数据报文传输到数据报文发送模块613,该信令报文用于触发发送设备对相应数据报文的发送窗口增加配额,以实现拥塞控制。
数据报文发送模块613被配置为:将报文处理模块612封装好的数据报文通过链路发送给接收设备,可选地,该模块在发送数据报文时,可根据数据报文的类型划分的优先级进行数据报文的发送,比如可将无调度数据报文的优先级设置为高于有调度数据报文,从而可以对无调度数据报文进行优先发送。
在接收设备620端:
数据报文接收模块621被配置为:从发送设备的数据报文发送模块613接收数据报文,若从接收到的数据报文中提取到上述指示信息,则送入到报文处理模块622。
报文处理模块622被配置为:从数据报文接收模块621接收上述指示信息,根据该指示信息生成相应的信令报文并送入信令报文发送模块623。
信令报文发送模块623被配置为:接收报文处理模块622生成的信令报文并发送给发送设备。可选地,信令报文发送模块623在发送信令报文时,可根据设定的发送速率控制信令报文的发送。
以图1所示的数据中心网络为例,一个终端设备既可以作为发送设备也可以作为接收设备,因此一个终端设备中即可包括如图6中所示的发送设备中的功能模块,还可以包括接收设备所具备的功能模块。
本申请实施例中,数据报文包括无调度数据报文和有调度数据报文。每个流的第一个RTT内可发送的数据报文被划分为无调度数据报文,之后发送的数据报文被划分为有调度数据报文。也就是说,一个流的无调度数据报文承载的数据为该流的第一个RTT对应的数据长度内的数据。举例来说,如果链路带宽记为C的话,那么一个RTT内可以发送的字节数为C*RTT/8,则一个流的前C*RTT/8个字节的数据被划分为无调度数据,用于传输无调度数据的报文被称为无调度数据报文。
可通过在数据报文中携带报文类型指示信息,以指示该报文为无调度数据报文还是有调度数据报文。当然,也可以不在数据报文中设置报文类型指示信息,本申请实施例对此不做限制。
本申请实施例中,发送设备可针对无调度数据报文和有调度数据报文维护不同的发送窗口。具体地,可针对所有流的无调度数据报文维护一个所有流共享的无调度报文发送窗口,即,所有流的无调度数据报文的发送均取决于该无调度报文发送窗口提供的配额,只有当满足无调度数据报文的发送条件,即发送设备的无调度报文发送窗口的大小大于或等于待发送的无调度数据报文的长度时,才允许该无调度数据报文发送。
无调度报文发送窗口的初始值可配置为RTTByte*m,其中,RTTByte表示一个RTT内可发送的字节数,m为大于或等于1的整数,m可根据交换设备的缓存大小及网络表现进行设置和调节。
发送设备可针对每个流维护每个流分别对应的一个有调度报文发送窗口,比如flow1对应有调度报文发送窗口1,flow2对应有调度报文发送窗口2,针对一个流,该流的有调度数据报文的发送取决于该流对应的有调度报文发送窗口提供的配额,只有当满足有调度数据报文的发送条件,即该流对应的有调度报文发送窗口的大小大于或等于该流的待发送有调度数据报文的长度时,才允许该有调度数据报文发送。有调度报文发送窗口的初始值可设置为0。
需要说明的是,以上发送窗口的命名仅为示例,本申请对发送窗口的命名方式不做限制。
无调度报文发送窗口的大小,随着无调度数据报文的发送而变化。具体地,可设置第一计数器用来统计所有流的无调度数据报文累积发送的数据量,并当判断需要请求为无调度报文发送窗口增加配额后将该第一计数器清零。当第一计数器的计数值达到设定阈值时,将无调度报文发送窗口减小与该设定阈值相应大小的配额。例如,当第一计数器统计的字节数达到M个字节时,将无调度报文发送窗口减小M个字节,其中M为预设值,M可设置为小于一个RTTByte,比如,M可以等于最大传输单元(Maximum Transmission Unit,MTU)的字节数。
当然,也可以每发送一个无调度数据报文,就将无调度报文发送窗口的大小减小与该无调度数据报文的数据量相应大小的配额。
有调度报文发送窗口的大小,随着有调度数据报文的发送而变化。具体地,可分别为每个流设置一个对应的计数器,用于统计该流的数据报文发送的数据量。以第一流为例,可设置第二计数器用来统计第一流的数据报文发送的字节数,并当判定需要请求为第一流对应的有调度报文发送窗口增加配额后将该第二计数器清零。当第二计数器的计数值达到设定阈值时,将第一流对应的有调度报文发送窗口减小与该设定阈值相应大小的配额。例如,当第一流对应的第二计数器统计的字节数达到M个字节时,将该第一流对应的有调度报文发送窗口减小M个字节。
当然,也可以每发送一个第一流的数据报文(包括有调度数据报文和无调度数据报文),就将第一流对应的有调度报文发送窗口的大小减小与该数据报文的数据量相应大小的配额。
本申请实施例中,信令报文的类型可包括债务信令报文和授权信令报文。授权信令报文和债务报文由接收设备生成并发送给发送设备。
债务信令报文用于触发发送设备为无调度报文发送窗口增加配额,即,增加无调度报文发送窗口的大小。在一些实施例中,发送设备接收到一个债务信令报文后,为无调度报文发送窗口增加的配额等于设定大小的数据量,比如,当用于对所有流的无调度数据报文发送的数据量进行统计的第一计数器的计数值达到M个字节时,将会指示接收设备发送一个债务信令报文,这样发送设备每接收到一个债务信令报文,无调度报文发送窗口大小增加M个字节。
授权信令报文用于触发发送设备为有调度报文发送窗口增加配额,即,增加有调度报文发送窗口的大小。在一些实施例中,发送设备接收到一个授权信令报文后,为第一流对应的有调度报文发送窗口增加的配额等于设定大小的数据量,比如,当用于对第一流的数据报文发送的数据量进行统计的第二计数器的计数值达到M个字节时,将会指示接收设备发送一个授权信令报文,这样发送设备每接收到一个流对应的授权信令报文,则将该流对应的有调度报文发送窗口大小增加M个字节。
需要说明的是,以上信令报文的命名仅为示例,本申请对信令报文的命名方式不做限制。
债务信令报文和授权信令报文的头部可携带信令报文类型指示信息,其中,债务信令报文中的信令报文类型指示信息用以指示该信令报文为债务信令报文,授权信令报文中的信令报文类型指示信息用以指示该信令报文为授权信令报文。授权信令报文中还携带流指示信息,比如五元组,使得发送设备根据该流指示信息,针对对应的流增加该流对应的有调度报文发送窗口的大小。
接收设备可根据发送设备发送的数据报文中携带的第一指示信息,生成债务信令报文,其中第一指示信息用于指示接收设备生成债务信令报文,以触发发送设备为无调度报文发送窗口增加配额。接收设备可根据发送设备发送的数据报文中的第二指示信息,生成授权信令报文,其中第二指示信息用于指示接收设备生成授权信令报文,以触发发送设备为有调度报文发送窗口增加配额。
可选地,为节省信令开销,第一指示信息和第二指示信息可分别为1个比特的标志位,比如A标志位和B标志位,发送设备通过对数据报文的报文头中的A标志位进行置位(比如将A标志位的值设置为1),指示接收设备生成债务信令报文,发送设备通过对数据报文的报文头中的B标志位进行置位(比如将B标志位的值设置为1),指示接收设备生成授权信令报文。比如,若接收设备接收到的数据报文的头部中A标志位被置位为1,则生成并发送一个债务信令报文,若该A标志位被置位为0,则不发送债务信令报文;若接收设备接收到的数据报文的头部中B标志位被置位为1,则生成并发送一个授权信令报文,若该B标志位被置位为0,则不生成授权信令报文。
上述A标志位和B标志位可以是现有标准、协议、规范中已有报文格式中的保留字段或允许自定义的字段,也可以是实现相同功能的其他自定义格式,举例如下:在RoCEv2规范中,IP头部的ECN字段用于拥塞标记,本申请实施例不涉及到ECN拥塞标记的使用,可利用ECN字段作为上述标志位。类似的,RoCEv2规范中定义的基本头部BTH的保留字段也可以用作上述标志位。
基于上述定义或规则,本申请实施例采用收发混合驱动的拥塞控制方法。针对无调度数据报文采用基于发送端驱动的拥塞控制方法,针对有调度数据报文采用基于接收端驱动的拥塞控制方法。
以第一流为例,针对第一流的无调度数据报文,当发送设备判决待发送的无调度数据报文满足发送条件时,进一步判断是否需要请求为无调度报文发送窗口和第一流对应的有调度报文发送窗口中的至少一个增加配额,并根据判断结果进行以下处理:
(1)若判断仅需要为无调度报文发送窗口增加配额,则在待发送的无调度数据报文中设置第一指示信息(如对A标志位进行置位),并发送设置有第一指示信息的无调度数据报文。
其中,当满足以下条件时,发送设备判决需要请求为无调度报文发送窗口增加配额:第一计数器的计数值达到设定阈值(或称大于或等于该设定阈值)。其中,第一计数器的定义如前所述,第一计数器的计数值中包含当前被判决为满足发送条件的无调度数据报文的字节数。比如,当第一计数器的所统计的所有流的无调度数据报文的字节数达到M字节时,发送设备判决需要请求为无调度报文发送窗口增加配额,M的定义可参见前述实施例。
(2)若判断仅需要为第一流对应的有调度报文发送窗口增加配额,则在待发送的无调度数据报文中设置第二指示信息(如对B标志位进行置位),并发送设置有第二指示信息的无调度数据报文。
其中,当满足以下条件时,发送设备判决需要请求为该第一流对应的有调度报文发送窗口增加配额:第二计数器的计数值达到设定阈值(或称大于或等于该设定阈值),且在一个RTT后仍有第一流的数据需要发送。其中,第二计数器的定义如前所述,第二计数器的计数值中包含当前被判决为满足发送条件的无调度数据报文的字节数。比如,当第二计数器所统计的第一流的数据报文发送的字节数达到M个字节时,发送设备判决需要请求为第一流对应的有调度报文发送窗口增加配额,M的定义可参见前述实施例。
(3)若判断需要为无调度报文发送窗口增加配额以及为第一流对应的有调度报文发送窗口增加配额,则在待发送的无调度数据报文中设置第一指示信息(如对A标志位进行置位)以及设置第二指示信息(如对B标志位进行置位),并发送设置有第一指示信息和第二指示信息的无调度数据报文。
(4)若判断不需要为无调度报文发送窗口增加配额,也不需要为第一流对应的有调度报文发送窗口增加配额,则不在该无调度数据报文中设置上述第一指示信息和第二指示信息,而是直接发送该无调度数据报文。
进一步地,如果判断待发送的无调度数据报文不满足发送条件,则拒绝发送该无调度数据报文,或者等待满足发送条件时再发送该无调度数据报文。
仍以第一流为例,针对第一流的有调度数据报文,当发送设备判决待发送的第一流的有调度数据报文满足发送条件时,进一步判断是否需要请求为该第一流对应的有调度报文发送窗口增加配额,如果需要,则在待发送的有调度数据报文中设置第二指示信息(如对B标志位进行置位)后发送该有调度数据报文,如果不需要为第一流的有调度报文发送窗口增加配额,则直接发送该有调度数据报文。如果判断待发送的有调度数据报文不满足发送条件,则拒绝发送该有调度数据报文,或者等待满足发送条件时再发送该有调度数据报文。
其中,当满足以下条件时,发送设备判决需要请求为该第一流对应的有调度报文发送窗口增加配额:第二计数器的计数值达到设定阈值(或称大于或等于该设定阈值),且在一个RTT后仍有第一流的数据需要发送。其中,第二计数器的计数值中包含当前被判决为满足发送条件的无调度数据报文的字节数。比如,当第二计数器所统计的第一流的数据报文发送的字节数达到M个字节时,发送设备判决需要请求为第一流对应的有调度报文发送窗口增加配额,M的定义可参见前述实施例。
通过以上实施例可以看出,无调度数据报文采用基于发送端驱动的拥塞控制方式,新流到达时只要无调度报文发送窗口仍有剩余配额就可以发送。所有流的无调度数据报文可共享一个无调度报文发送窗口提供的配额,从而限制无调度数据报文的注入量,进而可以避免流量突发造成缓存的瞬间堆积,进而降低网络传输时延。无调度数据报文总量被控制,由债务信令报文调控,从而限制无调度数据报文占用的缓存大小;而被有调度数据报文所使用的带宽,由授权信令报文分配,保障有调度数据报文的缓存占用较低(可以达到近似为0),进而降低网络传输时延。本申请实施例充分利用了第一个RTT时间传送数据,小流能快速完成。另外限制了数据报文注入网络量,降低缓存占用,降低排队时延,令整体的流完成时间都得以减少。相较于现有的拥塞控制技术需要大量用到交换机中的优先级队列,本申请实施例可使用较少的交换机队列数。
通过以上实施例还可以看出,数据报文和信令报文能够协调调度。发送设备在数据报文中设置第一指示信息或第二指示信息,用以通知接收设备回复对应类型的信令报文;信令报文分为债务信令报文和授权信令报文,通过债务信令报文可以恢复发送设备侧的无调度报文的共享额度,通过授权信令报文可以驱动发送设备发送有调度数据报文。
本申请的一些实施例中,可以对债务信令报文和授权信令报文的发送进行速率控制,使得债务信令报文和授权信令报文共同的发送速率不超过设定阈值,比如该设定阈值为x%带宽,其中x可根据数据报文和授权信令报文的长度比值来设定,比如可将债务信令报文和授权信令报文共同的发送速率的阈值设置为5%。通过对信令报文进行发送速率控制,可以使得债务信令报文和授权信令报文共享一定比例的带宽。由于债务信令报文和授权信令报文可通过增加相应发送窗口的大小来驱动发送设备侧无调度数据报文和有调度数据报文的发送,从而对无调度数据报文和有调度数据报文的发送进行限速,因此对债务信令报文和授权信令报文的发送进行限速,相当于对发送设备侧的无调度数据报文和有调度数据报文的发送进行反向限速,从而可以缓解或者避免缓存队列积压,提高网络性能。
本申请实施例中,对于债务信令报文和授权信令报文的限速控制,可在接收设备侧实现,也可在交换设备上实现。
进一步地,在一些实施例中,可将债务信令报文的优先级设置为高于授权信令报文,从而可以保证债务信令报文被优先发送。
图7a和图7b示例性示出了本申请实施例中在发送设备侧实现的一种拥塞控制方法的流程图,图8示例性示出了本申请实施例中在接收设备侧实现的一种拥塞控制方法的流程图。该方法可应用于图1所示的数据中心网络,当然也可应用于除此之外的其他交换网络,本申请对此不做限定。当将该方法应用于图1所示的数据中心网络时,该方法中所涉及的发送设备和接收设备可以是图1中的任意两个终端设备。
参见图7a,该流程描述了发送设备发送无调度数据报文以及对无调度数据报文的传输进行拥塞控制的过程。在该流程开始前,可首先进行系统初始参数配置,具体可包括:对无调度报文发送窗口进行初始化,比如,可将无调度报文发送窗口的初始值设置为RTTbyte*m,对每个流对应的有调度报文发送窗口进行初始化,比如,可将有调度报文发送窗口的初始值设置为0。
如图所示,该流程可包括以下步骤:
步骤710:发送设备生成第一流的无调度数据报文。
其中,“第一流”指任意一个流,为描述方便,本流程以第一流为例描述。
发送设备当前生成的数据报文所承载的数据是该第一流的第一个RTT对应的数据长度内的数据,因此该数据报文为无调度数据报文。
步骤711:发送设备根据无调度报文发送窗口以及该待发送的无调度数据报文的大小,判断该无调度数据报文是否满足发送条件,如果满足,则转入步骤712,否则结束本流程。
该步骤中,如果发送设备判断该待发送的无调度数据报文的字节数小于或等于无调度报文发送窗口的大小,则判定满足发送条件,否则判定不满足发送条件。
步骤712:发送设备判断是否需要在该无调度数据报文中设置指示信息,若判定为是,则转入步骤713,否则转入步骤714。
该步骤中,若发送设备判断第一计数器的计数值达到M个字节,则确定需要在该无调度数据报文中设置第一指示信息(如对A标志位进行置位),并将第一计数器清零;若发送设备判断第二计数器的计数值达到M个字节,且在一个RTT后该第一流仍有数据需要发送,则确定需要在该无调度数据报文中设置第二指示信息(如对B标志位进行置位),并将第二计数器清零。其中,第一指示信息用于指示接收设备发送债务信令报文,第二指示信息用于指示接收设备发送授权信令报文。
步骤713:发送设备根据步骤712的判断结果,在该待发送的无调度数据报文中设置相应的指示信息,并转入步骤714。
该步骤中,根据步骤712的判断结果,发送设备可将该待发送的无调度数据报文头部的A标志位置位为1,和/或,将该待发送的无调度数据报文头部的B标志位置位为1。
步骤714:发送设备发送无调度数据报文。
步骤715:发送设备根据数据发送情况,更新报文发送窗口。
该步骤为可选步骤。
其中,当第一计数器统计的字节数达到M个字节时,将无调度报文发送窗口减小M个字节。当第二计数器统计的字节数达到M个字节时,将该第一流对应的有调度报文发送窗口减小M个字节。
上述流程中,如果步骤713中发送设备在无调度数据报文中设置了第一指示信息,则在后续的步骤717~718中,发送设备从接收设备接收到债务信令报文后,根据该债务信令报文为无调度报文发送窗口增加配额,比如,将无调度报文发送窗口的大小增加M字节。如果步骤713中发送设备在无调度数据报文中设置了第二指示信息,则在后续的步骤717~718中,发送设备从接收设备接收到授权信令报文后,根据该授权信令报文中携带的第一流的指示信息,为第一流对应的有调度报文发送窗口增加配额,比如,将该有调度报文发送窗口的大小增加M字节。
如果后续还有无调度数据报文需要发送,则可根据图7a所示的流程进行处理,如果后续还有有调度数据报文需要发送,则可根据图7b所示的流程进行处理。
参见图7b,该流程描述了发送设备发送有调度数据报文以及对有调度数据报文的传输进行拥塞控制的过程。在该流程开始前,可首先进行系统初始参数配置,具体可包括:对无调度报文发送窗口进行初始化,比如,可将无调度报文发送窗口的初始值设置为RTTbyte*m,对每个流对应的有调度报文发送窗口进行初始化,比如,可将有调度报文发送窗口的初始值设置为0。
如图所示,该流程可包括以下步骤:
步骤720:发送设备生成第一流的有调度数据报文。
其中,“第一流”指任意一个流,为描述方便,本流程以第一流为例描述。
发送设备当前生成的数据报文所承载的数据是该第一流的第一个RTT对应的数据长度之后的数据,因此该数据报文为有调度数据报文。
步骤721:发送设备根据该第一流对应的有调度报文发送窗口以及该待发送的有调度数据报文的大小,判断该有调度数据报文是否满足发送条件,如果满足,则转入步骤722,否则结束本流程。
该步骤中,如果发送设备判断该待发送的有调度数据报文的字节数小于或等于该第一流对应的有调度报文发送窗口的大小,则判定满足发送条件,否则判定不满足发送条件。
步骤722:发送设备判断是否需要在该有调度数据报文中设置指示信息,若判定为是,则转入步骤723,否则转入步骤724。
该步骤中,若发送设备判断第二计数器的计数值达到M个字节,且在一个RTT后仍有第一流的数据需要发送,则确定需要在该有调度数据报文中设置第二指示信息(如对B标志位进行置位),并将第二计数器清零。其中,第二指示信息用于指示接收设备发送授权信令报文。
步骤723:发送设备在该有调度数据报文中设置第二指示信息,并转入步骤724。
该步骤中,发送设备可将该待发送的有调度数据报文头部的B标志位置位为1,以触发接收设备发送针对第一流的授权信令报文。
步骤724:发送设备发送有调度数据报文。
步骤725:发送设备根据数据发送情况,更新报文发送窗口。
该步骤为可选步骤。其中,当第二计数器的计数值达到M个字节时,将该第一流对应的有调度报文发送窗口减小M个字节。
上述流程中,如果步骤723中发送设备在有调度数据报文中设置了第二指示信息,则在后续的步骤727~728中,发送设备从接收设备接收到授权信令报文(其中携带第一流的指示信息)后,根据该授权信令报文为第一流对应的有调度报文发送窗口增加配额,比如,将该有调度报文发送窗口的大小增加M字节。
如果后续还有有调度数据报文需要发送,则可根据图7b所示的流程进行处理,如果后续还有无调度数据报文需要发送,则可根据图7a所示的流程进行处理。
参见图8,该流程描述了接收设备对数据报文的传输进行拥塞控制的过程。
如图所示,该流程可包括以下步骤:
步骤801:接收设备接收发送设备发送的数据报文。
其中,接收设备接收到的数据报文可能是无调度数据报文,也可能是有调度数据报文。
步骤802:接收设备判断当前接收的数据报文中是否设置有指示信息,如果设置有第一指示信息则转入步骤803,如果设置有第二指示信息则转入步骤805,否则按照常规方法进行报文处理并结束本流程。
该步骤中,若接收设备对数据报文解析后,确定该数据报文的头部中的A标志位被置位为1,则表明该数据报文设置第一指示信息;若接收设备对数据报文解析后,确定该数据报文的头部中的B标志位被置位为1,则表明该数据报文设置有第二指示信息。
步骤803~804:接收设备生成债务信令报文,并将该债务信令报文发送给该数据报文的发送设备。
步骤805~806:接收设备生成授权信令报文,其中携带流指示信息,并将该授权信令报文发给该数据报文的发送设备。
该步骤中,接收设备获取该数据报文中的流指示信息,并将该流指示信息携带在授权信令报文中发送给发送设备,以使得发送设备根据该流指示信息为相应流所对应的有调度报文发送窗口增加配额。
在一些实施例中,在上述步骤804和步骤806中,接收设备可对信令报文的发送进行速率控制,使得债务信令报文和授权信令报文的发送速率不超过设定阈值。
下面基于上述一个实施例或多个实施例的组合,并结合图6所示的发送设备和接收设备的结构,对本申请实施例的实现过程进行描述。
参见图9,发送设备610的报文处理模块612生成第一流(如flow1)的无调度数据报文后,根据无调度数据报文拥塞控制策略进行以下处理:
若判断无调度数据报文的字节数小于或等于无调度报文发送窗口的大小,则判定满足发送条件,并进一步判断是否满足以下条件:
条件1:第一计数器的计数值达到M字节;
条件2:第二计数器的计数值达到M字节,且在一个RTT后仍有第一流的数据需要发送;
若满足上述条件1,则将该待发送的无调度数据报文的头部中的A标志位置位为1,若满足上述条件2,则将该待发送的无调度数据报文的头部中的B标志位置位为1,然后将置位后的无调度数据报文提交给数据报文发送模块613。如果上述条件1和条件2都不满足,则直接将该无调度数据报文提交给数据报文发送模块613。
若判断无调度数据报文的字节数大于无调度报文发送窗口的大小,则判定不满足发送条件,因此放弃发送该无调度数据报文,或者等待无调度报文发送窗口满足发送条件时再发送该无调度数据报文。
发送设备610的数据报文发送模块613从报文处理模块612接收到无调度数据报文后发送该无调度数据报文,该无调度数据报文被交换设备路由到接收设备620。
接收设备620中的数据报文接收模块621接收到数据报文后对该数据报文进行解析,并将解析结果发送给报文处理模块622。
报文处理模块622根据该解析结果,发现该数据报文的报文头的A标志位被置位为1,则生成债务信令报文,并提交给信令报文发送模块623。信令报文发送模块623发送该债务信令报文,该债务信令报文被交换设路由到发送设备610。若报文处理模块622根据该解析结果,发现该数据报文的报文头的A标志位未被置位为1(默认设置为0),则不生成债务信令报文。
报文处理模块622根据该解析结果,发现该数据报文的报文头的B标志位被置位为1,则生成授权信令报文(其中携带第一流的指示信息),并提交给信令报文发送模块623。信令报文发送模块623发送该授权信令报文,该授权信令报文被交换设路由到发送设备610。若报文处理模块622根据该解析结果,发现该数据报文的报文头的B标志位未被置位为1(默认设置为0),则不生成授权信令报文。
发送设备610的信令报文接收模块611接收到债务信令报文后提交给报文处理模块612。报文处理模块612根据债务信令报文,将无调度报文发送窗口的大小增加M字节。发送设备610的信令报文接收模块611接收到授权信令报文后提交给报文处理模块612。报文处理模块612根据该授权信令报文,将第一流对应的有调度报文发送窗口的大小增加M字节。
需要说明的是,当发送设备610的报文处理模块612生成其他流(比如flow2)的无调度数据报文后,其处理过程与上述过程类似,在此不再重复。
发送设备610的报文处理模块612生成第一流(如flow1)的有调度数据报文后,根据有调度数据报文拥塞控制策略进行以下处理:
若判断该有调度数据报文的字节数小于或等于flow1对应的有调度报文发送窗口的大小,则判定满足发送条件,并进一步判断第二计数器的计数值是否达到M字节且在一个RTT后是否仍有flow1的数据需要发送,若判断为是,则将该待发送的有调度数据报文的头部中的B标志位置位为1,并将置位后的有调度数据报文提交给数据报文发送模块613,否则直接将该有调度数据报文提交给数据报文发送模块613;
若报文处理模块612判断该有调度数据报文的字节数大于flow1对应的有调度报文发送窗口的大小,则判定不满足发送条件,因此放弃发送该有调度数据报文,或者等待flow1对应的有调度报文发送窗口满足发送条件时再发送该有调度数据报文。
发送设备610的数据报文发送模块613从报文处理模块612接收到有调度数据报文后发送该有调度数据报文,该有调度数据报文被交换设备路由到接收设备620。
接收设备620中的数据报文接收模块621接收到数据报文后对该数据报文进行解析,并将解析结果发送给报文处理模块622。报文处理模块622根据该解析结果,发现该数据报文的报文头的B标志位被置位为1,则获取该数据报文中的流指示信息(即flow1的流指示信息),生成授权信令报文(其中携带该流指示信息),并提交给信令报文发送模块623。信令报文发送模块623发送该授权信令报文,该授权信令报文被交换设路由到发送设备610。若报文处理模块622根据该解析结果,发现该数据报文的报文头的B标志位未被置位为1(默认设置为0),则不生成授权信令报文。
发送设备610的信令报文接收模块611接收到授权信令报文后提交给报文处理模块612。报文处理模块612根据授权信令报文中的流指示信息,将flow1对应的有调度报文发送窗口的大小增加M字节。
需要说明的是,当发送设备610的报文处理模块612生成其他流(比如flow2)的有调度数据报文后,其处理过程与上述过程类似,在此不再重复。
在一些实施例中,接收设备中的信令报文发送模块623,限制债务信令报文和授权信令报文共同的发送速率为x%带宽。在另一些实施例中,也可以由交换设备对交换设备上的信令报文对应的优先级队列进行限速,从而限制债务信令报文和授权信令报文共同的发送速率为x%带宽。
综合上述描述,本申请实施例提出的收发混合驱动的拥塞控制方法。通过基于数据报文和信令报文协调的拥塞控制机制,填补了目前基于发送端驱动的拥塞控制方法和基于接收端驱动的拥塞控制方法的缺陷,在降低流完成时间(FCT)的同时可以降低网络设备缓存的占用,从而可以节省网络传输时延。本申请实施例可以使用较少的优先级队列实现收发混合驱动方式、带宽分配,从而保障网络吞吐,提高网络性能。
本申请的上述实施例可以只在发送端及接收端部署,能对缓存起到有益的降低效果;利用交换设备的汇聚作用,可以进一步降低缓存的使用。不需要预先知道流量模型对每条流进行优先级分类。
基于同一发明构思,本申请实施例还提供一种通信装置,所述通信装置可以是上述实施例中的发送设备,也可以是能够支持上述发送设备实现上述方法的芯片或芯片系统,当所述通信装置为上述实施例中的发送设备时具有上述方法实施例中发送设备的行为功能。所述通信装置也可以是上述实施例中的接收设备,也可以是能够支持上述接收设备实现上述方法的芯片或芯片系统,当所述通信装置为上述实施例中的接收设备时具有上述方法实施例中接收设备的行为功能。
在将该通信装置应用于数据中心网络时,如图1所示,该通信装置可以是数据中心网络中的终端设备。
当该通信装置为上述实施例中的发送设备时,可参见图6,该通信装置包括信令报文接收模块、报文处理模块和数据报文发送模块。其中,各模块的功能可参见前述实施例的描述,在此不再详述。
当该通信装置为上述实施例中的接收设备时,可参见图6,该通信装置包括信令报文发送模块、报文处理模块和数据报文接收模块。其中,各模块的功能可参见前述实施例的描述,在此不再详述。
此外,本申请实施例还提供一种通信装置,该通信装置可以具有如图10所示的结构,所述通信装置可以是发送设备,或者可以是能够支持发送设备实现上述方法的芯片或芯片系统。所述通信装置也可以是接收设备,或者可以是能够支持接收设备实现上述方法的芯片或芯片系统。
如图10所示的通信装置1000可以包括至少一个处理器1002,所述至少一个处理器1002用于与存储器耦合,读取并执行所述存储器中的指令以实现本申请实施例提供的方法中发送设备涉及的步骤。可选的,该通信装置1000还可以包括通信接口1001,用于支持通信装置1000进行信令或者数据的接收或发送。通信装置1000中的通信接口1001,可用于通信装置1000执行如图7a、图7b或图8所示的方法中收发数据报文或信令报文的步骤,处理器1002可用于通信装置1000执行如图7a、图7b或图8所示的方法中报文处理以及拥塞控制的步骤。可选的,通信装置1000还可以包括存储器1004,其中存储有计算机程序、指令,存储器1004可以与处理器1002和/或通信接口1001耦合,用于支持处理器1002调用存储器1004中的计算机程序、指令以实现本申请实施例提供的方法中发送设备涉及的步骤;另外,存储器1004还可以用于存储本申请方法实施例所涉及的数据,例如,用于存储支持通信接口1001实现交互所必须的数据、指令,和/或,用于存储通信装置1000执行本申请实施例所述方法所必须的配置信息。
基于与上述方法实施例相同构思,本申请实施例还提供了一种计算机可读存储介质,其上存储有一些指令,这些指令被计算机调用执行时,可以使得计算机完成上述方法实施例、方法实施例的任意一种可能的设计中所涉及的方法。本申请实施例中,对计算机可读存储介质不做限定,例如,可以是RAM(random-access memory,随机存取存储器)、ROM(read-only memory,只读存储器)等。
基于与上述方法实施例相同构思,本申请还提供一种计算机程序产品,该计算机程序产品在被计算机调用执行时可以完成方法实施例以及上述方法实施例任意可能的设计中所涉及的方法。
基于与上述方法实施例相同构思,本申请还提供一种芯片,该芯片可以包括处理器以及接口电路,用于完成上述方法实施例、方法实施例的任意一种可能的实现方式中所涉及的方法,其中,“耦合”是指两个部件彼此直接或间接地结合,这种结合可以是固定的或可移动性的,这种结合可以允许流动液、电、电信号或其它类型信号在两个部件之间进行通信。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本申请实施例中所描述的各种说明性的逻辑单元和电路可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本申请实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于终端设备中。可选地,处理器和存储媒介也可以设置于终端设备中的不同的部件中。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种拥塞控制方法,其特征在于,包括:
发送设备生成待发送的第一流的无调度数据报文;
若所述发送设备根据所有流所共享的无调度报文发送窗口判定所述无调度数据报文满足发送条件,则判断是否请求为所述无调度报文发送窗口和所述第一流对应的有调度报文发送窗口中的至少一个增加配额,所述第一流对应的有调度报文发送窗口用于判断所述第一流的有调度数据报文是否满足发送条件;
若判定需要请求为所述无调度报文发送窗口和所述第一流对应的有调度报文发送窗口中的至少一个增加配额,则在所述无调度数据报文中设置指示信息,并向接收设备发送设置有所述指示信息的无调度数据报文,所述指示信息用于指示所述接收设备发送信令报文以触发所述发送设备为所述无调度报文发送窗口和所述第一流对应的有调度报文发送窗口中的至少一个增加配额。
2.如权利要求1所述的方法,其特征在于,所述判断是否请求为所述无调度报文发送窗口和所述第一流对应的有调度报文发送窗口中的至少一个增加配额,包括:
若第一计数器的计数值达到设定阈值,则判定需要请求为所述无调度报文发送窗口增加配额,其中,所述第一计数器用于统计所有流的无调度数据报文累积发送的数据量,并当判断需要请求为所述无调度报文发送窗口增加配额后清零;
若第二计数器的计数值达到设定阈值,且所述第一流在一个往返时延后仍有数据需要发送,则判定需要请求为所述第一流对应的有调度报文发送窗口增加配额,其中,所述第二计数器用于统计所述第一流的数据报文累积发送的数据量,并当判定需要请求为所述第一流对应的有调度报文发送窗口增加配额后清零。
3.如权利要求2所述的方法,其特征在于,还包括:
所述发送设备接收所述接收设备发送的信令报文,根据所述信令报文为所述无调度报文发送窗口和所述第一流对应的有调度报文发送窗口中的至少一个增加配额;
其中,增加的配额等于与所述设定阈值相应大小的数据量。
4.如权利要求2所述的方法,其特征在于,还包括:
当所述第一计数器的计数值达到设定阈值时,将所述无调度报文发送窗口减小与所述设定阈值相应大小的配额;
当所述第二计数器的计数值达到设定阈值时,将所述第一流对应的有调度报文发送窗口减小与所述设定阈值相应大小的配额。
5.如权利要求1-4中任一项所述的方法,其特征在于,所述在所述无调度数据报文中设置指示信息,包括:
若判定需要请求为所述无调度报文发送窗口增加配额,则在所述无调度数据报文中设置第一指示信息,所述第一指示信息用于指示所述接收设备发送债务信令报文,所述债务信令报文用于触发所述发送设备为所述无调度报文发送窗口增加配额;
若判定需要请求为所述第一流对应的有调度报文发送窗口增加配额,则在所述无调度数据报文中设置第二指示信息,所述第二指示信息用于指示所述接收设备发送授权信令报文,所述授权信令报文用于触发所述发送设备为所述第一流对应的无调度报文发送窗口增加配额。
6.如权利要求5所述的方法,其特征在于,还包括:
所述发送设备接收所述债务信令报文,并根据所述债务信令报文为所述无调度报文发送窗口增加配额;和/或
所述发送设备接收所述授权信令报文,所述授权信令报文携带所述第一流的指示信息,所述发送设备根据所述授权信令报文为所述第一流对应的有调度报文发送窗口增加配额。
7.如权利要求1-6中任一项所述的方法,其特征在于,还包括:
所述发送设备生成待发送的所述第一流的有调度数据报文;
若所述发送设备根据所述第一流对应的有调度报文发送窗口判定所述有调度数据报文满足发送条件,则判断是否请求为所述第一流对应的有调度报文发送窗口增加配额;
若判定需要请求为所述第一流对应的有调度报文发送窗口增加配额,则在所述有调度数据报文中设置指示信息,所述指示信息用于指示所述接收设备发送授权信令报文;
所述发送设备接收所述接收设备发送的授权信令报文,所述授权信令报文携带所述第一流的指示信息,所述发送设备根据所述授权信令报文为所述第一流对应的有调度报文发送窗口增加配额。
8.如权利要求1-7中任一项所述的方法,其特征在于,所述无调度报文发送窗口的初始值被配置为RTTByte*m字节,RTTByte表示一个往返时延内可发送的字节数,m为大于或等于1的整数;所述第一流对应的有调度报文发送窗口的初始值被配置为0。
9.一种拥塞控制方法,其特征在于,包括:
接收设备接收发送设备发送的数据报文;
若所述数据报文中设置有第一指示信息,则生成债务信令报文,并将所述债务信令报文发送给所述发送设备,所述债务信令报文用于触发所述发送设备为所有流共享的无调度报文发送窗口增加配额;
若所述数据报文中设置有第二指示信息,则生成授权信令报文,并将所述授权信令报文发送给所述发送设备,所述授权信令报文携带流指示信息,所述流指示信息与所述数据报文携带的流指示信息相同,所述授权信令报文用于触发所述发送设备为相应流对应的有调度报文发送窗口增加配额。
10.如权利要求9所述的方法,其特征在于,所述发送设备发送所述债务信令报文和所述授权信令报文时,根据为债务信令报文和授权信令报文共享的报文发送速率,发送所述债务信令报文和所述授权信令报文。
11.一种通信装置,其特征在于,包括至少一个处理器,所述至少一个处理器与存储器相连,所述至少一个处理器用于读取并执行所述存储器中存储的程序,以使得所述装置执行如权利要求1-10中任一项所述的方法。
12.一种芯片,其特征在于,所述芯片与存储器耦合,用于读取并执行所述存储器中存储的程序指令,以实现如权利要求1-10中任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1-10中任一所述的方法。
14.一种计算机程序产品,其特征在于,所述计算机程序产品在被计算机调用时,使得计算机执行如权利要求1-10中任一所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010988470.9A CN114285803A (zh) | 2020-09-18 | 2020-09-18 | 拥塞控制方法和装置 |
PCT/CN2021/109387 WO2022057462A1 (zh) | 2020-09-18 | 2021-07-29 | 拥塞控制方法和装置 |
EP21868291.2A EP4203396A4 (en) | 2020-09-18 | 2021-07-29 | METHOD AND APPARATUS FOR CONVENTION CONTROL |
US18/185,433 US11870708B2 (en) | 2020-09-18 | 2023-03-17 | Congestion control method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010988470.9A CN114285803A (zh) | 2020-09-18 | 2020-09-18 | 拥塞控制方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114285803A true CN114285803A (zh) | 2022-04-05 |
Family
ID=80777620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010988470.9A Pending CN114285803A (zh) | 2020-09-18 | 2020-09-18 | 拥塞控制方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11870708B2 (zh) |
EP (1) | EP4203396A4 (zh) |
CN (1) | CN114285803A (zh) |
WO (1) | WO2022057462A1 (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5491531A (en) * | 1993-04-28 | 1996-02-13 | Allen-Bradley Company, Inc. | Media access controller with a shared class message delivery capability |
US7349403B2 (en) * | 2001-09-19 | 2008-03-25 | Bay Microsystems, Inc. | Differentiated services for a network processor |
US8068429B2 (en) * | 2007-05-31 | 2011-11-29 | Ixia | Transmit scheduling |
CN103905327B (zh) * | 2012-12-25 | 2017-05-17 | 中国科学院声学研究所 | 一种基于流状态信息的内容中心网络拥塞控制方法及系统 |
CN110166366B (zh) * | 2018-02-14 | 2023-02-28 | 华为技术有限公司 | 网络拥塞控制方法、装置和系统 |
CN110445722B (zh) * | 2018-05-04 | 2021-10-26 | 华为技术有限公司 | 拥塞控制方法、装置、设备及存储介质 |
CN111464452B (zh) * | 2020-03-30 | 2022-10-14 | 南京理工大学 | 基于dctcp的快速拥塞反馈方法 |
-
2020
- 2020-09-18 CN CN202010988470.9A patent/CN114285803A/zh active Pending
-
2021
- 2021-07-29 EP EP21868291.2A patent/EP4203396A4/en active Pending
- 2021-07-29 WO PCT/CN2021/109387 patent/WO2022057462A1/zh unknown
-
2023
- 2023-03-17 US US18/185,433 patent/US11870708B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230216809A1 (en) | 2023-07-06 |
WO2022057462A1 (zh) | 2022-03-24 |
EP4203396A4 (en) | 2024-02-21 |
EP4203396A1 (en) | 2023-06-28 |
US11870708B2 (en) | 2024-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108418767B (zh) | 数据传输方法、设备及计算机存储介质 | |
EP3457643B1 (en) | Method and device for transmitting data stream | |
KR102478440B1 (ko) | 혼잡 제어 방법 및 네트워크 디바이스 | |
US11171862B2 (en) | Multi-subflow network transmission method and apparatus | |
CN107948103B (zh) | 一种基于预测的交换机pfc控制方法及控制系统 | |
US9614777B2 (en) | Flow control in a network | |
US20220407808A1 (en) | Service Level Adjustment Method, Apparatus, Device, and System, and Storage Medium | |
EP3823228A1 (en) | Message processing method and apparatus, communication device, and switching circuit | |
US20040193719A1 (en) | Method for flow control in a communication system | |
CN112995048B (zh) | 数据中心网络的阻塞控制与调度融合方法及终端设备 | |
CN110868359B (zh) | 一种网络拥塞控制方法 | |
CN114124826B (zh) | 拥塞位置可感知的低时延数据中心网络传输系统及方法 | |
CN113783785A (zh) | Ecn水线值的配置方法、装置及网络设备 | |
US20220103465A1 (en) | Multi-Subflow Network Transmission Method and Apparatus | |
CN109995608B (zh) | 网络速率计算方法和装置 | |
JP2002044136A (ja) | マルチプロトコルネットワーク用のフロー制御装置 | |
CN114285803A (zh) | 拥塞控制方法和装置 | |
CN112637898B (zh) | 下行数据流会话带宽限制方法、网元、设备及介质 | |
JP5146013B2 (ja) | 通信装置および通信方法 | |
Cisco | Congestion Avoidance Overview | |
CN113014498A (zh) | 一种收发数据的方法及装置 | |
Ceco et al. | Performance comparison of active queue management algorithms | |
WO2022246710A1 (zh) | 一种控制数据流传输的方法及通信装置 | |
CN114884884A (zh) | 一种拥塞控制方法及装置 | |
CN116686332A (zh) | 一种数据交换的控制方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |