OSPF路由协议简介
OSPF是一种基于链路状态的路由协议,需要每个路由器向其同一管理域的所有其他路由器发送链路状态广播信息。在OSPF的链路状态广播中包括所有接口信息、所有的量度和其他一些变量。利用OSPF的路由器首先必须收集有关的链路状态信息,并根据一定的算法计算出到每个节点的最短路径。而基于距离向量的路由协议仅向其邻接路由器发送有关路由更新信息。

OSPF 是基于IP的,其协议号是89

开放最短路由优先协议OSPF是IETF组织开发的一个基于链路状态的内部网关协议。目前使用的是版本2(RFC2328),其特性如下:

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

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

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

区域划分。允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。

等值路由。支持到同一目的地址的多条等值路由。

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

支持验证。支持基于接口的报文验证以保证路由计算的安全性。

组播发送。支持组播地址。

OSPF两种组播地址的区别  

1.点到点网络:是连接单独的一对路由器的网络,点到点网络上的有效邻居总是可以形成邻接关系的,在这种网络上,OSPF包的目标地址使用的是224.0.0.5
2.广播型网络,比如以太网,Token RingFDDI,这样的网络上会选举一个DR和BDR,DR/BDR的发送的OSPF包的目标地址为224.0.0.5;而除了DR/BDR以外的OSPF包的目标地址为224.0.0.6

在广播型网络中,所有路由器都以224.0.0.5的地址发送hello包,用来维持邻居关系,非DR/BDR路由都以224.0.0.6的地址发送lsa更新,而只有DR/BDR路由监听这个地址,反过来,DR路由使用224.0.0.5来发送更新到非DR路由

2.OSPF路由计算过程
每个支持OSPF协议的路由器都维护着一份描述整个自治系统拓扑结构的链路状态数据库LSDB(Link State Database)。每台路由器根据自己周围的网络拓扑结构生成链路状态广播LSA(Link State Advertisement),通过相互之间发送协议报文将LSA发送给网络中其他路由器。这样每台路由器都收到了其他路由器的LSA,所有的LSA放在一起便组成了链路状态数据库。

OSPF路由协议利用链路状态算法建立和计算到每个目标网络的最短路径,该算法本身十分复杂,下面简单、概括地描述了链路状态算法工作的总体过程:

初始化阶段,路由器将产生链路状态通告,该链路状态通告包含了该路由器全部链路状态。

所有路由器通过组播的方式交换链路状态信息,每台路由器接收到链路状态更新报文时,将拷贝一份到本地数据库,然后再传播给其他路由器。

当每台路由器都有一份完整的链路状态数据库时,路由器应用算法针对所有目标网络计算最短路径树,结果内容包括:目标网络、下一跳地址、花费,是IP路由表的关键部分。

如果没有链路花费、网络增删变化,OSPF将会十分安静,如果网络发生了任何变化,OSPF通过链路状态进行通告,但只通告变化的链路状态,变化涉及到的路由器将重新运行算法,生成新的最短路径树。

每台路由器都使用算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由,外部路由信息为叶子节点,外部路由可由广播它的路由器进行标记以记录关于自治系统的额外信息。显然,各个路由器各自得到的路由表是不同的。

