面向无损数据中心网络的快速精确拥塞反馈方法转让专利

申请号 : CN202311696856.2

文献号 : CN117395206B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 何昕梁非凡肖甫韩磊樊卫北王俊昌

申请人 : 南京邮电大学

摘要 :

本发明属于无损数据中心网络优化技术领域,公开了一种面向无损数据中心网络的快速精确拥塞反馈方法,包括:在无损数据中心网络部署基于优先级的PFC与端到端的拥塞控制算法;为每个交换机端口维护一个端口状态表;定义每个端口有2类状态:确定和不确定,并在交换机受到PFC影响后使用portTable更新端口当前状态;发送端收到CNP报文,更新窗口值并降速。本发明主要包含精确的拥塞检测模块与快速显示窗口分配模块,有效解决了当前数据中心端到端的拥塞控制反馈周期过长,速率收敛缓慢,拥塞检测无法区分真正导致拥塞的流和仅受到PFC机制影响的受害者流等问题。

权利要求 :

1.一种面向无损数据中心网络的快速精确拥塞反馈方法,其特征在于:所述拥塞反馈方法具体包括以下步骤:步骤1、在无损数据中心网络中部署基于优先级的流量控制与端到端的拥塞控制算法DCQCN,同时,对交换机中的每个端口维护一个端口状态表portTable,当交换机收到暂停帧时,记录端口收到暂停帧的时刻pauseTime、暂停持续时间T、暂停期间到达出口队列的数据量rxByte;

步骤2、定义交换机的每个端口有2类状态:确定状态和不确定状态,在交换机受到流量控制影响后,使用端口状态表portTable计算端口当前状态,对于不确定状态的端口,持续跟踪队列长度的变化,直到端口状态恢复为确定状态,对于确定的拥塞端口,对经过此端口的数据流进行拥塞通知,对于确定的非拥塞端口,对经过此端口的数据流不进行处理;

步骤3、对交换机维护一个流表flowTable,记录通过端口的每一条数据流的源IP地址sip、目的IP地址dip、堆积的数据量data的信息,对于确定的拥塞端口,维护的流表flowTable,为通过此端口的每条数据流显式分配一个窗口,并将此窗口值由拥塞通知报文携带,从拥塞点直接发送至发送端,发送端收到拥塞通知报文,更新窗口值并降速,所述步骤3具体包括如下步骤:步骤3.1、对交换机维护一个流表flowTable,记录通过端口的每一条数据流的源IP地址sip、目的IP地址dip、堆积的数据量:当数据包到达出口队列时,对流表项进行更新,使用flowTable[sip,dip]确定唯一一条流,并更新流表项中流对应的数据包数量,公式为:flowTable[sip,dip].data+=packet.Size,

在数据包离开出口队列时,更新流表项中流对应的数据包数量,公式为:

flowTable[sip,dip].data‑=packet.Size,

当fiowTable[sip,dip].data=0时,表明交换机中没有这条流的数据包,则删除对应的流表项以节省交换机中的内存空间;

步骤3.2、对于真正拥塞的端口,使用流表flowTable计算出一个窗口值Win,并将此窗口值由拥塞通知报文携带,从拥塞点直接发送至发送端,实现快速显式的窗口分配,窗口值Win的具体计算公式为:Win=Rate×baseRTT,

其中,SUM(flowTable.data)是流表中所有流表项的数据量的总和,C是链路带宽,sip、dip是对应数据包所属数据流的源地址、目的地址,RTT是往返时延,表示从发送端发送数据开始,到发送端收到来自接收端的确认总共经历的时延,baseRTT定义为当流没有遇到任何拥塞时数据包的RTT;

