$$D_x(y) = \min_v \{ c(x,v) + D_v(y) \}$$
Dx(y) = 从 x 到 y 的最短距离
c(x,v) = x 到邻居 v 的链路代价
Dv(y) = 邻居 v 到 y 的最短距离
含义:x 到 y 的最短路径 = 经过所有邻居 v 的路径中的最小值
路由器 A 的路由表:
目的网络 跳数 下一跳
Net1 0 直连
Net2 1 B
Net3 2 B
Net4 3 C
1. 每 30 秒向所有邻居广播整个路由表
2. 收到邻居的路由表后,用 Bellman-Ford 方程更新自己的路由表
3. 如果 180 秒未收到邻居更新,标记该邻居不可达
例:
A 的路由表: Net1=0, Net2=1(B)
B 的路由表: Net1=1(A), Net2=0, Net3=1
A 收到 B 的更新后:
到 Net3: 经过 B 的距离 = 1+1 = 2
A 更新路由表: Net3=2(B)
好消息传播快,坏消息传播慢:
初始:A→Net1=1(B), B→Net1=1(直连)
情况1:Net1 断开
B 发现 Net1 不可达(16跳)
但 A 之前告诉 B:A 到 Net1=1 跳
B 以为经过 A 可以到 Net1:A 的距离 1 + B 到 A 的 1 = 2 跳
B 更新:Net1=2(A)
A 收到 B 的更新:Net1 = 2+1 = 3(B)
...无限增加直到 16
| 机制 | 规则 |
|---|---|
| 水平分割 | 不向收到路由的方向回传该路由 |
| 毒性逆转 | 回传该路由但设为不可达(16 跳),比水平分割更积极 |
| 抑制计时器 | 收到不可达后,等待一段时间才接受该路由更新,防震荡 |
| 触发更新 | 路由变化立即发送更新,不等待 30 秒,加速坏消息传播 |
| 特性 | 说明 |
|---|---|
| 度量 | 跳数(最大 15) |
| 更新周期 | 30 秒 |
| 超时时间 | 180 秒 |
| 更新方式 | 广播整个路由表 |
| 收敛速度 | 慢 |
| 适用规模 | 小型网络 |
| 算法 | Bellman-Ford(距离向量) |
| 考点 | 说明 |
|---|---|
| Bellman-Ford 方程 | 计算最短路径 |
| 路由环路的原因 | 坏消息传播慢 |
| 水平分割和毒性逆转 | 防环机制 |
| RIP 的特点 | 跳数、周期、最大 15 跳 |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。