基礎:網路是什麼
儲存轉送傳輸(store-and-forward transmission)
想像一場接力賽,每位跑者必須把整支接力棒握在手中,才能衝向下一位跑者——沒有人會在奔跑途中傳棒。儲存轉送就像這樣:封包交換器必須先接收完整個封包並把它存下來,才會開始把其中任何部分轉送到下一條連結。它不會在位元一邊抵達時就直接串流穿過。
為何要先握住整個封包?因為路由器需要完整的標頭(通常還有檢查碼)才能決定要把封包送往哪裡、並驗證它沒有損壞——而在它有地方可送、且確定封包完好之前,它無法開始往下一條連結傳送。後果是每一跳都有一份傳輸延遲:把一個 L 位元的封包推上速率為每秒 R 位元的連結,需要 L/R 秒,而這整份延遲在路徑上每台路由器都要付一次。對於一個 L 位元的封包跨越 N 條速率皆為 R 的儲存轉送連結,光是這個效應造成的端到端延遲,大約就是 N 乘以 L/R(暫不計傳播與佇列)。
這是一個根本原因,說明為何即使毫無壅塞,真實網路也不是瞬間完成:每一跳都加上把封包時脈推出的時間。把許多封包流水線化能掩蓋掉大部分(當第 2 跳正在轉送第 1 個封包時,第 1 跳已經在接收第 2 個封包了),這正是長傳輸要以封包流而非一整塊巨大區塊送出的原因。這個詞與直通交換(cut-through switching)相對,後者一讀完標頭就開始轉送——比較快,但它無法丟棄一個它已開始傳送的損壞封包。
把一個 8000 位元的封包跨越兩條 1 Mbps 的儲存轉送連結傳送,約需 8 毫秒填滿第一條連結、再加 8 毫秒填滿第二條——光是傳輸就共 16 毫秒,這還沒算上任何傳播或佇列延遲。
每一跳都必須先收完整個封包才能轉送——每條連結的傳輸延遲為 L/R。
傳輸延遲(L/R,把位元推上連結所需的時間)和傳播延遲(位元沿連結行進所需的時間)並不相同。儲存轉送講的是前者;兩者都會沿路徑累加。
又称
另见