31 路由算法.md - Typora

狂风中的少年 提交于 2019-12-21 09:22:43

31 路由算法
路由算法(协议)确定去 往目的网络的最佳路径
转发表确定在本路 由器如何转发分组
网络抽象:图
1571465998710
点是路由器, 边是链路.
每段链路的费用可以总是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’: 已经找到最小费用路 径的结点集合
算法

1571466498346
算法复杂性: n个结点

每次迭代: 需要检测所有不在集合N’中的结点w
 n(n+1)/2次比较: O(n2)
更高效的实现: O(nlogn)
存在震荡(oscillations)可能:

 e.g., 假设链路费用是该链路承载的通信量:
1571466831410
一个数据报可能在这个震荡过程中一直在路径中直到TTL减为0
距离向量路由算法

Bellman-Ford方程(动态规划)
dx(y):=从x到y最短路径的费用(距离)
1571467079338
重点:结点获得最短路径的下一跳, 该信息用于转 发表中
核心思想:

每个结点不定时地将其自身的DV估计发送给其邻居 .
当x接收到邻居的新的DV估计时,即依据B-F更新其自身 的距离向量估计:
1571467327837
Dx(y)将最终收敛于实际的最小费用 dx(y)
异步迭代:

引发每次局部迭代的因素 : 局部链路费用改变  来自邻居的DV更新
分布式:

每个结点只当DV变化时 才通告给邻居
 邻居在必要时(其DV更新 后发生改变)再通告它们 的邻居
每个结点:

1571467497808
链路费用变化:

 结点检测本地链路费用变化
 更新路由信息,重新计算距离向量
 如果DV改变,通告所有邻居
好消息传播快. 坏消息传播慢.
存在环路时, 可能出现无穷计数问题.
解决方法1: 毒性逆转

如果一个结点(e.g. Z)到达某目的(e.g.X)的最小 费用路径是通过某个邻居(e.g.Y),则: 通告给该邻居结点到达该目的的距离为无穷大
1571468560009
1571468549107
毒性逆转不能彻底解决无穷计数问题.
解决方法2: 定义最大度量(maximum metric)

定义一个最大的有效费用值,如15跳步,16跳步表示∞
1571468922251
层次路由

将任意规模网络抽象为一个图计算路由-过于理想化
聚合路由器为一个区域 :自治系统AS (autonomous systems)
同一AS内的路由器运行 相同的路由协议(算法)
网关路由器(gateway router): 位于AS“边缘” 通过链路连接其他AS的 网关路由器
互连的AS

转发表由AS内部路由算法 与AS间路由算法共同配置
 AS内部路由算法设置 AS内部目的网络路由 入口(entries)  AS内部路由算法与AS 间路由算法共同设置 AS外部目的网络路由 入口
1571469795254
自治系统间(Inter-AS)路由任务

1.学习到哪些目的网络可 以通过AS2到达,哪些 可以通过AS3到达 2.将这些网络可达性信息 传播给AS1内部路由器
1571469699073
在多AS间选择

热土豆路由: 将分组发送给最近的网关路由器
1571469912168





易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!