解释路由表中的“度量”列

解释路由表中的“度量”列

我对路由表中看到的输出有点困惑,特别是“度量”列:

$ 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

根据手册页,metric 表示到目标的“距离”。我对“目标”到底是什么有点困惑。我假设它是我的路由器(它转到网关 0.0.0.0,然后转到我的路由器 192.168.0.1)。因此,我预计度量是到我的路由器的单跳。然而,它是 9!为什么这个数字这么高?

答案1

根据手册页,metric 表示到目标的“距离”。

我预计度量标准是到我的路由器的单跳。但是,它是 9!为什么这个数字这么高?

metric字段有许多不同的含义:

度量字段表示路由的成本。如果存在到给定目标网络 ID 的多条路由,则度量将用于决定采用哪条路由。度量值最低的路由是首选路由。即使存在多条路由,某些路由算法也只会在路由表中存储到任何网络 ID 的一条路由。在这种情况下,路由器将使用度量来决定在路由表中存储哪条路由。

指标可以指示表达路线偏好的不同方式:

  • 跳數。

    常见指标。表示到达网络 ID 的路径中的路由器数(跳数)。

  • 延迟。

    数据包到达网络 ID 所需时间的度量。延迟用于指示路径的速度(局域网 (LAN) 链接具有低延迟,广域网 (WAN) 链接具有高延迟)或路径的拥塞情况。

  • 吞吐量。

    每秒可沿路径发送的有效数据量。吞吐量不一定反映链路的比特率,因为非常繁忙的以太网链路的吞吐量可能低于未使用的 64 Kbps WAN 链路。

  • 可靠性。

    路径恒定性的度量。某些类型的链路比其他类型的链路更容易发生链路故障。例如,对于 WAN 链路,租用线路比拨号线路更可靠。

来源路由表

答案2

我要对此发表评论,因为现有的答案在描述意义上在技术上是正确的,但缺少对调试和工程目的有用的关键具体细节和值,其中一些我必须亲自针对 Windows 10 21H2 进行测试,尽管这应该适用于几乎所有的 Windows 版本,减去一些在较新版本的 Windows 中发生变化的 Windows 特定的内置默认值(稍后会详细介绍)。

小提示:其他操作系统,包括设备中的许多嵌入式操作系统(路由器/交换机/物联网/等),通常使用单一指标(与不同的总网关和接口指标不同,如 Windows),但最低路由指标总是获胜的基本规则在我见过的任何地方都是一致的。

对于新手来说:自动度量值的意义在于,在有 2 条以上到目的地的路由时,尽量确保尽可能频繁地选择“最佳”路由而无需额外配置。另一个答案中显示的手册页定义如此模糊/宽泛的原因是,您可以随意构造选择的值,因此任何操作系统/工程师/开发人员/系统都可以随意选择值,尽量确保他们对“最佳”路由/链接的定义通常获胜(即最低值)。也就是说,在大多数正常应用中,“最佳”几乎总是通过根据原始链接速度分配值来确定,以适应链接速度经常变化的连接(主要是无线链接)。

我不知道,也没有测试过当无线链路的链路速度跨越不同的范围时,接口指标是否会在无线链路上持续/定期更新,但我认为可能会存在一些滞后/粘性,或者只是在链接时硬设置,以防止它与另一个链路(通常是同一台机器上的有线连接,如笔记本电脑)过快地来回交换优先级(如果有的话)。

Windows 上的基本路由指标

从路由表中选择一条路由(使用“route print”从命令行检查),它是接口度量网关度量。“活动路线”向您显示总计的功能指标。

要在不检查控制面板的情况下单独查看这些值,您可以使用运行->“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 来设置。可能还有其他条件,但我只找到了这两个条件。

通过测试,我发现默认静止的度量为 256,默认值为动态/DHCP度量为 0。由于这些已添加到上面的接口度量中,并且您可以在上面的链接表中看到 256 比任何自动接口度量都大/差,因此它告诉您如果使用所有默认/自动设置,动态寻址链接将始终优先于任何静态寻址链接

实践中的基本考虑

例如:对于管理具有静态 IP 的服务器或其他 Windows 设备的人,如果不希望流氓/测试/第二个路由器(例如,第二个 NIC)突然将设备的流量拉过该路由器(可能导致服务器离线),请强制将网关和接口指标设置为足够低,以便没有其他自动分配可以取代它。如果您希望始终使用该路由/NIC,也许可以分别使用 1 和 10,或者只使用 1 和 1。只需记录您这样做,因为将某些东西硬设置为极端值有时会导致后续问题。

可能存在的缺陷/错误

在开始这个小文档项目之前,我设置了辅助网卡的界面我将度量标准提高到 100 来处理我设置的网络实验室,大约一两周后,在正常使用期间,我回来发现接口的网关度量也设置为 100...不确定这是怎么发生的或者是否是一个极端情况的错误但快速将其设置为静态并返回(它使用 DHCP,因此 NIC 属性中没有网关可设置)修复了它并且问题没有再次出现。

相关内容