40G/10G 和 100G/25G 以太网中的序列化和序列化次数

网络工程 潜伏 连载 rtt 40克 100克
2021-07-14 15:42:03

我最近参与了有关承载 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 个通道发送,以循环方式分布?

它是完全不同的东西吗,例如...

感谢您的意见和指点。

3个回答

你多虑了。

使用的车道数量并不重要。无论您是通过 1、2 还是 5 通道传输 50 Gbit/s,串行化延迟都是 20 ps/bit。因此,无论使用何种通道,您都会每 100 ps 获得 5 位。将数据拆分为通道并重新组合发生在 PCS 子层中,即使在物理层之上也是不可见的。

无论您的情况如何,100G PHY 是在单个通道(每个 10 ps,总共 100 ps)上顺序序列化 10 位还是在 10 个通道上并行(每个 100 ps,总共 100 ps)都无关紧要 - 除非您重新构建那个 PHY。

自然,100 Gbit/s 的序列化延迟是 50 Gbit/s 等的一半,因此序列化速度越快(在物理层之上),帧传输的速度就越快。

如果您对接口中的内部序列化感兴趣,则需要查看用于速度类的 MII 变体。然而,这种序列化是即时发生的,或者与实际的 MDI 序列化并行发生——它确实需要很短的时间,但这取决于实际的硬件并且可能无法预测(大约 2-5 ps 会是我对 100 Gbit/s 的猜测)。我实际上不会担心这一点,因为涉及到更大的因素。10 ps 是您从额外的 2 毫米 (!) 光纤中获得的传输延迟的数量级。

为 40 Gbit/s 使用四个 10 Gbit/s 的通道与聚合四个 10 Gbit/s 链路不同。一条 40 Gbit/s 的链路——不管有多少通道——都可以传输单个 40 Gbit/s 的流,而 LAGged 10 Gbit/s 链路则不能。而且,40G的序列化延迟只有10G的1/4。

IEEE 802.3ba 标准中将划分为多个通道的部分称为物理编码子层Gary Nicholl 的这个演讲很好地概述了它。

简短的解释是数据被分成多个通道,每个通道以 64 位为单位(在线路上编码为 66 位用于时钟恢复)。因此,一旦数据包大小超过 N*64 位(= 4 个通道的 32 个字节),它就可以充分利用所有通道。编码会有一些延迟,但这可能是特定于实现的。

该图来自上面链接的演示文稿: 物理编码子层功能

至少在某些情况下,“序列化延迟”意味着“时钟输出”帧需要多长时间。因此,根据此定义,通道数、编码 (64b/66b) 和其他取决于以太网类型的内容(运营商使用 J 字节和指针调整,a la SONET)。