2012-10-03 36 views
0

假設我想在Solaris中使用本地環回來建立進程之間的連接來禁用Nagle的算法(用於實時傳輸數據),這是否會成爲問題。至於我的理解,Solaris中的本地環路確實啓用了TCP Fusion(與Unix Domain Sockets有點類似),以減少堆棧使用的開銷。 它們是相互關聯還是相互排斥?我的懷疑基本上會有什麼反響?禁用solaris中的Nagle算法

另外我想澄清一下,是否Nagle的算法可以禁用本地環回通信?

我知道我可以使用TCP_NODELAY。也許我需要澄清更多:1)在Nagle的算法被禁用的情況下,本地循環返回發生了什麼(默認情況下始終啓用它)。 TCP堆棧會等待MSS還是會立即將數據從堆棧中移出。 2)默認情況下,在solaris中,爲了更快的讀寫,啓用TCP融合。如果Nagle被禁用,它會產生什麼問題。最後我想要的是數據應該實時發送而不會有任何延遲。所以我必須禁用Nagle或TCP融合就足夠了。

回答

0

我承認我不知道只有1個接口才能禁用naggle。在全球層面,這將使用下面的命令來完成(但我想你已經知道了):

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

我的Solaris虛擬機壞了所以我現在不能測試,但如果我們想象「的lo0」是你的環回,會「/ usr/sbin/ndd -set/dev/lo0 tcp_naglim_def 1」工作嗎?

建議的默認值是保持Nagle啓用,你可以在你的應用程序內禁用它嗎?它應該像使用TCP_NODELAY選項一樣簡單地調用setsockopt()。

+0

不,我認爲這很清楚,你更多的是尋找像ndd這樣的東西,但只能在loopback界面上禁用nagle,而不是在真實的界面上,對嗎? – mbarthelemy

+0

禁用迴環所需的nagle嗎?不會實時傳輸TCP融合數據? – PhiberOptixz