CN115733799A - 网络拥塞控制方法及相关装置 - Google Patents

网络拥塞控制方法及相关装置 Download PDF

Info

Publication number
CN115733799A
CN115733799A CN202110980604.7A CN202110980604A CN115733799A CN 115733799 A CN115733799 A CN 115733799A CN 202110980604 A CN202110980604 A CN 202110980604A CN 115733799 A CN115733799 A CN 115733799A
Authority
CN
China
Prior art keywords
path
credit
feedback information
packet
paths
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
Application number
CN202110980604.7A
Other languages
English (en)
Inventor
毛修斌
郝爽
李品生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
XFusion Digital Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by XFusion Digital Technologies Co Ltd filed Critical XFusion Digital Technologies Co Ltd
Priority to CN202110980604.7A priority Critical patent/CN115733799A/zh
Publication of CN115733799A publication Critical patent/CN115733799A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例提供了一种网络拥塞控制方法及相关装置,该方法包括:网络装置通过多个路径发送第一数据流的多个报文,该多个路径中每个路径配置了信用量,该信用量指示该每个路径发送数据的容量的大小,该多个路径的信用量之和小于或等于该网络装置为该第一数据流维护的拥塞阈值;该网络装置接收包括第一路径是否拥塞的指示信息的第一反馈信息,该第一反馈信息为该多个报文中第一报文的反馈信息,该第一路径为该多个路径中用于发送该第一报文的路径;该网络装置基于该第一反馈信息重新确定该第一路径的信用量;该网络装置基于该第一路径的信用量重新确定该第一路径的负载量。本申请能够更好地实现负载均衡和网络拥塞控制。

Description

