计算机网络•自顶向下方法:路由选路算法

路由选路算法

在网络层中,选路是指数据包从源主机到目的主机的传输过程中,如何通过网络中的路由器选择一条合适的路径。路由器根据网络拓扑、路由表、协议规则等来决定如何将数据包转发到下一跳,直到数据包到达目的地。

在这里插入图片描述

选路算法分类

静态算法or 动态算法

  • 静态算法:路由随时间不变或缓慢变化 (手工配置)
  • 动态算法:路由器根据拓扑及链路代价的变化而自动更新路由

全局算法 or 分布式算法

全局算法:

  • 所有路由器具有关于拓扑和链路代价的全部信息
  • 集中式计算

分布式算法:

  • 路由器仅知道邻居节点以及到邻居节点的链路代价
  • 通过与邻居交换信息,进行迭代计算

链路状态(LS)选路算法

链路状态选路算法为全局算法,其基本思想为:每个节点利用可靠方法获得全网拓扑信息,抽象成一个带权拓扑图,计算到各个节点的最短路径

最常见的链路状态路由协议是 OSPF(Open Shortest Path First)

链路状态选路算法包括五个步骤:

  • 发现邻居:有链路直接相连的节点为邻居
  • 探测链路代价:探测到每个邻居的代价
  • 构造链路状态(LS)分组:利用邻居及链路代价信息
  • 扩散LS分组:向网络中所有节点发送LS分组
  • 计算路由:利用收到的LS分组构造网络拓扑,计算从本节点到其它各个节点的最短路径

一旦路由器有了完整的网络拓扑图,它就可以使用 Dijkstra 最短路径算法 来计算到每个目标的最短路径。

Dijkstra算法
1  Initialization: 
2    N’ = {
   u}      // N’为已找到最短路径的节点集合,初始时只有u
3    for all nodes v    //标记源节点u到各个节点v的路径代价D(v)
4      if v adjacent to u
5          then D(v) = c(u,v)   //c(u,v)为链路(u,v)的代价
6      else D(v) =7 
8   Loop 
9     find w not in N’ such that D(w) is a minimum  //下一条最短路径
10    add w to N’     //将找到最短路径的节点加入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    until all nodes in N' 

在这里插入图片描述

Bellman-Ford 方程

假设 x 和 y 分别为源节点和目的节点, N ( x ) N(x) N(x)是x 的邻居集合, c ( x , p ) c(x,p) c(x,p)为 x 到其邻居 p 的链路代价, d x ( y ) d_x(y) dx(y)为从 x 到 y 的最小代价路径的代价,则:
d x ( y ) = m i n p { c ( x , p ) +

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值