步骤3.3、发送端在收到携带有窗口值的拥塞通知报文后,对报文进行解析,并针对链路中的拥塞结点做出如下操作:使用端到端的拥塞控制算法DCQCN调节发送速率,并将对应流的窗口大小限制为CNP报文中所携带的窗口大小,在DCQCN算法进入速率恢复阶段时,将窗口大小重新恢复为初始值,窗口大小初始值使用如下方式计算得出:Winit=C×baseRTT。

2.根据权利要求1所述的面向无损数据中心网络的快速精确拥塞反馈方法,其特征在于:所述步骤1具体包括如下步骤:步骤1.1、在交换机的每个端口维护一个端口状态表portTable,其中表中分别记录了端口收到暂停帧时,收到暂停帧的时刻pauseTime、暂停的持续时间T、暂停期间到达出口队列的数据量rxByte,收到暂停帧后,使用时刻pauseTime属性记录当前时间戳currentTimeStamp,为了实时统计暂停后端口收到的数据量,需重置rxByte,具体进行如下操作:portTable.pauseTime=currentTimeStamp

portTable.rxByte=0;

步骤1.2、在端口暂停期间,每当一个数据包到达出口队列,进行如下操作:

portTable.rxByte+=packet.Size;

步骤1.3、当端口由收到一个恢复帧后,记录当前的时间戳,并进行如下操作:

portTable.T+=currentTimeStamp‑portTable.pauseTime;

步骤1.4、比较端口的接收速率与发送速率:交换机默认以链路带宽C作为其发送数据包的速率,根据暂停期间到达出口队列的数据量rxByte及暂停持续时间T,由以下公式计算端口接收速率:其中,rrcv>C与rrcv≤C分别表示端口的接收速率大于发送速率与端口的接收速率小于等于发送速率,为简单起见,端口接收速率变形为rxByte>CT与rxByte≤CT。

3.根据权利要求1所述的面向无损数据中心网络的快速精确拥塞反馈方法,其特征在于:所述步骤2中,交换机的端口的确定状态的端口分为拥塞态和非拥塞态,端口未受到流量控制的影响,明确判断当前端口处于拥塞或非拥塞,对于确定状态的端口,当队列存在堆积时,表明端口出现了拥塞,需要通过向发送端发送拥塞通知报文,通知发送端降速;

交换机的端口的不确定状态:端口受到了流量控制影响,此时出口队列虽然存在队列堆积,但无法判断队列堆积的原因是由于真正的端口拥塞还是流量控制暂停蔓延引起的暂时的队列堆积,此时端口属于不确定状态;

通过确定和不确定两个状态,对真正拥塞的端口和受到流量控制影响的端口进行区分,精确判断当前端口的拥塞情况。

4.根据权利要求1或3所述的面向无损数据中心网络的快速精确拥塞反馈方法,其特征在于:在步骤2中,在交换机受到流量控制影响后,使用端口状态表portTable计算端口当前状态,对于确定状态和不确定状态的端口分别进行不同处理,具体包括如下步骤:步骤2.1、所有交换机的端口初始时全部定义为确定状态,在出口队列经过暂停‑恢复切换后,通过队列长度及端口状态表portTable判断交换机的端口是否需要从确定状态切换为不确定状态;

步骤2.2、如果出口队列长度QLength和阈值Threshold之间满足QLength

步骤2.3、如果出口队列长度QLength和阈值Threshold之间满足QLength≥Threshold,表示出口队列存在一定的堆积,通过读取端口状态表portTable,继续比较入端口数据包接收速率与发送速率,进一步判断该端口是真正的拥塞端口还是受到流量数据影响队列暂时堆积的端口;

步骤2.4、如果出口队列的数据接收速率portTable.rxByte,链路带宽C,端口暂停持续时间T之间满足rxByte>CT,表示端口的接收速率大于发送速率,明确判断当前端口发生拥塞,将端口状态切换为确定状态,并向发送端发送添加了窗口信息的拥塞通知报文;

