链路状态路由(Link State)主要思想

  • 发现它的邻居节点们,了解它们的网络地址
  • 设置到它的每个邻居的成本度量
  • 构造一个分组,包含它所了解到的所有信息
  • 发送这个分组给所有其他的路由器
  • 计算到每个路由器的最短路径

第一步:发现

当一个路由器启动时,在每个点到点的线路发送一个特别的Hello数据包,收到Hello分组的路由器会回发一个应答,在应答中包含了它自己的名字(全球唯一),当这样的Hello报文一来一回的时候,一台路由器就了解到了它的所有邻居

第二步:设置

  • 设置链路成本:到邻居的链路开销、代价可以自动配置或由运营商配置,一种常用的开销选择就是跟链路带宽成反比,有的时候呢也可以采用链路延迟作为开销
  • 为了决定线路的延迟开销,路由器可以发送一个特别的回声分组echo,另一端立刻回送一个应答,通过应答包的到来就可以测量往返时间RTT,发送路由器可以获得一个合理的延迟估计值
  • 为了得到更好的延迟结果可以多次测量取平均值

第三步:构造

链路状态分组(LSP/LSA)构造后被发送给其他的路由器,分组中包含这些信息

  • 发送方的标识(ID of the sender)
  • 序列号(sequence number)
  • 年龄(age)
  • 邻居列表(list of neighbors)
  • 到邻居的成本/量度(delay to each neighbor)

应该什么时候构造分组?

周期性地构造和发送,或者有特别的事件发生时构造,比如某条线路或邻居down掉了

第四步:发送

  • 每个分组都包含一个序列号,序列号随着新分组产生而递增
  • 路由器记录下他看见的所有源路由器、序列号对

当一个的新的分组到达时,路由器根据它的记录:

  • 如果该分组是新的,就被从除了来线路外的所有其他线路转发出去(flooding,泛洪)
  • 如果是重复分组,即被丢弃
  • 如果该分组的序列号(长度为32bits,可以有2^32个不同的序列号)比对应的源路由器发送的到过此地的分组的最大序列号还小,则该分组被当作过时的信息而被拒绝

可能遇到的问题

①如果一台路由器崩溃,那么他将丢失自己的序列号记录,如果他再从0开始,新分组将被当作旧分组被拒绝

②如果一个序列号被破坏了,比如发送方的序列号是4,但是由于产生了1位错误,序列号被看作65540,那么序列号为5~65540的分组都被当作过时分组而被拒绝

解决方法:Age

  • 每个分组都会有个Age值,每秒-1,减为0时被抛弃
  • 通常每隔一段时间(例如10秒)一个新分组就会到来,所以只有Down机的时候才可能导致超时

①假设路由器A发送LSP给路由器B,B记录下收到的A的LSP的信息后A崩溃了,此时路由器B上记录下的A的LSP对应的age已经开始倒计时,当A再次启动通常age已经倒计时到零,A的LSP被B扔掉了所以当重启后的A发送的LSP再次来到B,B上已经没有A的记录,新到达的LSP被重新记录而不会被当做一个旧的分组扔掉

②当某个LSP的序列号被损坏了,变成了另外一个序列号,由于序列号的连续性,损坏后的序列号并没有后续的序列号跟上,所以损坏后的序列号对应的那个LSP很快就会因为age倒计时到零而被丢弃,正确序列号的LSP将会被重新纪录

另一个优化

当一个链路状态分组到达某个路由器时,它首先被放到一个保留区中等待一段时间,如果来自相同路由器的另一个分组到达了,这两个分组的序列号会被比较:如果相等,是重复分组,丢弃,如果不相等,旧的那个被丢弃

当路由器B还未做任何动作,一个E的21号LSP通过C到达了

那么路由器B这个时候要做的就是修改发送标记为"0 0 0"确认标记为"1 1 1"

意思是E的21号LSP→B的三个邻居 A、C、F都收到过了,无需向它们去转发,只需要向它们发出确认就好了

第五步:计算

  • 一旦一个路由器获得了全部的链路状态分组就可以构造出全网络图来了
  • 可以使用最短路径算法来计算路由器之间的最短路径
  • 计算结果是一棵树,会形成相应的路由,安装在路由表中,引导数据分组的转发

LS路由算法的特点

