OSPF最通俗易懂的讲解——OSPF邻接关系建立过程

OSPF最通俗易懂的讲解——OSPF邻接关系建立过程_第1张图片

  1. down
    代表还没发现任何存在的邻居;

  2. init
    表示邻居的hello包,但hello中没法发现自已的Router id,此时代表你发现了邻居的存在,但并不代表邻居已经发现你,也称为one-way;

  3. two-way
    收到邻居hello报文,井从hello中发现的自己的router id,two-way之后,drother之间就只到two-way状态,不会进行LSDB的同步,其他情况会注续进行LSDB的同步,进人到exstart状态,开始发送DBD报文;

  4. exstart
    exstart发送的DBD报文只做主从选举,而不会携带任何LSDB中LSA的头部信息,并各自表达自身是初次发送DBD报文,后续还希望继续发送DBD报文,并以自身是master,随即生成DBD报文的序列号,进行主从选举,彼此交换DBD报文后,根据router id的大小完成主从选举。router id大的成为master, router id小的为slawe.
    以下是报文交互:

    	1.1.1.1 I = 1  M = 1  MS = 1  SEQ = X
    	2.2.2.2 I = 1  M = 1  MS = 1  SEQ = Y
    
  5. exchange
    主从选举完毕后,进入到exchange状态,slave路由器开始发送携带自身LSDB中LSA的头部信息的DBD报文,并使用exstart状态master路由器的序列号作为该DBD报文的序列号,以下是报文交互:
    slave 1.1.1.1 I= 0 M = 1/0
    (1代表LSDB中LSA的头部信息还没发完,后续需要继续通过DBD报文发送,0代表LSDB中所有LSA的头部已经发送完毕) SEQ=Y
    master 2.2.2.2 I=0 M = 1/0 SEQ=Y+1
    slave 1.1.1.1 I=0 M= 1 SEQ = Y+1
    master 2.2.2.2 I=0 M=1 SEO=Y+2

    OSPF 采用3次握手建立邻居关系,是OSPF协议可靠性的体现。exstart做主从选举,为实现可靠的DBD同步做准备。

    slave  1.1.1.1  I  =  0  M = 1/0  MS = 0  LSA头部
    (M1代表LSDB中ISA的头部信息还没发完,后续需要继续通过DBD报文发送,0代表LSDB中所有LSA的头部已经发送完毕)
    
    master  2.2.2.2  I = 0  M = 1/0  MS = 1  SEQ = Y+1  lsa头部  1
    slave  1.1.1.1  I = 0  M = 1 MS = 0  SEO = Y+1  lsa头部
    master 2.2.2.2 I =0 M= 1 MS = 1  SEQ = Y+2  lsa头部
    slave 1.1.1.1  I=0 M= 0  MS=0  SEQ =Y+2  lsa头部
    master 2.2.2.2  I=0 M = 0  MS = 1  SEQ = Y+3  lsa头部
    slave  1.1.1.1  I = 0  M=0  MS = 0  SEQ = Y+3
    

    slave总是用master的序列号向master发送DD报文,master将slave序列号加1 向从发送DD报文,实现DD报文的隐式确认

    为什么要采用隐式确认?原因DD报文携带自身LSDB中所有SA的头部信息,信息比较多,一一确认处理起来比较繁琐,消耗设备资源影响邻居收敛的时间,所以采用相对简单的隐式确认机制。

  6. loading
    exchange完成后,邻居根据DBD报文的头部信息和自身LSDB的头部信息做比较,进行LSDB的同步,同步的规则:交换彼此没有的LSA以及新的LSA替换老旧的LSA,实现邻居LSDB的一致性。随即发送LSR ,LSU,LSAck完成LSA的交换。

  7. Full
    Full状态,LSDB一致,完成邻接关系建立。

你可能感兴趣的:(HCIP-Datacom,OSPF专题,网络,网络协议,tcp/ip,信息与通信,计算机网络)