基礎:網路是什麼

佇列延遲(queuing delay)

你在收銀台排過隊:店裡冷清時你一下就過了,但繁忙時就得排在別人後面等到輪到你。佇列延遲對封包而言正是如此。當封包抵達路由器,但出口連結正忙著傳送其他封包時,它就在緩衝區(一條佇列)裡等到輪到自己——那段等待時間就是佇列延遲。

與其他延遲不同,佇列延遲是變動的,取決於連結有多忙。若封包抵達的速度快過連結送出的速度,佇列就會增長、等待變久;若流量輕,佇列往往是空的,等待趨近於零。主導的量是流量強度:位元的平均抵達率除以連結的服務率。當這個比值逐漸逼近 1(連結趨於滿載)時,佇列延遲不是溫和上升——而是朝無窮大暴衝。一旦越過 1,緩衝區就溢位,於是封包不只是被延遲,而是被整個丟棄(遺失)。

佇列延遲正是為何在網路壅塞時,即使距離與連結速度都沒變,你的延遲卻會飆高的原因,也是壅塞控制(在 TCP 中)與服務品質機制試圖管理的那個延遲成分。一個微妙的現代問題是緩衝膨脹(bufferbloat):過大的緩衝區「好心地」靠囤積巨大佇列來避免丟包,結果是以封包遺失換來糟糕、長達數秒的延遲。

在一條以九成負載運行的連結上,一個封包可能要排在數十個封包後面;把它推到九成九,佇列與延遲就可能增長十倍甚至更糟——同一條連結,只是更忙了。

唯一在接近滿載時暴衝的延遲——也是會轉變成封包遺失的那個。

佇列延遲是你真正能透過流量管理影響的那個延遲成分,因為它是唯一由爭用造成、而非由物理或固定封包大小造成的延遲。

又稱
queueing delayqueuing latency排隊延遲佇列延遲