Tagged in

Network

fcamel的程式開發心得
fcamel的程式開發心得
Notes about software development.
More information
Followers
461
More, on Medium

用 SystemTap 找出 TCP 如何決定 MSS 的值

先前在《TCP maximum segment size 是什麼以及是如何決定的》介紹 MSS 相關知識,最後在讀 Linux kernel原始碼的時候,有找到相關部份,但沒有往下深入。這篇透過SystemTap 嘗試追得更深入一些。

關於 SystemTap 的基本知識和安裝方法,寫在《用 SystemTap 找出送 SIGKILL 的 process》。若想進一步發揮更多功能,需要配合原始碼才行。


Linux 上 TCP QUICKACK 的效果

先前在《Nagle’s Algorithm 和 Delayed ACK 以及 Minshall 的加強版》提過應用層連續送小封包會造成意外的延遲,是因為 Nagle’s Algorithm 和 Delayed ACK 合用衝突的結果。除了用 TCP_NODELAY 關掉 Nagle’s Algorithm 外,有其它的解法嗎?

Nagle’s Algorithm 的作者 John Nagle 在 hackernews 上提到: 若你需要避免延遲,不該用 TCP_NODELAY 關掉 Nagle’s…


TCP 參數對延遲和傳輸量的影響

man 7 tcp 列了許多 TCP 相關的參數,這篇討論幾個常聽到參數的影響。

TCP_MAXSEG


tshark 觀察到大於 MSS 的封包

《TCP maximum segment size 是什麼以及是如何決定的》提到 OS 會自動決定 MSS 的大小,依照《用 SystemTap 找出 TCP 如何決定 MSS 的值》的作法,卻發現在兩台 VM 互連的時候出現 >MSS 的封包,讓我很困惑。

查了些資料,得知有些網卡支援 TCP segmentation offload (TSO)。使用 TSO 的情況下,kernel 會傳一大包資料附上 TCP、IP、Ethernet 的標頭,再由網卡直接切成多個符合 MSS 大小的封包。kernel…