链路状态路由选择LS


链路状态路由(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路由算法的特点




  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值