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转发:邻居关系建立,收敛完成。

三、配置过程和抓包分析

OSPF的数据包和工作过程

1.用抓包工具抓取路由器邻接的过程

OSPF的数据包和工作过程

2.hello包,双方都第一次发hello包,所以使用组播发送,并建立邻居关系,选出了DR和BDR。

OSPF的数据包和工作过程

OSPF的数据包和工作过程

#可以看出应有邻居关系

OSPF的数据包和工作过程

3.dbd包

#R1向R2发dbd包,此时***1167

OSPF的数据包和工作过程

#R2向R1发dbd包,序列好为9817

OSPF的数据包和工作过程

#R1向R2发dbd包,***为9817,默认跟着R2走,类似于服从R2。

OSPF的数据包和工作过程

#R2向R1发包,***9818,是一种隐形确认。此时选出了主从,主将优先进入下一状态。(此时DR和BDR有主从之分)

OSPF的数据包和工作过程

4.LS request包

#R1为从,首先它向主R2发出请求,请求主的lsa,随后又将自己的lsa发给R2。

OSPF的数据包和工作过程

5.LS update包

 #主R2收到从R1的request包和dbd包后,将R1没有的lsa发过去。

OSPF的数据包和工作过程

#R2向R1 发起请求。

OSPF的数据包和工作过程

#R1在一次向R2发送lsa.

OSPF的数据包和工作过程

5.ls ack 包

#正真的dbd包交互完成,从向主发起确认,从而保证主给它的lsa。

OSPF的数据包和工作过程

6、full(邻接关系建立)

OSPF的数据包和工作过程

OSPF的数据包和工作过程