OSPF定义
开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。 目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。如无特殊说明,本文中所指的OSPF均为OSPF Version 2。
为什么使用OSPF?
在OSPF出现前,网络上广泛使用RIP(Routing Information Protocol)作为内部网关协议。
由于RIP是基于距离矢量算法的路由协议,存在着收敛慢、路由环路、可扩展性差等问题,所以逐渐被OSPF取代。
OSPF作为基于链路状态的协议,能够解决RIP所面临的诸多问题。此外,OSPF还有以下优点:
OSPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响。
OSPF支持无类型域间选路(CIDR)。
OSPF支持对等价路由进行负载分担。
OSPF支持报文加密。
OSPF特点
OSPF把自治系统AS(Autonomous System)划分成逻辑意义上的一个或多个区域;
OSPF通过LSA(Link State Advertisement)的形式发布路由;
OSPF依靠在OSPF区域内各设备间交互OSPF报文来达到路由信息的统一;
OSPF报文封装在IP报文内,可以采用单播或组播的形式发送。
OSPF Router-ID介绍以及选取方式
一台路由器如果要运行OSPF协议,必须存在Router ID。Router ID是一个32比特无符号整数,是一台路由器在自治系统中的唯一标识。
Router ID的选取有两种方式:
通过命令行手动配置。 设备自动设定。 如果没有手动配置Router ID,设备会从当前接口的IP地址中自动选取一个作为Router ID。其选取顺序是: 优先从Loopback地址中选择最大的IP地址作为Router ID。 如果没有配置Loopback接口,则在接口地址中选取最大的IP地址作为Router ID。 只有重新配置系统的Router ID或者OSPF的Router ID,并且重新启动OSPF进程后,才会进行Router ID的重新选取。
OSPF区域组作用
普通区域
缺省情况下,普通OSPF区域内的OSPF设备是不会产生缺省路由的,即使它有缺省路由。
当网络中缺省路由通过其他路由进程产生时,路由器必须将缺省路由通告到整个OSPF自治域中。实现方法是在ASBR上手动通过命令进行配置,产生缺省路由。配置完成后,路由器会产生一个缺省ASE LSA(Type5 LSA),并且通告到整个OSPF自治域中。
如果ASBR上没有缺省路由,则路由器不会通告缺省路由。
Stub区域
Stub区域不允许自治系统外部的路由(Type5 LSA)在区域内传播。
区域内的路由器必须通过ABR学到自治系统外部的路由。实现方法是ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个Stub区域内。这样,到达自治系统的外部路由就可以通过ABR到达。
Totally STUB区域
Totally Stub区域既不允许自治系统外部的路由(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)(除了缺省的Type3 LSA之外)在区域内传播。
区域内的路由器必须通过ABR学到自治系统外部和其他区域的路由。实现方法是配置Totally Stub区域后,ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个Totally Stub区域内。这样,到达自治系统外部的路由和其他区域间的路由都可以通过ABR到达。
NSSA(Not-So-Stubby Area)区域
NSSA区域允许引入少量通过本区域的ASBR到达的外部路由,但不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播。如果骨干区域中存在Full状态的邻居和Up状态的接口,ABR会自动产生一条缺省的NSSA LSA(Type7 LSA),通告到整个NSSA区域内。这样,除了某少部分路由通过NSSA的ASBR到达,其它路由都可以通过NSSA的ABR到达。在ASBR上手动通过命令进行配置,使ASBR产生一条缺省的NSSA LSA(Type7 LSA),通告到整个NSSA区域内。这样,外部路由也可以通过本区域NSSA的ASBR到达。
Type7 LSA缺省路由不会在ABR上转换成Type5 LSA缺省路由泛洪到整个OSPF域。
Totally NSSA区域
Totally NSSA区域既不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)(除了缺省的Type3 LSA之外)在区域内传播。
区域内的路由器必须通过ABR学到其他区域的路由。实现方法是配置Totally NSSA区域后,ABR会自动产生缺省的Type3 LSA和Type7 LSA通告到整个Totally NSSA区域内。这样,自治系统外部路由和区域间路由都可以通过ABR在区域内传播。
OSPF报文
Hello报文:周期性发送,用来发现和维持OSPF邻居关系。 DD报文(Database Description packet):描述本地LSDB(Link State Database)的摘要信息,用于两台设备进行数据库同步。 LSR报文(Link State Request packet):用于向对方请求所需的LSA。设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。 LSU报文(Link State Update packet):用于向对方发送其所需要的LSA。 LSAck报文(Link State Acknowledgment packet):用来对收到的LSA进行确认。
OSPF LSA类型
Router-LSA(Type1):每个设备都会产生,描述了设备的链路状态和开销,在所属的区域内传播。 Network-LSA(Type2):由DR(Designated Router)产生,描述本网段的链路状态,在所属的区域内传播。 Network-summary-LSA(Type3):由ABR产生,描述区域内某个网段的路由,并通告给其他区域(除了Totally Stub和Totally NSSA区域)。 ASBR-summary-LSA(Type4):由ABR产生,描述本区域到其他区域中的ASBR的路由,通告给除ASBR所在区域的其他区域(除了Stub区域、Totally Stub、NSSA区域和Totally NSSA区域)。 AS-external-LSA(Type5):由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了Stub区域、Totally Stub、NSSA区域和Totally NSSA区域)。 NSSA LSA(Type7):由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。 Opaque LSA(Type9/Type10/Type11): Type9 LSA仅在接口所在网段范围内传播。用于支持GR的Grace LSA就是Type9 LSA的一种。 Type10 LSA在区域内传播。用于支持TE的LSA就是Type10 LSA的一种。 Type11 LSA在自治域内传播,目前还没有实际应用的例子。
OSPF支持的网络类型
广播类型(Broadcast)、NBMA类型(Non-Broadcast Multi-Access)、点到多点P2MP类型(Point-to-Multipoint)、点到点P2P类型(point-to-point)