【发布时间】:2016-10-07 08:28:24
【问题描述】:
我们正在通过 10Gb 以太网以高数据速率从 Linux PC 传输 udp 数据包。我们正在用 C++ 编写代码。
当我们调用 sendto() 来发送一个 udp 数据包时,我们可以对传输的实际延迟(即数据包实际发送的速度)进行任何优化吗?
刷新的概念是否适用于 UDP 发送缓冲区,还是 UDP 数据包总是立即发送?
【问题讨论】:
标签: sockets network-programming
我们正在通过 10Gb 以太网以高数据速率从 Linux PC 传输 udp 数据包。我们正在用 C++ 编写代码。
当我们调用 sendto() 来发送一个 udp 数据包时,我们可以对传输的实际延迟(即数据包实际发送的速度)进行任何优化吗?
刷新的概念是否适用于 UDP 发送缓冲区,还是 UDP 数据包总是立即发送?
【问题讨论】:
标签: sockets network-programming
UDP 数据包通常仅在传出接口出现拥塞时才被缓冲。您可以通过以下方式减少负载下的延迟:
setsockopt(SO_SNDBUF));tc qdisc change);请注意,这样做会通过丢弃数据包而不是缓冲它们来减少负载下的延迟,因此,根据您的更高层协议,它实际上可能增加应用程序延迟,例如通过增加应用层重传。
【讨论】: