0

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

另外我想澄清一下是否可以禁用 Nagle 算法以进行本地环回通信?

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

4

1 回答 1

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() 一样简单。

于 2012-10-03T17:56:30.550 回答