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

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

也欢迎其他想法和建议。

评论

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

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

#1 楼

Juniper MX80的示例具有大约8us的入口->出口延迟,在低延迟直通开关上,它可以小于1us(可能是0.7us)。 (请记住,直通交换机无法在100%的时间内直通,只有当出口端口恰好处于空闲状态时才可以!)

光纤中的1公里延迟约为5us(同样,单向) 。

最小大小的有效载荷(46B)的@ 10G串行化延迟约为67ns(0.067us),通过提高链接速度,可以减少序列化延迟。 20B,UDP标头是8B,您的数据是8B,因此您只有36B的数据,这意味着您的以太网有效负载将包含您必须发送的10B垃圾,即,如果您要添加一些内容到您的有效负载中,则它必须为0延迟成本。

我希望您可以从中推算RTT,方法是将设备延迟乘以设备计数,并为每公里光纤增加5us,然后再乘以2。


我不禁对HFT提出一些想法。

根据2009年至2012年间减半的HFT交易量,这表明轻而易举的事已经过去了。我希望看到一些有关HFT延迟及其对利润的影响的科学论文或只是真实数据。我怀疑影响贸易利润的延迟比我们现在所说的延迟大得多。我的一个为最大的交易所之一建立网络的朋友似乎认为,只是客户在不了解规模的情况下“降低==更好”。当您可以观察到marketA没有看到变化时marketB确实看到并利用了它。有些人正在谈论使用法规通过对每笔交易征税来停止HFT,这对每个人来说都是昂贵的,我认为这不是必需的,我认为机会之窗已经关闭。

评论


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

–约翰·史密斯(John Smith)
13年7月6日在8:03

@JohnSmith,请不要忽略端点内部引入的延迟(例如OS调度程序或内核处理)...这可能会大大助长我在上一条评论中提到的延迟。

–迈克·彭宁顿
13年7月6日在14:13



关于使用完整的最小数据包大小(延迟成本为0)的极好一点。

–generalnetworkerror
2013年9月12日上午8:39

#2 楼

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


退出主机网络堆栈
上一个网络堆栈
退出该网络堆栈和您的“新”包装一起

在10 us到10 gig。如果您确实限制了一切,那么这个数字可能会大大降低。

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

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

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