我打算寫一個應用程序,我需要計算網絡帶寬以及延遲和丟包率。其中一個約束是被動地測量帶寬(使用應用程序數據本身)。通過最小數據傳輸測量的帶寬
我在線閱讀並從一些現有應用程序中瞭解到,幾乎所有這些應用程序都使用主動探測技術(即生成探測包流)並使用第一個和最後一個包到達之間的時間差來計算帶寬。
這種技術的主要問題是它使用探測數據包來洪泛網絡,探測數據包運行時間更長且不可伸縮(因爲我們需要在兩端運行應用程序)。
其中一個建議是呼應回給發送者一個包計算的RTT和使用下列公式計算帶寬:
Bandwidth <= (Receive Buffer size)/RTT.
我不知道怎麼準確,這可能是因爲接收方可能不會總是按時回送數據包以獲得正確的RTT。許多服務器都會禁用它,因此單獨使用ICMP可能無法正常工作。
我的主應用程序運行在TCP連接上,所以我有興趣使用TCP連接來測量在特定時間段內提供的實際帶寬。如果有人能夠建議一種簡單的技術(可靠的公式)來測量TCP連接的帶寬,我將非常感激。
不要忘記接受你的問題的答案。你已經提出了7個問題,直到現在還沒有接受其中的一個。 – glglgl 2011-10-14 09:23:44