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,对于新到达的数据流,默认情况下会被转发到共享队列,在专用队列方面,当收到恢复信号时,进一步检查共享队列中是否仍然存在此数据流的数据包,只有当共享队列中此数据流的数据包全部被转发完毕时,才会将专用队列视为活跃队列,并按照轮循方式对活跃队列进行调度,其中,共享队列的恢复阈值设置大于专用队列的恢复阈值。