标签:ospf邻居建立过程
创建邻接的过程:AB开始都是DOWN状态。
A向B发送一个hello包,告诉B我的router-id是172.16.1.1,我没有已知邻居;B收到了hello包,知道A是自己的邻居,将172.16.1.1加入到自己的邻居表,进入初始化(init)状态,B向A发hello包,告诉A我的router-id是172.16.1.2,我已知的邻居是A,A收到B的hello包,将172.16.1.1加入到自己的邻居表,B成为A的邻接路由器,(如果是一个MA网络的话,AB都知道了双方的router-id后,会协商DR,BDR,因为B的router-id大所以B就会成为DR)A向B发hello包,告诉B我的router-id是172.16.1.1,我的邻居是B,B收到hello包,A成为B的邻接路由器。
路由器发现阶段的步骤:
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,;B收到A发来的DBD报文,进入EX-start状态,发现他的router-id比自己的小,发DBD报文给A,告诉A你不是主,我才是主,因为我的router-id比你大,所以I=1;A收到B的DBD报文,知道B是主,(因为已经协商好了谁是主从的问题,A将自己下一个要发的DBD报文的I位置为0,以为自己的不是主所以ms也置为0)A进入exchange(交换2类DBD的状态,2类DBD包括LSA),A给B发送DBD说这是我的链路状态数据库的汇总信息,,B收到A发来的DBD报文,进入exchange状态,发汇总信息给A,,因为自己是主所以ms位置为1。
路由发现阶段步骤:
B向A发送DBD,告诉A这是他的汇总信息,因为M=0,所以告诉A这是我的最后一个DBD,A收到B的DBD,A会收集自己所需要的完整的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邻居建立过程
原文地址:http://fengkuanglaolou.blog.51cto.com/9657652/1584502