「Network」- 路由选择的方法,Route Selection in Routers

  CREATED BY JENKINSBOT

问题描述

如果有多条去往目的地址的链路,路由器将负责进行最优选路。

解决方案

1)最长匹配原则:掩码最长(Destination/Mask)
如果目标地址匹配到多条路由条目,则选择最详细的路由(即路由覆盖的网络范围最小)

2)如果(1)相同,则根据路由协议优先级(Pre)
华为定义的路由优先级:Direct:0;OSPF 10;IS-IS 15;Static 60;RIP 100;OSPF ASE 150;OSPF NSSA 150;IBGP 255;EBGP 255;
注意:不同的厂商路由优先级的协定可能不同。

3)如果(2)相同,则根据路由度量值(Cost,开销)
度量值越小,优先级越高;
常见度量值:跳数、带宽、时延、代价、负载、可靠性等等;
协议不同,计算开销的方法也不同,比如 RIP 使用跳数;

4)如果(3)相同,会出现等价路由,负载分担;

Route Strategy

等价路由,负载分担

Equal-cost multi-path routing – Wikipedia

Equal-cost multi-path routing, Equal-cost routing, ECMP, Equal-cost multipath, Equal-cost route

路由间有两条等价路由,即通过任意链路都能到达目的网络:

对于如上拓扑,配置如下静态路由,即能实现等价路由:

[RTB] ip route-static 192.168.1.0 24 10.0.12.1
[RTB] ip route-static 192.168.1.0 24 20.0.12.1

浮动路由,路由冗余

通过调整静态路由优先级(Preference),当主链路故障之后,Shutdown,然后低优先级的路由浮现。

对于如上拓扑,使用如下静态路由:

[RTB] ip route-static 192.168.1.0 255.255.255.0 10.0.12.1
[RTB] ip route-static 192.168.1.0 255.255.255.0 20.0.12.1 preference 100

路由递归,路由迭代

路由必须有下一跳才能指导转发,但是在路由生成时下一跳可能不是直连的,因此需要计算一个直连的下一跳和对应的出接口,这个计算的过程就叫做路由递归(或路由迭代)。

针对如上拓扑:
1)RTA 使用静态路由:[RTA] ip route-static 30.1.2.0 24 20.1.1.3
2)但是,RTA 去往 30.1.2.0/24 的下一跳 20.1.1.3 并非本地直连网络(常规情况下,应该使用 10.0.0.2 为下一跳);
3)所以,借助路由迭代特性,RTA 需要先确定去往 20.1.1.3 的路由;

通过该方式指定路由,也是有要求的:
1)当经过路由递归,如果发现路由表中没有去往 20.1.1.3 的路由,那么该静态路由不会生效,且不会出现在路由表中;
2)当前提成立时,即有到达 20.1.1.3 的路由,此时路由器能够利用这些信息计算出路由;
2)在实际发包时,下一跳依旧是 10.0.0.2 的 MAC 地址;

迭代路由的优点:
1)简化路由维护工作:如果在 RTC 后存在很多网络,那么常规情况下,在 RTA 上需要配置很多路由,下一跳则都为 RTB,这样才能到达在 RTC 后的网络。但是如果 RTB 发生变更,那我们需要更新所有的路由。如果我们使用 RTC 作为下一跳,则无需修改。在执行路由转发时,直接路由器会迭代计算得到。

路由汇总

对比缺省路由,我们也能够使用“大段路由”来包含所有网段,目的是减小路由表条目。

VLSM CIDR

通常不建议使用,可能出现输出数据包环路。比如 左端 与 右端 为连续网络:

192.168.7.0 \        / 192.168.1.0
192.168.8.0 ---------- 192.168.2.0
192.168.9.0 /        \ 192.168.3.0

问题描述:
如果两端都使用 192.169.0.0/16 作为路由(也只能使用该路由),对于 192.168.5.0 的数据包,将形成环路。

解决方案:
方案一、(1)在 RTA 中,使用正常的汇总路由;(2)在 RTB 中,使用汇总路由,但指向空设备:ip route-static 10.1.0.0 16 0 NULL0
方案二、使用更加精细的路由,以使汇总路由仅包含该网络内的子网,而不包含对端的子网。