09 IP 路由基础
IP路由的基础概念,包括路由表、路由协议、路由选择等。
当路由器(或者其他三层设备)收到一个 IP 数据包时,会查看数据包的 IP 头部中的目标 IP 地址,并在路由表中查找,在匹配到最优的路由后,将数据包扔给该路由器所指出的接口或下一跳。
路由表
查看路由表:
[HUAWEI]display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 11 Routes : 11
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 Static 60 0 RD 192.168.88.1 Vlanif88
10.10.10.0/24 Direct 0 0 D 10.10.10.1 Vlanif10
10.10.10.1/32 Direct 0 0 D 127.0.0.1 Vlanif10
10.10.20.0/24 Direct 0 0 D 10.10.20.1 Vlanif20
10.10.20.1/32 Direct 0 0 D 127.0.0.1 Vlanif20
10.10.30.0/24 Direct 0 0 D 10.10.30.1 Vlanif30
10.10.30.1/32 Direct 0 0 D 127.0.0.1 Vlanif30
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| 路由表字段 | 备注 |
|---|---|
| Destination | 目标,用来标识 IP 包的目标地址或目标网络 |
| Mask | 掩码,选择最佳路由的重要判断依据(最长匹配原则) |
| NextHop | 下一跳,指明 IP 包所经过的下一个路由器的接口地址 |
| Interface | 出接口,指明 IP 包将从该路由器的哪个接口转发出去 |
| Protocol | 协议,路由的来源、学习方式 |
| Preference | 优先级,比较不同路由来源到达相同目标网络的优先级,越低越优先 |
| Cost | 度量值,比较相同路由来源到达相同目标网络的不同路径的优先级,越低越优先 |
路由优先级
图中展示了同一个目的网段(例如 10.1.1.0/30)可能同时被不同路由协议/来源学习到(OSPF、RIP、Static 等)。当同一个前缀出现多条不同来源的路由时,会优先比较路由表里的 Pre/Preference(管理距离/协议优先级),数值越小越优先。
因此,当 RTA 同时从 OSPF 和 RIP 学到 10.1.1.0/30 时,会优先选择 OSPF(Pre=10),而不是 RIP(Pre=100);也就是说:协议优先级(Pre)决定了不同协议之间谁的路由更“可信/更优先”进入路由表。
路由度量
这张图说明的是 Cost(度量值)的作用:当路由来源相同(例如都是 OSPF,Pre 也相同)但存在多条到达同一目的网段的路径时,路由器会选择 Cost 更小的路径作为最优路由。
以图中到达 10.1.1.0/30 的两条 OSPF 路径为例:
- 上方路径的链路代价分别为
10和10,端到端总代价10+10=20。 - 下方路径的链路代价分别为
1和1,端到端总代价1+1=2。
因此 RTA 的路由表最终选择下方路径,并在输出中体现为 Proto=OSPF、Cost=2,下一跳为下方链路对应的 30.1.1.2。
等价路由
ECMP(Equal Cost Multi-Path),对于同一个路由来源,当到达同一个目标网络有几条相同度量值的路由时,这些路由都会被加入到路由表中,数据包会在这几个链路上进行负载分担
最长匹配
“最长匹配”(Longest Prefix Match)的本质:把目的 IP 和路由前缀都当成二进制位串,从高位开始逐位比较,能匹配的前缀位数(/n 里的 n)越多越优先。
目的地址 9.1.2.1 的前两段(前 16 位)二进制是:
9.1.2.1 = 00001001.00000001.00000010.00000001两条候选路由前缀分别是:
9.0.0.0/8 = 00001001.xxxxxxxx.xxxxxxxx.xxxxxxxx
9.1.0.0/16 = 00001001.00000001.xxxxxxxx.xxxxxxxx可以看到:
9.0.0.0/8只要求前 8 位匹配:00001001(也就是第一个字节为 9),它确实匹配9.1.2.1。9.1.0.0/16要求前 16 位匹配:00001001.00000001(也就是前两个字节为 9.1),它同样匹配9.1.2.1,而且匹配位数更多。
因此在同时命中 9.0.0.0/8 与 9.1.0.0/16 时,会选择 9.1.0.0/16(更具体的前缀)。
静态路由
静态路由是由管理员手动配置和维护的路由。静态路由配置简单,被广泛应用于网络中。静态路由还可以实现负载均衡和路由备份。
静态路由概述:
- 配置简单,开销小;
- 通过手动配置进行添加和维护;
- 无法根据拓扑的变化进行动态的响应;
- 适用于组网规模较小的场景,如果网络规模较大,则配置及维护的成本就会很高;
- 在大型的网络中,往往采用动态、静态路由结合的方式进行部署。
静态路由配置
负载分担
静态路由支持到达同一目标网络的等价负载分担:
路由备份-浮动静态路由
- 利用优先级的特性,配置浮动路由
- 在主路由失效的情况下,浮动路由会加入到路由表并承担数据转发业务
缺省路由
一种特殊的路由,能够匹配所有目标网络
- 可以通过静态路由配置,也可以通过动态路由协议发布
- 在路由表中,以到网络 0.0.0.0/0 的形式存在
- 通常用于末梢网络(如:家庭、企业)向核心网络发送数据时的默认出口
配置命令: ip route-static 0.0.0.0 0.0.0.0 <下一跳地址>/<出接口> [优先级]
Loopback接口
回环口,逻辑的、虚拟的接口
| 命令 | 备注 |
|---|---|
| interface loopback 编号 | 创建或配置一个回环口,创建后,默认 up |
作用:
- 模拟直连网段,可用于测试
- 设备管理(稳定)
- 供其他协议使用(OSPF、BGP、MPLS 等)
- SNMP Traps 消息的源地址
- 其他用途(用途十分广泛)
动态路由
路由器使用路由协议从其他路由器获取路由信息,当网络拓扑发生变化时,能够自动更新路由表。
路由协议概述:
- 路由器之间交互信息的一种语言
- 共享路由信息
- 维护路由表、提供最佳转发路线
路由协议总览:
路由协议分类(作用范围 ):
| 类型 | 备注 |
|---|---|
| IGP(Interior Gateway Protocol)内部网关协议 | 用于一个 AS 内部交换路由信息(RIP、OSPF、IS-IS) |
| EGP(Exterior Gateway Protocol)外部网关协议 | 用于多个 AS 之间交换路由信息(BGP) |
| AS(Autonomous System)自治系统 | 处于单个管理机制下的网络(如:企业、电信、移动、联通) |
路由协议分类(协议算法 ):
| 类型 | 备注 |
|---|---|
| DV(Distance-Vector)距离矢量 | 基于距离矢量算法,路由器并不了解网络拓扑结构,类似路牌,道听途说(如:RIP、EIGRP) |
| LS(Link-State)链路状态 | 基于 SPF(Shortest Path First,最短路径优先)算法,路由器了解完整的网络拓扑结构,类似地图(如:OSPF、IS-IS) |
路由协议分类(根据发送的更新是否携带掩码 ):
| 类型 | 备注 |
|---|---|
| 有类别(Classful) | 发送的更新不携带掩码(如:RIP v1、IGRP) |
| 无类别(Classless) | 发送的更新携带掩码(如:RIP v2、OSPF、IS-IS、EIGRP、BGP) |
路由协议分类(根据业务应用 ):
| 类型 | 备注 |
|---|---|
| 单播路由协议 | 用于传输单播路由信息(如:RIP、OSPF、IS-IS、BGP) |
| 组播路由协议 | 用于传输组播路由信息(如:PIM-SM、PIM-DM、DVMRP) |
路由协议操作规则:
- 协议是在接口上运行的
- 只能学习和发布相同协议已知的路由信息
- 如果不同的路由协议需要交换路由信息,需要进行注入(import)
路由器收敛:
- 当所有路由表包含相同网络可达性信息
- 网络(路由)进入一个稳定状态
- 网络在达到收敛前无法完全正常工作
衡量动态路由协议的一些性能指标:
| 指标 | 备注 |
|---|---|
| 正确性 | 能够正确找到最优的路由,且无自环。 |
| 快收敛 | 当拓扑结构发生变化之后,能够迅速作出相应的路由改变。 |
| 低开销 | 协议自身的开销(内存、CPU、网络带宽)最小。 |
| 安全性 | 协议自身不易受攻击,有安全机制。 |
| 普适性 | 适应各种拓扑结构和各种规模的网络。 |
缺省路由
一种特殊的路由,能够匹配所有目标网络
- 可以通过静态路由配置,也可以通过动态路由协议发布
- 在路由表中,以到网络 0.0.0.0/0 的形式存在
- 通常用于末梢网络(如:家庭、企业)向核心网络发送数据时的默认出口
配置命令: ip route-static 0.0.0.0 0.0.0.0 <下一跳地址>/<出接口> [优先级]
Loopback接口
回环口,逻辑的、虚拟的接口
| 命令 | 备注 |
|---|---|
| interface loopback 编号 | 创建或配置一个回环口,创建后,默认 up |
作用:
- 模拟直连网段,可用于测试
- 设备管理(稳定)
- 供其他协议使用(OSPF、BGP、MPLS 等)
- SNMP Traps 消息的源地址
- 其他用途(用途十分广泛)
动态路由
路由器使用路由协议从其他路由器获取路由信息,当网络拓扑发生变化时,能够自动更新路由表。
路由协议概述:
- 路由器之间交互信息的一种语言
- 共享路由信息
- 维护路由表、提供最佳转发路线
路由协议总览:
路由协议分类(作用范围 ):
| 类型 | 备注 |
|---|---|
| IGP(Interior Gateway Protocol)内部网关协议 | 用于一个 AS 内部交换路由信息(RIP、OSPF、IS-IS) |
| EGP(Exterior Gateway Protocol)外部网关协议 | 用于多个 AS 之间交换路由信息(BGP) |
| AS(Autonomous System)自治系统 | 处于单个管理机制下的网络(如:企业、电信、移动、联通) |
路由协议分类(协议算法 ):
| 类型 | 备注 |
|---|---|
| DV(Distance-Vector)距离矢量 | 基于距离矢量算法,路由器并不了解网络拓扑结构,类似路牌,道听途说(如:RIP、EIGRP) |
| LS(Link-State)链路状态 | 基于 SPF(Shortest Path First,最短路径优先)算法,路由器了解完整的网络拓扑结构,类似地图(如:OSPF、IS-IS) |
路由协议分类(根据发送的更新是否携带掩码 ):
| 类型 | 备注 |
|---|---|
| 有类别(Classful) | 发送的更新不携带掩码(如:RIP v1、IGRP) |
| 无类别(Classless) | 发送的更新携带掩码(如:RIP v2、OSPF、IS-IS、EIGRP、BGP) |
路由协议分类(根据业务应用 ):
| 类型 | 备注 |
|---|---|
| 单播路由协议 | 用于传输单播路由信息(如:RIP、OSPF、IS-IS、BGP) |
| 组播路由协议 | 用于传输组播路由信息(如:PIM-SM、PIM-DM、DVMRP) |
路由协议操作规则:
- 协议是在接口上运行的
- 只能学习和发布相同协议已知的路由信息
- 如果不同的路由协议需要交换路由信息,需要进行注入(import)
路由器收敛:
- 当所有路由表包含相同网络可达性信息
- 网络(路由)进入一个稳定状态
- 网络在达到收敛前无法完全正常工作
衡量动态路由协议的一些性能指标:
| 指标 | 备注 |
|---|---|
| 正确性 | 能够正确找到最优的路由,且无自环。 |
| 快收敛 | 当拓扑结构发生变化之后,能够迅速作出相应的路由改变。 |
| 低开销 | 协议自身的开销(内存、CPU、网络带宽)最小。 |
| 安全性 | 协议自身不易受攻击,有安全机制。 |
| 普适性 | 适应各种拓扑结构和各种规模的网络。 |
RIP
RIP(Routing Information Protocol,路由信息协议):
- 距离矢量路由协议,属于 IGP 协议;
- 适用于中小型网络,有 RIPv1 和 RIPv2 两个版本;
- 基于 UDP,目标端口号 520;
- 周期性更新;
- 支持水平分割、毒性逆转和触发更新等防环特性。
工作原理
- 路由器运行 RIP 后,会首先发送路由更新请求,收到请求的路由器会发送自己的 RIP 路由进行响应
- 网络稳定后,路由器会周期性(30秒)发送路由更新信息
RIP 度量
- RIP 使用跳数(Hop)作为度量值来衡量到达目的网络的距离。
- 缺省情况下,直连网络的路由跳数为 0,当路由器发送路由更新时,会把度量值加 1。
- RIP 规定超过 15 跳为网络不可达。
RIP V1 VS v2
| 对比项 | RIPv1 | RIPv2 |
|---|---|---|
| 路由类型 | 有类别路由协议 | 无类别路由协议 |
| VLSM/CIDR | 不支持 VLSM 和 CIDR | 支持 VLSM,支持路由聚合与 CIDR |
| 报文发送方式 | 广播 | 广播或组播(224.0.0.9) |
| 认证 | 不支持认证 | 支持明文认证和 MD5 密文认证 |
基本配置
[HUAWEI]rip
[HUAWEI-rip]version 2
[HUAWEI-rip]network 10.0.0.0
[HUAWEI-rip]network 12.0.0.0
[HUAWEI-rip]network 13.0.0.0| 命令 | 备注 |
|---|---|
| rip 1 | 开启 RIP 进程,进程缺省为 1 |
| version 2 | 开启 RIPv2 |
| network 10.0.0.0 | 宣告网络,即指定运行 RIP 的接口,只需要输入接口的主类网络地址即可;只有处于此网络中的接口,才能进行 RIP 报文的接收和发送 |
| rip metricin 5 | 在接收路由时增加度量值 |
| rip metricout 5 | 在发送路由时修改度量值 |
| rip split-horizon | 开启水平分割,默认开启 |
| rip poison-reverse | 开启毒性逆转,默认关闭 |
| undo rip input | 禁止接收 RIP 数据包 |
| undo rip output | 禁止发送 RIP 数据包 |
| silent-interface g0/0/0 | 配置被动接口,只收不发 |
| display rip | 验证 RIP 信息 |
| display rip int g0/0/0 verbose | 验证 RIP 接口相信信息 |