2014-04-06 123 views
-1

我嘗試使用Mininet模擬由2臺主機和1臺交換機組成的網絡。 一臺主機是發送方,通過使用iperf工具連續發送數據包到另一臺主機(接收方)。TCP擁塞窗口大小太大?

H1 ---------------------------- Switch ---------------- ---------- H2

------- 100Mbps | 0.125ms ----------- 100Mbps | 0.125ms ------

主機與交換機之間的鏈路帶寬爲100Mbps,延遲爲0.125ms。

發送的每個數據包的大小爲1.5KB,交換機的緩衝區爲400個數據包。

每個鏈路的延遲是爲0.125ms所以H1之間的RTT,H2爲4 * 0.125 = 0.5ms的

CWND(擁塞窗口)是發送方在一個RTT發送的分組的數量,因此,可以通過是計算如下:吞吐量= CWND/RTT。

由於MAX(吞吐量)<帶寬,以便CWND < RTT *帶寬= 0.5 * 10 ^( - 3)×100×10^6 = 50000b〜6KB = 4packets

但是,當I監視器CWND使用tcp_probe工具它出乎意料地顯示CWND總是大於200KB(〜120包),比我預期的要大得多。

TCP CWND Plot

即使緩衝區爲400包,但它不能有CWND那麼大這樣。

請給我解釋一下,我真的被困在這個問題上。 謝謝!

回答

3

我不認爲你可以像你這樣計算CWND和RTT,因爲你實際上認爲數據包停留在交換機中的時間以及H1和H2的網絡堆棧爲零。

擁塞窗口(CWND)是可以在不丟包的情況下傳輸的數據量,例如,只要所有事情都得到確認並在丟包時減少,它就會增加。

根據您的數據,CWND會降低到600左右,所以數據包丟失從大約400個數據包開始,這是交換機的緩衝區大小。所以在這個時刻,在H1和H2之間沒有4個數據包在傳輸,但是大約400和RTT可能遠遠大於0.5ms。