繁体   English   中英

限制TCP发送速率

[英]Limiting TCP sending rate

TCP流量本身将不断增长,直到它们填满从srcdst使用的链接的最大容量(如果所有这些链接均为空)。

有一个简单的方法来限制这一点吗? 我希望能够以最大X mbps速率发送TCP流。

我考虑过只使用socket.send()函数每秒发送X个字节,然后其余时间进入休眠状态。 但是,如果链接变得拥塞并且速率降低,则一旦链接再次变得不拥塞,它将需要恢复以前无法发送的内容,并且速率将增加。

在TCP级别,唯一的控制权是传递给send()的字节数以及调用它的频率。 一旦send()已将一些字节移交给网络堆栈,则完全取决于网络堆栈要发送它们的速度(或慢速)。

鉴于上述情况,您可以通过监视已发送的字节数以及自开始发送以来已经经过的时间,并推迟随后对send()的调用(和/或您的数据字节数)来大致限制传输速率传递给send()),以防止平均费率高于目标费率。

如果您想要更好的控制,则需要使用UDP而不是TCP。 使用UDP,您可以直接控制每个数据包何时发送。 (而使用TCP,则由网络堆栈决定何时发送每个数据包,数据包中的内容,何时重新发送丢弃的数据包等)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM