ospf点到点网络如何建立邻接关系 ospf邻接建立过程_网络协议

  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
  1. 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的头部信息,信息比较多,一一确认处理起来比较繁琐,消耗设备资源影响邻居收敛的时间,所以采用相对简单的隐式确认机制。

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