文章《[译] 流量控制(TC)五十年:从基于缓冲队列(Queue)到基于时间(EDT)的演进(Google, 2018)》翻译介绍了 Netdev 2018: Evolving from AFAP: Teaching NICs about timeOCT 2018: From Queues to Earliest Departure Time 两份工作的大体内容,总结成思维导图如下:

tc

ch1 网络起源

  • 网络协议和网卡之间的契约(contract between protocols and NICs)

  • TCP/IP 协议强调三点:简单、抽象、可实现;不对周边做限制

  • IP:尽力而为传输(best effort delivery) 、TCP: 最终可靠传输(eventual delivery)

ch2 网络传输

  • TCP作为可靠传输,有发送额限制,但没有发送速度限制,为了实现ASAP,有了流量整形/整流(traffic shaping)

  • 流量整形通常通过 device output queue(设备发送队列)实现

    • 最快发送速率就是队列的 drain rate;

    • 传输中的最大数据量(inflight data) 由 RX window 或 queue length 决定。

    • classifier->queue->scheduler (分类、queue发送速率限制不同、统一调度、网卡无差别发送)

  • 摩尔定律的失效意味着无法造出速度永远比网卡快一个数量级的交换机了;多核多机器架构带来了交换网络的巨大挑战

ch3 Google的创新

  • 基于缓冲队列(queue)的机制已经不符合当前网络现状了, 不能再简单基于网卡的最大工作速率来发包。依赖因素不在是 queue

  • 感知网络瓶颈,以瓶颈处的最大发送速率发送数据包,基于time

ch4 EDT 整流器

  • 基于 queue 的整流器机器的 CPU 和内存开销很大,还存在同步(锁/竞争)开销

  • EDT(earliest departure time)模型

    • 给每个包打上 EDT 时间戳,控制何时发包;用一个时间轮调度器代替queue

    • 时间论队列添加删除都是O(1)复杂度;纯计算模块,不用维护队列状态