链路状态路由
复习
- 距离向量路由:与邻居交换距离向量逐步收敛
- 路径选择问题:把网络抽象成带权图
- 路由表与最长前缀匹配:按最长前缀决定下一跳
TL;DR
- 链路状态路由:每台路由器掌握全网拓扑
- 各自泛洪链路状态,拼出一张完整的地图
- 再各自用最短路径算法算出到各处的路
- 收敛快、不易环路,代价是每个节点要保存全网信息
正文
距离向量的毛病是“只见树木不见森林”:每台路由器只有一堆距离数字,遇到变化就容易绕圈。
链路状态路由换了个思路:与其各自猜,不如让每台路由器都拿到同一张完整地图。
先搜集,再算路
它的运行分成清楚的几步:
- 每台路由器先弄清自己的直连邻居,以及各条链路的代价
- 把这些“链路状态”信息泛洪出去——像广播一样,让网络中每台路由器都收到
- 收齐之后,每台路由器都能拼出同一张全网拓扑图
- 然后各自在图上跑最短路径算法,算出到各目标的最优路径,填进路由表
可以这样理解:先让全城每个人都拿到同一张地图,再各自算出从自己家出发怎么走最近。
为什么不会绕圈
因为每台路由器看到的都是同一份完整拓扑,各自算出的路径自然彼此一致,不会出现“你指向我、我指向你”的互相误导。距离向量那种计数到无穷的环路,在这里基本不会发生,收敛也快得多。
当然,天下没有免费的午餐。代价是:
- 每台路由器都要保存全网拓扑,内存占用随规模增长
- 泛洪链路状态要消耗不少带宽
- 一旦拓扑变化,需要重新泛洪并重算
但换来的是快速收敛和稳定性,这在大型网络中往往非常划算。
两种思路的对照
到这里,两条主线就清晰了:
- 距离向量:信息少,只和邻居说话;收敛慢,易环路
- 链路状态:信息多,人手一份地图;收敛快,更稳健
它们不是谁绝对更好,而是用不同的信息量与计算量,换取不同的收敛速度和稳定性。这又是一次典型的工程取舍。
可现实中的互联网,比一张图还要复杂得多——因为它不归一个人管。下一章,我们看看当网络跨越许多“势力范围”时,路由又会遇到什么新问题。
思考题 1
链路状态路由为什么不容易出现距离向量那样的环路?
思考题 2
“掌握全网拓扑”的代价是什么?为什么还可能值得?
小结
知识点
- 链路状态路由让每台路由器掌握全网拓扑
- 通过泛洪链路状态拼出统一地图
- 各自用最短路径算法计算路由
- 收敛快、无环路,但开销更大
参考资料
- Wikipedia(zh):链路状态路由协议:掌握全网拓扑后计算路由
- Wikipedia(zh):Dijkstra算法:单源最短路径的经典算法
思考题答案(仅供参考)
思考题 1
因为每台路由器都基于同一份完整拓扑、各自独立计算,得到的路径彼此一致,不会因为依赖邻居的过时信息而互相误导,因此不易形成计数到无穷那样的环路。
思考题 2
代价是每台路由器都要保存全网的拓扑与链路状态,还要花带宽泛洪,内存和通信开销都更大。但它换来快速收敛和高稳定性,在规模大、拓扑频繁变化的环境中,这份代价往往很值得。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