TCP协议,减少RTT瓶颈
TCP protocol, reducing RTT bottleneck
根据我的理解,tcp协议的性能受到RTT(往返时间)的限制。如果客户端向服务器发送消息,则需要等待确认响应,然后才能发送序列中的下一条消息。这意味着,如果我在250毫秒RTT的链接上,我每秒只能收到4条消息,这对许多应用程序来说都很慢,严重阻碍了数据传输速率。
有哪些方法可以绕过这一限制?
如果客户端向服务器发送消息,则需要等待确认响应,然后才能发送序列中的下一条消息。
这是不对的。有延迟ACK和选择性ACK。
这意味着,如果我在250毫秒RTT的链接上,我每秒只能收到4条消息。
不,没有。
实际瓶颈是链路的带宽延迟乘积。请确保两端的套接字发送和接收缓冲区至少等于此产品。
RTT只是告诉您从发送缓冲区中逐出数据包的延迟约为250ms。假设发送缓冲区足够大,没有什么可以阻止您在最大带宽减去协议开销的情况下进行双向通信。
如果您不需要纠错(也就是说,当消息到达太迟时,您的消息毫无价值),请考虑使用UDP。
如果我理解正确。您的协议将等待来自对等方的响应消息,然后才能发送下一条请求消息。在这种情况下,RTT会限制您所说的速度(每秒4条消息)。
如果您的协议规范要求进行这种等待,那么该协议的设计就不好。
如果没有,那么您可以通过在等待响应消息之前向对等方发送多条消息来提高性能。这样一来,高RTT就不会造成如此糟糕的减速。
相关文章:
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 如何区分CPU和内存瓶颈?
- 瓶颈 C++ 排序函数Wi-Fi 信号
- 如何在链接中找到瓶颈
- Orocos LTTng 符号查找错误:/path/to/liborocos-rtt-traces-gnulinux.s
- SQL使用C - 瓶颈在哪里
- 少量数据包导致高RTT值
- 这个代码的瓶颈在哪里
- 使用多个线程生成随机数时的瓶颈
- std::priority_queue的最小堆是我的瓶颈
- TCP协议,减少RTT瓶颈
- 什么是UMThunkStubAMD64,为什么它看起来是一个瓶颈
- C++无休止的循环瓶颈
- 在大型C++项目中,我应该如何检测编译时间的瓶颈
- C++:查找内存映射文件的瓶颈
- OpenMP:'parallel for loop'瓶颈
- 如何在C++编程中从wget创建的套接字中检索RTT
- `std::string`分配是我当前的瓶颈-如何使用自定义分配器进行优化
- pthread_join是一个瓶颈
- 线程C++中的瓶颈