路由选择顺序详解 / 路由条目形成过程

注:本文为 “路由选择顺序 / 路由条目形成” 相关文章合辑。


路由选择顺序详解

fengxingzhe008 已于 2023-12-22 20:33:28 修改

在不考虑策略路由等其他情况下,对 IP 包进行路由时,通常按照如下顺序进行。

1、最长掩码匹配原则

2、管理距离 / AD / 路由协议优先级

3、路由花销 / Cost / Metric

-----------------------------------------------------
根据评论更新了一个例子:

明明是直连路由 (地址,端口和链路都正常情况) 但是却不通的情况。

直连路由在收到更优的最长掩码之后,接口地址将变得不通信。此时虽然直连路由协议优先级 0 最优,但是被最长掩码原则抢先。这样情况可能会导致直连不通信。

IS-IS 报文分析 + 原理详解 + 典型配置_fengxingzhe008 的博客 - CSDN 博客 的第 2.3. 章节(已引用到这里)提供了一种直连不可通信的一种场景。

-----------------------------------------------------

2.3. ISIS 不验证接口掩码的问题

影响 ISIS 邻居的因素(1.4. )

ISIS Hello (IIH) 报文主要用于建立和维护 ISIS 邻居,因此相应的根据 ISIS 报文 ** 相应字段 ** 便可判断影响 ISIS 邻居影响的因素。

ISIS Header 层:

1、PDU Type(实际上决定了使用哪种 Mac,甚至 PPP 无需用到 Mac)。Level-1 只建立 Level-1 邻居关系,Level-2 只建立 Level-2 邻居关系。而 Level-1-2 路由器实际上是既发送 Level-1 的报文又发送 Level-2 的报文。并不单纯是 OSPF 的 ABR 概念,ISIS 的路由器可以全部是 Level-1-2。

(ISIS 发送两种报文分别建立邻居,OSPF 则是一种报文)。实际上,可以将 Level 理解成两种 ISIS 协议的叠加,只是 ISIS 默认会将 Level-1 引入 Level-2 实现导通而已。

2、ID Length。集成 System ID 长度默认值,一般也不支持更改。

3、Maximum Area Address。默认为 3,一般也不支持更改。

IIH 层

4、SystemID。相当于 OSPF 的 Router ID,用于唯一标识。

5、Area address (TLV)。level-1 要求必须一致,多个 NET 地址有一个相同即可。Level-2 不进行检查。

6、IP Interface address (TLV)。一般要求同网段即可,与 OSPF 不同的是,ISIS 不包含掩码因此掩码可不相同。
(例如:10.1.1.1/24 和 10.1.1.2/30 可以判定对方的主机地址在自己的网段中,因此可以建立邻居。但是这样会带来些许问题。)

对于 PtoP 链路,甚至可以强制忽略对端的 IP 地址。

在这里插入图片描述

7、Multi Topology (TLV)。一般要求相同。

其他影响因素:

8、接口 MTU。接口丢弃大于自己 MTU 的报文。

在这里插入图片描述

接口 MTU 默认 1500。值得注意的是 display isis interface 显示的却是 1497。因为 LLC 层占用了 3 字节。

在这里插入图片描述

9、接口认证。由于 ISIS 是 TLV 格式的,会忽略自己无法识别的 TLV。认证功能的实现是通过携带额外的 TLV 来实现的。

在第 1.4 章节中(上面就是 1.4),我们发现 IIH(ISIS Hello) 中携带的 TLV=IP Interface address 只有接口的 IP 地址,也即接口的掩码不影响 IS-IS 邻居建立。只需要邻居的接口主机位所包含于自己的网段中即可。
同时在广播网中的实节点在 TLV=IP Internal Reachabilit 中描述了自己叶子路由;伪节点描述的是所连接的实节点,度量 = 0)

在这里插入图片描述

最终效果是路由器可能出现多条主机位相同而掩码不同的 ISIS 路由,此时根据–掩码最长匹配原则可能导致网络不通的情况。

在这里插入图片描述

根据 ISIS 的 LSP 报文 AR12 上会根据每台路由器的叶子路由计算出多条路由。AR12 向 AR13 通信 10.1.1.3 时,根据最长掩码会将报文发往 AR11 (10.1.1.3 被 10.1.1.0/30 匹配到。)。AR11 发现为自己的广播地址,将其丢弃。

封装包 MAC 为下一跳的 MAC

此时会出现一个比较有意思的情况,没有建立 ISIS 邻居时 AR12 和 AR13 的接口地址可以通,而建立了 ISIS 之后反而因为最长掩码不通了。

在这里插入图片描述
-----------------------------------------------------

接下来对路由选择顺序进行详解:

1、最长掩码匹配原则。

路由器在转发相应数据包在路由表中进行路由选择时,优先选择掩码最大的路由条目。

