本文转自:https://blog.51cto.com/4625416/1678913 

进入ExStart状态后,广播和NBMA型网络要等待4倍的Hello时间,确定DR和BDR。然后建立邻接关系,并交互链路状态通告,以使用LSDB达到一致,进而完成路由表的计算和生成。

1 状态的变化

wKiom1W2K4uC3JGqAAB-Jw03qf4590.jpg

ExStart:主从关系是在此状态下形成的(router ID大的为主)。确定主从关系目的是确定DD交换过程中的序列号(LS Sequence Number,后面会有介绍),以保证DD包传输的可靠性,初始DD序列号是在此状态下决定的。邻居状态变成此状态以后,路由器开始向邻居发送DD报文。在此状态下发送的DD报文不包含链路状态描述,只是确定主从关系。

Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。

Loading:相互发送LS Request报文请求LSA,发送LS Update通告LSA。

Full:两路由器的LSDB已经同步。

即:确定主从关系->交互DD->相互发送LS R和LS U->达到同步,也就是说建立邻接关系的最终目的是达到LSDB的同步。

下面重点说明两个状态的变换过程

wKiom1W2LSuS8q8dAAEQrodnBtE093.jpg

从比主多发一个DD包,确认主的最后一个DD包,保证绝对可靠

I位:1是第一个DD包

M位: more bit  1指还有DD包,0表示最后一个DD包

MS位:表示主从 1为主,0为从

wKiom1W2LV6ixJ7vAACLoz5P-qk544.jpg

1. 邻居状态变为Loading之后,RTA开始向RTB发送LS request报文,请求那些在Exchange状态下通过DD报文发现的,而且在本地LSDB中没有的链路状态信息。

2. RTB收到LS Request报文之后,向RTA发送LS Update报文,在LS Update报文中,包含了那些被请求的链路状态的详细信息。

3. RTA向RTB发送LS Ack报文,确保信息传输的可靠性。 LS Ack报文用于泛洪对已接收LSA的确认。 邻居状态变成Full,表示达到完全邻接状态。

 

通过抓包可知,实际包的传递是交叉进行

wKiom1W2LgOD1EqFAAG8kxx1ql4285.jpg