目录
5、LSACK包(Link State Acknowledgment)
down——>init——>two-way——>exstart——>exchange——>loading——>full
OSPF的五种包:
1、Hello包 ——只在状态init、状态exstart发送
功能:用于建立和维持邻居关系 (每10s相互发送Hello包,若40s内没有发送,则邻居关系删除)
重要字段:路由器的router-id
路由器接口的area-id (必须一致)
路由器接口的IP地址和掩码
路由器接口的认证,hello时间间隔,死亡时间间隔(必须一致)
neighbor字段
STUB标识(末节标识)(必须一致)
2、DBD包(database description)——只在状态exchange发送
只在以下状态发送:exchange
功能:用于对OSPF的网络拓扑进行描述
3、LSR包(Link State Request)——只在状态loading发送
功能:用于请求对方的路由信息
4、LSU包(Link State Update)——只在状态loading发送
功能:用于存储和传递路由信息
5、LSACK包(Link State Acknowledgment)——只在状态loading发送
功能:用于对LSU等包进行可靠确认
OSPF建立邻居过程的7个状态机:
down——>init——>two-way——>exstart——>exchange——>loading——>full
1.down //双方还没有进行任何交互
2.init //此状态只交互hello包,没有同步任何路由信息
3.two-way //达到状态two-way,建立邻居关系
4.exstart // 进行主从关系选举,为了确定谁在exchange状态先发送DBD包
5.exchange //通过交互DBD包,建立各自的拓扑表
6.loading //请求对方路由信息,此状态交互LSR包、LSU包、LSACK包
7.full //建立邻接关系 达到LSDB的同步
对OSPF建立邻居过程分析
OSPF建立过程可以简单分为以下三个过程
①建立邻居关系
②建立各自拓扑表
③建立邻接关系
①建立邻居关系:down ——>init ——>two-way ----->
分析:在状态init,路由器会互相发送hello包,hello包重要字段如下:
路由器的router-id
路由器接口的area-id(必须一致)
路由器接口的IP地址和掩码
路由器接口的认证,hello时间间隔,死亡时间间隔(必须一致)
neighbor字段
STUB标识(末节标识)(必须一致)
只有两路由器的接口aera-id字段、接口的认证,hello时间间隔,
死亡时间间隔、STUB标识一致,路由器才会到状态two-way,建立邻居关系
②建立各自拓扑表:exstart ——>exchange ----->
分析:在状态exstart通过发送hello包进行主从关系选举(master/slave),
为了确定谁在exchange状态先发送DBD包
主从关系选举是通过比较两台路由器的Router ID大小,
Router ID大的为master路由器,由master路由器先交互DBD包
主从关系选举后,进入状态exchange ,在此状态通过交互DBD包,建立各自的拓扑表
③建立邻接关系:loading ——>full
分析:建立各自的拓扑表后,进入状态loading,请求对方路由信息,
如图左边路由器,发送LSR包请求172.16.6.0/24的路由信息
右边路由器收到LSR包后,会回复LSU包,来告知172.16.6.0/24的路由信息
左边路由器收到LSU包后,会回复LSACK包,用于对LSU包进行可靠确认
交互完路由信息,达到full状态,路由器之间建立邻接关系 达到LSDB的同步