我知道当select路由select时,Linuxselect最具体的路由到目的地。 但是路线的指标呢? 它比路线的特异性有更高的优先权吗?
也可以参考Linux所使用的路由selectalgorithm的细节。
路由度量用于在具有相同特性的路由中设置偏好。 一般情况下(即思科,Windows等)的路由也是如此。 所以模型的工作原理是:
请注意,在基于策略的路由中还可能会有其他的事情,例如根据源IP地址执行路由等。 但是路线的特殊性,行政距离,然后是度量是我认为是主要的三件事情。
*称为最长前缀匹配,因为二进制子网(例如/ 24)看起来像11111111.11111111.11111111.00000000 。 所以路由器只能扫描二进制1的前缀,一旦遇到零就停止,然后匹配前缀。
Linux为灵活的路由select提供了许多工具。
在最简单的情况下,只有一个内核路由表,没有具有SRC属性的路由。 该表包含许多路由,这些路由被手动放置在那里( ip route add ),DHCP守护进程或路由守护进程。 在这种情况下,内核select:
请注意,内核指标(由ip route show )是由路由守护进程select的,并不一定与任何特定路由协议的指标相关。 例如,Quagga对其安装在内核中的所有路由使用相同的度量,而与协议的度量无关。
Linux也支持具有SRC属性的路由,它只匹配给定源地址的数据包。 SRC只适用于IPv6,直到最近才有bug(3.11,如果内存服务); 除非你知道你在做什么,否则我不build议使用它。
如果你需要比上面提供的更多的灵活性,你将需要使用多个路由表,并且编写规则为每个数据包select一个特定的路由表。 一个常见的技术是在源地址上分派以模拟源特定的路由。 另一种技术是在自己的路由表中运行每个路由守护进程,并模拟思科的“pipe理距离”。 所有这些在LARTC的第4章中都有详细的介绍 。