OSPF简介

1 OSPF

1.1 OSPF简介

1.1.1 OSPF的特点

1.1.2 OSPF报文类型

1.1.3 LSA类型

1.1.4 OSPF区域

1.1.5 路由器类型

1.1.6 路由类型

1.1.7 路由器ID

1.1.8 OSPF路由的计算过程

1.1.9 OSPF的网络类型

1.1.10 DR/BDR

1.1.11 协议规范

1 OSPF

1.1  OSPF简介

OSPF(Open Shortest Path First,开放最短路径优先)是IETF(Internet Engineering Task Force,互联网工程任务组)组织开发的一个基于链路状态的内部网关协议。目前针对IPv4协议使用的是OSPF Version 2。下文中所提到的OSPF均指OSPF Version 2。

1.1.1  OSPF的特点

OSPF具有如下特点:

·适应范围广:支持各种规模的网络,最多可支持几百台路由器。

·快速收敛:在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。

·无自环:由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。

·区域划分:允许自治系统的网络被划分成区域来管理。路由器链路状态数据库的减小降低了内存的消耗和CPU的负担;区域间传送路由信息的减少降低了网络带宽的占用。

·等价路由:支持到同一目的地址的多条等价路由。

·路由分级:使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。

·支持验证:支持基于区域和接口的报文验证,以保证报文交互和路由计算的安全性。

·组播发送:在某些类型的链路上以组播地址发送协议报文,减少对其他设备的干扰。

1.1.2  OSPF报文类型

OSPF协议报文直接封装为IP报文,协议号为89。

OSPF有五种类型的协议报文:

·Hello报文:周期性发送,用来发现和维持OSPF邻居关系,以及进行DR(Designated Router,指定路由器)/BDR(Backup Designated Router,备份指定路由器)的选举。

·DD(Database Description,数据库描述)报文:描述了本地LSDB(Link State DataBase,链路状态数据库)中每一条LSA(Link State Advertisement,链路状态通告)的摘要信息,用于两台路由器进行数据库同步。

·LSR(Link State Request,链路状态请求)报文:向对方请求所需的LSA。两台路由器互相交换DD报文之后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。

·LSU(Link State Update,链路状态更新)报文:向对方发送其所需要的LSA。

·LSAck(Link State Acknowledgment,链路状态确认)报文:用来对收到的LSA进行确认。

1.1.3  LSA类型

OSPF中对链路状态信息的描述都是封装在LSA中发布出去,常用的LSA有以下几种类型:

·Router LSA(Type-1):由每个路由器产生,描述路由器的链路状态和开销,在其始发的区域内传播。

·Network LSA(Type-2):由DR产生,描述本网段所有路由器的链路状态,在其始发的区域内传播。

·Network Summary LSA(Type-3):由ABR(Area Border Router,区域边界路由器)产生,描述区域内某个网段的路由,并通告给其他区域。

·ASBR Summary LSA(Type-4):由ABR产生,描述到ASBR(Autonomous System Boundary Router,自治系统边界路由器)的路由,通告给相关区域。

·AS External LSA(Type-5):由ASBR产生,描述到AS(Autonomous System,自治系统)外部的路由,通告到所有的区域(除了Stub区域和NSSA区域)。

·NSSA External LSA(Type-7):由NSSA(Not-So-Stubby Area)区域内的ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。

·Opaque LSA:用于OSPF的扩展通用机制,目前有Type-9、Type-10和Type-11三种。其中,Type-9 LSA仅在本地链路范围进行泛洪,用于支持GR(Graceful Restart,平滑重启)的Grace LSA就是Type-9的一种类型;Type-10 LSA仅在区域范围进行泛洪,用于支持MPLS TE的LSA就是Type-10的一种类型;Type-11 LSA可以在一个自治系统范围进行泛洪。

1.1.4  OSPF区域

1. 区域划分

随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF协议时,LSDB会占用大量的存储空间,并使得运行SPF(Shortest Path First,最短路径优先)算法的复杂度增加,导致CPU负担加重。

在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“震荡”之中,造成网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。

OSPF协议通过将自治系统划分成不同的区域来解决上述问题。区域是从逻辑上将路由器划分为不同的组,每个组用区域号来标识。如图1-1所示。

图1-1 OSPF区域划分

 

 

区域的边界是路由器,而不是链路。一个路由器可以属于不同的区域,但是一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。划分区域后,可以在区域边界路由器上进行路由聚合,以减少通告到其他区域的LSA数量,还可以将网络拓扑变化带来的影响最小化。

2. 骨干区域(Backbone Area)

OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号是0,通常被称为骨干区域。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此,OSPF有两个规定:

·所有非骨干区域必须与骨干区域保持连通;

·骨干区域自身也必须保持连通。

在实际应用中,可能会因为各方面条件的限制,无法满足上面的要求。这时可以通过配置OSPF虚连接予以解决。

3. 虚连接(Virtual Link)

虚连接是指在两台ABR之间通过一个非骨干区域建立的一条逻辑上的连接通道。它的两端必须是ABR,而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区(Transit Area)。