链路状态路由选择LS相关推荐

  1. s5-14 链路状态路由选择

    为什么DV逐渐让位于LS? DV  站的不高,看得不远  完全相信邻居 LS  想办法站得高,看更远  多高.多远?  怎么做? 链路状态路由(Link State) 主要思想 发现 它的邻 ...

  2. 属于链路状态路由选择协议,

    SPF (SPF) 属于链路状态路由选择协议,并且是公有标准,理论上是没有网络规模限制的:支持网络的层次化设计,可以将网络分为2层. 层,是通过"区域"的概念来进行区分的. 划分区 ...

  3. 距离矢量(D-V)和链路状态(LS)的区别(转)

    离矢量(DV)是"传说的路由",A发路由信息给B,B加上自己的度量值又发给C,路由表里的条目是听来的,虽说"兼听则明,偏信则暗",但是选出最优路径的同时会引发环 ...

  4. 动态路由选择协议(三)链路状态路由选择协议

    链路状态不同于距离矢量路由协议依照传闻进行路由选择的工作方式,原因是链路状态路由器从对等路由器那里获取第一手信息.每台路由器会产生一些关于自己.本地直连链路.这些链路的状态(以此而得名)和所有直连相连 ...

  5. 链路状态和距离矢量路由协议的不同

    距离矢量VS链路状态 2008-03-28 10:46:33 标签:LS 路由协议 距离矢量 DV 链路状态 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将 ...

  6. 路由算法-链路状态路由

    路由算法   网络层的主要功能是将数据包从源机器路由到目标机器.在大多数网络中,数据包需要经过多跳才能到达目的地.路由算法和这些算法所用的数据结构是网络层设计的最主要内容.   可以这样想,路由器内部 ...

  7. 融合了距离矢量和链路状态两种路由选择协议的优点

    个人电脑开始进入千家万户.与之伴随产生的是电脑的利用问题.越来越多的电脑处于闲置状态,即使在开机状态下中央处理器的潜力也远远不能被完全利用. EIGRP是最典型的平衡混合路由选择协议,它融合了距离矢量 ...

  8. 链路状态算法实现Java,JAVA基于蚁群算法路由选择可视化动态模拟(开题报告+任务书+毕业论文+外文翻译+源代码+可执行程序+答辩P...

    JAVA基于蚁群算法路由选择可视化动态模拟(开题报告+任务书+毕业论文+外文翻译+源代码+可执行程序+答辩PPT) 摘 要 路由选择是一种基于网络层的协议,而所有流行的网络层路由选择协议都是基于以下两 ...

  9. 距离向量DV与链路状态LS算法的区别

    距离向量DV算法与链路状态LS算法最大的区别就在于:前者为分布式.迭代算法,而后者为"集中式"的算法.什么意思呢?先来看一下两种算法的原理. 距离向量路由算法(Bellman-Fo ...

最新文章

  1. MATLAB基本操作(七):有关文件路径的几个函数在编程中的作用
  2. 归并排序,快速排序,冒泡排序,选择排序,基数排序,桶排序,堆排序(c++实现)
  3. Linux服务器同步时间
  4. 全景图像拼接——图像融合
  5. oracle数据库十六进制转字符串,Oracle中各种进制相互转换
  6. volatile工作原理学习总结
  7. COMSOL光纤建模、光子带隙分析等
  8. TPC-DS生成数据
  9. 【电子书资源】数值方法最优化理论算法凸优化 ---书籍调研(附网盘下载地址)...
  10. PC-DMIS 圆(环)型平面自动测量子程序
  11. 世界三大数学猜想 哥德巴赫猜想 费马大定理: 费马猜想: 质数算法c++ 1.NP完全问题 2.霍奇猜想 3.庞加莱猜想 4.黎曼假设 5.杨-米尔斯存在性和质量缺口 6.纳卫尔-
  12. AdobeFlashPlayer发生安全沙箱冲突
  13. 云服务器安卓虚拟机,云服务器安装安卓虚拟机
  14. 鹏业安装三维算量软件——批量修改工程量
  15. 数字图像处理第二章——数字图像基础
  16. 如何在Docker容器中运行Docker [3种方法]
  17. MFC应用模态对话框和非模态对话框
  18. 使用 Packer 构建虚拟机镜像踩的坑
  19. 如何认识巨杉数据库SequoiaDB整体架构?
  20. 关系模型(关系模型的常用术语中,域指的是属性的取值范围)

热门文章

  1. python的官网都打不开了-安装的python为什么打不开
  2. 学python有什么用-为什么要学Python?学了有什么用?
  3. python和java的区别-Java和Python的区别 学Python语言好还是Java好
  4. 中文语音识别系统搭建流程笔记
  5. 浙江法院智能语音识别系统全面上线
  6. 判断是否是质数 c++java
  7. 如何查找涉密文件_企业如何处理涉密信息文件?这四点必知
  8. 带网格的_【我看身边的网格化】申港街道:一人一板穿梭楼宇小巷 一网一格解决百姓问题...
  9. 运筹学在不同环境下的决策 -- 学习记录
  10. RocketMQ 介绍与安装