目录
OSPF简介
定义
开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。
-
OSPF把自治系统AS(Autonomous System)划分成逻辑意义上的一个或多个区域;
-
OSPF通过链路状态通告LSA(Link State Advertisement)的形式发布路由;
-
OSPF依靠在OSPF区域内各设备间交互OSPF报文来达到路由信息的统一;
-
OSPF报文封装在IP报文内,可以采用单播或组播的形式发送。
目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。
优点
在OSPF出现前,RIP是网络上使用最广泛的IGP协议。但随着网络的快速成长和扩展,RIP的某些限制可能会导致其在大型网络中不再适用,OSPF则能够解决RIP所面临的诸多问题。如表1所示。
RIP | OSPF |
---|---|
基于距离矢量算法,以跳数作为度量方式,忽略带宽的影响。 | 基于链路状态,以链路开销作为度量方式,并把带宽作为参考值,度量方式更科学。 |
RIP的跳数限制为15个,限制了RIP的网络规模。 | 没有跳数限制,适用的网络规模更大。 |
按照路由通告进行路由更新和选择,路由器不了解整个网络拓扑,容易产生路由环路。 | 每台路由器都能够掌握全网拓扑,通过最短路径优先算法SPF(Shortest Path First)计算路由,不会产生路由环路。 |
收敛速度慢,路由更新会经历一段抑制和垃圾收集期,容易导致路由器之间的路由不一致。 | 收敛速度快,因为路由更新是及时的,并且能够快速传递到整个网络。 |
不能处理可变长子网掩码(VLSM)。 | 能够处理VLSM,灵活进行IP地址分配。 |
此外,OSPF还有以下优点:
-
OSPF可以采用组播形式收发报文,这样可以减少对未运行OSPF的路由器的影响。
-
OSPF支持无类型域间选路(CIDR)。
-
OSPF支持对等价路由进行负载分担。
-
OSPF支持报文验证。
OSPF的特点
在OSPF网络中,每台路由器根据自己周围的网络拓扑结构生成链路状态通告LSA(Link State Advertisement),并通过更新报文将LSA发送给网络中的其它路由器。
OSPF交互的是链路状态信息。OSPF中,路由器的选路是一种“自主行为”,LSA只是一种选路的参考信息。
每台路由器都通过链路状态数据库LSDB(Link State DataBase)掌握全网的拓扑结构。每台路由器都会收集其它路由器发来的LSA,所有的LSA放在一起便组成了链路状态数据库LSDB。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。
路由器根据最短路径优先(Shortest Path First)算法计算到达目的网络的路径,而不是根据路由通告来获取路由信息。
OSPF报文类型
OSPF的报文类型可以分为以下五种:
-
Hello报文
Hello报文的主要作用如下:- 邻居发现:使能了OSPF功能的接口会周期性地发送Hello报文,与网络中其他收到Hello报文的路由器协商报文中的指定参数,决定是否建立邻居关系。
- 建立双向通信:如果路由器发现收到的Hello报文的邻居列表中有自己Router ID,则认为已经和对端建立了双向通信,邻居关系建立。
- 指定DR和BDR:Hello报文包含DR优先级和Router ID等信息,每台路由器将自己选出的DR和BDR写入Hello报文的DR和BDR字段中,然后进行DR和BDR的选举.
- 周期性地发送Hello报文维护邻居关系,如果在一定的时间间隔内没有收到邻居发来的Hello报文,则中断邻居关系。
-
DD报文
两台路由器在邻接关系初始化时,DD报文(Database Description packet)用来协商主从关系,此时报文中只包含LSA的Header。在两台路由器交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。
-
LSR报文
两台路由器互相交换过DD报文之后,需要发送LSR报文(Link State Request packet)向对方请求更新LSA。LSR报文里包括所需要的LSA的摘要信息。
-
LSU报文
LSU报文(Link State Update packet)用来向对端路由器发送其所需要的LSA或者泛洪本端更新的LSA,其报文内容是多条完整的LSA的集合。为了实现泛洪的可靠性传输,需要LSAck报文对其进行确认,对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。
-
LSAck报文
LSAck报文(Link State Acknowledgment packet)用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header。一个LSAck报文可对多个LSA进行确认。
OSPF支持的网络类型
OSPF根据链路层协议类型,将网络分为如下四种类型:
-
广播类型(Broadcast)
在该类型的网络中:
-
通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF设备的预留IP组播地址;224.0.0.6的组播地址为OSPF DR/BDR的预留IP组播地址。
-
以单播形式发送DD报文和LSR报文。
-
-
NBMA类型(Non-Broadcast Multi-Access)
在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。需要指定对端ip地址
-
点到多点P2MP类型(Point-to-Multipoint)
没有一种链路层协议会被缺省的认为是P2MP类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。
在该类型的网络中:
-
以组播形式(224.0.0.5)发送Hello报文。
-
以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。
-
-
点到点P2P类型(Point-to-Point)
当链路层协议是PPP、HDLC或LAPB时,缺省情况下,OSPF认为网络类型是P2P。
在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
DR和BDR选举
Router ID
在DR和BDR选举的过程中,如果两台路由器的DR优先级相等,需要进一步比较两台路由器的Router ID,Router ID大的路由器将被选为DR或BDR。
OSPF的Router ID的选取有两种方式:手动配置和设备自动选取。在实际网络部署中,考虑到协议的稳定,推荐手工配置Loopback接口的IP地址做为Router ID。
如果没有手动配置OSPF的Router ID,设备会选取全局Router ID作为OSPF的RouterID,如果二者都没有配置,设备会按照一定的规则自动选取。具体的选取规则
选取规则
如果管理员既没有配置全局Router ID,也没有为指定动态路由协议配置Router ID,设备会从当前接口的IP地址中自动选取一个作为全局Router ID。其选择顺序是:
-
如果存在配置了IP地址的Loopback接口,则选择Loopback接口地址中最大的作为全局Router ID。
-
如果设备上不存在Loopback接口或者存在Loopback接口但没有配置IP地址,则从其他接口的IP地址中选择最大的作为全局Router ID(不考虑接口的UP/DOWN状态)。
当且仅当被选为Router ID的接口IP地址被删除或者修改,设备才会重新选取Router ID。
需要注意的是,当一台设备初始化时,如果设备上不存在任何接口IP地址,那么设备上所配置的第一个IP地址(包括Loopback地址和其他接口的IP地址)都会成为当前的全局Router ID。即便后续出现了更大的接口IP地址,该全局Router ID也不会变更。除非用户将该Router ID对应的IP地址从接口上删除,设备才会按照上述规则重新选取全局Router ID。
以下3种情况会进行Router ID的重新选取:
- 通过命令ospf router-id router-id重新配置OSPF的Router ID,并且重新启动OSPF进程。
- 重新配置全局Router ID,并且重新启动OSPF进程。
- 原来被选举为全局Router ID的IP地址被删除并且重新启动OSPF进程。
DR和BDR选举的原因
在广播网络和NBMA网络中,任意两台路由器之间都要传递路由信息。如图1所示,网络中有n台路由器,则需要建立n*(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。
为解决这一问题,OSPF定义了DR。通过选举产生DR后,所有其他设备都只将信息发送给DR,由DR将网络链路状态LSA广播出去。
为了防止DR发生故障,重新选举DR时会造成业务中断,除了DR之外,还会选举一个备份指定路由器BDR。这样除DR和BDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息,这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量。
DR和BDR选举过程
广播链路或者NBMA链路上DR和BDR的选举过程如下:
-
接口UP后,发送Hello报文,同时进入到Waiting状态。在Waiting状态下会有一个WaitingTimer,该计时器的长度与DeadTimer是一样的。默认值为40秒,用户不可自行调整。
-
在WaitingTimer触发前,发送的Hello报文是没有DR和BDR字段的。在Waiting阶段,如果收到Hello报文中有DR和BDR,那么直接承认网络中的DR和BDR,而不会触发选举。直接离开Waiting状态,开始邻居同步。
-
假设网络中已经存在一个DR和一个BDR,这时新加入网络中的路由器,不论它的Router ID或者DR优先级有多大,都会承认现网中已有的DR和BDR。
-
当DR因为故障Down掉之后,BDR会继承DR的位置,剩下的优先级大于0的路由器会竞争成为新的BDR。
-
只有当不同Router ID,或者配置不同DR优先级的路由器同时起来,在同一时刻进行DR选举才会应用DR选举规则产生DR。该规则是:优先选择DR优先级最高的作为DR,次高的作为BDR。DR优先级为0的路由器只能成为DR Other;如果优先级相同,则优先选择Router ID较大的路由器成为DR,次大的成为BDR,其余路由器成为DR Other。
DR和BDR选举的原则
在广播网络和NBMA网络中,为了稳定地进行DR和BDR选举,OSPF规定了一系列的选举规则:选举制、终身制、继承制。
选举制
选举制是指DR和BDR不是人为指定的,而是由本网段中所有的路由器共同选举出来的。路由器接口的DR优先级决定了该接口在选举DR、BDR时所具有的资格,本网段内DR优先级大于0的路由器都可作为“候选人”。选举中使用的“选票”就是Hello报文,每台路由器将自己选出的DR写入Hello报文中,发给网段上的其他路由器。当处于同一网段的两台路由器同时宣布自己是DR时,DR优先级高者胜出。如果优先级相等,则Router ID大者胜出。如果一台路由器的优先级为0,则它不会被选举为DR或BDR。
终身制
终身制也叫非抢占制。每一台新加入的路由器并不急于参加选举,而是先考察一下本网段中是否已存在DR。如果目前网段中已经存在DR,即使本路由器的DR优先级比现有的DR还高,也不会再声称自己是DR,而是承认现有的DR。因为网段中的每台路由器都只和DR、BDR建立邻接关系,如果DR频繁更换,则会引起本网段内的所有路由器重新与新的DR、BDR建立邻接关系。这样会导致短时间内网段中有大量的OSPF协议报文在传输,降低网络的可用带宽。终身制有利于增加网络的稳定性、提高网络的可用带宽。实际上,在一个广播网络或NBMA网络上,最先启动的两台具有DR选举资格的路由器将成为DR和BDR。
继承制
继承制是指如果DR发生故障了,那么下一个当选为DR的一定是BDR,其他的路由器只能去竞选BDR的位置。这个原则可以保证DR的稳定,避免频繁地进行选举,并且DR是有备份的(BDR),一旦DR失效,可以立刻由BDR来承担DR的角色。由于DR和BDR的数据库是完全同步的,这样当DR故障后,BDR立即成为DR,履行DR的职责,而且邻接关系已经建立,所以从角色切换到承载业务的时间会很短。同时,在BDR成为新的DR之后,还会选举出一个新的BDR,虽然这个过程所需的时间比较长,但已经不会影响路由的计算了。
OSPF网络类型 | 常见链路层协议 | 是否选举DR | 是否和邻居建立邻接关系 |
Point-to-point | PPP链路;HDLC链路 | 否 | 是 |
Broadcast | 以太网链路 | 是 | DR与BDR 、DRother建立邻接关系 BDR与DR 、DRother建立邻接关系 DRother之间只建立邻居关系 |
NBMA | 帧中继链路 | ||
P2MP | 需手工指定 | 否 | 是 |
OSPF邻居状态机
在OSPF网络中,相邻设备间通过不同的邻居状态切换,最终可以形成完全的邻接关系,完成LSA信息的交互。
OSPF邻居信息的State字段表明了OSPF设备的邻居状态。
OSPF邻居共有以下八种状态:
-
Down:邻居会话的初始阶段。表明没有在邻居失效时间间隔内收到来自邻居设备的Hello报文。除了NBMA网络OSPF路由器会每隔PollInterval时间对外轮询发送Hello报文,包括向处于Down状态的邻居路由器(即失效的邻居路由器)发送之外,其他网络是不会向失效的邻居路由器发送Hello报文的。
-
Attempt:这种状态适用于NBMA网络,邻居路由器是手工配置的。邻居关系处于本状态时,路由器会每隔HelloInterval时间向自己手工配置的邻居发送Hello报文,尝试建立邻居关系。
-
Init:本状态表示已经收到了邻居的Hello报文,但是对端并没有收到本端发送的Hello报文,收到的Hello报文的邻居列表并没有包含本端的Router ID,双向通信仍然没有建立。
-
2-Way:互为邻居。本状态表示双方互相收到了对端发送的Hello报文,报文中的邻居列表也包含本端的Router ID,邻居关系建立。如果不形成邻接关系则邻居状态机就停留在此状态,否则进入ExStart状态。DR和BDR只有在邻居状态处于2-Way及之后的状态才会被选举出来。
-
ExStart:协商主从关系。建立主从关系主要是为了保证在后续的DD报文交换中能够有序的发送。邻居间从此时才开始正式建立邻接关系。
-
Exchange:交换DD报文。本端设备将本地的LSDB用DD报文来描述,并发给邻居设备。
-
Loading:正在同步LSDB。两端设备发送LSR报文向邻居请求对方的LSA,同步LSDB。
-
Full:建立邻接。两端设备的LSDB已同步,本端设备和邻居设备建立了完全的邻接关系
OSPF区域
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,会出现以下问题:
- 网络拓扑发生变化概率增大,LSA泛洪严重,降低网络带宽利用率。
- 路由器数量增多,LSDB庞大,占用大量存储空间,并使得运行SPF算法的复杂度增加。
- 每台路由器需要维护的路由表越来越大。
OSPF协议通过将自治系统划分成不同的区域,将LSA泛洪限制在一个区域内,提高网络的利用率和路由的收敛速率;每个区域内的路由器数量减少,维护的LSDB规模降低,SPF计算也仅限于区域内的LSA;每台路由器需要维护的路由表也越来越小。 此外,多区域提高了网络的扩展性,有利于组建大规模的网络。
区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。区域的边界是路由器,而不是链路。一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。
路由器类型
OSPF协议中常用到的路由器类型如图1所示。
路由器类型 | 含义 |
---|---|
区域内路由器(Internal Router) | 该类设备的所有接口都属于同一个OSPF区域。 |
区域边界路由器ABR(Area Border Router) | 该类设备可以同时属于两个以上的区域,但其中一个必须是骨干区域。 ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。 |
骨干路由器(Backbone Router) | 该类设备至少有一个接口属于骨干区域。 所有的ABR和位于Area0的内部设备都是骨干路由器。 |
自治系统边界路由器ASBR(AS Boundary Router) | 与其他AS交换路由信息的设备称为ASBR。 ASBR并不一定位于AS的边界,它可能是区域内设备,也可能是ABR。只要一台OSPF设备引入了外部路由的信息,它就成为ASBR。 |
路由类型
AS区域内和区域间路由描述的是AS内部的网络结构。AS外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPF将引入的AS外部路由分为Type1和Type2两类。
表2中按优先级从高到低顺序列出了路由类型。
路由类型 | 含义 |
---|---|
Intra Area Routes | 区域内路由。从区域内生成的且目的地属于该区域的路由。 |
Inter Area Routes | 区域间路由。来自其他区域的路由。 |
External Routes | 外部路由。引入其他路由协议或不同OSPF进程的路由。根据路由开销的计算方式,外部路由可以分为以下两类:
对于同一目的地址,第一类的外部路由的优先级要大于第二类外部路由。 |
区域类型
OSPF的区域类型包括普通区域、Stub区域、NSSA区域,如表3所示。
区域类型 | 作用 | 说明 |
---|---|---|
普通区域 | 缺省情况下,OSPF区域被定义为普通区域。普通区域包括:
|
|
Stub区域 | Stub区域是一些特定的区域,Stub区域的ABR不传播它们接收到的自治系统外部路由,因此这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。一般情况下,Stub区域位于自治系统的边界,是只有一个ABR的非骨干区域,为保证到自治系统外的路由依旧可达,Stub区域的ABR将生成一条缺省路由,并发布给Stub区域中的其他非ABR路由器。 Totally Stub区域允许ABR发布Type3缺省路由,不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。 |
|
NSSA(Not-So-Stubby Area)区域 | NSSA是Stub区域的一个变形,它和Stub区域有许多相似的地方。NSSA区域不允许存在Type5 LSA。NSSA区域允许引入自治系统外部路由,携带这些外部路由信息的Type7 LSA由NSSA的ASBR产生,仅在本NSSA内传播。当Type7 LSA到达NSSA的ABR时,由ABR将Type7 LSA转换成Type5 LSA,泛洪到整个OSPF域中。 Totally NSSA区域不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。 |
|
OSPF缺省路由
缺省路由是指目的地址和掩码都是0的路由。当设备无精确匹配的路由时,就可以通过缺省路由进行报文转发。由于OSPF路由的分级管理,Type3缺省路由的优先级高于Type5或Type7路由。
OSPF缺省路由通常应用于下面两种情况:
-
由区域边界路由器(ABR)发布Type3缺省Summary LSA,用来指导区域内设备进行区域之间报文的转发。
-
由自治系统边界路由器(ASBR)发布Type5外部缺省ASE LSA,或者Type7外部缺省NSSA LSA,用来指导自治系统(AS)内设备进行自治系统外报文的转发。
OSPF缺省路由的发布原则如下:
- OSPF路由器只有具有对区域外的出口时,才能够发布缺省路由LSA。
- 如果OSPF路由器已经发布了缺省路由LSA,那么不再学习其它路由器发布的相同类型的缺省路由LSA。即路由计算时不再计算其它路由器发布的相同类型的缺省路由LSA,但数据库中存有对应LSA。
- 外部缺省路由的发布如果要依赖于其它路由,那么被依赖的路由不能是本OSPF路由域内的路由,即不是本进程OSPF学习到的路由。因为外部缺省路由的作用是用于指导报文的域外转发,而本OSPF路由域的路由的下一跳都指向了域内,不能满足指导报文域外转发的要求。
不同区域缺省路由发布原则如表4所示。
区域类型 | 作用 |
---|---|
普通区域 | 缺省情况下,普通OSPF区域内的OSPF路由器是不会产生缺省路由的,即使它有缺省路由。 当网络中缺省路由通过其他路由进程产生时,路由器必须将缺省路由通告到整个OSPF自治系统中。实现方法是在ASBR上手动通过命令进行配置,产生缺省路由。配置完成后,路由器会产生一个缺省ASE LSA(Type5 LSA),并且通告到整个OSPF自治系统中。 |
Stub区域 | Stub区域不允许自治系统外部的路由(Type5 LSA)在区域内传播。 区域内的路由器必须通过ABR学到自治系统外部的路由。实现方法是ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个Stub区域内。这样,到达自治系统的外部路由就可以通过ABR到达。 |
Totally Stub区域 | Totally Stub区域既不允许自治系统外部的路由(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。 区域内的路由器必须通过ABR学到自治系统外部和其他区域的路由。实现方法是配置Totally Stub区域后,ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个Stub区域内。这样,到达自治系统外部的路由和其他区域间的路由都可以通过ABR到达。 |
NSSA区域 | NSSA区域允许引入通过本区域的ASBR到达的少量外部路由,但不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播。即到达自治系统外部的路由只能通过本区域的ASBR到达。 只配置了NSSA区域是不会自动产生缺省路由的。 此时,有两种选择:
上面两种情况的区别是:
因为缺省路由只是在本NSSA区域内泛洪,并没有泛洪到整个OSPF域中,所以本NSSA区域内的路由器在找不到路由之后可以从该NSSA的ASBR出去,但不能实现其他OSPF域的路由从这个出口出去。Type7 LSA缺省路由不会在ABR上转换成Type5 LSA缺省路由泛洪到整个OSPF域。 |
Totally NSSA区域 | Totally NSSA区域既不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。 区域内的路由器必须通过ABR学到其他区域的路由。实现方法是配置Totally NSSA区域后,ABR会自动产生一条缺省的Type3 LSA通告到整个NSSA区域内。这样,其他区域的外部路由和区域间路由都可以通过ABR在区域内传播。 |
OSPF LSA类型
OSPF网络中划分了不同的区域,每个区域都维护自己独立的LSDB,同时路由器也被定义成不同的类型。封装了路由描述信息的LSA根据路由器的类型也可以分门别类。
Router-LSA
Router-LSA是一种最基本的LSA,即Type1 LSA。
OSPF网络里的每一台路由设备都会发布Type1 LSA。这种类型的LSA用于描述设备的链路状态和开销,在路由器所属的区域内传播。
Network-LSA
Network-LSA,也就是Type2 LSA,由DR(Designated Router)产生,描述本网段的链路状态,在所属的区域内传播。
Network-summary-LSA
Network-summary-LSA,也叫Type3 LSA,由ABR发布,用来描述区域间的路由信息。ABR将Network-summary-LSA发布到一个区域,通告该区域到其他区域的目的地址。实际上,ABR是将区域内部的Type1和Type2的信息收集起来并汇总之后扩散出去,这就是Summary的含义。
ASBR-Summary-LSA
ASBR-summary-LSA,也叫Type4 LSA,由ABR发布,描述到ASBR的路由信息,并通告给除ASBR所在区域的其他相关区域。
AS-external-LSA
AS-external-LSA,也叫Type5 LSA,由ASBR产生,描述到AS外部的路由,通告到除Stub区域和NSSA区域以外所有的区域。
NSSA LSA
除了上述几种LSA之外,还有一种比较特殊的LSA,NSSA LSA,也叫Type7 LSA。NSSA LSA由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。NSSA区域的ABR收到NSSA LSA时,会有选择地将其转化为Type5 LSA,以便将外部路由信息通告到OSPF网络的其它区域。
Opaque LSA
Opaque LSA包括Type9 LSA,Type10 LSA和Type11 LSA,用于OSPF的扩展通用机制。
- Type9 LSA仅在接口所在网段范围内传播。用于支持GR的Grace LSA就是Type9 LSA的一种。
- Type10 LSA在区域内传播。用于支持TE的LSA就是Type10 LSA的一种。
- Type11 LSA在自治系统内传播,目前还没有实际应用的例子。
OSPF快速收敛
OSPF快速收敛是为了提高路由的收敛速度而做的扩展特性。包括:
-
I-SPF(Incremental SPF)
增量最短路径优先算法,是指当网络拓扑改变的时候,只对受影响的节点进行路由计算,而不是对全部节点重新进行路由计算,从而加快了路由的计算。
-
PRC(Partial Route Calculation)
部分路由计算,是指当网络上路由发生变化的时候,只对发生变化的路由进行重新计算。
-
智能定时器
OSPF智能定时器可以根据用户的配置和触发事件(如路由计算)的频率动态调整时间间隔,使网络快速稳定。
OSPF智能定时器使用了指数衰减(Exponential Backoffs)技术,用户的配置可以精确到毫秒。
OSPF虚连接
虚连接(Virtual link)是指在两台ABR之间通过一个非骨干区域建立的一条逻辑上的连接通道。
根据RFC 2328,在部署OSPF时,要求所有的非骨干区域与骨干区域相连,否则会出现有的区域不可达的问题。但是在实际应用中,可能会因为各方面条件的限制,无法满足所有非骨干区域与骨干区域保持连通的要求,此时可以通过配置OSPF虚连接来解决这个问题。
如图1所示,Area 2没有连接到骨干区Area 0,所以RouterA不能作为ABR向Area 2生成Area 0中Network1的路由信息,所以RouterB上没有到达Network1的路由。此时可以考虑部署虚连接来解决这个问题。
如图2所示,通过虚连接,两台ABR之间直接传递OSPF报文信息,两者之间的OSPF设备只是起到一个转发报文的作用。由于OSPF协议报文的目的地址不是这些设备,所以这些报文对于两者而言是透明的,只是当作普通的IP报文来转发。
虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,虚连接的两端和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区域(Transit Area)。配置虚连接时,必须在两端同时配置方可生效。
然而,虚连接的存在增加了网络的复杂程度,而且使故障的排除更加困难。因此,在网络规划中应该尽量避免使用虚连接。虚连接仅是作为修复无法避免的网络拓扑问题的一种临时手段。虚链路可以看作是一个标明网络的某个部分是否需要重新规划设计的标志。
OSPF路由聚合和路由过滤
OSPF路由聚合
路由聚合是指ABR可以将具有相同前缀的路由信息聚合到一起,只发布一条路由到其它区域。
通过路由聚合,可以减少路由信息,从而减小路由表的规模,提高设备的性能。
OSPF有两种路由聚合方式:
-
区域间路由聚合
区域间路由聚合在ABR上完成,主要用于聚合AS内区域之间的路由。ABR向其它区域发送路由信息时,以网段为单位生成Type3 LSA。如果该区域中存在一些连续的网段,ABR可以将这些连续的网段聚合成一个网段。这样ABR只发送一条聚合后的LSA,所有属于命令指定的聚合网段范围的LSA将不会再被单独发送出去。
-
外部路由聚合
外部路由聚合在ASBR上完成,主要用于聚合OSPF引入的外部路由。ASBR将对引入的聚合地址范围内的Type5 LSA进行聚合。当配置了NSSA区域时,还要对引入的聚合地址范围内的Type7 LSA进行聚合。
如果本地设备既是ASBR又是ABR,则对由Type7 LSA转化成的Type5 LSA进行聚合处理。
OSPF路由过滤
OSPF支持使用路由策略对路由信息进行过滤。缺省情况下,OSPF不进行路由过滤。
OSPF可以使用的路由策略包括route-policy、访问控制列表(access-list)和地址前缀列表(prefix-list)。
OSPF路由过滤可以应用于以下几个方面:
-
路由引入
OSPF可以引入其它路由协议学习到的路由。在引入时可以通过配置路由策略来过滤路由,只引入满足条件的路由。
-
引入路由发布
OSPF引入了路由后会向其它邻居发布引入的路由信息。
可以通过配置过滤规则来过滤向邻居发布的路由信息。该过滤规则只在ASBR上配置才有效。
-
路由学习
通过配置过滤规则,可以设置OSPF对接收到的区域内、区域间和自治系统外部的路由进行过滤。
该过滤只作用于路由表项的添加与否,即只有通过过滤的路由才被添加到本地路由表中,但所有的路由仍可以在OSPF路由表中被发布出去。
-
区域间LSA学习
通过命令可以在ABR上配置对进入本区域的Summary LSA进行过滤。该配置只在ABR上有效(只有ABR才能发布Summary LSA)。
区域间LSA学习和路由学习之间的差异在于:区域间LSA学习直接对进入区域的LSA进行过滤;路由学习不是对LSA进行过滤而是对LSA计算出来的路由是否添加本地路由表进行过滤,学习到的LSA是完整的。
-
区域间LSA发布
通过命令可以在ABR上配置对本区域出方向的Summary LSA进行过滤。该配置只在ABR上配置有效。
OSPF GTSM功能
背景信息
GTSM功能,通过检测IP报文头中的TTL值是否在一个预先定义好的特定范围内来对交换机进行保护,增强系统的安全性。
应用GTSM功能,需要在OSPF连接的两端都使能GTSM。
被检测的报文的TTL值有效范围为 [ 255–hops+1, 255 ]。
GTSM只会对匹配GTSM策略的报文进行TTL检查。对于未匹配策略的报文,可以设置为通过或丢弃。如果配置GTSM缺省报文动作为丢弃,就需要在GTSM中配置所有可能的交换机连接情况,没有配置的交换机发送的报文将被丢弃,无法建立连接。因此,在保证安全性的同时会损失一些易用性。
对于丢弃的报文,可以通过LOG信息开关,控制是否对报文被丢弃的情况记录日志,以方便故障的定位。