資料中心網路(datacenter network)
把廣域的網際網路想成一張橫跨大陸、連接各城市的龐大公路系統——距離很長、屬於許多不同的擁有者、車流大多在相距甚遠的地方之間移動。現在再想像一座有數座足球場那麼大的單一倉庫,從這頭到那頭塞滿了數萬台電腦,全都屬於同一家公司、而且必須不斷地彼此交談。把這棟建築串連起來的網路佈線,就是資料中心網路。它和公開的網際網路是兩個世界:單一擁有者、距離很短、機器的集合是已知的,這讓設計者能做出非常不同的取捨。
資料中心網路用一個由交換器和連結組成、結構化的交換結構(fabric),把雲端機房裡的伺服器、儲存裝置和加速器連接起來。因為營運者從頭到尾掌握一切,這種網路通常被建成由相同交換器組成、規律而重複的圖樣(一種拓樸),而不是網際網路那種雜亂、自然長出來的網狀結構。它的目標也很特別:任意兩台伺服器之間要有極大的總頻寬、極低且極可預測的延遲(常以微秒計,而非毫秒),以及在個別連結或交換器故障時仍能持續運作的能力。這裡的流量以伺服器對伺服器的資料流(稱為東西向流量)為主,而非進出建築的流量。
為什麼重要:雲端就建在這些網路之上。當你載入一個網頁時,可能有數十個內部服務——資料庫、快取、搜尋索引、機器學習模型——在單一資料中心內互相交換訊息,之後才有第一個位元組送到你手上。這個內部結構的效能,為整個服務能跑得多快、多便宜設下了上限。一個常見的誤解是把資料中心當成放大版的辦公室區域網路;事實上它的規模、流量型態、以及對眾多等價路徑的需求,逼出了特殊的拓樸(胖樹、葉脊)、特殊的傳輸行為(incast、DCTCP)與特殊的硬體(SmartNIC、RDMA),這些在小型網路裡很少見到。
對一個大型網路服務的一次典型請求,可能觸發超過 100 次內部呼叫:前端伺服器查詢一個負載平衡器,負載平衡器再分散給數台應用伺服器,每台又去打其他機架上的快取和資料庫。這一切都在資料中心網路上、幾毫秒內完成,使用者才會看到結果。
一次使用者請求,會變成一陣內部東西向流量的風暴。
別把資料中心網路等同於網際網路。在單一機房內只有一個管理者、距離很短(所以傳播延遲極小),而且拓樸是刻意設計出來的——這些假設在公開的網際網路上完全不成立。