TCP 上行頻寬需求的經驗法則

TCP 上行頻寬需求的經驗法則

在 TCP 中,接收方不時確認已收到發送的資料包。因此,為了實現特定的下行頻寬,總是需要最小的上行頻寬。

我正在尋找的是計算給定下游頻寬所需的上游的因素。我知道 TCP 中存在不同的視窗大小以及可能的其他因素,這使得計算變得更加困難。但也許存在一種預設情況,至少可以從中得到一個近似值。

答案1

這是一個很難回答的問題,因為它取決於許多其他因素。試圖得到一個非常具體的答案將是困難的,甚至更難,至少對我來說,試著解釋。

假設端到端鏈路足夠穩定,視窗可以擴展到最大,我們可以說每個最大視窗大小都需要一個 ACK。典型的最大視窗大小是 64KB,至少我認為這是 Windows 的預設值......它是由註冊表項設定的。

知道了這一點,現在我們需要知道往返時間是多少,因為每個 RTT 只會收到一個最大視窗大小的資料;資料到達您手中的一種方式以及確認資料的一種方式。現在我們將像嘗試計算衛星上的 TCP 套接字所需的上游一樣進行操作。

RTT = ~500ms
最大視窗大小 = 64KB

(64KB * 8)/.5 = 最大下載速度為 1Mbps。乘以 8 當然是將我們的位元組值轉換為位元。

順便說一句,很多時候您會看到稱為緩衝區的視窗大小,並且會看到 TCP 吞吐量計算為 (RxBuffer/RTT = Througput)。現在我們需要計算上游。希望透過以上所有內容,答案是顯而易見的,我們需要每秒兩個 ACK 才能傳回發送者。這些 ACK 為 20Bs + 20Bs * 8(IP + TCP 標頭),每塊 320bps。因此,對於 RTT 為 500 毫秒且最大 RxBuffer 為 64KB 的連接,我們預計下載速度不會超過 1 Mbps,上傳速度不會超過 640 bps。

我希望這能讓你走上正軌。讀完之後我自己都困惑了…

相關內容