04-OSPF配置
本章节下载: 04-OSPF配置 (1.16 MB)
在以下路由协议的介绍中所指的路由器及路由器图标,代表了一般意义下的路由器以及运行了路由协议的以太网交换机。
OSPF(Open Shortest Path First,开放最短路径优先)是IETF组织开发的一个基于链路状态的内部网关协议。目前针对IPv4协议使用的是OSPF Version 2(RFC 2328)。
本章若没有特别说明,下文中所提到的OSPF均指OSPFv2。
OSPF具有如下特点:
l 适应范围广
支持各种规模的网络,最多可支持几百台路由器。
l 快速收敛
在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
l 无自环
由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
l 区域划分
允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。
l 等价路由
支持到同一目的地址的多条等价路由。
l 路由分级
使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
l 支持验证
支持基于接口的报文验证,以保证报文交互和路由计算的安全性。
l 组播发送
在某些类型的链路上以组播地址发送协议报文,减少对其他设备的干扰。
一组使用相同路由协议交换路由信息的路由器,缩写为AS。
同一个区域内,OSPF协议路由的计算过程可简单描述如下:
l 每台OSPF路由器根据自己周围的网络拓扑结构生成LSA(Link State Advertisement,链路状态通告),并通过更新报文将LSA发送给网络中的其它OSPF路由器。
l 每台OSPF路由器都会收集其它路由器通告的LSA,所有的LSA放在一起便组成了LSDB(Link State Database,链路状态数据库)。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。
l OSPF路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。各个路由器得到的有向图是完全相同的。
l 每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。
一台运行OSPF协议路由器,每一个OSPF进程必须存在自己的Router ID(路由器ID)。Router ID是一个32比特无符号整数,可以在一个自治系统中唯一的标识一台路由器。
OSPF有五种类型的协议报文:
l Hello报文:周期性发送,用来发现和维持OSPF邻居关系。内容包括一些定时器的数值、DR(Designated Router,指定路由器)、BDR(Backup Designated Router,备份指定路由器)以及自己已知的邻居。
l DD(Database Description,数据库描述)报文:描述了本地LSDB中每一条LSA的摘要信息,用于两台路由器进行数据库同步。
l LSR(Link State Request,链路状态请求)报文:向对方请求所需的LSA。两台路由器互相交换DD报文之后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。
l LSU(Link State Update,链路状态更新)报文:向对方发送其所需要的LSA。
l LSAck(Link State Acknowledgment,链路状态确认)报文:用来对收到的LSA进行确认。内容是需要确认的LSA的Header(一个报文可对多个LSA进行确认)。
OSPF中对链路状态信息的描述都是封装在LSA中发布出去,常用的LSA有以下几种类型:
l Router LSA(Type1):由每个路由器产生,描述路由器的链路状态和开销,在其始发的区域内传播。
l Network LSA(Type2):由DR产生,描述本网段所有路由器的链路状态,在其始发的区域内传播。
l Network Summary LSA(Type3):由ABR(Area Border Router,区域边界路由器)产生,描述区域内某个网段的路由,并通告给其他区域。
l ASBR Summary LSA(Type4):由ABR产生,描述到ASBR(Autonomous System Boundary Router,自治系统边界路由器)的路由,通告给相关区域。
l AS External LSA(Type5):由ASBR产生,描述到AS(Autonomous System,自治系统)外部的路由,通告到所有的区域(除了Stub区域和NSSA区域)。
l NSSA External LSA(Type7):由NSSA(Not-So-Stubby Area)区域内的ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。
l Opaque LSA:是一个被提议的LSA类别,由标准的LSA头部后面跟随特殊应用的信息组成,可以直接由OSPF协议使用,或者由其它应用分发信息到整个OSPF域间接使用。Opaque LSA分为Type9、Type10、Type11三种类型,泛洪区域不同;其中,Type9的Opaque LSA仅在本地链路范围进行泛洪,Type10的Opaque LSA仅在本地区域范围进行泛洪,Type11的LSA可以在一个自治系统范围进行泛洪。
在OSPF中,邻居(Neighbor)和邻接(Adjacency)是两个不同的概念。
OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文。收到Hello报文的OSPF路由器会检查报文中所定义的参数,如果双方一致就会形成邻居关系。
形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD报文,交换LSA并达到LSDB的同步之后,才形成真正意义上的邻接关系。
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,路由器数量的增多会导致LSDB非常庞大,占用大量的存储空间,并使得运行SPF算法的复杂度增加,导致CPU负担很重。
在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“振荡”之中,造成网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。
OSPF协议通过将自治系统划分成不同的区域(Area)来解决上述问题。区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。如图1-1所示。
图1-1 OSPF区域划分
区域的边界是路由器,而不是链路。一个路由器可以属于不同的区域,但是一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。划分区域后,可以在区域边界路由器上进行路由聚合,以减少通告到其他区域的LSA数量,还可以将网络拓扑变化带来的影响最小化。
(1) 骨干区域(Backbone Area)
OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号(Area ID)是0,通常被称为骨干区域。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此,OSPF有两个规定:
l 所有非骨干区域必须与骨干区域保持连通;
l 骨干区域自身也必须保持连通。
但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通过配置OSPF虚连接(Virtual Link)予以解决。
(2) 虚连接(Virtual Link)
虚连接是指在两台ABR之间通过一个非骨干区域而建立的一条逻辑上的连接通道。它的两端必须是ABR,而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区(Transit Area)。
在图1-2中,Area2与骨干区域之间没有直接相连的物理链路,但可以在ABR上配置虚连接,使Area2通过一条逻辑链路与骨干区域保持连通。
虚连接的另外一个应用是提供冗余的备份链路,当骨干区域因链路故障不能保持连通时,通过虚连接仍然可以保证骨干区域在逻辑上的连通性。如图1-3所示。
虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,在这个连接上,和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。
两台ABR之间直接传递OSPF报文信息,它们之间的OSPF路由器只是起到一个转发报文的作用。由于协议报文的目的地址不是中间这些路由器,所以这些报文对于它们而言是透明的,只是当作普通的IP报文来转发。
Stub区域是一些特定的区域,Stub区域不允许注入Type5 LSA,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。
为了进一步减少Stub区域中路由器的路由表规模以及路由信息传递的数量,可以将该区域配置为Totally Stub(完全Stub)区域,该区域的ABR不会将区域间的路由信息和外部路由信息传递到本区域。
(Totally)Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,(Totally)Stub区域位于自治系统的边界。
为保证到本自治系统的其他区域或者自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由,并发布给本区域中的其他非ABR路由器。
配置(Totally)Stub区域时需要注意下列几点:
l 骨干区域不能配置成(Totally)Stub区域。
l 如果要将一个区域配置成Stub区域,则该区域中的所有路由器必须都要配置stub命令。
l 如果要将一个区域配置成Totally Stub区域,该区域中的所有路由器必须配置stub命令,该区域的ABR路由器需要配置stub [ no-summary ]命令。
l (Totally)Stub区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
l 虚连接不能穿过(Totally)Stub区域。
NSSA(Not-So-Stubby Area)区域是Stub区域的变形,与Stub区域有许多相似的地方。NSSA区域也不允许Type5 LSA注入,但可以允许Type7 LSA注入。Type7 LSA由NSSA区域的ASBR产生,在NSSA区域内传播。当Type7 LSA到达NSSA的ABR时,由ABR将Type7 LSA转换成Type5 LSA,传播到其他区域。
如图1-4所示,运行OSPF协议的自治系统包括3个区域:区域1、区域2和区域0,另外两个自治系统运行RIP协议。区域1被定义为NSSA区域,区域1接收的RIP路由传播到NSSA ASBR后,由NSSA ASBR产生Type7 LSA在区域1内传播,当Type7 LSA到达NSSA ABR后,转换成Type5 LSA传播到区域0和区域2。
另一方面,运行RIP的自治系统的RIP路由通过区域2的ASBR产生Type5 LSA在OSPF自治系统中传播。但由于区域1是NSSA区域,所以Type5 LSA不会到达区域1。
与Stub区域一样,虚连接也不能穿过NSSA区域。
如图1-5所示,列出了各个区域之间的区别。
各区域特性:
l Totally Stub区域:允许ABR发布的Type3缺省路由,不允许自治系统外部路由和区域间的路由;
l Stub区域:和Totally Stub区域不同在于该区域允许区域间路由;
l NSSA区域:和Stub区域不同在于该区域允许自治系统外部路由的引入,由ASBR发布Type7 LSA通告给本区域;
l Totally NSSA区域:和NSSA区域不同在于该区域不允许区域间路由。
OSPF路由器根据在AS中的不同位置,可以分为以下四类:
(1) 区域内路由器(Internal Router)
该类路由器的所有接口都属于同一个OSPF区域。
(2) 区域边界路由器ABR(Area Border Router)
该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域(骨干区域的介绍请参见下一小节)。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
(3) 骨干路由器(Backbone Router)
该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。
(4) 自治系统边界路由器ASBR
与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它有可能是区域内路由器,也有可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
图1-6 OSPF路由器的类型
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的开销。
OSPF根据链路层协议类型将网络分为下列四种类型:
l 广播(Broadcast)类型:当链路层协议是Ethernet、FDDI时,OSPF缺省认为网络类型是Broadcast。在该类型的网络中,通常以组播形式(224.0.0.5:含义是OSPF路由器的预留IP组播地址;224.0.0.6:含义是OSPF DR的预留IP组播地址)发送Hello报文、LSU报文和LSAck报文;以单播形式发送DD报文和LSR报文。
l NBMA(Non-Broadcast Multi-Access,非广播多点可达网络)类型:当链路层协议是帧中继、ATM或X.25时,OSPF缺省认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文。
l P2MP(Point-to-MultiPoint,点到多点)类型:没有一种链路层协议会被缺省的认为是P2MP类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将NBMA改为点到多点的网络。在该类型的网络中,缺省情况下,以组播形式(224.0.0.5)发送协议报文。可以根据用户需要,以单播形式发送协议报文。
l P2P(Point-to-Point,点到点)类型:当链路层协议是PPP、HDLC时,OSPF缺省认为网络类型是P2P。在该类型的网络中,以组播形式(224.0.0.5)发送协议报文。
NBMA网络是指非广播、多点可达的网络,比较典型的有ATM和帧中继网络。
对于接口的网络类型为NBMA的网络需要进行一些特殊的配置。由于无法通过广播Hello报文的形式发现相邻路由器,必须手工为该接口指定相邻路由器的IP地址,以及该相邻路由器是否有DR选举权等。
NBMA网络必须是全连通的,即网络中任意两台路由器之间都必须有一条虚电路直接可达。如果部分路由器之间没有直接可达的链路时,应将接口配置成P2MP类型。如果路由器在NBMA网络中只有一个对端,也可将接口类型配置为P2P类型。
NBMA与P2MP网络之间的区别如下:
l NBMA网络是指那些全连通的、非广播、多点可达网络。而P2MP网络,则并不需要一定是全连通的。
l 在NBMA网络中需要选举DR与BDR,而在P2MP网络中没有DR与BDR。
l NBMA是一种缺省的网络类型,而P2MP网络必须是由其它的网络强制更改的。最常见的做法是将NBMA网络改为P2MP网络。
l NBMA网络采用单播发送报文,需要手工配置邻居。P2MP网络采用组播方式发送报文。
在广播网和NBMA网络中,任意两台路由器之间都要交换路由信息。如果网络中有n台路由器,则需要建立n(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF协议定义了指定路由器DR(Designated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态发送出去。
如果DR由于某种故障而失效,则网络中的路由器必须重新选举DR,再与新的DR同步。这需要较长的时间,在这段时间内,路由的计算是不正确的。为了能够缩短这个过程,OSPF提出了BDR(Backup Designated Router,备份指定路由器)的概念。
BDR上是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR。由于不需要重新选举,并且邻接关系事先已建立,所以这个过程是非常短暂的。当然这时还需要再重新选举出一个新的BDR,虽然一样需要较长的时间,但并不会影响路由的计算。
运行OSPF进程的网络中,既不是DR也不是BDR的路由器为DR Other。DR Other仅与DR和BDR之间建立邻接关系,DR Other之间不交换任何路由信息。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量,同时减少网络流量,节约了带宽资源。
如图1-7所示,用实线代表以太网物理连接,虚线代表建立的邻接关系。可以看到,采用DR/BDR机制后,5台路由器之间只需要建立7个邻接关系就可以了。
图1-7 DR和BDR示意图
DR和BDR是由同一网段中所有的路由器根据路由器优先级、Router ID通过Hello报文选举出来的,只有优先级大于0的路由器才具有选举资格。
进行DR/BDR选举时每台路由器将自己选出的DR写入Hello报文中,发给网段上的每台运行OSPF协议的路由器。当处于同一网段的两台路由器同时宣布自己是DR时,路由器优先级高者胜出。如果优先级相等,则Router ID大者胜出。如果一台路由器的优先级为0,则它不会被选举为DR或BDR。
需要注意的是:
l 只有在广播或NBMA类型接口才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。
l DR是某个网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DR Other。
l 路由器的优先级可以影响DR/BDR的选举过程,但是当DR/BDR已经选举完毕,就算一台具有更高优先级的路由器变为有效,也不会替换该网段中已经存在的DR/BDR成为新的DR/BDR。
l DR并不一定就是路由器优先级最高的路由器接口;同理,BDR也并不一定就是路由器优先级次高的路由器接口。
OSPF报文直接封装为IP报文协议报文,协议号为89。一个比较完整的OSPF报文(以LSU报文为例)结构如图1-8所示。
图1-8 OSPF报文结构
OSPF有五种报文类型,它们有相同的报文头。如图1-9所示。
图1-9 OSPF报文头格式
主要字段的解释如下:
l Version:OSPF的版本号。对于OSPFv2来说,其值为2。
l Type:OSPF报文的类型。数值从1到5,分别对应Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。
l Packet length:OSPF报文的总长度,包括报文头在内,单位为字节。
l Router ID:始发该LSA的路由器的ID。
l Area ID:始发LSA的路由器所在的区域ID。
l Checksum:对整个报文的校验和。
l AuType:验证类型。可分为不验证、简单(明文)口令验证和MD5验证,其值分别为0、1、2。
l Authentication:其数值根据验证类型而定。当验证类型为0时未作定义,为1时此字段为密码信息,类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。
MD5验证数据添加在OSPF报文后面,不包含在Authenticaiton字段中。
最常用的一种报文,周期性的发送给邻居路由器用来维持邻居关系以及DR/BDR的选举,内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。Hello报文格式如图1-10所示。
图1-10 Hello报文格式
主要字段解释如下:
l Network mask:发送Hello报文的接口所在网络的掩码,如果相邻两台路由器的网络掩码不同,则不能建立邻居关系。
l HelloInterval:发送Hello报文的时间间隔。如果相邻两台路由器的Hello间隔时间不同,则不能建立邻居关系。
l Rtr Pri:路由器优先级。如果设置为0,则该路由器接口不能成为DR/BDR。
l RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。如果相邻两台路由器的失效时间不同,则不能建立邻居关系。
l Designated router:指定路由器的接口的IP地址。
l Backup designated router:备份指定路由器的接口的IP地址。
l Neighbor:邻居路由器的Router ID。
两台路由器进行数据库同步时,用DD报文来描述自己的LSDB,内容包括LSDB中每一条LSA的摘要(摘要是指LSA的Header,通过该Header可以唯一标识一条LSA)。这样做是为了减少路由器之间传递信息的量,因为LSA的Header只占一条LSA的整个数据量的一小部分,根据Header,对端路由器就可以判断出是否已有这条LSA。
DD报文格式如图1-11所示。
图1-11 DD报文格式
主要字段的解释如下:
l Interface MTU:在不分片的情况下,此接口最大可发出的IP报文长度。
l I(Initial):当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。
l M(More):当连续发送多个DD报文时,如果这是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。
l MS(Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主(Master)从(Slave)关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。
l DD Sequence Number:DD报文序列号,由Master方规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。主从双方利用序列号来保证DD报文传输的可靠性和完整性。
两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。LSR报文格式如图1-12所示。
图1-12 LSR报文格式
主要字段解释如下:
l LS type:LSA的类型号。例如Type1表示Router LSA。
l Link State ID:链路状态标识,根据LSA的类型而定。
l Advertising Router:产生此LSA的路由器的Router ID。
LSU报文用来向对端路由器发送它所需要的LSA,内容是多条LSA(全部内容)的集合。LSU报文格式如图1-13所示。
图1-13 LSU报文格式
主要字段解释如下:
l Number of LSAs:该报文包含的LSA的数量。
l LSA:该报文包含的LSA。
LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header。一个LSAck报文可对多个LSA进行确认。报文格式如图1-14所示。
图1-14 LSAck报文格式
主要字段解释如下:
LSA Headers:该报文包含的LSA头部。
所有的LSA都有相同的报文头,其格式如图1-15所示。
图1-15 LSA的头格式
主要字段的解释如下:
l LS age:LSA产生后所经过的时间,以秒为单位。LSA在本路由器的链路状态数据库(LSDB)中会随时间老化(每秒钟加1),但在网络的传输过程中却不会。
l LS type:LSA的类型。
l Link State ID:具体数值根据LSA的类型而定。
l Advertising Router:始发LSA的路由器的ID。
l LS sequence number:LSA的序列号,其他路由器根据这个值可以判断哪个LSA是最新的。
l LS checksum:除了LS age字段外,关于LSA的全部信息的校验和。
l length:LSA的总长度,包括LSA Header,以字节为单位。
(1) Router LSA
主要字段的解释如下:
l Link State ID:产生此LSA的路由器的Router ID。
l V(Virtual Link):如果产生此LSA的路由器是虚连接的端点,则置为1。
l E(External):如果产生此LSA的路由器是ASBR,则置为1。
l B(Border):如果产生此LSA的路由器是ABR,则置为1。
l # Links:LSA中所描述的链路信息的数量,包括路由器上处于某区域中的所有链路和接口。
l Link ID:链路标识,具体的数值根据链路类型而定。
l Link data:链路数据,具体的数值根据链路类型而定。
l Type:链路类型,取值为1表示通过点对点链路与另一路由器相连,取值为2表示连接到传送网络,取值为3表示连接到Stub网络,取值为4表示虚连接。
l #TOS:描述链路不同TOS开销的数量。如果没有TOS开销和当前链路关联,那么这个字段就设置为0。RFC 2328已经不再支持TOS,保留该字段主要是为了兼容早期的OSPF版本。
l Metric:链路的开销。
l TOS:服务类型。
l TOS metric:指定服务类型的链路的开销。
(2) Network LSA
Network LSA由广播网或NBMA网络中的DR发出,LSA中记录了这一网段上所有路由器的Router ID。
图1-17 Network LSA格式
主要字段的解释如下:
l Link State ID:DR的IP地址。
l Network mask:广播网或NBMA网络地址的掩码。
l Attached router:连接在同一个网段上的所有与DR形成了完全邻接关系的路由器的Router ID,也包括DR自身的Router ID。
(3) Summary LSA
Network Summary LSA(Type3 LSA)和ASBR Summary LSA(Type4 LSA)除Link State ID字段有所不同外,有着相同的格式,它们都是由ABR产生。
主要字段的解释如下:
l Link State ID:对于Type3 LSA来说,它是所通告的区域外的网络地址;对于Type4来说,它是所通告区域外的ASBR的Router ID。
l Network mask:Type3 LSA的网络地址掩码。对于Type4 LSA来说没有意义,设置为0.0.0.0。
l Metric:到目的地址的路由开销。
Type3的LSA可以用来通告缺省路由,此时Link State ID和Network Mask都设置为0.0.0.0。
(4) AS External LSA
由ASBR产生,描述到AS外部的路由信息。
主要字段的解释如下:
l Link State ID:所要通告的其他外部AS的目的地址,如果通告的是一条缺省路由,那么链路状态ID(Link State ID)和网络掩码(Network Mask)字段都将设置为0.0.0.0。
l Network mask:所通告的目的地址的掩码。
l E(External Metric):外部度量值的类型。如果是第2类外部路由就设置为1,如果是第1类外部路由则设置为0。关于外部路由类型的详细描述请参见1.1.3 2. 路由类型部分。
l Metirc:路由开销。
l Forwarding Address:到所通告的目的地址的报文将被转发到的地址。
l External Route Tag:添加到外部路由上的标记。OSPF本身并不使用这个字段,它可以用来对外部路由进行管理。
(5) NSSA External LSA
由NSSA区域内的ASBR产生,且只能在NSSA区域内传播。其格式与AS External LSA相同,如图1-20所示。
OSPF支持多进程,在同一台路由器上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。支持多个OSPF进程共用一个RID。
路由器的一个接口只能属于某一个OSPF进程。
OSPF支持报文验证功能,只有通过验证的OSPF报文才能接收,否则将不能正常建立邻居关系。
一个区域中所有的接口的验证类型(不支持验证、支持明文验证或者支持MD5密文验证)必须一致。一个网段中所有接口的验证字口令必须一致。
GR(Graceful Restart,平滑重启)是一种在协议重启或主备切换时保证转发业务不中断的机制。GR有两个角色:
l GR Restarter:发生协议重启或主备倒换事件且具有GR能力的设备。
l GR Helper:和GR Restarter具有邻居关系,协助完成GR流程的设备。
基于OSPF的GR Restarter进行协议重启后,为了与其OSPF邻居重新同步链路状态数据库,它必须完成下列两项任务:
l 在不改变邻接关系的前提下,重新获取网络中的有效OSPF邻居信息;
l 重新获取网络链路状态数据库的内容。
在OSPF协议重启前,GR Restarter与GR Helper协商GR能力,如果GR Restarter发生重启,在重启过程中,GR Helper宣告与GR Restarter的邻接状态不变。
OSPF协议重启完毕后,GR Restarter会立即向邻接的GR Helper发送一个OSPF GR信号。这样,OSPF邻居就不会复位与GR Restarter的邻居关系。在收到OSPF邻居的响应后,GR Restarter会重新恢复与GR Helper的邻居关系列表。
邻居关系重新建立后,GR Restarter与其所有具备GR能力的OSPF邻居之间同步数据库,并交换路由信息。交换完成后,GR Restarter根据新的路由转发信息更新路由表和转发表,删除失效的路由,完成OSPF协议收敛。
OSPF TE(Traffic Engineering,流量工程)支持建立和维护TE的LSP(Label Switch Path,标签交换路径)。
MPLS(MultiProtocol Label Switching,多协议标签交换)在构建CR LSP(Constraint-based Routed LSP,基于约束路由的LSP)时,需要了解本区域中所有链路的流量属性信息。它通过OSPF来获取链路的流量工程信息。
OSPF支持Opaque LSA,可以用来承载流量工程信息。
DS-TE(DiffServ Aware TE)主要用于优化和分配网络传输资源、对流进行分类、指定每条流在链路带宽中所占的比例。流量工程是基于划分后的类(细粒度聚合类)实现的,而不是聚合的类(粗粒度聚合类)。这一点改善了性能和带宽的利用率。
为了支持MPLS中DS-TE的应用,OSPF支持子TLV(Local Overbooking Multiplier TLV)和BC(Bandwidth Constraint,带宽约束)TLV。
OSPF TE的详细配置请参见“MPLS配置指导”中的“MPLS TE”。
OSPF支持IGP Shortcut和Forwarding Adjacency特性,这两个特性允许OSPF使用LSP作为到达某个目的地址的出接口。否则,即使存在到达某个目的地址的LSP,OSPF也不能使用它作为出接口。
IGP Shortcut和Forwarding Adjacency的区别在于:
l 如果仅使能了Forwarding Adjacency特性,OSPF也可以使用LSP到达目的地址;
l 如果仅使能了IGP Shortcut,则只有使能此特性的路由器才可以在路由中使用LSP。
此特性的详细配置请参见“MPLS配置指导”中的“MPLS TE”。
OSPF支持多实例,可以运行在VPN网络中的PE上。
在BGP MPLS VPN网络中,属于同一个VPN的多个Site可以使用OSPF作为内部路由协议。然而,它们会被看作属于不同的自治系统来处理。这样,在一个节点学到的OSPF路由,将被作为外部路由传送给另一节点。这种处理方式导致了比较高的OSPF路由协议流量,并带来了一些原本可以避免的网络管理问题。
目前,可以在PE上通过配置域ID来区分Site所在的VPN。属于同一个VPN的不同Site之间彼此看作是直接相连的。这样,PE路由器之间交换OSPF路由信息时就好像是通过一条专线相连,改善了网络管理并使OSPF的应用更为有效。
此特性的相关配置请参见”MPLS配置指导”中的“MPLS L3VPN”。
OSPF伪连接(sham link)是MPLS VPN骨干网上两个PE路由器之间的点到点链路。
通常情况下,BGP对等体之间通过BGP扩展团体属性在MPLS VPN骨干网上承载路由信息。另一端PE上运行的OSPF可利用这些信息来生成PE到CE的Type3 LSA,这些路由是区域间路由。
但是,如果路由器和它同一区域内的PE路由器相连,且建立到达特定目的地址的内部区域路由(后门路由),那么VPN流量就将总是穿越这条后门路由,而不是骨干路由。这是因为在路由表中建立的OSPF内部区域路由的优先级较高。为了避免这一异常现象,可以在PE路由器之间配置一条unnumbered的点到点伪连接。这样,就可以通过一条低开销的内部区域路由到达PE路由器。
OSPF伪连接的相关配置请参见”MPLS配置指导”中的“MPLS L3VPN”。
关于BFD的介绍和基本功能配置,请参见“可靠性配置指导”中的“BFD”。
BFD(Bidirectional Forwarding Detection,双向转发检测)能够为OSPF邻居之间的链路提供快速检测功能。当邻居之间的链路出现故障时,加快OSPF协议的收敛速度。
与OSPF相关的协议规范有:
l RFC 1765:OSPF Database Overflow
l RFC 2328:OSPF Version 2
l RFC 3101:OSPF Not-So-Stubby Area (NSSA) Option
l RFC 3137:OSPF Stub Router Advertisement
l RFC 3630:Traffic Engineering Extensions to OSPF Version 2
l RFC 4811:OSPF Out-of-Band LSDB Resynchronization
l RFC 4812:OSPF Restart Signaling
l RFC 4813:OSPF Link-Local Signaling
在一个运行OSPF的路由域里,有各种类型的路由器,区域内路由器、ABR、ASBR等。
无论是哪种类型的路由器,都必须先使能OSPF,否则OSPF协议将无法正常运行;使能OSPF功能后,路由器可以使用一些缺省配置,如OSPF各种协议报文的发送时间间隔、LSA延迟时间、SPF计算时间间隔等,也可以根据需要修改缺省配置。
在OSPF路由器上进行各项配置的时候都应该先做好网络规划,在配置同一区域内的路由器时,配置时应该以区域为基础来统一考虑,错误的配置可能会导致相邻路由器之间无法相互传递信息,甚至导致路由信息的阻塞或者产生路由环。
表1-1 OSPF配置任务简介
配置任务 |
说明 |
详细配置 |
|
使能OSPF功能 |
必选 |
||
配置OSPF区域 |
配置Stub区域 |
可选 |
|
配置NSSA区域 |
可选 |
||
配置虚连接 |
可选 |
||
配置OSPF的网络类型 |
配置OSPF接口网络类型为广播 |
可选 |
|
配置OSPF接口网络类型为NBMA |
可选 |
||
配置OSPF接口网络类型为P2MP |
可选 |
||
配置OSPF接口网络类型为P2P |
可选 |
||
配置OSPF的路由信息控制 |
配置OSPF路由聚合 |
可选 |
|
配置OSPF对通过接收到的LSA计算出来的路由信息进行过滤 |
可选 |
||
配置对Type-3 LSA进行过滤 |
可选 |
||
配置OSPF接口的开销值 |
可选 |
||
配置OSPF支持的路由最大数目 |
可选 |
||
配置OSPF最大等价路由条数 |
可选 |
||
配置OSPF协议的优先级 |
可选 |
||
配置OSPF引入外部路由 |
可选 |
||
配置发布一条主机路由 |
可选 |
||
调整和优化OSPF网络 |
配置OSPF报文定时器 |
可选 |
|
配置接口传送LSA的延迟时间 |
可选 |
||
配置SPF计算时间间隔 |
可选 |
||
配置LSA重复到达的最小时间间隔 |
可选 |
||
配置LSA重新生成的时间间隔 |
可选 |
||
禁止接口发送OSPF报文 |
可选 |
||
配置Stub路由器 |
可选 |
||
配置OSPF验证 |
可选 |
||
配置DD报文中的MTU |
可选 |
||
配置LSDB中External LSA的最大数量 |
可选 |
||
配置兼容RFC1583的外部路由选择规则 |
可选 |
||
配置邻接状态输出 |
可选 |
||
配置OSPF网管功能 |
可选 |
||
使能日志功能 |
可选 |
||
使能Opaque LSA发布接收能力 |
可选 |
||
配置OSPF优先处理Hello报文功能 |
可选 |
||
配置OSPF发送更新报文的速度 |
可选 |
||
配置OSPF快速重路由 |
可选 |
||
配置OSPF GR |
配置GR Restarter |
可选 |
|
配置GR Helper |
可选 |
||
重启OSPF GR进程 |
可选 |
||
配置OSPF与BFD联动 |
可选 |
在OSPF的各项配置任务中,必须先使能OSPF功能,其它功能特性的配置才能生效。
在配置OSPF之前,需完成以下任务:
l 配置链路层协议,保证链路层通信正常。
l 配置接口的网络层地址,使各相邻节点网络层可达。
要在路由器上使能OSPF功能,必须先创建OSPF进程、指定该进程关联的区域以及区域包括的网段;对于当前路由器来说,如果某个路由器的接口IP地址落在某个区域的网段内,则该接口属于这个区域并使能了OSPF功能,OSPF将把这个接口的直连路由宣告出去。
Router ID用来在一个自治系统中唯一的标识一台路由器,一台路由器如果要运行OSPF协议,则必须存在Router ID。
l 用户可以在创建OSPF进程的时候指定Router ID,配置时,必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个接口的IP地址一致。
l 如果在创建OSPF进程的时候没有指定Router ID,则缺省使用全局Router ID,关于全局Router ID的详细说明,请参考“三层技术-IP路由配置指导”中的“IP路由基础”。建议用户在创建OSPF进程的时候指定Router ID。
目前,系统支持OSPF多进程和OSPF多实例:
l 当在一台路由器上启动多个OSPF进程时,需要指定不同的进程号。OSPF进程号是本地概念,不影响与其它路由器之间的报文交换。因此,不同的路由器之间,即使进程号不同也可以进行报文交换。
l 可以配置OSPF在VPN实例中运行。如果指定了VPN实例,那么此OSPF进程属于指定的VPN实例。
表1-2 使能OSPF功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建OSPF,进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
必选 缺省情况下,系统不运行OSPF |
配置OSPF进程描述 |
description description |
可选 缺省情况下,没有配置进程描述 |
配置OSPF区域,进入OSPF区域视图 |
area area-id |
必选 缺省情况下,没有配置OSPF区域 |
配置区域描述 |
description description |
可选 缺省情况下,没有配置区域描述 |
配置区域所包含的网段并在指定网段的接口上使能OSPF |
network ip-address wildcard-mask |
必选 缺省情况下,接口不属于任何区域且OSPF功能处于关闭状态 |
l 一个网段只能属于一个区域。
l 建议用户为每个OSPF进程配置进程描述信息,帮助识别进程的用途,以便于记忆和管理。
l 建议用户为每个区域配置区域描述信息,帮助识别区域的用途,以便于记忆和管理。
网络管理员对整个网络划分区域完毕后,可以根据组网需要进一步将区域配置成Stub区域或NSSA区域。
当非骨干区域不能与骨干区域保持连通,或者骨干区域因为各方面条件的限制无法保持连通时,可以通过配置OSPF虚连接予以解决。
在配置OSPF的区域特性之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达
l 使能OSPF功能
对于位于AS边缘的一些非骨干区域,我们可以在该区域的所有路由器上配置stub命令,把该区域配置为Stub区域。这样,描述自治系统外部路由的Type5 LSA不会在Stub区域里泛洪,减小了路由表的规模。ABR生成一条缺省路由,所有到达自治系统外部的报文都交给ABR进行转发。
如果想进一步减少Stub区域路由表规模以及路由信息传递的数量,那么在ABR上配置stub命令时指定no-summary参数,可以将该区域配置为Totally Stub(完全Stub)区域。这样,自治系统外部路由和区域间的路由信息都不会传递到本区域,所有目的地是自治系统外和区域外的报文都交给ABR进行转发。
表1-3 配置Stub区域
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置当前区域为Stub区域 |
stub [ no-summary ] |
必选 缺省情况下,没有区域被设置为Stub区域 |
配置ABR发送到Stub区域缺省路由的开销 |
default-cost cost |
可选 缺省情况下,ABR发送到Stub区域缺省路由的开销为1 |
l Stub区域内的所有路由器必须使用stub命令将该区域配置成Stub属性。
l default-cost命令只有在Stub区域的ABR上配置才能生效。
l 骨干区域不能配置成(Totally)Stub区域。
l (Totally)Stub区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
l 虚连接不能穿过(Totally)Stub区域。
Stub区域不能引入外部路由,为了在允许将外部路由通告到OSPF路由域内部的同时,保持其余部分的Stub区域的特征;网络管理员可以将区域配置为NSSA区域。
表1-4 配置NSSA区域
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置当前区域为NSSA区域 |
nssa [ default-route-advertise | no-import-route | no-summary | translate-always | translator-stability-interval value ] * |
必选 缺省情况下,没有区域被设置为NSSA区域 |
配置发送到NSSA区域缺省路由的开销 |
default-cost cost |
可选 缺省情况下,发送到NSSA区域的缺省路由的开销为1 |
l NSSA区域内的所有路由器必须使用nssa命令将该区域配置成NSSA属性。
l default-cost命令只有在NSSA区域的ABR/ASBR上配置才能生效。
在划分区域之后,非骨干区域之间的OSPF路由更新是通过骨干区域来完成交换的。对此,OSPF要求所有非骨干区域必须与骨干区域保持连通,并且骨干区域自身也要保持连通。
但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通过在ABR上配置OSPF虚连接予以解决。
表1-5 配置虚连接
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
创建并配置虚连接 |
vlink-peer router-id [ hello seconds | retransmit seconds | trans-delay seconds | dead seconds | simple [ plain | cipher ] password | { md5 | hmac-md5 } key-id [ plain | cipher ] password ] * |
必选 为使虚连接生效,在虚连接的两端都需配置此命令,并且两端配置的hello、dead参数必须一致 |
OSPF的网络类型有四种:广播、NBMA、P2MP和P2P。
当接口封装的链路层协议不同时,OSPF接口网络类型的缺省值也不同:
l 广播:当接口封装的链路层协议是Ethernet、FDDI时,接口网络类型缺省值为广播;
l NBMA:当接口封装的链路层协议是ATM、帧中继或X.25时,接口网络类型缺省值为NBMA;
l 点对点:当接口封装的链路层协议是PPP、LAPB、HDLC或POS时,接口网络类型缺省值为点对点。
用户可以根据需要更改接口的网络类型,例如:
l 当NBMA网络通过配置地址映射成为全连通网络时(即网络中任意两台路由器之间都存在一条虚电路而直接可达),可以将网络类型更改为广播,不需要手工配置邻居,简化配置。
l 当广播网络中有部分路由器不支持组播时,那么可以将网络类型更改为NBMA。
l NBMA网络要求必须是全连通的,即网络中任意两台路由器之间都必须有一条虚电路直接可达;如果NBMA网络不是全连通而是部分连通时,可以将网络类型更改为点对多点,达到简化配置、节省开销的目的。
l 如果路由器在NBMA网络中只有一个对端,也可将接口类型配置为P2P,节省网络开销。
如果接口配置为广播、NBMA或者P2MP网络类型,只有双方接口在同一网段才能建立邻居关系。
在配置OSPF的网络类型之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点之间网络层可达
l 使能OSPF功能
表1-6 配置OSPF接口网络类型为广播
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口网络类型为广播 |
ospf network-type broadcast |
必选 缺省情况下,接口的网络类型根据接口封装的链路层协议而定 |
配置OSPF接口的路由器优先级 |
ospf dr-priority priority |
可选 缺省情况下,接口的路由器优先级为1 |
把接口类型配置为NBMA后,需要进行一些特殊的配置。
由于无法通过广播Hello报文的形式动态发现相邻路由器,必须手工为接口指定相邻接口的IP地址、该相邻接口是否有选举权等(dr-priority参数的值仅表示路由器是否具有DR选举权,为0表示不具有DR选举权,大于0时表示具有DR选举权)。
表1-7 配置OSPF接口网络类型为NBMA
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口的网络类型为NBMA |
ospf network-type nbma |
必选 缺省情况下,接口的网络类型根据物理接口而定 |
配置OSPF接口的路由器优先级 |
ospf dr-priority priority |
可选 缺省情况下,接口的路由器优先级为1 |
退回系统视图 |
quit |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置NBMA网络的邻居 |
peer ip-address [ cost value | dr-priority dr-priority ] |
必选 |
使用peer命令和使用ospf dr-priority命令设置的优先级具有不同的用途:
l peer命令设置的优先级用于表示邻居是否具有选举权。如果在配置邻居时将优先级指定为0,则本地路由器认为该邻居不具备选举权,不向该邻居发送Hello报文,这种配置可以减少在DR和BDR选举过程中网络上的Hello报文数量。但如果本地路由器是DR或BDR,它也会向优先级为0的邻居发送Hello报文,以建立邻接关系。
l ospf dr-priority命令设置的优先级用于实际的DR选举。
表1-8 配置OSPF接口网络类型为P2MP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口的网络类型为P2MP |
ospf network-type p2mp [ unicast ] |
必选 缺省情况下,接口的网络类型根据物理接口而定 当把接口类型配置为P2MP单播后,OSPF协议在该接口上发送的报文均为单播报文。由于无法通过广播Hello报文的形式动态发现相邻路由器,必须手工为接口指定相邻接口的IP地址 |
退回系统视图 |
quit |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置P2MP单播网络的邻居 |
peer ip-address [ cost value | dr-priority dr-priority ] |
如果接口类型为P2MP单播,必选 |
表1-9 配置OSPF接口网络类型为P2P
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口的网络类型为P2P |
ospf network-type p2p |
必选 缺省情况下,接口的网络类型根据物理接口而定 |
通过本节的配置,可以控制OSPF的路由信息的发布与接收,并引入其他协议的路由。
在配置OSPF路由信息控制之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点之间网络层可达
l 使能OSPF功能
l 如果对路由信息进行过滤,则需要配置对应的过滤列表
路由聚合是指ABR或ASBR将具有相同前缀的路由信息聚合,只发布一条路由到其它区域。
AS被划分成不同的区域后,每一个区域通过OSPF边界路由器(ABR)相连,区域间可以通过路由聚合来减少路由信息,减小路由表的规模,提高路由器的运算速度。
ABR在计算出一个区域的区域内路由之后,根据聚合相关设置,将其中多条OSPF路由聚合成一条发送到区域之外。例如,某个区域内有三条区域内路由19.1.1.0/24,19.1.2.0/24,19.1.3.0/24,如果在ABR上配置了路由聚合,将三条路由聚合成一条19.1.0.0/16,则ABR就只生成一条聚合后的LSA,并发布给其它区域的路由器。
如果区域里存在一些连续的网段,则可以在ABR上配置路由聚合,将这些连续的网段聚合成一个网段,ABR向其它区域发送路由信息时,以网段为单位生成Type3 LSA。
这样ABR只发送一条聚合后的LSA,所有属于聚合网段范围的LSA将不再会被单独发送出去,既可以减少其它区域中LSDB的规模,也减小了因为网络拓扑变化带来的影响。
表1-10 配置ABR路由聚合
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置OSPF的ABR路由聚合 |
abr-summary ip-address { mask | mask-length } [ advertise | not-advertise ] [ cost cost ] |
必选 此命令只有在ABR上配置才会有效 缺省情况下,ABR不会对路由进行聚合 |
ASBR引入外部路由后,每一条路由都会放在单独的一条ASE LSA中向外宣告;通过配置路由聚合,路由器只把聚合后的路由放在ASE LSA中向外宣告,减少了LSDB中LSA的数量。
在ASBR上配置路由聚合后,将对聚合地址范围内的Type5 LSA进行聚合。
如果ASBR在NSSA区域里面,将对聚合地址范围内的Type7 LSA进行聚合,当本地路由器同时是ASBR和ABR时,将对由Type7 LSA转化成的Type5 LSA进行聚合处理。
表1-11 配置ASBR路由聚合
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置OSPF的ASBR路由聚合 |
asbr-summary ip-address { mask | mask-length } [ tag tag | not-advertise | cost cost ] * |
必选 此命令只有在ASBR上配置才会有效 缺省情况下,ASBR不会对引入的路由进行聚合 |
l 关于地址前缀列表的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
l 关于路由策略的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
OSPF是基于链路状态的动态路由协议,路由信息是根据接收到的LSA计算出来的,可以对通过接收到的LSA计算出来的OSPF路由信息进行过滤。
一共有四种过滤方式:
l 基于要加入到路由表的路由信息的目的地址进行过滤,可以通过配置访问控制列表或IP地址前缀列表来指定过滤条件;
l 基于要加入到路由表的路由信息的下一跳进行过滤,可以通过在命令中配置gateway参数来指定过滤条件;
l 基于要加入到路由表的路由信息的目的地址和下一跳进行过滤,可以通过配置访问控制列表或IP地址前缀列表指定过滤目的地址的条件,同时配置gateway参数来指定过滤下一跳的条件;
l 基于路由策略对要加入到路由表的路由信息进行过滤,可以通过在命令中配置route-policy参数来指定过滤条件。
表1-12 配置OSPF对通过接收到的LSA计算出来的路由信息进行过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置对接收的路由进行过滤 |
filter-policy { acl-number [ gateway ip-prefix-name ] | gateway ip-prefix-name | ip-prefix ip-prefix-name [ gateway ip-prefix-name ] | route-policy route-policy-name } import |
必选 缺省情况下,不对接收到的路由信息进行过滤 |
通过在ABR上配置Type-3 LSA过滤,可以对进入ABR所在区域或ABR向其它区域发布的Type-3 LSA进行过滤。
表1-13 配置过滤Type-3 LSA
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置对Type-3 LSA进行过滤 |
filter { acl-number | ip-prefix ip-prefix-name } { import | export } |
必选 缺省情况下,没有对Type-3 LSA进行过滤 |
OSPF有两种方式来配置接口的开销值:
l 在接口视图下直接配置开销值;
l 配置接口的带宽参考值,OSPF根据带宽参考值自动计算接口的开销值,计算公式为:接口开销=带宽参考值÷接口带宽,当计算出来的开销值大于65535时,开销取最大值65535;当计算出来的开销值小于1时,开销取最小值1。
如果没有在接口视图下的配置此接口的开销值,OSPF会根据该接口的带宽自动计算其开销值。
表1-14 配置OSPF接口的开销值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置OSPF接口的开销值 |
ospf cost value |
可选 缺省情况下,接口按照当前的带宽自动计算开销。对于Loopback接口,缺省值为0 |
表1-15 配置带宽参考值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置带宽参考值 |
bandwidth-reference value |
可选 缺省情况下,带宽参考值为100Mbps |
表1-16 配置OSPF支持的路由最大数目
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置OSPF支持的路由最大数目 |
maximum-routes { external | inter | intra } number |
可选 本命令的缺省值与设备的型号有关,请以设备的实际情况为准 |
如果到一个目的地有几条开销相同的路径,可以实现等价路由负载分担,IP报文在这几个链路上负载分担,以提高链路利用率。该配置用以设置OSPF协议的最大等价路由条数。
表1-17 配置OSPF最大等价路由条数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置OSPF最大等价路由条数 |
maximum load-balancing maximum |
可选 缺省情况下,OSPF支持的等价路由的最大条数为8 |
由于路由器上可能同时运行多个动态路由协议,就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级,在不同协议发现同一条路由时,优先级高的路由将被优先选择。
表1-18 配置OSPF协议的优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置OSPF协议的路由优先级 |
preference [ ase ] [ route-policy route-policy-name ] value |
可选 缺省情况下,OSPF内部路由的优先级为10,OSPF外部路由的优先级为150 |
如果在路由器上不仅运行OSPF,还运行着其它路由协议,可以配置OSPF引入其它协议生成的路由,如RIP、ISIS、BGP、静态路由或者直连路由,将这些路由信息通过Type5 LSA或Type7 LSA向外宣告。
OSPF还可以对引入的路由进行过滤,只将满足过滤条件的外部路由转换为Type5 LSA或Type7 LSA发布出去。
表1-19 配置OSPF引入其它协议的路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置OSPF引入其它协议的路由 |
import-route protocol [ process-id | all-processes | allow-ibgp ] [ cost cost | type type | tag tag | route-policy route-policy-name ] * |
必选 缺省情况下,没有引入其他协议的路由信息 |
配置对引入的路由进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ protocol [ process-id ] ] |
可选 缺省情况下,没有对引入的路由信息进行过滤 |
只能引入路由表中状态为active的路由,是否为active状态可以通过display ip routing-table protocol命令来查看。
OSPF不能通过import-route命令从其它协议引入缺省路由,如果想把缺省路由引入到OSPF路由区域,必须要使用下面命令配置OSPF引入缺省路由。
表1-20 配置OSPF引入缺省路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置OSPF引入缺省路由 |
default-route-advertise [ [ always | permit-calculate-other ] | cost cost | type type | route-policy route-policy-name ] * |
可选 缺省情况下,没有引入缺省路由 |
default-route-advertise summary cost cost |
default-route-advertise summary cost命令仅在VPN中应用,以Type-3 LSA引入缺省路由,PE路由器会将引入的缺省路由发布给CE路由器。
当OSPF引入外部路由时,还可以配置一些开销、路由数量、标记和类型等参数的缺省值。路由标记可以用来标识协议相关的信息,如OSPF从BGP引入路由时,可以用来标记自治系统的编号。
表1-21 配置引入路由时的相关参数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置引入外部路由时的参数缺省值(开销、路由数量、标记、类型) |
default { cost cost | limit limit | tag tag | type type } * |
可选 缺省情况下,OSPF引入外部路由的缺省值如下: l 路由度量值为1 l 单位时间内引入外部路由数量的上限为1000 l 外部路由标记值为1 l 引入的外部路由类型为Type2 |
表1-22 配置发布一条主机路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置并发布一条主机路由 |
host-advertise ip-address cost |
可选 缺省情况下,OSPF不发布所包含网段之外的主机路由 |
用户可以从以下几个方面来调整和优化OSPF网络:
l 通过改变OSPF的报文定时器,可以调整OSPF网络的收敛速度以及协议报文带来的网络负荷。在一些低速链路上,需要考虑接口传送LSA的延迟时间。
l 通过调整SPF计算间隔时间,可以抑制由于网络频繁变化带来的资源消耗问题。
l 在安全性要求较高的网络中,可以通过配置OSPF验证特性,来提高OSPF网络的安全性。
l OSPF同时支持网管功能,可以配置OSPF MIB与某一进程绑定,以及发送Trap消息和日志功能。
在调整和优化OSPF网络之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点之间网络层可达
l 使能OSPF功能
用户可以在接口上配置下列OSPF报文定时器:
l Hello定时器:接口向邻居发送Hello报文的时间间隔,OSPF邻居之间的Hello定时器的值要保持一致,且应与路由收敛速度、网络负荷大小成反比。
l Poll定时器:在NBMA网络中,路由器向状态为down的邻居路由器发送轮询Hello报文的时间间隔。
l 邻居失效时间:在邻居失效时间内,如果接口还没有收到邻居发送的Hello报文,路由器就会宣告该邻居无效。
l 接口重传LSA的时间间隔:路由器向它的邻居通告一条LSA后,需要对方进行确认。若在重传间隔时间内没有收到对方的确认报文,就会向邻居重传这条LSA。
表1-23 配置OSPF报文定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置Hello定时器 |
ospf timer hello seconds |
可选 缺省情况下,P2P、Broadcast类型接口发送Hello报文的时间间隔为10秒,P2MP、NBMA类型接口发送Hello报文的时间间隔为30秒 |
配置Poll定时器 |
ospf timer poll seconds |
可选 缺省情况下,发送轮询Hello报文的时间间隔为120秒 |
配置邻居失效时间 |
ospf timer dead seconds |
可选 缺省情况下,P2P、Broadcast类型接口的OSPF邻居失效时间为40秒,P2MP、NBMA类型接口的OSPF邻居失效时间为120秒 |
配置接口重传LSA的时间间隔 |
ospf timer retransmit interval |
可选 缺省情况下,时间间隔为5秒 |
l 修改了网络类型后,Hello定时器与邻居失效时间都将恢复缺省值。
l 在同一接口上邻居失效时间应至少为Hello时间间隔的4倍。
l 轮询Hello报文的时间间隔至少应为Hello时间间隔的4倍。
l 相邻路由器重传LSA时间间隔的值不要设置得太小,否则将会引起不必要的重传。通常应该大于一个报文在两台路由器之间传送一个来回的时间。
考虑到OSPF报文在链路上传送时也需要花费时间,所以LSA的老化时间(age)在传送之前要增加一定的延迟时间,在低速链路上需要对该项配置进行重点考虑。
表1-24 配置接口传送LSA的延迟时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口传送LSA的延迟时间 |
ospf trans-delay seconds |
可选 缺省情况下,接口传送LSA的延迟时间为1秒 |
当OSPF的链路状态数据库(LSDB)发生改变时,需要重新计算最短路径。如果网络频繁变化,且每次变化都立即计算最短路径,将会占用大量系统资源,并影响路由器的效率。通过调节SPF计算时间间隔,可以抑制由于网络频繁变化带来的影响。
表1-25 配置SPF计算时间间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置SPF计算时间间隔 |
spf-schedule-interval maximum-interval [ minimum-interval [ incremental-interval ] ] |
可选 缺省情况下,SPF计算的时间间隔为5秒 |
本命令在网络变化不频繁的情况下将连续路由计算的时间间隔缩小到minimum-interval,而在网络变化频繁的情况下可以进行相应惩罚,增加incremental-interval×2n-2(n为连续触发路由计算的次数),将等待时间按照配置的惩罚增量延长,最大不超过maximum-interval。
如果在重复到达的最小时间间隔内连续收到一条LSA类型、LS ID、生成路由器ID均相同的LSA则直接丢弃,这样就可以抑制网络频繁变化可能导致的占用过多带宽资源和路由器资源。
表1-26 配置LSA的重复接收最小间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置LSA重复到达的最小时间间隔 |
lsa-arrival-interval interval |
可选 缺省情况下,LSA重复到达的最小时间间隔为1000毫秒 |
建议lsa-arrival-interval命令配置的interval小于或等于lsa-generation-interval命令所配置的minimum-interval。
通过调节LSA重新生成的时间间隔,可以抑制网络频繁变化可能导致的占用过多带宽资源和路由器资源。
表1-27 配置LSA发送间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置LSA重新生成的时间间隔 |
lsa-generation-interval maximum-interval [ initial-interval [ incremental-interval ] ] |
可选 缺省情况下,最大时间间隔为5秒,最小时间间隔为0毫秒,惩罚增量为5000毫秒 |
本命令在网络变化不频繁的情况下将LSA重新生成时间间隔缩小到minimum-interval,而在网络变化频繁的情况下可以进行相应惩罚,增加incremental-interval×2n-2(n为连续触发路由计算的次数),将等待时间按照配置的惩罚增量延长,最大不超过maximum-interval。
如果要使OSPF路由信息不被某一网络中的路由器获得,可以禁止接口发送OSPF报文。
表1-28 禁止接口发送OSPF报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
禁止接口发送OSPF报文 |
silent-interface { interface-type interface-number | all } |
可选 缺省情况下,允许接口发送OSPF报文 |
l 不同的进程可以对同一接口禁止发送OSPF报文,但silent-interface命令只对本进程已经使能的OSPF接口起作用,对其它进程的接口不起作用。
l 将运行OSPF协议的接口指定为Silent状态后,该接口的直连路由仍可以由同一路由器的其它接口通过Router-LSA发布出去,但OSPF报文将被阻塞,接口上无法建立邻居关系。这样可以增强OSPF的组网适应能力,减少系统资源的消耗。
Stub路由器用来控制流量,它告知其他OSPF路由器不要使用这个Stub路由器来转发数据,但可以拥有一个到Stub路由器的路由。
通过将当前路由器配置为Stub路由器,在该路由器发布的Router-LSA中,当链路类型取值为3表示连接到Stub网络时,链路度量值不变;当链路类型为1、2、4分别表示通过点对点链路与另一路由器相连、连接到传送网络、虚连接时,链路度量值将设置为最大值65535。
这样其邻居计算出这条路由的开销就会很大,如果邻居上有到这个目的地址开销更小的路由,则数据不会通过这个Stub路由器转发。
表1-29 配置Stub路由器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置Stub路由器 |
stub-router |
必选 缺省情况下,没有路由器被配置为Stub路由器 |
Stub路由器与Stub区域无关。
从安全性角度来考虑,为了避免路由信息外泄或者对OSPF路由器进行恶意攻击,OSPF提供报文验证功能。
OSPF路由器建立邻居关系时,在发送的报文中会携带配置好的口令,接收报文时进行密码验证,只有通过验证的报文才能接收,否则将不会接收报文,不能正常建立邻居。
要配置OSPF报文验证,同一个区域的所有路由器上都需要配置区域验证模式,且配置的验证模式必须相同,同一个网段内的路由器需要配置相同的接口验证模式和口令。
表1-30 配置OSPF验证
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置OSPF区域的验证模式 |
authentication-mode { md5 | simple } |
必选 缺省情况下,没有配置区域验证模式 |
退回OSPF视图 |
quit |
- |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口的验证模式(简单验证) |
ospf authentication-mode simple [ cipher | plain ] password |
二者必选其一 缺省情况下,接口不对OSPF报文进行验证 |
配置OSPF接口的验证模式(MD5验证) |
ospf authentication-mode { hmac-md5 | md5 } key-id [ cipher | plain ] password |
一般情况下,接口发送DD报文时不使用接口的实际MTU值,而是用0代替。进行此配置后,将使用接口的实际MTU值填写DD报文Interface MTU字段。
表1-31 配置DD报文中的MTU
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置DD报文中MTU域的值为发送该报文接口的MTU值 |
ospf mtu-enable |
可选 缺省情况下,接口发送的DD报文中MTU域的值为0 |
表1-32 配置LSDB中External LSA的最大数量
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置LSDB中External LSA的最大数量 |
lsdb-overflow-limit number |
可选 缺省情况下,不对LSDB中External LSA的最大条目数进行限制 |
当通过多条LSA计算出同一条外部路由时,在RFC 2328中定义的选路规则与RFC 1583的有所不同,进行此配置可以兼容RFC 1583中定义的方式。当RFC 2328兼容RFC 1583时,优选骨干区的区域内路由;当RFC 2328不兼容RFC 1583时,优选非骨干区的区域内路由,这样做的目的是尽量减少骨干区的负担。
表1-33 配置兼容RFC 1583的外部路由选择规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置兼容RFC 1583的外部路由选择规则 |
rfc1583 compatible |
可选 缺省情况下,使能兼容RFC 1583的选路规则 |
为了避免路由环路,对于是否兼容RFC 1583的外部路由选择规则,同一路由域内的路由器建议配置相同,即要么配置所有路由器都兼容RFC 1583的外部路由选择规则,要么配置所有路由器都不兼容RFC 1583的外部路由选择规则。
表1-34 配置邻接状态输出
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
使能OSPF日志记录功能,记录邻居关系连接以及断开事件的日志信息 |
log-peer-change |
可选 缺省情况下,使能OSPF日志记录功能 |
开启OSPF模块的Trap功能后,该模块会生成Trap报文,用于报告该模块的重要事件。Trap报文的级别如下:
l 错误级别Trap报文,级别为level3;
l 警告级别Trap报文,级别为level4;
l 正常出现但是重要信息级别Trap报文,级别为level5;
l 通知信息级别Trap报文,级别为level6。
生成的Trap报文将被发送到设备的信息中心,通过设置信息中心的参数,最终决定Trap报文的输出规则(即是否允许输出以及输出方向)。(有关信息中心参数的配置请参见“网络管理和监控配置指导”中的“信息中心”。)
表1-35 配置OSPF网管功能
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
配置OSPF MIB绑定 |
ospf mib-binding process-id |
可选 缺省情况下,MIB绑定在进程号最小的OSPF进程上 |
使能OSPF的TRAP功能 |
snmp-agent trap enable ospf [ process-id ] [ ifauthfail | ifcfgerror | ifrxbadpkt | ifstatechange | iftxretransmit | lsdbapproachoverflow | lsdboverflow | maxagelsa | nbrstatechange | originatelsa | vifcfgerror | virifauthfail | virifrxbadpkt | virifstatechange | viriftxretransmit | virnbrstatechange ] * |
可选 缺省情况下,OSPF的TRAP功能处于使能状态 |
表1-36 使能日志功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
使能日志功能 |
enable log [ config | error | state ] |
必选 缺省情况下,日志功能处于关闭状态 |
通过使能Opaque LSA发布接收能力,OSPF可以接收和发布Type9、Type10和Type11的Opaque LSA。
表1-37 使能Opaque LSA发布接收能力
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
使能Opaque LSA发布接收能力 |
opaque-capability enable |
可选 缺省情况下,Opaque LSA发布接收能力处于关闭状态 |
为了保证协议的正常运行,路由器要同时接收和处理Hello报文和其它类型的协议报文,当路由器与多个邻居路由器同时建立邻居关系并且路由表中的路由条数比较多时,需要路由器接收和处理的报文数量会很大,可以通过配置OSPF优先接收和处理Hello报文,来确保邻居关系的稳定性。
表1-38 配置OSPF优先接收和处理Hello报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置OSPF优先接收和处理Hello报文 |
ospf packet-process prioritized-treatment |
必选 缺省情况下,OSPF不优先接收和处理Hello报文 |
如果路由器路由表里的路由条目很多,在与邻居进行LSDB同步时,可能需要发送大量LSU,有可能会对当前设备和网络带宽带来影响;因此,路由器将LSU报文分为多个批次进行发送,并且对OSPF接口每次允许发送的LSU报文的最大个数做出限制。
用户可根据需要配置OSPF接口发送LSU报文的时间间隔以及接口一次发送LSU报文的最大个数。
表1-39 配置LSU报文的发送速率
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置LSU报文的发送速率 |
transmit-pacing interval interval count count |
可选 缺省情况下,OSPF接口发送LSU报文的时间间隔为20毫秒,一次最多发送3个LSU报文 |
l OSPF支持快速重路由功能不能与OSPF支持BFD监测同时使用,否则可能导致快速重路由功能失效。
l OSPF支持快速重路由功能(自动计算备份下一跳)不能与vlink-peer、sham-link(“MPLS命令参考”中的“MPLS L3VPN”)、enable traffic-adjustment(“MPLS命令参考”中的“MPLS TE”)、enable traffic-adjustment advertise(“MPLS命令参考”中的“MPLS TE”)命令同时使用。
当OSPF网络中的链路或某台路由器发生故障时,需要通过故障链路或故障路由器传输才能到达目的地的报文将会丢失或产生路由环路,数据流量将会被中断,直到OSPF根据新的拓扑网络路由收敛完毕后,被中断的流量才能恢复正常的传输。
为了尽可能缩短网络故障导致的流量中断时间,网络管理员可以根据需要配置OSPF快速重路由功能。
图1-21 OSPF快速重路由功能示意图
如图1-21所示,通过在Router B上使能快速重路由功能,OSPF将为路由计算或指定备份下一跳,当Router B探测到网络故障时,OSPF会使用事先获取的备份下一跳替换失效下一跳,通过备份下一跳来指导报文的转发,从而大大缩短了流量中断时间。在使用备份下一跳指导报文转发的同时,OSPF会根据变化后的网络拓扑重新计算最短路径,网络收敛完毕后,使用新计算出来的最优路由来指导报文转发。
网络管理员可以配置给所有OSPF路由自动计算备份下一跳,也可以在路由策略中指定备份下一跳,为符合过滤条件的路由指定备份下一跳。
在配置OSPF快速重路由特性之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达
l 使能OSPF功能
表1-40 配置OSPF支持快速重路由功能(自动计算备份下一跳)
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置BFD Echo报文源地址 |
bfd echo-source-ip ip-address |
必选 缺省情况下,没有配置BFD Echo报文源地址 |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置OSPF支持快速重路由功能(自动计算备份下一跳) |
fast-reroute auto [ abr-only ] |
必选 缺省情况下,没有配置OSPF快速重路由功能 abr-only表示仅选取到ABR设备的路由作为备份下一跳 |
网络管理员可以通过apply fast-reroute backup-interface命令在路由策略中指定备份下一跳,为符合过滤条件的路由指定备份下一跳,关于apply fast-reroute backup-interface命令以及路由策略的相关配置,请参考“三层技术-IP路由配置指导”中的“路由策略”。
表1-41 配置OSPF支持快速重路由功能(通过路由策略指定备份下一跳)
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置BFD Echo报文源地址 |
bfd echo-source-ip ip-address |
必选 缺省情况下,没有配置BFD Echo报文源地址 |
进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置OSPF支持快速重路由功能(通过路由策略指定备份下一跳) |
fast-reroute route-policy route-policy-name |
必选 缺省情况下,没有配置OSPF快速重路由功能 |
一台设备可以同时充当GR Restarter和GR Helper。
目前有两种方式实现OSPF GR技术:
l 一种是基于IETF标准,GR Restarter通过向GR Helper发送一种称为Grace LSA的9类Opaque LSA来控制GR的交互过程。
l 另外一种是非IETF标准,GR Restarter与GR Helper之间是通过相互发送携带LLS与OOB扩展信息的OSPF报文来完成GR的交互过程。
可以在GR Restarter上配置基于OSPF的IETF标准或非IETF标准的GR能力。在作为GR Restarter的设备上进行如下配置:
表1-42 配置IETF标准GR Restarter
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动OSPF,进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
使能Opaque LSA发布接收能力 |
opaque-capability enable |
必选 缺省情况下,Opaque LSA发布接收能力处于关闭状态 |
使能OSPF协议的IETF标准GR能力 |
graceful-restart ietf |
必选 缺省情况下,OSPF协议的IETF标准GR能力处于关闭状态 |
配置OSPF协议的GR重启间隔时间 |
graceful-restart interval timer |
可选 缺省情况下,OSPF协议的GR重启间隔时间为120秒 |
表1-43 配置非IETF标准GR Restarter
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动OSPF,进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
使能OSPF本地链路信令能力 |
enable link-local-signaling |
必选 缺省情况下,OSPF本地链路信令能力处于关闭状态 |
使能OSPF带外同步能力 |
enable out-of-band-resynchronization |
必选 缺省情况下,OSPF带外同步能力处于关闭状态 |
使能OSPF协议的非IETF标准GR能力 |
graceful-restart [ nonstandard ] |
必选 缺省情况下,OSPF协议的非IETF标准GR能力处于关闭状态 |
配置OSPF协议的GR重启间隔时间 |
graceful-restart interval timer |
可选 缺省情况下,OSPF协议的GR重启间隔时间为120秒 |
可以在作为GR Helper的设备上配置基于OSPF的IETF标准或非IETF标准的GR Helper能力。在作为GR Helper的设备上进行如下配置:
表1-44 配置IETF标准GR Helper
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动OSPF,进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
使能Opaque LSA发布接收能力 |
opaque-capability enable |
必选 缺省情况下,Opaque LSA发布接收能力处于关闭状态 |
配置允许设备可以作哪些OSPF邻居的GR Helper |
graceful-restart help { acl-number | prefix prefix-list } |
可选 缺省情况下,设备可以作任一OSPF邻居的GR Helper |
表1-45 配置非IETF标准GR Helper
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动OSPF,进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
使能OSPF本地链路信令能力 |
enable link-local-signaling |
必选 缺省情况下,OSPF本地链路信令能力处于关闭状态 |
使能OSPF带外同步能力 |
enable out-of-band-resynchronization |
必选 缺省情况下,OSPF带外同步能力处于关闭状态 |
配置允许设备可以作哪些OSPF邻居的GR Helper |
graceful-restart help { acl-number | prefix prefix-list } |
可选 缺省情况下,设备可以作任一OSPF邻居的GR Helper |
在发生主备倒换时或者路由器上进行如下操作均可以以GR方式重启OSPF进程。
表1-46 以GR方式重启OSPF进程
操作 |
命令 |
说明 |
以GR方式重启OSPF进程 |
reset ospf [ process-id ] process graceful-restart |
必选 请在用户视图下执行该命令 |
OSPF使用BFD来进行快速故障检测时,提供两种检测方式:
l control报文双向检测:需要建立OSPF邻居的两端设备均支持BFD配置。
l echo报文单跳检测:仅需要一端设备支持BFD配置。
表1-47 配置OSPF与BFD联动(control报文双向检测)
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建OSPF,进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置区域所包含的网段并在指定网段的接口上使能OSPF |
network ip-address wildcard-mask |
- |
退后系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
指定接口上使能BFD |
ospf bfd enable |
必选 缺省情况下,运行OSPF的接口未使能BFD提供的链路检测功能 |
表1-48 配置OSPF与BFD联动(echo报文单跳检测)
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置echo报文源地址 |
bfd echo-source-ip ip-address |
必选 缺省情况下,没有配置echo报文源地址 |
创建OSPF,进入OSPF视图 |
ospf [ process-id | router-id router-id | vpn-instance instance-name ] * |
- |
配置区域所包含的网段并在指定网段的接口上使能OSPF |
network ip-address wildcard-mask |
- |
退后系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
指定接口上使能BFD功能 |
ospf bfd enable echo |
必选 缺省情况下,运行OSPF的接口未使能BFD提供的链路检测功能 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后OSPF的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以复位OSPF计数器或连接。
表1-49 OSPF显示和维护
操作 |
命令 |
显示OSPF的概要信息 |
display ospf [ process-id ] brief [ | { begin | exclude | include } regular-expression ] |
显示OSPF的统计信息 |
display ospf [ process-id ] cumulative [ | { begin | exclude | include } regular-expression ] |
显示OSPF的LSDB信息 |
display ospf [ process-id ] lsdb [ brief | [ { ase | router | network | summary | asbr | nssa | opaque-link | opaque-area | opaque-as } [ link-state-id ] ] [ originate-router advertising-router-id | self-originate ] ] [ | { begin | exclude | include } regular-expression ] |
显示OSPF邻居的信息 |
display ospf [ process-id ] peer [ verbose ] [ interface-type interface-number ] [ neighbor-id ] [ | { begin | exclude | include } regular-expression ] |
显示OSPF各区域邻居的统计信息 |
display ospf [ process-id ] peer statistics [ | { begin | exclude | include } regular-expression ] |
显示OSPF下一跳信息 |
display ospf [ process-id ] nexthop [ | { begin | exclude | include } regular-expression ] |
显示OSPF路由表的信息 |
display ospf [ process-id ] routing [ interface interface-type interface-number ] [ nexthop nexthop-address ] [ | { begin | exclude | include } regular-expression ] |
显示OSPF虚连接信息 |
display ospf [ process-id ] vlink [ | { begin | exclude | include } regular-expression ] |
显示OSPF请求列表 |
display ospf [ process-id ] request-queue [ interface-type interface-number ] [ neighbor-id ] [ | { begin | exclude | include } regular-expression ] |
显示OSPF重传列表 |
display ospf [ process-id ] retrans-queue [ interface-type interface-number ] [ neighbor-id ] [ | { begin | exclude | include } regular-expression ] |
显示OSPF ABR及ASBR信息 |
display ospf [ process-id ] abr-asbr [ | { begin | exclude | include } regular-expression ] |
显示OSPF接口信息 |
display ospf [ process-id ] interface [ all | interface-type interface-number ] [ | { begin | exclude | include } regular-expression ] |
显示OSPF错误信息 |
display ospf [ process-id ] error [ | { begin | exclude | include } regular-expression ] |
显示OSPF ASBR聚合信息 |
display ospf [ process-id ] asbr-summary [ ip-address { mask | mask-length } ] [ | { begin | exclude | include } regular-expression ] |
清除OSPF计数器 |
reset ospf [ process-id ] counters [ neighbor [ interface-type interface-number ] [ router-id ] ] |
重启OSPF进程 |
reset ospf [ process-id ] process [ graceful-restart ] |
重新向OSPF引入外部路由 |
reset ospf [ process-id ] redistribution |
在配置举例中,只列出了与OSPF配置相关的命令。
l 所有的交换机都运行OSPF,并将整个自治系统划分为3个区域。
l 其中Switch A和Switch B作为ABR来转发区域之间的路由。
l 配置完成后,每台交换机都应学到AS内的到所有网段的路由。
图1-22 OSPF基本配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本配置
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] area 1
[SwitchA-ospf-1-area-0.0.0.1] network 10.2.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.1] quit
[SwitchA-ospf-1] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] area 2
[SwitchB-ospf-1-area-0.0.0.2] network 10.3.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.2] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf
[SwitchC-ospf-1] area 1
[SwitchC-ospf-1-area-0.0.0.1] network 10.2.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.1] network 10.4.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.1] quit
[SwitchC-ospf-1] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] ospf
[SwitchD-ospf-1] area 2
[SwitchD-ospf-1-area-0.0.0.2] network 10.3.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.2] network 10.5.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.2] quit
[SwitchD-ospf-1] quit
(3) 检验配置结果
# 查看Switch A的OSPF邻居。
[SwitchA] display ospf peer verbose
OSPF Process 1 with Router ID 10.2.1.1
Neighbors
Area 0.0.0.0 interface 10.1.1.1(Vlan-interface100)'s neighbors
Router ID: 10.3.1.1 Address: 10.1.1.2 GR State: Normal
State: Full Mode: Nbr is Master Priority: 1
DR: 10.1.1.1 BDR: 10.1.1.2 MTU: 0
Dead timer due in 37 sec
Neighbor is up for 06:03:59
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
Neighbors
Area 0.0.0.1 interface 10.2.1.1(Vlan-interface200)'s neighbors
Router ID: 10.4.1.1 Address: 10.2.1.2 GR State: Normal
State: Full Mode: Nbr is Master Priority: 1
DR: 10.2.1.1 BDR: 10.2.1.2 MTU: 0
Dead timer due in 32 sec
Neighbor is up for 06:03:12
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
# 显示Switch A的OSPF路由信息。
[SwitchA] display ospf routing
OSPF Process 1 with Router ID 10.2.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 10 Transit 10.2.1.1 10.2.1.1 0.0.0.1
10.3.1.0/24 4 Inter 10.1.1.2 10.3.1.1 0.0.0.0
10.4.1.0/24 13 Stub 10.2.1.2 10.4.1.1 0.0.0.1
10.5.1.0/24 14 Inter 10.1.1.2 10.3.1.1 0.0.0.0
10.1.1.0/24 2 Transit 10.1.1.1 10.2.1.1 0.0.0.0
Total Nets: 5
Intra Area: 3 Inter Area: 2 ASE: 0 NSSA: 0
# 显示Switch A的LSDB。
[SwitchA] display ospf lsdb
OSPF Process 1 with Router ID 10.2.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.2.1.1 10.2.1.1 1069 36 80000012 0
Router 10.3.1.1 10.3.1.1 780 36 80000011 0
Network 10.1.1.1 10.2.1.1 1069 32 80000010 0
Sum-Net 10.5.1.0 10.3.1.1 780 28 80000003 12
Sum-Net 10.2.1.0 10.2.1.1 1069 28 8000000F 10
Sum-Net 10.3.1.0 10.3.1.1 780 28 80000014 2
Sum-Net 10.4.1.0 10.2.1.1 769 28 8000000F 13
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.2.1.1 10.2.1.1 769 36 80000012 0
Router 10.4.1.1 10.4.1.1 1663 48 80000012 0
Network 10.2.1.1 10.2.1.1 769 32 80000010 0
Sum-Net 10.5.1.0 10.2.1.1 769 28 80000003 14
Sum-Net 10.3.1.0 10.2.1.1 1069 28 8000000F 4
Sum-Net 10.1.1.0 10.2.1.1 1069 28 8000000F 2
Sum-Asbr 10.3.1.1 10.2.1.1 1069 28 8000000F 2
# 查看Switch D的路由表。
[SwitchD] display ospf routing
OSPF Process 1 with Router ID 10.5.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 22 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.3.1.0/24 10 Transit 10.3.1.2 10.3.1.1 0.0.0.2
10.4.1.0/24 25 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.5.1.0/24 10 Stub 10.5.1.1 10.5.1.1 0.0.0.2
10.1.1.0/24 12 Inter 10.3.1.1 10.3.1.1 0.0.0.2
Total Nets: 5
Intra Area: 2 Inter Area: 3 ASE: 0 NSSA: 0
# 在Switch D上使用Ping进行测试连通性。
[SwitchD] ping 10.4.1.1
PING 10.4.1.1: 56 data bytes, press CTRL_C to break
Reply from 10.4.1.1: bytes=56 Sequence=2 ttl=253 time=2 ms
Reply from 10.4.1.1: bytes=56 Sequence=2 ttl=253 time=1 ms
Reply from 10.4.1.1: bytes=56 Sequence=3 ttl=253 time=1 ms
Reply from 10.4.1.1: bytes=56 Sequence=4 ttl=253 time=1 ms
Reply from 10.4.1.1: bytes=56 Sequence=5 ttl=253 time=1 ms
--- 10.4.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 1/1/2 ms
l 所有的交换机都运行OSPF,整个自治系统划分为3个区域。
l 其中Switch A和Switch B作为ABR来转发区域之间的路由。
l 在Switch C上配置为ASBR引入外部路由(静态路由),且路由信息可正确的在AS内传播。
图1-23 配置OSPF引入自治系统外部路由
(1) 配置各接口的IP地址(略)
(2) 配置OSPF(同前例1.12.1 )
(3) 配置引入自治系统外部路由
# 在Switch C上配置一条到目的网段3.1.2.0/24的静态路由。
<SwitchC> system-view
[SwitchC] ip route-static 3.1.2.1 24 10.4.1.2
# 在Switch C上配置OSPF引入静态路由。
[SwitchC] ospf 1
[SwitchC-ospf-1] import-route static
(4) 检验配置效果
# 查看Switch D的ABR/ASBR信息。
<SwitchD> display ospf abr-asbr
OSPF Process 1 with Router ID 10.5.1.1
Routing Table to ABR and ASBR
Type Destination Area Cost Nexthop RtType
Intra 10.3.1.1 0.0.0.2 10 10.3.1.1 ABR
Inter 10.4.1.1 0.0.0.2 22 10.3.1.1 ASBR
# 查看Switch D的OSPF路由表。
<SwitchD> display ospf routing
OSPF Process 1 with Router ID 10.5.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 22 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.3.1.0/24 10 Transit 10.3.1.2 10.3.1.1 0.0.0.2
10.4.1.0/24 25 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.5.1.0/24 10 Stub 10.5.1.1 10.5.1.1 0.0.0.2
10.1.1.0/24 12 Inter 10.3.1.1 10.3.1.1 0.0.0.2
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
3.1.2.0/24 1 Type2 1 10.3.1.1 10.4.1.1
Total Nets: 6
Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0
l Switch A和Switch B位于AS 200内,AS 200内使用OSPF做为IGP协议。
l Switch C、Switch D和Switch E位于AS 100内,AS 100内使用OSPF做为IGP协议。
l Switch B和Switch C之间建立EBGP连接,配置BGP引入OSPF和直连路由,配置OSPF进程引入BGP路由。
l 为了减小Switch A的路由表规模,在Switch B上配置路由聚合,只发布聚合后的路由10.0.0.0/8。
图1-24 配置OSPF发布聚合路由
(1) 配置接口的IP地址(略)
(2) 配置OSPF
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 11.2.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 11.2.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] network 10.2.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] ospf
[SwitchD-ospf-1] area 0
[SwitchD-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.0] network 10.3.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.0] quit
# 配置Switch E。
<SwitchE> system-view
[SwitchE] ospf
[SwitchE-ospf-1] area 0
[SwitchE-ospf-1-area-0.0.0.0] network 10.2.1.0 0.0.0.255
[SwitchE-ospf-1-area-0.0.0.0] network 10.4.1.0 0.0.0.255
[SwitchE-ospf-1-area-0.0.0.0] quit
[SwitchE-ospf-1] quit
(3) 配置BGP,引入OSPF和直连路由
# 配置Switch B。
[SwitchB] bgp 200
[SwitchB-bgp] peer 11.1.1.2 as 100
[SwitchB-bgp] import-route ospf
[SwitchB-bgp] import-route direct
[SwitchB-bgp] quit
# 配置Switch C。
[SwitchC] bgp 100
[SwitchC-bgp] peer 11.1.1.1 as 200
[SwitchC-bgp] import-route ospf
[SwitchC-bgp] import-route direct
[SwitchC-bgp] quit
(4) 在Switch B和Switch C上配置OSPF引入BGP路由
# 在Switch B上配置OSPF引入BGP路由。
[SwitchB] ospf
[SwitchB-ospf-1] import-route bgp
# 在Switch C上配置OSPF引入BGP路由。
[SwitchC] ospf
[SwitchC-ospf-1] import-route bgp
# 查看SwitchA的路由表信息。
[SwitchA] display ip routing-table
Routing Tables: Public
Destinations : 8 Routes : 8
Destination/Mask Proto Pre Cost NextHop Interface
10.1.1.0/24 O_ASE 150 1 11.2.1.1 Vlan100
10.2.1.0/24 O_ASE 150 1 11.2.1.1 Vlan100
10.3.1.0/24 O_ASE 150 1 11.2.1.1 Vlan100
10.4.1.0/24 O_ASE 150 1 11.2.1.1 Vlan100
11.2.1.0/24 Direct 0 0 11.2.1.2 Vlan100
11.2.1.2/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
(5) 在Switch B上配置路由聚合,只发布聚合路由10.0.0.0/8。
[SwitchB-ospf-1] asbr-summary 10.0.0.0 8
# 查看Switch A的路由表信息。
[SwitchA] display ip routing-table
Routing Tables: Public
Destinations : 5 Routes : 5
Destination/Mask Proto Pre Cost NextHop Interface
10.0.0.0/8 O_ASE 150 2 11.2.1.1 Vlan100
11.2.1.0/24 Direct 0 0 11.2.1.2 Vlan100
11.2.1.2/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
可以看出,路由10.1.1.0/24、10.2.1.0/24、10.3.1.0/24、10.4.1.0/24已经聚合为一条路由10.0.0.0/8。
l 所有的交换机都运行OSPF,整个自治系统划分为3个区域。
l 其中Switch A和Switch B作为ABR来转发区域之间的路由,Switch D作为ASBR引入了外部路由(静态路由)。
l 要求将Area1配置为Stub区域,减少通告到此区域内的LSA数量,但不影响路由的可达性。
图1-25 配置OSPF Stub区域组网图
(1) 配置接口的IP地址(略)
(2) 配置OSPF(同前例1.12.1 )
(3) 配置Switch D引入静态路由
<SwitchD> system-view
[SwitchD] ip route-static 3.1.2.1 24 10.5.1.2
[SwitchD] ospf
[SwitchD-ospf-1] import-route static
[SwitchD-ospf-1] quit
# 查看Switch C的ABR/ASBR信息。
<SwitchC> display ospf abr-asbr
OSPF Process 1 with Router ID 10.4.1.1
Routing Table to ABR and ASBR
Type Destination Area Cost Nexthop RtType
Intra 10.2.1.1 0.0.0.1 3 10.2.1.1 ABR
Inter 10.3.1.1 0.0.0.1 5 10.2.1.1 ABR
Inter 10.5.1.1 0.0.0.1 7 10.2.1.1 ASBR
# 查看Switch C的OSPF路由表。
<SwitchC> display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 3 Transit 10.2.1.2 10.2.1.1 0.0.0.1
10.3.1.0/24 7 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1
10.5.1.0/24 17 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.1.1.0/24 5 Inter 10.2.1.1 10.2.1.1 0.0.0.1
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
3.1.2.0/24 1 Type2 1 10.2.1.1 10.5.1.1
Total Nets: 6
Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0
当Switch C所在区域为普通区域时,可以看到路由表中存在AS外部的路由。
(4) 配置Area1为Stub区域
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ospf
[SwitchA-ospf-1] area 1
[SwitchA-ospf-1-area-0.0.0.1] stub
[SwitchA-ospf-1-area-0.0.0.1] quit
[SwitchA-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf
[SwitchC-ospf-1] area 1
[SwitchC-ospf-1-area-0.0.0.1] stub
[SwitchC-ospf-1-area-0.0.0.1] quit
[SwitchC-ospf-1] quit
# 显示Switch C的OSPF路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
0.0.0.0/0 4 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.2.1.0/24 3 Transit 10.2.1.2 10.2.1.1 0.0.0.1
10.3.1.0/24 7 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1
10.5.1.0/24 17 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.1.1.0/24 5 Inter 10.2.1.1 10.2.1.1 0.0.0.1
Total Nets: 6
Intra Area: 2 Inter Area: 4 ASE: 0 NSSA: 0
当把Switch C所在区域配置为Stub区域时,已经看不到AS外部的路由,取而代之的是一条缺省路由。
# 配置禁止向Stub区域通告Type3 LSA。
[SwitchA] ospf
[SwitchA-ospf-1] area 1
[SwitchA-ospf-1-area-0.0.0.1] stub no-summary
[SwitchA-ospf-1-area-0.0.0.1] quit
# 查看Switch C的OSPF路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
0.0.0.0/0 4 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.2.1.0/24 3 Transit 10.2.1.2 10.4.1.1 0.0.0.1
10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1
Total Nets: 3
Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0
禁止向Stub区域通告Summary LSA后,Stub路由器的路由表项进一步减少,只保留了一条通往区域外部的缺省路由。
l 所有的交换机都运行OSPF,整个自治系统划分为3个区域。
l 其中Switch A和Switch B作为ABR来转发区域之间的路由。
l 要求将Area1配置为NSSA区域,同时将Switch C配置为ASBR引入外部路由(静态路由),且路由信息可正确的在AS内传播。
图1-26 配置OSPF NSSA区域组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF(同前例1.12.1 )
(3) 配置Area1区域为NSSA区域
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ospf
[SwitchA-ospf-1] area 1
[SwitchA-ospf-1-area-0.0.0.1] nssa default-route-advertise no-summary
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf
[SwitchC-ospf-1] area 1
[SwitchC-ospf-1-area-0.0.0.1] nssa
[SwitchC-ospf-1-area-0.0.0.1] quit
[SwitchC-ospf-1] quit
l 如果NSSA区域内路由器(Switch C)需要获取通往AS内其他区域的路由,ABR(Switch A)上必须配置default-route-advertise参数,这样Switch C才可以获取到缺省路由。
l 建议在ABR(Switch A)上配置no-summary参数,这样可以减少NSSA路由器的路由表数量。其他NSSA路由器只需配置nssa命令就可以。
# 查看Switch C的OSPF路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
0.0.0.0/0 65536 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.2.1.0/24 65535 Transit 10.2.1.2 10.4.1.1 0.0.0.1
10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1
Total Nets: 3
Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0
(4) 配置Switch C引入静态路由
[SwitchC] ip route-static 3.1.3.1 24 10.4.1.2
[SwitchC] ospf
[SwitchC-ospf-1] import-route static
[SwitchC-ospf-1] quit
# 查看Switch D的OSPF路由表。
<SwitchD> display ospf routing
OSPF Process 1 with Router ID 10.5.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 22 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.3.1.0/24 10 Transit 10.3.1.2 10.3.1.1 0.0.0.2
10.4.1.0/24 25 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.5.1.0/24 10 Stub 10.5.1.1 10.5.1.1 0.0.0.2
10.1.1.0/24 12 Inter 10.3.1.1 10.3.1.1 0.0.0.2
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
3.1.3.0/24 1 Type2 1 10.3.1.1 10.2.1.1
Total Nets: 6
Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0
在Switch D上可以看到NSSA区域引入的一条AS外部的路由。
Switch A、Switch B、Switch C、Switch D在同一网段,运行OSPF协议;
配置Switch A为DR,Switch C为BDR。
图1-27 配置OSPF优先级的DR选择组网图
(1) 配置各接口的IP地址
(2) 配置OSPF基本功能
(3) 改变交换机接口的路由器优先级使Switch A成为DR,Switch C成为BDR。
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本功能
# 配置Switch A。
<SwitchA> system-view
[SwitchA] router id 1.1.1.1
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] router id 2.2.2.2
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] router id 3.3.3.3
[SwitchC] ospf
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] router id 4.4.4.4
[SwitchD] ospf
[SwitchD-ospf-1] area 0
[SwitchD-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.0] quit
[SwitchD-ospf-1] return
# 查看Switch A的邻居信息。
[SwitchA] display ospf peer verbose
OSPF Process 1 with Router ID 1.1.1.1
Neighbors
Area 0.0.0.0 interface 192.168.1.1(Vlan-interface1)'s neighbors
Router ID: 2.2.2.2 Address: 192.168.1.2 GR State: Normal
State: 2-Way Mode: None Priority: 1
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 38 sec
Neighbor is up for 00:01:31
Authentication Sequence: [ 0 ]
Router ID: 3.3.3.3 Address: 192.168.1.3 GR State: Normal
State: Full Mode: Nbr is Master Priority: 1
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 31 sec
Neighbor is up for 00:01:28
Authentication Sequence: [ 0 ]
Router ID: 4.4.4.4 Address: 192.168.1.4 GR State: Normal
State: Full Mode: Nbr is Master Priority: 1
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 31 sec
Neighbor is up for 00:01:28
Authentication Sequence: [ 0 ]
可以看到Switch D为DR,Switch C为BDR。
(3) 配置接口上的路由器优先级
# 配置Switch A。
[SwitchA] interface vlan-interface 1
[SwitchA-Vlan-interface1] ospf dr-priority 100
[SwitchA-Vlan-interface1] quit
# 配置Switch B。
[SwitchB] interface vlan-interface 1
[SwitchB-Vlan-interface1] ospf dr-priority 0
[SwitchB-Vlan-interface1] quit
# 配置Switch C。
[SwitchC] interface vlan-interface 1
[SwitchC-Vlan-interface1] ospf dr-priority 2
[SwitchC-Vlan-interface] quit
# 查看Switch D的邻居信息。
<SwitchD> display ospf peer verbose
OSPF Process 1 with Router ID 4.4.4.4
Neighbors
Area 0.0.0.0 interface 192.168.1.4(Vlan-interface1)'s neighbors
Router ID: 1.1.1.1 Address: 192.168.1.1 GR State: Normal
State: Full Mode:Nbr is Slave Priority: 100
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 31 sec
Neighbor is up for 00:11:17
Authentication Sequence: [ 0 ]
Router ID: 2.2.2.2 Address: 192.168.1.2 GR State: Normal
State: Full Mode:Nbr is Slave Priority: 0
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 35 sec
Neighbor is up for 00:11:19
Authentication Sequence: [ 0 ]
Router ID: 3.3.3.3 Address: 192.168.1.3 GR State: Normal
State: Full Mode:Nbr is Slave Priority: 2
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 33 sec
Neighbor is up for 00:11:15
Authentication Sequence: [ 0 ]
可以看到,网络中DR/BDR并没有改变。
网络中DR/BDR已经存在的情况下,接口上的路由器优先级的配置并不会立即生效。
(4) 重启OSPF进程
# 重启Switch D的进程。
<SwitchD> reset ospf 1 process
Warning : Reset OSPF process? [Y/N]:y
# 查看Switch D的邻居信息。
<SwitchD> display ospf peer verbose
OSPF Process 1 with Router ID 4.4.4.4
Neighbors
Area 0.0.0.0 interface 192.168.1.4(Vlan-interface1)'s neighbors
Router ID: 1.1.1.1 Address: 192.168.1.1 GR State: Normal
State: Full Mode: Nbr is Slave Priority: 100
DR: 192.168.1.1 BDR: 192.168.1.3 MTU: 0
Dead timer due in 39 sec
Neighbor is up for 00:01:40
Authentication Sequence: [ 0 ]
Router ID: 2.2.2.2 Address: 192.168.1.2 GR State: Normal
State: 2-Way Mode: None Priority: 0
DR: 192.168.1.1 BDR: 192.168.1.3 MTU: 0
Dead timer due in 35 sec
Neighbor is up for 00:01:44
Authentication Sequence: [ 0 ]
Router ID: 3.3.3.3 Address: 192.168.1.3 GR State: Normal
State: Full Mode: Nbr is Slave Priority: 2
DR: 192.168.1.1 BDR: 192.168.1.3 MTU: 0
Dead timer due in 39 sec
Neighbor is up for 00:01:41
Authentication Sequence: [ 0 ]
可以看到Switch A成为DR,Switch C为BDR。
l 如果邻居的状态是Full,这说明它和邻居之间形成了邻接关系;
l 如果邻居的状态是2-Way,则说明它们都不是DR或BDR,两者之间不需要交换LSA。
# 查看OSPF接口的状态。
[SwitchA] display ospf interface
OSPF Process 1 with Router ID 1.1.1.1
Interfaces
Area: 0.0.0.0
IP Address Type State Cost Pri DR BDR
192.168.1.1 Broadcast DR 1 100 192.168.1.1 192.168.1.3
[SwitchB] display ospf interface
OSPF Process 1 with Router ID 2.2.2.2
Interfaces
Area: 0.0.0.0
IP Address Type State Cost Pri DR BDR
192.168.1.2 Broadcast DROther 1 0 192.168.1.1 192.168.1.3
如果OSPF接口的状态是DROther,则说明它既不是DR,也不是BDR。
l Area 2与Area 0没有直接相连。Area 1被用作传输区域(Transit Area)来连接Area 2和Area 0。Switch B和Switch C之间配置一条虚连接。
l 配置完成后,Switch B能够学到Area 2中的路由。
图1-28 配置OSPF虚链路组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本功能
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ospf 1 router-id 1.1.1.1
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf 1 router-id 2.2.2.2
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] area 1
[SwitchB–ospf-1-area-0.0.0.1] network 10.2.1.0 0.0.0.255
[SwitchB–ospf-1-area-0.0.0.1] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf 1 router-id 3.3.3.3
[SwitchC-ospf-1] area 1
[SwitchC-ospf-1-area-0.0.0.1] network 10.2.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.1] quit
[SwitchC-ospf-1] area 2
[SwitchC–ospf-1-area-0.0.0.2] network 10.3.1.0 0.0.0.255
[SwitchC–ospf-1-area-0.0.0.2] quit
[SwitchC-ospf-1] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] ospf 1 router-id 4.4.4.4
[SwitchD-ospf-1] area 2
[SwitchD-ospf-1-area-0.0.0.2] network 10.3.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.2] quit
# 查看Switch B的OSPF路由表。
[SwitchB] display ospf routing
OSPF Process 1 with Router ID 2.2.2.2
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 2 Transit 10.2.1.1 3.3.3.3 0.0.0.1
10.1.1.0/24 2 Transit 10.1.1.2 2.2.2.2 0.0.0.0
Total Nets: 2
Intra Area: 2 Inter Area: 0 ASE: 0 NSSA: 0
由于Area 0没有与Area 2直接相连,所以Switch B的路由表中没有Area 2的路由。
(3) 配置虚连接
# 配置Switch B。
[SwitchB] ospf
[SwitchB-ospf-1] area 1
[SwitchB-ospf-1-area-0.0.0.1] vlink-peer 3.3.3.3
[SwitchB-ospf-1-area-0.0.0.1] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
[SwitchC] ospf 1
[SwitchC-ospf-1] area 1
[SwitchC-ospf-1-area-0.0.0.1] vlink-peer 2.2.2.2
[SwitchC-ospf-1-area-0.0.0.1] quit
# 查看Switch B的OSPF路由表。
[SwitchB] display ospf routing
OSPF Process 1 with Router ID 2.2.2.2
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 2 Transit 10.2.1.1 3.3.3.3 0.0.0.1
10.3.1.0/24 5 Inter 10.2.1.2 3.3.3.3 0.0.0.0
10.1.1.0/24 2 Transit 10.1.1.2 2.2.2.2 0.0.0.0
Total Nets: 3
Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0
可以看到,Switch B已经学到了Area 2的路由10.3.1.0/24。
l Switch A、Switch B和Switch C既属于同一自治系统,也属于同一OSPF域,通过OSPF协议实现网络互连,并提供GR机制。
l Switch A作为非IETF标准GR Restarter,Switch B和Switch C作为GR Helper并且通过GR机制与Switch A保持带外同步。
图1-29 OSPF GR配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF GR
# 配置Switch A
<SwitchA> system-view
[SwitchA] router id 1.1.1.1
[SwitchA] ospf 100
[SwitchA-ospf-100] enable link-local-signaling
[SwitchA-ospf-100] enable out-of-band-resynchronization
[SwitchA-ospf-100] graceful-restart
[SwitchA-ospf-100] area 0
[SwitchA-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[SwitchA-ospf-100-area-0.0.0.0] return
# 配置Switch B
<SwitchB> system-view
[SwitchB] acl number 2000
[SwitchB-acl-basic-2000] rule 10 permit source 192.1.1.1 0.0.0.0
[SwitchB-acl-basic-2000] quit
[SwitchB] router id 2.2.2.2
[SwitchB] ospf 100
[SwitchB-ospf-100] graceful-restart help 2000
[SwitchB-ospf-100] area 0
[SwitchB-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255
# 配置Switch C
<SwitchC> system-view
[SwitchC] acl number 2000
[SwitchC-acl-basic-2000] rule 10 permit source 192.1.1.1 0.0.0.0
[SwitchC-acl-basic-2000] quit
[SwitchC] router id 3.3.3.3
[SwitchC] ospf 100
[SwitchC-ospf-100] graceful-restart help 2000
[SwitchC-ospf-100] area 0
[SwitchC-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255
(3) 检验配置效果
# 运行稳定后,打开Switch A的OSPF平滑启动事件调试信息开关。在Switch A上以GR方式重启OSPF进程。
<SwitchA> debugging ospf event graceful-restart
<SwitchA> terminal monitor
<SwitchA> terminal debugging
<SwitchA> reset ospf 100 process graceful-restart
Warning : Reset OSPF process? [Y/N]:y
%Dec 12 09:36:12:500 2006 SwitchA RM/3/RMLOG:OSPF-NBRCHANGE: Process 1, Neighbour
192.1.1.1(Vlan100) from Full to Down
OSPF 1: Intf 192.1.1.1 Rcv InterfaceDown State BackupDR -> Down.
OSPF 1 nonstandard GR Started for OSPF Router
OSPF 1 notify RM that OSPF process will enter GR.
OSPF 1 created GR wait timer, timeout interval is 40(s).
OSPF 1 created GR Interval timer,timeout interval is 120(s).
OSPF 1: Intf 192.1.1.1 Rcv InterfaceUp State Down -> Waiting.
OSPF 1: Intf 192.1.1.1 Rcv BackupSeen State Waiting -> BackupDR.
OSPF 1 created OOB Progress timer for neighbor 192.1.1.2.
OSPF 1 restarted OOB Progress timer for neighbor 192.1.1.2.
OSPF 1 restarted OOB Progress timer for neighbor 192.1.1.2.
%Oct 22 09:36:12:566 2008 SwitchA RM/3/RMLOG:OSPF-NBRCHANGE: Process 1, Neighbour
192.1.1.2(Vlan100) from Loading to Full
OSPF 1 restarted OOB Progress timer for neighbor 192.1.1.2.
OSPF 1 deleted OOB Progress timer for neighbor 192.1.1.2.
OSPF 1 Gr Wait Timeout timer fired.
OSPF 1 deleted GR wait timer.
OSPF 1 deleted GR Interval timer.
OSPF 1 GR Completed for OSPF Router
OSPF 1 notified RM that OSPF process left GR.
RM notified that all protocol left GR.
OSPF 1 started flushing STALE LSA after all protocol left GR.
OSPF 1: Flush Stale Area LSAs
OSPF 1: Start Flush Stale ASE + NSSA LSAs
OSPF 1: End Flush Stale ASE + NSSA LSAs
从上面的信息可以看出Switch A在Switch B的协助下完成了GR。
l 所有的交换机都运行OSPF,整个自治系统划分为3个区域。
l 其中Switch A和Switch B作为ABR来转发区域之间的路由。
l 在Switch C上配置为ASBR引入外部路由(静态路由),并在Switch C上配置过滤策略,对引入的一条路由(3.1.3.0/24)进行过滤。
l 在Switch A上配置路由策略,对路由(10.5.1.0/24)进行过滤。
图1-30 配置路由过滤
(1) 配置各接口的IP地址(略)
(2) 配置OSPF(同前例1.12.1 )
(3) 配置引入自治系统外部路由
# 在Switch C上配置一条到目的网段3.1.1.0/24的静态路由。
<SwitchC> system-view
[SwitchC] ip route-static 3.1.1.0 24 10.4.1.2
# 在Switch C上配置一条到目的网段3.1.2.0/24的静态路由。
[SwitchC] ip route-static 3.1.2.0 24 10.4.1.2
# 在Switch C上配置一条到目的网段3.1.3.0/24的静态路由。
[SwitchC] ip route-static 3.1.3.0 24 10.4.1.2
# 在Switch C上配置OSPF引入静态路由。
[SwitchC] ospf 1
[SwitchC-ospf-1] import-route static
[SwitchC-ospf-1] quit
# 在Switch A上查看路由信息。
<SwitchA> display ip routing-table
Routing Tables: Public
Destinations : 12 Routes : 12
Destination/Mask Proto Pre Cost NextHop Interface
3.1.1.0/24 O_ASE 150 1 10.2.1.2 Vlan200
3.1.2.0/24 O_ASE 150 1 10.2.1.2 Vlan200
3.1.3.0/24 O_ASE 150 1 10.2.1.2 Vlan200
10.1.1.0/24 Direct 0 0 10.1.1.1 Vlan200
10.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
10.2.1.0/24 Direct 0 0 10.2.1.1 Vlan200
10.2.1.1/32 Direct 0 0 127.0.0.1 InLoop0
10.3.1.0/24 OSPF 10 4 10.1.1.2 Vlan100
10.4.1.0/24 OSPF 10 13 10.2.1.2 Vlan200
10.5.1.0/24 OSPF 10 14 10.1.1.2 Vlan100
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
(4) 在Switch C配置对路由3.1.3.0/24进行过滤
# 配置IPv4地址前缀列表。
[SwitchC] ip ip-prefix prefix1 index 1 deny 3.1.3.0 24
[SwitchC] ip ip-prefix prefix1 index 2 permit 3.1.1.0 24
[SwitchC] ip ip-prefix prefix1 index 3 permit 3.1.2.0 24
# 配置对引入的静态路由信息进行过滤,过滤掉路由3.1.3.0/24。
[SwitchC] ospf 1
[SwitchC-ospf-1] filter-policy ip-prefix prefix1 export static
# 在Switch A上查看路由信息。
<SwitchA> display ip routing-table
Routing Tables: Public
Destinations : 11 Routes : 11
Destination/Mask Proto Pre Cost NextHop Interface
3.1.1.0/24 O_ASE 150 1 10.2.1.2 Vlan200
3.1.2.0/24 O_ASE 150 1 10.2.1.2 Vlan200
10.1.1.0/24 Direct 0 0 10.1.1.1 Vlan100
10.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
10.2.1.0/24 Direct 0 0 10.2.1.1 Vlan200
10.2.1.1/32 Direct 0 0 127.0.0.1 InLoop0
10.3.1.0/24 OSPF 10 4 10.1.1.2 Vlan100
10.4.1.0/24 OSPF 10 13 10.2.1.2 Vlan200
10.5.1.0/24 OSPF 10 14 10.1.1.2 Vlan100
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
可以看到,到目的网段3.1.3.0/24的路由被过滤掉了。
(5) 在Switch A上配置对路由10.5.1.1/24进行过滤
# 在Switch A上配置访问控制列表。
<SwitchA> system-veiw
[SwitchA] acl number 2000
[SwitchA-acl-basic-2000] rule 0 deny source 10.5.1.0 0.0.0.255
[SwitchA-acl-basic-2000] rule 1 permit source any
[SwitchA-acl-basic-2000] quit
# 配置对通过LSA计算出来的路由信息10.5.1.0/24进行过滤。
[SwitchA] ospf 1
[SwitchA-ospf-1] filter-policy 2000 import
[SwitchA-ospf-1] quit
# 在Switch A上查看路由信息。
[SwitchA] display ip routing-table
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost NextHop Interface
3.1.1.0/24 O_ASE 150 1 10.2.1.2 Vlan200
3.1.2.0/24 O_ASE 150 1 10.2.1.2 Vlan200
10.1.1.0/24 Direct 0 0 10.1.1.1 Vlan100
10.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
10.2.1.0/24 Direct 0 0 10.2.1.1 Vlan200
10.2.1.1/32 Direct 0 0 127.0.0.1 InLoop0
10.3.1.0/24 OSPF 10 4 10.1.1.2 Vlan100
10.4.1.0/24 OSPF 10 13 10.2.1.2 Vlan200
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
可以看到,到10.5.1.1/24的路由被过滤掉了。
如图1-31所示,Switch S 、Switch A和Switch D属于同一OSPF区域,通过OSPF协议实现网络互连。要求当Switch S和Switch D之间的链路出现故障时,业务可以快速切换到链路B上。
图1-31 OSPF快速重路由配置举例
(1) 配置各交换机接口的IP地址和OSPF协议
请按照上面组网图配置各接口的IP地址和子网掩码,具体配置过程略。
配置各路由器之间采用OSPF协议进行互连,确保Switch S、Switch A和Switch D之间能够在网络层互通,并且各路由器之间能够借助OSPF协议实现动态路由更新。
具体配置过程略。
(2) 配置OSPF 快速重路由
OSPF支持快速重路由配置有两种配置方法,一种是自动计算,另一种是通过策略指定,两种方法任选一种。
方法一:使能Switch S和Switch D的OSPF协议的自动计算快速重路由能力
# 配置Switch S。
<SwitchS> system-view
[SwitchS] bfd echo-source-ip 1.1.1.1
[SwitchS] ospf 1
[SwitchS-ospf-1] fast-reroute auto
[SwitchS-ospf-1] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] bfd echo-source-ip 4.4.4.4
[SwitchD] ospf 1
[SwitchD-ospf-1] fast-reroute auto
[SwitchD-ospf-1] quit
方法二:使能Switch S的OSPF协议的指定路由策略快速重路由能力
# 配置Switch S。
<SwitchS> system-view
[SwitchS] bfd echo-source-ip 1.1.1.1
[SwitchS] ip ip-prefix abc index 10 permit 4.4.4.4 32
[SwitchS] route-policy frr permit node 10
[SwitchS-route-policy] if-match ip-prefix abc
[SwitchS-route-policy] apply fast-reroute backup-interface vlan-interface 100 backup-nexthop 12.12.12.2
[SwitchS-route-policy] quit
[SwitchS] ospf 1
[SwitchS-ospf-1] fast-reroute route-policy frr
[SwitchS-ospf-1] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] bfd echo-source-ip 4.4.4.4
[SwitchD] ip ip-prefix abc index 10 permit 1.1.1.1 32
[SwitchD] route-policy frr permit node 10
[SwitchD-route-policy] if-match ip-prefix abc
[SwitchD-route-policy] apply fast-reroute backup-interface vlan-interface 101 backup-nexthop 24.24.24.2
[SwitchD-route-policy] quit
[SwitchD] ospf 1
[SwitchD-ospf-1] fast-reroute route-policy frr
[SwitchD-ospf-1] quit
(3) 检验配置效果
# 在Switch S上查看4.4.4.4/32网段路由,可以看到备份下一跳信息。
[SwitchS] display ip routing-table 4.4.4.4 verbose
Routing Table : Public
Summary Count : 1
Destination: 4.4.4.4/32
Protocol: OSPF Process ID: 1
Preference: 10 Cost: 1
NextHop: 13.13.13.2 Interface: Vlan-interface200
BkNextHop: 12.12.12.2 BkInterface: Vlan-interface100
RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0
Tunnel ID: 0x0 Label: NULL
State: Active Adv Age: 00h01m27s
Tag: 0
# 在Switch D上查看1.1.1.1/32网段路由,可以看到备份下一跳信息。
[SwitchD] display ip routing-table 1.1.1.1 verbose
Routing Table : Public
Summary Count : 1
Destination: 1.1.1.1/32
Protocol: OSPF Process ID: 1
Preference: 10 Cost: 1
NextHop: 13.13.13.1 Interface: Vlan-interface200
BkNextHop: 24.24.24.2 BkInterface: Vlan-interface101
RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0
Tunnel ID: 0x0 Label: NULL
State: Active Adv Age: 00h01m27s
Tag: 0
l Switch A、Switch B和Switch C上运行OSPF,网络层相互可达。
l 当Switch A和Switch B通过L2 Switch通信的链路出现故障时BFD能够快速感知通告OSPF协议,并且切换到Switch C进行通信。
图1-32 OSPF与BFD联动配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int10 |
10.1.0.102/24 |
Switch B |
Vlan-int10 |
10.1.0.100/24 |
|
Vlan-int11 |
11.1.1.1/24 |
|
Vlan-int13 |
13.1.1.1/24 |
Switch C |
Vlan-int11 |
11.1.1.2/24 |
|
|
|
|
Vlan-int13 |
13.1.1.2/24 |
|
|
|
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本功能
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 10.1.0.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] network 11.1.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] network 121.1.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] quit
[SwitchA] interface vlan 11
[SwitchA-Vlan-interface11] ospf cost 2
[SwitchA-Vlan-interface11] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 10.1.0.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] network 13.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] network 120.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
[SwitchB] interface vlan-interface 13
[SwitchB-Vlan-interface13] ospf cost 2
[SwitchA-Vlan-interface13] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 11.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] network 13.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
(3) 配置BFD功能
# 在Switch A上使能BFD检测功能,并配置BFD参数。
[SwitchA] bfd session init-mode active
[SwitchA] interface vlan-interface 10
[SwitchA-Vlan-interface10] ospf bfd enable
[SwitchA-Vlan-interface10] bfd min-transmit-interval 500
[SwitchA-Vlan-interface10] bfd min-receive-interval 500
[SwitchA-Vlan-interface10] bfd detect-multiplier 7
[SwitchA-Vlan-interface10] quit
[SwitchA] quit
# 在Switch B上使能BFD检测功能,并配置BFD参数。
[SwitchB] bfd session init-mode active
[SwitchB] interface vlan-interface 10
[SwitchB-Vlan-interface10] ospf bfd enable
[SwitchB-Vlan-interface10] bfd min-transmit-interval 500
[SwitchB-Vlan-interface10] bfd min-receive-interval 500
[SwitchB-Vlan-interface10] bfd detect-multiplier 6
(4) 检查配置结果
下面以Switch A为例,Switch B和Switch A类似,不再赘述。
# 显示Switch A的BFD信息。
<SwitchA> display bfd session
Total Session Num: 1 Init Mode: Active
Session Working Under Ctrl Mode:
LD/RD SourceAddr DestAddr State Holdtime Interface
3/1 10.1.0.102 10.1.0.100 Up 1700ms vlan10
# 在Switch A上查看120.1.1.0/24的路由信息,可以看出Switch A和Switch B是通过L2 Swtich进行通信的。
<SwitchA> display ip routing-table 120.1.1.0 verbose
Routing Table : Public
Summary Count : 2
Destination: 120.1.1.0/24
Protocol: OSPF Process ID: 0
Preference: 0 Cost: 2
NextHop: 192.168.0.100 Interface: Vlan-interface10
BkNextHop: 0.0.0.0 BkInterface:
RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0
Tunnel ID: 0x0 Label: NULL
State: Active Adv Age: 00h58m10s
Tag: 0
Destination: 120.1.1.0/24
Protocol: OSPF Process ID: 1
Preference: 10 Cost: 4
NextHop: 10.1.1.100 Interface: Vlan-interface11
BkNextHop: 0.0.0.0 BkInterface:
RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0
Tunnel ID: 0x0 Label: NULL
State: Invalid Adv Age: 00h58m05s
Tag: 0
# 打开Switch A的调试开关。
<SwitchA> debugging bfd scm
<SwitchA> debugging bfd event
<SwitchA> debugging ospf event
<SwitchA> terminal debugging
# 当Switch A和Switch B通过L2 Switch通信的链路出现故障时,可以看到Switch A能够快速感知Switch B的变化。
%Nov 12 18:34:48:823 2005 SwitchA BFD/5/LOG: Sess[10.1.0.102/10.1.0.100, vlan10], Sta : UP->DOWN, Diag: 1
%Nov 12 18:34:48:824 2005 SwitchA RM/4/RMLOG:OSPF-NBRCHANGE: Process 1, Neighbour 10.1.0.102 (vlan10) from Full to Down
*0.50673825 SwitchA BFD/8/SCM:Sess[10.1.0.102/10.1.0.100, vlan10],Oper: Reset
*0.50673825 SwitchA BFD/8/EVENT:Send sess-down Msg, [Src:10.1.0.102, Dst:10.1.0.100, vlan10] Protocol: OSPF
*0.50673826 SwitchA RM/7/RMDEBUG:OSPF-BFD: Message Type rcv BFD down, Connect Type direct-connect, Src IP Address 10.1.0.102, Src IFIndex 5, Dst IP Address 10.1.0.100
*0.50673827 SwitchA RM/7/RMDEBUG:OSPF-BFD: Message Type delete session, Connect Type direct-connect, Src IP Address 10.1.0.102, Src IFIndex 5, Dst IP Address 10.1.0.100
OSPF 1: Nbr 10.1.0.100 Rcv KillNbr State Full -> Down.
*0.50673829 SwitchA BFD/8/EVENT:Receive Delete-sess, [Src:10.1.0.102, Dst:10.1.0.100, vlan10], Direct, Proto:OSPF
*0.50673830 SwitchA BFD/8/SCM:Sess[10.1.0.102/10.1.0.100, vlan10], Oper: Del application(OSPF)
*0.50673831 SwitchA BFD/8/SCM:No application in session, delete session[10.1.0.102/10.1.0.100, vlan10]
*0.50673831 SwitchA BFD/8/SCM:Sess[10.1.0.102/10.1.0.100, vlan10], Oper: Delete
*0.50673832 SwitchA BFD/8/SCM:Delete send-packet timer
*0.50673833 SwitchA BFD/8/SCM:Delete session entry
*0.50673833 SwitchA BFD/8/SCM:Delete session from IP hash table
*0.50673834 SwitchA BFD/8/SCM:Delete session from bfd interface
*0.50673834 SwitchA BFD/8/SCM:No session under bfd-int[vlan10] with default configuration, delete bfd-if
*0.50673835 SwitchA BFD/8/SCM:Bfd-if[vlan10], Oper: Delete
*0.50673840 SwitchA BFD/8/SCM:No bfd session exists, stop receiving any bfd packets
# 显示Switch A的BFD信息。
此时Switch A和Switch B的BFD会话已经被删除,没有任何输出信息。
<SwitchA> display bfd session
# 在Switch A上查看120.1.1.0/24的路由信息,可以看出Switch A和Switch B已经切换到Switch C进行通信。
<SwitchA> display ip routing-table 120.1.1.0 verbose
Routing Table : Public
Summary Count : 2
Destination: 120.1.1.0/24
Protocol: OSPF Process ID: 1
Preference: 10 Cost: 4
NextHop: 10.1.1.100 Interface: Vlan-interface11
BkNextHop: 0.0.0.0 BkInterface:
RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0
Tunnel ID: 0x0 Label: NULL
State: Active Adv Age: 00h58m10s
Tag: 0
Destination: 120.1.1.0/24
Protocol: OSPF Process ID: 0
Preference: 0 Cost: 2
NextHop: 192.168.0.100 Interface: Vlan-interface10
BkNextHop: 0.0.0.0 BkInterface:
RelyNextHop: 0.0.0.0 Neighbor : 0.0.0.0
Tunnel ID: 0x0 Label: NULL
State: Invalid Adv Age: 00h58m05s
Tag: 0
OSPF邻居无法建立。
如果物理连接和下层协议正常,则检查接口上配置的OSPF参数,必须保证与相邻路由器的参数一致,区域号相同,网段与掩码也必须一致(点到点与虚连接的网段与掩码可以不同)。
(1) 使用display ospf peer命令查看OSPF邻居状态。
(2) 使用display ospf interface命令查看OSPF接口的信息。
(3) 检查物理连接及下层协议是否正常运行,可通过ping命令测试。若从本地路由器Ping对端路由器不通,则表明物理连接和下层协议有问题。
(4) 检查OSPF定时器,在同一接口上邻居失效时间应至少为Hello报文发送时间间隔的4倍。
(5) 如果是NBMA网络,则应该使用peer ip-address命令手工指定邻居。
(6) 如果网络类型为广播网或NBMA,则至少有一个接口的路由器优先级大于零。
OSPF不能发现其他区域的路由。
应保证骨干区域与所有的区域相连接。若一台路由器配置了两个以上的区域,则至少有一个区域应与骨干区域相连。骨干区域不能配置成Stub区域。
在Stub区域内的路由器不能接收外部AS的路由。如果一个区域配置成Stub区域,则与这个区域相连的所有路由器都应将此区域配置成Stub区域。
(1) 使用display ospf peer命令查看OSPF邻居状态。
(2) 使用display ospf interface命令查看OSPF接口的信息。
(3) 使用display ospf lsdb查看LSDB的信息是否完整。
(4) 使用display current-configuration configuration ospf命令查看区域是否配置正确。若配置了两个以上的区域,则至少有一个区域与骨干区域相连。
(5) 如果某区域是Stub区域,则该区域中的所有路由器都要配置stub命令;如果某区域是NSSA区域,则该区域中的所有路由器都要配置nssa命令。
(6) 如果配置了虚连接,使用display ospf vlink命令查看OSPF虚连接是否正常。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!