网络拥塞控制方法及相关装置
技术领域
本申请涉及通信技术领域,尤其涉及一种网络拥塞控制方法及相关装置。
背景技术
当前数据中心规模持续增大,承载的业务越趋复杂,数据中心网络(data centernetwork,DCN)承载了越来越大的压力。除了要求高吞吐外,许多业务对静态时延、长尾时延也有较为苛刻的需求,而当前DCN中存在多节点的负载不均导致整体吞吐率低,网络拥塞造成动态时延过长、链路故障恢复时间长等问题,持续困扰着相关设备供应和运营厂商。
当前数据中心广泛使用胖树(Fat Tree)组网,并在此基础上引入等价多路径(equal-cost multi-path Routing,ECMP)技术和拥塞控制算法等机制,在一定程度缓解负载不均和网络拥塞,但也由于存在哈希冲突和对突发流量响应差等问题,在大规模组网下表现不佳,已不能满足基于DCN的复杂应用的需求。
发明内容
本申请实施例公开了一种网络拥塞控制方法及相关装置,能够更好地实现网络流量的负载均衡和网络拥塞控制。
第一方面,本申请提供一种网络拥塞控制方法,该方法包括:
源端通过n个路径发送第一数据流的多个报文,该n个路径中每个路径配置了信用量,该信用量指示该每个路径发送数据的容量的大小,该n个路径的信用量之和小于或等于第一拥塞阈值,该第一拥塞阈值为该第一数据流的拥塞阈值,该n为大于1的整数;
该源端接收第一反馈信息,该第一反馈信息为第一报文的反馈信息,该第一反馈信息包括第一路径是否拥塞的指示信息,该第一路径为该n个路径中用于发送该第一报文的路径;该第一报文为该第一数据流的多个报文中的任意一个报文;
该源端基于该指示信息重新确定该第一路径的信用量;
该源端基于该第一路径的信用量重新确定该第一路径的负载量,在该指示信息指示该第一路径拥塞的情况下,该重新确定的该第一路径的负载量减少。
上述源端可以是网络设备,或者可以是网络设备中的智能网卡、板载网卡、带有网络接口的现场可编程逻辑门阵列(field programmable gate array,FPGA)、加速卡等。
在本申请实施例中,通过将单个流负载分担到多个路径上传输,实现了细粒度的负载均衡,减少了流级别的带宽竞争,提升了全网的负载均衡性能。另外,通过为单个流维护一个拥塞阈值,并将该拥塞阈值包括的信用量分配到该流的多个传输路径上,并基于每个路径传输的报文的反馈信息适应性调整对应路径的信用量,进而调整负载量,即通过流级别的拥塞控制和路径级别的信用量管理相结合的方法,实现了对多条路径拥塞状态的感知,并根据路径的拥塞状态对路径进行动态负载的调整,实现多条路径间的最优负载配比,消除特定路径拥塞造成的短板效应,获得整体吞吐率的提升,降低网络拥塞。
一种可能的实施方式中,上述第一反馈信息为该源端接收的一个反馈报文中的信息,该反馈报文中包括该多个报文中的m个报文的反馈信息,该m为大于1的整数;
该m个报文的反馈信息包括该m个报文传输过程中,每个报文的传输路径是否出现拥塞的指示信息。
在本申请实施例中,通过将多个报文的反馈信息聚合到一个反馈报文中进行发送,能够节省带宽资源,另外,通过将该多个报文的传输路径是否出现拥塞的指示信息一起携带在该反馈报文中,使得上述网络装置可以获知每个报文的传输路径的拥塞情况,从而进行对应路径的信用量和负载量的调整以更好地实现网络的负载均衡和拥塞控制。
一种可能的实施方式中,上述源端基于上述指示信息重新确定第一路径的信用量,包括:
该源端基于上述第一反馈信息计算第二拥塞阈值,该第二拥塞阈值为该第一数据流新的拥塞阈值;
该源端基于第一差值调整该第一路径的信用量,该第一差值为该第二拥塞阈值与计算该第二拥塞阈值前该第一数据流的拥塞阈值之间的差值。
一种可能的实施方式中,上述n个路径的信用量和剩余信用量之和等于上述第一拥塞阈值;上述源端基于第一差值调整该第一路径的信用量,包括:
在该第一差值大于零,且该第一差值与该剩余信用量之和大于该目标信用量的情况下,该源端将该第一路径的信用量增加两个该目标信用量,该目标信用量指示该第一数据流中的一个报文的数据量大小;或者,
在该第一差值小于零情况下,该源端将该第一路径的信用量减少第一信用量,该第一信用量为该第一差值与该目标信用量之和的绝对值。
在本申请实施例中,上述网络装置在接收到某个流的报文的反馈信息后,可以重新计算该流的拥塞阈值,若该报文的传输路径没有出现拥塞,那么新的拥塞阈值增加,那么该报文的传输路径的信用量也对应增加,从而可以有效利用该路径的带宽;若该报文的传输路径出现拥塞,那么新的拥塞阈值减小,那么该报文的传输路径的信用量也对应减小,从而可以有效缓解该路径的拥塞。另外,不管新的拥塞阈值相对于原来的拥塞阈值如何变化,只要接收到一个报文的反馈信息,目的端都会在该报文对应的传输路径的信用量上回填一个目标信用量,即增加一个目标信用量用于发送新的报文。
一种可能的实施方式中,上述第一反馈信息中还包括该第一报文在目的端出现乱序的指示信息;该第一路径每发送一个报文消耗该第一路径中信用量的目标信用量,该目标信用量指示该第一数据流中的一个报文的数据量大小;
上述源端基于该第一反馈信息重新确定该第一路径的信用量,包括:
该源端基于该第一报文在目的端出现乱序的指示信息维持该第一路径当前的信用量。
在本申请实施例中,在目的端引入报文乱序感知机制,识别因路径拥塞造成严重乱序的上述第一数据流的报文,并反馈到源端,源端接收到出现乱序指示信息的反馈后,可以维持对应路径的信用量不变,由于每发送一个报文消耗一个目标信用量,若目的端从该路径上接收到的报文连续出现超阈值的乱序情况,那么,源端中该路径的信用量会逐渐减少直至变为零。在该路径的信用量变为零之后,源端将不再通过该路径发送第一数据流的报文,由此,可以缓解甚至避免目的端出现严重乱序导致报文丢包的情况,从而减少重传的报文,节省带宽资源。另外,该路径中传输的报文连续出现超阈值的乱序情况,表明该路径的时延较大,出现了拥塞,本申请通过减少在该路径上发送报文甚至不发送报文,也进一步有效地缓解了该路径的拥塞情况。此外,本申请采用在目的端跟踪乱序程度的机制,相比于在源端对乱序程度的跟踪,减少了反馈信息在向源端传输的过程中的时延的干扰,这种机制获得的乱序指示信息更加准确。
一种可能的实施方式中,上述n个路径的信用量和剩余信用量之和等于该第一拥塞阈值;该方法还包括:
在该第一路径的信用量降为零的情况下,该源端通过该第一路径发送探测报文;
该源端接收该探测报文的第二反馈信息;在该第二反馈信息指示该第一路径未出现拥塞的情况下,该源端基于该第二反馈信息计算第三拥塞阈值,该第三拥塞阈值为该第一数据流新的拥塞阈值;
在第二差值与该剩余信用量之和大于该目标信用量的情况下,该源端将该第一路径的信用量增加目标信用量;该第二差值为该第三拥塞阈值与计算该第三拥塞阈值前该第一数据流的拥塞阈值的差值,该目标信用量指示该第一数据流中的一个报文的数据量大小。
在本申请实施例中,通过探测报文探测路径的拥塞情况,可以及时恢复可用的路径,提升负载分担的能力,避免因拥塞最终退化为单一路径发送第一数据流的报文。另外,上述探测报文中的负载(payload)可以为空或者为0,使得探测报文的发送对网络带宽几乎没有影响,并且探测报文的发送频率低,不会加重路径的拥塞状态。
一种可能的实施方式中,该方法还包括:
上述源端接收第三反馈信息,该第三反馈信息为该多个报文中的第二报文的反馈信息,该第三反馈信息包括指示该第二报文丢包的信息,该第二报文通过该n个路径中的第二路径发送;
该源端将该第二路径的信用量增加目标信用量,该目标信用量指示该第一数据流中的一个报文的数据量大小。
该第二路径与上述第一路径可以为相同的路径,或者为不同的路径。
在本申请实施例中,对于在目的端没有被正确接收,即出现丢包的报文,目的端可以向源端反馈该报文丢包的指示信息,由于目的端发送该丢包的报文已经消耗了对应传输路径上的一个目标信用量,因此,源端接收到该反馈信息后可以在该传输路径上回填一个目标信用量,以使得数据流对应的各个路径的信用量与该数据流的拥塞阈值匹配。
一种可能的实施方式中,该源端接收到目标序列号的报文的反馈信息,该目标序列号包括通过该n个路径发送的报文的全部序列号,该方法还包括:
在该第一数据流的拥塞阈值大于实际信用量的情况下,该源端将该第一数据流的拥塞阈值调整为与该实际信用量相等的值,该实际信用量为该n个路径的信用量与剩余信用量之和。
在本申请实施例中,若因链路故障导致第一数据流的报文或者报文的反馈信息的丢失,但因为有重传报文的机制,源端还是可以接收到上述目标序列号的报文的反馈信息,那么,在这种情况下,没有接收到的反馈信息对应的报文所消耗的信用量没办法回填,为了第一数据流对应的各个路径的信用量与该第一数据流的拥塞阈值匹配以更好地进行拥塞控制管理,源端可以将该第一数据流的拥塞阈值调整为与上述实际信用量相等的值。
一种可能的实施方式中,该方法还包括:上述源端将该第一数据流的报文的源端口号映射为n个虚拟端口号,该n个虚拟端口号与该n个路径一一对应。
在本申请实施例中,可以通过将流的报文的源端口号映射为多个不同的虚拟端口号以得到不同的元组信息,从而基于不同的元组信息将流的报文哈希到多个不同的路径上传输,从而实现了细粒度的负载分担。
第二方面,本申请提供一种网络装置,该装置包括:
发送单元,用于通过n个路径发送第一数据流的多个报文,该n个路径中每个路径配置了信用量,该信用量指示该每个路径发送数据的容量的大小,该n个路径的信用量之和小于或等于第一拥塞阈值,该第一拥塞阈值为该第一数据流的拥塞阈值,该n为大于1的整数;
接收单元,用于接收第一反馈信息,该第一反馈信息为第一报文的反馈信息,该第一反馈信息包括第一路径是否拥塞的指示信息,该第一路径为该n个路径中用于发送该第一报文的路径;该第一报文为该第一数据流的多个报文中的任意一个报文;
处理单元,用于基于该指示信息重新确定该第一路径的信用量;
该处理单元,还用于基于该第一路径的信用量重新确定该第一路径的负载量,在该指示信息指示该第一路径拥塞的情况下,该重新确定的该第一路径的负载量减少。
一种可能的实施方式中,该第一反馈信息为该网络装置接收的一个反馈报文中的信息,该反馈报文中包括该多个报文中的m个报文的反馈信息,该m为大于1的整数;
该m个报文的反馈信息包括该m个报文传输过程中,每个报文的传输路径是否出现拥塞的指示信息。
一种可能的实施方式中,该处理单元具体用于:
基于该第一反馈信息计算第二拥塞阈值,该第二拥塞阈值为该第一数据流新的拥塞阈值;
基于第一差值调整该第一路径的信用量,该第一差值为该第二拥塞阈值与计算该第二拥塞阈值前该第一数据流的拥塞阈值之间的差值。
一种可能的实施方式中,该n个路径的信用量和剩余信用量之和等于该第一拥塞阈值;
该处理单元具体用于:
在该第一差值大于零,且该第一差值与该剩余信用量之和大于该目标信用量的情况下,将该第一路径的信用量增加两个该目标信用量,该目标信用量指示该第一数据流中的一个报文的数据量大小;或者,
在该第一差值小于零情况下,将该第一路径的信用量减少第一信用量,该第一信用量为该第一差值与该目标信用量之和的绝对值。
一种可能的实施方式中,该第一反馈信息中还包括该第一报文在目的端出现乱序的指示信息;该第一路径每发送一个报文消耗该第一路径中信用量的目标信用量,该目标信用量指示该第一数据流中的一个报文的数据量大小;
该处理单元具体用于:基于该第一报文在目的端出现乱序的指示信息维持该第一路径当前的信用量。
一种可能的实施方式中,该n个路径的信用量和剩余信用量之和等于该第一拥塞阈值;
该发送单元,还用于在该第一路径的信用量降为零的情况下,通过该第一路径发送探测报文;
该接收单元,还用于接收该探测报文的第二反馈信息;
该处理单元,还用于在该第二反馈信息指示该第一路径未出现拥塞的情况下,基于该第二反馈信息计算第三拥塞阈值,该第三拥塞阈值为该第一数据流新的拥塞阈值;
该处理单元,还用于在第二差值与该剩余信用量之和大于该目标信用量的情况下,将该第一路径的信用量增加目标信用量;该第二差值为该第三拥塞阈值与计算该第三拥塞阈值前该第一数据流的拥塞阈值的差值,该目标信用量指示该第一数据流中的一个报文的数据量大小。
一种可能的实施方式中,该接收单元,还用于接收第三反馈信息,该第三反馈信息为该多个报文中的第二报文的反馈信息,该第三反馈信息包括指示该第二报文丢包的信息,该第二报文通过该n个路径中的第二路径发送;
该处理单元,还用于将该第二路径的信用量增加目标信用量,该目标信用量指示该第一数据流中的一个报文的数据量大小。
一种可能的实施方式中,该网络装置接收到目标序列号的报文的反馈信息,该目标序列号包括通过该n个路径发送的报文的全部序列号,该处理单元还用于:
在该第一数据流的拥塞阈值大于实际信用量的情况下,将该第一数据流的拥塞阈值调整为与该实际信用量相等的值,该实际信用量为该n个路径的信用量与剩余信用量之和。
一种可能的实施方式中,该处理单元还用于:
将该第一数据流的报文的源端口号映射为n个虚拟端口号,该n个虚拟端口号与该n个路径一一对应。
第三方面,本申请实施例提供一种网络装置,该装置可以包括:存储器以及与所述存储器耦合的处理器、发送接口和接收接口。其中,所述发送接口用于支持所述网络装置执行上述第一方面所提供的网络拥塞控制方法中发送的步骤。所述接收接口用于支持所述网络装置执行上述第一方面所提供的网络拥塞控制方法中接收的步骤。其中,发送接口和接收接口可以集成为一收发器。处理器用于支持网络装置执行上述第一方面所提供的网络拥塞控制方法中除发送以及接收以外的其他处理步骤。
需要说明的是,本发明实施例中的发送接口和接收接口可以集成在一起,也可以通过耦合器耦合。所述存储器用于存储实现上述第一方面描述的网络拥塞控制方法的计算机程序,所述处理器用于执行所述存储器中存储的计算机程序。存储器和处理器可以集成在一起,也可以通过耦合器耦合。
另外,本申请中存储器中的计算机程序可以预先存储也可以使用该装置时从互联网下载后存储,本申请对于存储器中计算机程序的来源不进行具体限定。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或连接,其可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。
一种可能的实施方式中,所述处理器用于执行所述存储器中存储的计算机程序,使得所述网络装置执行如下操作:
通过发送接口通过n个路径发送第一数据流的多个报文,该n个路径中每个路径配置了信用量,该信用量指示该每个路径发送数据的容量的大小,该n个路径的信用量之和小于或等于第一拥塞阈值,该第一拥塞阈值为该第一数据流的拥塞阈值,该n为大于1的整数;
通过接收接口接收第一反馈信息,该第一反馈信息为第一报文的反馈信息,该第一反馈信息包括第一路径是否拥塞的指示信息,该第一路径为该n个路径中用于发送该第一报文的路径;该第一报文为该第一数据流的多个报文中的任意一个报文;
基于该指示信息重新确定该第一路径的信用量;并基于该第一路径的信用量重新确定该第一路径的负载量,在该指示信息指示该第一路径拥塞的情况下,该重新确定的该第一路径的负载量减少。
一种可能的实施方式中,上述网络装置可以是芯片,例如可以是智能网卡、板载网卡、现场可编程逻辑门阵列(field programmable gate array,FPGA)、加速卡和图形处理器(graphics processing unit,GPU)等。
第四方面,本申请实施例提供一种系统,该系统包括第一网络装置和第二网络装置,该第一网络装置为上述第二方面任一项所述的网络装置,或者为上述第三方面所述的网络装置,该第二网络装置用于接收该第一网络装置发送的报文。
第五方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现上述第一方面任意一项所述的方法。
第六方面,本申请实施例一种计算机程序产品,当计算机程序产品在计算机上运行时,使得该计算机执行如上述第一方面任意一项所述的方法。
可以理解地,上述提供的第二方面和第三方面所述的网络装置、第四方面所述的系统、第五方面所述的计算机存储介质和第六方面所述的计算机程序产品均用于执行上述第一方面中任一项所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
图1和图2所示为本申请实施例提供的系统架构示意图;
图3所示为本申请实施例提供的网络拥塞控制方法的流程示意图;
图4所示为本申请实施例提供的拥塞阈值和路径信用量之间的关系示意图;
图5所示为本申请实施例提供的一种反馈报文的格式示例图;
图6所示为本申请实施例提供的一种位图示意图;
图7A所示为本申请实施例提供的三层胖树组网的拓扑示意图;
图7B所示为流在每个路径上的信用量变化情况的示意图;
图8A所示为本申请实施例提供的一种方法流程示意图;
图8B所示为本申请实施例提供的一种网络装置的虚拟组件架构示意图;
图9所示为本申请实施例提供的一种装置的逻辑结构示意图;
图10所示为本申请实施例提供的一种装置的硬件结构示意图。
具体实施方式
下面结合附图对本申请实施例进行描述。
参见图1,图1示例性示出了本申请适用的一种系统架构示意图,该系统架构包括第一设备110和第二设备120。该第一设备110可以向第二设备120发送报文,即该第一设备110可以是源端,该第二设备120可以是目的端。
上述第一设备110和第二设备120之间通过其所在网络的数据转发平面中的一个或多个网络设备进行转发实现通信。该第一设备110和第二设备120所在的网络例如可以是数据中心网络(data center network,DCN)等。
示例性地,该数据中心网络可以是胖树(fat tree)的组网形态,例如可以参见图2。图2示例性示出了一种可能的胖树拓扑结构的数据中心网络示意图。可以看到,该数据中心网络包括核心层、汇聚层和接入层,该三个层各个层中包括多个网络设备,与接入层的网络设备连接的可以是端节点,该端节点可以是服务器、存储设备(例如磁盘框)或者专用计算节点等任何带有网络通信能力的节点设备,该专用计算节点包括现场可编程逻辑门阵列(field programmable gate array,FPGA)、加速卡和图形处理器(graphics processingunit,GPU)等,该FPGA、加速卡和GPU都可以是阵列形式。其中,汇聚层的网络设备、接入层的网络设备和端节点可以分为m组,每一组属于一个容器(pod)中的设备,该m为大于1的整数。该网络设备例如可以是交换机、路由器或接入点等设备。
一种可能的实施方式中,上述第一设备110和该第二设备120可以是数据中心网络DCN中的端节点,例如可以是上述图2中的任意两个端节点。
需要说明的是,上述图2所示网络系统架构仅为一个示例,不构成对本申请适用的网络架构的限制。
在现有的通信网络中,虽然有等价多路径(equal-cost multi-path Routing,ECMP)技术和拥塞控制算法等机制来缓解负载不均和网络拥塞的情况,但是由于存在哈希冲突和对突发流量响应差等问题,在大规模组网下这两种机制无法很好地满足负载不均的控制需求和网络拥塞的控制的需求。
具体的,ECMP是一种逐跳的基于流的负载均衡策略。当某条流存在多条可选路径时,ECMP可以采用多种策略来进行选路,实现一定程度的负载均衡。其中的选路策略主要包括:基于五元组进行哈希选路、轮询使用多条可选路径和基于路径权重分配流。由于ECMP的实现规则明确,实现简单,所以当前被广泛使用。但是,ECMP机制存在以下不足:
1、存在哈希冲突,局部路径上会有流量聚集,对全网负载均衡效果不佳;
2、对网络拥塞的感知紧限于当前路径,不支持根据网络状态做动态的负载调整;
3、ECMP基于流选用路径,若不同流之间差异较大,例如大象流和老鼠流同时存在时,ECMP无法合理地为不同的流安排路径;
4、没有故障感知机制,因此,无论是哈希、轮询还是基于权重选路都有可能加重网络中的拥塞。
另外,现有的方案中,还有通过自适应路由(adaptive routing)的方式来应对网络中的故障和拥塞问题。自适应路由是相对于静态路由的一种转发方式,是指网络转发单元根据网络当前的状态,动态调整去往特定目的地的流的转发路径的技术。相比于静态路由,自适应路由允许存在更多的活跃路径,能更好的应对网络故障和拥塞,实现更优的网络性能。但是,一方面,自适应路由机制依赖于交换机等网络设备的配合,需要逐跳状态通知和自适应路由切换机制,不能兼容已有商用交换设备;另一方面,自适应路由机制通常采用集中式的路由管控机制,需要有专门的管理面来对全局路由做管理,端到端实现相对复杂。
基于上述的描述,如何在不出现上述描述的不足和缺陷的情况下实现较好的网络负载分担和拥塞控制是需要解决的技术问题,为此,本申请实施例提出了一种网络拥塞控制方法,相比于上述描述的现有的方案可以更好地实现网络的负载分担和网络拥塞控制。
参见图3,图3所示为本申请实施例提出的网络拥塞控制方法,该方法可以应用于上述图1或图2所述的系统架构,该方法可以包括但不限于如下步骤:
301、第一网络装置通过n个路径向第二网络装置发送第一数据流的多个报文,该n个路径中每个路径配置了信用量,该信用量指示该每个路径发送数据的容量的大小,该n个路径的信用量之和小于或等于第一拥塞阈值,该第一拥塞阈值为该第一数据流的拥塞阈值,该n为大于1的整数。
示例性地,上述第一网络装置可以是上述图1中的第一设备110,或者可以是该第一设备110中的智能网卡、板载网卡、带有网络接口的FPGA、GPU或者加速器等网络组件。上述第二网络装置可以是上述图1中的第二设备120,或者可以是该第二设备120中的智能网卡、板载网卡、带有网络接口的FPGA、GPU或者加速器等网络组件。
上述数据流的拥塞阈值指示当前可以发送的该数据流的报文量,该拥塞阈值可以根据网络的拥塞状态调整。该拥塞阈值可以是拥塞窗口。
上述第一数据流可以是该第一网络装置向第二网络装置发送的任意一个流。在具体实现中,本申请实施例也适用于控制流的拥塞控制。上述n个路径可以通过将上述第一数据流的报文中的元组信息映射为n个不同的元组信息后,基于该n个不同的元组信息进行哈希选路得到。具体的,哈希选路中,通过对报文中的元组信息进行哈希计算得到一个哈希值,该哈希值可以与某一个出端口对应,那么,可以将该报文从该某一个出端口发送出去。不同的出端口对应不同的传输路径,因此,将上述第一数据流的报文中的元组信息映射为n个不同的元组信息后,可以将该第一数据流的报文哈希到多个不同的路径上传输,从而实现了细粒度的负载均衡,减少流级别的带宽竞争。
可选的,上述基于n个不同的元组信息将不同的报文哈希到不同的路径上传输可以通过ECMP技术实现。
可选的,上述n个路径可以看成是n个虚拟路径,该n个虚拟路径映射到m个物理路径中,该m为大于1的整数,该m小于或等于n。在m小于n时,表明存在哈希冲突,上述n个路径中至少有两个路径映射到同一条物理路径上。
具体实施例中,上述元组信息可以为上述第一数据流的四元组、五元组或者七元组的信息。该四元组包括源网际互联协议(internet protocol,IP)地址、目的IP地址、源端口和目的端口;该五元组包括源IP地址、目的IP地址、协议号、源端口和目的端口;该七元组包括源IP地址、目的IP地址、协议号、源端口、目的端口、服务类型以及接口索引。
具体的,第一网络装置在发送上述第一数据流的报文之前,可以以预设的元组调整粒度来改变该第一数据流的报文中的元组信息,该预设的元组调整粒度可以是一个报文或者一定长度的连续报文序列(Flowlet)。该改变该第一数据流的报文中的元组信息主要是改变该第一数据流的报文中的源端口号。即为了将第一数据流分担到上述n个路径上传输,可以将该第一数据流的报文中的源端口号映射为n个不同的虚拟源端口号,从而实现将第一数据流的报文中的元组信息映射为n个不同的元组信息,基于该n个不同的元组信息将第一数据流的报文哈希到多个不同的路径上传输。
可选的,在不经过网关的二层转发网络里,也可以通过将上述第一数据流的报文的源IP地址映射为多个不同的虚拟IP地址获得多个不同的元组信息,从而基于该多个不同的元组信息实现将该第一数据流哈希到多个不同的路径上传输,以实现细粒度的负载分担。下面主要以改变上述第一数据流的报文的源端口号为例进行介绍,改变源IP地址的具体实现可以参考改变源端口号的具体实现。
一种可能的实施方式中,上述n个不同的虚拟源端口号可以是以一个端口号为基准值在一定偏移范围内生成的n个端口号;然后,第一网络装置可以对该n个不同的虚拟端口号做轮询得到报文中改变后的源端口号。为了便于理解,下面举例说明,参见表1。
表1
Figure BDA0003228907430000081
在表1中,假设上述基准值源端口号为200,上述一定的偏移范围为该基准值左右各偏移2以内的范围,即上述表1中的端口号198、199、200、201和202即为上述n个不同的虚拟源端口号。另外假设,上述第一数据流包括8个报文,该8个报文中原来的源端口号为100。那么,上述第一网络装置发送该8个报文之前,先基于上述表1改变该8个报文的源端口号。具体的,假设该8个报文的报文序列号为1至8,并且是以一个报文为上述预设的元组调整粒度。那么,基于上述表1,第一网络装置可以将报文1至报文8中的源端口号依次改为200、201、202、198、199、200、201和202。可以看到,第一网路设备是采用轮询的方式从表1中获取端口号来调整报文中的源端口号。
可选的,假设上述8个报文的报文序列号为1至8,并且是以连续的2个报文序列为上述预设的元组调整粒度。那么,基于上述表1,第一网络装置可以将报文1至报文8中的源端口号依次改为200、200、201、201、202、202、198和198。同样可以看到,第一网路设备是采用轮询的方式从表1中获取端口号来调整报文中的源端口号,但这次是每两个连续的报文序列轮询一次表1中的端口号。
需要说明的是,上述只是以从基准值端口号开始轮询,但是轮询可以从上述n个虚拟端口号中的任意一个端口号开始轮询,本申请对此不做限定。并且,上述以一个端口号为基准值在一定偏移范围内生成的n个端口号,在该基准值两侧的端口号可以不关于该基准值对称。或者,端口号的偏移范围可以只往左偏,或者,端口号的偏移范围可以只往右偏等等,本申请实施例对具体的端口号的偏移方向不做限制。
由于上述8个报文的源端口号改变了,那么其各自对应的元组信息也改变了,则该8个报文的元组信息哈希得到的出端口也改变了,从而可以通过多个出端口即通过多个路径转发该8个报文。
另一种可能的实施方式中,上述n个不同的虚拟端口号可以是随机生成的源端口号。然后,同样的,第一网络装置可以对该n个不同的虚拟端口号做轮询得到报文中改变后的源端口号。具体的轮询方式可以参见上述表1中相关的描述,此处不再赘述。
一般地,不同的元组信息哈希映射的出端口(或路径)不同,但在出现哈希冲突的情况下,不同的元组信息哈希映射的出端口(或路径)相同。可选的,为了映射到不同的出端口(或路径),可以重新生成一个源端口号,以此确保上述n个不同的虚拟端口号对应的报文映射到n个不同的出端口(或路径),从而更好地实现负载分担。
对于上述n个不同的虚拟端口号的两种生成方式,可以根据实际需要确定具体采用的生成方式。例如,若第一数据流为远程直接数据存取(remote direct memory access,RDMA)的流,可以采用上述两种生成方式中的任意一种。
而若第一数据流为传输控制协议(transmission control protocol,TCP)的流,由于在第二网络装置要通过元组信息来唯一标识该第一数据流以进行上下文(comtext)的查找,因此,为了保证每个虚拟端口号都能精确映射到该第一数据流上,可以采用上述以一个端口号为基准值在一定偏移范围内生成的n个端口号的生成方式确定该第一数据流的n个不同的虚拟端口号。并且,在第二网络装置中设置有将该第一数据流的n个不同的虚拟端口号映射为该第一数据流的原始端口号的机制。
基于上述的描述,第一网络装置可以将上述第一数据流的报文负载均衡到n个路径上发送,实现了细粒度的负载分担。但是在出现网络拥塞的时候,该如何对该n个路径上的负载量进行调控以有效地缓解网络拥塞也是急需解决的问题。路径上的负载量指的是通过该路径发送的报文量或者指的是通过该路径的流的发送速度等。
上述的介绍中,采用均匀使用各个路径的机制,没有考虑多个路径的负载状态差异,而通信网络中流量状态复杂,每个路径的实际负载不可能完全均衡,这就容易导致负载过重的路径出现拥塞。另外,现有的方案中没有适配多路径的拥塞控制机制,多个路径中可能存在局部几条比较拥塞的路径,直接使用针对单个路径的拥塞控制算法的话,会形成路径带宽“木桶短板”,影响整体吞吐,违背多路径充分利用链路带宽的原始意图。具体的,已有单个路径的拥塞算法及其实现,如果直接在多路径场景使用的话,会因为不能区分拥塞来自于哪条路径,只能对所有路径统一做升降速,最拥塞的那条路径会持续反馈拥塞信息,拖慢所有路径,从而成为短板路径。为此,本申请实施例中提出了一种多路径拥塞控制机制。
该多路径拥塞控制机制是以流为粒度来维护拥塞阈值,并且以该流的传输路径为粒度进行信用量的管理。信用量可以指示发送数据的容量的大小,该数据的容量可以是发送的报文占用的字节数。为了便于理解,以上述第一数据流为例,可以参见图4。
在图4中可以看到,该第一数据流有属于自己的拥塞阈值CW_flow,即在第一网络装置中维护有该第一数据流的拥塞阈值CW_flow。并且,由于该第一数据流通过上述n个路径传输报文,那么,第一网络装置可以将该CW_flow包括的信用量分配到该n个路径上,该n个路径分配得到的信用量的总和可以等于该CW_flow,即
Figure BDA0003228907430000101
可选的,
Figure BDA0003228907430000102
该N_fraction为剩余信用量。示例性的,该剩余信用量小于目标信用量,该目标信用量指示该第一数据流中的一个报文的数据量大小。在第一网络装置为该n个路径分配信用量时,一般将用于发送整数个报文的信用量分配给各个路径,分配完成后若还剩余不足于发送一个报文的字节数,那么可以将该字节数表示为N_fraction,即上述剩余信用量。
基于上述的描述,一种可能的实施方式中,在初始配置时,第一网络装置可以将上述第一数据流的拥塞阈值CW_flow包括的信用量均分到上述n个路径中,即该n个路径每个路径初始配置得到的信用量可以是CW_flow/n。可选的,此时,上述剩余信用量N_fraction为零。或者,可选的,第一网络装置也可以按照其它的分配规则将第一数据流的拥塞阈值CW_flow包括的信用量分配给该n个路径,本申请实施例对此不做限制。该其它的分配规则例如可以是相对拥塞的路径分配较少的信用量,或者优先级高的路径分配较多的信用量等等。
一种可能的实施方式中,上述第一数据流的拥塞阈值CW_flow的初始值可以设置为带宽时延积(bandwidth delay product,BDP)或者是接近于该BDP的值,以获得较高的起始速率。可选的,该BDP的值可以基于网络中第一网络装置到第二网络装置之间的单条路径的的静态时延来估计。该带宽时延积是一种网络性能指标,在数据通信中,带宽时延乘积又称带宽延时乘积或带宽延时积等,指的是一个数据链路的能力(每秒比特)与来回通信延迟(单位秒)的乘积。
在具体实施例中,第一网络装置为上述第一数据流的n个路径配置好初始信用量之后,可以按照上述介绍的轮询方式,将第一数据流的报文的源端口号映射为上述n个不同的虚拟端口号来将第一数据流的报文分流到该n个路径上发送。在该n个路径的某个路径上每发送一个报文就消耗一个目标信用量,即消耗发送一个报文的信用量。
302、第二网络装置接收上述第一数据流的多个报文。
上述第一网络装置通过上述n个路径向第二网络装置发送上述第一数据流的多个报文之后,该第二网络装置可以从该n个路径上接收到该第一数据流的多个报文。
一种可能的实施方式中,若该第一数据流为TCP流,那么,由于要通过该第一数据流的原始元组信息来唯一标识该第一数据流以进行上下文(comtext)的查找,因此,第二网络设备接收到该第一数据流的报文之后,可以基于预先配置好的映射关系,基于该报文中的虚拟源端口号查找到该报文的原始源端口号,从而恢复该报文的原始元组信息,第二网络设备基于该报文的原始元组信息继续执行后续查找上下文等操作。可选的,该预先配置好的映射关系即为上述n个不同的虚拟端口号与该第一数据流的原始源端口号之间的映射关系。
303、第二网络装置向第一网络装置发送上述第一数据流的多个报文的反馈信息。
在具体实施例中,第二网络装置接收到上述第一数据流的报文之后,可以针对接收到的每一个报文向第一网络装置回复一个反馈信息。该反馈信息可以包括指示该每一个报文的传输路径是否出现拥塞的信息。
以第一报文为例,该第一报文为第二网络装置接收到的该第一数据流的报文中的任意一个,该第一报文通过上述n个路径中的第一路径传输到该第二网络装置。那么,第二网络设备接收到该第一报文之后,可以通过接收该报文的端口号或者通过报文中的源端口号确定该报文是通过第一路径发送的报文。然后,第二网络设备可以向第一装置发送该第一报文的反馈信息(为了便于后续的描述,称为第一反馈信息),该第一反馈信息可以包括指示该第一路径是否拥塞的信息。
可选的,可以通过确认字符(acknowledge character,ACK)报文或者选择性确认字符(Selective ACK,SACK)报文携带上述反馈信息发送到第一网络装置。
一种可能的实施方式中,第二网络装置在发送报文的反馈信息时,可以直接将该报文的源端口号作为该反馈信息的目的端口号。或者,可选的,也可以使用预设定的端口号作为该报文的目的端口号,例如,当一个反馈报文(例如可以是上述ACK报文)中包括m个报文的反馈信息时,可以使用该预设定的端口号作为该反馈报文的目的端口号。不管是使用接收到的报文的源端口号还是使用与设定的端口号作为反馈报文的目的端口号,都可以将该反馈报文发送到第一网络装置。该m个报文为上述第一网络装置向第一网络装置发送的第一数据流的多个报文中的部分或全部报文,m为大于1的整数。
304、该第一网络装置接收上述反馈信息,并基于该反馈信息重新确定上述n个路径的信用量,然后,基于该重新确定的n个路径每个路径的信用量确定该每个路径的负载量。
上述第一网络装置接收到第二网络装置发送回来的第一数据流的报文的反馈信息之后,可以基于每一个反馈信息更新该第一数据流的拥塞阈值,然后基于新的拥塞阈值重新确定该每一个反馈信息对应的报文的传输路径的信用量。可选的,第一网络装置可以根据反馈信息所在的报文中的目的端口号确定对应的路径。可选的,该基于报文的反馈信息计算新的拥塞阈值可以采用现有的拥塞控制算法来计算,没有增加计算复杂度。为了便于理解,下面以第一报文为例进一步描述。
一种可能的实施方式中,在上述第一反馈信息中包括指示上述第一路径出现拥塞的信息的情况下,例如该第一反馈信息包括拥塞通知返回(congestion notification-echo,CE)标记,该CE标记位置1的情况下,表明上述第一报文在上述第一路径传输过程中出现了拥塞,那么,第一网络装置基于该第一反馈信息计算得到该第一数据流的新的拥塞阈值,该计算拥塞阈值的方法可以采用现有的拥塞控制的计算方法,本申请实施例对此不做限制。该新的拥塞阈值相比于计算前的第一数据流的拥塞阈值变小。那么,为了缓解上述第一路径中的拥塞,可以将该第一路径的信用量减少,从而减少从第一路径发送的第一数据流的报文数量。具体的,该第一路径的信用量减少第一信用量,该第一信用量为第一差值与上述一个目标信用量之和的绝对值,该第一差值为上述新的拥塞阈值与计算前的第一数据流的拥塞阈值之间的差值,该差值小于零。这是因为第一网络装置接收到该第一反馈信息后,需要回填即重新增加一个目标信用量到第一路径的信用量中,以用于继续发送报文;而由于第一路径出现拥塞,计算得到的新的拥塞阈值变小,则第一路径也对应减少拥塞阈值的减少量,那么拥塞阈值的减少量和增加的一个目标信用量之和的绝对值即为该第一路径实际调整的值。
为了便于理解,举例说明。例如,假设一个报文的长度即一个目标信用量为10个字节,该第一差值为-5字节,那么,该第一信用量为5字节,即第一路径的信用量减少5字节。或者,可以将信用量归一化,一个目标信用量用1表示,那么,该第一差值为-0.5,则该第一信用量为0.5,即第一路径的信用量减少0.5。
一种可能的实施方式中,在上述第一反馈信息中包括指示上述第一路径未出现拥塞的指示信息的情况下,例如该第一反馈信息包括拥塞通知CE标记,该CE标记位未置1的情况下,表明上述第一报文在上述第一路径传输过程中未出现拥塞。那么,第一网络装置基于该第一反馈信息计算得到该第一数据流的新的拥塞阈值,该计算拥塞阈值的方法可以采用现有的拥塞控制的计算方法,本申请实施例对此不做限制。该新的拥塞阈值相比于计算前的第一数据流的拥塞阈值变大。那么,为了提高第一数据流的传输速度,可以将该第一路径的信用量增加,从而增加从第一路径发送的第一数据流的报文数量。具体的,上述新的拥塞阈值与上述计算前的第一数据流的拥塞阈值之间的差值大于零,在该差值与上述剩余信用量N_fraction之和大于一个目标信用量的情况下,该第一路径的信用量增加两个目标信用量,即增加两个报文的数据量。这是因为第一网络装置接收到该第一反馈信息后,需要回填即重新增加一个目标信用量到第一路径的信用量中,以用于继续发送报文;另外,由于第一路径未出现拥塞,计算得到的新的拥塞阈值变大,则第一路径也可以适应性增加信用量,在该差值与上述剩余信用量N_fraction之和大于一个目标信用量的情况下,表明有足够发送一个报文的信用量可用,所以将该信用量分配给该第一路径,所以该第一路径可以增加两个报文长度的信用量,即增加两个目标信用量。
一种可能的实施方式中,上述第一路径可以以相同的粒度增加或者减少信用量,例如,假设第一路径的信用量是以一个目标信用量的整数倍增加的,那么,第一路径的信用量可以以一个目标信用量的整数倍较少;再例如,假设第一路径的信用量是以0.5个报文长度的整数倍增加的,那么,第一路径的信用量可以以0.5个报文长度的整数倍较少。
基于上述的描述,第一网络装置重新确定好上述n个路径的信用量之后,即确定了在该n个路径每个路径上传输的负载量,基于该重新确定的负载量继续在该n个路径上发送第一数据流的报文。
上述介绍的网络拥塞控制方法中,收到的每个不带拥塞指示信息的反馈信息都会贡献第一数据流的拥塞阈值中剩余信用量的增量,虽然只有使剩余信用量突破一个目标信用量的那一个反馈信息会带来对应路径的信用量增加,但是从全局来看每个路径获得信用量增加的机会仍然是均等的。拥塞阈值减少时会直接减少对应路径的信用量,所以信用量减少和路径之间的关联是精准对应的。考虑多个路径中有局部几条拥塞的场景,那么拥塞路径会因为持续收到携带拥塞指示信息的反馈信息而不断减少信用量,而这部分减少的信用量会被其他路径通过增加信用量的方式获得,从而实现信用量在不同路径间的轮换(shuffle),并充分利用了非拥塞路径的带宽。
另外,故障路径上发送的报文不会被回复反馈信息,那么故障路径上的信用量在一段时间之后例如一个往返时间(round-trip time,RTT)之后就会降成零,该故障路径从可用路径中被踢除掉,从而减少报文的丢包,节省第一网络装置的发送资源。一个RTT的故障收敛时间也是非常好的故障收敛性能。
可选的,上述多路径传输第一数据流的报文的方案中,通常使用8个路径就可以获得较好的负载均衡性能。
一种可能的实施方式中,对于上述一个反馈报文中包括m个报文的反馈信息的情况,为了便于第一网络装置识别该多个反馈信息对应的报文的传输路径,本申请实施例中,第二网络装置可以记录从上述n个路径每个路径上接收的报文在传输路径中是否遭遇拥塞的情况,并将该记录的情况携带在该反馈报文中告知第一网络装置。
示例性地,从第一网络装置向第二网络装置发送的第一数据流的报文中包括拥塞通知(congestion notification,CN)标记位,在报文在传输过程中遭遇拥塞的情况下,出现拥塞的网络设备会将该报文中的CN标记位置1后再继续发送。另外,在反馈报文中可以包括CE标记位,用于将路径是否拥塞的指示信息反馈到第一网络装置。若第二网络装置接收到的报文中的CN标记位置1,则表明该接收的报文对应的传输路径上出现了拥塞,那么,在反馈报文中,该接收的报文对应的CE标记位也置1,用于告知第一网络装置该接收的报文的传输路径出现了拥塞。反之,若第二网络装置接收到的报文中的CN标记为未置1,则表明该接收的报文对应的传输路径上没有出现拥塞,那么,在反馈报文中,该接收的报文对应的CE标记位也不置1,以用于告知第一网络装置该接收的报文的传输路径没有出现拥塞。
上述第二网络装置记录从上述n个路径每个路径上接收的报文在传输路径中是否遭遇拥塞的情况有很多中记录方式,下面示例性地介绍三种可能的实现方式:
第一种实现方式,上述第二网络装置记录从上述n个路径每个路径上接收的报文在传输路径中是否遭遇拥塞的情况包括:记录从上述n个路径每个路径上接收的报文的个数,以及记录该接收到的报文中遭遇拥塞的报文的个数。这样,当第一网络装置接收到包括这些信息的反馈报文后,可以获知遭遇拥塞的报文的个数和未遭遇拥塞的报文的个数,以此来确定降拥塞阈值的计算次数和升拥塞阈值的计算次数。该降拥塞阈值的计算次数指的是上述第一数据流的拥塞阈值降低的计算的次数,每当收到一个报文遭遇拥塞的反馈信息都会进行一次降拥塞阈值计算。该升拥塞阈值的计算次数指的是上述第一数据流的拥塞阈值增加的计算的次数,每当收到一个报文未遭遇拥塞的反馈信息都会进行一次升拥塞阈值计算。为了便于理解上述第二网络装置记录的信息,示例性地,可以参见表2。
表2
路径0(path0) 路径1(path1) …… 路径n-1(path n-1)
Num_0 Num_1 …… Num_n-1
CE_acc_0 CE_acc_1 …… CE_acc_n-1
表2中Num_i表示第二网络装置从路径i上接收到的第一数据流的报文的个数,该i的取值为从0到n-1;CE_acc_i包括第二网络装置从路径i上接收到的遭遇拥塞的第一数据流的报文的个数。例如,对于路径0,假设第二网络装置在该路径0上接收到3个第一数据流的报文,该3个报文中前两个报文的CN标记位没有置1,而是默认值0,第三个报文的CN标记位置1,那么,Num_0记录的信息为“3”,CE_accout_0记录的信息可以为“1”。
第二种实现方式,上述第二网络装置记录从上述n个路径每个路径上接收的报文在传输路径中是否遭遇拥塞的情况包括:对于该每个路径上接收到的报文,若某个报文在传输路径上遭遇了拥塞,则记录一个预设的指示报文遭遇拥塞的标记,若某个报文在传输路径上未遭遇拥塞,则记录一个预设的指示报文未遭遇拥塞的标记。纪录完成,将这些标记一起携带在反馈报文中发送给第一网络装置,第一网络装置可以根据该反馈报文中预设的指示报文遭遇拥塞的标记的个数确定降拥塞阈值的计算次数,根据该反馈报文中预设的指示报文未遭遇拥塞的标记的个数确定升拥塞阈值的计算次数。该预设的指示报文遭遇拥塞的标记例如可以“1”,或者可以是“Y”等等,该预设的指示报文未遭遇拥塞的标记例如可以“0”,或者可以是“N”等等,本申请实施例对该预设的标记不做限制。
第三种实现方式,上述第二网络装置记录从上述n个路径每个路径上接收的报文在传输路径中是否遭遇拥塞的情况包括:分别统计并记录该接收到的报文中遭遇拥塞的报文的个数和未遭遇拥塞的报文的个数。然后,将该记录的遭遇拥塞的报文的个数和未遭遇拥塞的报文的个数一起携带在反馈报文中发送给第一网络装置,第一网络装置可以根据该反馈报文中遭遇拥塞的报文的个数确定降拥塞阈值的计算次数,根据该反馈报文中未遭遇拥塞的报文的个数确定升拥塞阈值的计算次数。
可选的,上述第二网络装置可以通过在上下文context中记录上述从上述n个路径每个路径上接收的报文在传输路径中是否遭遇拥塞的情况。
记录完成上述从上述n个路径每个路径上接收的报文在传输路径中是否遭遇拥塞的情况之后,第二网络装置可以通过一个反馈报文将上述记录的信息发送给第一网络装置。具体的,第二网络装置可以在该反馈报文中增加一个扩展报文头,将上述记录的信息复制到该扩展报文头中反馈给第一网络装置。例如,可以参见图5。图5以上述第一种实现为例示例性示出了一种反馈报文的格式示例图,可以看到,反馈报文的报文头中除了包括媒体存取控制(media access control address,MAC)地址、IP地址、用户数据报协议(userdatagram protocol,UDP)信息和基本传输报文(base transport header,BTH),还包括一个扩展头,该扩展头中包括上述表2所示的信息。反馈报文中的负载(payload)可以为空。需要说明的是,还可以将上述第二种实现方式或第三种实现方式中记录的信息复制到上述扩展报文头中发送给上述第一网络装置。
第一网络装置接收到上述包括多个反馈信息的反馈报文之后,可以基于该反馈报文中的每一个反馈信息计算上述第一数据流的拥塞阈值,并基于新的拥塞阈值确定对应路径的信用量和负载量,具体的实现操作可以参见上述步骤304中对应的描述,此处不再赘述。
一种可能的实施方式中,上述反馈报文包括的多个反馈信息,可以是通过上述n个路径中部分路径发送的报文的反馈信息,或者,可以是通过该n个路径发送的部分报文的反馈信息,不限于是该n个路径中全部路径发送的报文的反馈信息。可选的,在反馈报文中,若不包括上述n个路径中的某个路径上的发送的报文的反馈信息,那么,在该反馈报文中,该某个路径对应的报文个数以及拥塞情况的信息为空或者为0。
基于上述的描述,将第一数据流负载分担到上述n个路径上进行传输,但由于不同路径的时延不同,这就导致第二网络装置接收到的报文出现乱序的情况,为了缓解多路径时延差异造成的乱序影响,可以使用乱序接收(out-of-order receiving,OOR)技术来处理接收到的报文。使用OOR技术时通常需要引入位图(bitmap)来记录接收到的报文情况。为了便于理解,可以示例性地以图6为例说明。
在图6中,假设bitmap包括15个比特位,即bitmap的长度为15,一般地,bitmap中位置序号为1的比特位记录报文的序列号是预设的,即预先指定该位置序号为1的比特位记录的报文序列号,然后,该预设的报文序列号之后的报文按序列号的顺序依次记录在位置序号为1的比特位后面的比特位中。例如,假设位置序号为1的比特位记录的是序列号为100的报文,那么,后面位置序号2至15的比特位依次记录的是序列号为101至114的报文,即预设接收到的报文的序列号和bitmap的比特位存在一一映射的关系。具体的,bitmap中比特位的初始值可以为0,接收到一个报文后,该报文的序列号映射的比特位置1,例如,接收到的报文的序列号为101,那么位置序号为2的比特位置1,以此来记录接收到的报文的序列号,从而通过bitmap可以监控报文的乱序情况。
上述图6中所示的bitmap的长度以及报文的序列号仅为一个示例,不构成对本申请实施的限制,本申请实施例对bitmap的长度和具体接收到的报文序列号不做限制。
上述bitmap的长度是存在一定限制的,当多个路径的时延差异较大时,例如某些路径出现拥塞时,可能存在接收的报文的序列号超过bitmap能够记录的最大的报文序列号的情况(这种情况可以称为bitmap溢出),而超过bitmap能够记录的最大的报文序列号的报文只能被丢弃,然后等待重传,该额外的重传会造成带宽损失。为了减少重传造成的带宽损失,本申请实施例提供了一种控制多路径间乱序程度的方案,可以在乱序超过一定程度时,主动将时延最大的路径踢出,保证多个路径之间的时延差控制在一定范围内,避免出现bitmap溢出。
具体的,第二网络装置中可以设置一个乱序程度阈值(oor_degree_max),该阈值为两个报文序列号之间的差值的绝对值中可接受的最大值,该两个报文序列号为当前接收的报文的序列号和已接收报文的最大序列号。该可接受的最大值可以根据实际情况设定,本申请实施例对此不做限制。
然后,在第二网络装置接收到一个报文后,以该报文为上述第一报文为例,第二网络装置获取该第一报文中的序列号,并获取接收该第一报文之前已经接收到的报文的最大序列号,计算第一报文的序列号和该最大序列号之间的差值的绝对值。若该绝对值大于上述乱序程度阈值,表明接收到的报文中已经出现了严重的乱序,第二网络装置基于该乱序情况向第一网络装置发送该第一报文的反馈信息(即上述的第一反馈信息),该第一反馈信息除了包括指示上述第一路径是否出现拥塞的信息之外,还包括第一报文在目的端即在该第二网络装置中出现乱序的指示信息。该出现乱序的指示信息例如可以是在该第一反馈信息的报文中的位图溢出(Bitmap overflow)标记位置1。
第一网络装置接收到包括上述出现乱序的指示信息的第一反馈信息后,由于该第一反馈信息为对上述第一报文的反馈信息,该第一报文是在上述第一路径中传输的,则第一网络装置可以维持该第一路径当前的信用量不变,并将第一数据流当前的拥塞阈值减去一个目标信用量以维持路径信用量和拥塞阈值之间的平衡。即对于接收到包括上述出现乱序的指示信息的第一反馈信息,不再执行前述的回填一个发送报文长度到该第一路径的信用量中的操作,也不再执行计算新的拥塞阈值来重新确定该第一路径的信用量的操作。
基于上述的描述,由于每发送一个报文消耗一个目标信用量,若第二网络装置从第一路径上接收到的报文连续出现超阈值的乱序情况,那么,第一网络设备中第一路径的信用量会逐渐减少直至变为零。在该第一路径的信用量变为零之后,该第一网络装置将不再通过该第一路径发送第一数据流的报文。由此,可以缓解甚至避免第二网络装置中出现bitmap溢出的情况,从而减少重传的报文,节省带宽资源。另外,该第一路径中传输的报文连续出现超阈值的乱序情况,表明该第一路径的时延较大,出现了拥塞,本申请实施例通过减少在该第一路径上发送报文甚至不发送报文,也进一步有效地缓解了该第一路径的拥塞情况。
一种可能的实施方式中,在上述第一路径的信用量降为0之后,可以通过路径恢复机制恢复在该第一路径上发送第一数据流的报文。
在具体实施例中,第一网络装置可以监控上述n个路径的信用量,当某个路径的信用量降为0之后,触发路径恢复机制。一种可能的实施方式中,第一网络装置中可以为上述n个路径设置信用量赤字标识字段,该信用量赤字标识字段可以包括n个比特位,每个比特位用于标记该n个路径中的一个路径的信用量是否出现赤字,即信用量是否降为零。以上述第一路径为例,若该第一路径中的信用量降为零,则该信用量赤字标识字段中该第一路径对应比特位置1,当第一网络装置检测到该第一路径对应比特位置1后,启动对该第一路径的恢复机制。
具体的,对于该第一路径的恢复机制,第一网络装置可以通过该第一路径发送一个探测报文给第二网络装置,通过该第一路径发送探测报文与上述通过第一路径发送第一数据流的报文的处理相同,都是将报文的源端口号映射为该第一路径对应的虚拟端口号后发出。若该探测报文在第一路径的传输过程中遭遇拥塞,该探测报文也可以被经过的网络设备打上拥塞的标记,若未遭遇拥塞,则第二网络设备接收到的该探测报文没有拥塞标记。
第二网络装置接收到上述第一网络装置发送的探测报文后,同样地,向第一网络装置发送该探测报文的反馈信息,该反馈信息也包括指示第一路径是否拥塞的信息。第一网络装置接收到该反馈信息之后,若该反馈信息指示第一路径出现拥塞,即该反馈信息所在的报文中的CE标记位置1,那么,第一网络装置不针对该反馈信息做其它处理。
可选的,在该反馈信息指示第一路径出现拥塞的情况下,第一网络装置不再继续通过第一路径向第二网络装置发送探测报文,而是间隔一段时间后再通过该第一路径向第二网络装置发送探测报文,期间第一网络装置可以通过其它信用量降为零的路径向第二网络装置发送探测报文。
若上述反馈信息指示第一路径未出现拥塞,即该反馈信息所在的报文中的CE标记位未置1,那么,第一网络装置基于该反馈信息重新计算第一数据流的拥塞阈值。在该新的拥塞阈值与计算前第一数据流的拥塞阈值的差值加上上述剩余信用量的和大于一个目标信用量的情况下,第一网络装置可以将一个目标信用量分配给第一路径,从而恢复在第一路径上发送第一数据流的报文,同时,将上述信用量赤字标识字段中该第一路径对应比特位恢复默认值,例如置0。
另外,可选的,在上述新的拥塞阈值与计算前第一数据流的拥塞阈值的差值加上上述剩余信用量的和仍然小于一个目标信用量的情况下,第一网络装置继续通过第一路径向第二装置发送探测报文,之后的操作参见前述的描述,此处不再赘述。
可选的,上述探测报文中的负载(payload)可以为空或者为0,使得探测报文的发送对网络带宽几乎没有影响,并且探测报文的发送频率低,不会加重路径的拥塞状态。
通过上述路径恢复机制,可以及时恢复可用的路径,提升负载分担的能力,避免因拥塞最终退化为单一路径发送第一数据流的报文。
一种可能的实施方式中,上述第一数据流的报文在传输过程中可能出现丢包,丢包会造成第一数据流的拥塞阈值的值与上述n个路径的信用量以及剩余信用量的和不相等,即在第一数据流的飞行(inflight)报文为0时,该第一数据流的拥塞阈值的值会大于该n个路径所有路径可用信用量与剩余信用量的和。长期丢包累计会造成这个差值越来越大,导致拥塞控制管理不准确。该第一数据流的飞行(inflight)报文为0指的是:第一网络装置接收到目标序列号的报文的反馈信息,该目标序列号包括通过上述n个路径发送的报文的全部序列号。虽然第一网络装置接收到该目标序列号的报文的反馈信息,但对于因丢包重传的报文也消耗对应路径的信用量,而由于丢包,第一网络装置没有接收到这些丢包的报文的反馈信息,所以不会回填对应路径的信用量,从而导致前述的不相等出现。
当前主要会发生丢包的场景包括上述bitmap溢出、链路故障和发生伪重传(重复报文)时没反馈信息。下面分情况介绍。
对于bitmap溢出导致丢包的情况,在第二网络装置接收到序列号溢出bitmap的报文时,可以向第一网络装置发送一个该报文的反馈信息,该反馈信息用于指示该报文没有被正确接收,即出现了丢包,例如该反馈信息可以是非确认字符NACK。第一网络装置接收到该反馈信息之后,可以在该报文的传输路径的信用量回填一个目标信用量,即将该传输路径的信用量增加一个目标信用量。
对于上述链路故障导致丢包的情况,由于链路故障丢失的可能是报文,或者丢失的可能是该报文的反馈信息。对于这种情况,一种可能的实现方式中,在上述第一数据流的inflight报文为0时,第一网络装置可以检查上述n个路径的信用量,若该n个路径的信用量和剩余信用量的和与第一数据流的拥塞阈值的值不相等,第一数据流的拥塞阈值的值更大,那么,第一网络装置可以将该第一数据流的拥塞阈值减少,使得该第一数据流的拥塞阈值值等于该n个路径的信用量和剩余信用量的和。
对于上述链路故障导致丢包的情况,另一种可能的实施方式中,可以采用类似光纤通道(fibre channel,FC)链路层故障恢复的方案,具体的,第一网络装置每发送M个报文就发送一个特定的同步信息给第二网络装置,第二网络装置可以基于该同步信息检查接收到该同步信息之前接收到的报文是否为M个,若为M个,则没有丢包,若小于M个,则出现了丢包。同理,第二网络装置每发送M个报文的反馈信息也回复一个同步信息,第一网络装置可以基于该同步信息检查接收到该同步信息之前接收到的反馈信息是否为M个,若为M个,则没有丢包,若小于M个,则出现了丢包。基于该方法也可以检查是否有路径的信用量丢失,如果有,则降低第一数据流的拥塞阈值使得等于该n个路径的信用量和剩余信用量的和。
对于上述发生伪重传的情况,第二网络装置接收到重复的报文后,同样的也向第一网络装置发送该报文的反馈信息,使得第一网络装置可以基于该反馈信息确定对应传输路径的信用量,具体的实现方式参见前述步骤304中对应的描述,此处不再赘述。
为了便于理解上述介绍的网络拥塞控制方法,下面结合图7A和图7B示例性介绍。
图7A所示为一个三层胖树组网的拓扑示意图。图7A中假设包括4096个端节点,该端节点与接入层的网络设备连接,该端节点例如可以是上述图2中所述的服务器等。该4096个端节点分布于16个pod之内,每个pod内为一个2层(接入层和汇聚层)的胖树组网拓扑。假设每个pod内接入层和汇聚层的组网收敛比为2:1,例如每个pod内接入层的网络设备为16个,汇聚层的网络设备为8个。接入层的网络设备又称为架顶(top of rack,TOR)节点,汇聚层的网络设备又称为叶子(leaf)节点,接入层和汇聚层包括的每个网络设备都对应有编号,具体的编号可以参见图7A。另外,汇聚层的leaf结点与核心层的脊(spine)节点连接,其中,假设核心层包括8个脊节点集合(spine set),每个脊节点集合包括8个脊节点。假设,通过5跳节点转发报文时的静态BDP为20个最大传输单元(maximum transmission unit,MTU),即通过5跳节点转发报文时的静态BDP为20*MTU。图7A中省略了部分链路和节点的表示。
为了便于说明,假设本实施例中每个节点的每条流使用的上述n个虚拟端口号为4个虚拟端口号。这里通过如下三条常稳数据流(流1、流2和流3)来说明多路径技术的工作方式和效果。
流1:从节点A发往节点E;节点A为pod 0中TOR节点4096下0号节点,节点E为pod 15中TOR节点4456下15号节点。
流2:从节点B发往节点E;节点B为pod 0中TOR节点4096下15号节点。
流3:从节点C发往节点D;节点C为pod 15中TOR节点4471下255号节点,节点D为pod15中TOR节点4456下0号节点。
图7A中,在节点A的左侧示例性示出了流1的报文,每一个小方块表示一个报文,方块中的“1”用于表示是流1的报文。在节点B的右侧示例性示出了流2的报文,每一个小方块表示一个报文,方块中的“2”用于表示是流2的报文。在节点C的右侧示例性示出了流3的报文,每一个小方块表示一个报文,方块中的“3”用于表示是流3的报文。图7A中链路上的报文表明该报文正在该链路上传输。
图7B中示出了上述3个流在每个路径上的信用量的情况,及各个路径的信用量随网络状态变化的过程。
初始建流:以流1为例说明。对于流1,节点A中的多路径软件逻辑单元会选择一个基准的源端口号(base_port),多路径使用的虚拟源端口号通过在基准端口号上做偏移的方式生成,例如假设流1的可用源端口为base_port~base_port+3。另外,流1是从节点A发往节点E的流,需要经过5跳节点转发,由于上述假设通过5跳节点转发报文时的BDP的值为20*MTU,那么,流1的初始拥塞阈值可以取一个接近该BDP的值,例如可以是16*MTU,并将与初始拥塞阈值相同的总信用量均匀分配给流1的4条传输路径,即每条传输路径获得4*MTU的初始信用量。流2的初始建流可以参见该流1初始建流的描述。对于流3,由于流3是从节点C发往节点D的流,只需经过3跳节点转发,但是,为了预留一些宽裕的信用量,也可以将流3的初始拥塞阈值设置为一个接近通过5跳节点转发报文时的BDP的值,例如也可以设置为16*MTU。此外,流3的初始建流过程可以参见前述流1的描述,此处不再赘述。
在具体实施例中,假设流1使用不同的虚拟源端口号的报文在TOR节点4096上被均匀哈希到了4条上行路径。对于流2,由于哈希冲突,流2的多个虚拟源端口号对应的报文被哈希到了TOR节点4096的2号上行路径上。对于流3,流3在TOR节点4471的2号路径上也分配了更多的流量。
在leaf节点4119上,流1和流2的所有数据均被哈希到了通往spine节点4536的路径上,形成了轻微的拥塞;在leaf节点4479到TOR节点4456的路径上汇聚了流1、流2和流3的部分流量,造成了比较严重的拥塞。同时,由于流1和流2的目的节点均为节点E,在TOR节点4456到节点E的下行路径上也形成了汇聚,造成拥塞。
基于上述的描述,经过若干个RTT的多路拥塞控制和带宽轮换,最终上述3条流均实现收敛,具体的拥塞控制和带宽轮换可以参见上述图3所示的网络拥塞控制方法及其可能的实施方式中对应的描述,此处不再赘述。
上述3条流均实现收敛之后,可以参见图7B中时间点1对应的路径信用量的情况,其中节点A上的流1和节点B上的流2的总拥塞阈值均下降到5跳转发时的BDP的1/2,即10*MTU,并且假设流1和流2中的路径4均是发送报文较多或者出现拥塞的路径,因此可以看到流1和流2中的路径4的信用量下降到了一个较小的值。节点C上流3受到leaf节点4479到TOR节点4456的路径(该路径出现严重拥塞)的影响,其对应的路径4上时延过长造成乱序超过阈值,该路径4被踢出,信用量降低到0,但是其他非拥塞的路径信用量上升,总的拥塞阈值仍然达到3跳转发时的BDP值(该3跳转发时的BDP值例如可以是12*MTU),即满带宽发送。该具体的乱序控制的实现可以参见前述介绍的控制多路径间乱序程度的方案中的具体介绍,此处不再赘述。
另外,可以参见图7B中时间点2对应的路径信用量的情况,具体的,在上述时间点1之后,假设leaf节点4112到spine节点4487的路径出现故障,流1和流2相应的路径(假设均为路径2)在一个RTT之后因为信用量耗尽被踢出,相应路径的信用量降低到0。因故障导致对应路径的信用量降为0的具体实现也可以参见前述的描述,此处不再赘述。流3通过探测报文探测其对应的路径4,重新启用路径4,在保持满带宽的同时获得更均衡的多路径负载均衡。通过探测报文实现路径恢复的机制的具体实现也可参见前述的描述,此处不再赘述。
综上所述,针对当前数据中心网络负载均衡性不足,整体链路利用率低,网络拥塞造成动态时延高的问题,已有的ECMP技术以流为粒度基于五元组进行哈希选路,在大规模组网下难以解决因哈希冲突、多节点独立选路造成的负载不均问题;已有的自适应路由技术需要管控面、交换机等组件的配合,需要私有的逐跳状态通知和自适应路由切换机制,且实现复杂,不能对接商用交换设备;而本申请实施例通过上述图3所示的网路拥塞控制方法,实现了报文级别或者flowlet级别的多路径转发,减少流级别的带宽竞争,并通过多路径的拥塞控制和路径间的动态负载均衡,获得全网链路利用率的极大提升,并极大减少网络拥塞热点。
针对依赖于管控面实现对更全面的网络状态信息的感知,实现更均衡的拥塞控制、流控和动态均衡的问题,已有拥塞控制算法只覆盖单流单路径转发,只能根据特定路径的状态控制单个路径的拥塞程度,不能实现多个路径拥塞控制和负载均衡;本申请实施例实现了通过源端对多个路径拥塞状态的感知,并在各路径之间调整带宽分配,按比例、按需分发流量,实现更均衡的拥塞控制、流控和动态均衡。
针对如何快速规避和发现大规模组网下的故障路径,降低网络故障的影响的问题,现有技术基于带内或者带外的状态监控来识别故障路径,并通过管理面的干预来规避故障路径,其中带外监控的方式实时性低,网络故障收敛慢,而基于带内网络遥测(in-bandnetwork telemetry,INT)等技术的带内监控方法虽然实时性高,但是需要引入复杂的带内遥测规则、布置信息收集器、分析器等组件,且故障路径收敛性能依赖于控制面的性能,大规模部署时性能受限;本申请实施例通过对严重乱序报文的识别和反馈,配合源端的信用量管理,在一个RTT内踢出严重拥塞或故障的路径,实现快速规避,极大降低了故障收敛时间,降低网络故障的影响,实现了对最优时延路径的筛选和优异的故障收敛性能。此外,本申请实施例在几乎不影响已有转发流量的前提下,主动探索潜在的可用路径,获取拥塞缓解、故障恢复路径的带宽,实现快速恢复,保证尽量使用更多的路径实现更好的负载均衡性能。
为了更好地理解上述介绍的方法实施例,下面结合图8A示例说明。图8A示例性示出了本申请实施例的一种可能的流程示意图。具体的,该流程可以包括但不限于如下步骤:
S1:源端通过上述n个路径发送第一数据流的多个报文;
S2:源端接收该多个报文中第一报文的第一反馈信息;
S3:源端判断第一反馈信息是否包括第一文在目的端出现乱序的指示信息;在该第一反馈信息不包括第一报文在目的端出现乱序的指示信息的情况下,执行S4;在该第一反馈信息包括第一报文在目的端出现乱序的指示信息的情况下,执行S10;
S4:源端基于该第一反馈信息重新计算第一数据流的拥塞阈值;
S5:源端判断重新计算得到的拥塞阈值与计算前该第一数据流的拥塞阈值的差值是否大于零;若大于零执行S6,若小于零执行S9;
S6:源端判断该差值与剩余信用量的和是否大于目标信用量;若小于目标信用量执行S7;若大于目标信用量执行S8;
S7:源端维持第一路径的信用量不变;
S8:源端将第一路径的信用量增加两个目标信用量;
S9:源端将该第一路径的信用量减少第一信用量,该第一信用量为该第一差值与该目标信用量之和的绝对值;
S10:源端基于第一报文在目的端出现乱序的指示信息维持第一路径当前的信用量;
S11:执行S9或S10之后,源端判断第一路径的信用量是否降为零;
S12:在第一路径的信用量降为零的情况下,源端通过第一路径发送探测报文,并接收该探测报文的第二反馈信息;
S13:源端判断该第二反馈信息是否指示该第一路径出现拥塞,若指示拥塞执行S14,若指示不拥塞执行S15;
S14:源端维持第一路径的信用量不变,即维持为零;
S15:源端基于该第二反馈信息重新计算第一数据流的拥塞阈值;
S16:源端判断重新计算得到的拥塞阈值与计算前该第一数据流的拥塞阈值的差,与剩余信用量的和是否大于目标信用量,若大于执行S17,若小于执行S14;
S17:源端将第一路径的信用量增加一个目标信用量。
上述图8A中各个步骤的具体实现可以参见上述图3及其可能的实施方式中的描述,此处不再赘述。
基于上述介绍的网络拥塞控制方法及其可能的实施方式,下面示例性给出上述第一网络装置的一种虚拟组件架构,第一网络装置可以通过这些组件实现上述网络拥塞控制方法及其可能的实施方式中该第一网络装置执行的操作。示例性地,可以参见图8B。
如图8B所示,第一网络装置虚拟组件结构包括数据面通道和多路径管控单元,其中,数据面通道包含数据面转发单元,多路径散聚(Scatter&Gather)单元,发送通道和接收通道;多路径管控单元包含拥塞控制单元,信用量管理单元,乱序控制单元和路径探测单元。
上述各组件单元的主要功能如下:
多路径Scatter&Gather单元:在发送方向按照上述步骤301中的预设的元组调整粒度修改报文的源端口号,然后通过发送通道实现报文的多路径(例如上述n个路径)分发;在接收方向通过接收通道接收报文,并解析多路径报文,识别报文关联的数据流及上下文;
数据面转发单元:实现该第一网络装置数据面的基本转发和动作,包括查找路由表、报文编辑和服务质量(quality of service,Qos)控制等;
拥塞控制单元:实现多路径拥塞控制算法,根据网络状态反馈,实现以流为粒度的发送窗口或速率调整;
信用量管理单元:与拥塞控制单元配合,管理每个路径(例如上述n个路径中的每个路径)的实时信用量,通过信用量分配实现多路径负载均衡;此外,还辅助实现故障和拥塞路径的踢出;
乱序控制单元:上述第二网络装置也包括该乱序控制单元,第二网络装置作为报文目的端时,其乱序控制单元以流为粒度跟踪报文的乱序程度,对乱序超过阈值的报文给与反馈,辅助源端即上述第一网络装置的乱序控制单元踢出转发时延严重偏大的路径;
路径探测单元:根据多路径拥塞控制信息,主动发起潜在可用路径的探测,以实现可用路径的恢复。
图8B所示的各个单元具体实现的操作可以参见前述图3及其可能的实施方式中对应的描述,此处不再赘述。
可以理解的是,各个装置为了实现上述对应的功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本文中所公开的实施例描述的各示例的单元及步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但这种实现不应认为超出本申请实施例的范围。
本申请实施例可以根据上述方法示例对设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图9示出了装置的一种可能的逻辑结构示意图,该装置可以是上述第一网络装置等。该装置900包括发送单元901、接收单元902和处理单元903。其中:
发送单元901,用于通过n个路径发送第一数据流的多个报文,该n个路径中每个路径配置了信用量,该信用量指示该每个路径发送数据的容量的大小,该n个路径的信用量之和小于或等于第一拥塞阈值,该第一拥塞阈值为该第一数据流的拥塞阈值,该n为大于1的整数;
接收单元902,用于接收第一反馈信息,该第一反馈信息为第一报文的反馈信息,该第一反馈信息包括第一路径是否拥塞的指示信息,该第一路径为该n个路径中用于发送该第一报文的路径;该第一报文为该第一数据流的多个报文中的任意一个报文;
处理单元903,用于基于该指示信息重新确定该第一路径的信用量;
该处理单元903,还用于基于该第一路径的信用量重新确定该第一路径的负载量,在该指示信息指示该第一路径拥塞的情况下,该重新确定的该第一路径的负载量减少。
一种可能的实施方式中,该第一反馈信息为该网络装置接收的一个反馈报文中的信息,该反馈报文中包括该多个报文中的m个报文的反馈信息,该m为大于1的整数;
该m个报文的反馈信息包括该m个报文传输过程中,每个报文的传输路径是否出现拥塞的指示信息。
一种可能的实施方式中,该处理单元903具体用于:
基于该第一反馈信息计算第二拥塞阈值,该第二拥塞阈值为该第一数据流新的拥塞阈值;
基于第一差值调整该第一路径的信用量,该第一差值为该第二拥塞阈值与计算该第二拥塞阈值前该第一数据流的拥塞阈值之间的差值。
一种可能的实施方式中,该n个路径的信用量和剩余信用量之和等于该第一拥塞阈值;
该处理单元903具体用于:
在该第一差值大于零,且该第一差值与该剩余信用量之和大于该目标信用量的情况下,将该第一路径的信用量增加两个该目标信用量,该目标信用量指示该第一数据流中的一个报文的数据量大小;或者,
在该第一差值小于零情况下,将该第一路径的信用量减少第一信用量,该第一信用量为该第一差值与该目标信用量之和的绝对值。
一种可能的实施方式中,该第一反馈信息中还包括该第一报文在目的端出现乱序的指示信息;该第一路径每发送一个报文消耗该第一路径中信用量的目标信用量,该目标信用量指示该第一数据流中的一个报文的数据量大小;
该处理单元903具体用于:基于该第一报文在目的端出现乱序的指示信息维持该第一路径当前的信用量。
一种可能的实施方式中,该n个路径的信用量和剩余信用量之和等于该第一拥塞阈值;
该发送单元901,还用于在该第一路径的信用量降为零的情况下,通过该第一路径发送探测报文;
该接收单元902,还用于接收该探测报文的第二反馈信息;
该处理单元903,还用于在该第二反馈信息指示该第一路径未出现拥塞的情况下,基于该第二反馈信息计算第三拥塞阈值,该第三拥塞阈值为该第一数据流新的拥塞阈值;
该处理单元903,还用于在第二差值与该剩余信用量之和大于该目标信用量的情况下,将该第一路径的信用量增加目标信用量;该第二差值为该第三拥塞阈值与计算该第三拥塞阈值前该第一数据流的拥塞阈值的差值,该目标信用量指示该第一数据流中的一个报文的数据量大小。
一种可能的实施方式中,该接收单元902,还用于接收第三反馈信息,该第三反馈信息为该多个报文中的第二报文的反馈信息,该第三反馈信息包括指示该第二报文丢包的信息,该第二报文通过该n个路径中的第二路径发送;
该处理单元903,还用于将该第二路径的信用量增加目标信用量,该目标信用量指示该第一数据流中的一个报文的数据量大小。
一种可能的实施方式中,该网络装置接收到目标序列号的报文的反馈信息,该目标序列号包括通过该n个路径发送的报文的全部序列号,该处理单元903还用于:
在该第一数据流的拥塞阈值大于实际信用量的情况下,将该第一数据流的拥塞阈值调整为与该实际信用量相等的值,该实际信用量为该n个路径的信用量与剩余信用量之和。
一种可能的实施方式中,该处理单元903还用于:
将该第一数据流的报文的源端口号映射为n个虚拟端口号,该n个虚拟端口号与该n个路径一一对应。
图9所示装置900中各个单元的具体操作以及有益效果可以参见上述图3及其可能的方法实施例中对应的描述,此处不再赘述。
图10所示为本申请实施例的装置的一种可能的硬件结构示意图,该装置可以是上述实施例所述的第一网络装置。该装置1000包括:处理器1001、存储器1002和通信接口1003。处理器1001、通信接口1003以及存储器1002可以相互连接或者通过总线1004相互连接。
示例性的,存储器1002用于存储装置1000的计算机程序和数据,存储器1002可以包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-onlymemory,ROM)、可擦除可编程只读存储器(erasable programmable read only memory,EPROM)或便携式只读存储器(compact disc read-only memory,CD-ROM)等。
通信接口1003包括发送接口和接收接口,通信接口1003的个数可以为多个,用于支持装置1000进行通信,例如接收或发送数据或消息等。
示例性的,处理器1001可以是中央处理器单元、通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。处理器1001可以用于读取上述存储器1002中存储的程序,使得装置1000执行如上述图3及其可能的实施例中所述的任一种方法中第一网络装置所做的操作。
一种可能的实施方式中,处理器1001可以用于读取上述存储器1002中存储的程序,执行如下操作:
通过发送接口通过n个路径发送第一数据流的多个报文,该n个路径中每个路径配置了信用量,该信用量指示该每个路径发送数据的容量的大小,该n个路径的信用量之和小于或等于第一拥塞阈值,该第一拥塞阈值为该第一数据流的拥塞阈值,该n为大于1的整数;
通过接收接口接收第一反馈信息,该第一反馈信息为第一报文的反馈信息,该第一反馈信息包括第一路径是否拥塞的指示信息,该第一路径为该n个路径中用于发送该第一报文的路径;该第一报文为该第一数据流的多个报文中的任意一个报文;
基于该指示信息重新确定该第一路径的信用量;并基于该第一路径的信用量重新确定该第一路径的负载量,在该指示信息指示该第一路径拥塞的情况下,该重新确定的该第一路径的负载量减少。
图10所示装置1000中各个单元的具体操作以及有益效果可以参见上述图3及其可能的方法实施例中对应的描述,此处不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现上述图3及其可能的方法实施例中任一实施例所述方法中第一网络装置所做的操作。
本申请实施例还提供一种计算机程序产品,当该计算机程序产品被计算机读取并执行时,上述图3及其可能的方法实施例中任一实施例所述方法中第一网络装置所做的操作将被执行。
综上所述,在本申请实施例中,通过将单个流负载分担到多个路径上传输,实现了细粒度的负载均衡,减少了流级别的带宽竞争,提升了全网的负载均衡性能。另外,通过为单个流维护一个拥塞阈值,并将该拥塞阈值包括的信用量分配到该流的多个传输路径上,并基于每个路径传输的报文的反馈信息适应性调整对应路径的信用量,进而调整负载量,即通过流级别的拥塞控制和路径级别的信用量管理相结合的方法,实现了对多条路径拥塞状态的感知,并根据路径的拥塞状态对路径进行动态负载的调整,实现多条路径间的最优负载配比,消除特定路径拥塞造成的短板效应,获得整体吞吐率的提升,降低网络拥塞。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一节点可以被称为第二节点,并且类似地,第二节点可以被称为第一节点。第一节点和第二节点都可以是节点,并且在某些情况下,可以是单独且不同的节点。
还应理解,在本申请实施例的各个实施例中,各个过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
还应理解,说明书通篇中提到的“一个实施例”、“一实施例”、“一种可能的实现方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请实施例的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”、“一种可能的实现方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
最后应说明的是:以上各实施例仅用以说明本申请实施例的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (21)

