一、OSPF是什么?
       Open Shortest Path First, 开放最短路径优先协议,是一种开源的使用最
短路径优先(SPF)算法的内部网关协议(IGP)。常用于路由器的动态选路。

二、OSPF常见的几个概念
1. 邻居(Neighbor):宣告OSPF的路由器从所有启动OSPF协议的接口上发
出Hello数据包。若两台路由器在同一条链路上,并且它们根据hello消息中指定
的某些信息(比如id等)协商成功,那么它们就成为了邻居(Neighbor)。

2. 邻接关系(Adjacency):两台邻居路由器之间构成的一条点到点的虚链路,
邻接关系的建立是由交换hello信息的路由器类型和网络类型决定的。

3. 链路状态通告(Link State Advertisement,LSA):每一台路由器都会在所
有形成邻接关系的邻居之间发送链路状态通告LSA。LSA描述了路由器所有的
链路、接口、邻居等信息。
注:ospf定义了许多不同的LSA类型。

4. 链路状态数据库(LSDB):每一台收到来自邻居路由器发出的LSA的路由
器都会把这些LSA信息记录在它的LSDB中,并且发送一份LSA的拷贝给该路
由器的其他所有邻居。这样当LSA传播到整个区域后,区域内所有的路由器都
会形成同样的LSDB。

三、OSPF原理概括
1. 当这些路由器的LSDB完全相同时,每一台路由器都会以自身为根结点,使
用最短路径优先(Shortest Path First,SPF)算法计算一个无环路的拓扑图,
这个拓扑图就是SPF算法树。每台路由器都会从自己的SPF算法树中构建出自
己的路由表,用于动态选路。

2. 当区域内所有节点的LSDB状态都已同步后,ospf协议将会变的平静下来,
邻居之间根据配置固定时间交换hello数据包作为心跳消息,并且每隔30分钟
传一次LSA。如果网络拓扑稳定,那么ospf也是稳定的。如果网络拓扑发生了
变化,比如有节点故障或者新增节点,那么将重新开始交换信息并计算路由。

3. OSPF拓扑中的节点可以分为两类:传输节点和末梢节点。传输节点指网络
链路中的中转路由器,它一般两端与其他ospf邻居相连,作用仅是转发数据包
而数据包的源网络和目的网络往往都不同于传输节点所在的网络;末梢节点指
网络链路中的末端路由器,它一般只有一端与ospf邻居相连,作为数据包的源
头或者目的地。OSFP协议在末梢节点宣告主机路由(也就是子网掩码为255.2
55.255.255的路由),这样拓扑中其他节点要访问末梢节点就可以在LSDB中
查到对应的信息,并通过SPF算法生成的最短路径进行访问。