CN116868554A - 一种控制数据流传输的方法及通信装置 - Google Patents

一种控制数据流传输的方法及通信装置 Download PDF

Info

Publication number
CN116868554A
CN116868554A CN202180092829.7A CN202180092829A CN116868554A CN 116868554 A CN116868554 A CN 116868554A CN 202180092829 A CN202180092829 A CN 202180092829A CN 116868554 A CN116868554 A CN 116868554A
Authority
CN
China
Prior art keywords
rate
data
subset
total
data flow
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
CN202180092829.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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN116868554A publication Critical patent/CN116868554A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种控制数据流传输的方法及通信装置,可应用于数据中心网络等,用于解决现有技术中数据流传输时延较大的问题。其中方法可包括获得第一数据流集合中的M个数据流子集的分配速率,并测量这M个数据流子集的实际速率;根据获得的M个数据流子集的实际速率和分配速率,确定第一输出端口的空闲速率,并将空闲速率分配给第二数据流集合中的数据流子集,第一输出端口用于输出第一数据流集合和第二数据流集合中的数据流。通过将空闲速率分配给第二数据流集合,从而可提高第二数据流集合中的数据流的传输速率,进而可减小第二数据流集合中数据流的传输时延。

Description

一种控制数据流传输的方法及通信装置 技术领域
本申请涉及数据传输技术领域,尤其涉及一种控制数据流传输的方法及通信装置。
背景技术
随着互联网服务、分布式计算等技术的发展,数据中心网络(dater center network,DCN)得到了广泛的应用。数据中心网络的传输存在突发性和多对一的特点,很容易产生网络拥塞。因此,对数据传输的及时性提出了较大挑战。
现有技术中,数据传输方式主要包括传输控制协议(transmission control protocol,TCP)传输机制和无损网络传输。当数据中心网络发生拥塞,TCP传输机制会产生丢包重传问题,从而会导致数据传输的时延大且吞吐率低。无损网络传输针对网络拥塞的解决方案主要分为端到端拥塞控制方案和逐跳流控制方案。逐跳流控制方案主要包括以数据中心桥接(data center bridging,DCB)技术为基础的基于优先级的数据流控制(priority-based flow control,PFC)方案,及以无限速率(InfiniBand)技术为基础的基于信用的数据流控制(credit based flow control,CBFC)方案。其中,PFC方案在输入队列严重拥塞时,使用用于指示暂停等待的消息通知上游端口停止发送数据。CBFC方案通过周期性向上游端口更新当前端口缓冲区的可用信令(credit)来控制上游端口输出速率。然而,无损网络中存在网络死锁现象,即当网络中存在循环缓冲区依赖(cyclic buffer dependency,CBD)条件时,处于环形网络的交换机暂停上游端口,并同时等待下游端口启动传输,这种情况下,处于环形网络的交换机处于死锁状态。为了解决死锁问题提出了温和数据流控制(gentle flow control,GFC)方案。GFC方案使用交换机的输入队列长度作为基准,计算合适的上游端口的输出速率,并向上游端口指定计算出的输出速率,以保证数据传输不中断,从而避免死锁问题。然而,GFC方案是以调节上游端口的输出速率为目的,直接降低上游输出端口的速率,不能有效缓解交换机的当前输出队列的拥塞,因此,仍然存在数据流传输的时延大和吞吐率低的问题。端到端拥塞控制方案主要包括数据中心量化拥塞通知机制(data center quantized congestion notification,DCQCN)和高精度拥塞控制(high precision congestion control,HPCC)。其中,DCQCN有三个部分构成:即发送端、交换机和接收端。交换机的输出端口拥塞时,使用精确拥塞通知机制(explicit congestion notification,ECN)标记拥塞信息并放在报文头部。接收端收到标记有拥塞信息的报文时,向发送端发送拥塞通知报文(congestion notification packet,CNP)。发送端收到CNP时,调整数据发送速率来缓解交换机的拥塞。HPCC通过网络遥测(In-network telemetry,INT)反馈更加精细的拥塞信息,端主机通过拥塞信息估计网络拥塞程度。由于拥塞信息需要进行反馈,因此数据流传输也存在一定的延迟。
综上,如何减小数据流传输的时延是当前亟需解决的技术问题。
发明内容
本申请提供一种控制数据流传输的方法、通信装置、存储介质及计算机程序产品,用于尽可能的减小数据流的传输时延。
第一方面,本申请提供一种控制数据流传输的方法,该方法可包括获得第一数据流集合中的M个数据流子集的分配速率,并测量M个数据流子集的实际速率;根据实际速率和分配速率,可确定第一输出端口的空闲速率,将空闲速率分配给第二数据流集合中的数据流子集;其中,M为正整数,第一输出端口可用于输出第一数据流集合和第二数据流集合中的数据流。
该方法可由通信装置执行,通信装置可以是交换节点;或者交换节点中的模块,例如芯片等。
基于该方案,可确定第一输出端口存在空闲速率,并将该空闲速率分配给第二数据流集合,从而有助于提高第二数据流集合传输数据流的速率,进而有助于减小第二数据流集合的数据流的传输时延。特别是当第二数据流集合中数据流子集的实际速率即将不足的情况。
在一种可能的实现方式中,每个数据流集合包括至少一个数据流子集,每个数据流子集中的数据流来自同一个输入端口。也可以理解为,一个数据流子集对应一个输入端口。
在一种可能的实现方式中,第二数据流集合中的数据流子集的实际速率不小于分配速率与系数的乘积,系数大于阈值且小于1。
当第二数据流集合中的数据流子集的实际速率即将不足时,通过将空闲速率分配给第二数据流集合,可提升第二数据流集合中的数据流的传输速率,进而有助于减小第二数据流集合中的数据流的传输时延。
在一种可能的实现方式中,可获得第i个数据流子集的第一平均输入速率及第一平均输出速率,i取遍闭区间[1,M]中的整数,第i个数据流子集为M个数据流子集中的一个;将第一平均输入速率与第一平均输出速率中的最小值,确定为第i个数据流子集的分配速率。
第一平均输入速率和第一平均输出速率中的最小值为第i个数据流子集中的数据流首先遇到传输瓶颈的速率,通过将其中的最小值确定为第i个数据流子集的分配速率,有助于尽可能的减小第i个数据流子集中的数据流的传输时延。
下面示例性地的示出了一种可能的确定第一平均输出速率的方式。
在一种可能的实现方式中,可根据第一输出端口的速率、第一输出端口输出的数据流的第一总数、及第一数据流集合包括的数据流的第二总数,确定第一数据流集合占用第一输出端口的速率;将第一数据流集合占用第一输出端口的速率与反馈速率中的最小值,确定为第一数据流集合的最大平均输出速率,反馈速率为下游交换节点指定第一数据流集合的速率;根据最大平均输出速率、第二总数、及从第一输入端口流入第i个数据流子集包括的数据流的第三总数,确定第一平均输出速率。
进一步,可根据第i个数据流子集对应的输入端口的速率、从第一输入端口流入第i个数据流子集包括的数据流的第三总数、及第i个数据流子集对应的输入端口包括的数据流的第四总数,确定第一平均输入速率。
如下示例性地的示出了三种确定第一输出端口的空闲速率的方法。
方法1,确定第一数据流集合的空闲速率。
在一种可能的实现方式中,根据M个数据流子集的分配速率,确定第一数据流集合的第一总分配速率;根据M个数据流子集的实际速率,确定第一数据流集合的第一总实际速率;根据第一总实际速率和第一总分配速率,确定第一数据流集合的空闲速率。
在一种可能的实现方式中,将M个数据流子集中实际速率不小于分配速率与系数的乘积、且第一平均输出速率小于第一平均输入速率的数据流子集,确定为第二数据流集合的数据流子集,系数大于阈值且小于1。
进一步,可选地,获取第二数据流集合的第四总分配速率、及第二数据流集合包括的数据流的第五总数,根据第一总分配速率、第一总实际速率、第四总分配速率、第三总数以及第五总数,确定第二数据流集合的第二平均输出速率。
基于上述方法1,通过在第一数据流集合内遍历数据流子集,可确定出第一数据流集合的空闲速,并将该第一数据流集合的空闲速率分配给速率即将不足的第二数据流集合,从而有助于减小第二数据流集合中的数据流的传输时延。
方法2,确定第一输出端口的空闲速率。
在一种可能的实现方式中,根据M个数据流子集的分配速率,确定第一数据流集合的第一总分配速率;根据M个数据流子集的实际速率,确定第一数据流集合的第一总实际速率;根据第一数据流集合的第一总分配速率,确定第一输出端口的第二总分配速率;根据第一数据流集合的第一总实际速率,确定第一输出端口的第二总实际速率;根据第二总实际速率和第二总分配速率,确定第一输出端口的空闲速率。
在一种可能的实现方式中,第一输出端口对应的N个数据流集合,N个数据流集合中包括第一数据流集合;可获得第一输出端口对应的N个数据流集合中每个数据流集合占用第一输出端口的速率以及反馈速率;将第一输出端口对应的N个数据流集合中第一总实际速率不小于第一总分配速率与系数的乘积、且占用第一输出端口的速率小于反馈速率的数据流集合确定为第二数据流集合的数据流子集,反馈速率为下游交换节点指定对应的数据流集合的速率,系数大于阈值且小于1。
进一步,可选地,确定第二数据流集合的第五总分配速率、及第二数据流集合包括的数据流的第六总数;根据第二总分配速率、第二总实际速率、第五总分配速率、第二总数及第六总数,确定第二数据流集合占用第一输出端口的速率。
基于上述方法2,通过在第一输出端口内遍历各数据流集合中的数据流子集,可确定出第一输出端口存在空闲速率,并将该第一输出端口的空闲速率分配给速率即将不足的第二数据流集合,从而有助于减小第二数据流集合中的数据流的传输时延。
方法3,遍历第一输入端口对应的数据子集。
在一种可能的实现方式中,M个数据流子集中包括第一数据流子集,第一数据流子集与第一输入端口对应;可获得第一数据流子集的分配速率及实际速率,根据第一数据流子集的分配速率,确定第一输入端口对应的第三总分配速率;根据第一数据流子集的实际速率,确定第一输入端口对应的第三总实际速率;根据第三总实际速率和第三总分配速率,确定第一输入端口对应的数据流子集的空闲速率。
在一种可能的实现方式中,将第一输入端口对应的各数据流子集中实际速率不小于分配速率与系数的乘积、且第一平均输出速率大于第一平均输入速率的数据流子集确定为第二数据流集合的数据流子集,系数大于阈值且小于1。
进一步,可选地,确定第二数据流集合的第六总分配速率、及第二数据流集合包括的数据流第七总数;根据第三总分配速率、第三总实际速率、第六总分配速率、第三总数、及第七总数,确定第二数据流集合的第二平均输入速率。
基于上述方法3,通过遍历第一输入端口对应各数据流子集,可确定出第一输入端口 对应的数据流子集中存在空闲速率,并将该第一输入端口对应的数据流子集的空闲速率分配给速率即将不足的第二数据流集合,从而有助于减小第二数据流集合中的数据流的传输时延。
在一种可能的实现方式中,在预设时间间隔内,确定从第一输入端口流入第i个数据流子集的数据流第三总数,第i个数据流子集为M个数据流子集中的一个;将第三总数与预设时间间隔的比值确定为第i个数据流子集的实际速率。
基于该方案,可测量出从第一输入端口流向第i个数据流子集的实际速率。
在一种可能的实现方式中,确定有新的数据流流入第二数据流子集,更新第二数据流子集的分配速率,第二数据流子集为M个数据流子集中的一个。
进一步,可选地,可向上游节点发送第二数据流子集更新后的分配速率。
当交换节点的速率分配表更新了某个数据流f的速率后,向数据流f的上游交换节点或服务网卡反馈该数据流所在的数据流子集的更新后的分配速率,可指明对应的数据流自己的分配速率,从而可限制上游交换节点或网卡中的队列执行数据流的发送速率。
在一种可能的实现方式中,更新后的分配速率可携带于基于优先级的PFC控制报文。
当第二数据流子集的分配速率更新后,通过将该更新后的分配速率携带于PFC控制报文,可兼容现有的PFC控制报文。
当新的数据流到达输出端口时,下面示例性地的示出了三种存储新的数据流的方式。
在一种可能的实现方式中,若确定新的数据流到达第一输出端口、且第一输出端口存在空闲队列,可将新的数据流存储于空闲队列。
在一种可能的实现方式中,若确定新的数据流到达第一输出端口、且第一输出端口不存在空闲队列,可将新的数据流存储于预留队列。
在一种可能的实现方式中,确定第一输出端口存在空闲队列,且预留队列中存在数据流,将预留队列中的数据流移入空闲队列。
第二方面,本申请提供一种通信装置,该通信装置用于实现上述第一方面或第一方面中的任意一种方法,包括相应的功能模块,分别用于实现以上方法中的步骤。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。
其中,处理模块用于获得第一数据流集合中的M个数据流子集的分配速率,M为正整数;测量模块用于测量M个数据流子集的实际速率;处理模块还用于根据实际速率和分配速率,确定第一输出端口的空闲速率;以及将空闲速率分配给第二数据流集合中的数据流子集;其中,第一输出端口用于输出第一数据流集合和第二数据流集合中的数据流。
在一种可能的实现方式中,每个数据流集合包括至少一个数据流子集,每个数据流子集中的数据流来自同一个输入端口。
在一种可能的实现方式中,第二数据流集合中的数据流子集的实际速率不小于分配速率与系数的乘积,系数大于阈值且小于1。
在一种可能的实现方式中,处理模块具体用于:获得第i个数据流子集的第一平均输入速率及第一平均输出速率,i取遍闭区间[1,M]中的整数,第i个数据流子集为M个数据流子集中的一个;将第一平均输入速率与第一平均输出速率中的最小值,确定为第i个数据流子集的分配速率。
在一种可能的实现方式中,处理模块具体用于:根据第一输出端口的速率、第一输出 端口输出的数据流的第一总数、及第一数据流集合包括的数据流的第二总数,确定第一数据流集合占用第一输出端口的速率;将第一数据流集合占用第一输出端口的速率与反馈速率中的最小值,确定为第一数据流集合的最大平均输出速率,反馈速率为下游交换节点指定第一数据流集合的速率;以及根据最大平均输出速率、第二总数、及从第一输入端口流入第i个数据流子集包括的数据流的第三总数,确定第一平均输出速率。
在一种可能的实现方式中,处理模块具体用于:根据第i个数据流子集对应的输入端口的速率、从第一输入端口流入第i个数据流子集包括的数据流的第三总数、及第i个数据流子集对应的输入端口包括的数据流的第四总数,确定第一平均输入速率。
在一种可能的实现方式中,处理模块具体用于:根据M个数据流子集的分配速率,确定第一数据流集合的第一总分配速率;根据M个数据流子集的实际速率,确定第一数据流集合的第一总实际速率;根据第一总实际速率和第一总分配速率,确定第一数据流集合的空闲速率。
在一种可能的实现方式中,处理模块还用于:将M个数据流子集中实际速率不小于分配速率与系数的乘积、且第一平均输出速率小于第一平均输入速率的数据流子集,确定为第二数据流集合的数据流子集,系数大于阈值且小于1。
在一种可能的实现方式中,处理模块具体用于:获取第二数据流集合的第四总分配速率、及第二数据流集合包括的数据流的第五总数;根据第一总分配速率、第一总实际速率、第四总分配速率、第三总数以及第五总数,确定第二数据流集合的第二平均输出速率。
在一种可能的实现方式中,处理模块具体用于:根据M个数据流子集的分配速率,确定第一数据流集合的第一总分配速率;根据M个数据流子集的实际速率,确定第一数据流集合的第一总实际速率;根据第一数据流集合的第一总分配速率,确定第一输出端口的第二总分配速率;根据第一数据流集合的第一总实际速率,确定第一输出端口的第二总实际速率;根据第二总实际速率和第二总分配速率,确定第一输出端口的空闲速率。
在一种可能的实现方式中,第一输出端口对应的N个数据流集合,N个数据流集合中包括第一数据流集合;处理模块还用于:获得第一输出端口对应的N个数据流集合中每个数据流集合占用第一输出端口的速率以及反馈速率;将第一输出端口对应的N个数据流集合中第一总实际速率不小于第一总分配速率与系数的乘积、且占用第一输出端口的速率小于反馈速率的数据流集合确定为第二数据流集合的数据流子集,反馈速率为下游交换节点指定对应的数据流集合的速率,系数大于阈值且小于1。
在一种可能的实现方式中,处理模块具体用于:确定第二数据流集合的第五总分配速率、及第二数据流集合包括的数据流的第六总数;根据第二总分配速率、第二总实际速率、第五总分配速率、第二总数及第六总数,确定第二数据流集合占用第一输出端口的速率。
在一种可能的实现方式中,M个数据流子集中包括第一数据流子集,第一数据流子集与第一输入端口对应;处理模块具体用于:获得第一数据流子集的分配速率及实际速率;根据第一数据流子集的分配速率,确定第一输入端口对应的第三总分配速率;根据第一数据流子集的实际速率,确定第一输入端口对应的第三总实际速率;根据第三总实际速率和第三总分配速率,确定第一输入端口对应的数据流子集的空闲速率。
在一种可能的实现方式中,处理模块还用于:将第一输入端口对应的各数据流子集中实际速率不小于分配速率与系数的乘积、且第一平均输出速率大于第一平均输入速率的数据流子集确定为第二数据流集合的数据流子集,系数大于阈值且小于1。
在一种可能的实现方式中,处理模块具体用于:确定第二数据流集合的第六总分配速率、及第二数据流集合包括的数据流第七总数;根据第三总分配速率、第三总实际速率、第六总分配速率、第三总数、及第七总数,确定第二数据流集合的第二平均输入速率。
在一种可能的实现方式中,测量模块具体用于:在预设时间间隔内,确定从第一输入端口流入第i个数据流子集的数据流第三总数,第i个数据流子集为M个数据流子集中的一个;将第三总数与预设时间间隔的比值确定为第i个数据流子集的实际速率。
在一种可能的实现方式中,处理模块还用于:确定有新的数据流流入第二数据流子集,更新第二数据流子集的分配速率,第二数据流子集为M个数据流子集中的一个。
在一种可能的实现方式中,通信装置还包括收发模块,用于向上游节点发送第二数据流子集更新后的分配速率。
在一种可能的实现方式中,更新后的分配速率携带于基于优先级的PFC控制报文。
在一种可能的实现方式中,处理模块还用于:若确定新的数据流到达第一输出端口、且第一输出端口存在空闲队列,将新的数据流存储于空闲队列。
在一种可能的实现方式中,处理模块还用于:若确定新的数据流到达第一输出端口、且第一输出端口不存在空闲队列,将新的数据流存储于预留队列。
在一种可能的实现方式中,处理模块还用于:确定第一输出端口存在空闲队列,且预留队列中存在数据流,将预留队列中的数据流移入空闲队列。
第三方面,本申请提供一种通信装置,该通信装置用于实现上述第一方面或第一方面中的任意一种方法,包括相应的功能模块,分别用于实现以上方法中的步骤。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的实现方式中,该通信装置可以是交换节点,或者是可用于交换节点中的模块,例如芯片或芯片系统或者电路。有益效果可参见上述第一方面的描述,此处不再赘述。该通信装置可以包括处理器,进一步,可选地,还可包括通信接口。该处理器可被配置为支持该通信装置执行以上所示交换节点的相应功能,该通信接口用于支持该通信装置与其它通信装置(如其它交换节点)等之间的通信。可选地,该通信装置还可以包括存储器,该存储器可以与处理器耦合,其保存该通信装置必要的程序指令和数据。
其中,处理器用于获得第一数据流集合中的M个数据流子集的分配速率,M为正整数,测量M个数据流子集的实际速率,根据实际速率和分配速率,确定第一输出端口的空闲速率,以及将空闲速率分配给第二数据流集合中的数据流子集;其中,第一输出端口用于输出第一数据流集合和第二数据流集合中的数据流。
在一种可能的实现方式中,每个数据流集合包括至少一个数据流子集,每个数据流子集中的数据流来自同一个输入端口。
在一种可能的实现方式中,第二数据流集合中的数据流子集的实际速率不小于分配速率与系数的乘积,系数大于阈值且小于1。
在一种可能的实现方式中,处理器具体用于:获得第i个数据流子集的第一平均输入速率及第一平均输出速率,i取遍闭区间[1,M]中的整数,第i个数据流子集为M个数据流子集中的一个;将第一平均输入速率与第一平均输出速率中的最小值,确定为第i个数据流子集的分配速率。
在一种可能的实现方式中,处理器具体用于:根据第一输出端口的速率、第一输出端 口输出的数据流的第一总数、及第一数据流集合包括的数据流的第二总数,确定第一数据流集合占用第一输出端口的速率;将第一数据流集合占用第一输出端口的速率与反馈速率中的最小值,确定为第一数据流集合的最大平均输出速率,反馈速率为下游交换节点指定第一数据流集合的速率;以及根据最大平均输出速率、第二总数、及从第一输入端口流入第i个数据流子集包括的数据流的第三总数,确定第一平均输出速率。
在一种可能的实现方式中,处理器具体用于:根据第i个数据流子集对应的输入端口的速率、从第一输入端口流入第i个数据流子集包括的数据流的第三总数、及第i个数据流子集对应的输入端口包括的数据流的第四总数,确定第一平均输入速率。
在一种可能的实现方式中,处理器具体用于:根据M个数据流子集的分配速率,确定第一数据流集合的第一总分配速率;根据M个数据流子集的实际速率,确定第一数据流集合的第一总实际速率;根据第一总实际速率和第一总分配速率,确定第一数据流集合的空闲速率。
在一种可能的实现方式中,处理器还用于:将M个数据流子集中实际速率不小于分配速率与系数的乘积、且第一平均输出速率小于第一平均输入速率的数据流子集,确定为第二数据流集合的数据流子集,系数大于阈值且小于1。
在一种可能的实现方式中,处理器具体用于:获取第二数据流集合的第四总分配速率、及第二数据流集合包括的数据流的第五总数;根据第一总分配速率、第一总实际速率、第四总分配速率、第三总数以及第五总数,确定第二数据流集合的第二平均输出速率。
在一种可能的实现方式中,处理器具体用于:根据M个数据流子集的分配速率,确定第一数据流集合的第一总分配速率;根据M个数据流子集的实际速率,确定第一数据流集合的第一总实际速率;根据第一数据流集合的第一总分配速率,确定第一输出端口的第二总分配速率;根据第一数据流集合的第一总实际速率,确定第一输出端口的第二总实际速率;根据第二总实际速率和第二总分配速率,确定第一输出端口的空闲速率。
在一种可能的实现方式中,第一输出端口对应的N个数据流集合,N个数据流集合中包括第一数据流集合;处理器还用于:获得第一输出端口对应的N个数据流集合中每个数据流集合占用第一输出端口的速率以及反馈速率;将第一输出端口对应的N个数据流集合中第一总实际速率不小于第一总分配速率与系数的乘积、且占用第一输出端口的速率小于反馈速率的数据流集合确定为第二数据流集合的数据流子集,反馈速率为下游交换节点指定对应的数据流集合的速率,系数大于阈值且小于1。
在一种可能的实现方式中,处理器具体用于:确定第二数据流集合的第五总分配速率、及第二数据流集合包括的数据流的第六总数;根据第二总分配速率、第二总实际速率、第五总分配速率、第二总数及第六总数,确定第二数据流集合占用第一输出端口的速率。
在一种可能的实现方式中,M个数据流子集中包括第一数据流子集,第一数据流子集与第一输入端口对应;处理器具体用于:获得第一数据流子集的分配速率及实际速率;根据第一数据流子集的分配速率,确定第一输入端口对应的第三总分配速率;根据第一数据流子集的实际速率,确定第一输入端口对应的第三总实际速率;根据第三总实际速率和第三总分配速率,确定第一输入端口对应的数据流子集的空闲速率。
在一种可能的实现方式中,处理器还用于:将第一输入端口对应的各数据流子集中实际速率不小于分配速率与系数的乘积、且第一平均输出速率大于第一平均输入速率的数据流子集确定为第二数据流集合的数据流子集,系数大于阈值且小于1。
在一种可能的实现方式中,处理器具体用于:确定第二数据流集合的第六总分配速率、及第二数据流集合包括的数据流第七总数;根据第三总分配速率、第三总实际速率、第六总分配速率、第三总数、及第七总数,确定第二数据流集合的第二平均输入速率。
在一种可能的实现方式中,处理器具体用于:在预设时间间隔内,确定从第一输入端口流入第i个数据流子集的数据流第三总数,第i个数据流子集为M个数据流子集中的一个;将第三总数与预设时间间隔的比值确定为第i个数据流子集的实际速率。
在一种可能的实现方式中,处理器还用于:确定有新的数据流流入第二数据流子集,更新第二数据流子集的分配速率,第二数据流子集为M个数据流子集中的一个。
在一种可能的实现方式中,通信装置还包括收发模块,用于向上游节点发送第二数据流子集更新后的分配速率。
在一种可能的实现方式中,更新后的分配速率携带于基于优先级的数据流控制PFC控制报文。
在一种可能的实现方式中,处理器还用于:若确定新的数据流到达第一输出端口、且第一输出端口存在空闲队列,将新的数据流存储于空闲队列。
在一种可能的实现方式中,处理器还用于:若确定新的数据流到达第一输出端口、且第一输出端口不存在空闲队列,将新的数据流存储于预留队列。
在一种可能的实现方式中,处理器还用于:确定第一输出端口存在空闲队列,且预留队列中存在数据流,将预留队列中的数据流移入空闲队列。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令被通信装置执行时,使得该通信装置执行上述第一方面或第一方面的任意可能的实现方式中的方法。
第五方面,本申请提供一种计算机程序产品,该计算机程序产品包括计算机程序或指令,当该计算机程序或指令被通信装置执行时,使得该通信装置执行上述第一方面或第一方面的任意可能的实现方式中的方法。
上述第二方面至第五方面中任一方面可以达到的技术效果可以参照上述第一方面中有益效果的描述,此处不再重复赘述。
附图说明
图1a为本申请提供的一种数据中心网络的架构示意图;
图1b为本申请提供的另一种数据中心网络的架构示意图;
图2为本申请提供的一种交换节点的结构示意图;
图3为本申请提供的又一种数据中心网络的架构示意图;
图4为本申请提供的一种控制数据流传输的方法流程示意图;
图5为本申请提供的一种确定第一数据流子集的第一平均输出速率的方法流程示意图;
图6a为本申请提供的一种确定数据流集合是否存在空闲速率的方法流程示意图;
图6b为本申请提供的一种为第二数据流集合分配空闲速率的方法流程示意图;
图7a为本申请提供的一种确定输出端口是否存在空闲速率的方法流程示意图;
图7b为本申请提供的一种为第二数据流集合分配空闲速率的方法流程示意图;
图8a为本申请提供的一种确定数据流集合是否存在空闲速率的方法流程示意图;
图8b为本申请提供的一种为第二数据流集合分配空闲速率的方法流程示意图;
图9a为本申请提供的一种数据流在交换节点中的流向示意图;
图9b为本申请提供的另一种数据流在交换节点中的流向示意图;
图9c为本申请提供的又一种数据流在交换节点中的流向示意图;
图9d为本申请提供的又一种数据流在交换节点中的流向示意图;
图10为本申请提供的一种PFC控制报文的格式示意图;
图11为本申请提供的一种交换节点接收到的新的数据流的处理方法流程示意图;
图12为本申请提供的一种通信装置的结构示意图;
图13为本申请提供的一种通信装置的结构示意图。
具体实施方式
下面将结合附图,对本申请实施例进行详细描述。
以下,对本申请中的部分用语进行解释说明。需要说明的是,这些解释是为了便于本领域技术人员理解,并不是对本申请所要求的保护范围构成限定。
一、数据流标识(flow ID)
数据流标识可以唯一的标识一条数据流。示例性地,数据流标识可为五元组、三元组、或者可以唯一识别出数据流的其他标识。其中,五元组通常是指源网络协议(internet protocol,IP)地址,源端口,目的IP地址,目的端口和传输层协议。源IP地址,源端口,目的IP地址,目的端口,和传输层协议这五个量组成的一个集合。例如:192.168.1.1 10000 TCP 121.14.88.76 80就构成了一个五元组。其意义是,一个IP地址为192.168.1.1的终端通过端口10000,利用TCP协议,和IP地址为121.14.88.76,端口为80的终端进行连接。数据流标识用于第二节点确定是一数据包属于哪个数据流。
二、队列
队列是指使用一个队列算法对接收到的数据流进行分类,之后再基于队列调度机制将队列中的数据流发送出去,不同的数据流可能对应不同的队列。
基于上述内容,下面介绍本申请可应用的数据中心网络的架构。数据中心网络有多种组网的方式,如下示例性地的示出了本申请可应用的两种可能的数据中心网络的架构示意图。
如图1a所示,为本申请提供的一种数据中心网络的架构示意图。该数据中心网络包括三层,分别为核心层(Core)、汇聚层(Aggregation)和接入层(Access),其中,接入层又可称为边缘层。每层可包括一个或多个交换节点(或称为交换设备),图1a以核心层包括2个交换节点,汇聚层包括4个交换节点,接入层包括3个交换节点为例。其中,核心层包括的交换节点可以称为Core节点,汇聚层包括的交换节点可以称为Aggregation节点,接入层包括的交换节点可以称为Access节点或架顶式(top of rack,TOR)节点。其中,交换节点例如可以是交换机。
在图1a所示的组网方式中,Access节点的下行端口(比如速率可以是10Gbps)可连接服务器(Server)(或称为主机),Access节点的上行端口(比如速率可以是40Gbps)可连接Aggregation交换节点;Aggregation节点的下行端口可连接Access节点,Aggregation节点的上行端口可连接Core节点。其中,Core节点可称为Aggregation节点的上游节点,Aggregation节点可称为Access节点的上游节点。
需要说明的是,图1a所示的数据中心网络的组网方式仅是一种示例,数据中心网络可以划分为两层、或者也可以划分为三层以上,核心层、汇聚层和接入层包括的交换节点的数量可以相同,也可以不相同,本申请对此不做限定。
如图1b所示,为本申请提供的另一种数据中心网络的架构示意图。该数据中心网络包括两级节点,分别为骨干(spine)交换节点和叶子(leaf)交换节点。其中,一个骨干交换节点用于连接每个叶子交换节点,叶子交换节点用于连接服务器(或称为主机)。图1b以包括2个骨干交换节点和4个叶子交换节点为例。在图1b所示的组网方式中,骨干交换节点的下行端口可用于连接叶子交换节点。
需要说明的是,图1b所示的数据中心网络的组网方式也仅是一种示例,数据中心网络包括的骨干交换节点的数量、叶子交换节点的数量可以相同,也可以不相同,本申请对此不做限定。
基于上述数据中心网络的架构,下面对数据中心网络内的交换节点的结构进行介绍。
如图2所示,为本申请提供的一种交换节点的结构示意图。该交换节点包括P个输入端口和Q个输出端口,P和Q均为大于1的整数,输入端口和输出端口可以也称为网络接口(network interface)。其中,输入端口用于接收来自该交换节点外的节点(例如来自上游交换节点)的数据流。输出端口用于向该交换节点的外部(例如向下游交换节点)传输数据流。交换节点内置多个输出队列(output queue,OQ),以用于缓存去往下游交换节点或服务器等的数据流。其中,每个队列可包括一个或多个数据流集合,图2是以输出端口Q的队列Q2包括数据流集合F1和数据流集合F2为例的。每个数据流集合可包括一个或多个数据流子集,每个数据流子集可包括一个或多个数据流。其中,数据流集合可以是该交换节点的下游交换节点通过反馈报文指定哪些数据流属于同一个数据流集合。例如,数据中心网络中的最后一跳交换节点可根据输出端口连接的服务器,将从最后一跳交换节点的同一输出端口流入同一服务器的数据流分为同一数据流集合,并向最后一跳的交换节点的上游交换节点(例如图2所示该交换节点)发送反馈报文,反馈报文可包括数据流集合的标识及该数据流集合中包括的数据流。进一步,可选地,该交换节点可再根据数据流与输入端口的对应关系,对数据流集合进行数据流子集的划分。例如,该交换节点可再将从同一输入端口接收的数据流划分为一个数据流子集,不同输入端口接收到的数据流划分为不同的数据流子集。
进一步,可选地,交换节点还可包括输出调度器(engress scheduler,SCE)和队列管理器(queue manager,QM),队列管理器可负责维护这多个输出队列,输出调度器用于调度队列管理器中的输出队列,使得输出队列中缓存的数据流通过网络接口(network interface)传输至该交换节点的外部节点。
应理解,若该交换节点采用高规格交换芯片,那么该交换节点还可能配置有外置缓存。
结合上述图1a和图2,如图3所示,为本申请提供的另一种数据中心网络的架构示意图。该数据中心网络包括交换节点S1、交换节点S2、交换节点S3、交换节点S4、交换节点S5和交换节点S6。交换节点S1、交换节点S2和交换节点S3的数据流可通过各自对应的输出端口流向交换节点S4;交换节点S4的数据流可通过输出端口分别流向交换节点S5和交换节点S6。换言之,交换节点S1、交换节点S2和交换节点S3均是交换节点S4的上游节点,交换节点S4是交换节点S1、交换节点S2和交换节点S3的下游节点,交换节点S4是交换节点S5和交换节点S6的上游节点,交换节点S5和交换节点S6是交换节点S4 的下游节点。
需要说明的是,上游交换节点的一个输出端口的一个队列的一个数据流集合通常流向下游交换节点的一个输出端口的一个队列的一个数据流集合。应理解,当下游交换节点的一个输出端口中的队列包括一个数据流集合时,上游交换节点的一个输出端口的一个队列的一个数据流集合指向下游交换节点的一个输出端口的一个队列。
如背景技术介绍,基于现有数据流的传输方法,会造成数据流的传输时延较大。
鉴于此,本申请提出一种控制数据流传输的方法。该控制数据流的传输方法可高效的解决网络中的拥塞问题,从而可减小数据传输的时延。
基于上述内容,下面结合附图4至附图11,对本申请提出的控制数据流传输的方法进行具体阐述。
在下文的介绍中,数据流子集中包括的各个数据流的分配速率是相同的,例如,数据流的分配速率等于该数据流子集的分配速率与该数据流子集包括的数据流的总数的比值。数据流集合的分配速率等于该数据流集合中包括的各个数据流子集的分配速率的和。数据流子集中包括的各个数据流的实际速率是相同的,例如,数据流的实际速率等于该数据流子集的实际速率与该数据流子集包括的数据流的总数的比值。数据流集合的实际速率等于该数据流集合中包括的各个数据流子集的实际速率的和。
请参阅图4,为本申请提供的一种控制数据流传输的方法流程示意图。该方法可应用于上述图1a、图1b或图3所示的数据中心网络。该方法中的交换节点可以是上述图1a或图1b中的任一个交换节点,也可以是上述图2所示的交换节点,也可以是上述图3中任一交换节点,该交换节点可包括P个输入端口和Q个输出端口,第一输入端口为P个输入端口中的一个,第一输出端口为Q个输出端口中的一个,第一数据流集合为第一输出端口的一个数据流集合。该方法包括以下步骤:
步骤401,交换节点可获得第一数据流集合中的M个数据流子集的分配速率。
其中,所述M为正整数。以M个数据流子集中的第i个数据流子集为例。交换节点可先确定第i个数据流子集的第一平均输入速率及第一平均输出速率,并将第一平均输入速率与第一平均输出速率中的最小值,确定为第i个数据流子集的分配速率。
示例性地,第i个数据流子集的分配速率rate_i_Fx=Min(第一平均输出速率Rl_i_Fx,第一平均输入速率Rr_i_Fx)。
在一种可能的实现方式中,交换节点可根据第一输入端口的速率Rin、第一输入端口流向第i个数据流子集的数据流的第三总数n_i_Fx、及第一输入端口包括的数据流的第四总数M_i,确定第一平均输入速率Rr_i_Fx。应理解,第一端口的速率Rin等于第一端口的带宽B_i。
示例性地,第一平均输入速率Rr_i_Fx=第一输入端口的速率Rin*第三总数n_i_Fx/第四总数M_i。
需要说明的是,第一输出端口的第一数据流集合可表示为PjQiFx,PjQiFx包括哪些数据流子集是通过下游交换节点发送的反馈信息指定的,数据流子集包括哪个数据流也是通过下游交换节点发送的反馈信息指定的,关于反馈信息可参见下述图10的相关描述,此处不再赘述。
如下,示例性地的示出了一种确定数据流子集的第一平均输出速率的方法流程示意图。 请参阅图5,该方法包括以下步骤:
步骤501,交换节点可根据第一输出端口的速率、第一输出端口输出的数据流的第一总数K_j、及第一数据流集合包括的数据流的第二总数N_Fx,确定第一数据流集合占用第一输出端口的第一速率BP_Fx。
示例性地,第一数据流集合占用第一输出端口的第一速率BP_Fx=第一输出端口的速率B_j×第二总数N_Fx/第一总数K_j。
步骤502,交换节点将第一数据流集合占用第一输出端口的第一速率BP_Fx与反馈速率Rf_Fx中的最小值,确定为第一数据流集合的最大平均输出速率Rout_Fx。
其中,反馈速率为下游交换节点指定从第一数据流集合传输数据流的速率。
示例性地,最大平均输出速率Rout_Fx=Min(第一数据流集合占用第一输出端口的第一速率BP_Fx,Rf_Fx)。
其中,反馈速率为下游交换节点指定从第一数据流集合传输数据流的速率。
步骤503,交换节点根据最大平均输出速率、第二总数、及第一输入端口流向第i个数据流子集的数据流的第三总数,确定第一平均输出速率。
示例性地,第一平均输出速率Rl_i_Fx=最大平均输出速率Rout_Fx×第三总数n_i_Fx/第二总数N_Fx。
基于上述步骤501至步骤503可以看出,数据流子集的平均输出速率受自身所在队列及下游交换节点反馈的反馈速率的影响。
步骤402,交换节点测量M个数据流子集的实际速率。
在一种可能的实现方式中,以M个数据流子集中的第i个数据流子集为例,交换节点可在预设时间间隔内t,确定从第一输入端口流向第i个数据流子集的数据流第三总数n_i_Fx,将第三总数n_i_Fx与预设时间间隔的比值确定为第i个数据流子集的实际速率Rm_i_Fx。
示例性地,实际速率Rm_i_Fx=第三总数n_i_Fx/预设时间间隔t。其中,预设时间间隔t可以链路延迟,例如2微秒至4微秒。
步骤403,交换节点根据实际速率和分配速率确定第一输出端口的空闲速率。
此处,确定第一输出端口的空闲速率可包括确定第一输出端口的第一数据流集合的空闲速率,具体可参见下述图6a的介绍;还可包括确定第一输出端口的空闲速率,可参见下述图7a的介绍;还可以包括确定第一输出端口的与第一输入端口对应的数据流子集的空闲速率,可参见下述图8a的介绍,此处在赘述。
步骤404,交换节点将空闲速率分配给第二数据流集合中的数据流子集。
此处,第二数据流集合中的数据流子集的实际速率不小于分配速率与系数的乘积,系数大于阈值且小于1。示例性地,以第二数据流集合中的第j个数据流子集为例,第j个数据流子集满足Rm_j_Fx<0.9×Rate_j_Fx,其中,0.9即为系数。应理解,该系数也可以是小于0.9或大于0.9,凡是可以表示第二数据流集合中的数据流子集的实际速率接近分配速率的系数均可能,本申请对该系数的具体值不做限定。
第二数据流集合中的数据流子集的实际速率不小于分配速率与系数的乘积,说明第二数据流集合中的数据流子集传输数据流的速率即将不足。第二数据流集合传输数据流速率即将不足包括第二数据流集合的输入速率即将不足和/或第二数据流集合的输出速率即将不足。若第二数据流集合的输出速率即将不足,则可将空闲速率分配给第二数据流集合的 输出速率,具体可参见下述图6b或图7b的介绍。若第二数据流集合的输入速率即将不足,则可将空闲速率分配给第二数据流集合的输入速率,具体可参见下述图8b的介绍。
通过上述步骤401至步骤404,可确定第一输出端口存在空闲速率,并将该空闲速率分配给第二数据流集合,从而有助于提高第二数据流集合传输数据流的速率,进而有助于减小第二数据流集合的数据流的传输时延。特别是当第二数据流集合中数据流子集的实际速率即将不足的情况。
针对交换节点中的第一输出端口的第一数据流集合,如下表1中第一输出端口以Pj为例,第一数据流集合以Qi为例,以第一数据流集合F x中的第i个数据流子集为例。基于上述方法,可确定出从第一输入端口流入第i个数据流子集的数据流的第三总数n_i_Fx、第i个数据流子集的分配速率Rate_i_Fx、第i个数据流子集的第一平均输入速率Rr_i_Fx、第i个数据流子集的第一平均输出速率Rl_i_Fx、数据流集合Fx的最大平均输出速率Rout_Fx、及数据流集合Fx占输出端口Pj的第一速率BP_F x。进一步,可选地,也可测量出第i个数据流子集的实际速率Rm_i_Fx。基于此,交换节点可维护如表1所示的速率分配表。
表1 速率分配表
由上述表1可以看出,数据流集合Fx所在的列表示一个输出端口的一个队列的一个数据流集合,表项中包括数据流子集的分配速率Rate_i_Fx、实际速率Rm_i_Fx、及从第一输入端口流入第i个数据流子集的第三总数n_i_Fx、第一平均输入速率Rr_i_Fx、第一平均输出速率Rl_i_Fx。
下面示例性地示出了交换节点确定第一输出端口的空闲速率的三种可能的方法。
方法1,在第一数据流集合内遍历,即确定第一输出端口的第一数据流集合的空闲速率。
如图6a所示,为本申请提供的一种确定第一数据流集合的空闲速率的方法流程示意图。该方法包括如下步骤:
步骤601,交换节点可根据M个数据流子集的分配速率,确定第一数据流集合对应的 第一总分配速率。
示例性地,第一总分配速率 结合上述表1,第一总分配速率表示第一数据流集合所在列的全部数据流子集的分配速率rate_i_Fx的和。
步骤602,交换节点根据M个数据流子集的实际速率,确定第一数据流集合对应的第一总实际速率。
示例性地,第一总实际速率 第一总实际速率是通过测量第一数据流集合所在列的全部数据流子集的实际速率Rm_i_Fx并求和得到的。
步骤603,交换节点根据第一总实际速率和第一总分配速率,确定第一数据流集合的空闲速率。
此处,若交换节点确定第一总实际速率小于第一总分配速率,确定第一数据流集合存在空闲速率。进一步,可选地,若交换节点确定第一总实际速率小于第一总分配速率、且超过2个往返时延(round-trip time,RTT)时长,说明第一数据流集合欠吞吐,即第一数据流集合存在空闲速率。
示例性地,CPr_Fx<CP_Fx、且超过2个RTT时长,进一步,可选地,CPr_Fx<0.9×CP_Fx、且超过2个RTT时长,说明第一数据流集合存在空闲速率。
基于上述步骤601至步骤603,可确定出第一数据流集合存在的空闲速率,可将第一数据流集合的空闲速率分配给第二数据流集合。
如图6b所示,为本申请提供的一种为第二数据流集合分配空闲速率的方法流程示意图。该方法包括以下步骤:
步骤611,交换节点遍历第一数据流集合的M个数据流子集的分配速率、第一平均输出速率及第一平均输入速率,将实际速率不小于分配速率与系数的乘积、且第一平均输出速率小于第一平均输入速率的数据流子集确定为第二数据流集合中的数据流子集。
结合上述表1,交换节点遍历数据流集合Fx所在的列中的数据流子集的分配速率、第一平均输出速率及第一平均输入速率,将实际速率Rm_i_Fx不小于分配速率Rate_i_Fx×0.9(系数)、且第一平均输出速率Rl_i_Fx小于第一平均输入速率Rr_i_Fx的数据流子集确定为第二数据流集合中的数据流子集。也可以理解为,遍历i取[1至M]中每个整数,将实际速率Rm_i_Fx不小于分配速率Rate_i_Fx×0.9、且第一平均输出速率Rl_i_Fx小于第一平均输入速率Rr_i_Fx的数据流子集确定为第二数据流集合中的数据流子集。
示例性地,交换节点可将Rm_i_Fx≥0.9×Rate_i_Fx且Rl_i_Fx<Rr_i_Fx的集合,放入第二数据流集合ColR_Fx。应理解,对于Rm_i_Fx≥0.9×Rate_i_Fx且Rl_i_Fx<Rr_i_Fx的数据流子集,说明Rl_i_Fx是传输速率的瓶颈。
需要说明的是,第二数据流集合可以是来自一个输入端口的数据流子集组成的集合,也可以是来自多个输入端口的数据流子集组成的集合,本申请对此不做限定。
步骤612,交换节点获得第二数据流集合对应的第四总分配速率、及第二数据流集合包括的数据流的第五总数。
示例性地,第四总分配速率CPrx_Fx=∑ FxRate i_Fx。结合上述表1,例如,数据流集合Fx中的3个数据流子集满足上述步骤611,则可将这三个数据流子集的分配速率Rate_i_Fx求和得到第四总分配速率CPrx_Fx。第五总数Kcr_j即为这三个数据流子集中全部的数据流的数量。
步骤613,交换节点根据第一总分配速率、第一总实际速率、第四总分配速率、第三 总数以及第五总数,确定第二数据流集合的第二平均输出速率。
示例性地,第二平均输出速率Rl′_i_Fx=(第一总分配速率CP_Fx-第一总实际速率CPr_Fx+第四总分配速率CPrx_Fx)×第三总数n_i_Fx/第五总数Kcr_j。
步骤614,交换节点可根据第二平均输出速率,更新第二数据流集合中第一平均输出速率小于第一平均输入速率的集合的第一平均输出速率。
示例性地,交换节点将第二数据流集合中Rl_i_Fx<Rr_i_Fx对应的集合中的Rl_i_Fx用Rl′_i_Fx替换。结合上述表1,针对数据流集合Fx所在的列,用Rl′_i_Fx替换第二数据流集合中Rl_i_Fx<Rr_i_Fx的数据流子集中的Rl_i_Fx。
需要说明的是,执行完上述步骤614后,交换节点可清空第二数据流集合ColR_Fx。
方法2,在第一输出端口内遍历。
如图7a所示,为本申请提供的一种确定第一输出端口的空闲速率的方法流程示意图。该方法包括如下步骤:
步骤701,交换节点可根据M个数据流子集的分配速率,确定第一输出端口对应的第二总分配速率。
在一种可能的实现方式中,第一输出端口对应N个数据流集合,交换节点可确定每个数据流集合包括的数据流子集的分配速率;针对每个数据流集合,根据分配速率,可确定出每个数据流集合的第一总分配速率。进一步,可根据N个数据流集合中每个数据流集合的第一总分配速率,确定第一输出端口对应的第二总分配速率。
示例性地,第二总分配速率 其中,CP Fx表示数据流集合Fx对的第一总分配速率。
结合上述表1,数据流集合Fx对应一个第一总分配速率,数据流集合Fx-1也对应一个第一总分配速率,数据流集合Fx+1也对应一个第一总分配速率,依次类推,第一输出端口的全部数据流集合对应的第一总分配速率求和得到第二总分配速率BPa_j。应理解,第一总分配速率的确定过程可参见前述步骤601的相关描述,此处不再赘述。
步骤702,交换节点可根据M个数据流子集的实际速率,确定第一输出端口对应的第二总实际速率。
在一种可能的实现方式中,第一输出端口对应N个数据流集合,交换节点可确定每个数据流集合包括的数据流子集的实际速率;针对每个数据流集合,根据实际速率,可确定出每个数据流集合的第一总实际速率。进一步,可根据N个数据流集合中每个数据流集合的第一总实际速率,确定第一输出端口对应的第二总实际速率。应理解,第一数据流集合为N个数据流集合中的一个。
示例性地,第二总实际速率 其中,CPr Fx表示数据流集合Fx对的第一总实际速率。应理解,第一输出端口包括的数据流集合总数用KFj表示。
结合上述表1,数据流集合Fx对应一个第一总实际速率,数据流集合Fx-1也对应一个第一总实际速率,数据流集合Fx+1也对应一个第一总实际速率,依次类推,第一输出端口的全部数据流集合对应的第一总实际速率求和得到第二总实际速率BPa_j。应理解,第一总实际速率的确定过程可参见前述步骤602的相关描述,此处不再赘述。
步骤703,若交换节点根据第二总实际速率和第二总分配速率,确定第一输出端口的空闲速率。
示例性地,若BPr_j<0.9×BPa_j,说明第一输出端口存在空闲。
基于上述步骤701至步骤703,可确定出第一输出端口存在的空闲速率,可将第一输出端口的空闲速率分配给第二数据流集合。
如图7b所示,为本申请提供的另一种为第二数据流集合分配空闲速率的方法流程示意图。该方法包括以下步骤:
步骤711,交换节点遍历第一输出端口内的N个数据流集合中每个数据流集合对应的第一总分配速率、占用第一输出端口的速率及反馈速率,将第一总实际速率不小于第一总分配速率与系数的乘积、且占用第一输出端口的第一速率小于反馈速率的数据流集合确定为第二数据流集合的数据流子集。
此处,反馈速率为下游交换节点指定对应的数据流集合传输数据流的速率。
示例性地,交换节点可将第一总实际速率CPr_Fx≥0.9(系数)×第一总分配速率CP_Fx且占用第一输出端口的速率BP_Fx<反馈速率Rf_Fx的数据流集合放入为第二数据流集合OutBr_j。应理解,CPr_Fx>0.9×CP_Fx且BP_Fx<Rf_Fx的数据流集合,说明BP_Fx为数据流集合传输数据流的瓶颈。
步骤712,交换节点可确定第二数据流集合对应的第五总分配速率、及第一输出端口对应的第二数据流集合包括的数据流的第六总数。
示例性地,第五总分配速率BPrx_i==∑ FxCP_Fx。
步骤713,交换节点可根据第二总分配速率、第二总实际速率、第五总分配速率、第二总数及第六总数,确定第二数据流集合的占用第一输出端口的第二速率。
示例性地,第二数据流集合的占用第一输出端口的速率BP′_Fx=(第二总分配速率BPa_j-第二总实际速率BPr_j+第五总分配速率BPrx_j)×第二总数N_Fx/第六总数Nbr_j。
步骤714,交换节点可根据占用第一输出端口的第二速率,更新第二数据流集合中占用第一输出端口的第一速率小于反馈速率的数据流集合的占用第一输出端口的第一速率。
示例性地,交换节点将第二数据流集合中BP_Fx<Rf_Fx对应的数据流集合中的BP_Fx用BP′_Fx替换。结合上述表1,针对数据流集合Fx,用BP′_Fx替换第二数据流集合中BP_Fx<Rf_Fx对应的数据流集合中的BP_Fx。
上述图7a和图7b也可以理解为,先确定第一输出端口存在空闲速率,之后将空闲速率分配给该输出端口中速率即将不足的数据流集合(即第二数据流集合)。
需要说明的是,该方法2可以是在方法1之后执行。另外,执行完上述步骤714后,交换节点可清空第二数据流集合OutBr_j。
方法3,在输入端口Pi内遍历。
如图8a所示,为本申请提供的又一种确定第一输入端口对应的数据流子集的空闲速率的方法流程示意图。该方法包括如下步骤:
步骤801,交换节点可获得第一数据流子集的分配速率及实际速率。
在一种可能的实现方式中,第一数据流集合中的第一个数据流子集对应第一输入端口,第一输入端口可对应多个数据流子集。
进一步,可选地,交换节点可获得第一输入端口可对应各个数据流子集的分配速率及实际速率。
步骤802,交换节点可根据第一数据流子集的分配速率,确定第一输入端口对应的第三总分配速率。
在一种可能的实现方式中,交换节点可根据第一输入端口对应的各数据流子集的分配 速率,确定第一输入端口对应的第三总分配速率;根据各数据流子集的实际速率,确定第一输入端口对应的第三总实际速率。
示例性地,第三总分配速率 结合上述表1,第三总分配速率表示第一输入端口所在行的全部数据流子集的分配速率rate_i_Fx的和。应理解,第一输入端口的数据流共流入MFi个数据流集合。
步骤803,交换节点可根据第一数据流子集的分配速率,确定第一输入端口对应的第三总实际速率。
在一种可能的实现方式中,交换节点可根据第一输入端口对应的各数据流子集的实际速率,确定第一输入端口对应的第三总实际速率。
示例性地,第三总实际速率 第三总实际速率是通过测量第一输入端口所在行的全部数据流子集的实际速率并求和得到的。
步骤804,交换节点根据第三总实际速率和第三总分配速率,确定第一输入端口对应的数据流子集的空闲速率。
在一种可能的实现方式中,交换节点确定第三总实际速率小于第三总分配速率,确定第一输入端口对应的数据流子集存在空闲速率。
进一步,可选地,交换节点确定第三总实际速率小于第三总分配速率、且超过2个RTT时长,说明第一输入端口对应的数据流子集欠吞吐,即第一输入端口对应的数据流子集存在空闲速率。
示例性地,RPr_i<RP_i、且超过2个RTT时长,进一步,可选地,RPr_i<0.9×RP_i、且超过2个RTT时长,说明第一输入端口对应的数据流子集存在空闲速率。
基于上述步骤801至步骤804,可确定出第一输入端口对应的数据流子集的空闲速率,可将第一输入端口对应的数据流子集的空闲速率分配给第二数据流集合。
如图8b所示,为本申请提供的又一种为第二数据流集合分配空闲速率的方法流程示意图。该方法包括以下步骤:
步骤811,交换节点遍历第一输入端口对应的数据流子集的分配速率、第一平均输出速率及第一平均输入速率,将实际速率不小于分配速率与系数的乘积、且第一平均输出速率大于第一平均输入速率的数据流子集确定为第二数据流集合中的数据流子集。
结合上述表1,第一输入端口对应的数据流子集的分配速率是指第一输入端口所在行的数据流子集的分配速率。第一输入端口对应的数据流子集的第一平均输出速率是指第一输入端口所在行的数据流子集的第一平均输出速率。第一输入端口对应的数据流子集的第一平均输入速率是指第一输入端口所在行的数据流子集的第一平均输入速率。需要说明的是,第一输入端口的数据流共流入MFi个数据流子集,即第一输入端口对应MFi个数据流子集。
结合上述表1,交换节点遍历第一输入端口所在行中的全部数据流子集的分配速率、第一平均输出速率及第一平均输入速率,将实际速率Rm_i_Fx不小于分配速率Rate_i_Fx、且第一平均输出速率Rl_i_Fx大于第一平均输入速率Rr_i_Fx的集合确定为第二数据流集合中的数据流子集。
示例性地,交换节点可将Rm_i_Fx>0.9×Rate_i_Fx且Rl_i_Fx>Rr_i_Fx的数据流子集,放入第二数据流集合RowR_i。应理解,Rm_i_Fx>0.9×Rate_i_Fx且Rl_i_Fx>Rr_i_Fx的数据流子集,说明Rr_i_Fx是数据流子集传输速率的瓶颈。
步骤812,交换节点确定第二数据流集合的第六总分配速率、及第二数据流集合包括的数据流第七总数。
示例性地,第六总分配速率RPrx_i=∑ FxRate i_Fx。结合上述表1,第一输入端口对应三个满足上述步骤811的数据流子集,则可将这三个数据流子集的分配速率Rate_i_Fx求和得到第六总分配速率RPrx_i。第七总数Krr_i即为这三个数据流子集中全部的数据流的数量。
步骤813,交换节点根据第三总分配速率、第三总实际速率、第六总分配速率、第三总数、及第七总数,确定从第一输入端口流入第二数据流集合的第二平均输入速率。
示例性地,第二平均输入速率Rr′_i_Fx=(第三总分配速率RP_i-第三总实际速率RPr_i+第六总分配速率RPrx_i)×第三总数n_i_Fx/第七总数Krr_i。
步骤814,交换节点可根据第二平均输入速率,更新第二数据流集合中第一平均输出速率大于第一平均输入速率的数据流子集的第一平均输入速率。
示例性地,交换节点将第二数据流集合中Rl_i_Fx>Rr_i_Fx对应的数据流子集中的Rr_i_Fx用Rr′_i_Fx替换。结合上述表1,针对第一输入端口所在的行,用Rr′_i_Fx替换第二数据流集合中Rl_i_Fx>Rr_i_Fx对应的数据流子集中的Rr_i_Fx。
需要说明的是,执行完上述步骤814后,交换节点可清空第二数据流集合RowR_i。
基于上述内容,下面结合具体的示例,给出上述控制数据流传输方法的四种具体的实现方式。以便于进一步理解上述控制数据流传输的实现过程。
如图9a所示,为本申请提供的一种数据流在交换节点中的流向示意图。交换节点包括输入端口P1、输入端口P2、输入端口P3、输出端口P4和输出端口P5,其中,输出端口P4上有队列Q1,输出端口P5上有队列Q1;为输入端口P1、输入端口P2、输入端口P3分配的带宽Rin均为1Gbps,为输出端口P4的队列Q1分配的带宽B=1Gbps,为输出端口P5的队列Q1分配的带宽B=1Gbps。结合表2,以数据流f1为例,数据流f1从输入端口P1流向P4Q1F1。输入端口P1行有两个数据流(即数据流f1和数据流f2),均分输入端口P1的速率得到1/2Gbps,也就是说,数据流f1的第一平均输入速率Rr=1/2Gbps,数据流f2的第一平均输入速率Rr=1/2Gbps。P4Q1F1列有两个数据流(即数据流f1和数据流f2),均分输出端口P4的速率得到1/2Gbps,也就是说,数据流f1的第一平均输出速率Rl=1/2Gbps,数据流f2的第一平均输出速率Rl=1/2Gbps。则数据流f1的分配速率Rate=Min(第一平均输出速率Rl=1/2Gbps,第一平均输入速率Rr=1/2Gbps)=1/2Gbps。
表2 基于图9a的速率分配表
应理解,上述表2中的∞表示未收到反馈速率,速率的单位是Gbps。
当考虑到数据流的实际速率后,测量数据流f1的实际速率为0.1Gbps,数据流f1的实际速率小于分配速率0.5Gbps,则确定数据流f1存在空闲速率,空闲速率=0.5Gbps-0.1Gbps=0.4Gbps。
假设确定出数据流f2的实际速率大于分配速率×0.9,则可将数据流f1的空闲速率分配给数据流f2,则数据流f2的分配速率为0.4Gbps+0.5Gbps=0.9Gbps。
若是基于上述方法1,将数据流f1的空闲速率分配给数据流f2,则数据流在交换节点中的流向可参见图9b,相应地速率分配表可参见图3。若是基于上述方法2,将数据流f1的空闲速率分配给数据流f2,则数据流在交换节点中的流向可参见图9c,相应的速率分配表可参见图4。若是基于上述方法3,将数据流f1的空闲速率分配给数据流f2,则数据流在交换节点中的流向可参见图9d,相应地速率分配表可参见表5。
表3 基于方法1的速率分配表
需要说明的是,对于实际速率小于分配速率的数据流子集,可向上游交换节点发送反馈信息,反馈信息中包括该数据流子集的分配速率。基于上述表3,反馈信息可包括数据流f1、0.5G、P4Q1F1、以及数据流f2、0.9G、P4Q1F1。
表4 基于方法2的速率分配表
需要说明的是,对于实际速率小于分配速率的数据流子集,可向上游交换节点发送反馈信息,反馈信息中包括数据流子集的分配速率。基于上述表4,f反馈信息可包括数据流1、0.5G、P4Q1F1、以及数据流f2、0.9G、P4Q1F1。
表5 基于方法3的速率分配表
需要说明的是,对于实际速率小于分配速率的,可向上游交换节点发送反馈信息,反馈信息中包括数据流子集的分配速率。基于上述表5,反馈信息可包括数据流f1、0.5G、P4Q1F1、以及数据流f2、0.9G、P5Q1F1。
在一种可能的实现方式中,当交换节点确定有新的数据流从第一输入端口流入第一数据流集合,则需要更新第一输入端口流入第一数据流集合对应的分配速率。
结合上述表1,当交换节点节的第一输入端口接收到新的数据流,且该数据流是从第一输入端口流入第一输出端口的第二数据流子集,则需要更新第二数据流子集的分配速率。
进一步,可选地,该交换节点可向上游交换节点发送第二数据流子集更新后的分配速率。相应地,上游交换节点接收到该第二数据流子集更新的后的分配速率后,更新该数据流所在的数据流集合的反馈速率。需要说明的是,若交换节点接收到新数据流f,该数据流f是从第一输入端口流入第一数据流集合,则交换节点可通过第一输入端口向上游交换节点发送第二数据流子集更新后的分配速率。
结合上述图3,若新的数据流f是交换节点S4从与交换节点S1连接的输入端口接收到的,则该交换节点可通过与交换节点S1连接的输入端口向上游交换节点S1发送第二数据流子集更新后的分配速率。
当交换节点的速率分配表更新了某个数据流f的速率后,向数据流f的上游交换节点或服务网卡反馈该数据流所在的数据流子集的更新后的分配速率,可指明对应的数据流自己的分配速率,从而可限制上游交换节点或网卡中的队列执行数据流的发送速率。
在一种可能的实现方式中,第二数据流子集更新后的分配速率可携带于基于PFC控制报文。示例性地,PFC控制报文包括反馈信息,反馈信息中包括第二数据流子集更新后的分配速率,反馈信息可参见下述图10的介绍。
请参阅图10,为本申请提供的一种PFC控制报文的格式示意图。该PFC控制报文包括站点媒体接入控制(medium access control,MAC)地址(Station MAC Address)、0x8808、 0x0101、类启用向量(Class Enable Vector)及Time 0–7标志位,Time 0–7标志位中的每个标志位16比特(bit)。反馈信息使用Time 0–7标志位。反馈信息包括流标识(Flow ID),分配速率Rate(20bit),流的数量(Flow Num)(12bit),输出端口标识(Output Port ID)(10bit),输出队列标识(Output Queue ID)(10bit),数据流子集标识(Flow Set ID)(10bit),报文类型(Packet Type)(2bit)。Flow ID是数据流五元组哈希值,占用16位,共有2^16=65536个值,在一个端口内冲突概率很低,可以忽略。使用Time0-3标志位传送4个Flow ID。Rate占用20bit位,单位是Mbps,最大值是1Tbps。Output Port、Out Queue ID和Flow Set ID,各占用10位,分别最多可表示2^10=1024个号,使用Time 6–7标志位的前30位。Packet Type占用2位,00可表示反馈报文。
需要说明的是,当交换节点确定有新的数据流从第一输入端口输入后,交换节点可确定流入哪个输出端口,但并不确定该新的数据流应该流入哪个数据流集合及流入哪个数据流子集,需要等下游交换节点的反馈报文。交换节点在等下游交换节点发送的反馈报文期间,可先将该新的数据流存储在空闲队列或预留队列中。
如图11所示,为本申请提供的一种交换节点接收到的新的数据流的处理方法流程示意图。为了便于方案的说明,如下以新的数据流流向第一输出端口为例。
步骤1101,交换节点确定有新的数据流到达第一输出端口。
步骤1102,交换节点确定第一输出端口是否存在空闲队列;若存在,执行步骤1103;若不存在,执行步骤1104。
步骤1103,交换节点将新的数据流存储于空闲队列。
步骤1104,交换节点将新的数据流存储于预留队列。
步骤1105,交换节点可重新分配预留队列或空闲队列的分配速率,并等待下游交换节点的反馈信息。
此处,为预留队列或空闲队列分配速率,可参见前述分配速率的确定过程,此处不再赘述。
在一种可能的实现方式中,当交换节点确定第一输出端口存在空闲队列,且预留队列中存在数据流时,可将预留队列中的数据流中的全部或部分移入空闲队列。
可以理解的是,为了实现上述实施例中功能,通信装置包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的模块及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
基于上述内容和相同构思,图12和图13为本申请的提供的可能的通信装置的结构示意图。这些通信装置可以用于实现上述方法实施例中交换节点的功能,因此也能实现上述方法实施例所具备的有益效果。在本申请中,该通信装置可以是如图1a或图1b中的交换节点,也可以是如图2所示的交换节点,也可以是上述图3中任一交换节点,还可以是应用于交换节点的模块(如芯片)。
如图12所示,该通信装置1200包括处理模块1201和测量模块1202。通信装置1200用于实现上述图4、图5、图6a、图6b、图7a、图7b、图8a或图8b中所示的方法实施例 中交换节点的功能。
当通信装置1200用于实现图4所示的方法实施例的交换节点的功能时:处理模块1201用于获得第一数据流集合中的M个数据流子集的分配速率,M为正整数;测量模块1202用于测量M个数据流子集的实际速率;处理模块1201还用于根据实际速率和分配速率,确定第一输出端口的空闲速率;以及将空闲速率分配给第二数据流集合中的数据流子集;其中,第一输出端口用于输出第一数据流集合和第二数据流集合中的数据流。
有关上述处理模块1201和测量模块1202更详细的描述可以参考图4所示的方法实施例中相关描述直接得到,此处不再一一赘述。
应理解,本申请实施例中的处理模块1201和测量模块1202可以由处理器或处理器相关电路组件实现。进一步,可选地,该通信装置还可包括收发模块1203,收发模块1203可以由通信接口或通信接口相关电路组件实现。
基于上述内容和相同构思,如图13所示,本申请还提供一种通信装置1300。该通信装置1300可包括处理器1301。进一步,可选地,该通信装置还可包括通信接口1302。处理器1301和通信接口1302之间相互耦合。可以理解的是,通信接口1302可以为接口电路或输入输出接口。可选地,通信装置1300还可包括存储器1303,用于存储处理器1301执行的指令或存储处理器1301运行指令所需要的输入数据或存储处理器1301运行指令后产生的数据。
当通信装置1300用于实现图3所示的方法时,处理器1301用于执行上述处理模块1201和测量模块1202的功能,通信接口1302用于执行上述收发模块1203的功能。
当上述通信装置为应用于交换节点的芯片时,该交换节点的芯片实现上述方法实施例中交换节点的功能。该交换节点芯片从交换节点中的其它模块(如射频模块或天线)接收信息,该信息是其它交换节点发送给该交换节点的;或者,该交换节点芯片向其它交换节点中的其它模块(如射频模块或天线)发送信息,该信息是交换节点发送给其它交换节点的。
可以理解的是,本申请的实施例中的处理器可以是中央处理单元(central processing unit,CPU),还可以是其它通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其它可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于通信装置中。当然,处理器和存储介质也可以作为分立组件存在于通信装置中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行计算机程序或指令时,全部或部分地执行本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(digital video disc,DVD);还可以是半导体介质,例如,固态硬盘(solid state drive,SSD)。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。
本申请中,“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。在本申请的文字描述中,字符“/”,一般表示前后关联对象是一种“或”的关系;在本申请的公式中,字符“/”,表示前后关联对象是一种“相除”的关系。另外,在本申请中,“示例的”一词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。或者可理解为,使用示例的一词旨在以具体方式呈现概念,并不对本申请构成限定。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。术语“第一”、“第二”等类似表述,是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块。方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的保护范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (47)

  1. 一种控制数据流传输的方法,其特征在于,所述方法包括:
    获得第一数据流集合中的M个数据流子集的分配速率,所述M为正整数;
    测量所述M个数据流子集的实际速率;
    根据所述实际速率和所述分配速率,确定所述第一输出端口的空闲速率;
    将所述空闲速率分配给第二数据流集合中的数据流子集;
    其中,所述第一输出端口用于输出所述第一数据流集合和所述第二数据流集合中的数据流。
  2. 如权利要求1所述的方法,其特征在于,每个数据流集合包括至少一个数据流子集,每个数据流子集中的数据流来自同一个输入端口。
  3. 如权利要求1或2所述的方法,其特征在于,所述第二数据流集合中的数据流子集的实际速率不小于分配速率与系数的乘积,所述系数大于阈值且小于1。
  4. 如权利要求1至3任一项所述的方法,其特征在于,所述获得数据流集合中的M个数据流子集的分配速率,包括:
    获得第i个数据流子集的第一平均输入速率及第一平均输出速率,i取遍闭区间[1,M]中的整数,所述第i个数据流子集为所述M个数据流子集中的一个;
    将所述第一平均输入速率与所述第一平均输出速率中的最小值,确定为所述第i个数据流子集的分配速率。
  5. 如权利要求4所述的方法,其特征在于,所述获得第i个数据流子集的第一平均输出速率,包括:
    根据所述第一输出端口的速率、所述第一输出端口输出的数据流的第一总数、及第一数据流集合包括的数据流的第二总数,确定所述第一数据流集合占用所述第一输出端口的速率;
    将所述第一数据流集合占用所述第一输出端口的速率与反馈速率中的最小值,确定为所述第一数据流集合的最大平均输出速率,所述反馈速率为下游交换节点指定所述第一数据流集合的速率;
    根据所述最大平均输出速率、所述第二总数、及从第一输入端口流入所述第i个数据流子集包括的数据流的第三总数,确定所述第一平均输出速率。
  6. 如权利要求4或5所述的方法,其特征在于,所述获得第i个数据流子集的第一平均输入速率,包括:
    根据所述第i个数据流子集对应的输入端口的速率、从第一输入端口流入所述第i个数据流子集包括的数据流的第三总数、及所述第i个数据流子集对应的输入端口包括的数据流的第四总数,确定所述第一平均输入速率。
  7. 如权利要求4至6任一项所述的方法,其特征在于,所述根据所述实际速率和所述分配速率确定第一输出端口的空闲速率,包括:
    根据所述M个数据流子集的分配速率,确定所述第一数据流集合的第一总分配速率;根据所述M个数据流子集的实际速率,确定所述第一数据流集合的第一总实际速率;
    根据所述第一总实际速率和所述第一总分配速率,确定所述第一数据流集合的空闲速率。
  8. 如权利要求7所述的方法,其特征在于,所述方法还包括:
    将所述M个数据流子集中实际速率不小于分配速率与系数的乘积、且第一平均输出速率小于第一平均输入速率的数据流子集,确定为所述第二数据流集合的数据流子集,所述系数大于阈值且小于1。
  9. 如权利要求8所述的方法,其特征在于,所述将所述空闲速率分配给第二数据流集合中的数据流子集,包括:
    获取所述第二数据流集合的第四总分配速率、及所述第二数据流集合包括的数据流的第五总数;
    根据所述第一总分配速率、所述第一总实际速率、所述第四总分配速率、所述第三总数以及所述第五总数,确定所述第二数据流集合的第二平均输出速率。
  10. 如权利要求4至6任一项所述的方法,其特征在于,所述根据所述实际速率和所述分配速率确定所述第一输出端口的空闲速率,包括:
    根据所述M个数据流子集的分配速率,确定所述第一数据流集合的第一总分配速率;根据所述M个数据流子集的实际速率,确定所述第一数据流集合的第一总实际速率;
    根据所述第一数据流集合的第一总分配速率,确定所述第一输出端口的第二总分配速率;根据所述第一数据流集合的第一总实际速率,确定所述第一输出端口的第二总实际速率;
    根据所述第二总实际速率和所述第二总分配速率,确定所述第一输出端口的所述空闲速率。
  11. 如权利要求10所述的方法,其特征在于,所述第一输出端口对应的N个数据流集合,所述N个数据流集合中包括所述第一数据流集合;
    所述方法还包括:
    获得所述第一输出端口对应的所述N个数据流集合中每个数据流集合占用所述第一输出端口的速率以及反馈速率;
    将所述第一输出端口对应的N个数据流集合中第一总实际速率不小于第一总分配速率与系数的乘积、且占用所述第一输出端口的速率小于反馈速率的数据流集合确定为所述第二数据流集合的数据流子集,所述反馈速率为下游交换节点指定对应的数据流集合的速率,所述系数大于阈值且小于1。
  12. 如权利要求11所述的方法,其特征在于,所述将所述空闲速率分配给所述第二数据流集合,包括:
    确定所述第二数据流集合的第五总分配速率、及所述第二数据流集合包括的数据流的第六总数;
    根据所述第二总分配速率、所述第二总实际速率、所述第五总分配速率、所述第二总数及所述第六总数,确定所述第二数据流集合占用所述第一输出端口的速率。
  13. 如权利要求4至6任一项所述的方法,其特征在于,所述M个数据流子集中包括第一数据流子集,所述第一数据流子集与第一输入端口对应;
    所述根据所述实际速率和所述分配速率确定所述第一输出端口的空闲速率,包括:
    获得所述第一数据流子集的分配速率及实际速率;
    根据所述第一数据流子集的分配速率,确定所述第一输入端口对应的第三总分配速率;根据所述第一数据流子集的实际速率,确定所述第一输入端口对应的第三总实际速率;
    根据所述第三总实际速率和所述第三总分配速率,确定所述第一输入端口对应的数据流子集的空闲速率。
  14. 如权利要求13所述的方法,其特征在于,所述方法还包括:
    将所述第一输入端口对应的各数据流子集中实际速率不小于分配速率与系数的乘积、且第一平均输出速率大于第一平均输入速率的数据流子集确定为所述第二数据流集合的数据流子集,所述系数大于阈值且小于1。
  15. 如权利要求14所述的方法,其特征在于,所述将空闲速率分配给所述第二数据流集合,包括:
    确定所述第二数据流集合的第六总分配速率、及所述第二数据流集合包括的数据流第七总数;
    根据所述第三总分配速率、所述第三总实际速率、所述第六总分配速率、所述第三总数、及所述第七总数,确定所述第二数据流集合的第二平均输入速率。
  16. 如权利要求1至15任一项所述的方法,其特征在于,所述测量所述M个数据流子集的实际速率,包括:
    在预设时间间隔内,确定从第一输入端口流入第i个数据流子集的数据流第三总数,i取遍闭区间[1,M]中的整数,所述第i个数据流子集为所述M个数据流子集中的一个、且与所述第一输入端口对应;
    将所述第三总数与所述预设时间间隔的比值确定为所述第i个数据流子集的实际速率。
  17. 如权利要求1至16任一项所述的方法,其特征在于,所述方法还包括:
    确定有新的数据流流入第二数据流子集,更新所述第二数据流子集的分配速率,所述第二数据流子集为所述M个数据流子集中的一个。
  18. 如权利要求17所述的方法,其特征在于,所述方法还包括:
    向上游节点发送所述第二数据流子集更新后的分配速率。
  19. 如权利要求18所述的方法,其特征在于,所述更新后的分配速率携带于基于优先级的数据流控制PFC控制报文。
  20. 如权利要求17至19任一项所述的方法,其特征在于,所述方法还包括:
    若确定所述新的数据流到达所述第一输出端口、且所述第一输出端口存在空闲队列,将所述新的数据流存储于所述空闲队列。
  21. 如权利要求20所述的方法,其特征在于,所述方法还包括:
    若确定所述新的数据流到达所述第一输出端口、且所述第一输出端口不存在所述空闲队列,将所述新的数据流存储于预留队列。
  22. 如权利要求20或21所述的方法,其特征在于,所述方法还包括:
    确定所述第一输出端口存在空闲队列,且预留队列中存在数据流,将所述预留队列中的数据流移入所述空闲队列。
  23. 一种通信装置,其特征在于,包括处理模块和测量模块;
    所述处理模块,用于获得第一数据流集合中的M个数据流子集的分配速率,所述M为正整数;
    所述测量模块,用于测量所述M个数据流子集的实际速率;
    所述处理模块,还用于根据所述实际速率和所述分配速率,确定所述第一输出端口的空闲速率;以及将所述空闲速率分配给第二数据流集合中的数据流子集;
    其中,所述第一输出端口用于输出所述第一数据流集合和所述第二数据流集合中的数据流。
  24. 如权利要求23所述的装置,其特征在于,每个数据流集合包括至少一个数据流子集,每个数据流子集中的数据流来自同一个输入端口。
  25. 如权利要求23或24所述的装置,其特征在于,所述第二数据流集合中的数据流子集的实际速率不小于分配速率与系数的乘积,所述系数大于阈值且小于1。
  26. 如权利要求23至25任一项所述的装置,其特征在于,所述处理模块,具体用于:
    获得第i个数据流子集的第一平均输入速率及第一平均输出速率,i取遍闭区间[1,M]中的整数,所述第i个数据流子集为所述M个数据流子集中的一个;
    将所述第一平均输入速率与所述第一平均输出速率中的最小值,确定为所述第i个数据流子集的分配速率。
  27. 如权利要求26所述的装置,其特征在于,所述处理模块,具体用于:
    根据所述第一输出端口的速率、所述第一输出端口输出的数据流的第一总数、及第一数据流集合包括的数据流的第二总数,确定所述第一数据流集合占用所述第一输出端口的速率;
    将所述第一数据流集合占用所述第一输出端口的速率与反馈速率中的最小值,确定为所述第一数据流集合的最大平均输出速率,所述反馈速率为下游交换节点指定所述第一数据流集合的速率;
    根据所述最大平均输出速率、所述第二总数、及从第一输入端口流入所述第i个数据流子集包括的数据流的第三总数,确定所述第一平均输出速率。
  28. 如权利要求26或27所述的装置,其特征在于,所述处理模块,具体用于:
    根据所述第i个数据流子集对应的输入端口的速率、从第一输入端口流入所述第i个数据流子集包括的数据流的第三总数、及所述第i个数据流子集对应的输入端口包括的数据流的第四总数,确定所述第一平均输入速率。
  29. 如权利要求26至28任一项所述的装置,其特征在于,所述处理模块,具体用于:
    根据所述M个数据流子集的分配速率,确定所述第一数据流集合的第一总分配速率;根据所述M个数据流子集的实际速率,确定所述第一数据流集合的第一总实际速率;
    根据所述第一总实际速率和所述第一总分配速率,确定所述第一数据流集合的空闲速率。
  30. 如权利要求29所述的装置,其特征在于,所述处理模块,还用于:
    将所述M个数据流子集中实际速率不小于分配速率与系数的乘积、且第一平均输出速率小于第一平均输入速率的数据流子集,确定为所述第二数据流集合的数据流子集,所述系数大于阈值且小于1。
  31. 如权利要求30所述的装置,其特征在于,所述处理模块,具体用于:
    获取所述第二数据流集合的第四总分配速率、及所述第二数据流集合包括的数据流的第五总数;
    根据所述第一总分配速率、所述第一总实际速率、所述第四总分配速率、所述第三总数以及所述第五总数,确定所述第二数据流集合的第二平均输出速率。
  32. 如权利要求26至28任一项所述的装置,其特征在于,所述处理模块,具体用于:
    根据所述M个数据流子集的分配速率,确定所述第一数据流集合的第一总分配速率; 根据所述M个数据流子集的实际速率,确定所述第一数据流集合的第一总实际速率;
    根据所述第一数据流集合的第一总分配速率,确定所述第一输出端口的第二总分配速率;根据所述第一数据流集合的第一总实际速率,确定所述第一输出端口的第二总实际速率;
    根据所述第二总实际速率和所述第二总分配速率,确定所述第一输出端口的所述空闲速率。
  33. 如权利要求32所述的装置,其特征在于,所述第一输出端口对应的N个数据流集合,所述N个数据流集合中包括所述第一数据流集合;
    所述处理模块,还用于:
    获得所述第一输出端口对应的所述N个数据流集合中每个数据流集合占用所述第一输出端口的速率以及反馈速率;
    将所述第一输出端口对应的N个数据流集合中第一总实际速率不小于第一总分配速率与系数的乘积、且占用所述第一输出端口的速率小于反馈速率的数据流集合确定为所述第二数据流集合的数据流子集,所述反馈速率为下游交换节点指定对应的数据流集合的速率,所述系数大于阈值且小于1。
  34. 如权利要求33所述的装置,其特征在于,所述处理模块,具体用于:
    确定所述第二数据流集合的第五总分配速率、及所述第二数据流集合包括的数据流的第六总数;
    根据所述第二总分配速率、所述第二总实际速率、所述第五总分配速率、所述第二总数及所述第六总数,确定所述第二数据流集合占用所述第一输出端口的速率。
  35. 如权利要求26至28任一项所述的装置,其特征在于,所述M个数据流子集中包括第一数据流子集,所述第一数据流子集与第一输入端口对应;
    所述处理模块,具体用于:
    获得所述第一数据流子集的分配速率及实际速率;
    根据所述第一数据流子集的分配速率,确定所述第一输入端口对应的第三总分配速率;根据所述第一数据流子集的实际速率,确定所述第一输入端口对应的第三总实际速率;
    根据所述第三总实际速率和所述第三总分配速率,确定所述第一输入端口对应的数据流子集的空闲速率。
  36. 如权利要求35所述的装置,其特征在于,所述处理模块,还用于:
    将所述第一输入端口对应的各数据流子集中实际速率不小于分配速率与系数的乘积、且第一平均输出速率大于第一平均输入速率的数据流子集确定为所述第二数据流集合的数据流子集,所述系数大于阈值且小于1。
  37. 如权利要求36所述的装置,其特征在于,所述处理模块,具体用于:
    确定所述第二数据流集合的第六总分配速率、及所述第二数据流集合包括的数据流第七总数;
    根据所述第三总分配速率、所述第三总实际速率、所述第六总分配速率、所述第三总数、及所述第七总数,确定所述第二数据流集合的第二平均输入速率。
  38. 如权利要求23至37任一项所述的装置,其特征在于,所述测量模块,具体用于:
    在预设时间间隔内,确定从第一输入端口流入第i个数据流子集的数据流第三总数,所述第i个数据流子集为所述M个数据流子集中的一个;
    将所述第三总数与所述预设时间间隔的比值确定为所述第i个数据流子集的实际速率。
  39. 如权利要求23至38任一项所述的装置,其特征在于,所述处理模块,还用于:
    确定有新的数据流流入第二数据流子集,更新所述第二数据流子集的分配速率,所述第二数据流子集为所述M个数据流子集中的一个。
  40. 如权利要求39所述的装置,其特征在于,所述装置还包括收发模块;
    所述收发模块,用于向上游节点发送所述第二数据流子集更新后的分配速率。
  41. 如权利要求40所述的装置,其特征在于,所述更新后的分配速率携带于基于优先级的数据流控制PFC控制报文。
  42. 如权利要求39至41任一项所述的装置,其特征在于,所述处理模块,还用于:
    若确定所述新的数据流到达所述第一输出端口、且所述第一输出端口存在空闲队列,将所述新的数据流存储于所述空闲队列。
  43. 如权利要求42所述的装置,其特征在于,所述处理模块,还用于:
    若确定所述新的数据流到达所述第一输出端口、且所述第一输出端口不存在所述空闲队列,将所述新的数据流存储于预留队列。
  44. 如权利要求42或43所述的装置,其特征在于,所述处理模块,还用于:
    确定所述第一输出端口存在空闲队列,且预留队列中存在数据流,将所述预留队列中的数据流移入所述空闲队列。
  45. 一种通信装置,其特征在于,包括处理器,所述处理器与存储器相连,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器中存储的计算机程序,以使得所述装置执行如权利要求1至22中任一项所述的方法。
  46. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被通信装置执行时,使得所述通信装置执行如权利要求1至22中任一项所述的方法。
  47. 一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序或指令,当所述计算机程序或指令被通信装置执行时,使得所述通信装置执行如权利要求1至22中任一项所述的方法。