此外,为使每台路由器能将本地状态信息(如可用接口信息、可达邻居信息等)广播到整个自治系统中,在路由器之间要建立多个邻接关系,这使得任何一台路由器的路由变化都会导致多次传递,既没有必要,也浪费了宝贵的带宽资源。为解决这一问题,OSPF协议定义了“指定路由器”DR(Designated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态广播出去。这样就减少了多址访问网络上各路由器之间邻接关系的数量。

3.OSPF协议报文
OSPF有5种报文类型:

HELLO报文(Hello Packet)
最常用的一种报文,周期性的发送给本路由器的邻居。内容包括一些定时器的数值、DR、BDR(Backup Designated Router)以及自己已知的邻居。

DD报文(Database Description Packet)
两台路由器进行数据库同步时,用DD报文来描述自己的LSDB,内容包括LSDB中每一条LSA的摘要(摘要是指LSA的HEAD,通过该HEAD可以唯一标识一条LSA)。这样做是为了减少路由器之间传递信息的量,因为LSA的HEAD只占一条LSA的整个数据量的一小部分,根据HEAD,对端路由器就可以判断出是否已有这条LSA。

LSR报文(Link State Request Packet)
两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB 所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。

LSU报文(Link State Update Packet)

用来向对端路由器发送所需要的LSA,内容是多条LSA(全部内容)的集合。
LSAck报文(Link State Acknowledgment Packet)

用来对接收到的LSU报文进行确认。内容是需要确认的LSA的HEAD(一个报文可对多个LSA 进行确认)。

4.OSPF协议相关概念

(1)路由器ID号

一台路由器如果要运行OSPF协议,必须存在Router ID。如果没有配置ID号,系统会从当前接口的IP 地址中自动选一个作为路由器的ID号。

(2)DR和BDR

指定路由器DR(Designated Router)。为使每台路由器能将本地状态信息广播到整个自治系统中,在路由器之间要建立多个邻居关系,但这使得任何一台路由器的路由变化都会导致多次传递,浪费了宝贵的带宽资源。为解决这一问题,OSPF协议定义了DR,所有路由器都只将信息发送给DR,由DR将网络链路状态广播出去,两台不是DR 的路由器(称为DR Other)之间将不再建立邻居关系,也不再交换任何路由信息。

【提示】  哪一台路由器会成为本网段内的DR并不是人为指定的,而是由本网段中所有的路由器共同选举出来的。

备份指定路由器BDR(Backup Designated Router)。如果DR由于某种故障而失效,这时必须重新选举DR,并与之同步。这需要较长的时间,在这段时间内,路由计算是不正确的。为了能够缩短这个过程,OSPF提出了BDR的概念。BDR实际上是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR。

(3)区域(Area)

一组运行OSPF路由协议的路由器,组成了OSPF路由域的自治域系统。一个自治域系统是指由一个组织机构控制管理的所有路由器,自治域系统内部只运行一种IGP路由协议,自治域系统之间通常采用BGP路由协议进行路由信息交换。不同的自治域系统可以选择相同的IGP路由协议,如果要连接到互联网,每个自治域系统都需要向相关组织申请自治域系统编号。

随着网络规模日益扩大,当一个巨型网络中的路由器都运行OSPF路由协议时,路由器数量的增多会导致LSDB非常庞大,占用大量的存储空间,并使得运行SPF算法的复杂度增加,导致CPU负担很重;同时,网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“动荡”之中,造成网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。而且每一次变化都会导致网络中所有的路由器重新进行路由计算。

当OSPF路由域规模较大时,一般采用分层结构,即将OSPF路由域分割成几个区域(AREA),区域之间通过一个骨干区域互联,每个非骨干区域都需要直接与骨干区域连接。

在OSPF路由域中,根据路由器的部署位置,有3种路由器角色。一是区域内部路由器,该路由器的所有接口网络都属于一个区域。二是区域边界路由器,也称为ABR(Area Border Routers),该路由器的接口网络至少属于两个区域,其中一个必须为骨干区域。三是自治域边界路由器,也称为ASBR(Autonomous System Boundary Routers),是OSPF路由域与外部路由域进行路由交换的必经之路。

(4)骨干区域和虚连接

骨干区域(Backbone Area)。OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号(Area ID)是0,通常被称为骨干区域。

虚连接(Virtual link)。由于所有区域都必须与骨干区域在逻辑上保持连接,特别引入了虚连接的概念,使那些物理上分割的区域仍可保持逻辑上的连通性。


(5)路由聚合

AS被划分成不同的区域,每一个区域通过OSPF边界路由器(ABR)相连,区域间可以通过路由汇聚来减少路由信息,减小路由表的规模,提高路由器的运算速度。

ABR在计算出一个区域的区域内路由之后,查询路由表,将其中每一条OSPF路由封装成一条LSA发送到区域之外。

(6)路由类型

OSPF将路由分为四类,按照优先级从高到低的顺序依次为:
l               区域内路由(Intra Area)
l               区域间路由(Inter Area)
l               第一类外部路由(Type1 External)
l               第二类外部路由(Type2 External)
区域内和区域间路由描述的是AS内部的网络结构,外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPF将引入的AS外部路由分为两类:Type1和Type2。
第一类外部路由是指接收的是IGP(Interior Gateway Protocol,内部网关协议)路由(例如静态路由和RIP路由)。由于这类路由的可信程度较高,并且和OSPF自身路由的开销具有可比性,所以到第一类外部路由的开销等于本路由器到相应的ASBR的开销与ASBR到该路由目的地址的开销之和。
第二类外部路由是指接收的是EGP(Exterior Gateway Protocol,外部网关协议)路由。由于这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以计算路由开销时将主要考虑前者,即到第二类外部路由的开销等于ASBR到该路由目的地址的开销。如果计算出开销值相等的两条路由,再考虑本路由器到相应的ASBR的开销。

5.OSPF协议优缺点
与RIP协议不同,OSPF将一个自治域再划分为区,相应地即有两种类型的路由选择方式。当源和目的地在同一区时,采用区内路由选择;当源和目的地在不同区时,则采用区间路由选择。这就大大减少了网络开销,并增加了网络的稳定性。当一个区内的路由器出了故障时并不影响自治域内其他区路由器的正常工作,这也给网络的管理、维护带来方便。

(1)OSPF协议主要优点

OSPF协议主要优点如下:

快速收敛。OSPF是真正的LOOP- FREE(无路由自环)路由协议。源自其算法本身——链路状态及最短路径树算法,OSPF收敛速度快,能够在最短的时间内将路由变化传递到整个自治系统。

区域划分。提出区域(Area)划分的概念,将自治系统划分为不同区域后,通过区域之间的对路由信息的摘要,大大减少了需传递的路由信息数量,也使得路由信息不会随网络规模的扩大而急剧膨胀。

开销控制。将协议自身的开销控制到最小。目的如下所示:

用于发现和维护邻居关系的是定期发送的不含路由信息的hello报文,非常短小。包含路由信息的报文是触发更新的机制,而且只有在路由变化时才会发送。但为了增强协议的健壮性,每1800秒全部重发一次。

在广播网络中,使用组播地址(而非广播)发送报文,减少对其他不运行OSPF的网络设备的干扰。

在各类可以多址访问的网络中(广播型网络和非广播型多路访问),通过选举DR(指定路由器),使同网段的路由器之间的路由交换(同步)次数由O(N×N)次减少为O(N)次。

提出STUB区域的概念,使得STUB区域内不再传播引入的ASE路由。

在ABR(区域边界路由器)上支持路由聚合,进一步减少区域间的路由信息传递。

在点到点接口类型中,通过配置按需播号属性(OSPF over On Demand Circuits),使得OSPF不再定时发送hello报文及定期更新路由信息。只在网络拓扑真正变化时才发送更新信息。

路由可信。通过严格划分路由的级别(共分4级),提供更可信的路由选择。

安全性高。良好的安全性,OSPF支持基于接口的明文及MD5 验证。

适应性广。OSPF适应各种规模的网络,最多可达数千台。


(2)OSPF协议主要缺点

OSPF协议主要缺点如下:

配置相对复杂。由于网络区域划分和网络属性的复杂性,需要网络分析员有较高的网络知识水平才能配置和管理OSPF网络。

路由负载均衡能力较弱。OSPF虽然能根据接口的速率、连接可靠性等信息,自动生成接口路由优先级,但在通往同一目的的不同优先级路由中,OSPF只选择优先级较高的转发,不同优先级的路由中,不能实现负载分担。只有相同优先级的,才能达到负载均衡的目的,不像EIGRP那样可以根据优先级不同,自动匹配流量。