赞
踩
down
代表还没发现任何存在的邻居;
init
表示邻居的hello包,但hello中没法发现自已的Router id,此时代表你发现了邻居的存在,但并不代表邻居已经发现你,也称为one-way;
two-way
收到邻居hello报文,井从hello中发现的自己的router id,two-way之后,drother之间就只到two-way状态,不会进行LSDB的同步,其他情况会注续进行LSDB的同步,进人到exstart状态,开始发送DBD报文;
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
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的头部信息,信息比较多,一一确认处理起来比较繁琐,消耗设备资源影响邻居收敛的时间,所以采用相对简单的隐式确认机制。
loading
exchange完成后,邻居根据DBD报文的头部信息和自身LSDB的头部信息做比较,进行LSDB的同步,同步的规则:交换彼此没有的LSA以及新的LSA替换老旧的LSA,实现邻居LSDB的一致性。随即发送LSR ,LSU,LSAck完成LSA的交换。
Full
Full状态,LSDB一致,完成邻接关系建立。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。