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

OSPF的基本概念

1. 自治系统(Autonomous System

一组使用相同路由协议交换路由信息的路由器,缩写为AS

2. OSPF路由的计算过程

OSPF协议路由的计算过程可简单描述如下:
l              每台OSPF路由器根据自己周围的网络拓扑结构生成LSALink State Advertisement,链路状态通告),并通过更新报文将LSA发送给网络中的其它OSPF路由器。
l              每台OSPF路由器都会收集其它路由器通告的LSA,所有的LSA放在一起便组成了LSDBLink State Database,链路状态数据库)。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。
l              OSPF路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。各个路由器得到的有向图是完全相同的。
l              每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。

3. 路由器ID

一台路由器如果要运行OSPF协议,则必须存在RIDRouter ID,路由器ID)。RID是一个32比特无符号整数,可以在一个自治系统中唯一的标识一台路由器。
RID可以手工配置,也可以自动生成;如果没有通过命令指定RID,将按照如下顺序自动生成一个RID
l              如果当前设备配置了Loopback接口,将选取所有Loopback接口上数值最大的IP地址作为RID
l              如果当前设备没有配置Loopback接口,将选取它所有已经配置IP地址且链路有效的接口上数值最大的IP地址作为RID

4. OSPF的协议报文

OSPF有五种类型的协议报文:
l              Hello报文:周期性发送,用来发现和维持OSPF邻居关系。内容包括一些定时器的数值、DRDesignated Router,指定路由器)、BDRBackup Designated Router,备份指定路由器)以及自己已知的邻居。
l              DDDatabase Description,数据库描述)报文:描述了本地LSDB中每一条LSA的摘要信息,用于两台路由器进行数据库同步。
l              LSRLink State Request,链路状态请求)报文:向对方请求所需的LSA。两台路由器互相交换DD报文之后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。
l              LSULink State Update,链路状态更新)报文:向对方发送其所需要的LSA
l              LSAckLink State Acknowledgment,链路状态确认)报文:用来对收到的LSA进行确认。内容是需要确认的LSAHeader(一个报文可对多个LSA进行确认)。

5. LSA的类型

OSPF中对链路状态信息的描述都是封装在LSA中发布出去,常用的LSA有以下几种类型:
l              Router LSAType1):由每个路由器产生,描述路由器的链路状态和开销,在其始发的区域内传播。
l              Network LSAType2):由DR产生,描述本网段所有路由器的链路状态,在其始发的区域内传播。
l              Network Summary LSAType3):由ABRArea Border Router,区域边界路由器)产生,描述区域内某个网段的路由,并通告给其他区域。
l              ASBR Summary LSAType4):由ABR产生,描述到ASBRAutonomous System Boundary Router,自治系统边界路由器)的路由,通告给相关区域。
l              AS External LSAType5):由ASBR产生,描述到ASAutonomous System,自治系统)外部的路由,通告到所有的区域(除了Stub区域和NSSA区域)。
l              NSSA External LSAType7):由NSSANot-So-Stubby Area)区域内的ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。
l              Opaque LSA:是一个被提议的LSA类别,由标准的LSA头部后面跟随特殊应用的信息组成,可以直接由OSPF协议使用,或者由其它应用分发信息到整个OSPF域间接使用。Opaque LSA分为Type 9Type10Type11三种类型,泛洪区域不同;其中,Type 9Opaque LSA仅在本地链路范围进行泛洪,Type 10Opaque LSA仅在本地区域范围进行泛洪,Type 11LSA可以在一个自治系统范围进行泛洪。

6. 邻居和邻接

OSPF中,邻居(Neighbor)和邻接(Adjacency)是两个不同的概念。
OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文。收到Hello报文的OSPF路由器会检查报文中所定义的参数,如果双方一致就会形成邻居关系。
形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD报文,交换LSA并达到LSDB的同步之后,才形成真正意义上的邻接关系。