一、路由算法分类
路由算法
- 路由算法(协议)确定去往目的网络的最佳路径。
- 转发表确定在本路由器如何转发分组。
- 网络抽象
- 图:G=(N,E),eg:P2P,N是peers集合,E是TCP连接集合
- 费用:每段链路的费用可以总是1,或者是带宽的倒数、拥塞程度等
- 最小费用路径。
1、静态路由 vs 动态路由
静态路由:
-
手工配置
-
路由更新慢
-
优先级高
动态路由:
- 路由更新快
- 定期更新
- 及时响应链路费用或网络拓扑变化
2、全局信息vs分散信息
全局信息
-
所有路由器掌握完整的网络拓扑和链路费用信息
E.g. 链路状态(LS)路由算法
分散(decentralized)信息:
-
路由器只掌握物理相连的邻居以及链路费用
-
邻居间信息交换、运算的迭代过程
E.g. 距离向量(DV)路由算法
二、常用的路由算法
1、链路状态(LS)路由算法——Dijkstra算法(全局信息)
-
所有结点(路由器)掌握网络拓扑和链路费用
- 通过“链路状态广播“
- 所有结点拥有相同信息
-
计算从一个结点(“源" )到达所有其他结点的最短路径
- 获得该结点的转发表
-
迭代: k次迭代后,得到到达k个目的结点的最短路径
-
符号
- c(x,y):结点x到结点y链路费用;如果x和y不直接相连,则=∞
- D(v):从源到目的v的当前路径费用值
- p(v):沿从源到v的当前路径,v的前序结点
- N’:已经找到最小费用路径的结点集合
-
算法复杂性&#x