OSPF

OSPF Open Shortest Path First (开放最短路径优先)的缩写。它是 IETF 组织开发的一个基于链路状态的内部网关协议。目前针对 IPv4 协议使用的是 OSPF Version 2 RFC 2328 )。
OSPF 具有如下特点:
l              适应范围广——支持各种规模的网络,最多可支持几百台路由器。
l              快速收敛——在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
l              无自环——由于 OSPF 根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
l              区域划分——允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。
l              等价路由——支持到同一目的地址的多条等价路由。
l              路由分级——使用 4 类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
l              支持验证——支持基于接口的报文验证,以保证报文交互的安全性。
l              组播发送——在某些类型的链路上以组播地址发送协议报文,减少对其他设备的干扰。

OSPF的基本概念

1. 自治系统(Autonomous System
一组使用相同路由协议交换路由信息的路由器,缩写为 AS
2. OSPF路由的计算过程
OSPF 协议路由的计算过程可简单描述如下:
l              每台 OSPF 路由器根据自己周围的网络拓扑结构生成 LSA Link State Advertisement ,链路状态通告),并通过更新报文将 LSA 发送给网络中的其它 OSPF 路由器。
l              每台 OSPF 路由器都会收集其它路由器通告的 LSA ,所有的 LSA 放在一起便组成了 LSDB Link State Database ,链路状态数据库)。 LSA 是对路由器周围网络拓扑结构的描述, LSDB 则是对整个自治系统的网络拓扑结构的描述。
l              OSPF 路由器将 LSDB 转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。各个路由器得到的有向图是完全相同的。
l              每台路由器根据有向图,使用 SPF 算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。
3. 路由器ID
一台路由器如果要运行 OSPF 协议,则必须存在 RID Router ID ,路由器 ID )。 RID 是一个 32 比特无符号整数,可以在一个自治系统中唯一的标识一台路由器。
RID 可以手工配置,也可以自动生成;如果没有通过命令指定 RID ,将按照如下顺序自动生成一个 RID
l              如果当前设备配置了 Loopback 接口,将选取所有 Loopback 接口上数值最大的 IP 地址作为 RID
l              如果当前设备没有配置 Loopback 接口,将选取它所有已经配置 IP 地址且链路有效的接口上数值最大的 IP 地址作为 RID
4. OSPF的协议报文
OSPF 有五种类型的协议报文:
l              Hello 报文:周期性发送,用来发现和维持 OSPF 邻居关系。内容包括一些定时器的数值、 DR Designated Router ,指定路由器)、 BDR Backup Designated Router ,备份指定路由器)以及自己已知的邻居。
l              DD Database Description ,数据库描述)报文:描述了本地 LSDB 中每一条 LSA 的摘要信息,用于两台路由器进行数据库同步。
l              LSR Link State Request ,链路状态请求)报文:向对方请求所需的 LSA 。两台路由器互相交换 DD 报文之后,得知对端的路由器有哪些 LSA 是本地的 LSDB 所缺少的,这时需要发送 LSR 报文向对方请求所需的 LSA 。内容包括所需要的 LSA 的摘要。
l              LSU Link State Update ,链路状态更新)报文:向对方发送其所需要的 LSA
l              LSAck Link State Acknowledgment ,链路状态确认)报文:用来对收到的 LSA 进行确认。内容是需要确认的 LSA Header (一个报文可对多个 LSA 进行确认)。
5. LSA的类型
OSPF 中对链路状态信息的描述都是封装在 LSA 中发布出去,常用的 LSA 有以下几种类型:
l              Router LSA Type1 ):由每个路由器产生,描述路由器的链路状态和开销,在其始发的区域内传播。
l              Network LSA Type2 ):由 DR 产生,描述本网段所有路由器的链路状态,在其始发的区域内传播。
l              Network Summary LSA Type3 ):由 ABR Area Border Router ,区域边界路由器)产生,描述区域内某个网段的路由,并通告给其他区域。
l              ASBR Summary LSA Type4 ):由 ABR 产生,描述到 ASBR Autonomous System Boundary Router ,自治系统边界路由器)的路由,通告给相关区域。
l              AS External LSA Type5 ):由 ASBR 产生,描述到 AS Autonomous System ,自治系统)外部的路由,通告到所有的区域(除了 Stub 区域和 NSSA 区域)。
l              NSSA External LSA Type7 ):由 NSSA Not-So-Stubby Area )区域内的 ASBR 产生,描述到 AS 外部的路由,仅在 NSSA 区域内传播。
l              Opaque LSA :是一个被提议的 LSA 类别,由标准的 LSA 头部后面跟随特殊应用的信息组成,可以直接由 OSPF 协议使用,或者由其它应用分发信息到整个 OSPF 域间接使用。 Opaque LSA 分为 Type 9 Type10 Type11 三种类型,泛洪区域不同;其中, Type 9 Opaque LSA 仅在本地链路范围进行泛洪, Type 10 Opaque LSA 仅在本地区域范围进行泛洪, Type 11 LSA 可以在一个自治系统范围进行泛洪。
6. 邻居和邻接
OSPF 中,邻居( Neighbor )和邻接( Adjacency )是两个不同的概念。
OSPF 路由器启动后,便会通过 OSPF 接口向外发送 Hello 报文。收到 Hello 报文的 OSPF 路由器会检查报文中所定义的参数,如果双方一致就会形成邻居关系。
形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换 DD 报文,交换 LSA 并达到 LSDB 的同步之后,才形成真正意义上的邻接关系。