zoukankan      html  css  js  c++  java
  • OSPF状态机

    转载自:https://baijiahao.baidu.com/s?id=1666668760826453979&wfr=spider&for=pc

    OSPF共有8种状态机,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。

    Down:邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。

    Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔(dead interval)超时前仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔(poll interval)向对端发送Hello报文。

    Init:收到Hello报文后状态为Init。

    2-way:收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。

    Exstart:开始协商主从关系,并确定DD的序列号,此时状态为Exstart。

    Exchange:主从关系协商完毕后开始交换DD报文,此时状态为Exchange。

    Loading:DD报文交换完成即Exchange done,此时状态为Loading。

    Full:LSR重传列表为空,此时状态为Full。

    接下来,我们来聊聊几个主要的状态:

    1、Init

    每台路由器只与启用了OSPF,接口宣告到OSPF进程,就会开始发OSPF报文。

    当收到别人发过来的Hello报文,

    一开始,R5收到R4发过来的Hello包,查看,只看到R4的router id 4.4.4.4 ,没有看到自己,所以状态置为init状态,并且R5已发现自己有个邻居是R4。

    R4收到R5发过来的Hello包,查看,只看到R5的router id 5.5.5.5 ,没有看到自己,所以状态置为init状态,并且R4已发现自己有个邻居是R5。

    R5再次收到R4发过来的Hello包,查看,看到R4的router id 4.4.4.4,还看到自己R5的router id 5.5.5.5 ,认为双向通信没问题,所以状态置为2-way。

    同理,R4再次收到R5发过来的Hello包,查看,看到R5的router id 5.5.5.5,还看到自己R5的router id 4.4.4.4,认为双向通信没问题,所以状态置为2-way。

    到这里,OSPF的邻居状态就算建立完成。如果要交付LSA信息,还得继续建立邻接关系,才能交付,然后再去计算路由。

    当链路两端的设备都进入2-way状态后,如果是MA或NBMA网络,会进行DR/BDR的选举。该选举是为了减少广播型网络和NBMA网络中建立邻接关系的数量。

    如果存在DR的情况下,其他DR-Other只会和DR建立邻接关系,DR-Other之间建立邻居关系,但是不会建立邻接关系,状态一直处于2-way状态。

    DR/BDR的选举规则:

    1、比较路由器优先级,大的优先;

    2、比较router id。大的优先;

    当选举出DR后,网络内的DR-Other和DR开始建立邻接关系,进入下一个状态Exstart。

    这个阶段,两端设备通过交互DD报文,来选举主从关系,主从的目的,就是选举谁是老大,后续的DD报文序列号以他为准,作为参考点进行更新。

    龙哥要画重点了,注意了,第一个DD报文,是没有携带LSA头部信息的。

      

      

     现在我们来了解一下,主从关系是通过什么选举出来的呢?

    DD报文有个三位很重要,I,M,MS位。

    I 是表示该报文是初始报文,第一个DD报文。

    M 表示后面还有DD报文,如果是0,表示没有DD报文了。

    MS 置1表示该报文为主,0表示为从。

    所以第一个DD报文,都各自认为自己是主,所以MS都置1。

     

     R4:发现自己的router id比R5小,所以认怂了,为从,置为0:

     R5:发现自己的router id比R4大,所以嘚瑟了,为主,置为1,序列号+1

     

     主从设备选举完后,设备的状态从Exstart状态变为Exchange状态,从设备(R4)会使用主设备(R5)的序列号,发送携带摘要信息的DD报文。

    如果R5从R4发送的摘要信息中发现存在本身没有的LSA信息,则会向AR1发送LSR报文请求该LSA,此时状态由exchange变为loading状态。R4收到AR5的LSR请求报文,便会回复一个LSU报文携带AR2要请求的LSA明细信息。R5收到LSU报文同步完成后进入FULL状态,并且向R5发送LSAck报文表示确定收到了LSU报文且同步完成,R4也会进入FULL状态。该LSAck报文,就是因为OSPF是基于IP的,IP没有确认机制,所以OSPF需要设置自身的确认机制。

  • 相关阅读:
    sql语句最后一行显示统计。
    Win10访问不到XP共享的解决:
    git-github-TortoiseGit综合使用教程(二)快速入门
    git-github-TortoiseGit综合使用教程(一)简介
    RHEL7 -- 修改主机名
    安装完 MySQL 后必须调整的 10 项配置(转)
    my.cnf
    mysql查看系统参数
    MySQL性能的五大配置参数(内存参数)
    (转)Linux用户登录记录日志和相关查看命令汇总
  • 原文地址:https://www.cnblogs.com/paddingtoneyes/p/13340022.html
Copyright © 2011-2022 走看看