步骤2.5、如果出口队列的数据接收速率portTable.rxByte,链路带宽C,端口暂停持续时间T之间满足rxByte<=CT,表示端口的接收速率小于发送速率,虽然队列长度暂时超过阈值,但在端口恢复发送后数据包已经在持续排空,当前端口可能只是因为受到流量控制的影响而产生了暂时的队列堆积,因此无法确定当前端口的实际状态,将端口设置为Undetermined,端口将保持不确定状态,并进一步跟踪队列演化规律,直到端口状态变为确定状态;

步骤2.6、对于非确定状态的端口,若队列长度Qlength与Threshold之间满足Qlength≥Threshold,且队列长度Qlength不断减小,则端口继续维持不确定状态,对于不确定状态的端口,不对数据包做任何处理;

步骤2.7、对于非确定状态的端口,若队列长度Qlength与Threshold之间满足Qlength≥Threshold,且队列长度Qlength增加,则将端口状态更新为确定状态,并向发送端发送拥塞通知报文,此时表明端口数据在继续堆积,端口存在拥塞,需要及时结束不确定状态并尽快向发送端返回拥塞通知报文,通知源端进行降速;

步骤2.8、若队列长度Qlength与Threshold之间满足Qlength<Threshold,则端口状态更新为确定状态,表明端口受到暂停帧影响而导致堆积的数据包已经排空,端口恢复到非拥塞状态。

说明书 :

面向无损数据中心网络的快速精确拥塞反馈方法

技术领域

[0001] 本发明属于无损数据中心网络优化技术领域,具体的说是涉及一种面向无损数据中心网络的快速精确拥塞反馈方法。

背景技术

[0002] 无损以太网(Lossless Ethernet)是一种专门用于数据中心网络的网络技术,旨在提供低延迟、高吞吐量和可靠性的传输服务。在数据中心的应用中,通常使用无损以太网和RDMA结合,以实现高性能的无丢包数据传输。RDMA可以实现直接访问远程计算机的内存,不需要CPU的介入,从而减少了数据传输的延迟和CPU占用率。在无损以太网中,交换机可以使用PFC(Priority Flow Control)机制暂停低优先级流量,以确保高优先级流量的传输。同时需要使用端到端的拥塞控制技术,以避免数据包丢失和网络拥塞。
[0003] 但传统的基于ECN的拥塞控制方案并未考虑到端到端的拥塞控制与逐跳的流量控制之间的相互作用,这种不恰当的拥塞检测方案无法识别导致拥塞的流量以及仅受逐跳流量控制影响的流量。同时,端到端的拥塞控制方案还存在控制链路过长,拥塞反馈不及时,发送端速率收敛较慢等缺陷。

发明内容

[0004] 为了解决上述技术问题,本发明提供了一种面向无损数据中心网络的快速精确拥塞反馈方法,该方法为现有的拥塞控制方案提供了快速、精确的拥塞通知反馈,在交换机中发生数据堆积时精确识别真正导致拥塞的流量,并在真正的拥塞发生时为发送端提供快速的拥塞反馈,通过与现有的拥塞控制算法相结合,帮助发送端快速收敛速率,消除瓶颈链路的拥塞。
[0005] 为了达到上述目的,本发明是通过以下技术方案实现的:
[0006] 本发明是一个面向无损数据中心网络的快速精确拥塞反馈方法,包括步骤如下:
[0007] 步骤1:在无损数据中心网络中部署基于优先级的流量控制(PFC)与端到端的拥塞控制算法DCQCN。同时,对交换机中的每个端口,维护一个端口状态表portTable,当交换机收到暂停帧时,记录端口收到暂停帧的时刻pauseTime、暂停的持续时间 、暂停期间到达出口队列的数据量rxByte。
[0008] 步骤1‑1:在交换机的每个端口维护一个端口状态表portTable,其中表中分别记录了端口收到暂停帧时,收到暂停帧的时刻pauseTime、暂停的持续时间 、暂停期间到达出口队列的数据量rxByte。收到暂停帧后,使用pauseTime属性记录当前时间戳,为了实时统计暂停后端口收到的数据量,需重置rxByte。具体进行如下操作:
[0009] ;
[0010] 步骤1‑2:在端口暂停期间,每当一个数据包到达出口队列,进行如下操作:
[0011] ;
[0012] 步骤1‑3:当端口由收到一个恢复帧后,记录当前的时间戳,并进行如下操作:
[0013] ;
[0014] 步骤1‑4:比较端口的接收速率与发送速率。交换机默认以链路带宽 作为其发送数据包的速率。根据暂停期间到达出口队列的数据量rxByte及暂停持续时间 ,由以下公式计算端口接收速率:
[0015] ,
[0016] 因此, 与 分别表示端口的接收速率大于发送速率与端口的接收速率小于等于发送速率。为简单起见,上述判定公式变形为 与

