是否有针对高吞吐量和低延迟优化的TCP协议/标准?

时间:2009-09-04 16:54:43

标签: language-agnostic tcp protocols

是否有任何针对TCP工作的协议/标准针对高吞吐量和低延迟进行了优化?

我能想到的唯一一个是FAST

目前我设计了一个由特殊字符分隔的简单的基于文本的协议。我想采用一种专为快速传输而设计的协议,并支持压缩和缩小通过TCP套接字传输的数据。

5 个答案:

答案 0 :(得分:4)

我们可以通过以下任何一种方式在UDP的顶部使用TCP的面向连接/可靠的功能,而不是使用重量级的TCP:

  1. UDP-based Data Transfer Protocol(UDT): UDT通过添加拥塞控制和可靠性控制机制构建在用户数据报协议(UDP)之上。 UDT是一种应用程序级,面向连接的双工协议,支持可靠的数据流和部分可靠的消息传递。

    确认: UDT使用周期性确认(ACK)来确认数据包传送,而使用负ACK(丢失报告)来报告数据包丢失。当数据传输速度很高时,定期ACK有助于减少反向路径上的控制流量,因为在这些情况下,ACK的数量与时间成正比,而不是数据包的数量。

  2. 可靠的用户数据报协议(RUDP): 它旨在提供一种解决方案,其中UDP太原始,因为保证订单数据包传输是可取的,但TCP增加了太多的复杂性/开销。

    它通过添加以下附加功能来扩展UDP:

    1. 确认收到的数据包
    2. 窗口和拥塞控制
    3. 重传丢失的数据包
    4. 过度缓冲(比实时流更快)
    5. en.wikipedia.org/wiki/Reliable_User_Datagram_Protocol

答案 1 :(得分:2)

如果在TCP之上进行分层,则不会比“barest”TCP连接获得更好的吞吐量或延迟。

还有其他非TCP高吞吐量和/或低延迟的面向连接的协议,通常分层在UDP之上。

我认识的唯一一个是UDT,它针对高带宽或长往返时间(RTT)使典型TCP重传次优的网络进行了优化。这些被称为“极长脂肪网络”(LFN, pronounced 'elefan')。

答案 2 :(得分:1)

您可能需要考虑JMS。 JMS可以在TCP之上运行,您可以使用ActiveMQ之类的消息代理获得合理的延迟。

但这实际上取决于您的目标受众。如果您构建的游戏必须在任何地方运行,那么您几乎需要使用HTTP或HTTP / Streaming。如果你正在推动局域网上的市场数据,那么不使用TCP的东西可能会让你更好。 Tibco RVJGroups都可以通过多播提供可靠的低延迟消息传递。

答案 3 :(得分:1)

正如您提到的那样 - 它主要用于市场数据分发,并由领先的证券交易所使用,并且运行在UDP多播的顶端。

通常,根据当前的网络可靠性水平,总是值得将您的协议置于UDP之上。 无论有什么会话序列号,NACK +服务器到客户端心跳和二进制编组都应该接近理论性能。

答案 4 :(得分:0)

如果您在发送方拥有admin / root权限,您还可以尝试使用SuperTCP等TCP加速驱动程序。