CN202180092829.7A 2021-05-26 2021-05-26 一种控制数据流传输的方法及通信装置 Pending CN116868554A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/096160 WO2022246710A1 (zh) 2021-05-26 2021-05-26 一种控制数据流传输的方法及通信装置

Publications (1)

Publication Number Publication Date
CN116868554A true CN116868554A (zh) 2023-10-10

Family

ID=84229335

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180092829.7A Pending CN116868554A (zh) 2021-05-26 2021-05-26 一种控制数据流传输的方法及通信装置

Country Status (2)

Country Link
CN (1) CN116868554A (zh)
WO (1) WO2022246710A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU5596000A (en) * 1999-06-01 2000-12-18 Fastforward Networks, Inc. Method and device for bandwidth allocation
CN106453111B (zh) * 2015-08-11 2020-12-22 中兴通讯股份有限公司 基于聚合链路的流量管理方法及装置
CN107438029B (zh) * 2016-05-27 2021-02-09 华为技术有限公司 转发数据的方法和设备
CN110120848B (zh) * 2018-02-07 2022-04-05 华为技术有限公司 处理数据流的方法和网元设备

Also Published As

Publication number Publication date
WO2022246710A1 (zh) 2022-12-01

Similar Documents

Publication Publication Date Title
US10680964B1 (en) Rate limiting in a multi-chassis environment by exchanging information between peer network elements
US8908522B2 (en) Transmission rate control
EP1708441A1 (en) A method and system for fairly adjusting bandwidth among distributed network elements
WO2021148020A1 (zh) 调整服务等级的方法、装置、设备及存储介质
CN113225196B (zh) 服务等级配置方法以及装置
JP2006506845A (ja) ルータにおけるパケットに対し論理リンクを選択する方法
CN113543209B (zh) 一种基于令牌调度的拥塞控制方法及装置
WO2002098047A2 (en) System and method for providing optimum bandwidth utilization
CN109995608B (zh) 网络速率计算方法和装置
CN112005528B (zh) 一种数据交换方法、数据交换节点及数据中心网络
WO2021143913A1 (zh) 拥塞控制方法、装置及系统、存储介质
CN115622952A (zh) 资源调度方法、装置、设备及计算机可读存储介质
US8072885B2 (en) Traffic shaping circuit, terminal device and network node
US11558308B2 (en) Method for aggregating and regulating messages via a constrained bidirectional communication channel
CN112751776A (zh) 拥塞控制方法和相关装置
KR20120055947A (ko) 가입자 인지 플로우별 QoS 제공 방법 및 장치
US11805071B2 (en) Congestion control processing method, packet forwarding apparatus, and packet receiving apparatus
CN116868554A (zh) 一种控制数据流传输的方法及通信装置
Kim et al. Toward Enabling Performance-Guaranteed Networking in Next-Generation Cellular Networks
CN112714072A (zh) 一种调整发送速率的方法及装置
JP2002247063A (ja) パケット多重化方式
US11870708B2 (en) Congestion control method and apparatus
US11973696B2 (en) Allocation of shared reserve memory to queues in a network device
JP7193787B2 (ja) 通信システム、ブリッジ装置、通信方法、及びプログラム
US20230254264A1 (en) Software-defined guaranteed-latency networking

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