UDP报文超快查询

网络工程 以太网 潜伏 速度
2021-07-07 19:09:14

我正在实现一个系统,其中网络上的一个设备通过发送一个包含 8 个左右字节数据的小型 UDP 数据包以非常高的频率(每秒数百或数千个查询)进行查询。这是由另一个应用程序接收的,可能在另一个设备上,它执行一些非常简单的处理并发送包装在另一个 UDP 数据包中的几个字节大的结果。

我想知道什么样的往返时间对于典型的硬件是可行的,其中通信系统可能通过相距几米的有线以太网连接,考虑到传播和传输延迟等。

也欢迎其他想法和建议。

2个回答

一个示例 Juniper MX80 具有大约 8us 的入口->出口延迟,在低延迟直通交换机上它可以 <1us(可能是 0.7us)。(切记直通交换机不能做到100%的直通,只有在出口恰好空闲的时候才可以!)

1km 的光纤大约有 5us 的延迟(同样是单向)。

最小有效载荷 (46B) 的序列化延迟 @10G 约为 67ns (0.067us),通过提高链接速度,您可以减少序列化延迟。

IP 标头是 20B,UDP 标头是 8B,你的数据是 8B,所以你只有 36B 的数据,这意味着你的以太网有效载荷将包括你必须发送的10B 垃圾,即如果你有东西要添加到你的有效载荷中,请添加它,它的延迟成本为 0。

我希望您可以通过将设备延迟乘以设备数量并为每公里光纤添加 5us 然后将其乘以 2 来推断 RTT。


我忍不住要添加一些关于 HFT 的想法。

根据HFT 交易量在 2009 年至 2012 年之间减半。这表明轻松的胜利已经一去不复返了。我很想看到一些关于 HFT 延迟及其对利润影响的科学论文或真实数据。我怀疑影响交易利润的延迟与我们现在谈论的延迟不同。我的一位为最大的交易所之一建立网络的朋友似乎认为只是客户在不了解规模的情况下“降低 == 更好”。
我完全可以理解当很少有人这样做时 HFT 是多么有用,当你可以观察到市场 A 没有看到变化时,市场 B 确实看到并利用了它。有些人在谈论通过对每笔交易征税来阻止高频交易,这使每个人都变得昂贵,我认为没有必要,我认为机会之窗已经关闭。

我认为在传统的半调谐硬件上,您应该能够:

  1. 走出你的主机网络堆栈
  2. 建立你的下一个网络堆栈
  3. 使用您的“新”数据包退出该网络堆栈

在 10gig 时约 10 us。如果你真的锁定事情,这个数字可能会低得多。

您将看到的几乎所有延迟都不是来自网络硬件/电缆,而是来自您的主机系统。合理的直通交换机(Arista、Gnodal、New Cisco 等)将低于 1us。

首先确保使用 UDP 数据包的进程与 NIC 中断固定到同一核心。从那里,确保禁用 NIC 上的合并,然后确保您已启用 MSI-X 和 DCA。

如果您更认真……请查看 SolarFlare 的 OpenOnload。他们也有一套很棒的工具来测试/验证性能。