TCP协议,减少RTT瓶颈

时间:2012-08-30 10:28:54

标签: c++ sockets tcp roundtrip

根据我的理解,tcp协议的性能受RTT(往返时间)的限制。如果客户端向服务器发送消息,则需要等待确认响应才能发送序列中的下一条消息。这意味着如果我使用250ms RTT的链接,我每秒限制为4条消息,这对于许多应用来说非常慢,并且严重阻碍了数据传输速率。

有哪些方法可以解决此限制?

3 个答案:

答案 0 :(得分:3)

  

如果客户端向服务器发送消息,则需要等待确认响应,然后才能发送序列中的下一条消息。

这不正确。有延迟和选择性ACK这样的东西。

  

这意味着如果我使用250ms RTT的链接,我每秒限制为4条消息。

不,不。

实际瓶颈是链接的带宽延迟产品。确保两端的套接字发送和接收缓冲区至少与此产品相同。

答案 1 :(得分:1)

RTT只是告诉您从发送缓冲区中清除数据包的延迟时间约为250毫秒。鉴于发送缓冲区足够大,没有什么可以阻止您在最大带宽减去协议开销的情况下进行双向通信。

如果你不需要纠错(也就是说,当你的信息来得太晚时,你的信息就没什么价值了)考虑使用UDP。

答案 2 :(得分:0)

如果我理解正确的话。 您的协议将在发送下一条请求消息之前等待来自对等方的响应消息。 在这种情况下,RTT会限制你所说的速度(每秒4条消息)。

如果您的协议规范要求那种等待,那么协议设计不好。

如果没有,那么在等待响应消息之前,您可以通过向对等方发送多条消息来提高性能。通过这种方式,高RTT不会导致如此糟糕的缓慢。