绕过TCP-IP堆栈

时间:2011-09-08 09:25:42

标签: performance tcp network-programming

我意识到这是一个有点开放的问题...

在低延迟应用程序的上下文中,我听到了对绕过TCP-IP堆栈的引用

这是什么意思,并假设您在网络上有两个需要交换消息的进程,这样做的各种选项(以及相关的权衡)是什么?

4 个答案:

答案 0 :(得分:4)

通常,第一步是使用TCP卸载引擎,ToE或用户空间TCP / IP堆栈,例如OpenOnload。

完全跳过TCP / IP意味着通常查看InfiniBand并使用RDMA谓词甚至在原始以太网上实现自定义协议。

通常由于在内核中使用任何东西而导致延迟,因此用户空间机制是理想的,然后TCP / IP堆栈本身就是一个开销,考虑所有层和可以安排的复杂性:IP系列,子网,VLAN,IPSEC等。

答案 1 :(得分:1)

您可能需要查看zeromq

答案 2 :(得分:1)

这不是你问题的直接答案,但我认为它可能会给你另一个关于这个主题的看法。

在尝试绕过TCP-IP堆栈之前,我建议研究经过验证的实时通信中间件。

实时通信的一个好解决方案是来自OMG(对象管理组)的Data Distribution Service

DDS提供 12 左右的质量属性,并具有各种语言的绑定。

它具有LATENCY_BUDGET,TRANSPORT_PRIORITY和许多其他服务质量属性,使数据分发非常简单且快速

查看PrismTech实施的DDS标准。它被称为OpenSplice和 在LAN规模上运行良好。

答案 3 :(得分:0)

真的取决于你的协议的性质。

如果低延迟应用程序是指电子交易系统,则通常使用IP或UDP多播来获取市场数据,例如Pragmatic General Multicast。主要是因为有一个发送者和多个数据接收者,因此使用TCP需要将数据副本发送给每个接收者,这些副本需要更多带宽并增加延迟。

交易连接传统上使用TCP和应用程序级心跳,因为连接需要可靠,必须及时检测到连接丢失。