CN115941599B - 一种用于预防pfc死锁的流量控制方法、设备及介质 - Google Patents
一种用于预防pfc死锁的流量控制方法、设备及介质 Download PDFInfo
- Publication number
- CN115941599B CN115941599B CN202310224167.5A CN202310224167A CN115941599B CN 115941599 B CN115941599 B CN 115941599B CN 202310224167 A CN202310224167 A CN 202310224167A CN 115941599 B CN115941599 B CN 115941599B
- Authority
- CN
- China
- Prior art keywords
- network device
- flow control
- pfc
- time delay
- delay
- 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.)
- Active
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种用于预防PFC死锁的流量控制方法、设备及介质。方法包括:第一网络设备接收来自第二网络设备的PFC反压帧,其时间字段被替换为报文反馈信息,其周期性生成并包括第二网络设备的报文处理时延;解析PFC反压帧以获取报文反馈信息后比较报文处理时延和第一预设时延从而确定是否启动上游端口的流量控制;当报文处理时延大于第一预设时延时确定启动流量控制,包括:比较报文处理时延和第二预设时延,当报文处理时延不大于第二预设时延时,根据报文处理时延动态地确定上游端口的流量发送速率。如此解决PFC死锁问题、避免网络瘫痪、提高网络利用率、节省成本。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种用于预防PFC死锁的流量控制方法、设备及介质。
背景技术
随着高性能计算、分布式存储以及人工智能等发展,对为网络性能和数据处理效率提出了更高要求,并且要求网路具有无丢包、低时延和高吞吐等能力。其中,为了实现转发报文无丢包,广泛采用了基于优先级流量控制(Priority-based Flow Control,PFC)技术。对于PFC控制的队列,当队列在下游设备发生拥塞时,上游设备会停止发送该队列的流量,从而实现报文的无丢包传输。PFC技术的广泛应用也导致PFC死锁问题。PFC死锁指的是多个交换机之间因为环路等原因同时出现拥塞,各自端口缓存消耗超过阈值,而又相互等待对方释放资源,从而导致所有交换机上的数据流都永久阻塞的一种网络状态。PFC死锁问题会导致系统陷入死锁且可能使得大部分网络不可用。在现有技术中,一般通过对路由配置或者流优先级进行限制来消除可能导致PFC死锁问题出现的条件,但是这样做在大规模网络复杂流量下效果不佳,并且实施起来比较复杂也难以事先检测。
为此,本申请提供了一种用于预防PFC死锁的流量控制方法、设备及介质,用于解决现有技术中的技术难题。
发明内容
本申请实施例提供了一种用于预防PFC死锁的流量控制方法、设备及介质,用于解决现有技术中存在的问题。
第一方面,本申请提供了一种流量控制方法,用于预防基于优先级流量控制PFC死锁。所述流量控制方法应用于第一网络设备,所述流量控制方法包括:通过所述第一网络设备,接收来自第二网络设备的基于优先级流量控制PFC反压帧,所述PFC反压帧中的时间字段被替换为报文反馈信息,所述报文反馈信息由所述第二网络设备周期性生成并且包括所述第二网络设备的报文处理时延,所述第二网络设备是相对于所述第一网络设备的下游设备;通过所述第一网络设备,解析所述PFC反压帧以获取所述报文反馈信息,然后比较所述报文处理时延和第一预设时延从而确定是否启动对所述第一网络设备的与所述PFC反压帧对应的上游端口的流量控制,所述第一预设时延大于所述第二网络设备空载时的报文处理时延;通过所述第一网络设备,当所述报文处理时延大于所述第一预设时延时,确定启动对所述上游端口的流量控制,所述第一网络设备对所述上游端口的流量控制包括:比较所述报文处理时延和第二预设时延,当所述报文处理时延不大于所述第二预设时延时,根据所述报文处理时延动态地确定所述上游端口的流量发送速率,其中所述第二预设时延大于所述第二网络设备的最大排队处理时延。
通过本申请的第一方面,实现了对流量发送的精确控制和动态平衡,在启动流量控制之后不是停止流量发送而是可以根据报文处理时延(其体现了拥塞的加剧或者减弱)来动态调节流量发送速率(这意味着根据拥塞的加剧或者减弱来进一步降低或者提高上游速率),有利于缓解拥塞、维持下游设备排队时长不再增加、维持系统动态平衡例如逐渐降低上游速率直到与下游出方向速率匹配。
在本申请的第一方面的一种可能的实现方式中,所述第一网络设备的所述上游端口通过基于优先级流量控制PFC技术与所述第二网络设备的下游端口通信。
在本申请的第一方面的一种可能的实现方式中,所述上游端口和所述下游端口之间通过基于所述PFC技术控制的多个优先级队列通信,所述PFC反压帧对应所述多个优先级队列中的一个或者多个优先级队列,所述第一网络设备根据所述报文处理时延动态地确定所述上游端口的流量发送速率包括:所述第一网络设备根据所述报文处理时延动态地确定所述上游端口的所述一个或者多个优先级队列的流量发送速率。
在本申请的第一方面的一种可能的实现方式中,所述第一网络设备对所述上游端口的流量控制还包括:当所述报文处理时延大于所述第二预设时延时,停止所述上游端口的所述一个或者多个优先级队列的流量发送。
在本申请的第一方面的一种可能的实现方式中,所述第一网络设备和所述第二网络设备属于同一网络中的同一循环依赖缓冲区。
在本申请的第一方面的一种可能的实现方式中,所述第一网络设备和所述第二网络设备均是同一叶脊网络中的同一业务流经过的链路上的交换机。
在本申请的第一方面的一种可能的实现方式中,所述PFC反压帧是基于数据中心桥接网络的基于优先级流量控制PFC机制。
在本申请的第一方面的一种可能的实现方式中,所述PFC反压帧中的时间字段是所述数据中心桥接网络的所述PFC机制所定义的标准PFC反压帧中的时间字段。
在本申请的第一方面的一种可能的实现方式中,所述报文反馈信息由所述第二网络设备周期性生成,包括:所述报文反馈信息由所述第二网络设备按照特定采样周期采样生成。
在本申请的第一方面的一种可能的实现方式中,所述特定采样周期是64微秒。
在本申请的第一方面的一种可能的实现方式中,所述第一网络设备对所述上游端口的流量控制是通过支持数据中心量化拥塞通知DCQCN网络的速率控制器。
在本申请的第一方面的一种可能的实现方式中,所述第二网络设备空载时的报文处理时延和所述第二网络设备的最大排队处理时延均预先测定。
在本申请的第一方面的一种可能的实现方式中,所述第一预设时延是基于所述第二网络设备的线速转发时延。
在本申请的第一方面的一种可能的实现方式中,所述第一预设时延还基于所述第一网络设备和所述第二网络设备所在的应用场景的时延要求。
在本申请的第一方面的一种可能的实现方式中,所述第一网络设备根据所述报文处理时延动态地确定所述上游端口的流量发送速率包括:将所述报文处理时延输入速率映射函数从而计算出所述上游端口的流量发送速率,其中所述速率映射函数指示所述上游端口的流量发送速率的大小与所述报文处理时延之间成反比关系。
在本申请的第一方面的一种可能的实现方式中,所述速率映射函数还指示所述上游端口的流量发送速率的变化速度与所述报文处理时延成正比。
在本申请的第一方面的一种可能的实现方式中,所述速率映射函数是分段式并且指示多个阈值档次,所述多个阈值档次与多个发送速率一一对应。
在本申请的第一方面的一种可能的实现方式中,所述PFC反压帧中的时间字段指示停流时间。
在本申请的第一方面的一种可能的实现方式中,所述流量控制方法还包括:通过所述第一网络设备,当所述报文处理时延不大于所述第二预设时延时,确定所述第二网络设备的实时排队长度并且当所述实时排队长度相对于所述第二网络设备的最大排队长度的比例超过阈值比例时,停止所述上游端口的流量发送。
第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第四方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种具有循环依赖缓冲区的叶脊网络的示意图;
图2为本申请实施例提供的一种流量控制方法的流程图;
图3为本申请实施例提供的一种报文处理时延和流量发送速率之间关系的示意图;
图4为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图对本申请实施例作进一步地详细描述。
本申请实施例提供了一种用于预防PFC死锁的流量控制方法、设备及介质,用于解决现有技术中存在的问题。其中,本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。
应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
图1为本申请实施例提供的一种具有循环依赖缓冲区的叶脊网络的示意图。如图1所示,叶脊(spine-leaf)网络包括两个脊(spine)交换机,分别为脊交换机102和脊交换机104,还有两个叶(leaf)交换机,分别为叶交换机112和叶交换机114。叶脊网络是在传统的三层结构的数据中心网络结构(三层结构分别为接入层、汇聚层和核心层)基础上发展出来的两层结构,其包括叶交换机用于连接物理服务器和脊交换机作为核心交换机。叶交换机之间的通信是经由脊交换机进行转发,叶交换机和脊交换机之间可以动态选择多条路径。图1中示出的叶脊网络,其中包括的叶交换机的数量和脊交换机的数量以及具体的结构,仅为示例性。图1中还示出了,叶交换机112与主机120和主机122连接,叶交换机114与主机130和主机132连接。假设有一条业务流从主机120开始,依次按照主机120、叶交换机112、脊交换机102、叶交换机114、主机132的次序来构成数据链路。可以看出,这样的数据链路(依次为主机120、叶交换机112、脊交换机102、叶交换机114、主机132),并没有构成环路,也因此不会发生基于优先级流量控制(Priority-based Flow Control,PFC)的死锁(deadlock)现象。PFC死锁指的是当多个交换机之间因为环路等原因同时出现拥塞,各自端口缓存消耗超过阈值,而又相互等待对方释放资源,从而导致所有交换机上的数据流都永久阻塞的一种网络状态。但是,当因为某些原因,例如链路故障或者设备故障或者通信错误等,可能使得该业务流不是按照上述设计的数据链路来传输,进而可能导致出现PFC死锁现象。例如,可能在叶交换机114和主机132之间出现了链路故障,又或者可能是因为通信错误等原因导致叶交换机114没有获悉主机132的地址,这样就使得流量无法从脊交换机102经过叶交换机114到达主机132,这样意味着流量不从叶交换机114的下游端口转发而是从叶交换机114的上游端口转发。也就是说,流量从叶交换机112到达脊交换机102,然后从脊交换机102到达叶交换机114后,经叶交换机114的上游端口转发到脊交换机104,然后再从脊交换机104转发到叶交换机112。如此,构成了依次经过叶交换机112、脊交换机102、叶交换机114、脊交换机104再到叶交换机112的环路,这样的环路可能是短暂存在的,但是当环路中的交换机都同时对端发送PFC反压帧时会导致环路中所有交换机处于停流状态。因此,图1所示的叶脊网络中具有循环依赖缓冲区(Cyclic Buffer Dependency,CBD),CBD可见于同一个环路上的交换机都触发了PFC门限并向其上游设备发送PFC反压信号从而导致上游设备停止流量发送,最终所有交换机都在停止流量发送状态却又均依赖于各自的上游设备重新启动流量发送。CBD的环路形成,可能是因为链路故障或者设备故障而导致。存在CBD的网络,例如图1所示的具有CBD的叶脊网络,可能存在PFC死锁问题,也就是说,多个交换机(一般至少三个交换机)之间因为环路等原因同时出现拥塞,进而导致互相等待对方重新启动流量发送,从而使得多个交换机上的数据流都永久阻塞。
继续参阅图1,采用PFC技术控制的队列,一般针对一个或者多个优先级队列,而不是针对整个接口或者端口进行中断操作,每个队列能单独暂停或者重启而不影响其它队列上的流量。PFC死锁检测的基本原理是:当队列在下游设备发生拥塞时,下游设备会向上游设备发送PFC反压帧,上游设备在收到来自下游设备的PFC反压帧后,内部调度器停止发送对应优先级的队列流量,并开启定时器,根据设定的死锁检测和精度开始检测队列收到的PFC反压帧;如果在设定的PFC死锁检测期间,该队列一直处于被流控状态,这也意味着定时器监控期间收到多个PFC反压帧,则认为出现了PFC死锁,接着需要进行PFC死锁恢复处理流程。PFC死锁恢复处理期间,上游设备忽略端口接收到的PFC反压帧,内部调度器恢复发送对应优先级的队列流量或者选择丢弃对应优先级的队列流量,在PFC死锁恢复处理之后恢复正常的PFC流控机制。但是,可能不断出现PFC死锁现象,也就是在每次PFC死锁恢复处理之后又检测出PFC死锁,然后进行新的一轮周期的PFC死锁恢复处理。在一段时间内网络中触发了一定次数的PFC死锁,则可以认定网络存在较大的风险,这意味着PFC死锁检测和PFC死锁恢复处理难以发挥效用,这时候需要用户人为介入。PFC死锁检测和PFC死锁恢复处理,只能应对低概率的PFC死锁现象。PFC死锁检测和PFC死锁恢复处理难以应对上述的循环依赖缓冲区这样的一个环路或者多个环路上的多个交换机同时出现拥塞的情况。例如图1所示的叶交换机112、脊交换机102、叶交换机114、脊交换机104再到叶交换机112的环路,当该环路上的多个交换机都发生拥塞的情况时,每个交换机都会向其相对的上游设备发送PFC反压帧,图1中用带箭头的线条示出了在叶交换机112、脊交换机102、叶交换机114、脊交换机104之间的PFC反压帧的发送情况。结合图1可以看出,当因为某些原因,例如链路故障或者设备故障或者通信错误等,可能使得业务流的流量从叶交换机112到达脊交换机102,然后从脊交换机102到达叶交换机114后,经叶交换机114的上游端口转发到脊交换机104,然后再从脊交换机104转发到叶交换机112,这样当该业务流的数据链路构成短暂环路后,该环路上的每个交换机向另一个交换机发送PFC反压帧且自身也接收到PFC反压帧,从而导致了循环依赖缓冲区和PFC死锁现象。并且,这种存在循环依赖缓冲区的PFC死锁现象,可能在PFC死锁恢复处理后又马上进入新的PFC死锁状态,导致频繁重复PFC死锁恢复处理,从而影响网络吞吐效率。
继续参阅图1,为了有效预防PFC死锁现象,需要考虑如何消除导致PFC死锁问题出现的条件特别是尽量避免出现例如图1所示的由叶交换机112、脊交换机102、叶交换机114、脊交换机104构成的循环依赖缓冲区。通过对路由配置或者流优先级进行限制可以有助于消除导致PFC死锁出现的条件。例如,可以在交换机上检测是否存在同一业务流从同一端口组的接口内进出,如果发现存在这种情况,那么该业务流是高风险的钩子流,可能形成循环依赖缓冲区。例如上述图1中所示的,因为链路故障或者设备故障或者通信错误等,使得流量无法从脊交换机102经过叶交换机114到达主机132,而是从脊交换机102到达叶交换机114后经过叶交换机114的上游端口转发到脊交换机104然后再从脊交换机104转发到叶交换机112。这样在叶交换机114上存在着同一业务流从叶交换机114上同一端口组的两个接口进出(两个接口分别对应从脊交换机102到达叶交换机114和从叶交换机114到脊交换机104),因此可以认为该业务流是高风险的钩子流。另外,可以通过在下游设备上对指定的差分服务代码点(Distributed Services code point,DSCP)值的业务流进行重点检测。DSCP作为一种优先级分类的方案,标识了不同优先级的包也使得可以根据包的优先级选择不同的队列。因此,可以通过DSCP值映射的设备内部优先级,从而利用指定DSCP值来对流优先级进行限制。例如,设某个指定DSCP值得业务流从上游设备发过来下游设备,该流在下游设备通过第一队列转发,如果在下游设备检测到该业务流存在引起PFC死锁得风险如识别出该业务流是钩子流等,则可以在下游设备修改其队列优先级从而通过第二队列转发,这样就避免了因为原本的第一队列而产生循环依赖缓冲区。并且,在下游设备也可以修改报文中的DSCP值,从而让该业务流的流量在后续设备中也通过第二队列转发,这样也意味着如果该业务流后续引起了拥塞,例如触发了PFC门限,则会使得PFC反压帧是针对下游设备的第二队列而不是针对原本的第一队列,这样就会让下游设备停止发送与第二队列对应的优先级的流量,从而避免了因为原本的第一队列而产生循环依赖缓冲区以及PFC死锁现象。但是,上述的检测同一业务流从同一端口组的接口内进出的方式以及检测指定DSCP值的业务流的方式,在大规模网络以及复杂的业务流量的应用场景下效果有限,而且在如分布式网络等场景下也难以检测出可能存在的循环依赖缓冲区。并且,通过路由配置和改动队列优先级等方式来消除循环依赖缓冲区的产生条件,也会带来额外的开销。另外,在检测到PFC死锁后,PFC死锁恢复处理流程期间的中断方式,如重置设备、丢弃数据包和启发式重启路由等,均会带来额外的开销,这些会增加网络运行维护成本也会增加网络风险。下面结合图2、图3和本申请其它实施例说明本申请实施例提供的一种用于预防PFC死锁的流量控制方法、设备及介质。
图2为本申请实施例提供的一种流量控制方法的流程图。所述流量控制方法应用于第一网络设备,如图2所示,流量控制方法包括以下步骤。
步骤S210:通过所述第一网络设备,接收来自第二网络设备的基于优先级流量控制PFC反压帧,所述PFC反压帧中的时间字段被替换为报文反馈信息,所述报文反馈信息由所述第二网络设备周期性生成并且包括所述第二网络设备的报文处理时延,所述第二网络设备是相对于所述第一网络设备的下游设备。
步骤S220:通过所述第一网络设备,解析所述PFC反压帧以获取所述报文反馈信息,然后比较所述报文处理时延和第一预设时延从而确定是否启动对所述第一网络设备的与所述PFC反压帧对应的上游端口的流量控制,所述第一预设时延大于所述第二网络设备空载时的报文处理时延。
步骤S230:通过所述第一网络设备,当所述报文处理时延大于所述第一预设时延时,确定启动对所述上游端口的流量控制,所述第一网络设备对所述上游端口的流量控制包括:比较所述报文处理时延和第二预设时延,当所述报文处理时延不大于所述第二预设时延时,根据所述报文处理时延动态地确定所述上游端口的流量发送速率,其中所述第二预设时延大于所述第二网络设备的最大排队处理时延。
参阅上述各个步骤,所述第二网络设备是相对于所述第一网络设备的下游设备,也就是说,第一网络设备是相对于第二网络设备的上游设备,因此业务流的流量是从第一网络设备转向第二网络设备。通过所述第一网络设备,接收来自第二网络设备的PFC反压帧,也就是说,第二网路设备作为下游设备向作为上游设备的第一网络设备发送PFC反压帧。应当注意的是,与上游设备在收到来自下游设备的PFC反压帧后停止发送对应优先级的队列流量的方式不同,第一网络设备在步骤S210接收到来自第二网络设备的PFC反压帧后,在步骤S220解析PFC反压帧以获得报文反馈信息,并且比较所述报文处理时延和第一预设时延从而确定是否启动对所述第一网络设备的与所述PFC反压帧对应的上游端口的流量控制。因此,第一网络设备作为上游设备,在接收到PFC反压帧后不是自动地停止发送流量,而是解析PFC反压帧以获得报文反馈信息。这里,报文反馈信息由所述第二网络设备周期性生成并且包括所述第二网络设备的报文处理时延。第二网络设备的报文处理时延用于指示第二网路设备的实时的流量接收能力,第二网络设备的报文处理时延可以包括多个成分:第二网络设备空载时的报文处理时延(也即第二网络设备在没有报文需要转发时因为自身的处理器、存储器等部件导致的时延),第二网络设备的报文转发时延(第二网络设备用于报文转发的芯片、电子电路等导致的时延),以及第二网络设备的报文排队造成的时延。其中,第二网络设备空载时的报文处理时延可以是在出厂时测定或者预先测定,第二网络设备的报文转发时延可以通过转发芯片生成,而第二网络设备的报文排队造成的时延则取决于第二网络设备的报文排队状态,例如当前报文排队深度相对于最大报文排队长度的比例等。这里,第二网络设备的报文排队造成的时延也叫做排队时延,是因为报文排队而产生的时延,而第二网络设备空载时的报文处理时延和第二网络设备的报文转发时延所造成的整体时延则可以当作性能处理时延,是因为第二网络设备的部件性能所产生的时延。这里,定义了所述第一预设时延大于所述第二网络设备空载时的报文处理时延。第一预设时延可以是相比于所述第二网络设备空载时的报文处理时延增加一个固定值或者提高固定比例。所述第二网络设备空载时的报文处理时延可以被认为是理论上的最低时延或者说最佳性能处理时延,而第一预设时延被设定为大于所述第二网络设备空载时的报文处理时延。第一预设时延用于确定是否启动对所述第一网络设备的与所述PFC反压帧对应的上游端口的流量控制,因此在步骤S230中,当第二网络设备的报文处理时延大于第一预设时延时,这意味着第二网络设备的实时的流量接收能力可能开始无法匹配入口报文进来的速度,因此第二网路设备开始缓存报文,也就是开始出现一定队列深度的报文排队情况。随着入口报文进来的速度继续增加,可能进一步加剧第二网路设备的报文排队的队列深度,也就是进一步增加排队时延。按照标准PFC控制方案,例如按照数据中心桥接(Data Center Bridging,DCB)的PCF控制方案,是将下游设备的实时排队情况与缓存门限也即PFC门限进行比较,当排队深度超过了PFC门限则使得下游设备向上游设备发送PFC反压帧。与这种通过比较下游设备的实时排队情况与PFC门限来确定是否实施流量控制的PFC控制方案不同,在步骤S230中,当所述报文处理时延大于所述第一预设时延时确定启动对所述上游端口的流量控制,并且,所述第一网络设备对所述上游端口的流量控制包括:比较所述报文处理时延和第二预设时延,当所述报文处理时延不大于所述第二预设时延时,根据所述报文处理时延动态地确定所述上游端口的流量发送速率。这样意味着,只要所述报文处理时延大于所述第一预设时延,就会启动流量控制,而不是基于第二网络设备的实时报文排队情况去判断是否启动流量控制。这样做的好处是,随着报文处理时延大于第一预设时延而启动流量控制,并且根据报文处理时延动态地确定所述上游端口的流量发送速率,从而使得在拥塞加剧的情况下随着下游设备也就是第二网络设备的报文处理时延增加来逐渐降低上游速率直到与下游出方向速率匹配,这样有助于维持下游设备排队时长不再增加也维持系统稳定,并且因为是动态地确定所述上游端口的流量发送速率,因此上游端口的流量发送速率在启动流量控制之后不是必然为零,因此上游端口的流量发送在启动流量控制之后不是必然停止。如此,即使存在循环依赖缓冲区的情况,因为没有像标准PFC控制方案那样在收到PFC反压帧后停止流量发送,因此不会出现因为循环依赖下的上游设备停流而导致PFC死锁,并且因为是根据所述报文处理时延动态地确定所述上游端口的流量发送速率,所以可以做到精确的流量控制,例如根据拥塞的加剧或者减弱来进一步降低或者提高上游速率从而有助于缓解拥塞和维持系统于动态平衡。另外,所述第二预设时延大于所述第二网络设备的最大排队处理时延。在步骤S230中,当所述报文处理时延不大于所述第二预设时延时,根据所述报文处理时延动态地确定所述上游端口的流量发送速率。这里,第二预设时延是用于限定进行动态调节的范围。当报文处理时延达到了或者超过了第二预设时延,这意味着,随着拥塞加剧,下游设备也即第二网路设备的报文处理时延进一步增加,直到出现丢包的现象,也就是说,第二网路设备的排队时延与性能处理时延的叠加达到了最大值。因此,所述第二预设时延大于所述第二网络设备的最大排队处理时延,第二预设时延可以理解为在无PFC配置时出现丢包的处理时延,也意味着下游设备的报文排队造成的时延已经达到了下游设备的最大排队处理时延,还意味着下游设备的接收接口的对应接收缓存达到了能容纳的排队中的报文的极限,因此如果有更多的报文加入排队则可能出现丢包。第一预设时延和第二预设时延都是可以在出厂可测或者预先测定。并且一般来说,第二预设时延大于第一预设时延。
继续参阅图2,通过第一预设时延和第二预设时延设定了动态调节上游端口的流量发送速率的动态区间,并且通过来自第二网路设备的PFC反压帧中所包括的报文反馈信息中的报文处理时延,实现了判断是否启动流量控制,以及确定启动流量控制之后根据报文处理时延来动态地确定上游端口的流量发送速率。相比于标准PFC控制方案所采用的将下游设备的实时排队情况与PFC门限进行比较并且让上游设备接收到PFC反压帧后停止流量发送的方式,本申请实施例提供的流量控制方法,围绕第二网络设备也就是下游设备的报文处理时延,实现了对流量发送的精确控制和动态平衡,特别是在启动流量控制之后不是停止流量发送而是可以根据报文处理时延(其体现了拥塞的加剧或者减弱)来动态调节流量发送速率(这意味着根据拥塞的加剧或者减弱来进一步降低或者提高上游速率),有利于缓解拥塞、维持下游设备排队时长不再增加、维持系统动态平衡例如逐渐降低上游速率直到与下游出方向速率匹配。并且,因为是将所述PFC反压帧中的时间字段替换为报文反馈信息,所以可以利用现有的PFC控制方案、PFC技术、PFC有关协议等,也就是可以将本申请实施例提供的流量控制方法便利地应用于既有产品和技术,通过将标准PFC反压帧格式下的时间字段(例如用于指示停流时间的时间字段)替换为报文反馈信息。其中,报文反馈信息包括报文处理时延,并且在一些实施例中具体包括报文在下游设备的转发时延和下游设备空载时的处理时延。下面结合图3进一步详细说明。
图3为本申请实施例提供的一种报文处理时延和流量发送速率之间关系的示意图。如图3所示,横轴是报文处理时延,纵轴是流量发送速率。上面提到,通过第一预设时延和第二预设时延设定了动态调节上游端口的流量发送速率的动态区间,并且通过来自第二网路设备的PFC反压帧中所包括的报文反馈信息中的报文处理时延,实现了判断是否启动流量控制,以及确定启动流量控制之后根据报文处理时延来动态地确定上游端口的流量发送速率。图3中示意性示出了横轴上的三个时间值,分别为Tmin,T0还有T1。这里,Tmin代表了所述第二网络设备空载时的报文处理时延,T0代表了第一预设时延,T1代表了第二预设时延。其中,Tmin所代表的所述第二网络设备空载时的报文处理时延,是理论上的最低时延或者说最佳性能处理时延。T0所代表的第一预设时延大于Tmin。T1所代表的第二预设时延大于所述第二网络设备的最大排队处理时延。从图3中可以看出,报文处理时延与流量发送速率之间的关系体现在,从Tmin到T0,也就是报文处理时延从所述第二网络设备空载时的报文处理时延到第一预设时延,流量发送速率是位于第一区间310,在第一区间310的流量发送速率是恒定的。上面提到,第一预设时延T0用于确定是否启动对所述第一网络设备的与所述PFC反压帧对应的上游端口的流量控制,当第二网络设备的报文处理时延大于第一预设时延T0时,这意味着第二网络设备的实时的流量接收能力可能开始无法匹配入口报文进来的速度,因此第二网路设备开始缓存报文,也就是开始出现一定队列深度的报文排队情况。因此,当报文处理时延超过T0,就开始启动流量控制,因此从具有恒定的流量发送速率的第一区间310进入到进行动态调节的第二区间320。第二区间320是由第一预设时延T0和第二预设时延T1一起设定,当报文处理时延大于第一预设时延T0而没有超过第二预设时延T1时,根据报文处理时延进行动态调节,也就是,当所述报文处理时延大于所述第一预设时延T0时,确定启动对所述上游端口的流量控制,所述第一网络设备对所述上游端口的流量控制包括:比较所述报文处理时延和第二预设时延T1,当所述报文处理时延不大于所述第二预设时延T1时,根据所述报文处理时延动态地确定所述上游端口的流量发送速率。这里,图3中的第二区间320中,报文处理时延与流量发送速率之间的关系示例性的表示为线性关系。应当理解的是,图3中所示出的报文处理时延和流量发送速率之间关系仅为示例性。在第二区间320中,可以按照任意合适的多项式、函数、查找表或者其它模型、算法来表示如何根据报文处理时延确定流量发送速率,只要能有助于根据报文处理时延(其体现了拥塞的加剧或者减弱)来动态调节流量发送速率(这意味着根据拥塞的加剧或者减弱来进一步降低或者提高上游速率),有利于缓解拥塞、维持下游设备排队时长不再增加、维持系统动态平衡例如逐渐降低上游速率直到与下游出方向速率匹配。因此,当报文处理时延从T0开始朝着T1增加,也就意味着拥塞在加剧,则位于第二区间320中的动态确定的流量发送速率必然是降低的趋势;类似地,当报文处理时延从T1开始朝着T0减少,也就意味着拥塞在减弱,则位于第二区间320中的动态确定的流量发送速率必然是增加的趋势。并且,当报文处理时延超过了第二预设时延T1,这意味着下游设备的报文排队造成的时延已经达到了下游设备的最大排队处理时延,还意味着下游设备的接收接口的对应接收缓存达到了能容纳的排队中的报文的极限,因此如果有更多的报文加入排队则可能出现丢包。因此,流量发送速率应在报文处理时延超过T1之后设为零,也即是停止流量发送。
参阅上述图2和图3,本申请实施例提供的流量控制方法,不同于标准PFC控制方案所采用的将下游设备的实时排队情况与PFC门限进行比较并且让上游设备接收到PFC反压帧后停止流量发送的方式,通过例如图3所示的基于报文处理时限、第一预设时延和第二预设时延来提供动态调节流量发送速率的方式(例如图3中所示的第二区间320),使得上游设备在收到报文反馈信息后不是启动定时器和停流,而是改变上游出端口的排出速率,从而有效解决了数据中心等应用场景下的PFC死锁问题,并且避免了网络瘫痪,提高了网络的利用率,有效节省了数据中心的成本。
在一种可能的实施方式中,所述第一网络设备的所述上游端口通过基于优先级流量控制PFC技术与所述第二网络设备的下游端口通信。在一些实施例中,所述上游端口和所述下游端口之间通过基于所述PFC技术控制的多个优先级队列通信,所述PFC反压帧对应所述多个优先级队列中的一个或者多个优先级队列,所述第一网络设备根据所述报文处理时延动态地确定所述上游端口的流量发送速率包括:所述第一网络设备根据所述报文处理时延动态地确定所述上游端口的所述一个或者多个优先级队列的流量发送速率。在一些实施例中,所述第一网络设备对所述上游端口的流量控制还包括:当所述报文处理时延大于所述第二预设时延时,停止所述上游端口的所述一个或者多个优先级队列的流量发送。如此,实现了针对一个或者多个优先级队列施加本申请实施例所提供的流量控制方法,并且可以便利地推广到接口处的所有优先级队列,也可以便利地推广到整个网络的所有节点、所有交换机。相比于通过路由配置和改动队列优先级等方式来消除循环依赖缓冲区的产生条件,通过本申请实施例提供的流量控制方法,在消除循环依赖缓冲区的产生条件同时,不需要涉及到队列优先级的改动,也不需要改动DSCP值和路由配置,因此有效地节省了成本,也降低了风险。
在一种可能的实施方式中,所述第一网络设备和所述第二网络设备属于同一网络中的同一循环依赖缓冲区。在一种可能的实施方式中,所述第一网络设备和所述第二网络设备均是同一叶脊网络中的同一业务流经过的链路上的交换机。即使存在循环依赖缓冲区的情况,因为没有像标准PFC控制方案那样在收到PFC反压帧后停止流量发送,因此不会出现因为循环依赖下的上游设备停流而导致PFC死锁,并且因为是根据所述报文处理时延动态地确定所述上游端口的流量发送速率,所以可以做到精确的流量控制,例如根据拥塞的加剧或者减弱来进一步降低或者提高上游速率从而有助于缓解拥塞和维持系统于动态平衡。
在一种可能的实施方式中,所述PFC反压帧是基于数据中心桥接网络的基于优先级流量控制PFC机制。在一些实施例中,所述PFC反压帧中的时间字段是所述数据中心桥接网络的所述PFC机制所定义的标准PFC反压帧中的时间字段。所述数据中心桥接DCB网络的所述PFC机制所定义的标准PFC反压帧中的时间字段可以是用于指示停留时间的字段。例如,可以参考标准PFC反压帧的格式,将其中2字节大小的指示停留时间的字段替换为2字节的表示报文处理时延的字段,例如采用协议类型0x8808。
在一种可能的实施方式中,所述报文反馈信息由所述第二网络设备周期性生成,包括:所述报文反馈信息由所述第二网络设备按照特定采样周期采样生成。在一些实施例中,所述特定采样周期是64微秒。应当理解的是,可以采用任意合适的采样周期或者采样规律。
在一种可能的实施方式中,所述第一网络设备对所述上游端口的流量控制是通过支持数据中心量化拥塞通知(Data Center Quantized Congestion Notification,DCQCN)网络的速率控制器。
在一种可能的实施方式中,所述第二网络设备空载时的报文处理时延和所述第二网络设备的最大排队处理时延均预先测定。在一些实施例中,所述第一预设时延是基于所述第二网络设备的线速转发时延。在一些实施例中,所述第一预设时延还基于所述第一网络设备和所述第二网络设备所在的应用场景的时延要求。上面提到,所述第一预设时延大于所述第二网络设备空载时的报文处理时延也即是理论上的最低时延,所述第二预设时延大于所述第二网络设备的最大排队处理时延。因为理论上的最低时延一般难以实现,因此可以设定第一预设时延为所述第二网络设备的线速转发时延,例如通过端口百分之一百的带宽打流进行测定。进一步地,所述第一预设时延还基于所述第一网络设备和所述第二网络设备所在的应用场景的时延要求。这是因为,大多数应用场景下,可以接收一定队列深度例如低队列深度的排队,因此对第一预设时延的设定在所述第二网络设备的线速转发时延的基础上还可以参考所述第一网络设备和所述第二网络设备所在的应用场景的时延要求。例如,在低延迟网络中,可以直接将第一预设时延设定为所述第二网络设备的线速转发时延也就是对应线速转发速率,而在其它应用场景下,可以在此基础上增加一定百分比,从而将队列深度维持在一个比较低的水平。
在一种可能的实施方式中,所述第一网络设备根据所述报文处理时延动态地确定所述上游端口的流量发送速率包括:将所述报文处理时延输入速率映射函数从而计算出所述上游端口的流量发送速率,其中所述速率映射函数指示所述上游端口的流量发送速率的大小与所述报文处理时延之间成反比关系。在一些实施例中,所述速率映射函数还指示所述上游端口的流量发送速率的变化速度与所述报文处理时延成正比。在一些实施例中,所述速率映射函数是分段式并且指示多个阈值档次,所述多个阈值档次与多个发送速率一一对应。这里,速率映射函数可以是分段式或者其它任意合适的表达形式,只要能有助于根据报文处理时延(其体现了拥塞的加剧或者减弱)来动态调节流量发送速率(这意味着根据拥塞的加剧或者减弱来进一步降低或者提高上游速率),有利于缓解拥塞、维持下游设备排队时长不再增加、维持系统动态平衡例如逐渐降低上游速率直到与下游出方向速率匹配。具体地,所述速率映射函数指示所述上游端口的流量发送速率的大小与所述报文处理时延之间成反比关系。另外,在一些实施例中,所述速率映射函数还指示所述上游端口的流量发送速率的变化速度与所述报文处理时延成正比,这样意味着可以更快的实现速率匹配。另外,考虑到通过一定的采样周期例如64微秒来定时向上游设备反馈,而时延反馈本身也可能存在一定滞后,因此上游设备的发送速率可以采用分段式的表达。例如,所述速率映射函数是分段式并且指示多个阈值档次,所述多个阈值档次与多个发送速率一一对应。这意味着可以设定不同的阈值档次,每达到一档,就对应一个转发速率,但是总体还是满足上述关系。并且,为了缓解过冲,速率可以是向下取的(也即一段区间的时延,取发送速率对应的最小值)。进一步地,对于每档时延信息反馈的不及时,导致下游设备持续积累的缓存,可以使用缓存区间吸收。进一步地,在具体硬件实现上,可以设置成例如4、8、16、32等阈值区间档次,并且划分越小则控制粒度也更加精细。进一步地,用户可以根据自身网络要求进行个性化设置。
在一种可能的实施方式中,所述PFC反压帧中的时间字段指示停流时间。
在一种可能的实施方式中,所述流量控制方法还包括:通过所述第一网络设备,当所述报文处理时延不大于所述第二预设时延时,确定所述第二网络设备的实时排队长度并且当所述实时排队长度相对于所述第二网络设备的最大排队长度的比例超过阈值比例时,停止所述上游端口的流量发送。上面提到,本申请实施例提供的流量控制方法,不同于标准PFC控制方案所采用的将下游设备的实时排队情况与PFC门限进行比较并且让上游设备接收到PFC反压帧后停止流量发送的方式,通过例如图3所示的基于报文处理时限、第一预设时延和第二预设时延来提供动态调节流量发送速率的方式(例如图3中所示的第二区间320),使得上游设备在收到报文反馈信息后不是启动定时器和停流,而是改变上游出端口的排出速率,从而有效解决了数据中心等应用场景下的PFC死锁问题,并且避免了网络瘫痪,提高了网络的利用率,有效节省了数据中心的成本。因此,本申请实施例提供的流量控制方法,通过调节上游设备的发送速率,使得下游设备缓存不累积,因此下游设备总体上是一个低队列深度排队的情况。并且因为没有停流和循环等待的情况,也就不会出现PFC死锁的问题。在这样的预防PFC死锁问题的机制的基础上,还可以进一步地确定所述第二网络设备的实时排队长度并且当所述实时排队长度相对于所述第二网络设备的最大排队长度的比例超过阈值比例时,停止所述上游端口的流量发送。这里阈值比例可以设定为较高值例如百分之九十,这样就提供了额外的预防PFC死锁机制,也就是当所述报文处理时延不大于所述第二预设时延时,这意味着处于动态调节上游设备的发送速率的区间,这时候额外地检查所述实时排队长度相对于所述第二网络设备的最大排队长度的比例,可以发现高队列深度的情况并且做出停止上游端口的流量发送的措施。应当注意的是,当所述报文处理时延大于所述第二预设时延时,也会触发停止上游端口的流量发送。因此,额外的预防PFC死锁机制是针对当所述报文处理时延不大于所述第二预设时延时可能出现的高队列深度的情况,有利于提前消除可能导致PFC死锁现象的条件,提高系统稳定性。
参见图4,图4是本申请实施例提供的一种计算设备的结构示意图,该计算设备400包括:一个或者多个处理器410、通信接口420以及存储器430。所述处理器410、通信接口420以及存储器430通过总线440相互连接。可选地,该计算设备400还可以包括输入/输出接口450,输入/输出接口450连接有输入/输出设备,用于接收用户设置的参数等。该计算设备400能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;处理器410还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备400执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器410用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备400可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口420具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器410具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图4的计算设备400可以包括一个或者多个处理器410,并且多个处理器410可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器410可以构成处理器序列或者处理器阵列,或者多个处理器410之间可以分成主处理器和辅助处理器,或者多个处理器410之间可以具有不同的架构如采用异构计算架构。另外,图4所示的计算设备400,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备400可以包括比图4所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
处理器410可以有多种具体实现形式,例如处理器410可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processingunit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器410还可以是单核处理器或多核处理器。处理器410可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器410也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口420可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器430可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器430也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器430也可用于存储程序代码和数据,以便于处理器410调用存储器430中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备400可能包含相比于图4展示的更多或者更少的组件,或者有不同的组件配置方式。
总线440可以是快捷外围部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线440可以分为地址总线、数据总线、控制总线等。总线440除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行上述方法实施例中的方法步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (21)
1.一种流量控制方法,用于预防基于优先级流量控制PFC死锁,其特征在于,所述流量控制方法应用于第一网络设备,所述流量控制方法包括:
通过所述第一网络设备,接收来自第二网络设备的基于优先级流量控制PFC反压帧,所述PFC反压帧中的时间字段被替换为报文反馈信息,所述报文反馈信息由所述第二网络设备周期性生成并且包括所述第二网络设备的报文处理时延,所述第二网络设备是相对于所述第一网络设备的下游设备;
通过所述第一网络设备,解析所述PFC反压帧以获取所述报文反馈信息,然后比较所述报文处理时延和第一预设时延从而确定是否启动对所述第一网络设备的与所述PFC反压帧对应的上游端口的流量控制,所述第一预设时延大于所述第二网络设备空载时的报文处理时延;
通过所述第一网络设备,当所述报文处理时延大于所述第一预设时延时,确定启动对所述上游端口的流量控制,所述第一网络设备对所述上游端口的流量控制包括:比较所述报文处理时延和第二预设时延,当所述报文处理时延不大于所述第二预设时延时,根据所述报文处理时延动态地确定所述上游端口的流量发送速率,其中所述第二预设时延大于所述第二网络设备的最大排队处理时延。
2.根据权利要求1所述的流量控制方法,其特征在于,所述第一网络设备的所述上游端口通过基于优先级流量控制PFC技术与所述第二网络设备的下游端口通信。
3.根据权利要求2所述的流量控制方法,其特征在于,所述上游端口和所述下游端口之间通过基于所述PFC技术控制的多个优先级队列通信,所述PFC反压帧对应所述多个优先级队列中的一个或者多个优先级队列,所述第一网络设备根据所述报文处理时延动态地确定所述上游端口的流量发送速率包括:所述第一网络设备根据所述报文处理时延动态地确定所述上游端口的所述一个或者多个优先级队列的流量发送速率。
4.根据权利要求3所述的流量控制方法,其特征在于,所述第一网络设备对所述上游端口的流量控制还包括:当所述报文处理时延大于所述第二预设时延时,停止所述上游端口的所述一个或者多个优先级队列的流量发送。
5.根据权利要求1所述的流量控制方法,其特征在于,所述第一网络设备和所述第二网络设备属于同一网络中的同一循环依赖缓冲区。
6.根据权利要求1所述的流量控制方法,其特征在于,所述第一网络设备和所述第二网络设备均是同一叶脊网络中的同一业务流经过的链路上的交换机。
7.根据权利要求1所述的流量控制方法,其特征在于,所述PFC反压帧是基于数据中心桥接网络的基于优先级流量控制PFC机制。
8.根据权利要求7所述的流量控制方法,其特征在于,所述PFC反压帧中的时间字段是所述数据中心桥接网络的所述PFC机制所定义的标准PFC反压帧中的时间字段。
9.根据权利要求1所述的流量控制方法,其特征在于,所述报文反馈信息由所述第二网络设备周期性生成,包括:所述报文反馈信息由所述第二网络设备按照特定采样周期采样生成。
10.根据权利要求9所述的流量控制方法,其特征在于,所述特定采样周期是64微秒。
11.根据权利要求1所述的流量控制方法,其特征在于,所述第一网络设备对所述上游端口的流量控制是通过支持数据中心量化拥塞通知DCQCN网络的速率控制器。
12.根据权利要求1所述的流量控制方法,其特征在于,所述第二网络设备空载时的报文处理时延和所述第二网络设备的最大排队处理时延均预先测定。
13.根据权利要求12所述的流量控制方法,其特征在于,所述第一预设时延是基于所述第二网络设备的线速转发时延。
14.根据权利要求13所述的流量控制方法,其特征在于,所述第一预设时延还基于所述第一网络设备和所述第二网络设备所在的应用场景的时延要求。
15.根据权利要求1所述的流量控制方法,其特征在于,所述第一网络设备根据所述报文处理时延动态地确定所述上游端口的流量发送速率包括:将所述报文处理时延输入速率映射函数从而计算出所述上游端口的流量发送速率,其中所述速率映射函数指示所述上游端口的流量发送速率的大小与所述报文处理时延之间成反比关系。
16.根据权利要求15所述的流量控制方法,其特征在于,所述速率映射函数还指示所述上游端口的流量发送速率的变化速度与所述报文处理时延成正比。
17.根据权利要求15所述的流量控制方法,其特征在于,所述速率映射函数是分段式并且指示多个阈值档次,所述多个阈值档次与多个发送速率一一对应。
18.根据权利要求1至17中任一项所述的流量控制方法,其特征在于,所述PFC反压帧中的时间字段指示停流时间。
19.根据权利要求1至17中任一项所述的流量控制方法,其特征在于,所述流量控制方法还包括:通过所述第一网络设备,当所述报文处理时延不大于所述第二预设时延时,确定所述第二网络设备的实时排队长度并且当所述实时排队长度相对于所述第二网络设备的最大排队长度的比例超过阈值比例时,停止所述上游端口的流量发送。
20.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至19中任一项所述的方法。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至19中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310224167.5A CN115941599B (zh) | 2023-03-10 | 2023-03-10 | 一种用于预防pfc死锁的流量控制方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310224167.5A CN115941599B (zh) | 2023-03-10 | 2023-03-10 | 一种用于预防pfc死锁的流量控制方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115941599A CN115941599A (zh) | 2023-04-07 |
CN115941599B true CN115941599B (zh) | 2023-05-16 |
Family
ID=85835754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310224167.5A Active CN115941599B (zh) | 2023-03-10 | 2023-03-10 | 一种用于预防pfc死锁的流量控制方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115941599B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118101515B (zh) * | 2024-04-24 | 2024-07-19 | 珠海星云智联科技有限公司 | 异常拓扑处理方法、系统、设备以及集群 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10454839B1 (en) * | 2018-05-15 | 2019-10-22 | Cisco Technology, Inc. | Deadlock avoidance in leaf-spine networks |
WO2021043181A1 (zh) * | 2019-09-02 | 2021-03-11 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN112565087A (zh) * | 2020-11-23 | 2021-03-26 | 盛科网络(苏州)有限公司 | 一种pfc反压报文及其处理方法 |
CN113746744A (zh) * | 2020-05-30 | 2021-12-03 | 华为技术有限公司 | 网络拥塞的控制方法、装置、设备、系统及存储介质 |
CN113872869A (zh) * | 2020-06-30 | 2021-12-31 | 中兴通讯股份有限公司 | 基于优先级的流量控制防死锁方法及装置 |
CN114268587A (zh) * | 2021-12-23 | 2022-04-01 | 上海光华智创网络科技有限公司 | 基于图神经网络的数据中心网络传输协议优化方法 |
CN114448896A (zh) * | 2022-03-10 | 2022-05-06 | 中国工商银行股份有限公司 | 一种网络优化方法和装置 |
DE102022103981A1 (de) * | 2021-03-23 | 2022-09-29 | Intel Corporation | Flusssteuerungstechnologien |
-
2023
- 2023-03-10 CN CN202310224167.5A patent/CN115941599B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10454839B1 (en) * | 2018-05-15 | 2019-10-22 | Cisco Technology, Inc. | Deadlock avoidance in leaf-spine networks |
WO2021043181A1 (zh) * | 2019-09-02 | 2021-03-11 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN113746744A (zh) * | 2020-05-30 | 2021-12-03 | 华为技术有限公司 | 网络拥塞的控制方法、装置、设备、系统及存储介质 |
CN113872869A (zh) * | 2020-06-30 | 2021-12-31 | 中兴通讯股份有限公司 | 基于优先级的流量控制防死锁方法及装置 |
CN112565087A (zh) * | 2020-11-23 | 2021-03-26 | 盛科网络(苏州)有限公司 | 一种pfc反压报文及其处理方法 |
DE102022103981A1 (de) * | 2021-03-23 | 2022-09-29 | Intel Corporation | Flusssteuerungstechnologien |
CN114268587A (zh) * | 2021-12-23 | 2022-04-01 | 上海光华智创网络科技有限公司 | 基于图神经网络的数据中心网络传输协议优化方法 |
CN114448896A (zh) * | 2022-03-10 | 2022-05-06 | 中国工商银行股份有限公司 | 一种网络优化方法和装置 |
Non-Patent Citations (2)
Title |
---|
Tagger: Practical PFC Deadlock Prevention in Data Center Networks.《CoNEXT ’17, December 12–15, 2017, Incheon, Republic of Korea》.2017,第451-463页. * |
智能无损网络:数据中心网络性能优化策略;赵精华;《中国电信业》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115941599A (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9374300B2 (en) | Methods, systems, and computer readable media for regulation of multi-priority traffic in a telecommunications network | |
US9054973B2 (en) | Method and system for Ethernet congestion management | |
CN115941599B (zh) | 一种用于预防pfc死锁的流量控制方法、设备及介质 | |
EP3588865B1 (en) | Event ingestion management | |
US11785113B2 (en) | Client service transmission method and apparatus | |
JP2010541351A (ja) | データ・センタ・イーサネット・アーキテクチャの仮想レーン上での適応輻輳制御のための方法、システムおよびコンピュータ・プログラム製品 | |
WO2021148020A1 (zh) | 调整服务等级的方法、装置、设备及存储介质 | |
CN108476175B (zh) | 使用对偶变量的传送sdn流量工程方法与系统 | |
WO2017161967A1 (zh) | 包每秒流量监管方法、装置和计算机存储介质 | |
WO2018218957A1 (zh) | 一种流量控制方法、设备及系统 | |
WO2021203829A1 (zh) | 数据传输速率控制方法、系统和用户设备 | |
WO2016202092A1 (zh) | 基于多层队列流控反压的传送方法及装置 | |
CN115378955A (zh) | 一种数据处理方法以及相关设备 | |
CN113872869A (zh) | 基于优先级的流量控制防死锁方法及装置 | |
CN106656809B (zh) | 流表聚合方法、控制器、网元和系统 | |
WO2022247257A1 (zh) | 一种pfc风暴的检测和处理方法 | |
CN118250224A (zh) | 拥塞控制方法、装置、系统、设备及介质 | |
WO2012109932A1 (zh) | 带宽调整方法、发送芯片及系统 | |
WO2023116611A1 (zh) | 一种队列控制的方法及装置 | |
WO2008119241A1 (fr) | Procédé permettant de commander des canaux de messages d'un système comprenant plusieurs processeurs principaux et plusieurs processeurs secondaires | |
KR101014977B1 (ko) | 링크통합 기능에서 로드밸런싱 방법 | |
CN115002040B (zh) | 基于大数据的感知优先级流控的负载均衡方法及其系统 | |
US20050223056A1 (en) | Method and system for controlling dataflow to a central system from distributed systems | |
US10951526B2 (en) | Technologies for efficiently determining a root of congestion with a multi-stage network switch | |
WO2021101717A1 (en) | Forward progress mechanisms for a communications network having multiple nodes |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |