網路層:路由

網路圖模型(network graph model)

要算路徑,路由器得先有一個用數學方式思考網路的辦法。標準的技巧是把它畫成一張圖(graph):一堆點(稱為節點或頂點)由一些線(稱為邊或連結)相連。每台路由器是一個節點;每條兩台路由器之間的直接連線是一條邊。這就和地鐵路線圖是同一張圖——車站是點,軌道是線。

每條邊都有一個數字,稱為它的成本或權重,寫作 c(x, y) 代表 x 與 y 之間連結的成本。這個成本可能代表實體連結的延遲、頻寬的倒數(這樣速度快的連結看起來比較便宜)、一筆金額,或只是網管人員手動挑的一個數字。路徑是一串由邊相連的節點,而一條路徑的成本是其各邊成本的總和。若兩個節點之間有一條邊直接相連,它們就是鄰居。這個抽象刻意地簡單:它丟掉了真實硬體幾乎所有的細節,只保留誰連到誰、有多貴。

為什麼要這樣做?因為一旦網路變成一張加權圖,找好路徑就變成一個經典、被透徹研究過的數學問題:最短路徑(最低成本)問題,而 Dijkstra 與 Bellman-Ford 這類快速演算法早已存在。數十年的圖論瞬間就能拿來用。整個網域內路由的核心,其實就是在這張圖上反覆求解最短路徑。

一個誠實的提醒:這個模型是一張快照,但真實網路不是。連結會上線下線、成本會改變,不同的路由器在短時間內可能對這張圖長什麼樣抱持不同看法。路由協定花很多力氣,就是為了讓每台路由器手上那份圖保持新鮮且一致。

把一個四台路由器的網路建模為節點 {u, v, w, x},邊為 u-v(成本 2)、v-w(成本 3)、u-w(成本 5)、w-x(成本 1)。路徑 u -> v -> w -> x 的成本為 2 + 3 + 1 = 6。

路由器化為節點,連結化為加權的邊;一條路徑的成本是沿途各邊權重的總和。

連結成本的意義由網管人員決定,它不是自然定律。常見的慣例是把成本設為與頻寬成反比,好讓流量偏好較粗的管線。

又称
graph abstraction of a networktopology graph網路拓樸圖