路由选择:特异性与指标


Answers:


26

路由度量标准是在具有相同特异性的路由之间设置优先级。一般而言,这是正确的路由(即Cisco,Windows等)。因此,模型的工作方式如下:

  1. 查找最具体的路线(也就是最长的前缀匹配*
  2. 如果有多个具有相同特异性的路由,请选择管理距离最短的路由(这可以区分直连路由,静态路由和各种路由协议之类的东西)。
  3. 在该路由协议和特定路由(如果路由特定性和管理距离相同)内,选择度量最低的路由

请注意,基于策略的路由可能还会发生其他事情,使您可以执行基于源IP地址的路由等操作。但是,我认为主要的三件事是路线的特殊性,管理距离和度量。

*之所以称为最长前缀匹配,是因为二进制的子网(例如/ 24)看起来像11111111.11111111.11111111.00000000。因此,路由器可以只扫描前缀中的二进制1,并在到达零后停止并匹配该前缀。


1
在Linux上并不是完全正确的,在Linux上,度量距离和管理距离之间没有区别。
2014年

1
@jch quagga和co。通过相应地设置指标来模拟广告?(并不是说您的观点并不重要,只是出于好奇)
Kyle Brandt 2014年

1
不,Quagga在zebra守护程序内部实现AD ,并且仅将选定的路由发送到内核-因此内核无需处理AD。我需要检查,但我认为Quagga会将内核指标设置为恒定值。
jch 2014年

只是想提一下,这在以太网桥中并不适用,例如,通过具有相同度量标准的不同设备的两条相同路由仍会导致流量在较长且错误的链路上被重定向。
Areeb Soo Yasir

9

Linux提供了许多用于灵活路由选择的工具。

单路由表

在最简单的情况下,只有一个内核路由表,而没有带有SRC属性的路由。该表包含许多路由,这些路由是ip route add由DHCP守护程序或路由守护程序手动放置在()处的。在这种情况下,内核选择:

  • 最具体的路线;
  • 如果有多个同样特定的路由,则是具有最小内核度量的路由。

注意,内核度量标准(由显示ip route show)由路由守护程序选择,并且不一定与任何特定路由协议的度量标准相关。例如,Quagga对其安装在内核中的所有路由使用相同的度量标准,而与协议的度量标准无关。

特定来源的路线

Linux还支持具有SRC属性的路由,该路由仅匹配具有给定源地址的数据包。SRC仅适用于IPv6,直到最近才出现故障(如果有内存,则为3.11)。我不建议您使用它,除非您知道自己在做什么。

多个路由表

如果您需要的灵活性超出上述范围,则需要使用多个路由表,并编写规则为每个数据包选择一个特定的路由表。一种常见的技术是在源地址上调度,以模拟特定于源的路由。另一种技术是在其自己的路由表中运行每个路由守护程序,并模拟Cisco的“管理距离”。所有这些在LARTC的第4章中都有详细描述。


这不是src属性的作用。您将要阅读man ip-route或其他文档。它确实适用于IPv4。我使用它来通过单个网到网IPSec隧道获取所有流量,包括路由器的流量。
Zan Lynx

1
RTA_SRC属性与我所说的完全相同。可以使用命令from选项进行访问ip。该ip命令的src选项设置RTA_PREFSRC属性,即您所描述的。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.