在图1-2中,Area2与骨干区域之间没有直接相连的物理链路,但可以在ABR上配置虚连接,使Area2通过一条逻辑链路与骨干区域保持连通。

图1-2 虚连接示意图之一

 

 

虚连接的另外一个应用是提供冗余的备份链路,当骨干区域因链路故障不能保持连通时,通过虚连接仍然可以保证骨干区域在逻辑上的连通性。如图1-3所示。

图1-3 虚连接示意图之二

 

 

虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,在这个连接上,和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。

两台ABR之间直接传递OSPF报文信息,它们之间的OSPF路由器只是起到一个转发报文的作用。由于协议报文的目的地址不是中间这些路由器,所以这些报文对于它们而言是透明的,只是当作普通的IP报文来转发。

4. Stub区域和Totally Stub区域

Stub区域是一些特定的区域,该区域的ABR会将区域间的路由信息传递到本区域,但不会引入自治系统外部路由,区域中路由器的路由表规模以及LSA数量都会大大减少。为保证到自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由Type-3 LSA,发布给本区域中的其他非ABR路由器。

为了进一步减少Stub区域中路由器的路由表规模以及LSA数量,可以将区域配置为Totally Stub(完全Stub)区域,该区域的ABR不会将区域间的路由信息和自治系统外部路由信息传递到本区域。为保证到本自治系统的其他区域和自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由Type-3 LSA,发布给本区域中的其他非ABR路由器。

5. NSSA区域和Totally NSSA区域

NSSA(Not-So-Stubby Area)区域是Stub区域的变形,与Stub区域的区别在于NSSA区域允许引入自治系统外部路由,由ASBR发布Type-7 LSA通告给本区域。当Type-7 LSA到达NSSA的ABR时,由ABR将Type-7 LSA转换成Type-5 LSA,传播到其他区域。

可以将区域配置为Totally NSSA(完全NSSA)区域,该区域的ABR不会将区域间的路由信息传递到本区域。为保证到本自治系统的其他区域的路由依旧可达,该区域的ABR将生成一条缺省路由Type-3 LSA,发布给本区域中的其他非ABR路由器。

如图1-4所示,运行OSPF协议的自治系统包括3个区域:区域0、区域1和区域2,另外两个自治系统运行RIP协议。区域1被定义为NSSA区域,区域1接收的RIP路由传播到NSSA ASBR后,由NSSA ASBR产生Type-7 LSA在区域1内传播,当Type-7 LSA到达NSSA ABR后,转换成Type-5 LSA传播到区域0和区域2。

另一方面,运行RIP的自治系统的RIP路由通过区域2的ASBR产生Type-5 LSA在OSPF自治系统中传播。但由于区域1是NSSA区域,所以Type-5 LSA不会到达区域1。

图1-4 NSSA区域

 

 

1.1.5  路由器类型

OSPF路由器根据在AS中的不同位置,可以分为以下四类:

1. 区域内路由器(Internal Router)

该类路由器的所有接口都属于同一个OSPF区域。

2. 区域边界路由器ABR

该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。

3. 骨干路由器(Backbone Router)

该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。

4. 自治系统边界路由器ASBR

与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它有可能是区域内路由器,也有可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。

图1-5 OSPF路由器的类型

 

 

1.1.6  路由类型

OSPF将路由分为四类,按照优先级从高到低的顺序依次为:

·区域内路由(Intra Area)

·区域间路由(Inter Area)

·第一类外部路由(Type1 External):这类路由的可信程度较高,并且和OSPF自身路由的开销具有可比性,所以到第一类外部路由的开销等于本路由器到相应的ASBR的开销与ASBR到该路由目的地址的开销之和。

·第二类外部路由(Type2 External):这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以计算路由开销时将主要考虑前者,即到第二类外部路由的开销等于ASBR到该路由目的地址的开销。如果计算出开销值相等的两条路由,再考虑本路由器到相应的ASBR的开销。

区域内和区域间路由描述的是AS内部的网络结构,外部路由则描述了应该如何选择到AS以外目的地址的路由。

1.1.7  路由器ID

路由器ID——即Router ID,用来在一个自治系统中唯一地标识一台路由器,一台路由器如果要运行OSPF协议,则必须存在Router ID。Router ID的获取方式有以下两种:

1. 手工指定Router ID

用户可以在创建OSPF进程的时候指定Router ID,配置时,必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个接口的IP地址一致。

2. 使用全局Router ID

如果在创建OSPF进程的时候没有指定Router ID,则缺省使用全局Router ID。建议用户在创建OSPF进程的时候手工指定Router ID,或者选择自动获取Router ID。

1.1.8  OSPF路由的计算过程

同一个区域内,OSPF路由的计算过程可简单描述如下:

·每台OSPF路由器根据自己周围的网络拓扑结构生成LSA,并通过更新报文将LSA发送给网络中的其它OSPF路由器。

·每台OSPF路由器都会收集其它路由器通告的LSA,所有的LSA放在一起便组成了LSDB。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。

·OSPF路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。各个路由器得到的有向图是完全相同的。

·每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。

1.1.9  OSPF的网络类型

OSPF根据链路层协议类型将网络分为下列四种类型:

