计算机网络——网络层学习笔记(中):路由算法

路由选择算法

1、路由算法概述

路由算法(协议)确定去往目的网络的最佳路径

转发表确定在本路由器如何转发分组。

网络抽象:图

图:G=(N,E)

N=路由器集合,E=链路集合

关键问题:源到目的的最小费用路径是什么?

路由算法:寻找最小费用路径的算法。

2、路由算法分类

分类方式一:

静态路由:手工配置、路由更新慢、优先级高

动态路由:路由更新快(定期更新、及时响应链路费用或网络拓扑变化)

分类方式二:

全局式路由选择算法:所有路由器掌握完整的网络拓扑和链路费用信息。例如链路状态算法(LS,Link State)。

分散式路由选择算法:路由器值掌握物理相连的邻居以及链路费用,邻居间信息交换、运算的迭代过程。例如距离向量算法(DV,Distance-Vector)。

3、链路状态路由算法

Dijkstra算法

所有结点(路由器)掌握网络拓扑和链路费用。

    通过链路状态广播。

    所有结点拥有相同信息。

计算从一个结点(源)到达所有其他结点的最短路径。

    获得该结点的转发表

迭代:K次迭代后得到到达K个目的结点的最短路径。

符号:

c(x,y) 结点x到y的链路费用,不直接相连为记为无穷大

D(v) 从源到目的v的当前路径费用值

p(v) 沿从源到v的当前路径,v的前序结点

N' 已经找到最小费用路径的结点集合

★算法描述:

1  Initialization: 
2    N' = {u} 
3    for all nodes v 
4      if v adjacent to u 
5          then D(v) = c(u,v) 
6      else D(v) = ∞ 

8   Loop 
9     find w not in N' such that D(w) is a minimum 
10    add w to N' 
11    update D(v) for all v adjacent to w and not in N' : 
12       D(v) = min( D(v), D(w) + c(w,v) ) 
13    /* new cost to v is either old cost to v or known 
14     shortest path cost to w plus cost from w to v */ 

15  until all nodes in N' 

★算法复杂性:n个结点

    每次迭代需要检测所有不再集合N'中的结点w

    n(n+1)/2次比较:O(n2)

    更高效的实现:O(nlogn)

★存在问题:震荡(oscillations)


数据报可能总是路由不到A,随着TTL减少最终被丢包。通常会使用其他机制也避免震荡现象,比如引入随机延时。

4、距离向量算法

Bellman-Ford方程(动态规划)

Define
dx(y) := cost of least-cost path from x to y
Then
dx(y) = min {c(x,v) + dv(y) }
where min is taken over all neighbors v of x


重点:结点获得最短路径的下一跳,该信息用于转发表中!

Dx(y)=从结点x到结点y的最小费用估计

    x维护距离向量(DV):Dx=[Dx(y): y∈N]

结点x:

    已知到达每个邻居的费用:c(x,v)

    维护其所有邻居的距离向量:Dv=[Dv(y): y∈N]

核心思想:

    每个结点不定时地将其自身的DV估计发送给其邻居。

    当x接收到邻居的新的DV估计时,即一句B-F更新其自身的距离向量估计

    Dx(y) ← minv{c(x,v) + Dv(y)}    for each node y ∊ N

    Dx(y)最终会收敛于实际的最小费用dx(y)

特点:

1、异步迭代:

    引发每次局部迭代的因素

        1)局部链路费用改变

        2)来自邻居的DV变化

2、分布式

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

每个结点的状态变化:

等待(本地局部链路费用变化或收到邻居的DV更新)

        ↓

重新计算DV估计

        ↓

如果DV中到达任一目的距离发生改变,通告所有邻居

(回到等待……)

存在问题:无穷计数

坏消息传播得慢,当网络中存在环路时,可能会出现无穷计数问题。

解决方法:

1、毒性逆转

如果一个结点Z到达某目的X的最短路径是经过某个邻居Y,则通告给该邻居结点到达该目的的距离为无穷大。

注:涉及3个或更多结点的环路将无法用毒性逆转技术检测到。

2、定义最大度量

定义一个最大的有效费用值,如15跳步,16跳步代表无穷大。

--------------------------------------------------------------

简单总结一下,路由算法很重要!!!要好好看书哇(#^.^#)


发布了55 篇原创文章 · 获赞 63 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/m0_38068229/article/details/80473977