OSPF算法是目前路由器使用的最广泛的动态路由协议之一,其重要性可想而知。
OSPF(OPEN SHORTEST PATH FIRST)全称是开放式最短路径优先协议,是一种无类别链路状态型动态路由协议,使用的是特殊的SPF算法,下面我们来谈谈其工作原理
五种数据包
hello包;路由器在宣告本地直连拓扑之后,会向周围发送hello包,收到包含自己routerid的hello包时,标志着彼此邻居关系的建立,在BMA网络中hello包的周期一般是10s
DBD包;邻居关系建立完成后,路由器会互相向对方发送DBD包,DBD包可以理解成一种数据库的目录,可以大致查阅对方链路状态数据库LSDB的内容,并且与自己对照
LSR包;链路状态请求包,路由器在收到对方发来的目录,对照自己的数据库,然后将自己没有但是对方有的LSA以LSR包的形式发送给对方,请求对方回复
LSU包;链路状态更新包,在收到对方的请求后,将缺少的LSA以LSU的形式发送给对方,用来填补缺少的部分
LSACK包;在收到对方的LSU包之后,给对方回应一个LSACK包,表示确认收到
七种状态机
OSPF在建立关系的过程中,有七种不同的状态,被称为状态机
DOWN:在发送hello包之前的关系
INIT:在向对方发送一个hello包之后,状态变为init
2-WAY:在收到包含自己router-id的hello包后,状态机显示为2way,标志着邻居关系的建立
EXSTART:预启动状态,在进入下一步状态之前的准备阶段,路由器开始向邻居发送不包含链路状态的DBD包
EXCHANGE:此状态路由器会互相交换包含链路状态信息的DBD报文,来描述本地LSDB的内容
LOADING:此时,路由器向对方发送LSR,相互请求对方给自己没有的LSA
FULL:标志着邻接关系建立
工作过程
1、互相发送hello包,建立、维护、更新邻居关系
2、互相发送和接受LSA,直到LSDB同步,建立邻接关系
3、基于收到的拓扑,以自己为中心生成结构图,然后根据SPF算法生成最短路径树