我正在嘗試編寫一個簡單的腳本,可以檢測網路中兩個任意主機之間的網路流量(雙向的頻寬和延遲)隨時間的變化。有沒有工具可以做到這一點?
如果需要,我計劃在 bash 中編寫幾個客戶端/伺服器腳本,以使用nc
(netcat) 執行此測試,但如果預先存在的解決方案捕獲了我正在嘗試執行的操作,請告訴我。
首先,我將確定 1 秒鐘內可以在任意主機之間發送多少資料。我們將其稱為“有效負載”。初步測試顯示有效負載約為 50 MB。
然後我將執行以下命令:
- 客戶端將有效負載傳送到伺服器。
- 當伺服器收到完整的有效負載時,它將立即透過向客戶端發送有效負載進行回應。
- 當客戶端收到完整的有效負載時,它將休眠 30 秒。轉到1。
透過這樣做,我將收到以下數據(雙向頻寬和延遲):
- 透過記錄(1)中
time
執行從客戶端到伺服器的操作nc
,我將獲得從客戶端到伺服器發送資料的頻寬。 - 透過記錄(2)中
time
執行從伺服器到客戶端的操作nc
,我將獲得從伺服器到客戶端發送資料的頻寬。 - 以某種方式,我將確定資料包延遲,可能使用監視工具或比較從來源發送的有效負載的第一個資料包與目標上接收的有效負載的第一個資料包之間的時間戳記。
答案1
iPerf 是一個很好的效能測試工具。我不會按照您建議的方式編寫腳本來監視負載,而是查看 Nagios(並整合 PNP4Nagios,它將為您整理通知,並為您提供一段時間內的效能圖表。
我確實想知道像這樣長期在主機之間移動數據有多實用,因為這浪費了原本可用的頻寬。您是否可以更好地監控鏈路的實際吞吐量,並將其與延遲和資料包遺失相關聯,以確定您在需要時是否得到了您所付出的代價? (我已經「打倒」了 ISP 的人 - 玩 ISP 書中最古老的遊戲 - 試圖堅持問題不在他們的網絡上,然後使用這個,特別是在監控多個點時)
我注意到,雖然延遲、資料包遺失和吞吐量並不完全相互依賴,但(對於具有已知/約定/預期特徵的連結)這些因素之間存在相關性。
答案2
您需要檢查的是iperf做你需要的。
根據我對你的問題的理解,我認為應該如此。