我最近参与了有关承载 OpenStack 平台的 Leaf/Spine(或 CLOS)网络的最低延迟要求的讨论。
系统架构师正在为他们的事务(块存储和未来的 RDMA 场景)争取尽可能低的 RTT,并且声称与 40G/10G 相比,100G/25G 提供了大大减少的序列化延迟。所有相关人员都知道,在端到端游戏中存在更多因素(其中任何一个都会损害或帮助 RTT),而不仅仅是 NIC 和交换机端口序列化延迟。尽管如此,关于序列化延迟的话题不断涌现,因为它们是很难在不跨越可能非常昂贵的技术差距的情况下进行优化的一件事。
稍微简化一点(忽略编码方案),序列化时间可以计算为位数/比特率,这让我们从 10G 的 ~1.2μs 开始(另见wiki.geant.org)。
For a 1518 byte frame with 12'144bits,
at 10G (assuming 10*10^9 bits/s), this will give us ~1.2μs
at 25G (assuming 25*10^9 bits/s), this would be reduced to ~0.48μs
at 40G (assuming 40*10^9 bits/s), one might expect to see ~0.3μs
at 100G (assuming 100*10^9 bits/s), one might expect to see ~0.12μs
现在是有趣的一点。在物理层,40G一般做4个10G的通道,100G做4个25G的通道。根据 QSFP+ 或 QSFP28 变体,这有时使用 4 对光纤束完成,有时在单个光纤对上由 lambda 分裂,其中 QSFP 模块自行执行一些 xWDM。我确实知道有 1x 40G 或 2x 50G 甚至 1x 100G 通道的规格,但让我们暂时将这些放在一边。
要估计多通道 40G 或 100G 环境中的序列化延迟,可以这么说,需要知道 100G 和 40G NIC 和交换机端口实际上如何“将位分配到(一组)线路”。这里正在做什么?
是不是有点像 Etherchannel/LAG?NIC/交换机端口通过一个给定的通道发送一个“流”的帧(阅读:在帧的哪个范围内使用任何散列算法的相同散列结果)?在这种情况下,我们预计序列化延迟分别为 10G 和 25G。但本质上,这将使 40G 链路只是 4x10G 的 LAG,从而将单流吞吐量降低到 1x10G。
它是类似于按位循环的东西吗?每个位都循环分布在 4 个(子)通道上?由于并行化,这实际上可能会导致较低的序列化延迟,但会引发一些有关按顺序交付的问题。
是不是像逐帧循环?整个以太网帧(或其他适当大小的位块)通过 4 个通道发送,以循环方式分布?
它是完全不同的东西吗,例如...
感谢您的意见和指点。