路由生产算法

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhu_931/article/details/76029472

1 路由的一些概念
  路由节点: 一个具有路由能力的主机或路由器,它维护一张路由表,通过查询路由表来决定向哪个接口发送数据包。
  接口: 路由节点与某个网络相连的网卡接口。
  路由表:由很多路由条目组成,每个条目都指明去往某个网络的数据包应该经由哪个接口发送,其中最后一条是缺省路由条目。
  路由条目:路由表中的一行,每个条目主要由目的的网络络地址、子网掩码、下一条地址、发送接口四部分组成,如果要发送的数据包的目的网络地址匹配路由表中的某一行,就按规定的接口发送到下一条地址。
  缺省路由条目:路由表中的最后一行,主要由下一条地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一条地址。
2 路由表

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    *               255.255.255.0   U     1      0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

  路由表的Destination是的目的络地址,Genmask是子网掩码,Gateway是下一条地址,Iface是发送接口,Flags中的U标志表示此条有效(可以禁用某些条目),G标志表示此条目的下一条地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发,因此下条地址处记为* 号。
  如果传来一个目的地址,此时与第一行的掩码做与运算,如果等于第一行的目的地址,则到了,否则调到默认地址(因为本例只有两行地址)。
  路由的结果:1) 就是我这,到了。2)不是我,我知道在哪,你去那! 3)我不知道,她知道,去找她。
3 理想路由算法
  一个理想的算法应该具有一些特点:
  1) 必须是正确的,完整的。正确指最终能到达目标网络和主机。
  2) 计算上简单。不可增大通信的额外的开销。
  3) 能适应通信量和网络拓扑的变化。即要有自适应性和稳健性。
  4) 具有稳定性。 算法应收敛于一个可接受的解,收敛的速度是指寻找的正确路由的速度。
  5) 算法应该是公平的。公平不含有少数优先级高用户。
  6) 算法应是最佳的。最佳指合理,付出代价(cost)小。
4 常见的路由算法
1) Ford-FulKerson算法
  收到相邻路由器(地址X)发送过来的路由信息后:
  1) 先修改此路由信息中的所有项目:把”下一跳”字段中的地址改为X,并把所有”距离”字段都加1。
  2) 对修改后的路由表中的每一个项目,重复以下步骤:
  若项目中的目的网络不在路由表出现,则将该项目添加到路由表中。
否则
  若下一跳字段给出的路由器地址是同样的,与上一个项目进行替换。
  否则
    若收到项目的距离小于路由表的距离,进行更新。
    否则,什么都不做。
  3) 若3分钟还没有收到相邻路由器的更新表,则把此相邻路由器记为不可到达路由器,即把距离设置为16。
  4) 返回。
  Ford-FulKerson算法的图解:
  路由表中的每一行都包含三个字符,从左到右依次为目的网络,本路由器到目的路由器的最短距离下一跳路由器(直接交付为-)。


2) Dijkstra算法
  1) 初始化:初始时令S={V0},T=V-S={其余顶点},T中顶点对应的距离值。若存在< V0,Vi>,d(V0,Vi)为< V0,Vi>弧上的权值。若不存在< V0,Vi>,d(V0,Vi)为∞。
  2) 从T中选取一个与S中顶点有关联边且权值最小的顶点W,加入到S中。
  3) 对其余T中顶点的距离值进行修改:若加进W作中间顶点,从V0到Vi的距离值缩短,则修改此距离值。
  重复上述步骤2、3,直到S中包含所有顶点,即W=Vi为止。
  Dijkstra算法图解:


本文图片出处:《计算机网络》第四版,谢希仁,第六章

展开阅读全文

没有更多推荐了,返回首页