举例:目的 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 在相同掩码情况下只具有一个网络。因此在路由表中到目的地址的掩码路由的路由只有一条。在不考虑其他情况下可唯一确定该路由。

2、管理距离 / AD / 路由优先级

管理距离 / AD / 路由优先级越小越优先。通常路由器会运行多种路由协议 (BGP,OSPF,ISIS 等),同一条路由可以既从 ISIS 学习到,又从 OSPF 中学习到。此时可人为定义协议优先级进行路由优选。协议优先级越小,越被路由优选。

Huawei 常用的路由协议优先级:

路由协议协议优先级
直连路由0
OSPF-IN10
ISIS-level115
ISIS-level218
静态 Static60
RIP100
OSPF-OUT150
iBGP255
eBGP255

OSPF-IN 表示 AS 内部传递路由;OSPF-OUT 表示引入的外部路由;iBGP 表示从 iBGP 邻居学习到路由,eBGP 表示从 eBGP 邻居学习到路由,local 通常表示 aggress 聚合路由 (255 优先级)。

此外,bgp 的network命令或者import-route命令引入的路由的优先级直接继承被引用路由的优先级。

管理距离 / AD / 路由优先级只具有本地意义,只可控制本地路由表相关路由的选择。

修改命令,通常动态路由协议,还可进行路由策略选择

静态:

img

OSPF:

img

ISIS:

img

BGP:

img

针对 BGP 而言,此处仅介绍了 ipv4 unicast 地址族下的修改命令。而针对 EVPN/mulicast/VPN-instance/VPNv4 等地址族下的路由优先级还需针对实际情况进行考虑。

CISCO 常用的路由协议优先级:

路由协议协议优先级
直连路由0
Static 静态路由1
eBGP20
OSPF110
ISIS115
RIP120
eBGP200

修改命令如下:

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]

需要注意的是 CISCO 认为 255 的路由协议优先级为非信任来源学习而来,因此不认为其为有效路由。

举例:路由表存在从 OSPF 学习到的 192.168.1.0/30,从 ISIS 学习到的 192.168.1.0/30。

此时根据华为和 Cisco 的规则都选择 OSPF 学习到的路由,将报文转发向该路由的下一跳。

3、路由花销 / Cost/Metric

如果以上两者完全一致,则比较路由开销。路由开销小的,进行优选。

img

说明:OSPF 和 ISIS 都属于链路协议,实际路由的开销(cost/metric)要根据实际情况来选择。

如果开销一致,则取决于实际情况进行负载分担。(例如,BGP 路由仍需满足其他条件才可进行负载。并且不同厂家的 BGP 负载要求并不一致)

4、其他细节

* 路由比较 *:既然可以人为指定 IGP 协议的路由优先级,那么当 IGP 协议优先级相同时如果进行优选呢?

HUAWEI 通常按如下逻辑进行优选:(优先级相同)OSPF>ISIS > 静态 > RIP>BGP

并且需要注意的是上述仅是一个大致的结果,详细的分类需要根据实际情况进行决定。

同时需要注意不同厂家间的区别~

UNR 路由User Network Route 用户网络路由。这是一类特殊的路由,由非接口 IP 产生,不存在于任何接口上。通常用于在特定场景下为用户提供路由服务。

Huawei 常用的 UNR 优先级如下:

img
Huawei 的 DHCP 路由如下图所示:

img

// 华为 dhcp 的缺省路由优先级为 60,dhcpv6 的缺省路由优先级为 64。并且可通过 dhcp client default-route preference <> 设定接收到 DHCP 路由的优先级。

黑洞路由:blackhole Route,这是一类出接口为本地空接口的特殊静态路由。匹配到黑洞路由的流量将会被丢弃。

黑洞路由往往用于防止路由环路,以及 BGP 发布聚合路由等场景下。

HUAWEI 实现上:

根据路由选择的原则,如果存在指向同一子网的普通静态路由和黑洞路由进行优选比较时(掩码,优先级等都一致的情况下),最终优选普通静态路由

此处需要注意不同厂家间的区别!实际可能优选黑洞路由!


华为路由条目的形成过程

鹿鸣天涯于 2022-10-09 11:44:42 发布

1. 路由的类型可分为三类

1.1 直连路由:通过链路层协议发现的路由 (本总结以直连路由进行说明)

1.2 静态路由表:通过系统管理员手工添加设置好固定的路由表称之为静态(static)路由

1.3 动态路由: 通过动态路由协议发现的路由

img

2. 路由相关信息解释

2.1. 未经配置的路由器的初始路由表信息及解释

[Router1] display ip routing-table
Route Flags: R - relay, D - download to fib

R:表示该路由是迭代路由 D:表示该路由下发到 FIB 表

-------------------------------
Routing Tables: Public

Public: 表示此路由表是公网路由表,如果是私网路由表,则显示私网的名称,如 Routing Tables: ABC

