CN117395207B - 一种面向无损网络的细粒度流量控制方法 - Google Patents
一种面向无损网络的细粒度流量控制方法 Download PDFInfo
- Publication number
- CN117395207B CN117395207B CN202311701117.8A CN202311701117A CN117395207B CN 117395207 B CN117395207 B CN 117395207B CN 202311701117 A CN202311701117 A CN 202311701117A CN 117395207 B CN117395207 B CN 117395207B
- Authority
- CN
- China
- Prior art keywords
- queue
- flow
- data
- pause
- switch
- 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
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000005540 biological transmission Effects 0.000 claims abstract description 51
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 48
- 238000011084 recovery Methods 0.000 claims abstract description 18
- 239000000725 suspension Substances 0.000 claims abstract description 11
- 230000008859 change Effects 0.000 claims abstract description 6
- 235000019580 granularity Nutrition 0.000 claims description 15
- 239000000872 buffer Substances 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000013461 design Methods 0.000 claims description 7
- 230000003247 decreasing effect Effects 0.000 claims description 4
- 241001522296 Erithacus rubecula Species 0.000 claims description 3
- 238000006073 displacement reaction Methods 0.000 claims description 3
- 230000007423 decrease Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 241001334134 Rugopharynx epsilon Species 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000002124 flame ionisation detection Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
- H04L47/266—Stopping or restarting the source, e.g. X-on or X-off
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3018—Input queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/50—Overload detection or protection within a single switching element
- H04L49/505—Corrective measures
- H04L49/506—Backpressure
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于无损数据中心网络流量控制领域,公开了一种面向无损网络的细粒度流量控制方法,包括:S1,为下游交换机入口队列设置多级阈值;S2,下游交换机实时检测入口队列长度的变化,选择不同数目的数据流进行暂停;S3,根据需要暂停的数据流数目及当前网络状态,识别导致网络拥塞的数据流,并向上游交换机发送暂停帧,维护流表;S4,根据暂停帧动态分配空闲队列,维护流表,暂停该数据流的发送;S5,当下游交换机队列长度小于某一阈值时,查阅流表,向上游交换机发送恢复帧;S6,上游交换机收到恢复帧,查阅流表,恢复数据传输,并执行动态队列调度算法对先前暂停的数据流进行调度。本发明提出的流量控制方案更有效、更实用。
Description
技术领域
本发明属于无损数据中心网络流量控制领域,具体的说是涉及一种面向无损网络的细粒度流量控制方法
背景技术
基于优先级的流量控制(PFC)是一种用于无损网络中数据中心的逐跳的流量控制方案,它使上游交换机暂停数据传输,从而避免下游交换机的缓冲区溢出,从而实现数据的无损传输。具体地,当下游交换机入口队列的队列长度超过预设阈值时,下游交换机发送PFC暂停帧。上游交换机收到PFC暂停帧后,停止上游端口的数据传输。传输将继续,直到上游端口收到PFC Resume帧。通过这种方式,PFC将网络拥塞递归地向上传播到上游交换机,并将从而将拥塞从网络中心内部转移到网络边缘。目前,PFC在一定程度上已被证明在一定程度上是有效的可以有效实现数据的无损传输。但是,PFC以粗粒度的方式暂停优先级(或端口)队列或单口,暂停流会将会损害网络吞吐量和流量延迟。此外,这种粗粒度的流量控制方式也带来了许多潜在的问题,例如队头(HoL)阻塞和PFC死锁等,这极大地损害了网络性能。
为了减轻PFC对网络性能带来的损害,近年来针对无损数据中心的增强型拥塞控制(CC)协议得到了广泛的研究。例如,DCQCN等解决方案利用显式拥塞通知(ECN)来标记网络内拥塞。接收方收到拥塞信息后,通知发送方被动调整各流的发送速率。理想情况下,针对无损数据中心的拥塞控制增强的CC协议减少了交换机缓冲区的占用,从而在一定程度上减少了PFC的触发,从而缓解了PFC的带来的问题。然而,较长的控制环路使得当前的CC拥塞控制协议难以对瞬时拥塞及时做出反应。此外,链路带宽的快速增长和短流突发流数量的增加加剧了队列堆积,这不可避免地会触发了PFC。因此,现有的CC拥塞控制协议无法避免触发PFC,从而无法解决PFC带来的问题。
发明内容
针对PFC粗粒度地暂停整个端口带来的如头阻、死锁等问题,本发明提出了一种面向无损网络的细粒度流量控制方法,本发明保留了PFC的暂停/恢复机制,并且当队列长度超过指定的多级阈值时,会对一小部分流进行反压,缓解了PFC粗粒度暂停的缺点。
为了达到上述目的,本发明是通过以下技术方案实现的:
本发明是一种面向无损网络的细粒度流量控制方法,该方法具体包括以下步骤:
S1,为下游交换机入口队列设置多级阈值,为交换机提供不同粒度的流量反压;
S2,下游交换机实时检测入口队列长度的变化,当队列长度超过某一级阈值时,选择不同数目的数据流进行暂停;
S3,下游交换机根据需要暂停的数据流数目及当前网络状态,精确识别真正导致网络拥塞的数据流,并向上游交换机发送带有flow_ID的暂停帧,同时维护关于暂停阈值与flow_ID关系的流表;
S4,上游交换机收到暂停帧,根据flow_ID为相应数据流动态分配空闲队列,同时维护关于空闲队列与flow_ID关系的流表,通过暂停空闲队列的方式暂停该数据流的发送;
S5,当下游交换机队列长度小于某一阈值时,查阅流表,确定与此阈值关联的flow_ID,并向上游交换机发送带有此flow_ID的恢复帧;
S6,上游交换机收到恢复帧,查阅流表,恢复与此flow_ID关联的暂停队列的数据传输,并执行动态队列调度算法对先前暂停的数据流进行调度。
进一步地,步骤S1中,所述下游交换机入口队列设置多级阈值的过程包括:
为了确定多级暂停阈值,本发明首先定义防止缓冲区溢出的最大队列长度Qmax。假设入口队列中有N个阈值,因此[0,Qmax]可以等分成N+1个区间,每个区间对应一个阈值Thi,并与一个队列长度Qi关联。为了使问题简化,用阈值Thi表示对应的队列长度Qi。设置第N个阈值对应的队列长度为Qmax,当队列长度超过Qmax时,交换机会暂停上游交换机所有流量的发送。接下来,需要确定第一个暂停阈值Th1。Th1设置过大会导致过长的队列长度,从而增加数据包排队延迟;此外,Th1设置过小会过早暂停数据流,从而影响链路吞吐量。为此,遵循了一种“从温和到激进”的设计原则,即随着队列长度的增加,流量反压的强度也应该逐渐增加。因此,将队列中相邻阈值的间隔[Thi,Thi+1]设定为一个递减的等比数列,其中第i个阈值Thi计算如下:
其中,r∈(0,1)为等比数列公比,用于控制相邻阈值的间隔。如果r太小,下一个暂停操作可能会在前一个暂停操作生效前触发,从而导致大量流量被暂停。这不仅需要使用更多物理队列缓存被暂停的数据流,还可能导致链路带宽利用率不足。反之,较大的r会增加触发流量暂停的队列长度,从而延长拥塞响应时间和排队时延。因此,选择了一个适中的公比,即来计算每个阈值,阈值Thi的计算方法如下:
进一步地,步骤S2中,所述确定不同数目的数据流的过程包括:
设置一旦当前队列长度Qcur超过其中的任何设定的阈值Thi,就会基于流量统计信息计算活动流favg的平均队列占用率。在理想情况下,favg应该等于Qcur除以当前活动流的数量Nactive,但由于普通商业交换机不支持高效的浮点运算,本发明使用位移操作来计算近似的平均队列占用率。因此,favg的计算公式如下:
其中,>>表示右位移操作,Nshift为需要位移的位数,可以表示为将超过favg的流量视为拥塞流量,并有选择性地暂停这些流量,以尽量减少暂停操作对其余流量的干扰。这样做可以确保只有极少量的流量被暂停,而不会明显减缓其他流量的传输速度。需要注意的是,从温和到激进的流量反压原则不仅体现在多个阈值的设置上,还反映在暂停流量的数量上。当队列长度超过不同的阈值时,本发明会暂停不同数量的流量。具体来说,如果队列长度超过Thi,本发明将暂停的流量数量设定为i。因此,活动流量数Nactive和阈值数Nth之间的关系如下:
本发明使用一个预先配置的match-action表,以Nactive作为索引来计算Nth。鉴于Nactive会随时间变化,本发明设置了一个定时器T来定期更新Nth,以避免实时匹配Nth时过多的资源消耗。本发明还记录了每个阈值和相应的暂停流量。如果流量在指定的阈值Thi处被暂停,本发明会将相应的流表项标记为1;如果流量恢复正常,本发明会将相应的流表项记为0。当队列长度降至低Thi-2MTU时,本发明设置与Thi相关的暂停流量将被重新启动。MTU为最大传输单元,此外,如果Qcur超过Qmax,本发明暂停上游交换机的共享队列,以防止缓冲区溢出。只有当Qcur降至Qmax-2MTU以下时,才会允许共享队列继续进行数据的传输。
进一步地,步骤S3中,所述精确识别真正导致网络拥塞的数据流的过程包括:
本发明使用五元组<源地址,目的地址,协议,源端口,目的端口>来定义流的标识符(FID)。每个流都具有唯一的FID,并且本发明使用FID的哈希值来高效地跟踪流的状态。具体来说,下游交换机维护一个流量表,用于记录每个流的流量统计信息。这个表使用入端口和FID的哈希值来索引表项。当流量数据包入队或出队时,则更新这条流的流量大小,以便实时跟踪交换机内部缓冲区的数据包情况。此外,本发明设置一个入口队列流数目计数器Ingress.f.counter,对于新的数据流,即目前在交换机上没有排队数据包的流量,本发明会增加Ingress.f.counter,而对于离开交换机的流量,本发明会减少Ingress.f.counter。通过这样的方式,本发明能够实时记录入端口上的活动流信息。有了上述流量统计信息,下游交换机的算法能够迅速确定合适的暂停阈值,并选择合适数目的流量进行暂停。
进一步地,步骤S4中,所述为相应数据流动态分配空队列的过程包括:
当上游交换机接收到与FID相关的暂停帧时,本发明会动态为该流量分配一个专用队列,同时维护一个空队列的位图。每当为流量分配专用队列或队列中的最后一个针对该流的数据包被转发时,都会更新位图。随后,本发明会通过暂停专用队列的方式暂停该流的数据传输,从而减少下游交换机的队列占用率,直到收到相应的恢复帧为止。只要交换机上仍然存在该流量的数据包,那么该流量的后续数据包都会被放入同一个专用队列中。这种方式确保了流量的有序处理,并减少了对下游交换机队列的竞争,从而提高了网络性能。
进一步地,步骤S5中,所述执行发送恢复帧的过程包括:
本发明设置恢复阈值和暂停阈值之间的间隔为两个最大传输单元(MTU),即每一级的恢复阈值为Thi-2MTU。当下游交换机的队列长度低于某个级别的恢复阈值时,本发明可以利用之前在流表中记录的暂停帧发送时所使用的flow_ID,这使得本发明能够轻松地检索到相应阈值的flow_ID,并将其封装在恢复帧中,随后发送给上游交换机。
进一步地,步骤S6中,所述执行动态队列调度算法的过程包括:
上游交换机收到暂停帧后,立即恢复数据传输可能导致乱序数据包的问题。在无损数据中心网络中,网卡通常会丢弃失序的数据包,并采用回溯重传的方式来确保数据的有序传输。因此,失序的数据包可能会严重影响网络性能。为了避免无序传输,本发明在上游交换机中记录了共享队列中每个流量的数据包数量。具体来说,本发明规定如果交换机中数据包入队,相应数据流的数据包计数加1;如果交换机数据包出队,相应数据流的数据包计数减1。对于新到达的数据流,默认情况下,它们会被转发到共享队列。在专用队列方面,当收到恢复信号时,不会立即恢复数据传输,而是会进一步检查共享队列中是否仍然存在此数据流的数据包。只有当共享队列中此数据流的数据包全部被转发完毕时,才会将专用队列视为活跃队列,并按照轮循方式对活跃队列进行调度。这种方式可以确保在恢复专用队列中被暂停的数据流前,共享队列中该数据流的数据包都已排空,从而避免乱序问题。当共享队列收到恢复帧时,它会立即恢复数据传输,因为暂停共享队列是实现无损传输的最后一道屏障。需要注意的是,本发明将共享队列的恢复阈值设置大于专用队列的恢复阈值。这样设计的目的在于,当恢复共享队列时,其他专用队列还没有恢复,从而避免了数据包的乱序问题。
本发明的有益效果是:
(1)本发明提出了一种相较于PFC更加细粒度的流量控制方案,能够在复杂的网络场景中,在大量动态到达的流中快速准确地识别出造成拥塞的流;
(2)本发明提供细粒度的阈值设置,从而实现不同级别的逐流反压,能够保证高吞吐量和低时延的网络性能;
(3)由于交换机上的队列数目有限,本发明提供了精心设计的队列分配和调度方案,能够更加合理地利用这些队列资源。
附图说明
图1是本发明控制方法的流程图。
图2是本发明的效果对比图。
图3是本发明运行实例图。
具体实施方式
以下将以图式揭露本发明的实施方式,为明确说明起见,许多实务上的细节将在以下叙述中一并说明。然而,应了解到,这些实务上的细节不应用以限制本发明。也就是说,在本发明的部分实施方式中,这些实务上的细节是非必要的。
本发明是一种面向无损网络的细粒度流量控制方法,主要包括如下步骤:
S1,为下游交换机入口队列设置多级阈值,为交换机提供不同粒度的流量反压。
为了确定多级暂停阈值,首先定义防止缓冲区溢出的最大队列长度Qmax。假设入口队列中有N个阈值,因此[0,Qmax]可以等分成N+1个区间,每个区间对应一个阈值Thi,并与一个队列长度Qi关联。为了使问题简化,本发明用阈值Thi表示对应的队列长度Qi。本发明设置第N个阈值对应的队列长度为Qmax,当队列长度超过Qmax时,交换机会暂停上游交换机所有流量的发送。接下来,本发明需要确定第一个暂停阈值Th1。Th1设置过大会导致过长的队列长度,从而增加数据包排队延迟;此外,Th1设置过小会过早暂停数据流,从而影响链路吞吐量。为此,本发明遵循了一种“从温和到激进”的设计原则,即随着队列长度的增加,流量反压的强度也应该逐渐增加。因此,本发明将队列中相邻阈值的间隔[Thi,Thi+1]设定为一个递减的等比数列,其中第i个阈值Thi计算如下:
其中,r∈(0,1)为等比数列公比,用于控制相邻阈值的间隔。如果r太小,下一个暂停操作可能会在前一个暂停操作生效前触发,从而导致大量流量被暂停。这不仅需要使用更多物理队列缓存被暂停的数据流,还可能导致链路带宽利用率不足。反之,较大的r会增加触发流量暂停的队列长度,从而延长拥塞响应时间和排队时延。因此,本发明选择了一个适中的公比,即来计算每个阈值,阈值Thi的计算方法如下:
S2,下游交换机实时检测入口队列长度的变化,当队列长度超过某一级阈值时,选择不同数目的数据流进行暂停。
所述确定不同数目的数据流的过程包括:
设置一旦当前队列长度Qcur超过其中的任何设定的阈值Thi,就会基于流量统计信息计算活动流favg的平均队列占用率。在理想情况下,favg应该等于Qcur除以当前活动流的数量Nactive,但由于普通商业交换机不支持高效的浮点运算,本发明使用位移操作来计算近似的平均队列占用率。因此,favg的计算公式如下:
其中,>>表示右位移操作,Nshift为需要位移的位数,可以表示为本发明将超过favg的流量视为拥塞流量,并有选择性地暂停这些流量,以尽量减少暂停操作对其余流量的干扰。这样做可以确保只有极少量的流量被暂停,而不会明显减缓其他流量的传输速度。需要注意的是,从温和到激进的流量反压原则不仅体现在多个阈值的设置上,还反映在暂停流量的数量上。当队列长度超过不同的阈值时,本发明会暂停不同数量的流量。具体来说,如果队列长度超过Thi,我们将暂停的流量数量设定为i。因此,活动流量数Nactive和阈值数Nth之间的关系如下:
本发明使用一个预先配置的match-action表,以Nactive作为索引来计算Nth。鉴于Nactive会随时间变化,本发明设置了一个定时器T来定期更新Nth,以避免实时匹配Nth时过多的资源消耗。本发明还记录了每个阈值和相应的暂停流量。如果流量在指定的阈值Thi处被暂停,本发明会将相应的流表项标记为1;如果流量恢复正常,本发明会将相应的流表项记为0。当队列长度降至低Thi-2MTU时,本发明设置与Thi相关的暂停流量将被重新启动,MTU为最大传输单元。此外,如果Qcur超过Qmax,本发明暂停上游交换机的共享队列,以防止缓冲区溢出。只有当Qcur降至Qmax-2MTU以下时,才会允许共享队列继续进行数据的传输。
S3,下游交换机根据需要暂停的数据流数目及当前网络状态,精确识别真正导致网络拥塞的数据流,并向上游交换机发送带有flow_ID的暂停帧,同时维护关于暂停阈值与flow_ID关系的流表。其中,精确识别真正导致网络拥塞的数据流的过程包括:
本发明使用五元组<源地址,目的地址,协议,源端口,目的端口>来定义流的标识符(FID)。每个流都具有唯一的FID,并且本发明使用FID的哈希值来高效地跟踪流的状态。具体来说,下游交换机维护一个流量表,用于记录每个流的流量统计信息。这个表使用入端口和FID的哈希值来索引表项。当流量数据包入队或出队时,则更新这条流的流量大小,以便实时跟踪交换机内部缓冲区的数据包情况。此外,本发明设置一个入口队列流数目计数器Ingress.f.counter,对于新的数据流,即目前在交换机上没有排队数据包的流量,本发明会增加Ingress.f.counter,而对于离开交换机的流量,本发明会减少Ingress.f.counter。通过这样的方式,本发明能够实时记录入端口上的活动流信息。有了上述流量统计信息,下游交换机的算法能够迅速确定合适的暂停阈值,并选择合适数目的流量进行暂停。
S4,上游交换机收到暂停帧,根据flow_ID为相应数据流动态分配空闲队列,同时维护关于空闲队列与flow_ID关系的流表,通过暂停空闲队列的方式暂停该数据流的发送。
为相应数据流动态分配空队列的过程包括:
当上游交换机接收到与FID相关的暂停帧时,本发明会动态为该流量分配一个专用队列,同时维护一个空队列的位图。每当为流量分配专用队列或队列中的最后一个针对该流的数据包被转发时,都会更新位图。随后,本发明会通过暂停专用队列的方式暂停该流的数据传输,从而减少下游交换机的队列占用率,直到收到相应的恢复帧为止。只要交换机上仍然存在该流量的数据包,那么该流量的后续数据包都会被放入同一个专用队列中。这种方式确保了流量的有序处理,并减少了对下游交换机队列的竞争,从而提高了网络性能。
S5,当下游交换机队列长度小于某一阈值时,查阅流表,确定与此阈值关联的flow_ID,并向上游交换机发送带有此flow_ID的恢复帧。过程包括:设置恢复阈值和暂停阈值之间的间隔为两个最大传输单元(MTU),即每一级的恢复阈值为Thi-2MTU。当下游交换机的队列长度低于某个级别的恢复阈值时,本发明利用之前在流表中记录的暂停帧发送时所使用的flow_ID,这使得本发明能够轻松地检索到相应阈值的flow_ID,并将其封装在恢复帧中,随后发送给上游交换机。
S6,上游交换机收到恢复帧,查阅流表,恢复与此flow_ID关联的暂停队列的数据传输,并执行动态队列调度算法对先前暂停的数据流进行调度。过程包括:
上游交换机收到暂停帧后,立即恢复数据传输可能导致乱序数据包的问题。在无损数据中心网络中,网卡通常会丢弃失序的数据包,并采用回溯重传的方式来确保数据的有序传输。因此,失序的数据包可能会严重影响网络性能。为了避免无序传输,本发明在上游交换机中记录了共享队列中每个流量的数据包数量。具体来说,本发明规定如果交换机中数据包入队,相应数据流的数据包计数加1;如果交换机数据包出队,相应数据流的数据包计数减1。对于新到达的数据流,默认情况下,它们会被转发到共享队列。在专用队列方面,当收到恢复信号时,不会立即恢复数据传输,而是会进一步检查共享队列中是否仍然存在此数据流的数据包。只有当共享队列中此数据流的数据包全部被转发完毕时,才会将专用队列视为活跃队列,并按照轮循方式对活跃队列进行调度。这种方式可以确保在恢复专用队列中被暂停的数据流前,共享队列中该数据流的数据包都已排空,从而避免乱序问题。当共享队列收到恢复帧时,它会立即恢复数据传输,因为暂停共享队列是实现无损传输的最后一道屏障。需要注意的是,我们将共享队列的恢复阈值设置大于专用队列的恢复阈值。这样设计的目的在于,当恢复共享队列时,其他专用队列还没有恢复,从而避免了数据包乱序的问题。
图1是控制方法的流程图。当下游交换机接收到一个数据包时,首先会检查入口队列当前长度Qcur是否大于最大长度Qmax,如果Qcur大于Qmax,那么交换机会发送暂停所有活跃队列的暂停帧。如果Qcur不大于Qmax,交换机会继续判断是否大于每一级阈值Thi(同时T个时间内更新多级阈值),如果Qcur大于某一级的阈值Thi,根据流量识别算法会选择i条流,并发送带有FID的暂停帧。上游交换机接收到暂停帧后,会检查是否带有FID。如果暂停帧不带有FID,那么上游交换机会暂停所有活跃队列。如果暂停帧带有FID,上游交换机会分配一个专用队列并将其暂停,然后将后续的数据包发送到该专用队列中。当上游交换机接收到恢复帧时,会再次检查是否带有FID。如果恢复帧不带有FID,那么上游交换机会恢复所有暂停队列。如果恢复帧带有FID,那么被暂停的流的专用队列将变为活跃队列。这个流程图描述了多级暂停控制和专用队列分配的操作过程,以实现对流量的有效控制和管理。
图2是一个效果对比图,显示了本发明(命名为:F-PFC)在80%CacheFollower流量下的整体性能。除了PFC外,本发明还和BFC进行了对比,BFC是一种相较PFC更加细粒度的流控制机制,以每个队列的粒度控制每个流的暂停/恢复。BFC-8和BFC-32的意思是分别使用了8和32个队列的情况。从图2(a)和图2(b)可以看出,F-PFC的FCT(流完成时间)与PFC相当,而BFC-8和BFC-32的性能较差,尤其在短流量情况下。这是因为DCQCN起到了作用,避免了PFC和F-PFC的频繁触发,而BFC-8和BFC-32没有采用任何拥塞控制协议,只能通过频繁发送暂停帧来控制流的传输速率。如图2(c)所示,BFC-8和BFC-32耗尽了可用队列,需要大量流量共享一个物理队列。而图2(d)显示了发送暂停帧的频率。BFC-8和BFC-32频繁暂停队列,增加了共享队列的流完成时间(FCT)。与BFC-8和BFC-32相比,F-PFC不仅减少了FCT,还将队列的平均数量减少了75%和90%。这表明F-PFC在性能上具有明显的优势。
图3是一个运行实例图。图3显示了一个本发明命名为:F-PFC的运行实例,F-PFC不需要在出端口维护多个队列。在Switch 3中,当Ingress 1和Ingress 2超过指定阈值时,F-PFC会给流F2和F3分配专用队列并且暂停相应队列,流F2和F3的后续数据包会发到该专用队列中去。和PFC相比,F-PFC不影响流F1的传输,也不需要像BFC那样给每个流都分配一个队列。
下游交换机的算法具体为:首先,本发明使用五元组<源地址,目的地址,协议,源端口,目的端口>来定义流的标识符(FID),以确保每个流都有唯一的标识。下游交换机维护一个流量表,用于记录每个流的流量信息,并通过入口端口号和FID的哈希值来索引表项。在入口队列函数中,通过哈希值找到流的表项后,本发明将该流的数据包数量f.Tbl[key].size加1,如果这条流是新的流,即f.Tbl[key].size==0,本发明设置一个入口队列流数目计数器Ingress.f.counter,令其加1;在出口队列函数中,同理,将该流的数据包数量f.Tbl[key].size减1,如果此时这条流的数据包数量减少为0,那么Ingress.f.counter减1。在多级阈值设置模块中,本发明将入口队列流数目计数器Ingress.f.counter赋值给活跃流数目Nactive,然后将Nactive和最大长度Qcur作为阈值计算函数Threshold_Calculation()的参数,以此得到每一级的阈值Thi;在流量识别模块中,如果入口队列当前长度Qcur超过某一级阈值Thi,通过Average_Buffer_Calculation(Qcur,Nactive),计算活跃流的平均队列占用率favg,选择i条流,这些流的数据包数量f.Tbl[key].size大于favg,并且将这些流的flow_ID信息记录在阈值表Tbl.[Thi].[key]中(便于后续发送恢复帧),如果入口队列当前长度Qcur小于某一级恢复阈值Thi-2MTU,取出阈值表中的flow_ID信息,封装到恢复帧中,并将Tbl.[Thi].[key]置为0;同理,如果Qcur大于最大长度Qmax或者小于Qmax-2MTU时,我们发送暂停帧/恢复帧,同时更新对应的阈值表Tbl.[Thmax]。
上游交换机的算法具体为:上游交换机算法负责快速响应来自下游交换机的暂停/恢复命令。在入口队列函数中,如果有新的数据包进入队列并排队等待传输时,将数据包携带的FID的哈希值作为key索引流表,令该流相关的数据包数量即f.Tbl[key].[q.Shared].size加1,对于新到达的流,默认情况下,本发明将其放入共享队列q.Shared;在出口队列函数中,同理,如果有数据包出队,对应流的数据包数量f.Tbl[key].[q.Shared].size减1。在队列重分配模块中,当收到一个带有FID的暂停帧Pause(FID)时,给这条流分配空的专用队列emptyQ,以此将这条拥塞流和其他流区分开来;在队列调度模块中,当收到一个带有FID的恢复帧Resume(FID)时,专用队列不会立即恢复数据传输,而是会先检查共享队列中是否还有被暂停流的数据包,只有当共享队列中的被暂停流的数据包全部传输完毕后(f.Tbl[key].[q.Shared].size==1),本发明将专用队列添加到活跃队列中(add q.FID toq.active),如果收到的恢复帧是Resume(q.Shared),则把q.Shared添加到活跃队列中,然后按照RR轮询算法对其列进行调度。
在上游交换机的算法中,本发明对共享队列中的每个流量都进行了数据包数量的记录和管理。当新的数据包进入队列并排队等待传输时,与该流相关的数据包数量将增加1。对于新到达的流量,默认情况下,本发明将其放入共享队列。如果有数据包出队,相应流的数据包数量将减少1。此外,值得注意的是,专用队列不会立即恢复数据传输,而是会先检查共享队列中是否还有暂停流量的数据包。只有当共享队列中的暂停流量数据包全部传输完毕后,才会将专用队列视为活跃队列,并按照轮询方式对其进行调度,以确保各个队列中的流量得到公平处理。这个算法的设计旨在维护数据包的有序传输,以避免乱序数据包的问题,并有效地管理共享队列和专用队列中的流量。
本发明针对传统基于优先级流量控制方案粗粒度暂停/恢复端口引起的网络性能下降问题,提出了细粒度的流量控制方案。本发明的设计理念是:根据不同流在交换机入口队列中的占的比例不同,细粒度的地流监控会统计每条流的占用率,当队列长度超过阈值时,我们向上游发送当前占用率最高的那些流来暂停/恢复真正导致链路拥塞的数据流。与粗粒度地暂停整个端口相比,我们使用细粒度流量控制方案可精准挑选最有可能造成拥塞的流,仅通过有限的专用队列暂停/恢复上述数据流,更精准地挑选那些最有可能造成拥塞的流,并且上游端口剩余的流未被暂停/恢复的数据流可以继续传输,从而保证了FCT和网络的吞吐量和流完成时间,本发明提出的方案可能更有效、更实用。
以上所述仅为本发明的实施方式而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理的内所作的任何修改、等同替换、改进等,均应包括在本发明的权利要求范围之内。
Claims (5)
1.一种面向无损网络的细粒度流量控制方法,其特征在于:所述细粒度流量控制方法具体包括以下步骤:
步骤1、为下游交换机入口队列设置多级暂停阈值,为交换机提供不同粒度的流量反压;
步骤2、下游交换机实时检测入口队列长度的变化,当入口队列长度超过某一级暂停阈值时,选择不同数目的数据流进行暂停;
步骤3、下游交换机根据需要暂停的数据流的数目及当前网络状态,识别真正导致网络拥塞的数据流,并向上游交换机发送带有flow_ID的暂停帧,同时维护关于暂停阈值与flow_ID关系的流表;
步骤4、上游交换机收到步骤3中的暂停帧,根据flow_ID为相应数据流动态分配空闲队列,同时维护关于空闲队列与flow_ID关系的流表,通过暂停空闲队列的方式暂停该数据流的发送;
步骤5、当下游交换机入口队列长度小于某一暂停阈值时,查阅所述关于暂停阈值与flow_ID关系的流表,确定与此暂停阈值关联的flow_ID,并向上游交换机发送带有此flow_ID的恢复帧;
步骤6、上游交换机收到恢复帧,查阅所述关于空闲队列与flow_ID关系的流表,恢复与此flow_ID关联的暂停队列的数据传输,并执行动态队列调度算法对先前暂停的数据流进行调度;
其中所述步骤1中为下游交换机入口队列设置多级暂停阈值的过程具体包括以下步骤:
步骤1.1、为了确定多级暂停阈值,定义防止缓冲区溢出的最大队列长度Qmax:假设下游交换机入口队列中有N个暂停阈值,因此将[0,Qmax]等分成N+1个区间,每个区间对应一个暂停阈值Thi,并与一个队列长度Qi关联,用暂停阈值Thi表示对应的队列长度Qi,设置第N个暂停阈值对应的最大队列长度为Qmax,当队列长度超过Qmax时,交换机会暂停上游交换机所有流量的发送;
步骤1.2、确定第一个暂停阈值Th1:遵循了“从温和到激进”的设计原则,即随着队列长度的增加,流量反压的强度也逐渐增加,将下游交换机入口队列中相邻的暂停阈值的间隔[Thi,Thi+1]设定为一个递减的等比数列,其中第i个暂停阈值Thi计算如下:
其中,r∈(0,1)为等比数列公比,用于控制相邻的暂停阈值的间隔;
步骤1.3、选择来计算每个暂停阈值,暂停阈值Thi的计算方法如下:
所述步骤2中,选择不同数目的数据流进行暂停具体包括如下过程:
步骤2.1、设置一旦当前队列长度Qcur超过其中的任何设定的暂停阈值Thi,就会基于流量统计信息计算活动流favg的平均队列占用率,在理想情况下,活动流favg等于队列长度Qcur除以当前活动流的数量Nactive,使用位移操作来计算平均队列占用率,活动流favg的计算公式如下:
其中,>>表示右位移操作,Nshift为需要位移的位数,表示为
步骤2.2、将超过活动流favg的流量视为拥塞流量,并有选择性地暂停所述拥塞流量,当队列长度Qcur超过不同的暂停阈值Thi时,暂停不同数量的所述拥塞流量:如果队列长度超过暂停阈值Thi,将暂停的流量数量设定为i,活动流的数量Nactive和暂停阈值数Nth之间的关系为:
步骤2.3、通过流表记录每个暂停阈值和相应的暂停流量,如果流量在指定的暂停阈值Thi处被暂停,将流表项标记为1;如果流量恢复正常,将流表项记为0,当队列长度Qcur降至低于Thi-2MTU时,设置与暂停阈值Thi相关的暂停流量将被重新启动,MTU为最大传输单元;
步骤2.4、如果队列长度Qcur超过Qmax,暂停上游交换机的共享队列,只有当队列长度Qcur降至Qmax-2MTU以下时,才允许共享队列继续进行数据的传输。
2.根据权利要求1所述的一种面向无损网络的细粒度流量控制方法,其特征在于:所述步骤3中,识别真正导致网络拥塞的数据流的具体过程包括如下步骤:
步骤3.1、使用五元组<源地址,目的地址,协议,源端口,目的端口>定义数据流的标识符FID:下游交换机维护一个流量表,用于记录每个流的流量统计信息,所述流量表使用入端口和标识符FID的哈希值来索引表项,当流量数据包入队或出队时,则更新所述流量表的流量大小,以便实时跟踪交换机内部缓冲区的数据包情况;
步骤3.2、设置一个入口队列流数目计数器Ingress.f.counter,对于新的数据流,即目前在交换机上没有排队数据包的流量,增加Ingress.f.counter,而对于离开交换机的流量,减少Ingress.f.counter。
3.根据权利要求2所述的一种面向无损网络的细粒度流量控制方法,其特征在于:所述步骤4中根据flow_ID为相应数据流动态分配空闲队列具体包括如下步骤:
步骤4.1、当上游交换机接收到与FID相关的暂停帧时,动态为数据流分配一个专用队列,同时维护一个空队列的位图,每当为数据流分配专用队列或专用队列中的最后一个针对该数据流的数据包被转发时,都会更新位图;
步骤4.2、通过暂停专用队列的方式暂停数据流的数据传输,减少下游交换机的队列占用率,直到收到相应的恢复帧为止。
4.根据权利要求1所述的一种面向无损网络的细粒度流量控制方法,其特征在于:所述步骤5中,向上游交换机发送带有此flow_ID的恢复帧具体为:设置恢复阈值和暂停阈值之间的间隔为两个最大传输单元(MTU),即每一级的恢复阈值为Thi-2MTU,当下游交换机的队列长度低于某个级别的恢复阈值时,利用之前在流表中记录的暂停帧发送时所使用的flow_ID,并将其封装在恢复帧中,随后发送给上游交换机。
5.根据权利要求3所述的一种面向无损网络的细粒度流量控制方法,其特征在于:步骤6中执行动态队列调度算法对先前暂停的数据流进行调度具体为:在上游交换机中记录了共享队列中每个流量的数据包数量:如果交换机中数据包入队,相应数据流的数据包计数加1;如果交换机数据包出队,相应数据流的数据包计数减1,对于新到达的数据流,默认情况下会被转发到共享队列,在专用队列方面,当收到恢复信号时,进一步检查共享队列中是否仍然存在此数据流的数据包,只有当共享队列中此数据流的数据包全部被转发完毕时,才会将专用队列视为活跃队列,并按照轮循方式对活跃队列进行调度,其中,共享队列的恢复阈值设置大于专用队列的恢复阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311701117.8A CN117395207B (zh) | 2023-12-12 | 2023-12-12 | 一种面向无损网络的细粒度流量控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311701117.8A CN117395207B (zh) | 2023-12-12 | 2023-12-12 | 一种面向无损网络的细粒度流量控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117395207A CN117395207A (zh) | 2024-01-12 |
CN117395207B true CN117395207B (zh) | 2024-02-23 |
Family
ID=89465233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311701117.8A Active CN117395207B (zh) | 2023-12-12 | 2023-12-12 | 一种面向无损网络的细粒度流量控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117395207B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7978607B1 (en) * | 2008-08-29 | 2011-07-12 | Brocade Communications Systems, Inc. | Source-based congestion detection and control |
CN107948103A (zh) * | 2017-11-29 | 2018-04-20 | 南京大学 | 一种基于预测的交换机pfc控制方法及控制系统 |
CN111756586A (zh) * | 2020-07-27 | 2020-10-09 | 中南大学 | 一种数据中心网络中基于优先级队列的公平带宽分配方法、交换机及可读存储介质 |
CN115134302A (zh) * | 2022-06-27 | 2022-09-30 | 长沙理工大学 | 一种无损网络中避免队头阻塞和拥塞扩散的流量隔离方法 |
CN116827867A (zh) * | 2023-06-21 | 2023-09-29 | 湖南师范大学 | 一种基于数据中心网络的低延时拥塞流识别方法 |
CN116896534A (zh) * | 2023-07-17 | 2023-10-17 | 西安交通大学 | 一种面向pfc交换机的动态净空缓存管理方法及装置 |
-
2023
- 2023-12-12 CN CN202311701117.8A patent/CN117395207B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7978607B1 (en) * | 2008-08-29 | 2011-07-12 | Brocade Communications Systems, Inc. | Source-based congestion detection and control |
CN107948103A (zh) * | 2017-11-29 | 2018-04-20 | 南京大学 | 一种基于预测的交换机pfc控制方法及控制系统 |
CN111756586A (zh) * | 2020-07-27 | 2020-10-09 | 中南大学 | 一种数据中心网络中基于优先级队列的公平带宽分配方法、交换机及可读存储介质 |
CN115134302A (zh) * | 2022-06-27 | 2022-09-30 | 长沙理工大学 | 一种无损网络中避免队头阻塞和拥塞扩散的流量隔离方法 |
CN116827867A (zh) * | 2023-06-21 | 2023-09-29 | 湖南师范大学 | 一种基于数据中心网络的低延时拥塞流识别方法 |
CN116896534A (zh) * | 2023-07-17 | 2023-10-17 | 西安交通大学 | 一种面向pfc交换机的动态净空缓存管理方法及装置 |
Non-Patent Citations (2)
Title |
---|
"FG-PFC: A Fine-Grained PFC Mechanism for Lossless RDMA";Shibao Li 等;《Journal of Physics: Conference Series》;20230206;全文 * |
"P4QCN: Congestion Control Using P4-Capable Device in Data Center Networks";Junjie Geng 等;《Electronics》;20191231;第8卷(第3期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117395207A (zh) | 2024-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230046350A1 (en) | Method and system for facilitating lossy dropping and ecn marking | |
US7616573B2 (en) | Fair WRED for TCP UDP traffic mix | |
US6657962B1 (en) | Method and system for managing congestion in a network | |
US9112786B2 (en) | Systems and methods for selectively performing explicit congestion notification | |
US6788697B1 (en) | Buffer management scheme employing dynamic thresholds | |
US7447152B2 (en) | Controlling traffic congestion | |
AU2002359740B2 (en) | Methods and apparatus for network congestion control | |
EP3024186B1 (en) | Methods and apparatus for defining a flow control signal | |
CN101834790B (zh) | 一种基于多核处理器的流量控制方法和多核处理器 | |
US9258232B2 (en) | Ingress traffic flow control in a data communications system | |
US8274974B1 (en) | Method and apparatus for providing quality of service across a switched backplane for multicast packets | |
Ahammed et al. | Anakyzing the performance of active queue management algorithms | |
CN109088829B (zh) | 一种数据调度方法、装置、存储介质及设备 | |
US20030021230A1 (en) | Switch fabric with bandwidth efficient flow control | |
EP1374498A4 (en) | IMPROVED SYSTEM FOR COUPLING PANEL CONTROL | |
US10050896B2 (en) | Management of an over-subscribed shared buffer | |
CN113315720B (zh) | 一种数据流控制方法、系统及设备 | |
CN113064738B (zh) | 基于概要数据的主动队列管理方法 | |
WO2007078705A1 (en) | Managing on-chip queues in switched fabric networks | |
US7408876B1 (en) | Method and apparatus for providing quality of service across a switched backplane between egress queue managers | |
WO2021143913A1 (zh) | 拥塞控制方法、装置及系统、存储介质 | |
CN117395207B (zh) | 一种面向无损网络的细粒度流量控制方法 | |
US7391785B2 (en) | Method for active queue management with asymmetric congestion control | |
US7599292B1 (en) | Method and apparatus for providing quality of service across a switched backplane between egress and ingress queue managers | |
Minkenberg et al. | Speculative flow control for high-radix datacenter interconnect routers |
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 |