alpha = (1 - g) * alpha + g * F cwnd = cwnd * (1 - alpha / 2) 其中F 即 (一轮周期中标记 ecn 的 ack) / (一轮周期中所有 ack )。当无拥塞 or 轻微拥塞,alpha 很小,cwnd 倾向于不变,最严重情况下 alpha 为 1,即全部标记,此时 dctcp 的 cwnd 减半,其行为拟合标准 tcp。 由此,适用...
1/*2+ * Update dctcp alpha based on the ecn bit in the received packet.3+ * This procedure is called only when dctcp_ is 1.4+*/5+voidFullTcpAgent::update_dctcp_alpha(Packet *pkt)6+{7+intecnbit = hdr_flags::access(pkt)->ecnecho();8+intackno = hdr_tcp::access(pkt)->ackno(...
在\alpha的移指计算中引入一个参数t,即连接建议到现在的时间,t的演化f(t)使\alpha满足: t越小,\alpha越接近标准DCTCP算法的结果 t越大,\alpha相比标准DCTCP算法的结果越偏大。 类似下面的函数是满足要求的: y=\frac{0.5}{2x+1}+0.5 下面是它的图像: 新的\alpha移指表达式为: \alpha=(1-g*f(t))\...
DCTCP_MAX_ALPHA 1024U struct dctcp { u32 old_delivered; u32 old_delivered_ce; u32 prior_rcv_nxt; u32 dctcp_alpha; u32 next_seq; u32 ce_state; u32 loss_cwnd; struct tcp_plb_state plb; }; static unsigned int dctcp_shift_g __read_mostly = 4; /* g = 1/2^4 */ sta...
阴影小三角形和梯形 abcd 的面积之比就是 alpha:\dfrac{\frac{1}{2}}{\frac{((w+1)+(w+1)(1-\alpha/2))*(w+1)*\alpha/2}{2}}=\alpha,现代网络的 cwnd 不会太小,可忽略 w 低阶项,解得\alpha=\sqrt{\dfrac{2}{w}},那么 (w + 1) - (w + 1)*(1 - alpha / 2) 就是锯齿的...
而DCTCP的滑动平均感觉更适合一般意义上的网络场景,一条流A本来跑的好好的、一直没有拥塞,突然有条流B新启动,那拥塞应该不算A的锅(A这时候的alpha由于之前的滑动平均、接近0,会导致A流的MD步幅不是很大),而应该是B去负责(新启动流的alpha是1,按照减半的速度快速下降)。但按照HPCC的思路,这时候A和B按照各自...