past TCP in the data , part 2
By Jake Edge
9, 2022
DeepL
在 LWN 上一篇之前关于 John在0x16 的演讲的文章末尾,他得出结论,由于所说的各种原因,TCP 不适合用在数据中心(data-)环境 。他还认为,没有办法改造 TCP 来使其能够满足数据中心的网络的需求 。他说,为了使软件能够充分使用如今的网络硬件的潜力,需要用一个几乎在所有方面都跟 TCP 不同的协议来取代它 。讲座的后半部分介绍了他和斯坦福大学的其他人一直在研究的 Homa 传输协议( ),作为数据中心中 TCP 的一个可能替代方案 。
Homa 项目的设立就是希望从头开始设计一个协议以满足现代的数据中心网络的需求 。事实证明,按照他的演讲前半部分中所涉及的五个方面来说,Homa 都与 TCP 不同;Homa 对这些方面的选择很好地结合在一起,从而 "产生了一个真正的高性能数据中心协议" 。但是,他强调,Homa 不适合广域网(WANs);它只适合数据中心 。
Homa
首先,Homa 是基于消息的(-based),而不是基于字节流的(byte--based),这意味着 "可调度单位( units)" 直接被记录在协议里了 。每个消息都是由线路上的多个数据包所组成的,这些数据包被组装成一个完整的消息,供应用程序来处理 。这解决了 TCP 的线程负载平衡问题,因为多个线程可以安全可靠地通过同一个中读取信息;如果未来网络接口卡(NIC,cards)获得支持,它也可以允许 NIC 直接向线程来分发消息 。
Homa 是无连接的();它的基本单元是一个远程过程调用(RPC),由两个消息组成:一个请求()和一个响应() 。"Homa 协议中明确了'往返(round trip)'的概念" 。RPC 之间互相独立,不保证顺序;可以发起多个 RPC,并以任意的顺序来完成 。Homa 不会没有保存记录长连接状态(long-livedstate);一旦某个 RPC 完成了,那么相关的所有的状态都会被删除 。然而,每个对等主机(peer host)都会存储少量(大约 200 字节)的状态,用于 IP 路由信息之类的内容 。也不需要额外开销进行连接设置( setup),一个可以用来发送任何数量的 RPC 到任意数量的对端 。Homa 会确保 RPC 要么完成、要么返回错误,因此不需要应用程序层面设置 timer 。
Homa 的拥塞控制是由接收者驱动的(-),这比 TCP 所使用的发送方驱动(-)的拥塞控制有着很大优势 。描述了 Homa 中流控的工作方式 。当某个信息需要被发送到一个接收方时,发送方可以立即发送一些 "不被调度的数据包( )",但要发送更多的 " " 则必须等待接收方的明确 "同意(grant)" 。这个做法的目的是希望有足够的来隐藏掉 host 之间的往返时间(round-trip time);如果没有拥塞的话,在发送方发送完所有的时候,就会收到若干 grant 了 。这就可以按照硬件线路的全速来发送 。
如果接收方检测到其 top-of-rack(TOR)交换机发生了拥堵,它就可以选择不发送 grant;这样就可以暂停或减缓 grant 的回应,直到拥塞情况消失 。它还可以根据剩余消息的大小,通过发送或不发送 grant 来确定消息的优先次序 。在协议中提供了消息 size,这是很有帮助的,因为 "消息 size 使我们能够预测未来" 。一旦收到一个消息包,接收方就知道有多少会到来,之后还有多少计划中的数据包会来,这样它就可以迅速决定一个策略,从而在它收到的各种不同的正在传递中的消息的时候尽量减少拥堵 。它的反应比 TCP 要快得多 。
Homa 还利用了现代交换机的优先级队列( );这些交换机的每个出口端口( port)通常有 8-16 个优先级队列 。它使用了队列(queue)来实现 "最短剩余处理时间"(SRPT,time)算法;当某个接收方有多个正在接收的消息时,它允许较短的消息来使用交换机上的高优先级队列 。此外,队列中还提供了一种方法来实现 "吞吐量和延迟之间更好的权衡" 。
- C# 中的那些锁,在内核态都是怎么保证同步的?
- 解决el-cascader级联下拉列表,级联数据不展示
- ETCD数据存储情况
- 某客户机房2台易事特和1台艾默生的UPS电源集中监控管理方案
- 淘宝在hbase中的应用和优化
- 在XGBoost中通过Early Stop避免过拟合
- Mysql添加假数据。
- Ubuntu20.04中安装ns3网络仿真器
- 大数据分析的四个环节
- 数据挖掘和机器学习20个面试问题