Destinations : 4 Routes : 4

显示目的网络 / 主机的总数 显示路由的总数

Destination/Mask      Proto    Pre    Cost    Flags NextHop  Interface

目的地址 路由协议 优先级 路由开销 路由标记 下一跳地址 出接口

127.0.0.0/8          Direct    0     0      D     127.0.0.1    InLoopBack0

(本地的回环网段:127.0.0.0 这个网段内所有地址都指向自己机器 127.0.0.1)

127.0.0.1/32       Direct    0  0      D     127.0.0.1    InLoopBack0

(本地的回环地址)

127.255.255.255/32      Direct    0     0      D    127.0.0.1    InLoopBack0

(本地广播路由:当接收到 127.255.255.255 广播数据包时,直接发给自己 127.0.0.1 )

255.255.255.255/32     Direct    0     0      D   127.0.0.1    InLoopBack0

(绝对广播路由:当接收到 255.255.255.255 广播数据包时,直接发给自己 127.0.0.1 )

注: 本地的回环地址:就是在主机上发送给 127 开头的 IP 地址的数据包,会自发自收,传不出去,外部设备也无法通过回环地址访问到本机。其实就是丢掉,不转发!

2.2 当对 AR1 路由器的 GE0/0/0 接口配 IP 地址后:192.168.1.254/24 ,路由表中会形成直连路由相关条目

如下:

[Router1] display ip routing-table

Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 7 Routes : 7

Destination/Mask      Proto    Pre    Cost   Flags    NextHop      Interface

127.0.0.0/8 Direct     0     0    D       127.0.0.1        InLoopBack0
127.0.0.1/32       Direct   0     0    D       127.0.0.1    InLoopBack0
127.255.255.255/32    Direct    0     0    D       127.0.0.1    InLoopBack0
192.168.1.0/24     Direct    0     0    D    192.168.1.254 GigabitEthernet0/0/0

(生成 192.168.1.0 网段,指明本网段出接口就是 192.168.1.254)

192.168.1.254/32   Direct    0     0    D      127.0.0.1      GigabitEthernet0/0/0

(IP 地址范围通过掩码 32 位,锁定 IP 地址 192.168.1.254 本身)

192.168.1.255/32   Direct    0     0    D       127.0.0.1      GigabitEthernet0/0/0

(广播路由:当接收到 192.168.1.255 广播数据包时,直接发给自己 127.0.0.1)

255.255.255.255/32   Direct    0     0   D       127.0.0.1       InLoopBack0

注:

*/32 是网络掩码的位数 : 255.255.255.255
*/24 是网络掩码的位数 : 255.255.255.0
因此:
192.168.1.254/32 : IP 地址范围 就是一个 192.168.0.254
192.168.1.1/24 : IP 地址范围 从 192.168.1.1 到 192.168.1.255

3. 路由表中包含了下列关键项:

Destination: 表示此路由的目的地址。用来标识 IP 包的目的地址或目的网络。

Mask: 表示此目的地址的子网掩码长度。与目的地址一起来标识目的主机或路由器所在的网段的地址。

将目的地址和子网掩码 “逻辑与” 后可得到目的主机或路由器所在网段的地址。例如:目的地址为 10.1.1.1,掩码为 255.255.255.0 的主机或路由器所在网段的地址为 10.1.1.0。

掩码由若干个连续 “1” 构成,既可以用点分十进制表示,也可以用掩码中连续 “1” 的个数来表示。例如掩码 255.255.255.0 长度为 24,即可以表示为 24。

Proto: 表示学习此路由的路由协议

Direct: 表示直连路由

Static: 表示静态路由

EBGP: 表示 EBGP 路由

IBGP: 表示 IBGP 路由

ISIS: 表示 IS-IS 路由

OSPF: 表示 OSPF 路由

RIP: 表示 RIP 路由

UNR: 表示用户网络路由(User Network Routes)

说明:

S5700LI、S5700S-LI 和 S2750 仅支持direct、static、unr路由协议。

S5700SI 仅支持direct、static、rip、unr路由协议。

Pre: 表示此路由的路由协议优先级。针对同一目的地,可能存在不同下一跳、出接口等多条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级高(数值小)者将成为当前的最优路由。各协议路由优先级请参见路由协议的优先级。

Cost: 路由开销。当到达同一目的地的多条路由具有相同的路由优先级时,路由开销最小的将成为当前的最优路由。 用于不同路由协议间路由优先级的比较,Cost 用于同一种路由协议内部不同路由的优先级的比较。

NextHop: 表示此路由的下一跳地址。指明数据转发的下一个设备。

Flags: 显示路由标记,即路由表头的 Route Flags

NextHop: 表示此路由的下一跳地址。指明数据转发的下一个设备。

Interface: 表示此路由的出接口。指明数据将从本地路由器哪个接口转发出去。


via:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值