在solaris中禁用Nagle算法

时间:2012-10-03 16:55:12

标签: network-programming solaris

假设我想在Solaris中禁用Nagle的算法(用于实时数据传输),其中使用本地循环返回建立进程之间的连接,这是否有问题。至于我的理解,Solaris中的local-loop确实启用了TCP Fusion(有点类似于Unix Domain Sockets),以减少堆栈使用的开销。 它们是相关的还是相互排斥的?我怀疑基本上会有任何反响吗?

另外,我想澄清是否可以禁用Nagle的算法进行本地回送通信?

我知道我可以使用TCP_NODELAY。可能需要澄清更多:1)在禁用Nagle算法的本地循环中会发生什么(默认情况下它始终启用)。 TCP堆栈是否会等待MSS,否则会立即将数据推出堆栈。 2)默认情况下,solaris TCP融合也可以实现更快的读写。如果Nagle被禁用,它会产生任何问题。最后我想要的是数据应该实时发送而不会有任何延迟。所以我必须禁用Nagle或TCP融合就足够了。

1 个答案:

答案 0 :(得分:0)

我承认我不知道是否只能为1个界面禁用naggle。在全球范围内,这可以通过以下命令完成(但我想你已经知道了):

/usr/sbin/ndd -set /dev/tcp tcp_naglim_def 1

我的Solaris VM现在已经坏了所以我无法测试,但是如果我们想象“lo0”是你的环回,那么“/ usr / sbin / ndd -set / dev / lo0 tcp_naglim_def 1 “工作?

建议默认启用Nagle,您可以在应用程序中禁用它吗?它应该像使用TCP_NODELAY选项调用setsockopt()一样简单。