1

是否有一個公式可用於確定需要通過TCP連接傳輸的最小段/字節數,以確定它的帶寬並考慮慢速啓動和擁塞避免?我知道pathrate tool,但我希望如果可能的話稍微簡單一點,我可以將它合併到應用程序中以獲得下降球數字。使用的一個例子是從網絡服務器下載一些數據,以確定自動下載一堆小文件的最佳線程數。這與我發佈的上一個問題有關:TCP, HTTP and the Multi-Threading Sweet SpotTCP慢啓動,擁塞避免和確定帶寬

回答

0

我不認爲需要發送確定帶寬的固定字節數。這個數字可以取決於網絡類型和速度。

Bandwidth是在某個時間間隔內傳輸的某些資源的度量。要獲得真實的數據,你需要測量它。這裏是some hints如何做到這一點

1

你可以啓動scholar.google.com並搜索「TCP chirp」。但是,這需要僱用定時器,並且如果您不編寫內核tcp擁塞控制算法,則必須在用戶空間中重新實現TCP。而這本身可能不會給出好的結果(通用操作系統並不擅長實時僱傭與計時器相關的東西,在用戶空間中運行)。

理論上,使用TCP啁啾只需要4-5段​​(通常情況下,您可以通過更長的分段序列獲得更好的分辨率)來確定「最佳」帶寬。在任何情況下,由於您無法知道使用哪條路徑(即衛星鏈路或電視正向廣播),因此您可能需要大量數據(10+ MB,甚至1GB)才能獲得在任意路徑上的體面測量。 (衛星可以擁有很多Dozend MB/s帶寬,但也有1000-3000 ms範圍內的延遲;而TCP需要幾次往返時間才能打開cwnd(在開始測量之前,我會說約有10個RTT) ...

+0

看起來非常有趣我不是想做一些通用的東西,而是可以在任何可能的情況下工作,比如說80%的最常見的情況,通過地面網絡進行標準的有線或無線連接。 – 2010-12-15 10:33:16