我了解到,当Linux执行路由选择时,它会选择最具体的到达目的地的路径。但是路线的度量又如何呢?它是否比路线的特异性有更高的优先级?
还请参考Linux使用的路由选择算法的详细信息。
发布于 2014-12-01 08:40:38
路由度量是以相同的专一性在路由之间设置偏好。在一般情况下(如Cisco、Windows等),这是正确的。因此,该模型的工作原理如下:
请注意,在这样的基于策略的路由上还有其他事情可以让您根据源IP地址执行路由之类的操作。但是,我认为主要的三件事情是路线特异性、行政距离、然后是公制。
*它被称为最长前缀匹配,因为二进制子网(例如/24)看起来像11111111.11111111.11111111.00000000
。因此,路由器只需扫描二进制1的前缀,并在碰到零时停止,然后与前缀匹配。
发布于 2014-12-20 14:59:07
Linux为灵活的路由选择提供了许多工具。
在最简单的情况下,只有一个内核路由表,没有带有SRC属性的路由。此表包含一些路由,这些路由由DHCP守护进程或路由守护进程手动放置(ip route add
)。在这种情况下,内核选择:
注意,内核度量(由ip route show
显示)由路由守护进程选择,不一定与任何特定路由协议的度量相关。例如,Quagga对它在内核中安装的所有路由使用相同的度量,而不依赖于协议的度量。
Linux还支持具有SRC属性的路由,该属性只匹配具有给定源地址的数据包。SRC只适用于IPv6,直到最近(如果内存正常的话,3.11)都是错误的;除非您知道自己在做什么,否则我不建议使用它。
如果您需要比上面所提供的更多的灵活性,您将需要使用多个路由表,并编写规则来为每个数据包选择一个特定的路由表。一种常见的技术是在源地址上进行调度,以模拟特定于源的路由。另一种技术是在自己的路由表中运行每个路由守护进程,并模拟Cisco的“管理距离”。所有这些在LARTC第四章中都有详细的描述。
https://serverfault.com/questions/648276
复制