Section 5 网络层:控制平面
中科大郑烇、杨坚老师《计算机网络》笔记
5.2 传统路由选择算法
- 路由概念
- 在一个网络中找一条较好的路径Path
- 以子网为单位进行扩散,是子网(路由器)到子网(路由器)的路由
- 第一跳和最后一跳是毫无疑问的
- 指标:跳数、延迟、费用、队列长度,或一些指标的加权平均
- 路由问题的抽象:图
- G=(N,E)
- N:路由器(路由器所在的子网)集合
- E:点到点的链路
- 输入:source、dest、weight(跳数、时间、拥塞程度、费用等)
- 最优化原则:所有路由器找到(路由)并使用(转发)汇集树 sink tree
- 路由的原则:正确、简单、健壮、稳定、公平、次优性
- 路由算法的分类
- 全局:
- 所有路由器都拥有完整的拓扑和边的代价信息
- Link state 算法
- 局部(分布式):
- 路由器只知道邻居路由和到邻居的代价
- Distance vector算法
- 静态/动态
- 动态:周期性更新迭代,反应网络拓扑变化,自适应
- 全局:
- Link State Routing 链路状态算法
- 获得网络拓扑和链路代价信息
- 链路状态分组:路由器及其邻居的信息,和该路由器到邻居的代价
- 泛洪flooding:
- 减少广播风暴(年龄age字段和版本号)
- 可靠泛洪,需要路由器确认
- 使用最短路由算法得到路由表(Dijkstra算法,复杂度N^2,可能存在震荡)
- 使用其路由表
- LS应用:OSPF、IS-IS
- 获得网络拓扑和链路代价信息
- Distance Vector Routing 距离矢量算法(Bellman-Fold方程,动态规划)
- 基本思想
- 各个路由器维护一张路由表:To | Next | Cost
- 各个路由器与相邻路由器交换路由表
- 根据获得的路由信息,更新路由表
- 定期测量、定期交换、更新路由表
- 经过若干次的迭代,最终会收敛到最优值
- 特点:好消息传得快、坏消息传得慢(可能形成环路)
- 水平分裂(split horizon):减缓坏消息传得慢的问题(存在环状拓扑的网络不适用)
- 当B是C到A的下一跳的时候,C传给B的信息是“A不可达”,而传给其他节点的信息是真实信息(C发出的信息水平分裂为了两种情况)
- 水平分裂(split horizon):减缓坏消息传得慢的问题(存在环状拓扑的网络不适用)
- 触发:分布式、异步算法
- 本地链路代价变化了
- 从邻居节点来了DV更新消息
- 基本思想
- LS和DV的比较
- 消息复杂度(DV胜出)
- LS:有 n节点, E条链路,报文O(nE)个(局部的路由信息;全局传播)
- DV:只和邻居交换信息(全局的路由信息,局部传播)
- 收敛时间(LS胜出)
- LS:O(n2)算法,有可能震荡
- DV:收敛较慢,可能存在路由环路
- 健壮性:某一个路由器故障会发生什么(LS胜出)
- LS:节点会通告不正确的链路代价,每个节点只计算自己的路由表,错误信息影响较小、局部
- DV:DV节点可能通告对全网所有节点的不正确路径代价,每一个节点的路由表可能被其它节点使用(错误可以扩散到全网)
- 消息复杂度(DV胜出)