我知道这是个有点开放的问题..。
在低延迟应用程序的上下文中,我听到了通过传递TCP堆栈的引用。
这到底意味着什么?假设网络上有两个需要交换消息的进程,那么这样做的各种选择(以及相关的权衡)是什么?
发布于 2011-09-08 09:34:01
通常,第一步是使用TCP卸载引擎ToE或用户空间TCP/IP堆栈(如OpenOnload )。
完全跳过TCP/IP通常意味着查看InfiniBand,使用RDMA谓词,甚至在原始以太网之上实现自定义协议。
通常,在内核中使用任何东西都会导致延迟,所以用户空间机制是理想的,然后TCP/IP堆栈本身就是一种开销,考虑到所有的层和可以安排的复杂性: IP家族、子网络、VLAN、IPSEC等等。
发布于 2011-09-08 09:44:13
您可能需要查看零q。
发布于 2011-09-12 08:37:10
这并不是对你的问题的直接回答,但我想它可能会给你另一个关于这个问题的看法。
在尝试绕过TCP协议栈之前,我建议研究经过验证的实时通信中间件。
实时通信的一个很好的解决方案是来自OMG的数据分发处 (对象管理组)。
提供了大约12的质量属性,并为各种语言提供了绑定。
它具有LATENCY_BUDGET、TRANSPORT_PRIORITY和许多其他服务质量属性,使数据分发变得非常容易,并具有快速。
检查PrismTech标准的实现。它被称为OpenSplice,在局域网规模上运行良好。
https://stackoverflow.com/questions/7345860
复制相似问题