1.一种面向无损数据中心网络的快速精确拥塞反馈方法,其特征在于:所述拥塞反馈方法具体包括以下步骤:步骤1、在无损数据中心网络中部署基于优先级的流量控制与端到端的拥塞控制算法DCQCN,同时,对交换机中的每个端口维护一个端口状态表portTable,当交换机收到暂停帧时,记录端口收到暂停帧的时刻pauseTime、暂停持续时间 、暂停期间到达出口队列的数据量rxByte;
步骤2、定义交换机的每个端口有2类状态:确定状态和不确定状态,在交换机受到流量控制影响后,使用端口状态表portTable计算端口当前状态,对于不确定状态的端口,持续跟踪队列长度的变化,直到端口状态恢复为确定状态,对于确定的拥塞端口,对经过此端口的数据流进行拥塞通知,对于确定的非拥塞端口,对经过此端口的数据流不进行处理;
步骤3、对交换机维护一个流表flowTable,记录通过端口的每一条数据流的源IP地址sip、目的IP地址dip、堆积的数据量data的信息,对于确定的拥塞端口,维护的流表flowTable,为通过此端口的每条数据流显式分配一个窗口,并将此窗口值由拥塞通知报文携带,从拥塞点直接发送至发送端,发送端收到拥塞通知报文,更新窗口值并降速。
2.根据权利要求1所述的面向无损数据中心网络的快速精确拥塞反馈方法,其特征在于:所述步骤1具体包括如下步骤:步骤1.1、在交换机的每个端口维护一个端口状态表portTable,其中表中分别记录了端口收到暂停帧时,收到暂停帧的时刻pauseTime、暂停的持续时间 、暂停期间到达出口队列的数据量rxByte,收到暂停帧后,使用时刻pauseTime属性记录当前时间戳,为了实时统计暂停后端口收到的数据量,需重置rxByte,具体进行如下操作:
;
步骤1.2、在端口暂停期间,每当一个数据包到达出口队列,进行如下操作:
;
步骤1.3、当端口由收到一个恢复帧后,记录当前的时间戳,并进行如下操作:
;
步骤1.4、比较端口的接收速率与发送速率:交换机默认以链路带宽 作为其发送数据包的速率,根据暂停期间到达出口队列的数据量rxByte及暂停持续时间 ,由以下公式计算端口接收速率:;
其中, 与 分别表示端口的接收速率大于发送速率与端口的接收速
率小于等于发送速率,为简单起见,端口接收速率变形为 与 。
3.根据权利要求1所述的面向无损数据中心网络的快速精确拥塞反馈方法,其特征在于:所述步骤2中,交换机的端口的确定状态的端口分为拥塞态和非拥塞态,端口未受到流量控制的影响,明确判断当前端口处于拥塞或非拥塞,对于确定状态的端口,当队列存在堆积时,表明端口出现了拥塞,需要通过向发送端发送拥塞通知报文,通知发送端降速;
交换机的端口的不确定状态:端口受到了流量控制影响,此时出口队列虽然存在队列堆积,但无法判断队列堆积的原因是由于真正的端口拥塞还是流量控制暂停蔓延引起的暂时的队列堆积,此时端口属于不确定状态;
通过确定和不确定两个状态,对真正拥塞的端口和受到流量控制影响的端口进行区分,精确判断当前端口的拥塞情况。
4.根据权利要求1或3所述的面向无损数据中心网络的快速精确拥塞反馈方法,其特征在于:在步骤2中,在交换机受到流量控制影响后,使用端口状态表portTable计算端口当前状态,对于确定状态和不确定状态的端口分别进行不同处理,具体包括如下步骤:步骤2.1、所有交换机的端口初始时全部定义为确定状态,在出口队列经过暂停‑恢复切换后,通过队列长度及端口状态表portTable判断交换机的端口是否需要从确定状态切换为不确定状态;
步骤2.2、如果出口队列长度QLength和阈值Threshold之间满足QLength < Threshold,表示出口队列并没有因为暂时的暂停导致数据堆积,端口依旧是非拥塞状态,此时端口继续保持确定状态,不再执行后序步骤;
步骤2.3、如果出口队列长度QLength和阈值Threshold之间满足QLength≥Threshold,表示出口队列存在一定的堆积,通过读取端口状态表portTable,继续比较入端口数据包接收速率与发送速率,进一步判断该端口是真正的拥塞端口还是受到流量数据影响队列暂时堆积的端口;
步骤2.4、如果出口队列的数据接收速率portTable.rxByte,链路带宽 ,端口暂停持续时间 之间满足 ,表示端口的接收速率大于发送速率,明确判断当前端口发生拥塞,将端口状态切换为确定状态,并向发送端发送添加了窗口信息的拥塞通知报文;
步骤2.5、如果出口队列的数据接收速率portTable.rxByte,链路带宽 ,端口暂停持续时间 之间满足 ,表示端口的接收速率小于发送速率,虽然队列长度暂时超过阈值,但在端口恢复发送后数据包已经在持续排空,当前端口可能只是因为受到流量控制的影响而产生了暂时的队列堆积,因此无法确定当前端口的实际状态,将端口设置为Undetermined,端口将保持不确定状态,并进一步跟踪队列演化规律,直到端口状态变为确定状态;
步骤2.6、对于非确定状态的端口,若队列长度Qlength与Threshold之间满足Qlength≥Threshold,且队列长度Qlength不断减小,则端口继续维持不确定状态,对于不确定状态的端口,不对数据包做任何处理;
步骤2.7、对于非确定状态的端口,若队列长度Qlength与Threshold之间满足Qlength≥Threshold,且队列长度Qlength增加,则将端口状态更新为确定状态,并向发送端发送拥塞通知报文,此时表明端口数据在继续堆积,端口存在拥塞,需要及时结束不确定状态并尽快向发送端返回拥塞通知报文,通知源端进行降速;
步骤2.8、若队列长度Qlength与Threshold之间满足Qlength<Threshold,则端口状态更新为确定状态,表明端口受到暂停帧影响而导致堆积的数据包已经排空,端口恢复到非拥塞状态。
5.根据权利要求1所述的面向无损数据中心网络的快速精确拥塞反馈方法,其特征在于:所述步骤3具体包括如下步骤:步骤3.1、 对交换机维护一个流表flowTable,记录通过端口的每一条数据流的源IP地址sip、目的IP地址dip、堆积的数据量:当数据包到达出口队列时,对流表项进行更新,使用flowTable[sip,dip]确定唯一一条流,并更新流表项中流对应的数据包数量,公式为:,
在数据包离开出口队列时,更新流表项中流对应的数据包数量,公式为:
,
当 时,表明交换机中没有这条流的数据包,则删除对应
的流表项以节省交换机中的内存空间;
步骤3.2、对于真正拥塞的端口,使用流表flowTable计算出一个窗口值Win,并将此窗口值由拥塞通知报文携带,从拥塞点直接发送至发送端,实现快速显式的窗口分配,窗口值Win的具体计算公式为:,
其中, 是流表中所有流表项的数据量的总和, 是链路带宽,
sip、dip是对应数据包所属数据流的源地址、目的地址, 是往返时延,表示从发送端发送数据开始,到发送端收到来自接收端的确认总共经历的时延, 定义为当流没有遇到任何拥塞时数据包的 ;
步骤3.3、发送端在收到携带有窗口值的拥塞通知报文后,对报文进行解析,并针对链路中的拥塞结点做出如下操作:使用端到端的拥塞控制算法DCQCN调节发送速率,并将对应流的窗口大小限制为CNP报文中所携带的窗口大小,在DCQCN算法进入速率恢复阶段时,将窗口大小重新恢复为初始值,窗口大小初始值使用如下方式计算得出:。