【发布时间】:2018-04-25 01:19:21
【问题描述】:
我希望能够在我的代码中限制 tcp 连接的带宽。 This question 有一些线索,但不完全是我想要的。我曾尝试使用类似的方法破解 go 标准库(net/tcp 包)的 src 代码,但失败了。 我的主要想法是以某种方式将数据从系统调用缓慢写入内部缓冲区,从而使操作系统丢弃 tcp 数据包。
【问题讨论】:
-
即使您从本地 TCP 缓冲区读取速度很慢,内核仍然可以一次获取多达
/proc/sys/net/ipv4/tcp_rmem(第三个数字是最大缓冲区大小,以字节为单位)。对于长期存在的连接,您可以随时间平均它(缓冲区填充突发、消耗缓慢、缓冲区重新填充等)。要真正限制带宽,您需要在操作系统层进行,而不是在 Go 中。见unix.stackexchange.com/a/28203/40168。