·广播(Broadcast)类型:当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。在该类型的网络中,通常以组播形式(OSPF路由器的预留IP组播地址是224.0.0.5;OSPF DR/BDR的预留IP组播地址是224.0.0.6)发送Hello报文、LSU报文和LSAck报文;以单播形式发送DD报文和LSR报文。

·NBMA(Non-Broadcast Multi-Access,非广播多路访问)类型:当链路层协议是帧中继、ATM或X.25时,缺省情况下,OSPF认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文。

·P2MP(Point-to-MultiPoint,点到多点)类型:没有一种链路层协议会被缺省的认为是P2MP类型。P2MP必须是由其他的网络类型强制更改的,常用做法是将NBMA网络改为P2MP网络。在该类型的网络中,缺省情况下,以组播形式(224.0.0.5)发送协议报文。可以根据用户需要,以单播形式发送协议报文。

·P2P(Point-to-Point,点到点)类型:当链路层协议是PPP、HDLC时,缺省情况下,OSPF认为网络类型是P2P。在该类型的网络中,以组播形式(224.0.0.5)发送协议报文。

NBMA与P2MP网络之间的区别如下:

·NBMA网络是全连通的;P2MP网络并不需要一定是全连通的。

·NBMA网络中需要选举DR与BDR;P2MP网络中没有DR与BDR。

·NBMA网络采用单播发送报文,需要手工配置邻居;P2MP网络采用组播方式发送报文,通过配置也可以采用单播发送报文。

1.1.10  DR/BDR

1. DR/BDR简介

在广播网和NBMA网络中,任意两台路由器之间都要交换路由信息。如果网络中有n台路由器,则需要建立n(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF提出了DR的概念,所有路由器只将信息发送给DR,由DR将网络链路状态发送出去。

另外,OSPF提出了BDR的概念。BDR是对DR的一个备份,在选举DR的同时也选举BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为新的DR。

OSPF网络中,既不是DR也不是BDR的路由器为DR Other。DR Other仅与DR和BDR建立邻接关系,DR Other之间不交换任何路由信息。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量,同时减少网络流量,节约了带宽资源。

如图1-6所示,进行DR/BDR选举后,5台路由器之间只需要建立7个邻接关系就可以了。

图1-6 DR和BDR示意图

 

 

 

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

 

2. DR/BDR选举过程

DR/BDR是由同一网段中所有的路由器根据路由器优先级和Router ID通过Hello报文选举出来的,只有优先级大于0的路由器才具有选举资格。

进行DR/BDR选举时每台路由器将自己选出的DR写入Hello报文中,发给网段上每台运行OSPF协议的路由器。当处于同一网段的两台路由器同时宣布自己是DR时,路由器优先级高者胜出。如果优先级相等,则Router ID大者胜出。

需要注意的是:

·只有在广播或NBMA网络中才会选举DR;在P2P或P2MP网络中不需要选举DR。

·DR是某个网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DR Other。

·DR/BDR选举完毕后,即使网络中加入一台具有更高优先级的路由器,也不会重新进行选举,替换该网段中已经存在的DR/BDR成为新的DR/BDR。DR并不一定就是路由器优先级最高的路由器接口;同理,BDR也并不一定就是路由器优先级次高的路由器接口。

1.1.11  协议规范

与OSPF相关的协议规范有:

·RFC 1245:OSPF protocol analysis

·RFC 1246:Experience with the OSPF protocol

·RFC 1370:Applicability Statement for OSPF

·RFC 1403:BGP OSPF Interaction

·RFC 1745:BGP4/IDRP for IP—OSPF Interaction

·RFC 1765:OSPF Database Overflow

·RFC 1793:Extending OSPF to Support Demand Circuits

·RFC 2154:OSPF with Digital Signatures

·RFC 2328:OSPF Version 2

·RFC 3101:OSPF Not-So-Stubby Area (NSSA) Option

·RFC 3166:Request to Move RFC 1403 to Historic Status

·RFC 3509:Alternative Implementations of OSPF Area Border Routers

·RFC 4167:Graceful OSPF Restart Implementation Report

·RFC 4577:OSPF as the Provider/Customer Edge Protocol for BGP/MPLS IP Virtual Private Networks (VPNs)

·RFC 4750:OSPF Version 2 Management Information Base

·RFC 4811:OSPF Out-of-Band LSDB Resynchronization

·RFC 4812:OSPF Restart Signaling

·RFC 4915:Multi-Topology (MT) Routing in OSPF

·RFC 5088:OSPF Protocol Extensions for Path Computation Element (PCE) Discovery

·RFC 5250:The OSPF Opaque LSA Option

·RFC 5613:OSPF Link-Local Signaling

·RFC 5642:Dynamic Hostname Exchange Mechanism for OSPF

·RFC 5709:OSPFv2 HMAC-SHA Cryptographic Authentication

·RFC 5786:Advertising a Router's Local Addresses in OSPF Traffic Engineering (TE) Extensions

·RFC 6571:Loop-Free Alternate (LFA) Applicability in Service Provider (SP) Networks

·RFC 6860:Hiding Transit-Only Networks in OSPF

·RFC 6987:OSPF Stub Router Advertisement

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注