![解釋路由表中的「metric」列](https://rvso.com/image/1518704/%E8%A7%A3%E9%87%8B%E8%B7%AF%E7%94%B1%E8%A1%A8%E4%B8%AD%E7%9A%84%E3%80%8Cmetric%E3%80%8D%E5%88%97.png)
我對路由表中看到的輸出有點困惑,特別是「指標」列:
$ 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 屬性中沒有網關可供設定)修復了它並且問題還沒有回來。