31 路由算法
路由算法(协议)确定去 往目的网络的最佳路径
转发表确定在本路 由器如何转发分组
网络抽象:图
点是路由器, 边是链路.
每段链路的费用可以总是1, 或者是,带宽的倒数、拥塞程度等
关键问题: 源到目的(如u到z)的最小费用路径是什么?
路由算法: 寻找最小费用路径的算法
路由算法分类
静态路由:
手工配置
路由更新慢
优先级高
动态路由:
路由更新快: 定期更新 ; 及时响应链路费用或 网络拓扑变化
省时省力
基于全局信息的路由算法:
所有路由器掌握完整的网络 拓扑和链路费用信息
E.g. 链路状态(LS)路由算法
基于分散(decentralized)信息的路由算法:
路由器只掌握物理相连的邻 居以及链路费用
邻居间信息交换、运算的迭 代过程
E.g. 距离向量(DV)路由算法
链路状态路由算法
Dijkstra 算法
所有结点(路由器)掌握网 络拓扑和链路费用 通过“链路状态播” 所有结点拥有相同信息 计算从一个结点(“源”) 到达所有其他结点的最 短路径 获得该结点的转发表 迭代: k次迭代后,得到 到达k个目的结点的最短 路径
符号
c(x,y): 结点x到结点y链路费用;如果x和y不直接相 连,则=∞
D(v): 从源到目的v的当前 路径费用值
p(v): 沿从源到v的当前路 径,v的前序结点
N’: 已经找到最小费用路 径的结点集合
算法
算法复杂性: n个结点
每次迭代: 需要检测所有不在集合N’中的结点w
n(n+1)/2次比较: O(n2)
更高效的实现: O(nlogn)
存在震荡(oscillations)可能:
e.g., 假设链路费用是该链路承载的通信量:
一个数据报可能在这个震荡过程中一直在路径中直到TTL减为0
距离向量路由算法
Bellman-Ford方程(动态规划)
dx(y):=从x到y最短路径的费用(距离)
重点:结点获得最短路径的下一跳, 该信息用于转 发表中
核心思想:
每个结点不定时地将其自身的DV估计发送给其邻居 .
当x接收到邻居的新的DV估计时,即依据B-F更新其自身 的距离向量估计:
Dx(y)将最终收敛于实际的最小费用 dx(y)
异步迭代:
引发每次局部迭代的因素 : 局部链路费用改变 来自邻居的DV更新
分布式:
每个结点只当DV变化时 才通告给邻居
邻居在必要时(其DV更新 后发生改变)再通告它们 的邻居
每个结点:
链路费用变化:
结点检测本地链路费用变化
更新路由信息,重新计算距离向量
如果DV改变,通告所有邻居
好消息传播快. 坏消息传播慢.
存在环路时, 可能出现无穷计数问题.
解决方法1: 毒性逆转
如果一个结点(e.g. Z)到达某目的(e.g.X)的最小 费用路径是通过某个邻居(e.g.Y),则: 通告给该邻居结点到达该目的的距离为无穷大
毒性逆转不能彻底解决无穷计数问题.
解决方法2: 定义最大度量(maximum metric)
定义一个最大的有效费用值,如15跳步,16跳步表示∞
层次路由
将任意规模网络抽象为一个图计算路由-过于理想化
聚合路由器为一个区域 :自治系统AS (autonomous systems)
同一AS内的路由器运行 相同的路由协议(算法)
网关路由器(gateway router): 位于AS“边缘” 通过链路连接其他AS的 网关路由器
互连的AS
转发表由AS内部路由算法 与AS间路由算法共同配置
AS内部路由算法设置 AS内部目的网络路由 入口(entries) AS内部路由算法与AS 间路由算法共同设置 AS外部目的网络路由 入口
自治系统间(Inter-AS)路由任务
1.学习到哪些目的网络可 以通过AS2到达,哪些 可以通过AS3到达 2.将这些网络可达性信息 传播给AS1内部路由器
在多AS间选择
热土豆路由: 将分组发送给最近的网关路由器
来源:https://www.cnblogs.com/lee3258/p/11976169.html