使用UDP数据包的超快速查询


10

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

我想知道哪种往返时间对于典型的硬件是可行的,其中通信系统可能通过相隔数米的有线以太网连接,并考虑了传播和传输延迟等。

也欢迎其他想法和建议。


2
您可能会看到数十或数百微秒的延迟...绝对低于毫秒的延迟...根据您的描述,听起来您正在考虑使用金融交易系统...您要求的延迟非常取决于您的特定硬件,与进行免费咨询相比,进行测试要好得多
Mike Pennington

非常感谢您的回复。在这种情况下,实际上不是金融交易系统。我只是想对开始实施之前可能发生的事情有一个模糊的想法,更多的是作为可行性研究。
约翰·史密斯

Answers:


11

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延迟及其对利润的影响的科学论文或只是真实数据。我怀疑影响贸易利润的延迟比我们现在所说的延迟要大得多。为最大的交易所之一建立网络的我的朋友似乎认为,只是客户在不了解规模的情况下“降低==更好”。
我完全可以理解,当很少有人这样做时,当您可以观察到marketA没有看到变化,marketB确实看到并利用了HFT时,HFT有什么用。有些人在谈论使用法规通过对每笔交易征税来停止HFT,这对每个人来说都是昂贵的,我认为这不是必需的,我认为机会之窗已经关闭。


优秀的答复,非常有益,谢谢。甚至对HFT有一些个人想法!
John Smith

1
@JohnSmith,不要忽略在端点内部引入的延迟(例如OS调度程序或内核处理)...这可能对我在前面的评论中提到的延迟有很大贡献。
Mike Pennington

关于以零延迟成本使用完整最小数据包大小的极点。
generalnetworkerror 2013年

1

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

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

在10gig的10美元中。如果您确实将事情锁定了,那么这个数字可能会大大降低。

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

首先要确保将消耗UDP数据包的进程固定在与NIC中断相同的内核上。从那里,确保已禁用NIC上的合并,并从那里确保已打开MSI-X和DCA。

如果您更认真...请查看SolarFlare的OpenOnload。他们还有一套用于测试/验证性能的工具。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.