首页 > 代码库 > OSPF邻居建立过程

OSPF邻居建立过程

wKiom1R5gRHR844IAAFQ4qA_viE100.jpg

创建邻接的过程:AB开始都是DOWN状态。

AB发送一个hello包,告诉B我的router-id172.16.1.1,我没有已知邻居;B收到了hello包,知道A是自己的邻居,将172.16.1.1加入到自己的邻居表,进入初始化(init)状态,BAhello包,告诉A我的router-id172.16.1.2,我已知的邻居是AA收到Bhello包,将172.16.1.1加入到自己的邻居表,B成为A的邻接路由器,(如果是一个MA网络的话,AB都知道了双方的router-id后,会协商DRBDR,因为Brouter-id大所以B就会成为DRABhello包,告诉B我的router-id172.16.1.1,我的邻居是BB收到hello包,A成为B的邻接路由器。

 

wKioL1R5gamRK8uPAAF83dVCMI4366.jpg

路由器发现阶段的步骤:

seq序列号

I(init)=1,是1类的DBD,里面没有LSA,所以体积很小。就是协商主从,在后续的同步LSA中,谁占主动,谁占被动,而且根据谁的序列号统一LSDB中的LSA的序列号。I=0表示已经协商完毕。

M(more)=1,表示后面还有更多的DBD发过来,=0的时候表示这是我最后一个DBD的报文。

MS(master)=1,表示我认为我应该占主动,对比的原则是谁的router-id大谁做主。对比完后,小的一方会把自己的ms设置为0。

A进入EX-start(预启动状态),A先给B发送DBD报文,因为router-id是1.1,因为先要协商主从,所以第一个DBD报文,不包含具体的LSA,spacer.gif;B收到A发来的DBD报文,进入EX-start状态,发现他的router-id比自己的小,发DBD报文给A,告诉A你不是主,我才是主,因为我的router-id比你大,所以I=1;A收到B的DBD报文,知道B是主,(因为已经协商好了谁是主从的问题,A将自己下一个要发的DBD报文的I位置为0,以为自己的不是主所以ms也置为0A进入exchange(交换2DBD的状态,2DBD包括LSA),AB发送DBD说这是我的链路状态数据库的汇总信息,spacer.gifB收到A发来的DBD报文,进入exchange状态,发汇总信息给Aspacer.gif,因为自己是主所以ms位置为1

wKiom1R5gTTDq6pcAAFDqEky4Rs137.jpg

路由发现阶段步骤:

BA发送DBD,告诉A这是他的汇总信息,因为M=0,所以告诉A这是我的最后一个DBDA收到BDBDA会收集自己所需要的完整的LSA,A 进入loading状态,A给B发送汇总信息,告诉B自己已经没有DBD了,然后B已经有了完整的LSA所以A进入full状态;因为A需要维护一个LSA的列表,所以向B发送一个LSR,对B说我需要你完整的关于172.16.10.0网络的信息,B收到后给A回去 LSU,告诉A这是172.16.10.0网络的信息,A收到后进入full状态,A回复给B一个ACK的消息,告诉B已收到。双方开始进入路由的收敛。


本文出自 “用心去创造未来” 博客,请务必保留此出处http://fengkuanglaolou.blog.51cto.com/9657652/1584502

OSPF邻居建立过程