我将多个udp数据包连续发送到远程PC。问题是,如果数据量太高,某些设备之间的某个通道会遇到缓冲区溢出。我打算限制/限制/控制udp数据包的发送速率。有人可以给我一些关于如何找到最佳费率发送间隔的指导吗?
顺便说一句,请停止建议tcp over udp。目标不是可靠地发送数据,而是测量最大吞吐量。
答案 0 :(得分:2)
试错。点。
从不(!)假设所有数据包都将到达。意思是:你需要(!)一种方法来重新获取丢失的数据包。即使在完美的cnoditions下,包也会丢失。
如果损失是可以的并且只应该最小化,那么统计方法几乎是我看到处理这个问题的唯一方法。
答案 1 :(得分:1)
尽管你提出我不建议TCP over UDP,但我必须这样做。在同一段中,您指出测试的主要目的是测量吞吐量 - 即带宽 - 并且只有在没有重新发明整个TCP堆栈的情况下正确执行它才能实际使用TCP堆栈。
TCP的大部分设计用于处理流量控制问题,当使用TCP流时,您将获得所需的 - 给定连接的最大带宽,轻松且没有“温水发明”。
如果此答案不适合您,则可能意味着您必须重新说明您对问题的要求。他们发生冲突。
答案 2 :(得分:1)
然后试试这个:
Sleep()
等待新的时间段。RATE = RATE * .9
的操作 - 将发送速率降低到前一个的90%一些注意事项: - 如果反向连接是TCP,那么你将有一些开销 - 如果反向连接是UDP,你也可以在这里删除数据包(因为你正在充斥信道),发送者永远不会知道数据包被丢弃 - 上面的算法不能解决丢失的数据问题或无序数据问题,它只会测量吞吐量。