1.一种用于数据中心的拥塞控制方法,其特征在于根据数据流的优先级、排队时延以及拥塞等级对拥塞窗口的大小进行更新;
根据数据流的优先级、排队时延以及拥塞等级对拥塞窗口的大小进行更新的具体过程为:
①设定参考值:拥塞窗口大小,数据流权重阈值上限、数据流权重阈值下限、数据流大小阈值上限、数据流大小阈值下限、判定阈值、数据包的最小往返时间、发送端接收到ACK的总数量、发送端接收到具有拥塞标记ACK的总数量、加权因子、拥塞等级和拥塞阈值,将拥塞窗口的大小记为cwnd,将数据流权重阈值上限记为Smax,令Smax=2.5,将数据流权重阈值下限记为Smin,令Smin=0.125,将数据流大小阈值上限记为ce,令ce=1MB,将数据流大小阈值下限记为mc,mc=200KB,将判定阈值记为pc,令pc=0.125,将数据包的最小往返时间记为RTTmin,将发送端接收到ACK的总数量记为ACKo,发送端接收到具有拥塞标记ACK的总数量记为ACKs,将加权因子记为g,令g=0.0625,将拥塞等级记为α,将拥塞变量记为α1;
②当一个传输轮次的数据包到达发送端发送时,按照以下步骤进行控制:
②‑1、对该传输轮次中各个数据包所属的数据流的优先级分别进行计算,具体过程为:
A.每个数据包的优先级等于其所属的数据流的优先级,故将数据包所属的数据流的优先级权重记为sc,该数据流的优先级记为p,获取该数据流的大小,将该数据流的大小记为fs;
B.确定该数据流的优先级权重sc:如果fs≤mc,令sc=Smax,如果fs≥ce,令sc=Smin,如果mc<fs<ce,则令 符号*为乘运算符号;
C.确定该数据流的优先级p:设定优先级阈值,将优先级阈值记为p1,采用公式计算得到p1,如果p1
②‑2、对拥塞等级α进行更新,具体过程为:
D.对RTTmin、ACKo、ACKs和α进行初始化,令RTTmin=0,ACKo=0,ACKs=0,α=0;
E.在网络中,每个数据流会被分为多个数据包后依次传送,将数据流中一个数据包从在发送端发送开始至发送端接收到接收端发送的该数据包的ACK所经历的时间记为RTT,每当发送端接收到接收端发出的一个ACK时,获取该ACK所对应的数据包的RTT;
F.发送端每接收到一个ACK,则按照以下规则对RTTmin、ACKo、ACKs和α1依次进行更新:首先对RTTmin的当前值进行判定,如果RTTmin的当前值等于0或者RTTmin的当前值大于当前接收的ACK所对应的数据包的RTT,将当前接收的ACK所对应的数据包的RTT的值赋给RTTmin,对RTTmin的当前值进行更新,否则RTTmin的当前值保持不变;然后将ACKo的当前值加1得到的值赋值ACKo,对ACKo的当前值进行更新;接着判定当前接收的ACK所对应的数据包的RTT是否大于RTTmin+Oth,其中Oth=0.17d,d等于当前接收的ACK所对应的数据包的RTT,如果当前接收的ACK所对应的数据包的RTT大于RTTmin+Oth,则对该ACK进行标记,将该ACK标记为一个具有拥塞标记的ACK,并将ACKs的当前值加1得到的值赋值给ACKs,对ACKs的当前值进行更新,如果当前接收的ACK所对应的数据包的RTT小于或者等于RTTmin+Oth时,则ACKs的当前值保持不变;最后设定中间变量参数α1,采用公式α1=(1‑g)*α+g*(ACKs/ACKo)计算得到α1,将计算得到的α1的值赋值给α,对α的当前值进行更新;
②‑3、发送端每接收一个ACK,就根据当前计算得到的α和当前接收的ACK所对应的数据包所属数据流的优先级p的值对拥塞窗口的大小cwnd进行更新,并根据更新后的拥塞窗口的大小cwnd调整拥塞窗口:如果当前接收的ACK为具有拥塞标记的ACK,则采用的值去更新拥塞窗口的大小cwnd,如果当前接收的ACK不为具有拥塞标记的ACK,拥塞窗口的大小cwnd保持其当前值不变;
②‑4、当发送端接收到当前传输轮次的所有数据包的ACK后,采用cwnd+cinc的值去更新拥塞窗口的大小cwnd,其中 其中Qd表示排队时延,排队时延Qd为当前传输轮次中最后一个数据包的RTT减去RTTmin的差值,该传输轮次的拥塞控制结束;
③当下一个传输轮次的数据包到达发送端发送时,返回步骤②对下一个传输轮次进行拥塞控制,周而复始。