1.一种网络拥塞控制方法,其特征在于,所述方法包括:
源端通过n个路径发送第一数据流的多个报文,所述n个路径中每个路径配置了信用量,所述信用量指示所述每个路径发送数据的容量的大小,所述n个路径的信用量之和小于或等于第一拥塞阈值,所述第一拥塞阈值为所述第一数据流的拥塞阈值,所述n为大于1的整数;
所述源端接收第一反馈信息,所述第一反馈信息为第一报文的反馈信息,所述第一反馈信息包括第一路径是否拥塞的指示信息,所述第一路径为所述n个路径中用于发送所述第一报文的路径;所述第一报文为所述多个报文中的任意一个报文;
所述源端基于所述指示信息重新确定所述第一路径的信用量;
所述源端基于所述第一路径的信用量重新确定所述第一路径的负载量,在所述指示信息指示所述第一路径拥塞的情况下,所述重新确定的所述第一路径的负载量减少。
2.根据权利要求1所述的方法,其特征在于,所述第一反馈信息为所述源端接收的一个反馈报文中的信息,所述反馈报文中包括所述多个报文中的m个报文的反馈信息,所述m为大于1的整数;
所述m个报文的反馈信息包括所述m个报文传输过程中,每个报文的传输路径是否出现拥塞的指示信息。
3.根据权利要求1或2所述的方法,其特征在于,所述源端基于所述指示信息重新确定所述第一路径的信用量,包括:
所述源端基于所述第一反馈信息计算第二拥塞阈值,所述第二拥塞阈值为所述第一数据流新的拥塞阈值;
所述源端基于第一差值调整所述第一路径的信用量,所述第一差值为所述第二拥塞阈值与计算所述第二拥塞阈值前所述第一数据流的拥塞阈值之间的差值。
4.根据权利要求3所述的方法,其特征在于,所述n个路径的信用量和剩余信用量之和等于所述第一拥塞阈值;
所述源端基于第一差值调整所述第一路径的信用量,包括:
在所述第一差值大于零,且所述第一差值与所述剩余信用量之和大于目标信用量的情况下,所述源端将所述第一路径的信用量增加两个所述目标信用量,所述目标信用量指示所述第一数据流中的一个报文的数据量大小;或者,
在所述第一差值小于零情况下,所述源端将所述第一路径的信用量减少第一信用量,所述第一信用量为所述第一差值与所述目标信用量之和的绝对值。
5.根据权利要求1或2所述的方法,其特征在于,所述第一反馈信息中还包括所述第一报文在目的端出现乱序的指示信息;所述第一路径每发送一个报文消耗所述第一路径中信用量的目标信用量,所述目标信用量指示所述第一数据流中的一个报文的数据量大小;
所述源端基于所述第一反馈信息重新确定所述第一路径的信用量,包括:
所述源端基于所述第一报文在目的端出现乱序的指示信息维持所述第一路径当前的信用量。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述n个路径的信用量和剩余信用量之和等于所述第一拥塞阈值;所述方法还包括:
在所述第一路径的信用量降为零的情况下,所述源端通过所述第一路径发送探测报文;
所述源端接收所述探测报文的第二反馈信息;在所述第二反馈信息指示所述第一路径未出现拥塞的情况下,所述源端基于所述第二反馈信息计算第三拥塞阈值,所述第三拥塞阈值为所述第一数据流新的拥塞阈值;
在第二差值与所述剩余信用量之和大于所述目标信用量的情况下,所述源端将所述第一路径的信用量增加目标信用量;所述第二差值为所述第三拥塞阈值与计算所述第三拥塞阈值前所述第一数据流的拥塞阈值的差值,所述目标信用量指示所述第一数据流中的一个报文的数据量大小。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
所述源端接收第三反馈信息,所述第三反馈信息为所述多个报文中的第二报文的反馈信息,所述第三反馈信息包括指示所述第二报文丢包的信息,所述第二报文通过所述n个路径中的第二路径发送;
所述源端将所述第二路径的信用量增加目标信用量,所述目标信用量指示所述第一数据流中的一个报文的数据量大小。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述源端接收到目标序列号的报文的反馈信息,所述目标序列号包括通过所述n个路径发送的报文的全部序列号,所述方法还包括:
在所述第一数据流的拥塞阈值大于实际信用量的情况下,所述源端将所述第一数据流的拥塞阈值调整为与所述实际信用量相等的值,所述实际信用量为所述n个路径的信用量与剩余信用量之和。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述方法还包括:所述源端将所述第一数据流的报文的源端口号映射为n个虚拟端口号,所述n个虚拟端口号与所述n个路径一一对应。
10.一种网络装置,其特征在于,所述装置包括:
发送单元,用于通过n个路径发送第一数据流的多个报文,所述n个路径中每个路径配置了信用量,所述信用量指示所述每个路径发送数据的容量的大小,所述n个路径的信用量之和小于或等于第一拥塞阈值,所述第一拥塞阈值为所述第一数据流的拥塞阈值,所述n为大于1的整数;
接收单元,用于接收第一反馈信息,所述第一反馈信息为第一报文的反馈信息,所述第一反馈信息包括第一路径是否拥塞的指示信息,所述第一路径为所述n个路径中用于发送所述第一报文的路径;所述第一报文为所述多个报文中的任意一个报文;
处理单元,用于基于所述指示信息重新确定所述第一路径的信用量;
所述处理单元,还用于基于所述第一路径的信用量重新确定所述第一路径的负载量,在所述指示信息指示所述第一路径拥塞的情况下,所述重新确定的所述第一路径的负载量减少。
11.根据权利要求10所述的装置,其特征在于,所述第一反馈信息为所述网络装置接收的一个反馈报文中的信息,所述反馈报文中包括所述多个报文中的m个报文的反馈信息,所述m为大于1的整数;
所述m个报文的反馈信息包括所述m个报文传输过程中,每个报文的传输路径是否出现拥塞的指示信息。
12.根据权利要求10或11所述的装置,其特征在于,所述处理单元具体用于:
基于所述第一反馈信息计算第二拥塞阈值,所述第二拥塞阈值为所述第一数据流新的拥塞阈值;
基于第一差值调整所述第一路径的信用量,所述第一差值为所述第二拥塞阈值与计算所述第二拥塞阈值前所述第一数据流的拥塞阈值之间的差值。
13.根据权利要求12所述的装置,其特征在于,所述n个路径的信用量和剩余信用量之和等于所述第一拥塞阈值;
所述处理单元具体用于:
在所述第一差值大于零,且所述第一差值与所述剩余信用量之和大于目标信用量的情况下,将所述第一路径的信用量增加两个所述目标信用量,所述目标信用量指示所述第一数据流中的一个报文的数据量大小;或者,
在所述第一差值小于零情况下,将所述第一路径的信用量减少第一信用量,所述第一信用量为所述第一差值与所述目标信用量之和的绝对值。
14.根据权利要求10或11所述的装置,其特征在于,所述第一反馈信息中还包括所述第一报文在目的端出现乱序的指示信息;所述第一路径每发送一个报文消耗所述第一路径中信用量的目标信用量,所述目标信用量指示所述第一数据流中的一个报文的数据量大小;
所述处理单元具体用于:基于所述第一报文在目的端出现乱序的指示信息维持所述第一路径当前的信用量。
15.根据权利要求10-14任一项所述的装置,其特征在于,所述n个路径的信用量和剩余信用量之和等于所述第一拥塞阈值;
所述发送单元,还用于在所述第一路径的信用量降为零的情况下,通过所述第一路径发送探测报文;
所述接收单元,还用于接收所述探测报文的第二反馈信息;
所述处理单元,还用于在所述第二反馈信息指示所述第一路径未出现拥塞的情况下,基于所述第二反馈信息计算第三拥塞阈值,所述第三拥塞阈值为所述第一数据流新的拥塞阈值;
所述处理单元,还用于在第二差值与所述剩余信用量之和大于所述目标信用量的情况下,将所述第一路径的信用量增加目标信用量;所述第二差值为所述第三拥塞阈值与计算所述第三拥塞阈值前所述第一数据流的拥塞阈值的差值,所述目标信用量指示所述第一数据流中的一个报文的数据量大小。
16.根据权利要求10-15任一项所述的装置,其特征在于,
所述接收单元,还用于接收第三反馈信息,所述第三反馈信息为所述多个报文中的第二报文的反馈信息,所述第三反馈信息包括指示所述第二报文丢包的信息,所述第二报文通过所述n个路径中的第二路径发送;
所述处理单元,还用于将所述第二路径的信用量增加目标信用量,所述目标信用量指示所述第一数据流中的一个报文的数据量大小。
17.根据权利要求10-16任一项所述的装置,其特征在于,所述网络装置接收到目标序列号的报文的反馈信息,所述目标序列号包括通过所述n个路径发送的报文的全部序列号,所述处理单元还用于:
在所述第一数据流的拥塞阈值大于实际信用量的情况下,将所述第一数据流的拥塞阈值调整为与所述实际信用量相等的值,所述实际信用量为所述n个路径的信用量与剩余信用量之和。
18.根据权利要求10-17任一项所述的装置,其特征在于,所述处理单元还用于:
将所述第一数据流的报文的源端口号映射为n个虚拟端口号,所述n个虚拟端口号与所述n个路径一一对应。
19.一种网络装置,其特征在于,所述网络装置包括处理器、发送接口、接收接口和存储器;其中,所述存储器用于存储计算机程序,所述发送接口用于发送信息,所述接收接口英语接收信息,所述处理器用于执行所述存储器中存储的计算机程序,使得所述网络装置执行如权利要求1-9任一项所述的方法。
20.一种数据传输系统,其特征在于,所述系统包括第一网络装置和第二网络装置,所述第一网络装置为权利要求10-18任一项所述的网络装置,或者为权利要求19所述的网络装置,所述第二网络装置用于接收所述第一网络装置发送的报文。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1-9任意一项所述的方法。
CN202110980604.7A 2021-08-25 2021-08-25 网络拥塞控制方法及相关装置 Pending CN115733799A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110980604.7A CN115733799A (zh) 2021-08-25 2021-08-25 网络拥塞控制方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110980604.7A CN115733799A (zh) 2021-08-25 2021-08-25 网络拥塞控制方法及相关装置

