在同步以后,每个路由器的链路状态数据库如下表:

在SPF计算中,每个路由器维护了两个列表:

a.一个在通往目的地的最短路径上的结点列表,这个表也成为路径类表(PATH list)。

b.可能在也可能不在到达目的地的最短路径上的下一跳类表,这个表称为TENTative或TENT列表。

算法如下:

1.把自己列入PATH列表(每台路由器以自己为根结点就是这样由来的),并且距离为0,下一跳也是自己。

2.从PATH列表中取出刚放入的结点,这个结点称为路径结点,查找路径结点的邻居列表,把列表中的每一个邻居加入到TENT列表,下一跳都设置为TENT结点自己,除非该邻居已经在TENT或PATH列表并且代价较小。把加入TENT列表的结点称为TENT结点。把到达TENT结点的代价设为从根结点的代价加上从PATH结点到TENT结点之和。如果加入的结点在TENT列表中已经存在,但是代价较大,就用当前的结点取代代价较高的结点。

3.在TENT列表中找到代价最低的邻居,把邻居加入到PATH列表中,重复第二步。如果TENT列表为空,就停止。

实例:计算上图中路由器A的路由表项。

1.把自己加入PATH列表中,距离为0,下一跳是自己。路由器A的数据库如下表:

2.将邻居B、C和D加入TENT列表中,下一跳为自己。

3.D的代价小于C的3和B的6,将{D,2,D}移到PATH列表中。

4.检查D的邻居。路由D到C的链路代价是5,A-D-C的代价为2+5=7,大于A-C-C的代价3,所以将{C,3,C}加入到PATH列表中:

5.检查C的邻居。路由C到B的链路代价是2,A-C-B的代价为3+2=5,小于A-B-B的代价6,所以在TENT列表中删除{B,6,B},添加{B,5,C}:

6.将{B,5,C}加入PATH列表,这时A的所有列表已经在PATH列表中了,TENT列表为NULL,停止计算:

7.这时候A的PATH列表就成了它的路由表项:

SPF算法简单解析过程相关推荐

  1. EAST算法简单解析

    前言 最近写了很多算法代码的解析,但是却很少写原理的解析,这段时间学得快忘得也快,所以寻思这几天写几篇学过算法的原理,可能不是很详细但是一定很简单,利于理解. 算法介绍 EAST: An Effici ...

  2. HTTP请求解析过程 (简单概括)

    1.域名解析 用户输入网址,由域名系统DNS解析输入的网址: 2.TCP的3次握手 通过域名解析出的IP地址来向web服务器发起TCP连接请求,如果3次握手通过,则与web服务端建立了可靠的连接: 3 ...

  3. 邻近算法(KNN)原理简单解析

    邻近算法(KNN)原理简单解析 一.什么是邻近算法 1.1简介 1.2核心思想 1.3 算法流程 1.4 优缺点 二.实例演示KNN算法 一.什么是邻近算法 1.1简介 邻近算法,或者说K最近邻(KN ...

  4. 当逻辑表达式或者算法的计算过程冗长的时候该如何做的简单可读

    当逻辑表达式或者算法的计算过程冗长的时候,类似下面的代码,会让我们阅读和理解的过程非常痛苦,例如: if( browser.toUpperCase().indexOf("SAFARI&quo ...

  5. adaboost算法java_Adaboost 算法实例解析

    Adaboost 算法实例解析 1 Adaboost的原理 1.1 Adaboost基本介绍 AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由 ...

  6. dns解析过程_DNS原理总结及其解析过程

    点击上方蓝色字体,关注我们 前言 域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,使人更方便地访问互联网.DN ...

  7. 机器学习算法实现解析:libFM之libFM的训练过程之SGD的方法

    本节主要介绍的是libFM源码分析的第五部分之一--libFM的训练过程之SGD的方法. 5.1.基于梯度的模型训练方法 在libFM中,提供了两大类的模型训练方法,一类是基于梯度的训练方法,另一类是 ...

  8. TypeScript 里的 module 解析过程 - Module Resolution

    Module Resolution 模块解析是编译器用来确定导入所指内容的过程.考虑像 import { a } from "moduleA"; 这样的导入语句.为了检查 a 的任 ...

  9. 索引算法原理解析(B-tree以及磁盘存储原理)

    刚开始学习的时候,百度去查,但发现好多说得太复杂不好理解,结合各个文章总结一下(建议大概看文字,不理解不要紧,然后再看图的执行步骤然后在结合文字,这样一切就清晰好多) B-tree,B是balance ...

  10. python函数教程:Python递归函数 二分查找算法实现解析

    这篇文章主要介绍了Python递归函数 二分查找算法实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.初始递归 递归函数:在一个函数里在调 ...

最新文章

  1. java实现stack search_Java Stack search()用法及代码示例
  2. poj2186(强连通分量)
  3. Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来!(附代码)...
  4. linux rm(remove) 命令详解
  5. python opencv给证件照换底色
  6. 一个wxWidgets判断注册表键值的函数
  7. YTU 1009: University
  8. java开发中常用到小方法
  9. 物理层上/下行每个功能块需要的信息
  10. #史上最详解# IIS服务器查看log日志
  11. [NLP]OpenNLP词形还原器(Lemmatizer)的使用
  12. cookie、sessionStorage、localStorage的区别
  13. 121、买卖股票的最佳时机(python)
  14. 操作系统学习-知识点总结(持续更新)
  15. 暴风影音5完整版(集成Real解码器) 增强去广告版
  16. 华为2019软件精英挑战赛-CodeCraft-2019大佬开源代码集合
  17. oracle坏块,教你手把手修复oracle坏块(一)!!!
  18. 【问题解决】Linux服务器免密信任 远程执行
  19. 十、RabbitMQ发布确认高级
  20. postman传布尔类型的值传不进去

热门文章

  1. 数值分析Guass分解——错误讨论
  2. egret引擎p2物理引擎(2) - 小球碰撞地面搞笑的物理现象
  3. 论文文献综述的题目是什么样的,应该怎么写?
  4. 程序员副业那些事:聊聊出书和录视频
  5. (总结)Web性能压力测试工具之Siege详解
  6. 胡因梦 :自我觉察是一切智慧的基础
  7. np.array_split()np.split()
  8. 【YOLOV5-5.x 源码解读】yolo.py
  9. 组合数性质--二项式系数之和等于2^n的证明
  10. 通过AT指令将air202 接入阿里云