考虑下面的网络传输场景:
S1,S2,S3,S4 向 D 方向发送,R4 发生拥塞。R4 必须丢弃一些数据进行疏导反馈拥塞信号,否则谁也过不去。
优先丢掉离得最近的 S4 的数据,其次依次丢 S3,S2,S1。依据是 S1 已经走这么远了,丢掉 S1 流量的话,R1,R2,R3 的工作就浪费了,趁着 R4 刚上路,就丢 R4,此外,S4 距离 R4 最近,丢包反馈可更快到达,更快缓解拥塞。
以上是午饭后想到的。引申一下,可以根据 IP 头的 TTL 字段指示丢包决策,TTL 越大,丢包概率越大。
每经一跳转发,即经一次收敛,“收敛” 度量和其它流量共享带宽的程度。收敛次数越多,统计平均来看,特定一条流的占比越小,虽占比小拥有更大加速比,但获得的更大加速比被逐跳稀释。同时,每一跳拥塞是 “or” 关系,经由跳数越多,经历拥塞概率越大,显然这是一个漏桶。
综上,流量源越远,转发至此成本越高,丢弃后对全链路资源越浪费,但越远的流量属强弩之末,抢占力越差,对当前节点拥塞贡献越小。
策略显然是:丢包越早越好,拥塞通知越远越好,通知强度越近越低,因为缓解不了还能丢包。
- 必须丢包时,丢掉始发站至此距离最近的报文。
- 按照始发站至此由远而近强度递减通告 ECN。
尽量让已经被转发了很远的报文安全通过,否则前面的逐跳转发能耗就浪费了。对来自越远方的流量越宽容,给它们强烈 ECN 压力但尽量不丢弃,反之,对离得越近的流量越严格,ECN 压力不大,ECN 无效后则用丢包来提示拥塞,反正丢了对整体资源浪费也不大,对于这些距离拥塞源近的不幸流量,优先丢弃刚刚上路的报文,将拥塞尽量抑制在离源头近的地方意味着及时止损,不可惜,整体上能耗有效利用率反而较好。
在具体实践上,还可以让反向流量捎带 ECN。意思是用五元组倒置查询反向队列,命中后将 ECN 打入这些报文,可以加快 sender 感知,又不增加额外源抑制流量。
回到最初的午休图,虽合理,但凭什么丢 S4 的流量,这不公道。
看起来 S1~S4 都平等地向 D 的方向发数据,且拥塞看起来是 S1~S3 的汇聚流量导致,凭什么丢无辜的 S4。
首先,从技术上讲,不能无条件按 TTL 丢包,TTL 丢包应是级联的最后一个策略,在此之前应该先按流量加权公平排队以及其它可能的更公平排队规则。
其次,假设已经完成加权公平排队,如果 S4 流量 > S1,S2,or S3 流量,那理应丢 S4 流量,而上述衰减法则使 S4 流量 < S1,S2,or S3 流量概率极低,若发生,在 TTL 丢包前应发现,TTL 丢包的意义在于,如果 S1,S2,S3,S4 流量均匀相等,丢 S4 是有意义的。
并非对 S4 不公平,只能说 S4 很不幸,拥塞在 R4 已经发生,必须取舍,只能牺牲 S4,这样对全局能效最佳。拥塞控制作为一个整体,必须看全局意义。
上周末写过一些想法。去中心分布式网络本质上是有损的,丢包必存在,除端到端算法需高效且收敛,网络对丢包的决策也要在全局上保持高效。
文初场景,你可能觉得岂不是便宜了 S1?非也!如果 S1 有意激进发送,拥塞点大概率转移到 R1,按照相同的策略,被丢弃的就是 S1 的流量了。这策略足够公平且它本身就是个紧箍咒反馈环,所以别作恶。
值得一提的是,对于 capacity-seeking protocol,单跳 buffer 场景经过了普遍的分析和论证,但对于级联 buffer,N’ = N * T / (T + N) < N 逐级衰减将损害这些 protocol 的 probe 行为的公平性,比如 AIMD 的 AI 例程和 BBR 的 probeup 例程,而 TTL -based 丢包将缓解这种不公。
本文上述 TTL 并不单指 IP 的 TTL,vxlan 内可携带,自定义协议也可携带,大致只是借用 TTL 这个概念说个意思,此外,上述 ECN 也并不单指 TCP/IP 的 ECN,大致只是借这个概念说个主动拥塞通知的意思。
总结一下本文要旨,当损失只涉及单条流时,比如拥塞排队,那就排着吧,一旦损失涉及到他者,比如其它公共设施,就要全局考虑,让损失最小化,比方说不能造成其它公共设施由于做无用功而浪费资源。
还是现实中的例子。
医院挂号看病如果能照这个策略实施就好了,如果截止最后时间还剩下几个号,优先给远路过来看病的,因为来一趟太麻烦了,如果不这么做,难免会对公共设施造成不必要的消耗,如果病人返回家,来回这一趟就白跑了,这是对能源的损耗,如果病人选择住宿,就要占位置,也是对公共资源的消耗。距离医院近的,大不了第二天再来,也方便。
超市的情况看起来和 TTL 丢包策略相反,但其实类似,超市有小件物品快捷结账通道,越是路远的买的东西越多,越要排队,但排队是有平均排队时间的,和超市关门不一样。如果超市到了关门时间,往往会关闭小件快捷通道,分流大件物品排队,还是要照顾远道而来的,至于买小件的,不想排队,出门去便利店买也一样,虽然贵,但买的不多,也贵不到哪里。
拥塞控制的目标不是为了提高效率,而是为了最小代价止损,因为拥塞本身已经是损失了。在分布式网络中,网络比端到端连接更具有全局视角,做出的决策对止损更加有益。
浙江温州皮鞋湿,下雨进水不会胖。