解釋路由表中的「metric」列

解釋路由表中的「metric」列

我對路由表中看到的輸出有點困惑,特別是「指標」列:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 wlan0
172.16.35.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
192.168.0.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0
192.168.82.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8

根據手冊頁,度量表示到目標的「距離」。我對「目標」到底是什麼有點困惑。我假設這是我的路由器(它轉到網關 0.0.0.0,然後網關轉到我的路由器 192.168.0.1)。因此,我預計該指標是到我的路由器的單跳。然而,這是9!為什麼這個數字這麼高?

答案1

根據手冊頁,度量表示到目標的「距離」。

我預計該指標是到我的路由器的單跳。然而,這是9!為什麼這個數字這麼高?

metric字段有多種不同的含義:

Metric 欄位表示路由的成本。如果存在到給定目標網路 ID 的多條路由,則使用度量來決定採用哪一條路由。度量值最低的路由是首選路由。即使存在多個路由,某些路由演算法也僅在路由表中儲存到任何網路 ID 的單一路由。在這種情況下,路由器使用該度量來決定將哪一條路由儲存在路由表中。

指標可以指示表達路由偏好的不同方式:

  • 跳數。

    一個通用的指標。指示網路 ID 的路徑中的路由器(跳數)數。

  • 延遲。

    資料包到達網路 ID 所需的時間量測。延遲用於指示路徑的速度 - 區域網路 (LAN) 連結具有低延遲,廣域網路 (WAN) 連結具有高延遲 - 或路徑的擁塞狀況。

  • 吞吐量。

    每秒可沿路徑發送的有效資料量。吞吐量不一定反映鏈路的比特率,因為非常繁忙的乙太網路鏈路的吞吐量可能低於未使用的 64-Kbps WAN 鏈路。

  • 可靠性。

    路徑穩定性的度量。某些類型的連結比其他類型更容易出現連結故障。例如,對於 WAN 鏈路,租用線路比撥接線路更可靠。

來源路由表

答案2

我要對此發表評論,因為現有答案在描述性意義上在技術上是正確的,但錯過了對調試和工程目的有用的關鍵具體細節和值,其中一些我必須自己針對Windows 10 21H2 進行測試,儘管這應該適用於幾乎所有 Windows 版本,減去一些特定於 Windows 的內建預設值,這些預設值在較新版本的 Windows 中發生了更改(稍後會詳細介紹)。

一個小筆記:其他作業系統,包括裝置中的許多嵌入式作業系統(路由器/交換器/物聯網/等),通常使用單一指標(與不同的網關和介面指標相加,例如Windows),但最低路由指標始終獲勝的基本規則是一致的我見過的所有地方。

對於菜鳥來說:理論上,自動度量值的要點是,當有 2 條以上的路由到達目的地時,請嘗試確保盡可能頻繁地選擇「最佳」路由,而無需額外配置。另一個答案中顯示的手冊頁定義如此模糊/廣泛的原因是,您可以根據需要建立選擇的值,因此任何作業系統/工程師/開發/系統都可以根據需要選擇值,試圖確保它們的定義「最佳」路線/連結通常獲勝(即最低值)。也就是說,在大多數正常應用中,「最佳」幾乎總是透過基於原始連結速度在範圍內分配值來確定,以適應連結速度定期變化的連接(主要是無線連結)。

我不知道也沒有測試過,當無線鏈路的鏈路速度跨越不同範圍時,接口指標是否一致/定期更新,但我想存在一些滯後/粘性,或者只是硬設置在鏈接上,以防止它與另一個連結(通常是同一台機器中的有線連接,例如筆記型電腦)過快地來回交換優先級(如果有的話)。

Windows 上的基本路由指標

路由是從路由表中選擇的(透過命令列使用“route print”進行檢查),並且是路由表的總和介面度量網關指標。 「活動路由」會向您顯示匯總的功能指標。

若要在不檢查控制台的情況下查看這些值,您可以使用 Run->"netsh int ipv4 show add"

這兩個指標都可以在網卡的屬性->高級->“IPv4”或“IPv6”中進行編輯,這取決於您正在處理的路由/流量集(運行->“ncpa.cpl”直接進入那裡) - 做不是使用形式重於功能的設定應用程式)。您可以在「預設閘道」和「介面指標」下查看單獨的指標。

Windows 上的自動指標值(因版本而異)

接口指標:

在無處不在的 Microsoft 頁面上,有一些內部表格用於根據連結速度設定介面指標。目前,他們按順序列出了 XP-SP2 之前的值(我假設)、XP SP2 到 Windows 8.1 的值,然後是 Windows 10+ 的無線連結和有線連結值(單獨的表格)。伺服器版本幾乎可以肯定與其等效的消費者版本相同,就像許多隱藏的東西一樣。

  • 範例:1Gbit 標準乙太網路有線鏈路,Win10 -> 第 4 個表(按上述),「大於或等於 200 Mb 且小於 2 Gb」是介面自動指標 25。

網關指標:

網關指標可能稍微棘手一些,因為預設值並不明顯,甚至在快速搜尋中似乎也沒有記錄。這裡根據連結是使用動態IP還是靜態IP來設定。可能還有其他條件,但我只找到這兩個。

經過測試,我發現預設的靜止的度量為 256,預設值動態/DHCP指標為 0。如果使用所有預設/自動設置,動態尋址連結將始終優先於任何靜態尋址鏈接

實踐中的基本考慮

舉個例子:對於使用靜態IP 管理伺服器或其他Windows 裝置的人來說,不希望在第二個NIC 上安裝惡意/測試/第二個路由器,從而突然通過所述路由器拉動裝置的流量(可能會佔用伺服器離線),強制將網關和介面指標設定得足夠低,以便其他自動分配不可能取代它。如果您希望始終使用該路由/NIC,則可以分別使用 1 和 10,或僅使用 1 和 1(不使用)。只需記錄您所做的事情,因為將某些事情硬設定為極端值有時會導致出現問題。

可能的怪癖/錯誤

在開始這個小型文件專案之前,我設定了輔助 NIC介面公製到 100 來處理我建立的網路實驗室,大約一兩週後,中間只是正常使用,我回來發現了介面的閘道公制也設定為100...不確定這是如何發生的,或者是否是極端情況錯誤,但很快將其設為靜態並返回(它使用DHCP,因此NIC 屬性中沒有網關可供設定)修復了它並且問題還沒有回來。

相關內容