在Linux中禁用Nagle的algorithm

我在网上找不到任何东西来从Linux的命令行中禁用Nagle的algorithm。 Solaris确实有一个机制来从命令行启用/禁用它。

请让我知道是否有任何方式在Linux上做到这一点。

它是按套接字完成的,而不是从命令行使用setsockopt()来设置TCP_NODELAY标志。 我知道全球没有这样做的方法,但如果在/ proc / sys / net下有一个文件来执行此操作,则不会感到意外。

对于redhat Linux,你可以看看/ proc / sys / net / ipv4 / tcp_delack_min选项。 对于其他发行版,您可能需要重新编译内核。

您还可以将环境变量SETTCPNODELAY设置为任何值来禁用Nagle的算法。

或者设置ACK超时并停止TCP_RTS。 超时是2ms。 这是下一个rj45接口或下一台机器的ping时间。 不要将超时设置得太低,因为你可能会丢包;-)。 TCP.fin有更高的超时时间。

 echo 0.2 > /proc/sys/net/ipv4/tcp_ack_timeout echo 0.2 > /proc/sys/net/ipv4/tcp_syn_timeout echo 0.2 > /proc/sys/net/ipv4/tcp_synack_timeout echo 0 > /proc/sys/net/ipv4/tcp_rst_timeout echo 0.2.5 > /proc/sys/net/ipv4/tcp_fin_timeout echo 0.2 > /proc/sys/net/ipv4/tcp_urg_timeout echo 0.2 > /proc/sys/net/ipv4/tcp_psh_timeout echo 10000 > /proc/sys/net/ipv4/tcp_syn_retries echo 10000 > /proc/sys/net/ipv4/tcp_synack_retries echo 0 > /proc/sys/net/ipv4/tcp_rst_retries echo 10000 > /proc/sys/net/ipv4/tcp_psh_retries echo 10000 > /proc/sys/net/ipv4/tcp_urg_retries echo 10000 > /proc/sys/net/ipv4/tcp_ack_retries echo 10000 > /proc/sys/net/ipv4/tcp_fin_retries echo 0 > /proc/sys/net/ipv4/tcp_timestamps 

有可能:

 echo 1 > /proc/sys/net/ipv4/tcp_dsack