在不考虑策略路由等其他情况下,对IP包进行路由时,通常按照如下顺序进行。
1、最长掩码匹配原则
2、管理距离/AD/路由协议优先级
3、路由花销/Cost/Metric
根据评论更新了一个有意思的例子:
明明是直连路由(地址,端口和链路都正常情况)但是却不通的情况。
--------------------------------------------------------------------------------------
直连路由在收到更优的最长掩码之后,接口地址将变得不在通信。此时虽然直连路由协议优先级0最优,但是被最长掩码原则抢先。这样情况可能会导致直连不通信。
IS-IS报文分析+原理详解+典型配置_fengxingzhe008的博客-CSDN博客的第2.3.章节提供了一种直连不可通信的一种场景。
--------------------------------------------------------------------------------------
接下来对路由选择顺序进行详解:
路由器在转发相应数据包在路由表中进行路由选择时,优先选择掩码最大的路由条目。
举例:目的IP=192.168.1.1的数据包,可匹配路由
192.168.1.0/30,
192.168.1.0/29,
192.168.1.0/28,
192.168.1.0/24。
此时优先选择192.168.1.0/30的路由。
而目的IP在相同掩码情况下只具有一个网络。因此在路由表中到目的地址的掩码路由的路由只有一条。在不考虑其他情况下可唯一确定该路由。
管理距离/AD/路由优先级越小越优先。通常路由器会运行多种路由协议(BGP,OSPF,ISIS等),同一条路由可以既从ISIS学习到,又从OSPF中学习到。此时可人为定义协议优先级进行路由优选。协议优先级越小,越被路由优选。
Huawei常用的路由协议优先级如下:
路由协议 | 协议优先级 |
直连路由 | 0 |
OSPF-IN | 10 |
ISIS-level1 | 15 |
ISIS-level2 | 18 |
静态Static | 60 |
RIP | 100 |
OSPF-OUT | 150 |
iBGP | 255 |
eBGP | 255 |
OSPF-IN表示AS内部传递路由;OSPF-OUT表示引入的外部路由;iBGP表示从iBGP邻居学习到路由,eBGP表示从eBGP邻居学习到路由,local表示aggress聚合路由
管理距离/AD/路由优先级只具有本地意义,只可控制本地路由表相关路由的选择。
修改命令,通常动态路由协议,还可进行路由策略选择
静态:
OSPF:
ISIS:
BGP:
CISCO常用的路由协议优先级如下:
路由协议 | 协议优先级 |
直连路由 | 0 |
Static静态路由 | 1 |
eBGP | 20 |
OSPF | 110 |
ISIS | 115 |
RIP | 120 |
eBGP | 200 |
修改命令如下:
OSPF:
distance ospf internal [1-255]
distance ospf external [1-255]
ISIS:
distance [1-255]
BGP:
distance bgp internal [1-255]
distance bgp external [1-255]
distance bgp local [1-255]
举例:路由表存在从OSPF学习到的192.168.1.0/30,从ISIS学习到的192.168.1.0/30。
此时根据华为和Cisco的规则都选择OSPF学习到的路由,将报文转发向该路由的下一跳。
如果以上两者完全一致,则比较路由开销。路由开销小的,进行优选。
说明:OSPF和ISIS都属于链路协议,实际路由的开销(cost/metric)要根据实际情况来选择。
如果开销一致,则取决于实际情况进行负载分担。(例如,BGP路由仍需满足其他条件才可进行负载。并且不同厂家的BGP负载要求并不一致)
路由比较:既然可以人为指定IGP协议的路由优先级,那么当IGP协议优先级相同时如果进行优选呢?
HUAWEI通常按如下逻辑进行优选:(优先级相同)OSPF>ISIS>静态>RIP>BGP
并且需要注意的是上述仅是一个大致的结果,详细的分类需要根据实际情况进行决定。
同时需要注意不同厂家间的区别~
UNR路由:User Network Route用户网络路由。这是一类特殊的路由,由非接口IP产生,不存在于任何接口上。通常用于在特定场景下为用户提供路由服务。
Huawei常用的UNR优先级如下:
Huawei的DHCP路由如下图所示:
//华为dhcp的缺省路由优先级为60,dhcpv6的缺省路由优先级为64。并且可通过dhcp client default-route preference <> 设定接收到DHCP路由的优先级。
关于DHCP的详细原理可查看:
DHCP-原理介绍+报文解析+配置示例---RFC2131。
关于DHCPv6的详细原理可查看:
DHCPv6-原理浅谈+报文示例+简易配置(SLAAC+DHCPv6+PD前缀代理)--RFC8415。
黑洞路由:blackhole Route,这是一类出接口为本地空接口的特殊静态路由。匹配到黑洞路由的流量将会被丢弃。
黑洞路由往往用于防止路由环路,以及BGP发布聚合路由等场景下。
HUAWEI实现上:
根据路由选择的原则,如果存在指向同一子网的普通静态路由和黑洞路由进行优选比较时(掩码,优先级等都一致的情况下),最终优选普通静态路由。
此处需要注意不同厂家间的区别!实际可能优选黑洞路由!