[0017] 步骤2:定义每个端口有2类状态:确定(Determined)状态和不确定(Undetermined)状态,其中,确定状态的端口又可分为拥塞态和非拥塞态。在交换机受到PFC影响后,使用portTable计算端口当前状态。对于不确定状态的端口,持续跟踪队列长度的变化,直到端口状态恢复为确定状态。对于确定的拥塞端口,对经过此端口的数据流进行拥塞通知。对于确定的非拥塞端口,对经过此端口的数据流不进行处理。
[0018] 确定状态:端口未受到PFC的影响,能够明确判断当前端口处于拥塞或非拥塞。对于确定状态的端口,当队列存在堆积时,表明端口出现了拥塞,此时需要通过向发送端发送CNP报文,通知发送端降速。
[0019] 不确定状态:端口受到了PFC影响,此时出口队列虽然存在队列堆积,但无法判断队列堆积的原因是由于真正的端口拥塞还是PFC暂停蔓延引起的暂时的队列堆积,此时端口属于不确定状态。端口只有在存在队列堆积时才有可能处于不确定状态。对于不确定状态的端口,我们暂时不做处理,以免造成不必要的吞吐量下降。
[0020] 步骤2‑1:所有端口初始时全部定义为确定状态。在出口队列经过暂停‑恢复切换后,通过队列长度及端口状态表portTable判断端口是否需要从确定状态切换为不确定状态。
[0021] 步骤2‑2:如果出口队列长度QLength和阈值Threshold之间满足QLength < Threshold,表示出口队列并没有因为暂时的暂停导致数据堆积,端口依旧是非拥塞状态,此时端口继续保持确定状态,不再执行后序步骤。
[0022] 步骤2‑3:如果出口队列长度QLength和阈值Threshold之间满足QLength ≥Threshold,表示出口队列存在一定的堆积,通过读取端口状态表portTable,继续比较入端口数据包接收速率与发送速率,进一步判断该端口是真正的拥塞端口,还是受到PFC影响队列暂时堆积的端口。
[0023] 步骤2‑4:如果出口队列的数据接收速率portTable.rxByte,链路带宽 ,端口暂停时间 之间满足 ,表示端口的接收速率大于发送速率,可以明确判断当前端口发生拥塞,将端口状态切换为确定状态,并向发送端发送添加了窗口信息的CNP报文。
[0024] 步骤2‑5:如果出口队列的数据接收速率portTable.rxByte,链路带宽 ,端口暂停时间 之间满足 ,表示端口的接收速率小于发送速率,虽然队列长度暂时超过阈值,但在端口恢复发送后数据包已经在持续排空。当前端口可能只是因为受到PFC影响而产生了暂时的队列堆积,因此无法确定当前端口的实际状态。我们将端口设置为Undetermined,端口将保持不确定状态,并进一步跟踪队列演化规律,直到端口状态变为确定状态。
[0025] 步骤2‑6:对于非确定状态的端口,若队列长度Qlength与Threshold之间满足Qlength≥Threshold,且队列长度Qlength不断减小,则端口继续维持不确定状态。对于不确定状态的端口,我们不对数据包做任何处理。
[0026] 步骤2‑7:对于非确定状态的端口,若队列长度Qlength与Threshold之间满足Qlength≥Threshold,且队列长度Qlength增加,则将端口状态更新为确定状态,并向发送端发送CNP报文。此时表明端口数据在继续堆积,端口存在拥塞,需要及时结束不确定状态并尽快向发送端返回CNP报文,通知源端进行降速。
[0027] 步骤2‑8:若队列长度Qlength与Threshold之间满足Qlength<Threshold,则端口状态更新为确定状态。此时表明端口受到暂停帧影响而导致堆积的数据包已经排空,端口恢复到非拥塞状态。
[0028] 步骤3:对交换机维护一个流表flowTable,记录通过端口的 每一条数据流的源IP地址(sip)、目的IP地址(dip)、堆积的数据量(data)等信息。对于确定的拥塞端口,我们维护的流表flowTable,为通过此端口的每条数据流显式分配一个窗口,并将此窗口值由CNP报文携带,从拥塞点直接发送至发送端。发送端收到CNP报文,更新窗口值并降速。
[0029] 步骤3‑1: 对交换机维护一个流表flowTable,记录通过端口的每一条数据流的源IP地址(sip)、目的IP地址(dip)、堆积的数据量。
[0030] 当数据包到达出口队列时,对流表项进行更新。使用flowTable[sip,dip]确定唯一一条流,并使用如下公式更新流表项中流对应的数据包数量:
[0031] ,
[0032] 在数据包离开出口队列时,使用如下公式更新流表项中流对应的数据包数量:
[0033] ,
[0034] 当 时,表明交换机中没有这条流的数据包,则删除对应的流表项以节省交换机中的内存空间。
[0035] 步骤3‑2:对于真正拥塞的端口,使用流表flowTable计算出一个窗口值Win,并通过CNP报文将窗口值携带回发送端,从而借助窗口控制链路中的inflight数据包数量,实现快速显式的窗口分配。窗口值Win的具体计算公式为:
[0036] ;
[0037] 其中, 是流表中所有流表项的数据量的总和, 是链路带宽,sip、dip是对应数据包所属数据流的源地址、目的地址。 是往返时延,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认)总共经历的时延。 定义为当流没有遇到任何拥塞时数据包的 。在当前常见的数据中心网络中,因为拓扑的规则性,大多数服务器对之间的 十分接近,因此在常见的 网络拓扑中, 可以看成是一个定值。
[0038] 步骤3‑3:发送端在收到携带有窗口值的CNP报文后,对报文进行解析,并针对链路中的拥塞结点做出如下操作。
[0039] 使用端到端的拥塞控制算法DCQCN调节发送速率,并将对应流的窗口大小限制为CNP报文中所携带的窗口大小。在DCQCN算法进入速率恢复阶段时,将窗口大小重新恢复为初始值。窗口大小初始值使用如下方式计算得出:
[0040] 。
[0041] 本发明的有益效果是:本发明是从无损数据中心网络低时延、高吞吐的需求角度出发用于无损数据中心拥塞控制的快速、精确的拥塞反馈方法框架;具体具有如下优势:
[0042] (1)拥塞发生时,在拥塞点直接向发送方返回CNP报文,不需要通知接收方,可以有效缩短链路反馈时延,使拥塞反馈更加快速,发送方能够更早获取链路拥塞信息并收敛速率。
[0043] (2)为通过拥塞端口的每条数据流显式分配一个窗口,并将此窗口值由CNP报文携带发送端。快速控制链路中的inflight数据包数量,尽早排空链路中堆积的数据包,消除拥塞。
[0044] (3)采用基于队列预测的精准的拥塞检测,能够快速判断当前端口状态,精确区分真正的拥塞端口和仅受逐跳流量控制影响的端口。
[0045] (4)能够与现有的端到端的拥塞控制方法如DCQCN兼容,并且几乎不需要修改发送端的任何内容,便于部署。

