OSPF的数据包和工作过程
一、ospf有五个数据包,分别是:
1.Hello :用于邻居路由发现,建立和保活,其周期发送,(DR和BDR使用组播地址224.0.0.5向邻居发送报文,其它路由器向DR和BDR使用224.0.0.6发送报文,点到点(p2p)和广播hello时间是10s,NBMA和点到多点(p2mp)是30s
2.DBD:数据库描述,通俗的讲是lsa的集合。
3.Lsa:向对端路由器请求lsa,其动作行为发生在dbd报文后。
4.Lsu:向对端发送其拥有的lsa。
5.Lsack:收到对方的lsa时发送,相当于tcp中的ACK。(
#ospf跨层分装到三层网络层
ospf自身提供主从协商机制,可以保证可靠的传输,另外全网路由器保持着同样的一个lsdb,当拓扑发生变化时,需要 携带的变更信息较少,并且其基于lsack,所以通过IP协议即可完成。
二、ospf邻居的八种状态
1. Down:一旦启动协议本地发出hello包进入下一状态。
2. Init初始化:本地收到对端的hello包,若hello包中存在自router-id,则直接进入下一状态。
3.2-way:邻居关系建立标志。
条件匹配:
点到点直接进入下一状态,MA网络进行DR/BDR选举(40s),非DR/BDR不能进入下一状态;
若匹配成功,则进入下一状态,否则仅发送Hello包保活。
4.exstart:预启动:使用假的dbd包进行主从选举,RID数值大的优先进入下一状态。
5.exchange准交换:使用真正的DBD进行数据库目录的共享,
6.loading加载:使用lsr/lsu/lsack来获取未知lsa信息。
7.Full转发:邻居关系建立,收敛完成。
三、配置过程和抓包分析
1.用抓包工具抓取路由器邻接的过程
2.hello包,双方都第一次发hello包,所以使用组播发送,并建立邻居关系,选出了DR和BDR。
#可以看出应有邻居关系
3.dbd包
#R1向R2发dbd包,此时***1167
#R2向R1发dbd包,序列好为9817
#R1向R2发dbd包,***为9817,默认跟着R2走,类似于服从R2。
#R2向R1发包,***9818,是一种隐形确认。此时选出了主从,主将优先进入下一状态。(此时DR和BDR有主从之分)
4.LS request包
#R1为从,首先它向主R2发出请求,请求主的lsa,随后又将自己的lsa发给R2。
5.LS update包
#主R2收到从R1的request包和dbd包后,将R1没有的lsa发过去。
#R2向R1 发起请求。
#R1在一次向R2发送lsa.
5.ls ack 包
#正真的dbd包交互完成,从向主发起确认,从而保证主给它的lsa。
6、full(邻接关系建立)