3 题型 - 路由协议
408 学习笔记:3 题型 - 路由协议。保留原有知识内容、公式与图示;有对应原件时提供查看和下载入口。
本页目录
描述:路由协议题主要考查 RIP 的距离向量更新与慢收敛、OSPF 的链路代价与最短路径、BGP 的会话和 AS_PATH 选择,以及路由结果与 TTL、默认网关、MAC/IP 地址变化的综合分析。
3.1 三类路由协议总览
3.1.1 自治系统与协议范围
- 自治系统 AS 是由同一管理机构控制、采用一致路由策略的一组网络和路由器。
- AS 内部使用内部网关协议 IGP,常见协议有 RIP、OSPF。
- AS 之间使用外部网关协议 EGP,当前主要使用 BGP-4。
| 协议 | 使用范围 | 工作层次与封装 | 依据 | 关键特点 |
|---|---|---|---|---|
| RIP | AS 内部 | 应用层,UDP 端口 520 | 距离向量、跳数 | 简单;最大有效距离为 15;慢收敛 |
| OSPF | AS 内部 | 网络层,直接封装在 IP 中;IPv4 协议号 89 | 链路状态、链路代价 | 收敛快;适合大型网络;支持等价负载均衡 |
| BGP | AS 之间及 AS 内传播外部路由 | 应用层,TCP 端口 179 | 路径向量、策略与路径属性 | eBGP 跨 AS,iBGP 位于同一 AS |
3.1.2 RIP 与 OSPF 对比
| 比较项 | RIP | OSPF |
|---|---|---|
| 掌握的信息 | 从邻居获得距离向量 | 获得区域内链路状态信息 |
| 路径度量 | 经过路由器的跳数 | 链路代价之和 |
| 算法思想 | 距离向量 | 最短路径算法 |
| 网络规模 | 距离 16 表示不可达,适合小型网络 | 不以 15 跳限制规模,适合较大网络 |
| 收敛特性 | 可能出现“坏消息传播慢”和路由环路 | 更新效率高、收敛快 |
3.2 RIP 距离向量更新
3.2.1 收到邻居通告后的处理
设路由器 X 收到邻居 Y 的条目:
<目的网络 N, 距离 d, 下一跳 Z>
X 先把它改写为:
<目的网络 N, 距离 min(d + 1, 16), 下一跳 Y>
然后与自己的路由表比较:
- 原表中没有 N:直接加入新条目。
- 原表中已有 N,且下一跳不同:只有新距离更小时才更新。
- 原表中已有 N,且下一跳相同:不比较新旧距离大小,直接采用邻居发来的最新结果。
第三条尤其容易漏掉。相同下一跳说明原路由本来就依赖该邻居;即使邻居报告的距离变大,也必须同步拓扑变化。
3.2.2 距离上限与慢收敛
- RIP 距离等于跳数,距离 1 表示目的网络与本路由器直接相连。
- 最大有效距离是 15,距离 16 表示不可达。
- 路由器启动后立即构造并交换初始距离向量,之后通常每 30 s 交换一次。
- 当可达网络突然失效时,旧信息可能继续在邻居间传播,产生“坏消息传播慢”甚至计数到无穷问题。
3.3 OSPF 链路状态路由
OSPF 根据链路带宽计算代价,题目通常会给出具体公式。若规定:
$$ \text{Cost}=\frac{100\ \mathrm{Mb/s}}{\text{链路带宽}} $$
并规定结果小于 1 仍记为 1、大于 1 且有小数时舍去小数,则:
| 链路带宽 | 计算 | 代价 |
|---|---|---|
| 100 Mb/s | $100/100$ | 1 |
| 1 Gb/s | $100/1000<1$ | 1 |
| 1.544 Mb/s | $100/1.544\approx64.76$ | 64 |
OSPF 选择链路代价总和最小的路径。若多条路径代价相同,可以形成等价路由并进行负载均衡。
在同一区域的链路状态数据库一致且协议已经收敛后,各路由器基于一致的区域拓扑运行 SPF,所得最短路径树不会含环。多区域 OSPF 的普通路由器并不保存整个自治系统所有其他区域的完整详细拓扑。拓扑刚发生变化、链路状态信息尚未完全洪泛时,不同路由器的数据库还可能短暂不一致,因此不能脱离“同一区域数据库一致并已收敛”这一前提,绝对地说 OSPF 在任何瞬间都不会出现转发环路。
3.4 BGP 会话、报文与选路
3.4.1 四种 BGP-4 报文
| 报文 | 作用 |
|---|---|
| OPEN | 与相邻 BGP 发言人建立关系并初始化通信 |
| KEEPALIVE | 周期性证实邻站的连通性并维持会话 |
| UPDATE | 通告可达路由并列出需要撤销的路由 |
| NOTIFICATION | 报告检测到的差错并关闭会话 |
3.4.2 eBGP 与 iBGP
- eBGP 是不同 AS 的两个 BGP 对等端之间的连接。
- iBGP 是同一 AS 内两个 BGP 对等端之间的连接。
- 两者使用相同报文格式和属性类型,均通过 TCP 可靠传输。
- 从 eBGP 对等端收到的路由,可以通过 iBGP 通告给同一 AS 内的对等端。
- 从 iBGP 对等端收到的路由,不能再通告给同一 AS 内的其他 iBGP 对等端;这也是传统 iBGP 需要全互连或路由反射器的原因。
3.4.3 题目中的常见选路顺序
当题目说明“无策略约束”且只给出 AS_PATH 和内部拓扑时,通常先比较 AS_PATH 长度,再在外部路径同样优先时执行“热土豆”原则,选择 AS 内部代价更小、离当前路由器更近的出口。
3.5 历年真题
3.5.1 2016 年:RIP 坏消息传播慢
R1、R2、R3 已使用 RIP 收敛。把网络 201.1.2.0/25 记为 N。R3 检测到 N 不可达,并向 R2 通告一次新的距离向量,求 R2 更新后到 N 的距离。
分析:
- R3 把到 N 的距离改为 16。
- R2 原来到 N 的下一跳是 R3,因此收到 R3 的新通告后必须接受,暂时得到距离 16。
- R1 还没有收到坏消息,仍认为可经 R3 到达 N,向 R2 通告的旧距离仍为 2。
- R2 比较来自 R1 与 R3 的结果,经 R1 的新距离为 $2+1=3$,比 16 小,因此更新为 3。
这不是 N 真的恢复可达,而是 RIP 慢收敛造成的错误路由信息。
答案:B,3。
3.5.2 2021 年:距离向量计算
路由器 E 到邻居 A、B、C、D 的直接链路距离分别为 8、10、12、6。四个邻居通告的距离向量为:
| 目的网络 | A | B | C | D |
|---|---|---|---|---|
| Net1 | 1 | 23 | 20 | 22 |
| Net2 | 12 | 35 | 30 | 28 |
| Net3 | 24 | 18 | 16 | 36 |
| Net4 | 36 | 30 | 8 | 24 |
E 经每个邻居到达目的网络的总距离为“E 到邻居的距离 + 邻居通告距离”:
| 目的网络 | 经 A | 经 B | 经 C | 经 D | 最小值 |
|---|---|---|---|---|---|
| Net1 | $8+1=9$ | $10+23=33$ | $12+20=32$ | $6+22=28$ | 9 |
| Net2 | $8+12=20$ | $10+35=45$ | $12+30=42$ | $6+28=34$ | 20 |
| Net3 | $8+24=32$ | $10+18=28$ | $12+16=28$ | $6+36=42$ | 28 |
| Net4 | $8+36=44$ | $10+30=40$ | $12+8=20$ | $6+24=30$ | 20 |
更新后到 Net1-Net4 的距离依次为:
9, 20, 28, 20
答案:D。
3.5.3 2024 年:RIP、OSPF 与 BGP 综合题
题设包含 AS1-AS4。AS1 内部使用 RIP;AS3 内任意两台主机通信可能经过超过 20 个路由器;AS4 规模较大。外部目的网络为 136.5.16.0/20,AS1 的两个内部网络为 210.2.3.0/24 和 210.2.4.0/24。
(1)AS4 的内部网关协议
RIP 一条有效路径最多经过 15 个路由器,距离 16 即不可达;OSPF 不受这一跳数上限限制,且适合大型网络。
答案:OSPF。
(2)经过 15 个路由器时的最小 TTL
每经过一个路由器,TTL 先减 1;若结果为 0,路由器丢弃分组。要让第 15 个路由器仍能转发:
$$ TTL_{\min}=15+1=16 $$
答案:16。
(3)RIP 获得两个内部网络正确路由的时间
路由器启动后立即构建并交换初始距离向量,以后每隔 30 s 交换一次。初始交换可把直连网络传播 1 段,此后每轮再向外传播 1 段。必须分别追踪两个网络,原讲义图上的绿色时间标注把二者顺序写反了:
- 对
210.2.3.0/24(N1),它直连 R14;图中其他路由器距 R14 最远为 2 段(例如R14 -> R11 -> R12或R14 -> R15 -> R13/R16)。$t=0$ 到达相邻路由器,$t=30\ \mathrm{s}$ 到达距离为 2 的路由器,因此全体至少需要 30 s。 - 对
210.2.4.0/24(N2),它直连 R16;最远的 R11 距 R16 为 3 段(R16 -> R13 -> R12 -> R11,或R16 -> R15 -> R14 -> R11)。$t=0$ 传播第 1 段,$t=30\ \mathrm{s}$ 传播第 2 段,$t=60\ \mathrm{s}$ 传播第 3 段,因此全体至少需要 60 s。
答案:210.2.3.0/24 至少 30 s;210.2.4.0/24 至少 60 s。 公开的 2024 真题版本只询问 210.2.4.0/24,对应答案为 $2\times30=60\ \mathrm{s}$。
(4)BGP 会话、报文与下一跳
- R44 属于 AS4,R13 属于 AS1,两者跨 AS 建立 eBGP 会话。
- 可达性信息通过 UPDATE 报文通告。
- R13 再通过 iBGP 把外部路由通告给同一 AS 内的 R14、R15。
- 按题图给出的结果,R15 到
136.5.16.0/20的下一跳为 R13。
(5)AS_PATH 与热土豆选择
R14、R15 收到三条外部可达信息:
| 通告者 | AS_PATH | 长度 |
|---|---|---|
| R11 | AS2 AS8 AS19 |
3 |
| R12 | AS3 AS7 AS11 AS19 |
4 |
| R13 | AS4 AS10 AS19 |
3 |
先排除 AS_PATH 更长的 R12 路由。R11 与 R13 的 AS_PATH 长度相同,再按 AS1 内部 RIP 代价选择离自己更近的出口:
- R14 离 R11 更近,下一跳选择 R11。
- R15 离 R13 更近,下一跳选择 R13。
3.6 模拟题一:同一拓扑下比较 RIP、OSPF 与静态路由
3.6.1 拓扑条件
| 节点或链路 | 地址/带宽 |
|---|---|
| 主机 A | 192.168.16.1/25 |
| A 所在网的 R0 接口 0 | 192.168.16.126/25 |
| 主机 B | 192.168.16.129/26 |
| B 所在网的 R1 接口 0 | 192.168.16.190/26 |
| R0 接口 2 - R1 接口 2 | 30.0.0.1/30 - 30.0.0.2/30,1.544 Mb/s |
| R0 接口 1 - R2 接口 0 | 10.0.0.1/30 - 10.0.0.2/30,1 Gb/s |
| R2 接口 1 - R1 接口 1 | 20.0.0.2/30 - 20.0.0.1/30,1 Gb/s |
| A-R0、R1-B | 100 Mb/s |
3.6.2 采用 RIP
(1)使用 RIPv1 还是 RIPv2
题目用 CIDR 前缀表示地址,并包含 /25、/26、/30 等不同长度子网。
- RIPv1 是分类路由协议,报文不携带子网掩码,不能支持 CIDR 和 VLSM。
- RIPv2 报文携带子网掩码,支持 CIDR、FLSM 与 VLSM。
原讲义把 RIPv1 说成“任何子网划分都不支持”过于绝对:RIPv1 可在同一有类主网络内、各子网采用相同掩码且能从接收接口推断掩码等条件下使用 FLSM;它不能可靠表达不同长度前缀,所以不能满足本题的 VLSM/CIDR 拓扑。
答案:RIPv2。
(2)A、B 的默认网关
A、B 位于不同网络,必须进行间接交付:
A 的默认网关:192.168.16.126
B 的默认网关:192.168.16.190
是否启用 NAT 不决定需不需要默认网关;只要目的地址与本机不在同一网络,就要把分组交给路由器。
(3)A 向 B 发送分组的最小 TTL
RIP 只比较跳数,选择:
A -> R0 -> R1 -> B
分组经过 R0、R1 两个路由器。若初始 TTL 为 2,分组到 R1 后 TTL 减为 0,被丢弃并返回 ICMP 时间超过报文;所以:
$$ TTL_{\min}=2+1=3 $$
3.6.3 采用 OSPF
(1)A 向 B 的路径与地址
各相关链路的 OSPF 代价为:
A-R0 = 1
R0-R2 = 1
R2-R1 = 1
R1-B = 1
R0-R1 = 64
因此最短路径是:
A -> R0 -> R2 -> R1 -> B
总代价 = 1 + 1 + 1 + 1 = 4
P2 从第一个路由器 R0 转发出来时:
| 字段 | 值 |
|---|---|
| 以太网源 MAC | R0 接口 1 的 MAC 地址 |
| 以太网目的 MAC | R2 接口 0 的 MAC 地址 |
| IPv4 源地址 | A 的 192.168.16.1 |
| IPv4 目的地址 | B 的 192.168.16.129 |
没有 NAT/NAPT 时,端到端源、目的 IP 不变;每经过一段链路,以太网源、目的 MAC 重新封装。
(2)R2 ping R1 接口 2
到 R1 接口 2 所在端点有两条总代价均为 65 的路径:
R2 -> R1 -> R1 接口 2:1 + 64 = 65
R2 -> R0 -> R1 接口 2:1 + 64 = 65
OSPF 可把它们作为等价路由进行负载均衡。ping 使用 ICMP 回送请求与回送回答报文,IPv4 首部的协议字段值为:
1
(3)OSPF 相对 RIP 的优势
- OSPF 使用链路状态和最短路径算法;链路状态数据库一致并完成收敛后,SPF 结果无环,也不会出现 RIP 的“计数到无穷”问题。收敛过程中仍可能因数据库短暂不一致而出现瞬时转发环路。
- OSPF 没有 RIP 距离 16 不可达的规模限制。
- OSPF 更新效率更高、收敛速度更快。
3.6.4 R2 不存在时配置静态路由
R0 与 R1 只通过 30.0.0.0/30 直连,需要各添加一条到对端局域网的路由:
| 路由器 | 目的网络 | 子网掩码 | 下一跳 |
|---|---|---|---|
| R0 | 192.168.16.128/26 |
255.255.255.192 |
30.0.0.2 |
| R1 | 192.168.16.0/25 |
255.255.255.128 |
30.0.0.1 |
3.7 模拟题二:相同下一跳必须接受新距离
R2 原有 RIP 路由:
<N1, 4, R1>
现在收到邻居 R1 的更新:
<N1, 8, Rx>
R2 先将邻居通告改为:
<N1, 8 + 1, R1> = <N1, 9, R1>
虽然新距离 9 大于原距离 4,但两条路由的下一跳都是 R1,说明 R1 到 N1 的最新距离已经发生变化,R2 必须同步更新。
答案:A,更新为 <N1, 9, R1>。
3.8 输入域名后的转发流程
flowchart TD
A[输入域名] --> B[DNS:域名解析为目的 IP]
B --> C{目的 IP 与本机是否在同一网络}
C -->|是| D{ARP 缓存是否有目的主机 MAC}
D -->|有| E[直接封装并发送]
D -->|没有| F[广播 ARP 请求]
F --> G[目的主机单播 ARP 响应]
G --> E
C -->|否| H{是否配置默认网关}
H -->|否| I[丢弃,目的不可达]
H -->|是| J{ARP 缓存是否有默认网关 MAC}
J -->|有| K[以默认网关 MAC 为目的 MAC 封装]
J -->|没有| L[广播 ARP 请求默认网关 MAC]
L --> M[默认网关单播 ARP 响应]
M --> K
K --> N[网关根据目的 IP 查表转发]
ARP 请求使用广播目的 MAC FF-FF-FF-FF-FF-FF;ARP 响应通常单播返回。判断直接交付还是间接交付,依据是本机 IP 与目的 IP 分别和子网掩码按位与后得到的网络号是否相同。
3.9 相关路由与地址知识
3.9.1 路由类型
- 子网路由:目的地址写网络地址,即主机号全 0 的地址。
- 特定主机路由:只匹配一个具体主机,IPv4 掩码为
255.255.255.255,即/32。 - 默认路由:其他条目均不匹配时使用,IPv4 写作
0.0.0.0/0。
3.9.2 NAT 与 NAPT
内网主机向外网发送分组时,NAPT 路由器:
- 把源 IP 改为 NAT 设备可用于公网通信的地址;常见端口复用使用其外部接口地址,也可使用分配给设备的地址池。
- 在公网侧映射中选择一个可用源端口;原端口可用时可以保留,发生冲突或策略要求时再改写为另一端口号。
- 把地址和端口映射记录在 NAPT 转换表中。
外网返回分组时,NAPT 路由器根据转换表恢复内部目的 IP 与目的端口号。若不使用 NAT/NAPT,IP 分组的端到端源、目的地址保持不变。
3.10 易错点
- RIP 的 16 表示不可达,不是“最多经过 16 个路由器”。
- 同一目的网络、同一下一跳时,即使邻居通告的新距离更大,也必须更新。
- RIP 比较跳数,OSPF 比较链路代价;带宽高通常意味着 OSPF 代价小。
- TTL 经过每个路由器都先减 1;若要成功经过 $n$ 个路由器,初值至少为 $n+1$。
- BGP 的 OPEN 用于建立会话,KEEPALIVE 用于维持会话,UPDATE 才用于通告或撤销路由。
- eBGP 与 iBGP 的区别在是否跨 AS;两者都使用 TCP 179。
- 从 iBGP 学到的路由不能直接再通告给同一 AS 的另一个 iBGP 邻居。
- BGP 题先按题设比较策略和 AS_PATH,再考虑 AS 内部到出口的代价,不能只看物理距离。
- 默认网关用于跨网转发,与是否启用 NAT 无关。
- 链路带宽描述端口把数据发送到链路上的速率;OSPF 代价必须按题目给定规则取整。
相关知识
3.11 本节复盘
- RIP 工作于应用层,使用 UDP 520,以跳数为距离;距离 16 表示不可达,且存在坏消息传播慢的问题。
- RIP 收到同一目的、同一下一跳的新消息时必须直接更新;模拟题中
<N1,4,R1>应更新为<N1,9,R1>。 - OSPF 工作于网络层,IPv4 协议号为 89,根据链路状态和代价计算最短路径,收敛快并支持等价路由;“无环”结论以链路状态数据库一致且已经收敛为前提。
- BGP 工作于应用层,使用 TCP 179;四种报文是 OPEN、KEEPALIVE、UPDATE、NOTIFICATION。
- 2024 年题中 AS4 选 OSPF,经过 15 个路由器时 TTL 至少为 16;R11-R16 全部获得
210.2.3.0/24的正确路由至少需 30 s,获得210.2.4.0/24的正确路由至少需 60 s,原讲义把两项时间标注对调。 - 2024 年 BGP 选路先排除 AS_PATH 更长的 R12,再按热土豆原则得到 R14 下一跳 R11、R15 下一跳 R13。
- 综合拓扑中,RIP 路径为
A -> R0 -> R1 -> B,最小 TTL 为 3;OSPF 路径为A -> R0 -> R2 -> R1 -> B,总代价为 4。