Publications (1)

Publication Number Publication Date
CN115733799A true CN115733799A (zh) 2023-03-03

Family

ID=85289998

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110980604.7A Pending CN115733799A (zh) 2021-08-25 2021-08-25 网络拥塞控制方法及相关装置

Country Status (1)

Country Link
CN (1) CN115733799A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117081984A (zh) * 2023-09-27 2023-11-17 新华三技术有限公司 一种路由调整方法、装置及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117081984A (zh) * 2023-09-27 2023-11-17 新华三技术有限公司 一种路由调整方法、装置及电子设备
CN117081984B (zh) * 2023-09-27 2024-03-26 新华三技术有限公司 一种路由调整方法、装置及电子设备

Similar Documents

Publication Publication Date Title
US11916782B2 (en) System and method for facilitating global fairness in a network
US10594596B2 (en) Data transmission
US11134014B2 (en) Load balancing method, apparatus, and device
CN106998302B (zh) 一种业务流量的分配方法及装置
CN102263697B (zh) 一种聚合链路流量分担方法和装置
US20080212613A1 (en) Multilink meshed transport service
CN110943933B (zh) 一种实现数据传输的方法、装置和系统
CN111585896B (zh) 一种数据转发方法、装置及可读存储介质
US11736407B2 (en) Method and apparatus for load balancing and packet re-sequencing on network
EP3547690B1 (en) Real-time video transmission method of multipath network
CN111224888A (zh) 发送报文的方法及报文转发设备
WO2023142937A1 (zh) 一种网络拥塞控制方法及相关装置
CN111386683A (zh) 基于实时传输网络拥塞状况来加速或减速数据传输网络协议的系统和方法
CN111585911B (zh) 数据中心网络流量负载的均衡方法
US20200162388A1 (en) Data communication method and data communications network
CN115733799A (zh) 网络拥塞控制方法及相关装置
US11805071B2 (en) Congestion control processing method, packet forwarding apparatus, and packet receiving apparatus
WO2022179451A1 (zh) 一种负载分担方法、装置及芯片
US11622028B2 (en) Explicit notification of operative conditions along a network path
CN112787919B (zh) 报文传输方法及设备、可读介质
US20060098677A1 (en) System and method for performing receiver-assisted slot allocation in a multihop communication network
CN110868357A (zh) 网络流量控制方法、vtep设备和存储介质
TWI757887B (zh) 用以促進一資料流從一發送端透過多路徑傳輸至一接收端的方法、網路控制器以及電腦程式產品
CN116708300A (zh) 一种拥塞控制方法、设备以及系统
CN114598657A (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