網路量測、管理與效能

良率傳輸量/有效傳輸量(goodput)

/ GOOD-put /

想像你按卡車的車次付錢給搬家工人,然後注意到每輛卡車裡有很多是包裝泡棉、文件,以及偶爾因為掉下來而得搬兩次的那箱東西。你真正在乎的是你真正的家具到了多少,而不是卡車裝得多滿。良率傳輸量/有效傳輸量(goodput)對網路而言就是這個想法:一條連結承載的所有位元中,有多少是有用的應用資料、第一次就正確抵達、並且算數的。

吞吐量(throughput)量的是每一個越過連結的位元;goodput 只量應用真正想要的那些位元。差別就是你不算的那一切:協定標頭(每個封包都帶著乙太網路、IP 與 TCP 標頭把酬載包起來)、像確認與交握這類控制封包,尤其是重送——當一個封包遺失而被重送時,那些位元組越過連結兩次,卻只對 goodput 算一次。所以 goodput 永遠小於或等於吞吐量。一個簡單的看法:如果一個 1 GB 的檔案在 100 秒內下載完成,那麼 goodput 大約是 1 GB ÷ 100 s,無論連結為了達成這件事實際上多載了多少開銷與重送的位元組。

goodput 之所以重要,是因為它是使用者感受到的那個數字。一條連結可能顯示很高的原始吞吐量,卻交付很差的 goodput——如果遺失迫使它不斷重送,或如果封包太小以致標頭蓋過酬載。它是「完成了多少有用工作」的誠實量度,也是比較協定時正確的標尺:一個削減開銷或避免不必要重送的設計,即使總吞吐量不變,也會提高 goodput。像 iperf 這類工具可以報告近似 goodput 的應用層吞吐量,但要清楚某個數字指的是哪一個。

一條無線連結報告 50 Mbps 的原始吞吐量,但無線電錯誤迫使 20% 的封包被重送,標頭又吃掉一塊。你下載的檔案實際上以大約 38 Mbps 完成——那 38 Mbps 就是 goodput,你收到的有用位元組的速率,而多出來的 12 Mbps 是開銷與重送。

goodput 只計算交付一次的有用應用資料;吞吐量則計算每一個位元,包含標頭、控制封包與重送。

goodput 永遠小於或等於吞吐量,絕不會更多:它排除了標頭、控制流量與重送。當遺失迫使不斷重送時,很高的原始吞吐量可能掩蓋很差的 goodput。

又称
useful throughputapplication-level throughput有效吞吐量