附图说明

[0046] 图1为本发明实施例中拥塞检测方法示意图。
[0047] 图2为本发明实施例中快速显式窗口分配示意图。

具体实施方式

[0048] 以下将以图式揭露本发明的实施方式,为明确说明起见,许多实务上的细节将在以下叙述中一并说明。然而,应了解到,这些实务上的细节不应用以限制本发明。也就是说,在本发明的部分实施方式中,这些实务上的细节是非必要的。
[0049] 本发明提出一种面向无损数据中心网络的快速精确拥塞反馈方法,包括以下三个部分:
[0050] 反映点RP:本发明为发送端,当收到一个CNP报文时,RP判断出当前流量发送速率会导致网络拥塞。使用DCQCN减小当前发送速率,并将窗口信息更新为CNP报文中携带的窗口大小。
[0051] 拥塞点CP:本发明为交换机,在转发数据包时,会按照一定的拥塞检测流程判断当前结点是否拥塞,并对拥塞流进行相应处理。
[0052] 通知点NP:本发明中为交换机,NP收到报文后,判断网络中是否存在拥塞,如果存在,则向RP发送CNP报文,通知RP进行流量降速。在本发明中,NP等同于CP。
[0053] 如图1所示,本发明的是一种面向无损数据中心网络的快速精确拥塞反馈方法,该方法包括以下两种操作:
[0054] 出口队列经过暂停‑恢复切换后,判断出口队列长度QLength和阈值Threshold之间是否满足QLength < Threshold,如果是,保持确定状态,否则判断接收速率是否大于发送速率,如果接收速率大于发送速率,保持确定状态,如果接收速率小于发送速率,保持不确定状态,重置检测队列长度的计时器并记录当前出口队列长度。
[0055] 端口发送一个数据包时,判断端口状态,如果端口是确定状态,进一步判断出口队列长度,如果出口队列长度大于阈值,发送CNP报文。如果端口是非拥塞状态,判断检测队列长度的计时器是否到期,如果没有到期,继续保持不确定状态,如果到期,判断出口队列长度是否小于阈值,如果小于,切换为确定非拥塞状态,如果大于,继续判断出口队列长度是否增加,如果增加,切换为确定拥塞状态并向发送端发送CNP报文,如果不增加,暂时继续保持不确定状态,重置检测队列长度的计时器并重新记录当前出口队列长度。
[0056] 如图2所示,本发明的快速显式窗口分配包括以下操作:
[0057] 交换机维护一个流表flowTable,记录通过端口的每一条数据流的源IP地址、目的IP地址、堆积的数据量。并在数据包到达/离开出口队列时更新流表。当通过当前端口的流被判断为拥塞时,交换机会向发送端返回CNP报文,并通过查表,为当前拥塞流显式分配一个窗口值,窗口值由CNP报文携带回发送端。
[0058] 本发明由拥塞检测模块和显式窗口分配模块组成。
[0059] (一)拥塞检测模块包括以下具体步骤:
[0060] 步骤1:在无损数据中心网络中部署基于优先级的流量控制(PFC)与端到端的拥塞控制算法DCQCN。同时,对交换机中的每个端口,维护一个端口状态表portTable,当交换机收到暂停帧时,记录端口收到暂停帧的时刻pauseTime、暂停的持续时间 、暂停期间到达出口队列的数据量rxByte。
[0061] 步骤1‑1:在交换机的每个端口维护一个端口状态表portTable,其中表中分别记录了端口收到暂停帧时,收到暂停帧的时刻pauseTime、暂停的持续时间 、暂停期间到达出口队列的数据量rxByte。收到暂停帧后,使用pauseTime属性记录当前时间戳,为了实时统计暂停后端口收到的数据量,需重置rxByte。具体进行如下操作:
[0062] ;
[0063] 步骤1‑2:在端口暂停期间,每当一个数据包到达出口队列,进行如下操作:
[0064] ;
[0065] 步骤1‑3:当端口由收到一个恢复帧后,记录当前的时间戳,并进行如下操作:
[0066] ;
[0067] 步骤1‑4:比较端口的接收速率与发送速率。交换机默认以链路带宽 作为其发送数据包的速率。根据暂停期间到达出口队列的数据量rxByte及暂停持续时间 ,由以下公式计算端口接收速率:
[0068] ;
[0069] 因此, 与 分别表示端口的接收速率大于发送速率与端口的接收速率小于等于发送速率。为简单起见,上述判定公式变形为 与 。
[0070] 步骤2:定义每个端口有2类状态:确定(Determined)状态和不确定(Undetermined)状态,其中,确定状态的端口又可分为拥塞态和非拥塞态。在交换机受到PFC影响后,使用portTable计算端口当前状态。对于不确定状态的端口,持续跟踪队列长度的变化,直到端口状态恢复为确定状态。对于确定的拥塞端口,对经过此端口的数据流进行拥塞通知。对于确定的非拥塞端口,对经过此端口的数据流不进行处理。
[0071] 确定状态:端口未受到PFC的影响,能够明确判断当前端口处于拥塞或非拥塞。对于确定状态的端口,当队列存在堆积时,表明端口出现了拥塞,此时需要通过向发送端发送CNP报文,通知发送端降速。
[0072] 不确定状态:端口受到了PFC影响,此时出口队列虽然存在队列堆积,但无法判断队列堆积的原因是由于真正的端口拥塞还是PFC暂停蔓延引起的暂时的队列堆积,此时端口属于不确定状态。端口只有在存在队列堆积时才有可能处于不确定状态。对于不确定状态的端口,我们暂时不做处理,以免造成不必要的吞吐量下降。
[0073] 步骤2‑1:所有端口初始时全部定义为确定状态。在出口队列经过暂停‑恢复切换后,通过队列长度及端口状态表portTable判断端口是否需要从确定状态切换为不确定状态。
[0074] 步骤2‑2:如果出口队列长度QLength和阈值Threshold之间满足QLength < Threshold,表示出口队列并没有因为暂时的暂停导致数据堆积,端口依旧是非拥塞状态,此时端口继续保持确定状态,不再执行后序步骤。
[0075] 步骤2‑3:如果出口队列长度QLength和阈值Threshold之间满足QLength ≥Threshold,表示出口队列存在一定的堆积,通过读取端口状态表portTable,继续比较入端口数据包接收速率与发送速率,进一步判断该端口是真正的拥塞端口,还是受到PFC影响队列暂时堆积的端口。
[0076] 步骤2‑4:如果出口队列的数据接收速率portTable.rxByte,链路带宽 ,端口暂停时间 之间满足 ,表示端口的接收速率大于发送速率,可以明确判断当前端口发生拥塞,将端口状态切换为确定状态,并向发送端发送添加了窗口信息的CNP报文。
[0077] 步骤2‑5:如果出口队列的数据接收速率portTable.rxByte,链路带宽 ,端口暂停时间 之间满足 ,表示端口的接收速率小于发送速率,虽然队列长度暂时超过阈值,但在端口恢复发送后数据包已经在持续排空。当前端口可能只是因为受到PFC影响而产生了暂时的队列堆积,因此无法确定当前端口的实际状态。我们将端口设置为Undetermined,端口将保持不确定状态,并进一步跟踪队列演化规律,直到端口状态变为确定状态。
[0078] 步骤2‑6:对于非确定状态的端口,若队列长度Qlength与Threshold之间满足Qlength≥Threshold,且队列长度Qlength不断减小,则端口继续维持不确定状态。对于不确定状态的端口,我们不对数据包做任何处理。
[0079] 步骤2‑7:对于非确定状态的端口,若队列长度Qlength与Threshold之间满足Qlength≥Threshold,且队列长度Qlength增加,则将端口状态更新为确定状态,并向发送端发送CNP报文。此时表明端口数据在继续堆积,端口存在拥塞,需要及时结束不确定状态并尽快向发送端返回CNP报文,通知源端进行降速。
[0080] 步骤2‑8:若队列长度Qlength与Threshold之间满足Qlength<Threshold,则端口状态更新为确定状态。此时表明端口受到暂停帧影响而导致堆积的数据包已经排空,端口恢复到非拥塞状态。
[0081] (二)显式窗口分配模块包括以下具体步骤:
[0082] 步骤3:对交换机维护一个流表flowTable,记录通过端口的 每一条数据流的源IP地址(sip)、目的IP地址(dip)、堆积的数据量(data)等信息。对于确定的拥塞端口,我们维护的流表flowTable,为通过此端口的每条数据流显式分配一个窗口,并将此窗口值由CNP报文携带,从拥塞点直接发送至发送端。发送端收到CNP报文,更新窗口值并降速。
[0083] 步骤3‑1: 对交换机维护一个流表flowTable,记录通过端口的每一条数据流的源IP地址(sip)、目的IP地址(dip)、堆积的数据量。
[0084] 当数据包到达出口队列时,对流表项进行更新。使用flowTable[sip,dip]确定唯一一条流,并使用如下公式更新流表项中流对应的数据包数量:
[0085] ;
[0086] 在数据包离开出口队列时,使用如下公式更新流表项中流对应的数据包数量:
[0087] ;
[0088] 当 时,表明交换机中没有这条流的数据包,则删除对应的流表项以节省交换机中的内存空间。
[0089] 步骤3‑2:对于真正拥塞的端口,使用流表flowTable计算出一个窗口值Win,并通过CNP报文将窗口值携带回发送端,从而借助窗口控制链路中的inflight数据包数量,实现快速显式的窗口分配。窗口值Win的具体计算公式为:
[0090] ;
[0091] 其中, 是流表中所有流表项的数据量的总和, 是链路带宽,sip、dip是对应数据包所属数据流的源地址、目的地址。 是往返时延,表示从发送端发送数据开始,到发送端收到来自接收端的确认总共经历的时延,接收端收到数据后便立即发送确认。 定义为当流没有遇到任何拥塞时数据包的 。在当前常见的数据中心网络中,因为拓扑的规则性,大多数服务器对之间的 十分接近,因此在常见的 网络拓扑中, 可以看成是一个定值。
[0092] 步骤3‑3:发送端在收到携带有窗口值的CNP报文后,对报文进行解析,并针对链路中的拥塞结点做出如下操作。
[0093] 使用端到端的拥塞控制算法DCQCN调节发送速率,并将对应流的窗口大小限制为CNP报文中所携带的窗口大小。在DCQCN算法进入速率恢复阶段时,将窗口大小重新恢复为初始值。窗口大小初始值使用如下方式计算得出:
[0094] 。
[0095] 本发明是从无损数据中心网络低时延、高吞吐的需求角度出发用于无损数据中心拥塞控制的快速、精确的拥塞反馈方法框架。端到端工作的拥塞控制不利于迅速地根据链路拥塞情况调整发送速率,无法及时对瓶颈链路出现的拥塞做出反应,DCQCN的速率调节算法也无法在收到拥塞反馈后做到速率的快速收敛。同时,基于ECN的拥塞检测方案会混淆真正的拥塞流和仅仅收到端到端的流量控制影响的数据流,导致受害者流的出现,造成吞吐量的损失。
[0096] 以上所述仅为本发明的实施方式而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理的内所作的任何修改、等同替换、改进等,均应包括在本发明的权利要求范围之内。