04-OSPF配置
本章节下载: 04-OSPF配置 (1.23 MB)
目 录
1.7.3 配置OSPF对通过接收到的LSA计算出来的路由信息进行过滤
1.7.13 配置允许设备将OSPF链路状态信息发布到BGP
1.8.7 配置OSPF尝试退出overflow状态的定时器时间间隔
1.10.1 配置LSDB中External LSA的最大数量
1.15.6 配置OSPF快速重路由支持BFD检测功能(Ctrl方式)
1.15.7 配置OSPF快速重路由支持BFD检测功能(Echo方式)
1.19.4 配置OSPF记录邻居关系断开的故障检测信息的最大个数
1.20.7 显示和清除OSPF接收或发送Hello报文的日志信息
OSPF(Open Shortest Path First,开放最短路径优先)是IETF(Internet Engineering Task Force,互联网工程任务组)组织开发的一个基于链路状态的内部网关协议。目前针对IPv4协议使用的是OSPF Version 2。下文中所提到的OSPF均指OSPF Version 2。
OSPF具有如下特点:
· 适应范围广:支持各种规模的网络,最多可支持几百台路由器。
· 快速收敛:在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
· 无自环:由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
· 区域划分:允许自治系统的网络被划分成区域来管理。路由器链路状态数据库的减小降低了内存的消耗和CPU的负担;区域间传送路由信息的减少降低了网络带宽的占用。
· 等价路由:支持到同一目的地址的多条等价路由。
· 路由分级:使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
· 支持验证:支持基于区域和接口的报文验证,以保证报文交互和路由计算的安全性。
· 组播发送:在某些类型的链路上以组播地址发送协议报文,减少对其他设备的干扰。
OSPF协议报文直接封装为IP报文,协议号为89。
OSPF有五种类型的协议报文:
· Hello报文:周期性发送,用来发现和维持OSPF邻居关系,以及进行DR(Designated Router,指定路由器)/BDR(Backup Designated Router,备份指定路由器)的选举。
· DD(Database Description,数据库描述)报文:描述了本地LSDB(Link State DataBase,链路状态数据库)中每一条LSA(Link State Advertisement,链路状态通告)的摘要信息,用于两台路由器进行数据库同步。
· LSR(Link State Request,链路状态请求)报文:向对方请求所需的LSA。两台路由器互相交换DD报文之后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。
· LSU(Link State Update,链路状态更新)报文:向对方发送其所需要的LSA。
· LSAck(Link State Acknowledgment,链路状态确认)报文:用来对收到的LSA进行确认。
OSPF中对链路状态信息的描述都是封装在LSA中发布出去,常用的LSA有以下几种类型:
· Router LSA(Type-1):由每个路由器产生,描述路由器的链路状态和开销,在其始发的区域内传播。
· Network LSA(Type-2):由DR产生,描述本网段所有路由器的链路状态,在其始发的区域内传播。
· Network Summary LSA(Type-3):由ABR(Area Border Router,区域边界路由器)产生,描述区域内某个网段的路由,并通告给其他区域。
· ASBR Summary LSA(Type-4):由ABR产生,描述到ASBR(Autonomous System Boundary Router,自治系统边界路由器)的路由,通告给相关区域。
· AS External LSA(Type-5):由ASBR产生,描述到AS(Autonomous System,自治系统)外部的路由,通告到所有的区域(除了Stub区域和NSSA区域)。
· NSSA External LSA(Type-7):由NSSA(Not-So-Stubby Area)区域内的ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。
· Opaque LSA:用于OSPF的扩展通用机制,目前有Type-9、Type-10和Type-11三种。其中,Type-9 LSA仅在本地链路范围进行泛洪,用于支持GR(Graceful Restart,平滑重启)的Grace LSA就是Type-9的一种类型;Type-10 LSA仅在区域范围进行泛洪,用于支持MPLS TE的LSA就是Type-10的一种类型;Type-11 LSA可以在一个自治系统范围进行泛洪。
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF协议时,LSDB会占用大量的存储空间,并使得运行SPF(Shortest Path First,最短路径优先)算法的复杂度增加,导致CPU负担加重。
在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“震荡”之中,造成网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。
OSPF协议通过将自治系统划分成不同的区域来解决上述问题。区域是从逻辑上将路由器划分为不同的组,每个组用区域号来标识。如图1-1所示。
图1-1 OSPF区域划分
区域的边界是路由器,而不是链路。一个路由器可以属于不同的区域,但是一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。划分区域后,可以在区域边界路由器上进行路由聚合,以减少通告到其他区域的LSA数量,还可以将网络拓扑变化带来的影响最小化。
OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号是0,通常被称为骨干区域。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此,OSPF有两个规定:
· 所有非骨干区域必须与骨干区域保持连通;
· 骨干区域自身也必须保持连通。
在实际应用中,可能会因为各方面条件的限制,无法满足上面的要求。这时可以通过配置OSPF虚连接予以解决。
虚连接是指在两台ABR之间通过一个非骨干区域建立的一条逻辑上的连接通道。它的两端必须是ABR,而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区(Transit Area)。
在图1-2中,Area2与骨干区域之间没有直接相连的物理链路,但可以在ABR上配置虚连接,使Area2通过一条逻辑链路与骨干区域保持连通。
虚连接的另外一个应用是提供冗余的备份链路,当骨干区域因链路故障不能保持连通时,通过虚连接仍然可以保证骨干区域在逻辑上的连通性。如图1-3所示。
虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,在这个连接上,和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。
两台ABR之间直接传递OSPF报文信息,它们之间的OSPF路由器只是起到一个转发报文的作用。由于协议报文的目的地址不是中间这些路由器,所以这些报文对于它们而言是透明的,只是当作普通的IP报文来转发。
Stub区域是一些特定的区域,该区域的ABR会将区域间的路由信息传递到本区域,但不会引入自治系统外部路由,区域中路由器的路由表规模以及LSA数量都会大大减少。为保证到自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由Type-3 LSA,发布给本区域中的其他非ABR路由器。
为了进一步减少Stub区域中路由器的路由表规模以及LSA数量,可以将区域配置为Totally Stub(完全Stub)区域,该区域的ABR不会将区域间的路由信息和自治系统外部路由信息传递到本区域。为保证到本自治系统的其他区域和自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由Type-3 LSA,发布给本区域中的其他非ABR路由器。
NSSA(Not-So-Stubby Area)区域是Stub区域的变形,与Stub区域的区别在于NSSA区域允许引入自治系统外部路由,由ASBR发布Type-7 LSA通告给本区域。当Type-7 LSA到达NSSA的ABR时,由ABR将Type-7 LSA转换成Type-5 LSA,传播到其他区域。
可以将区域配置为Totally NSSA(完全NSSA)区域,该区域的ABR不会将区域间的路由信息传递到本区域。为保证到本自治系统的其他区域的路由依旧可达,该区域的ABR将生成一条缺省路由Type-3 LSA,发布给本区域中的其他非ABR路由器。
如图1-4所示,运行OSPF协议的自治系统包括3个区域:区域0、区域1和区域2,另外两个自治系统运行RIP协议。区域1被定义为NSSA区域,区域1接收的RIP路由传播到NSSA ASBR后,由NSSA ASBR产生Type-7 LSA在区域1内传播,当Type-7 LSA到达NSSA ABR后,转换成Type-5 LSA传播到区域0和区域2。
另一方面,运行RIP的自治系统的RIP路由通过区域2的ASBR产生Type-5 LSA在OSPF自治系统中传播。但由于区域1是NSSA区域,所以Type-5 LSA不会到达区域1。
OSPF路由器根据在AS中的不同位置,可以分为以下四类:
该类路由器的所有接口都属于同一个OSPF区域。
该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。
与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它有可能是区域内路由器,也有可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
图1-5 OSPF路由器的类型
OSPF将路由分为四类,按照优先级从高到低的顺序依次为:
· 区域内路由(Intra Area)
· 区域间路由(Inter Area)
· 第一类外部路由(Type1 External):这类路由的可信程度较高,并且和OSPF自身路由的开销具有可比性,所以到第一类外部路由的开销等于本路由器到相应的ASBR的开销与ASBR到该路由目的地址的开销之和。
· 第二类外部路由(Type2 External):这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以计算路由开销时将主要考虑前者,即到第二类外部路由的开销等于ASBR到该路由目的地址的开销。如果计算出开销值相等的两条路由,再考虑本路由器到相应的ASBR的开销。
区域内和区域间路由描述的是AS内部的网络结构,外部路由则描述了应该如何选择到AS以外目的地址的路由。
路由器ID——即Router ID,用来在一个自治系统中唯一地标识一台路由器,一台路由器如果要运行OSPF协议,则必须存在Router ID。Router ID的获取方式有以下三种:
用户可以在创建OSPF进程的时候指定Router ID,配置时,必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个接口的IP地址一致。
如果在创建OSPF进程的时候选择自动分配Router ID,则OSPF进程将根据如下规则自动获取Router ID:
· OSPF进程启动时,将选取第一个运行该进程的接口的主IPv4地址作为Router ID;
· 设备重启时,OSPF进程将会选取第一个运行本进程的接口主IPv4地址作为Router ID;
· OSPF进程重启时,将从运行了本进程的所有接口的主IPv4地址中重新获取Router ID,具体规则如下:
¡ 如果存在配置IP地址的Loopback接口,则选择Loopback接口地址中最大的作为Router ID。
¡ 否则,从其他接口的IP地址中选择最大的作为Router ID(不考虑接口的up/down状态)。
如果在创建OSPF进程的时候没有指定Router ID,则缺省使用全局Router ID。建议用户在创建OSPF进程的时候手工指定Router ID,或者选择自动获取Router ID。
同一个区域内,OSPF路由的计算过程可简单描述如下:
· 每台OSPF路由器根据自己周围的网络拓扑结构生成LSA,并通过更新报文将LSA发送给网络中的其它OSPF路由器。
· 每台OSPF路由器都会收集其它路由器通告的LSA,所有的LSA放在一起便组成了LSDB。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。
· OSPF路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。各个路由器得到的有向图是完全相同的。
· 每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。
OSPF根据链路层协议类型将网络分为下列四种类型:
· 广播(Broadcast)类型:当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。在该类型的网络中,通常以组播形式(OSPF路由器的预留IP组播地址是224.0.0.5;OSPF DR/BDR的预留IP组播地址是224.0.0.6)发送Hello报文、LSU报文和LSAck报文;以单播形式发送DD报文和LSR报文。
· NBMA(Non-Broadcast Multi-Access,非广播多路访问)类型:当链路层协议是帧中继、ATM或X.25时,缺省情况下,OSPF认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文。
· P2MP(Point-to-MultiPoint,点到多点)类型:没有一种链路层协议会被缺省的认为是P2MP类型。P2MP必须是由其他的网络类型强制更改的,常用做法是将NBMA网络改为P2MP网络。在该类型的网络中,缺省情况下,以组播形式(224.0.0.5)发送协议报文。可以根据用户需要,以单播形式发送协议报文。
· P2P(Point-to-Point,点到点)类型:当链路层协议是PPP、HDLC时,缺省情况下,OSPF认为网络类型是P2P。在该类型的网络中,以单播方式发送DD报文,以组播方式发送其他类型的协议报文。
NBMA与P2MP网络之间的区别如下:
· NBMA网络是全连通的;P2MP网络并不需要一定是全连通的。
· NBMA网络中需要选举DR与BDR;P2MP网络中没有DR与BDR。
· NBMA网络采用单播发送报文,需要手工配置邻居;P2MP网络采用组播方式发送报文,通过配置也可以采用单播发送报文。
在广播网和NBMA网络中,任意两台路由器之间都要交换路由信息。如果网络中有n台路由器,则需要建立n(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF提出了DR的概念,所有路由器只将信息发送给DR,由DR将网络链路状态发送出去。
另外,OSPF提出了BDR的概念。BDR是对DR的一个备份,在选举DR的同时也选举BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为新的DR。
OSPF网络中,既不是DR也不是BDR的路由器为DR Other。DR Other仅与DR和BDR建立邻接关系,DR Other之间不交换任何路由信息。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量,同时减少网络流量,节约了带宽资源。
如图1-6所示,进行DR/BDR选举后,5台路由器之间只需要建立7个邻接关系就可以了。
图1-6 DR和BDR示意图
在OSPF中,邻居(Neighbor)和邻接(Adjacency)是两个不同的概念。路由器启动后,会通过接口向外发送Hello报文,收到Hello报文的路由器会检查报文中所定义的参数,如果双方一致就会形成邻居关系。只有当双方成功交换DD报文,交换LSA并达到LSDB同步之后,才形成邻接关系。
DR/BDR是由同一网段中所有的路由器根据路由器优先级和Router ID通过Hello报文选举出来的,只有优先级大于0的路由器才具有选举资格。
进行DR/BDR选举时每台路由器将自己选出的DR写入Hello报文中,发给网段上每台运行OSPF协议的路由器。当处于同一网段的两台路由器同时宣布自己是DR时,路由器优先级高者胜出。如果优先级相等,则Router ID大者胜出。
需要注意的是:
· 只有在广播或NBMA网络中才会选举DR;在P2P或P2MP网络中不需要选举DR。
· DR是某个网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DR Other。
· DR/BDR选举完毕后,即使网络中加入一台具有更高优先级的路由器,也不会重新进行选举,替换该网段中已经存在的DR/BDR成为新的DR/BDR。DR并不一定就是路由器优先级最高的路由器接口;同理,BDR也并不一定就是路由器优先级次高的路由器接口。
OSPF设备从接口获取到链路状态信息后,通过与相邻设备建立邻接关系,交互彼此的链路状态信息。OSPF接口状态表明了OSPF设备在对应链路中的作用,使得邻居设备间能够明确角色分工,从而正常建立连接。
OSPF接口共有以下七种状态:
· Down:初始状态。该状态表明接口不可用,不能用于收发流量。
· Loopback:设备到网络的接口处于环回状态。环回接口不能用于正常的数据传输,但可能需要通过向环回接口发送ICMP ping报文、误码检测等方式来获取链路质量,因此设备会通过Router-LSA通告环回接口的状态信息。
· Waiting:设备正在判定网络上的DR和BDR。在设备参与DR和BDR选举前,接口会启动WaitTimer定时器。在WaitTimer定时器超时前,设备发送的Hello报文不包含DR和BDR信息,设备不能被选举为DR或BDR。这样可以避免DR和BDR的不必要更改。仅NBMA网络、广播网络有此状态。
· P-2-P:接口连接到物理点对点网络或者虚拟链路。进入此状态后,设备会与链路连接的另一端设备建立邻接关系。仅P2P、P2MP网络有此状态。
· DR Other:设备没有被选为DR或BDR,但连接到广播网络或者NBMA网络上的其他设备被选举为DR。DR Other会与DR、BDR建立邻接关系。
· BDR:设备是自身所连接的网络上的BDR,并将在当前DR失效时成为DR。BDR与自身连接的网络上的其他所有设备建立邻接关系。
· DR:设备是自身所连接的网络上的DR。DR与自身连接的网络上的其他所有设备建立邻接关系。
OSPF接口根据不同的情况(即输入事件)更改状态,这样就形成了如图1-7所示的OSPF接口状态机。
图1-7 OSPF接口状态机
触发OSPF接口状态变化的IE(InputEvent,输入事件)如表1-1所示。
表1-1 OSPF接口状态切换的IE
输入事件 |
描述 |
IE1 |
InterfaceUp:底层协议表明接口是可操作的 |
IE2 |
WaitTimer:等待定时器超时,表明设备参与DR或BDR选举需要等待的时间结束 |
IE3 |
BackupSeen:设备通过以下两种方式之一检测网络中是否存在BDR · 接口收到邻居发送的Hello报文,宣称自己是BDR · 接口收到邻居发送的Hello报文,宣称自己是DR,但没有指明BDR BackupSeen事件说明邻居之间能够进行双向通信,可以结束Waiting状态 |
IE4 |
接口被选举为DR |
IE5 |
接口被选举为BDR |
IE6 |
接口没有被选举为DR或BDR |
IE7 |
NeighborChange:与该接口相关的邻居关系变化事件发生,表明需要重新选举DR和BDR。如下邻居关系变化可能会导致重新选举DR和BDR: · 接口所在的设备和一个邻居设备之间能够进行双向通信 · 接口所在的设备和一个邻居设备之间不再能够进行双向通信 · 通过邻居设备发送的Hello报文检测到邻居设备重新宣称自己是DR或BDR · 通过邻居设备发送的Hello报文再一次检测到邻居设备宣称自己不再是DR或BDR · 通过邻居设备发送的Hello报文再一次检测到邻居设备的DR优先级发生变化 |
IE8 |
UnloopInd:网管系统或者底层协议表明接口不再处于环回状态 |
IE9 |
InterfaceDown:底层协议表明接口不可操作。无论接口当前处于何种状态,都可能由此事件触发切换到Down状态 |
IE10 |
LoopInd:网管系统或者底层协议表明接口处于环回状态。无论接口当前处于何种状态,都可能由此事件触发切换到Loopback状态 |
在OSPF网络中,相邻设备间通过不同的邻居状态切换,最终可以达到LSDB同步并形成完全邻接关系。
OSPF邻居共有以下八种状态:
· Down:邻居会话的初始阶段。表明在邻居失效时间间隔内没有收到来自邻居设备的Hello报文。OSPF设备会每隔PollInterval时间间隔对外轮询发送Hello报文,仅NBMA网络的OSPF设备会向处于Down状态的邻居设备发送Hello报文,其他网络类型中的OSPF设备不会向处于Down状态的邻居设备发送Hello报文。
· Attempt:本状态仅对NBMA网络上的邻居有效。邻居关系处于Attempt状态时,OSPF设备会每隔HelloInterval时间间隔向自己手工指定的邻居发送Hello报文,尝试建立邻居关系。
· Init:本状态表示在邻居失效时间内收到来自邻居发送的Hello报文,但该Hello数据包内没有包含自己的Router ID,双向通信还没有建立起来。
· 2-Way:本状态表示双方互相收到了彼此发送的Hello报文,并在收到的Hello报文中看到了自己的Router ID,由此建立邻居关系。如果不形成邻接关系(例如DRother之间),则邻居状态机停留在2-Way状态,否则进入Exstart状态。只有邻居状态处于2-Way或者比2-Way更高的状态,才会选举DR和BDR。
· ExStart:协商主从关系。建立主从关系主要是为了确定初始DD报文的序列号,为后续有序交换DD报文做好准备。
· Exchange:交换DD报文。本端设备使用DD报文描述本地的LSDB,并发送给邻居。
· Loading:正在同步LSDB。两端设备发送LSR报文向邻居请求对方的LSA,通过交互LSU、LSAck同步LSDB。
· Full:建立邻接关系。两端设备的LSDB已同步,本端设备和邻居设备建立了完全的邻接关系。
OSPF邻居状态的切换机制如图1-8所示。
图1-8 OSPF邻居状态机
触发OSPF邻居状态变化的IE(InputEvent,输入事件)如表1-2所示。
表1-2 OSPF接口状态切换的IE
输入事件 |
描述 |
IE1 |
Start:以HelloInterval时间间隔向邻居设备发送Hello报文,尝试建立邻居关系。仅NBMA网络适用 |
IE2 |
HelloReceived:从邻居设备收到一个Hello报文 |
IE3 |
2-WayReceived:收到了邻居设备发送的Hello报文,并在收到的Hello报文中看到了自己的Router ID,邻居之间建立了双向通信关系。接下来进行如下判断: · IE3(Y):如果相邻设备间应当建立邻接关系,则将邻居状态切换为ExStart。 · IE3(N):如果相邻设备间不应当建立邻接关系,只建立邻居关系,则将邻居状态切换为2-Way。 |
IE4 |
NegotiationDone:邻居间主从关系已协商完成,已确定初始DD报文的序列号 |
IE5 |
ExchangeDone:邻居间成功交换了DD报文。接下来进行如下判断: · IE5(Y):如果链路状态请求列表为空,则将邻居状态切换为Full,表示LSDB已同步,邻居间建立了完全邻接关系。 · IE5(N):如果链路状态请求列表不为空,则将邻居状态切换为Loading,开始或继续向邻居发送LSR报文,请求还没有接收到的链路状态信息。 |
IE6 |
LoadingDone:链路状态请求列表为空 |
与OSPF相关的协议规范有:
· RFC 1245:OSPF protocol analysis
· RFC 1246:Experience with the OSPF protocol
· RFC 1370:Applicability Statement for OSPF
· RFC 1403:BGP OSPF Interaction
· RFC 1745:BGP4/IDRP for IP---OSPF Interaction
· RFC 1765:OSPF Database Overflow
· RFC 1793:Extending OSPF to Support Demand Circuits
· RFC 2154:OSPF with Digital Signatures
· RFC 2328:OSPF Version 2
· RFC 3101:OSPF Not-So-Stubby Area (NSSA) Option
· RFC 3166:Request to Move RFC 1403 to Historic Status
· RFC 3509:Alternative Implementations of OSPF Area Border Routers
· RFC 4167:Graceful OSPF Restart Implementation Report
· RFC 4577:OSPF as the Provider/Customer Edge Protocol for BGP/MPLS IP Virtual Private Networks (VPNs)
· RFC 4750:OSPF Version 2 Management Information Base
· RFC 4811:OSPF Out-of-Band LSDB Resynchronization
· RFC 4812:OSPF Restart Signaling
· RFC 5088:OSPF Protocol Extensions for Path Computation Element (PCE) Discovery
· RFC 5250:The OSPF Opaque LSA Option
· RFC 5613:OSPF Link-Local Signaling
· RFC 5642:Dynamic Hostname Exchange Mechanism for OSPF
· RFC 5709:OSPFv2 HMAC-SHA Cryptographic Authentication
· RFC 5786:Advertising a Router's Local Addresses in OSPF Traffic Engineering (TE) Extensions
· RFC 6571:Loop-Free Alternate (LFA) Applicability in Service Provider (SP) Networks
· RFC 6860:Hiding Transit-Only Networks in OSPF
· RFC 6987:OSPF Stub Router Advertisement
在进行各项配置的时候应该先做好网络规划,错误的配置可能会导致相邻路由器之间无法相互传递信息,甚至导致路由信息的阻塞或者产生路由环路。
OSPF配置任务如下:
(1) 配置OSPF基本功能
¡ 启动OSPF进程
¡ 配置OSPF区域
¡ 使能OSPF功能
(2) (可选)配置OSPF特殊区域
¡ 配置Stub区域
¡ 配置NSSA区域
¡ 配置虚连接
(3) (可选)配置OSPF的网络类型
(4) (可选)配置OSPF的路由信息控制
¡ 配置OSPF对通过接收到的LSA计算出来的路由信息进行过滤
(5) (可选)配置OSPF定时器
¡ 配置OSPF尝试退出overflow状态的定时器时间间隔
(6) (可选)配置OSPF报文相关功能
(7) (可选)控制LSA的生成、发布与接收
(8) (可选)加快OSPF路由收敛速度
¡ 配置ISPF
¡ 配置前缀抑制
¡ 配置PIC
(9) (可选)配置OSPF高级功能
(10) (可选)提高OSPF网络的可靠性
(11) (可选)配置OSPF验证
(12) (可选)配置OSPF GTSM功能
(13) (可选)配置OSPF日志和告警功能
(1) 进入系统视图。
system-view
(2) (可选)配置全局Router ID。
router id router-id
缺省情况下,未配置全局Router ID。
未配置全局路由器ID时,按照下面的规则进行选择:
¡ 如果存在配置IP地址的Loopback接口,则选择Loopback接口地址中最大的作为Router ID。
¡ 如果没有配置IP地址的Loopback接口,则从其他接口的IP地址中选择最大的作为Router ID(不考虑接口的up/down状态)。
(3) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
缺省情况下,系统没有运行OSPF。
(4) (可选)配置OSPF进程描述。
description text
缺省情况下,未配置进程描述。
建议用户为每个OSPF进程配置进程描述信息,帮助识别进程的用途,以便于记忆和管理。
(1) 进入系统视图。
system-view
(2) (可选)配置全局Router ID。
router id router-id
缺省情况下,未配置全局Router ID。
(3) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
缺省情况下,系统没有运行OSPF。
(4) (可选)配置OSPF进程描述。
description text
缺省情况下,未配置进程描述。
建议用户为每个OSPF进程配置进程描述信息,帮助识别进程的用途,以便于记忆和管理。
(5) 创建OSPF区域,并进入OSPF区域视图。
area area-id
(6) (可选)配置区域描述。
description text
缺省情况下,未配置区域描述。
建议用户为每个区域配置区域描述信息,帮助识别区域的用途,以便于记忆和管理。
仅支持在OSPF区域视图下配置区域描述。
(7) (可选)配置允许将区域下的接口从标准拓扑中分离。
capability default-exclusion
缺省情况下,OSPF区域下的接口自动加入标准拓扑base。
需要在本设备和邻居设备上同时配置本命令,否则会影响邻居关系的建立。
要在路由器上使能OSPF功能,必须先创建OSPF进程、指定该进程关联的区域以及区域包括的网段;对于当前路由器来说,如果某个路由器的接口IP地址落在某个区域的网段内,则该接口属于这个区域并使能了OSPF功能,OSPF将把这个接口的直连路由宣告出去。
OSPF支持多进程,即可以在一台路由器上通过为不同的OSPF进程指定不同的进程号来启动多个OSPF进程。OSPF进程号是本地概念,不影响与其它路由器之间的报文交换。因此,不同的路由器之间,即使进程号不同也可以进行报文交换。
OSPF支持多实例,即可以指定OSPF进程所属的VPN。如果未指定VPN,则表示OSPF位于公网中。VPN的相关内容请参见“MPLS配置指导”中的“MPLS L3VPN”。
可以在指定接口上使能OSPF,或者在指定网段上使能OSPF。在指定接口上使能OSPF的优先级高于在指定网段上使能OSPF。
在接口上使能OSPF时,如果不存在进程和区域,则创建对应的进程和区域;在接口上关闭OSPF时,不删除已经创建的进程和区域。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 进入OSPF区域视图。
area area-id
(4) 配置区域所包含的网段并在指定网段的接口上使能OSPF。
network ip-address wildcard-mask
缺省情况下,接口不属于任何区域且OSPF功能处于关闭状态。
一个网段只能属于一个区域。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置接口使能OSPF。
ospf process-id area area-id [ exclude-subip ]
缺省情况下,未配置接口使能OSPF。
在用户侧设备通过M-LAG双归接入OSPF网络的场景中,M-LAG设备作为网关进行三层转发。不同M-LAG设备上的网关接口(例如VLAN接口、VSI虚接口)具有相同的IP地址和MAC地址时,M-LAG设备与用户侧设备之间无法建立OSPF邻居关系。为了解决上述问题,需要配置OSPF使用M-LAG虚拟IPv4地址建立邻居关系。关于M-LAG的详细介绍,请参见“二层技术-以太网交换配置指导”中的“M-LAG”。
如图1-9所示,Device C通过M-LAG双归接入OSPF网络,M-LAG设备Device A和Device B作为三层网关,Device A和Device B上的网关接口Vlan-int100具有相同的IP地址和MAC地址,为了保证Device A和Device C、Device B和Device C之间能够建立OSPF邻居关系,需要执行如下配置:
(1) 在Device A和Device B上的VLAN接口下配置不同的M-LAG虚拟IPv4地址。
(2) 在Device A和Device B上配置OSPF使用M-LAG虚拟IPv4地址建立邻居关系。
图1-9 M-LAG组网中的OSPF邻居建立
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置接口的M-LAG虚拟IPv4地址。
port m-lag virtual-ip ipv4-address { mask-length | mask }
缺省情况下,未配置接口的M-LAG虚拟IPv4地址。
通过本命令配置的虚拟IPv4地址类似于接口的从地址。关于本命令的详细介绍,请参见“二层技术-以太网交换命令参考”中的“M-LAG”。
(4) 配置OSPF使用M-LAG虚拟IPv4地址建立邻居关系。
ospf peer sub-address enable ip-address
缺省情况下,OSPF使用接口的主IP地址建立邻居关系。
本命令指定的ip-address需要与port m-lag virtual-ip配置的虚拟IPv4地址一致。
网络管理员对整个网络划分区域完毕后,可以根据组网需要进一步将区域配置成Stub区域或NSSA区域。
当非骨干区域不能与骨干区域保持连通,或者骨干区域因为各方面条件的限制无法保持连通时,可以通过配置OSPF虚连接予以解决。
对于位于AS边缘的一些非骨干区域,我们可以在该区域的所有路由器上配置stub命令,把该区域配置为Stub区域。这样,描述自治系统外部路由的Type-5 LSA不会在Stub区域里泛洪,减小了路由表的规模。ABR生成一条缺省路由,所有到达自治系统外部的报文都交给ABR进行转发。
如果想进一步减少Stub区域路由表规模以及路由信息传递的数量,那么在ABR上配置stub命令时指定no-summary参数,可以将该区域配置为Totally Stub区域。这样,自治系统外部路由和区域间的路由信息都不会传递到本区域,所有目的地是自治系统外和区域外的报文都交给ABR进行转发。
Stub区域和Totally Stub区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
骨干区域不能配置成Stub区域或Totally Stub区域。
如果要将一个区域配置成Stub区域,则该区域中的所有路由器必须都要配置stub命令。
如果要将一个区域配置成Totally Stub区域,该区域中的所有路由器必须配置stub命令,该区域的ABR路由器需要配置stub no-summary命令。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 进入OSPF区域视图。
area area-id
(4) 配置当前区域为Stub区域。
stub [ default-route-advertise-always | no-summary ] *
缺省情况下,没有区域被设置为Stub区域。
(5) (可选)配置ABR发送到Stub区域缺省路由的开销。
default-cost cost-value
缺省情况下,ABR发送到Stub区域缺省路由的开销为1。
本命令只有在Stub区域和Totally Stub区域的ABR上配置才能生效。
Stub区域不能引入外部路由,为了在允许将自治系统外部路由通告到OSPF路由域内部的同时,保持其余部分的Stub区域的特征,网络管理员可以将区域配置为NSSA区域。NSSA区域也是位于AS边缘的非骨干区域。
配置nssa命令时指定no-summary参数可以将该区域配置为Totally NSSA区域,该区域的ABR不会将区域间的路由信息传递到本区域。
骨干区域不能配置成NSSA区域或Totally NSSA区域。
如果要将一个区域配置成NSSA区域,则该区域中的所有路由器必须都要配置nssa命令。
如果要将一个区域配置成Totally NSSA区域,该区域中的所有路由器必须配置nssa命令,该区域的ABR路由器需要配置nssa no-summary命令。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 进入OSPF区域视图。
area area-id
(4) 配置当前区域为NSSA区域。
nssa [ default-route-advertise [ cost cost-value | nssa-only | route-policy route-policy-name | type type ] * | no-import-route | no-summary | suppress-fa | [ [ [ translate-always ] [ translate-ignore-checking-backbone ] ] | translate-never ] | translator-stability-interval value ] *
缺省情况下,没有区域被设置为NSSA区域。
(5) (可选)配置发送到NSSA区域缺省路由的开销。
default-cost cost-value
缺省情况下,发送到NSSA区域的缺省路由的开销为1。
本命令只有在NSSA区域和Totally NSSA区域的ABR/ASBR上配置才能生效。
在划分区域之后,非骨干区域之间的OSPF路由更新是通过骨干区域来完成交换的。对此,OSPF要求所有非骨干区域必须与骨干区域保持连通,并且骨干区域自身也要保持连通。
但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通过在ABR上配置OSPF虚连接予以解决。
虚连接不能穿过Stub区域和Totally Stub区域;虚连接不能穿过NSSA区域和Totally NSSA区域。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 进入OSPF区域视图。
area area-id
(4) 创建并配置虚连接。
vlink-peer router-id [ dead seconds | hello seconds | { { hmac-md5 | hmac-sha-256 | md5 } key-id { cipher | plain } string | keychain keychain-name | simple { cipher | plain } string } | retransmit seconds | trans-delay seconds ] *
为使虚连接生效,在虚连接的两端都需配置此命令,并且两端配置的hello、dead参数必须一致。
OSPF的网络类型有四种:广播、NBMA、P2MP和P2P。用户可以根据需要更改接口的网络类型,例如:
· 当NBMA网络通过配置地址映射成为全连通网络时(即网络中任意两台路由器之间都存在一条虚电路而直接可达),可以将网络类型更改为广播,不需要手工配置邻居,简化配置。
· 当广播网络中有部分路由器不支持组播时,可以将网络类型更改为NBMA。
· NBMA网络要求必须是全连通的,即网络中任意两台路由器之间都必须有一条虚电路直接可达;如果NBMA网络不是全连通而是部分连通时,可以将网络类型更改为P2MP,达到简化配置、节省网络开销的目的。
· 如果路由器在NBMA网络中只有一个对端,也可将接口类型配置为P2P,节省网络开销。
如果接口配置为广播、NBMA或者P2MP网络类型,只有双方接口在同一网段才能建立邻居关系。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置OSPF接口网络类型为广播。
ospf network-type broadcast
缺省情况下,接口的网络类型为广播类型。
(4) (可选)配置OSPF接口的路由器优先级。
ospf dr-priority priority
缺省情况下,接口的路由器优先级为1。
把接口类型配置为NBMA后,由于无法通过广播Hello报文的形式动态发现相邻路由器,必须手工为接口指定相邻接口的IP地址、该相邻接口是否有选举权等(dr-priority参数的值仅表示路由器是否具有DR选举权,为0表示不具有DR选举权,大于0时表示具有DR选举权)。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置OSPF接口的网络类型为NBMA。
ospf network-type nbma
缺省情况下,接口的网络类型根据物理接口而定。
当接口封装的链路层协议是ATM、帧中继或X.25时,接口网络类型缺省值为NBMA。
(4) (可选)配置OSPF接口的路由器优先级。
ospf dr-priority priority
缺省情况下,接口的路由器优先级为1。
本命令设置的优先级用于实际的DR选举。
(5) 退回系统视图。
quit
(6) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(7) 配置NBMA网络的邻居。
peer ip-address [ dr-priority priority ]
缺省情况下,未配置邻居。
如果在配置邻居时将优先级指定为0,则本地路由器认为该邻居不具备选举权,不向该邻居发送Hello报文。本地路由器是DR或BDR的情况除外。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置OSPF接口的网络类型为P2MP。
ospf network-type p2mp [ unicast ]
缺省情况下,接口的网络类型根据物理接口而定。
接口类型配置为P2MP单播后,OSPF协议在该接口上发送的报文均为单播报文。由于无法通过广播Hello报文的形式动态发现相邻路由器,必须手工为接口指定相邻接口的IP地址。
(4) 退回系统视图。
quit
(5) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(6) 配置P2MP单播网络的邻居。
peer ip-address [ cost cost-value ]
缺省情况下,未配置邻居。
如果接口类型为P2MP单播,必须配置本命令。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置OSPF接口的网络类型为P2P。
ospf network-type p2p [ peer-address-check ]
缺省情况下,接口的网络类型根据物理接口而定。
当接口封装的链路层协议是PPP、LAPB、HDLC时,接口网络类型缺省值为P2P。
通过本节的配置,可以控制OSPF的路由信息的发布与接收,并引入路由信息。
OSPF区域间路由聚合是指ABR将具有相同前缀的路由信息聚合,只发布一条路由到其它区域。
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就只生成一条聚合后的Type-3 LSA,并发布给其它区域的路由器,这样既可以减少其它区域中LSDB的规模,也减小了因为网络拓扑变化带来的影响。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 进入OSPF区域视图。
area area-id
(4) 配置ABR路由聚合。
abr-summary ip-address { mask-length | mask } [ advertise | not-advertise ] [ cost cost-value ]
缺省情况下,ABR不对路由进行聚合。
ASBR引入外部路由后,每一条路由都会放在单独的一条Type-5 LSA中向外宣告;通过配置路由聚合,路由器只把聚合后的路由放在Type-5 LSA中向外宣告,减少了LSDB中LSA的数量。
在ASBR上配置路由聚合后,将对聚合地址范围内的Type-5 LSA进行聚合;如果ASBR在NSSA区域里面,将对聚合地址范围内的Type-7 LSA进行聚合。
如果本地路由器同时是ASBR和ABR,并且是NSSA区域的转换路由器,将对由Type-7 LSA转化成的Type-5 LSA进行聚合处理;如果不是NSSA区域的转换路由器,则不进行聚合处理。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置ASBR路由聚合。
asbr-summary ip-address { mask-length | mask } [ cost cost-value | not-advertise | nssa-only | tag tag ] *
缺省情况下,ASBR不对路由进行聚合。
OSPF是基于链路状态的动态路由协议,路由信息是根据接收到的LSA计算出来的,可以对通过接收到的LSA计算出来的OSPF路由信息进行过滤。
一共有四种过滤方式:
· 基于要加入到路由表的路由信息的目的地址进行过滤,可以通过配置访问控制列表或IP地址前缀列表来指定过滤条件;
· 基于要加入到路由表的路由信息的下一跳进行过滤,可以通过在命令中配置gateway参数来指定过滤条件;
· 基于要加入到路由表的路由信息的目的地址和下一跳进行过滤,可以通过配置访问控制列表或IP地址前缀列表指定过滤目的地址的条件,同时配置gateway参数来指定过滤下一跳的条件;
· 基于路由策略对要加入到路由表的路由信息进行过滤,可以通过在命令中配置route-policy参数来指定过滤条件。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置OSPF对通过接收到的LSA计算出来的路由信息进行过滤。
filter-policy { ipv4-acl-number [ gateway prefix-list-name ] | gateway prefix-list-name | prefix-list prefix-list-name [ gateway prefix-list-name ] | route-policy route-policy-name } import
缺省情况下,OSPF不对通过接收到的LSA计算出来的路由信息进行过滤。
通过在ABR上配置Type-3 LSA过滤,可以对进入ABR所在区域或ABR向其它区域发布的Type-3 LSA进行过滤。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 进入OSPF区域视图。
area area-id
(4) 配置对Type-3 LSA进行过滤。
filter { ipv4-acl-number | prefix-list prefix-list-name | route-policy route-policy-name } { export | import }
缺省情况下,不对Type-3 LSA进行过滤。
OSPF有两种方式来配置接口的开销值:
· 在接口视图下直接配置开销值;
· 配置接口的带宽参考值,OSPF根据带宽参考值自动计算接口的开销值,计算公式为:接口开销=带宽参考值÷接口期望带宽(接口期望带宽通过命令bandwidth进行配置,具体情况请参见接口分册命令参考中的介绍)。当计算出来的开销值大于65535时,开销取最大值65535;当计算出来的开销值小于1时,开销取最小值1。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 设置OSPF接口的开销值。
ospf cost cost-value
缺省情况下,接口按照当前的带宽自动计算接口运行OSPF协议所需的开销。对于Loopback接口,缺省值为0。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance instance-name ] *
(3) 配置带宽参考值。
bandwidth-reference value
缺省情况下,带宽参考值为100Mbps。
配置本功能后,OSPF接口将根据关联的Track项的状态调整接口开销值,以便邻居重新进行路径优选。具体机制如下:
(1) Track项的状态变为Negative时,OSPF将接口的开销值调大。
(2) Track项的状态变为Positive时,OSPF将接口的开销值恢复为调整前的值。
本功能可以解决用户侧设备通过M-LAG双归接入OSPF网络的场景中,流量绕行peer-link链路的问题。如图1-10所示,用户侧设备通过M-LAG双归接入OSPF网络。正常情况下,Device A和Device B以负载分担方式在用户网络和OSPF网络之间转发流量。当Device B和Device C之间的M-LAG接口故障时,上、下行流量转发路径的变化情况如下:
· 上行流量感知到接口故障,Device C去往OSPF网络的流量转发路径由Device C->Device B->Device D切换为Device C->Device A->Device D;
· 下行流量感知不到接口故障,Device D仍然会通过Device B转发流量。由于Device B无法直接将流量转发给Device C,导致这部分流量的转发路径由Device D->Device B->Device C切换为Device D->Device B->Device A->Device C,即流量绕行peer-link链路。
图1-10 M-LAG接口故障对流量转发路径的影响
为了避免流量绕行peer-link链路,需要在Device B上执行如下配置:
(1) 通过track interface命令创建与作为M-LAG接口的聚合接口链路状态关联的Track项。关于track interface命令的详细介绍,请参见“可靠性命令参考”中的“Track”。
(2) 通过ospf track adjust-cost命令将网关接口与Track项关联。
完成上述配置后,Device B的网关接口根据关联的Track项的状态调整接口开销值,具体机制如下:
(1) 作为M-LAG接口的聚合接口故障时,Track项的状态变为Negative,OSPF将网关接口的开销值调大。Device D去往用户侧的流量优选下一跳Device A,即Device D去往用户侧的流量转发路径切换为Device D->Device A->Device C,从而避免流量绕行peer-link链路,如图1-11所示。
(2) 作为M-LAG接口的聚合接口故障恢复时,Track项的状态变为Positive,OSPF将网关接口的开销值恢复为调整前的值,Device B正常转发流量。
图1-11 OSPF根据Track项状态调整接口开销值后的流量转发路径
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置OSPF接口与Track项关联,并根据Track项的状态调整接口开销值。
ospf track track-entry-number adjust-cost { cost-offset | max }
缺省情况下,未配置OSPF接口与Track项关联。
如果到一个目的地有几条开销相同的路径,可以实现等价路由负载分担,IP报文在这几个链路上负载分担,以提高链路利用率。该配置用以设置OSPF协议的最大等价路由条数。
例如,如图1-12所示,Device A和Device B均运行OSPF,Device A和Device B之间存在三条路由,且这三条路由的OSPF开销值相同,那么这三条路由就形成了等价路由,可以进行负载分担。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置OSPF最大等价路由条数。
maximum load-balancing number
缺省情况下,OSPF支持的等价路由的最大条数与系统支持最大等价路由的条数相同。
由于路由器上可能同时运行多个动态路由协议,就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级,在不同协议发现同一条路由时,优先级高的路由将被优先选择。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置OSPF协议的路由优先级。
preference [ ase ] { preference | route-policy route-policy-name } *
缺省情况下,OSPF协议对自治系统内部路由的优先级为10,对自治系统外部路由的优先级为150。
本命令用来配置是否产生NULL0路由以及产生NULL0路由的优先级。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置NULL0路由以及NULL0路由的优先级。
discard-route { external { preference | suppression } | internal { preference | suppression } } *
缺省情况下,产生引入聚合NULL0路由和区域间聚合NULL0路由,且NULL0路由优先级为255。
当OSPF网络中的设备需要访问运行其他协议的网络中的设备时,需要将其他协议的路由引入OSPF网络中。例如,引入IS-IS、BGP生成的路由信息,将这些路由信息通过Type5 LSA或Type7 LSA向外宣告。
OSPF是一个无环的动态路由协议,但这是针对域内路由和域间路由而言的。OSPF对于引入的外部路由引发的路由环路没有很好的防范机制,因此在配置OSPF引入外部路由时一定要慎重,防止手工配置引发的环路。
OSPF还可以对引入的路由进行过滤,只将满足过滤条件的外部路由转换为Type5 LSA或Type7 LSA发布出去。
只能引入路由表中状态为active的路由,是否为active状态可以通过display ip routing-table protocol命令来查看。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置OSPF引入外部路由。
import-route bgp [ as-number ] [ allow-ibgp ] [ [ cost cost-value | inherit-cost ] | nssa-only | route-policy route-policy-name | tag tag | type type ] *
import-route { direct | static } [ [ cost cost-value | inherit-cost ] | nssa-only | route-policy route-policy-name | tag tag | type type ] *
import-route { isis | ospf | rip } [ process-id | all-processes ] [ allow-direct | [ cost cost-value | inherit-cost ] | nssa-only | route-policy route-policy-name | tag tag | type type ] *
缺省情况下,不引入外部路由。
执行import-route命令引入BGP路由时,未指定allow-ibgp参数表示只引入EBGP路由;指定allow-ibgp参数表示将IBGP路由也引入,容易引起路由环路,请慎用。
(4) (可选)配置对引入的路由进行过滤。
filter-policy { ipv4-acl-number | prefix-list prefix-list-name } export [ bgp | direct | { isis | ospf | rip } [ process-id ] | static ]
缺省情况下,不对引入的路由信息进行过滤。
(5) 配置路由引入时的参数缺省值(开销、标记、类型)。
default { cost cost-value | tag tag | type type } *
缺省情况下,OSPF引入的路由的度量值为1,引入的路由的标记为1,引入的路由类型为2。
OSPF组网中,区域边界和自治系统边界通常是由多台设备组成的多出口冗余备份或者负载分担。此时,为了减少路由表的容量,可以配置缺省路由,减轻设备的处理负担。
OSPF缺省路由通常应用于下面两种情况:
· 由区域边界路由器发布Type3 LSA,用来指导区域内路由器进行区域之间报文的转发。
· 由自治系统边界路由器发布Type5 LSA或Type7 LSA,用来指导OSPF路由域内路由器进行域外报文的转发。
当路由器无精确匹配的路由时,就可以通过缺省路由进行报文转发。Type3 LSA生成的缺省路由的优先级高于Type5 LSA生成的缺省路由的优先级。
OSPF缺省路由的发布方式取决于引入缺省路由的区域类型,具体如表1-3所示。
区域类型 |
产生条件 |
发布方式 |
产生LSA的类型 |
LSA泛洪范围 |
普通区域 |
配置default-route-advertise命令 |
ASBR发布 |
Type5 LSA |
普通区域 |
STUB区域 |
自动产生 |
ABR发布 |
Type3 LSA |
STUB区域 |
NSSA区域 |
配置nssa [ default-route-advertise ]命令 |
ASBR发布 |
Type7 LSA |
NSSA区域 |
完全NSSA区域 |
自动产生 |
ABR发布 |
Type3 LSA |
NSSA区域 |
OSPF不能通过import-route命令从其它协议引入缺省路由,如果想把缺省路由引入到OSPF路由区域,必须在ASBR上执行本配置。
ASBR通告缺省路由后,如果该区域中某台设备上配置了静态路由,要使ASBR通告的缺省路由加入到该设备的路由表中,则必须保证配置的静态路由的优先级低于OSPF通告的缺省路由的优先级。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置OSPF引入缺省路由。
default-route-advertise [[always | permit-calculate-other ] | cost cost-value | route-policy route-policy-name | type type ] *
default-route-advertise [ summary cost cost-value ]
缺省情况下,不引入缺省路由。
default-route-advertise summary cost命令仅在VPN中应用,以Type-3 LSA引入缺省路由,PE路由器会将引入的缺省路由发布给CE路由器。
(4) 配置路由引入时的参数缺省值(开销、标记、类型)。
default { cost cost-value | tag tag | type type } *
缺省情况下,OSPF引入的路由的度量值为1,引入的路由的标记为1,引入的路由类型为2。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 进入OSPF区域视图。
area area-id
(4) 配置并发布一条主机路由。
host-advertise ip-address cost-value
缺省情况下,OSPF不发布所包含网段之外的主机路由。
本功能允许设备将链路状态信息发布到BGP,由BGP向外发布,以满足需要知道链路状态信息的应用的需求。BGP LS的相关内容请参见“三层技术-IP路由配置指导”中的“BGP高级配置”。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置允许设备将OSPF链路状态信息发布到BGP。
distribute bgp-ls [ instance-id id ] [ strict-link-checking ]
缺省情况下,不允许设备将OSPF链路状态信息发布到BGP。
通过改变OSPF的报文定时器,可以调整OSPF网络的收敛速度以及协议报文带来的网络负荷。在一些低速链路上,需要考虑接口传送LSA的延迟时间。
用户可以在接口上配置下列OSPF报文定时器:
· Hello定时器:接口向邻居发送Hello报文的时间间隔,OSPF邻居之间的Hello定时器的值要保持一致。
· Poll定时器:在NBMA网络中,路由器向状态为down的邻居路由器发送轮询Hello报文的时间间隔。
· 邻居失效时间:在邻居失效时间内,如果接口还没有收到邻居发送的Hello报文,路由器就会宣告该邻居无效。
· 接口重传LSA的时间间隔:路由器向它的邻居通告一条LSA后,需要对方进行确认。若在重传间隔时间内没有收到对方的确认报文,就会向邻居重传这条LSA。
Hello报文中包含Hello定时器和邻居失效时间,对于不同的网络类型,Hello定时器和邻居失效时间的缺省值不同。修改网络类型时,Hello定时器和邻居失效时间将恢复为对应网络类型下的缺省值。请确保邻居路由器两端的Hello定时器和邻居失效时间的值保持一致,否则将影响OSPF邻居关系的建立。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置Hello定时器。
ospf timer hello seconds
缺省情况下,P2P、Broadcast类型接口发送Hello报文的时间间隔为10秒,P2MP、NBMA类型接口发送Hello报文的时间间隔为30秒。
(4) 配置Poll定时器。
ospf timer poll seconds
缺省情况下,发送轮询Hello报文的时间间隔为120秒。
轮询Hello报文的时间间隔至少应为Hello时间间隔的4倍。
(5) 配置邻居失效时间。
ospf timer dead seconds
缺省情况下,P2P、Broadcast类型接口的OSPF邻居失效时间为40秒,P2MP、NBMA类型接口的OSPF邻居失效时间为120秒。
邻居失效时间应至少为Hello时间间隔的4倍。
(6) 配置接口重传LSA的时间间隔。
ospf timer retransmit seconds
缺省情况下,时间间隔为5秒。
相邻路由器重传LSA时间间隔的值不要设置得太小,否则将会引起不必要的重传。通常应该大于一个报文在两台路由器之间传送一个来回的时间。
考虑到OSPF报文在链路上传送时也需要花费时间,所以LSA的老化时间(age)在传送之前要增加一定的延迟时间,在低速链路上需要对该项配置进行重点考虑。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置接口传送LSA的延迟时间。
ospf trans-delay seconds
缺省情况下,接口传送LSA的延迟时间为1秒。
当OSPF的LSDB发生改变时,需要重新计算最短路径。如果网络频繁变化,且每次变化都立即计算最短路径,将会占用大量系统资源,并影响路由器的效率。通过调节路由计算的时间间隔,可以抑制由于网络频繁变化带来的影响。
本命令在网络变化不频繁的情况下将连续路由计算的时间间隔缩小到minimum-interval,而在网络变化频繁的情况下可以进行相应惩罚,将路由计算的时间间隔按照配置的惩罚增量延长,增加incremental-interval×2n-2(n为连续触发路由计算的次数),最大不超过maximum-interval。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置OSPF路由计算的时间间隔。
spf-schedule-interval { maximum-interval [ minimum-interval [ incremental-interval [ conservative ] ] ] | millisecond interval }
缺省情况下,OSPF路由计算的最大时间间隔为5秒,最小时间间隔为50毫秒,时间间隔惩罚增量为200毫秒。
通过调节LSA重复到达的时间间隔,可以抑制网络频繁变化可能导致的带宽资源和路由器资源被过多占用的问题。
缺省情况下,OSPF会自动调节LSA重复到达的时间间隔,在网络变化不频繁的情况下,将LSA重复到达的时间间隔缩小到minimum-interval,而在网络变化频繁的情况下可以进行相应的惩罚,将LSA重复到达的时间间隔按照配置的惩罚增量延长,最大不超过maximum-interval。对于在LSA重复到达的时间间隔内收到的LSA类型、LS ID、生成路由器ID均相同的LSA,设备将直接丢弃。
在网络相对稳定且对路由收敛速度要求较高的组网环境中,可以将LSA重复到达的时间间隔配置为0,使得拓扑或者路由的变化可以立即被感知到,从而加快路由的收敛。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置LSA重复到达的最小时间间隔。
lsa-arrival-interval maximum-interval [ minimum-interval [ incremental-interval ] ]
缺省情况下,OSPF LSA重复到达的最大时间间隔为1000毫秒,最小时间间隔为500毫秒,时间间隔惩罚增量为500毫秒。
通过调节OSPF更新LSA的时间间隔,可以抑制网络频繁变化可能导致的带宽资源和路由器资源被过多占用的问题。
缺省情况下,OSPF会自动调节更新LSA的时间间隔,在网络变化不频繁的情况下将OSPF更新LSA的时间间隔缩小到minimum-interval,而在网络变化频繁的情况下可以进行相应惩罚,将OSPF更新LSA的时间间隔按照配置的惩罚增量延长,增加incremental-interval×2n-2(n为连续触发路由计算的次数),最大不超过maximum-interval。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置OSPF更新LSA的时间间隔。
lsa-generation-interval maximum-interval [ minimum-interval [ incremental-interval ] ]
缺省情况下,OSPF更新LSA的最大时间间隔为5秒,最小时间间隔为50毫秒,惩罚增量为200毫秒。
网络中出现过多LSA,会占用大量系统资源。当设置的LSDB中External LSA的最大数量达到上限时,LSDB会进入overflow状态,在overflow状态中,不再接收External LSA,同时删除自己生成的External LSA,对于已经收到的External LSA则不会删除。这样就可以减少LSA从而节省系统资源。
通过配置可以调整OSPF退出overflow状态的时间。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置OSPF尝试退出overflow状态的定时器时间间隔。
lsdb-overflow-interval interval
缺省情况下,OSPF尝试退出overflow定时器间隔是300秒,配置为0时,表示不退出Overflow状态。
在与邻居进行LSDB同步的过程中,需要发送大量的LSU报文时,邻居设备会在短时间内收到大量的LSU报文,处理这些突发的大量LSU报文时,可能会出现如下情况:
· 占用较多的系统资源,导致邻居设备性能下降。
· 邻居设备可能会将维持邻居关系的Hello报文丢弃,导致邻居关系断开。重新建立邻居关系的过程中,需要交互的LSU数量将会更大,从而加剧设备性能的下降。
配置本功能后,路由器将LSU报文分为多个批次进行发送,对OSPF接口每次允许发送的LSU报文的最大个数做出限制;同时,在指定的时间间隔内,所有运行OSPF的接口发送LSU的最大个数不能超过限定值,即对整机发送LSU的速率进行限制,从而避免上述情况的发生。
(1) 进入系统视图。
system-view
(2) 开启OSPF限制LSU发送速率功能。
ospf lsu-flood-control [ interval count ]
缺省情况下,OSPF不对LSU的发送速率进行限制。
调整OSPF对LSU的发送速率时,如果配置不当可能会造成路由异常等情况,请谨慎配置。通常情况下,建议使用缺省值。
(3) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(4) (可选)配置接口发送LSU报文的时间间隔和一次发送LSU报文的最大个数。
transmit-pacing interval interval count count
缺省情况下,OSPF接口发送LSU报文的时间间隔为20毫秒,一次最多发送3个LSU报文。
如果要使OSPF路由信息不被某一网络中的路由器获得,可以禁止接口收发OSPF报文。
将运行OSPF协议的接口指定为Silent状态后,该接口的直连路由仍可以由同一路由器的其它接口通过Router LSA发布出去,但OSPF报文将被阻塞,接口上无法建立邻居关系。这样可以增强OSPF的组网适应能力,减少系统资源的消耗。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 禁止接口收发OSPF报文。
silent-interface { interface-type interface-number | all }
缺省情况下,允许接口收发OSPF报文。
不同的进程可以对同一接口禁止收发OSPF报文,但本命令只对本进程已经使能的OSPF接口起作用,对其它进程的接口不起作用。
缺省情况下,接口发送DD报文时不使用接口的实际MTU值,而是用0代替。同时,接口不检查接收到的DD报文携带的MTU值,使得两端设备的接口MTU值不同也可以建立邻居关系。
如果其他厂商设备丢弃携带的MTU值为0的DD报文,则会导致OSPF邻居关系无法建立。为了解决上述问题,需要配置ospf mtu-enable命令。配置此命令后,OSPF将使用接口的实际MTU值填写DD报文Interface MTU字段,同时检查接收到的DD报文携带的MTU值是否超过本端接收接口的MTU值。如果接收到的DD报文携带的MTU值是否超过本端接收接口的MTU值,则将此DD报文丢弃。为了两端设备能够建立邻居关系,需要为互联物理接口设置相同的MTU值。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置DD报文中MTU域的值为发送该报文接口的MTU值。
ospf mtu-enable
缺省情况下,接口发送的DD报文中MTU域的值为0。
DSCP优先级用来体现报文自身的优先等级,决定报文传输的优先程度。通过本配置可以指定OSPF发送协议报文的DSCP优先级。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置OSPF发送协议报文的DSCP优先级。
dscp dscp-value
缺省情况下,OSPF发送协议报文的DSCP优先级值为48。
本功能用于需要对接口发送OSPF报文的大小进行限制的场景。例如,通过隧道建立OSPF邻居时,为避免隧道口发送的OSPF报文分片,可用此命令在隧道口上设置OSPF报文的最大长度,保证OSPF报文的最大长度+封装报文头长度≤隧道出接口的IP MTU。关于隧道接口的详细介绍请参见“接口管理配置指导”中的“隧道接口”。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置接口发送OSPF报文的最大长度。
ospf packet-size value
缺省情况下,接口发送OSPF报文的最大长度为本接口的IP MTU值。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置LSDB中External LSA的最大数量。
lsdb-overflow-limit number
缺省情况下,不对LSDB中External LSA的最大条目数进行限制。
通过该功能,不希望让邻居接收到的LSA可在本端接口出方向上被过滤掉,从而减小邻居LSDB的规模,并节省带宽。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置过滤接口出方向的LSA。
ospf database-filter { all | { ase [ acl ipv4-acl-number ] | nssa [ acl ipv4-acl-number ] | summary [ acl ipv4-acl-number ] } * }
缺省情况下,不对接口出方向的LSA进行过滤。
在P2MP网络中,一台路由器可以有多个接口的网络类型为P2MP的OSPF邻居。当两台路由器之间存在多条P2MP链路时,不希望让某个指定邻居收到的LSA,通过该功能可在本地被过滤掉。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置过滤发送给接口的网络类型为P2MP的邻居的LSA。
database-filter peer ip-address { all | { ase [ acl ipv4-acl-number ] | nssa [ acl ipv4-acl-number ] | summary [ acl ipv4-acl-number ] } * }
缺省情况下,不对发送给接口的网络类型为P2MP的邻居的LSA进行过滤。
当OSPF网络中发生路由震荡时,设备会将不断生成的LSA在全网泛洪,这样可能会进一步加剧网络的恶化。同时,设备收到LSA后会因进行频繁的路由计算而占用过多的CPU资源,导致性能下降。配置本功能可有效避免上述情况的发生。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置当路由震荡时抑制OSPF更新LSA。
lsa-generation-interval suppress-flapping delay-interval [ threshold threshold-value ]
缺省情况下,不会抑制OSPF更新LSA。
(4) 配置当路由震荡时抑制重复到达的OSPF LSA。
lsa-arrival-interval suppress-flapping delay-interval [ threshold threshold-value ]
缺省情况下,不会对重复到达的OSPF LSA进行抑制。
(5) 配置收到达到最大老化时间的Router LSA时启动路由计算的延迟时间。
maxage-lsa route-calculate-delay delay-interval
缺省情况下,收到达到最大老化时间的Router LSA时启动路由计算的延迟时间为10秒。
ISPF(Incremental Shortest Path First,增量最短路径优先)是对OSPF中最短路径树的增量计算,当网络的拓扑结构发生变化,即影响到最短路径树的结构时,只对受影响的部分节点进行重新计算拓扑结构,只对最短路径树中受影响的部分进行修正,而不需要重建整棵最短路径树。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 开启增量SPF计算功能。
ispf enable
缺省情况下,增量SPF计算功能处于使能状态。
OSPF使能网段时会将接口上匹配该网段的所有网段路由与主机路由都通过LSA发布,但有些时候主机路由或网段路由是不希望被发布的。通过前缀抑制配置,可以减少LSA中携带不需要的前缀,即不发布某些网段路由和主机路由,从而提高网络安全性,加快路由收敛。
当使能前缀抑制时,具体情况如下:
· P2P或P2MP类型网络:Type-1 LSA中不发布接口的主地址,即Type-1 LSA中链路类型为3的Stub链路被抑制,不生成接口路由,但其他路由信息可以正常计算,不会影响流量转发。
· 广播类型或者NBMA网络:DR发布的Type-2 LSA的掩码字段会填成32位,即不生成网段路由,但其他路由信息可以正常计算,不会影响流量转发。另外,如果没有邻居,发布的Type-1 LSA中也不发布接口的主地址,即Type-1 LSA中链路类型为3的Stub链路被抑制。
如果需要抑制前缀发布,建议整个OSPF网络都配置本命令。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置前缀抑制功能。
prefix-suppression
缺省情况下,不抑制OSPF进程进行前缀发布。
不能抑制从地址、LoopBack接口以及处于抑制状态的接口对应的前缀。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置接口的前缀抑制功能。
ospf prefix-suppression [ disable ]
缺省情况下,不抑制接口进行前缀发布。
不能抑制从地址对应的前缀。
OSPF按照指定的收敛优先级依次计算区域内路由、区域间路由、自治系统外部路由。收敛优先级从高到低分为4个优先级Critical、High、Medium和Low。如果一条路由符合多个收敛优先权的匹配规则,则这些收敛优先权中最高者当选为路由的收敛优先权。
通过配置OSPF路由的收敛优先级,允许用户配置特定路由的优先级,使这些路由能够比其他的路由优先收敛。
(1) 进入系统视图。
system-view
(2) 配置IPv4地址前缀列表。
ip prefix-list prefix-list-name [ index index-number ] { deny | permit } ip-address mask-length [ greater-equal min-mask-length ] [ less-equal max-mask-length ]
(3) 配置路由策略。
route-policy route-policy-name { deny | permit } node node-number
(4) 配置IPv4的路由信息的匹配条件为IPv4地址前缀列表。
if-match ip { address | next-hop | route-source } prefix-list prefix-list-name
缺省情况下,未配置IPv4的路由信息的匹配条件。
(5) 配置路由的收敛优先级。
apply prefix-priority { critical | high | medium }
缺省情况下,未配置路由的收敛优先级。
(6) 退回系统视图。
quit
(7) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(8) 使能OSPF的前缀按优先级快速收敛功能。
prefix-priority route-policy route-policy-name
缺省情况下,OSPF的前缀按优先级快速收敛功能处于关闭状态。
PIC(Prefix Independent Convergence,前缀无关收敛),即收敛时间与前缀数量无关,该功能可以加快收敛速度。传统的路由计算快速收敛都与前缀数量相关,收敛时间与前缀数量成正比。
PIC和OSPF快速重路由功能同时配置时,OSPF快速重路由功能生效。
目前只支持区域间路由以及外部路由的PIC功能。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 使能PIC功能。
pic [ additional-path-always ]
缺省情况下,PIC功能处于使能状态。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 使能OSPF协议中主用链路的BFD(Ctrl方式)检测功能。
ospf primary-path-detect bfd ctrl
缺省情况下,OSPF协议中主用链路的BFD(Ctrl方式)检测功能处于关闭状态。
配置本功能后,可以加快OSPF协议的收敛速度。使用control报文双向检测方式时,需要建立OSPF邻居的两端设备均支持BFD配置。
(1) 进入系统视图。
system-view
(2) (可选)配置BFD Echo报文源地址。
bfd echo-source-ip ip-address
缺省情况下,未配置BFD Echo报文源地址。
建议配置本命令,且配置的源IP地址不属于该设备任何一个接口所在网段,以避免对端发送大量的ICMP重定向报文造成网络拥塞。
本命令的详细情况请参见“可靠性命令参考”中的“BFD”。
(3) 进入接口视图。
interface interface-type interface-number
(4) 使能OSPF协议中主用链路的BFD(Echo方式)检测功能。
ospf primary-path-detect bfd echo
缺省情况下,OSPF协议中主用链路的BFD(Echo方式)检测功能处于关闭状态。
配置本功能后,可以加快OSPF协议的收敛速度。使用echo报文单跳检测方式时,仅需要一端设备支持BFD配置。
Stub路由器用来控制流量,它告知其他OSPF路由器不要使用这个Stub路由器来转发数据,但可以拥有一个到Stub路由器的路由。
将当前路由器配置为Stub路由器后,在该路由器发布的Router LSA中,当链路类型取值为3表示连接到Stub网络时,链路度量值不变;当链路类型为1、2、4分别表示通过P2P链路与另一路由器相连、连接到传送网络、虚连接时,链路度量值将设置为最大值65535。通过增加include-stub参数可以将路由器发布的Router LSA中,链路类型为3的Stub链路度量值设置为最大值65535。这样其邻居计算出这条路由的开销就会很大,如果邻居上有到这个目的地址开销更小的路由,则数据不会通过这个Stub路由器转发。
例如,如图1-13所示,Device A、Device B、Device C和Device D运行OSPF协议,并建立IBGP连接。Device C为Device B的备份设备。当网络环境稳定时,设备上的BGP和OSPF是完全收敛的。正常情况下,Device A到10.3.1.0/30的流量会经过Device B。当Device B发生故障后,流量切换到Device C。Device B故障恢复后,流量回切到Device B,由于IGP收敛速度比BGP快,因此OSPF先收敛,BGP还没有完成收敛,导致Device B上没有去往10.3.1.0/30的路由,这些流量就会被丢弃。在Device B上配置本功能,使得Device B在等待BGP路由收敛期间作为Stub路由器。这样,在BGP收敛完成前,Device A不会把流量转发到Device B上,而是继续将流量转发给备份设备Device C,直到Device B上的BGP路由完成收敛。
图1-13 Stub路由器应用场景举例
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置当前路由器为Stub路由器。
stub-router [ external-lsa [ max-metric-value ] | include-stub | on-startup { seconds | wait-for-bgp [ seconds ] } | summary-lsa [ max-metric-value ] ] *
缺省情况下,当前路由器没有被配置为Stub路由器。
Stub路由器与Stub区域无关。
Isolate是一种对网络设备进行软件或硬件维护的方式。Isolate使用网络中的冗余路径,平滑移除需要维护的设备。当完成设备维护后,该设备可以重新投入使用。
当用户需要对网络中某台设备的OSPF协议进行升级时,为了不对当前网络中通过该设备发布的OSPF路由指导转发的流量产生影响,可以使用OSPF isolate功能把该设备上的OSPF协议从当前网络中隔离出来,具体工作机制如下:
(1) 开启OSPF isolate功能后,OSPF将链路度量值调大,以便邻居重新进行路径优选。OSPF调整链路度量值的机制如下:
¡ 发布的Type-1 LSA(Router LSA)中,OSPF将链路度量值调整为最大值65535。
¡ 发布的Type-3 LSA(Network Summary LSA)、Type-5 LSA(AS External LSA)和Type-7 LSA(NSSA External LSA)中,OSPF将链路度量值调整为16711680。
(2) 邻居收到LSA完成路由计算后,将选择更优的路径转发流量,不再将流量发往OSPF isolate设备。此时,设备的OSPF协议完全从当前组网中隔离出来,可以对该设备上的OSPF协议进行升级处理。
(3) 对OSPF协议的维护结束后,关闭OSPF isolate功能将链路度量值恢复为调整前的值,从而让该设备的OSPF协议重新加入网络。
单独配置isolate enable命令的效果与单独配置stub-router external-lsa 16711680 summary-lsa 16711680 include-stub命令的效果相同。
同时配置OSPF isolate功能和OSPF stub路由器功能时,需要注意:
· OSPF isolate功能和OSPF stub路由器功能均生效时,发布的Type-3 LSA、Type-5 LSA、Type-7 LSA的链路度量值为Isolate功能和Stub路由器功能中该类LSA链路度量值的较大者。
· 如果stub-router命令中指定了on-startup参数,在Stub路由器功能未生效期间,仅Isolate功能会影响流量转发路径。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] *
(3) 使用OSPF isolate功能对设备的OSPF协议进行维护。
a. 开启OSPF协议的隔离功能,将设备的OSPF协议从网络中隔离出来。
isolate enable
b. OSPF协议维护结束后,关闭OSPF协议的隔离功能,让设备的OSPF协议重新加入网络。
undo isolate enable
缺省情况下,OSPF协议的隔离功能处于关闭状态。
当用户需要对某台设备进行调试或升级等维护操作时,可以使用OSPF shutdown功能暂时关闭设备的OSPF进程,并通知邻居设备自己要离开网络。邻居设备将流程切换到备份路径上,不再通过该设备转发流量,从而降低设备维护对网络的影响。具体工作机制如下:
· 开启OSPF shutdown功能的OSPF进程向邻居发送1-way Hello报文。
邻居收到1-way Hello报文后,断开与发送该报文的设备的邻居关系。
· 开启OSPF shutdown功能的OSPF进程停止收发OSPF协议报文,清除邻居信息、LSDB(包括自己产生的LSP和接收到的LSP)以及OSPF路由等信息。
对设备的维护结束后,通过undo shutdown process命令重新开启OSPF进程,从而让设备的OSPF进程重新加入网络。
与undo ospf命令相比,本功能在关闭OSPF进程后,不会删除该进程下的配置,降低了用户维护设备的成本。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] *
(3) 配置OSPF shutdown功能。
a. 关闭OSPF进程。
shutdown process
b. 设备维护结束后,重新开启OSPF进程,让设备的OSPF进程重新加入网络。
undo shutdown process
缺省情况下,OSPF进程处于开启状态。
当有多条路径可以到达同一个外部路由时,在选择最优路由的问题上,RFC 2328中定义的选路规则与RFC 1583的有所不同,进行此配置可以兼容RFC 1583中定义的规则。
具体的选路规则如下:
(1) 当RFC 2328兼容RFC 1583时,所有到达ASBR的路由优先级相同。当RFC 2328不兼容RFC 1583时,非骨干区的区域内路由优先级最高,区域间路由与骨干区区域内路由优先级相同,优选非骨干区的区域内路由,尽量减少骨干区的负担;
(2) 若存在多条优先级相同的路由时,按开销值优选,优选开销值小的路由;
(3) 若存在多条开销值相同路由时,按路由来源区域的区域ID选择,优选区域ID大的路由。
为了避免路由环路,同一路由域内的路由器建议统一配置相同选择规则。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置兼容RFC 1583的外部路由选择规则。
rfc1583 compatible
缺省情况下,兼容RFC 1583的路由选择优先规则的功能处于开启状态。
OSPF用Router ID来在一个自治系统中唯一地标识一台路由器,Router ID长度固定为4字节。当网络管理员检查OSPF邻居关系的状态、路由表以及LSDB中的内容时,使用点分十进制表示的Router ID不够直观,查看也不方便。
主机名映射提供了一种将Router ID映射到主机名的服务,运行OSPF的路由器维护一个主机名到Router ID的映射关系表,在维护和管理以及网络故障诊断时,使用主机名比使用Router ID会更直观,也更容易记忆。
OSPF使用Type-10 LSA或Type-11 LSA携带动态主机名属性信息,因此,使用该功能前,需要保证OSPF的Opaque LSA发布接收能力处于开启状态。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 使能Opaque LSA发布接收能力。
opaque-capability enable
缺省情况下,OSPF的Opaque LSA发布接收能力处于开启状态。
(4) 使能OSPF动态主机名映射功能。
hostname [ host-name ]
缺省情况下,OSPF动态主机名映射功能处于关闭状态。
GR(Graceful Restart,平滑重启)是一种通过备份OSPF配置信息,在协议重启或主备倒换时OSPF进行平滑重启,从邻居那里获得邻居关系,并对LSDB进行同步,从而保证转发业务不中断的机制。
GR有两个角色:
· GR Restarter:发生协议重启或主备倒换事件且具有GR能力的设备。
· GR Helper:和GR Restarter具有邻居关系,协助完成GR流程的设备。
目前有两种方式实现OSPF GR技术:
· 一种是基于IETF标准,GR Restarter通过向GR Helper发送一种称为Grace LSA的9类Opaque LSA来控制GR的交互过程。
· 另外一种是非IETF标准,GR Restarter与GR Helper之间是通过相互发送携带LLS与OOB扩展信息的OSPF报文来完成GR的交互过程。
一台设备可以同时充当GR Restarter和GR Helper。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 使能Opaque LSA发布接收能力。
opaque-capability enable
缺省情况下,OSPF的Opaque LSA发布接收能力处于开启状态。
(4) 使能OSPF协议的IETF标准GR能力。
graceful-restart ietf [ global | planned-only ] *
缺省情况下,OSPF协议的IETF标准GR能力处于关闭状态。
(5) (可选)配置OSPF协议的GR重启间隔时间。
graceful-restart interval interval
缺省情况下,OSPF协议的GR重启间隔时间为120秒。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 使能OSPF本地链路信令能力。
enable link-local-signaling
缺省情况下,OSPF本地链路信令能力处于关闭状态。
(4) 使能OSPF带外同步能力。
enable out-of-band-resynchronization
缺省情况下,OSPF带外同步能力处于关闭状态。
(5) 使能OSPF协议的非IETF标准GR能力。
graceful-restart [ nonstandard ] [ global | planned-only ] *
缺省情况下,OSPF协议的非IETF标准GR能力处于关闭状态。
(6) (可选)配置OSPF协议的GR重启间隔时间。
graceful-restart interval interval
缺省情况下,OSPF协议的GR重启间隔时间为120秒。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 使能Opaque LSA发布接收能力。
opaque-capability enable
缺省情况下,OSPF的Opaque LSA发布接收能力处于开启状态。
(4) 使能GR Helper能力。
graceful-restart helper enable [ planned-only ]
缺省情况下,OSPF的GR Helper能力处于开启状态。
(5) (可选)配置GR Helper 严格检查LSA能力。
graceful-restart helper strict-lsa-checking
缺省情况下,OSPF协议的GR Helper严格LSA检查能力处于关闭状态。
执行本配置后,当检查到GR Helper设备的LSA发生变化时,Helper设备退出GR Helper模式。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 使能OSPF本地链路信令能力。
enable link-local-signaling
缺省情况下,OSPF本地链路信令能力处于关闭状态。
(4) 使能OSPF带外同步能力。
enable out-of-band-resynchronization
缺省情况下,OSPF带外同步能力处于关闭状态。
(5) 使能GR Helper能力。
graceful-restart helper enable
缺省情况下,OSPF的GR Helper能力处于开启状态。
(6) (可选)配置GR Helper 严格检查LSA能力。
graceful-restart helper strict-lsa-checking
缺省情况下,OSPF协议的GR Helper严格LSA检查能力处于关闭状态。
执行本配置后,当检查到GR Helper设备的LSA发生变化时,Helper设备退出GR Helper模式。
设备进行主备倒换或者进行如下操作均可以以GR方式重启OSPF进程。
请在用户视图下执行本命令,以GR方式重启OSPF进程。
reset ospf [ process-id ] process graceful-restart
OSPF周期性的向邻居发送Hello报文,如果在设定的时间内没有收到对方发送来的Hello报文,则本地路由器会认为对方路由器无效。这种故障检测所需时间比较长,较长的检测时间会导致数据丢失,无法满足高可靠性需求。
为了解决上述问题,配置OSPF与BFD(Bidirectional Forwarding Detection,双向转发检测)联动功能,可以快速检测链路的状态,提高链路状态变化时OSPF协议的收敛速度。关于BFD的介绍和基本功能配置,请参见“可靠性配置指导”中的“BFD”。
· control报文双向检测:需要建立OSPF邻居的两端设备均支持BFD配置。
interface interface-type interface-number
建议配置本命令,且配置的源IP地址不属于该设备任何一个接口所在网段,以避免对端发送大量的ICMP重定向报文造成网络拥塞。
interface interface-type interface-number
OSPF FRR(Fast Reroute,快速重路由)使用链路状态数据库预先计算出备份路径或使用路由策略指定备份路径,并将备份路径保存到FIB表中,当主用路径发生故障时,可以快速切换到备份路径,从而降低路由收敛所需时间。
预先计算出备份路径的FRR技术包括LFA(Loop Free Alternate) FRR和Remote LFA(Remote Loop Free Alternate) FRR:
· LFA:以可提供备份链路的邻居为根节点,利用SPF算法计算出到目的节点的最短路径树。然后,按照LFA算法计算出一条开销最小且无环的备份链路。
· Remote LFA:根据保护路径计算PQ节点,并在源节点与PQ节点之间建立LSP形成备份路径保护。当主用链路发生故障时,流量自动切换到备份路径,继续转发,从而提高网络可靠性。
OSPF FRR流量保护类型分为:
· 链路保护:当需要保护的对象是经过特定链路的流量时,流量保护类型为链路保护。
· 节点保护:当需要保护的对象是经过特定设备的流量时,流量保护类型为节点保护。
节点保护优先级高于链路保护。
OSPF快速重路由功能和PIC同时配置时,OSPF快速重路由功能生效。
OSPF FRR配置任务如下:
(1) 配置OSPF备份路径。请至少选择其中一项任务进行配置:
(2) (可选)配置OSPF FRR支持BFD检测功能
¡ 配置OSPF快速重路由支持BFD检测功能(Ctrl方式)
¡ 配置OSPF快速重路由支持BFD检测功能(Echo方式)
当OSPF网络中的链路或某台路由器发生故障时,需要通过故障链路或故障路由器传输才能到达目的地的报文将会丢失,数据流量将会被中断,直到OSPF根据新的拓扑网络路由收敛完毕后,被中断的流量才能恢复正常的传输。
为了尽可能缩短网络故障导致的流量中断时间,网络管理员可以根据需要配置OSPF快速重路由功能。
图1-14 OSPF LFA快速重路由功能示意图
如图1-14所示,通过在Router B上使能快速重路由功能,OSPF按照LFA算法为路由计算备份下一跳,当Router B检测到网络故障时,OSPF会使用事先获取的备份下一跳替换失效下一跳,通过备份下一跳来指导报文的转发,从而大大缩短了流量中断时间。在使用备份下一跳指导报文转发的同时,OSPF会根据变化后的网络拓扑重新计算最短路径,网络收敛完毕后,使用新计算出来的最优路由来指导报文转发。
OSPF快速重路由功能(通过LFA算法选取备份下一跳信息)不能与vlink-peer命令同时使用。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) (可选)配置接口参与LFA计算。
ospf fast-reroute lfa-backup
缺省情况下,接口参与LFA计算,能够被选为备份接口。
(4) 退回系统视图。
quit
(5) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(6) 配置OSPF快速重路由功能(通过LFA算法选取备份下一跳信息)。
fast-reroute lfa [ abr-only ]
缺省情况下,OSPF快速重路由功能处于关闭状态。
abr-only表示仅选取到ABR设备的路由作为备份下一跳。
网络管理员可以通过apply fast-reroute backup-interface命令在路由策略中指定备份下一跳,为符合过滤条件的路由指定备份下一跳,关于apply fast-reroute backup-interface命令以及路由策略的相关配置,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置OSPF快速重路由功能(通过路由策略指定备份下一跳)。
fast-reroute route-policy route-policy-name
缺省情况下,OSPF快速重路由功能处于关闭状态。
OSPF协议的快速重路由特性中,主用链路缺省不使用BFD进行链路故障检测。配置本功能后,将使用BFD进行检测,可以加快OSPF协议的收敛速度。使用control报文双向检测方式时,需要建立OSPF邻居的两端设备均支持BFD配置。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 使能OSPF协议中主用链路的BFD(Ctrl方式)检测功能。
ospf primary-path-detect bfd ctrl
缺省情况下,OSPF协议中主用链路的BFD检测功能(Ctrl方式)处于关闭状态。
OSPF协议的快速重路由特性中,主用链路缺省不使用BFD进行链路故障检测。配置本功能后,将使用BFD进行检测,可以加快OSPF协议的收敛速度。使用echo报文单跳检测方式时,仅需要一端设备支持BFD配置。
(1) 进入系统视图。
system-view
(2) (可选)配置BFD Echo报文源地址。
bfd echo-source-ip ip-address
缺省情况下,未配置BFD Echo报文源地址。
建议配置本命令,且配置的源IP地址不属于该设备任何一个接口所在网段,以避免对端发送大量的ICMP重定向报文造成网络拥塞。
本命令的详细情况请参见“可靠性命令参考”中的“BFD”。
(3) 进入接口视图。
interface interface-type interface-number
(4) 使能OSPF协议中主用链路的BFD(Echo方式)检测功能。
ospf primary-path-detect bfd echo
缺省情况下,OSPF协议中主用链路的BFD(Echo方式)检测功能处于关闭状态。
误码是指通信设备接收到的信号与源信号之间存在比特差错。由于不可避免的线路老化、光路抖动等原因,误码是不能从根本上避免的,当误码积累到一定程度可能导致服务停止或服务等级降低等严重问题。使用本功能可以尽可能减少误码对OSPF网络的影响,具体机制如下:
· 链路的质量等级由GOOD变为LOW时,OSPF将接口开销值调大。
· 链路的质量等级由LOW变为GOOD时,OSPF将接口开销值恢复为调整前的值。
上述机制可以使OSPF选择误码率较小的链路转发流量,从而尽可能减少误码对OSPF网络的影响。
关于误码检测功能的详细介绍,请参见“可靠性配置指导”中的“误码检测”。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置OSPF根据链路质量等级调整接口开销值。
ospf link-quality adjust-cost { cost-offset | max }
缺省情况下,OSPF不会根据链路质量等级调整接口开销值。
从安全性角度来考虑,为了避免路由信息外泄或者OSPF路由器受到恶意攻击,OSPF提供报文验证功能。
OSPF路由器建立邻居关系时,在发送的报文中会携带配置好的口令,接收报文时进行验证,只有通过验证的报文才能接收,否则将不会接收报文,不能正常建立邻居。
如果区域验证和接口验证都进行了配置,以接口验证的配置为准。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 进入OSPF区域视图。
area area-id
(4) 配置OSPF区域的验证模式。请选择其中一项进行配置。
¡ 配置OSPF区域使用HMAC-MD5/HMAC-SHA-256/MD5验证模式。
authentication-mode { hmac-md5 | hmac-sha-256 | md5 } key-id { cipher | plain } string
¡ 配置OSPF区域使用简单验证模式。
authentication-mode simple { cipher | plain } string
¡ 配置OSPF区域使用keychain验证模式。
authentication-mode keychain keychain-name
关于keychain功能的介绍,请参见“安全配置指导”中的“keychain”。
缺省情况下,未配置区域验证模式。
一个区域中所有路由器的验证模式和验证密钥必须一致。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置OSPF接口的验证模式。请选择其中一项进行配置。
¡ 配置OSPF区域使用HMAC-MD5/HMAC-SHA-256/MD5验证模式。
ospf authentication-mode { hmac-md5 | hmac-sha-256 | md5 } key-id { cipher | plain } string
¡ 配置OSPF区域使用简单验证模式。
ospf authentication-mode simple { cipher | plain } string
¡ 配置OSPF区域使用keychain验证模式。
ospf authentication-mode keychain keychain-name
关于keychain功能的介绍,请参见“安全配置指导”中的“keychain”。
缺省情况下,接口不对OSPF报文进行验证。
邻居路由器两端接口的验证模式和验证密钥必须一致。
GTSM(Generalized TTL Security Mechanism,通用TTL安全保护机制)是一种简单易行的、对基于IP协议的上层业务进行保护的安全机制。开启OSPF报文的GTSM功能后,当设备收到来自OSPF普通邻居或虚连接邻居的报文时,会判断报文的TTL是否在255-“hop-count”+1到255之间。如果在,就上送报文;如果不在,则直接丢弃报文。以使设备避免受到CPU利用(CPU-utilization)等类型的攻击(如CPU过载),增强系统的安全性。
开启OSPF GTSM功能时,要求本设备和邻居设备上同时配置本特性,指定的hop-count值可以不同,只要能够满足合法性检查即可。
如果接口上配置了OSPF GTSM功能,接口OSPF GTSM功能的状态以接口的配置为准,不受接口所在区域OSPF GTSM功能的影响。如果接口上未配置OSPF GTSM功能,接口OSPF GTSM功能的状态以区域的配置为准。
OSPF GTSM功能只会对来自OSPF普通邻居和虚连接邻居的报文进行安全检测,不会对来自OSPF伪连接邻居的报文进行安全检测。关于OSPF伪连接的GTSM功能的详细信息,请参见“MPLS配置指导”中的“MPLS L3VPN”。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 进入OSPF区域视图。
area area-id
(4) 开启区域的OSPF GTSM功能。
ttl-security [ hops hop-count ]
缺省情况下,区域的OSPF GTSM功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置接口的OSPF GTSM功能。
¡ 开启接口的OSPF GTSM功能。
ospf ttl-security [ hops hop-count ]
¡ 关闭接口的OSPF GTSM功能。
ospf ttl-security disable
区域OSPF GTSM功能处于开启状态时,如该区域内某个接口的邻居不支持GTSM功能,需要关闭该接口的OSPF GTSM功能。
缺省情况下,接口的OSPF GTSM功能与其所在区域OSPF GTSM功能的状态保持一致。
打开邻居状态变化的输出开关后,OSPF邻居状态变化时会生成日志信息发送到设备的信息中心,通过设置信息中心的参数,最终决定日志信息的输出规则(即是否允许输出以及输出方向)。(有关信息中心参数的配置请参见“设备管理配置指导”中的“信息中心”。)
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 打开邻居状态变化的输出开关。
log-peer-change
缺省情况下,邻居状态变化的输出开关处于打开状态。
OSPF的日志信息包括路由计算、邻居、路由、LSA老化、生成和接收LSA的日志信息。
(1) 进入系统视图。
system-view
(2) 进入OSPF视图。
ospf [process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(3) 配置OSPF的日志功能。
event-log { hello { received [ abnormal | dropped ] | sent [ abnormal | failed ] } | lsa-flush | peer | route | spf } size count
event-log lsa-history { asbr | ase | include-duplicate | link-state-id | network | nssa | opaque-area | opaque-as | opaque-link | originate-router advertising-router-id | router | size count | summary | verbose } *
缺省情况下,设备记录所有生成和接收LSA的日志信息。记录接收Hello报文、接收异常Hello报文、丢弃接收到的Hello报文、发送Hello报文、发送异常Hello报文以及发送失败的Hello报文、LSA老化、邻居状态变化、路由计算的日志信息最大个数为100。
配置OSPF进程绑定MIB功能后,可以通过网管软件对指定的OSPF进程进行管理。
开启OSPF模块的告警功能后,该模块会生成告警信息,用于报告该模块的重要事件。生成的告警信息将发送到设备的SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。(有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。)
通过调整OSPF在指定时间间隔内允许输出的告警信息条数,可以避免网络出现大量告警信息时对资源的消耗。
(1) 进入系统视图。
system-view
(2) 配置OSPF进程绑定公有MIB。
ospf mib-binding process-id
缺省情况下,MIB绑定在进程号最小的OSPF进程上。
(3) 开启OSPF的告警功能。
snmp-agent trap enable ospf [ authentication-failure | bad-packet | config-error | grhelper-status-change | grrestarter-status-change | if-state-change | lsa-maxage | lsa-originate | lsdb-approaching-overflow | lsdb-overflow | neighbor-state-change | nssatranslator-status-change | retransmit | virt-authentication-failure | virt-bad-packet | virt-config-error | virt-retransmit | virtgrhelper-status-change | virtif-state-change | virtneighbor-state-change ] *
缺省情况下,OSPF的告警功能处于开启状态。
(4) 进入OSPF视图。
ospf [ process-id | router-id { auto-select | router-id } | vpn-instance vpn-instance-name ] *
(5) 配置OSPF在指定时间间隔内允许输出的告警信息条数。
snmp trap rate-limit interval trap-interval count trap-number
缺省情况下,OSPF在10秒内允许输出7条告警信息。
OSPF会对邻居关系断开的故障检测信息进行记录,通过本功能可以设置记录故障检测信息的最大条数。
(1) 进入系统视图。
system-view
(2) 配置OSPF记录邻居关系断开的故障检测信息的最大个数。
ospf troubleshooting max-number number
缺省情况下,OSPF记录邻居关系断开的故障检测信息的最大个数为100。
可在任意视图下执行以下命令:
· 显示OSPF的进程信息。
display ospf [ process-id ] [ verbose ]
· 显示OSPF ABR及ASBR信息。
display ospf [ process-id ] abr-asbr [ verbose ]
· 显示Router ID到主机名称的映射关系表。
display ospf [ process-id ] hostname-table
· 显示OSPF接口信息。
display ospf [ process-id ] interface [ interface-type interface-number | verbose ]
· 显示接口发送Hello报文的信息。
display ospf [ process-id ] interface [ interface-type interface-number ] hello
· 显示OSPF的LSDB信息。
display ospf [ process-id ] lsdb [ brief | originate-router advertising-router-id | self-originate ] [ age { max-value max-age-value | min-value min-age-value } * ] [ resolve-hostname ]
display ospf [ process-id ] lsdb hostname host-name [ age { max-value max-age-value | min-value min-age-value } * ]
display ospf [ process-id ] lsdb { ase | opaque-as } [ link-state-id ] [ originate-router advertising-router-id | self-originate ] [ age { max-value max-age-value | min-value min-age-value } * ] [ resolve-hostname ]
display ospf [ process-id ] lsdb { ase | opaque-as } [ link-state-id ] hostname host-name [ age { max-value max-age-value | min-value min-age-value } * ]
display ospf [ process-id ] [ area area-id ] lsdb { asbr | network | nssa | opaque-area | opaque-link | router | summary } [ link-state-id ] [ originate-router advertising-router-id | self-originate ] [ age { max-value max-age-value | min-value min-age-value } * ] [ resolve-hostname ]
display ospf [ process-id ] [ area area-id ] lsdb { asbr | network | nssa | opaque-area | opaque-link | router | summary } [ link-state-id ] hostname host-name [ age { max-value max-age-value | min-value min-age-value } * ]
· 显示进程中的下一跳信息。
display ospf [ process-id ] nexthop
· 显示OSPF邻居的信息。
display ospf [ process-id ] peer [ hello | verbose ] [ interface-type interface-number ] [ [ neighbor-id ] [ resolve-hostname ] | hostname host-name ]
· 显示OSPF路由表的信息。
display ospf [ process-id ] routing [ ip-address { mask-length | mask } ] [ interface interface-type interface-number ] [ nexthop nexthop-address ] [ verbose ]
· 显示OSPF区域的最短路径树信息。
display ospf [ process-id ] [ area area-id ] spf-tree [ verbose ]
· 显示全局Router ID。
display router id [ vpn-instance vpn-instance-name ]
可在任意视图下执行以下命令,显示OSPF请求列表。
display ospf [ process-id ] request-queue [ interface-type interface-number ] [ neighbor-id ]
可在任意视图下执行以下命令,显示OSPF重传列表。
display ospf [ process-id ] retrans-queue [ interface-type interface-number ] [ neighbor-id ]
可在任意视图下执行以下命令,显示OSPF虚连接信息。
display ospf [ process-id ] vlink
可在任意视图下执行以下命令:
· 显示区域中FRR备份下一跳候选列表。
display ospf [ process-id ] [ area area-id ] fast-reroute lfa-candidate
· 显示OSPF进程的GR状态信息。
display ospf [ process-id ] graceful-restart [ verbose ]
可在任意视图下执行以下命令:
· 显示OSPF的全局统计信息。
display ospf global-statistics [ public | vpn-instance vpn-instance-name ]
· 显示OSPF各区域邻居的统计信息。
display ospf [ process-id ] peer statistics
· 显示OSPF的统计信息。
display ospf [ process-id ] statistics [ error | packet [ hello | interface-type interface-number ] ]
请在用户视图下执行以下命令,清除OSPF的统计信息。
reset ospf [ process-id ] statistics
可在任意视图下执行以下命令,显示OSPF邻居关系断开的故障检测信息。
display ospf troubleshooting
请在用户视图下执行以下命令,清除OSPF邻居关系断开的故障检测信息。
reset ospf troubleshooting
用户可以对OSPF区域间的路由或对引入的外部路由信息进行聚合。执行本节的命令可查看聚合路由的信息。
可在任意视图下执行以下命令:
· 显示OSPF的ABR聚合信息。
display ospf [ process-id ] [ area area-id ] abr-summary [ ip-address { mask-length | mask } ] [ verbose ]
· 显示OSPF的ASBR聚合信息。
display ospf [ process-id ] asbr-summary [ ip-address { mask-length | mask } ]
可在任意视图下执行以下命令,显示GTSM丢弃报文数量的统计信息。关于以下命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP高级配置”。
display ttl-security statistics [ slot slot-number ]
请在用户视图下执行以下命令,清除GTSM丢弃报文数量的统计信息。关于以下命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP高级配置”。
reset ttl-security statistics [ slot slot-number ]
可在任意视图下执行以下命令,显示OSPF的日志信息。
display ospf [ process-id ] event-log { lsa-flush | lsa-history [ verbose ] | peer [ neighbor-id ] [ slot slot-number ] | route | spf }
请在用户视图下执行以下命令,清除OSPF的日志信息。
reset ospf [ process-id ] event-log [ lsa-flush | lsa-history | peer [ slot slot-number ] | route | spf ]
可在任意视图下执行以下命令,显示OSPF接收或发送Hello报文的日志信息。
display ospf [ process-id ] event-log hello { received [ abnormal | dropped ] | sent } [ neighbor-id ] [ slot slot-number ]
display ospf [ process-id ] event-log hello sent { abnormal | failed } [ neighbor-address ] [ slot slot-number ]
请在用户视图下执行以下命令,清除OSPF接收或发送Hello报文的日志信息。
reset ospf [ process-id ] event-log hello { received [ abnormal | dropped ] | sent [ abnormal | failed ] } [ slot slot-number ]
请在用户视图下执行以下命令,重启OSPF进程。
reset ospf [ process-id ] process [ graceful-restart ]
请在用户视图下执行以下命令,重新向OSPF引入外部路由。
reset ospf [ process-id ] redistribution
· 所有的交换机都运行OSPF,并将整个自治系统划分为3个区域。
· 其中Switch A和Switch B作为ABR来转发区域之间的路由。
· 配置完成后,每台交换机都应学到AS内的到所有网段的路由。
图1-15 OSPF基本功能配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本配置
# 配置Switch A。
<SwitchA> system-view
[SwitchA] router id 10.2.1.1
[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] router id 10.3.1.1
[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] router id 10.4.1.1
[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] router id 10.5.1.1
[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
# 查看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
Options is 0x02 (-|-|-|-|-|-|E|-)
Dead timer due in 37 sec
Neighbor is up for 06:03:59
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
BFD status: Disabled
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
Options is 0x02 (-|-|-|-|-|-|E|-)
Dead timer due in 32 sec
Neighbor is up for 06:03:12
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
BFD status: Disabled
# 查看Switch A的OSPF路由信息。
[SwitchA] display ospf routing
OSPF Process 1 with Router ID 10.2.1.1
Routing Table
Topology base (MTID 0)
Routing for network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 1 Transit 10.2.1.1 10.2.1.1 0.0.0.1
10.3.1.0/24 2 Inter 10.1.1.2 10.3.1.1 0.0.0.0
10.4.1.0/24 2 Stub 10.2.1.2 10.4.1.1 0.0.0.1
10.5.1.0/24 3 Inter 10.1.1.2 10.3.1.1 0.0.0.0
10.1.1.0/24 1 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 D的OSPF路由信息。
[SwitchD] display ospf routing
OSPF Process 1 with Router ID 10.5.1.1
Routing Table
Topology base (MTID 0)
Routing for network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 3 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.3.1.0/24 1 Transit 10.3.1.2 10.3.1.1 0.0.0.2
10.4.1.0/24 4 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.5.1.0/24 1 Stub 10.5.1.1 10.5.1.1 0.0.0.2
10.1.1.0/24 2 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 (10.4.1.1): 56 data bytes, press CTRL+C to break
56 bytes from 10.4.1.1: icmp_seq=0 ttl=253 time=1.549 ms
56 bytes from 10.4.1.1: icmp_seq=1 ttl=253 time=1.539 ms
56 bytes from 10.4.1.1: icmp_seq=2 ttl=253 time=0.779 ms
56 bytes from 10.4.1.1: icmp_seq=3 ttl=253 time=1.702 ms
56 bytes from 10.4.1.1: icmp_seq=4 ttl=253 time=1.471 ms
--- Ping statistics for 10.4.1.1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.779/1.408/1.702/0.323 ms
· 所有的交换机都运行OSPF,整个自治系统划分为3个区域。
· 其中Switch A和Switch B作为ABR来转发区域之间的路由。
· 在Switch C上配置为ASBR引入外部路由(静态路由),且路由信息可正确的在AS内传播。
图1-16 OSPF引入自治系统外部路由配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF(同前例“1.21.1 OSPF基本功能配置举例”)
(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
# 查看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
Topology base (MTID 0)
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 Table
Topology base (MTID 0)
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
· Switch A和Switch B位于AS 200内,AS 200内使用OSPF作为IGP协议。
· Switch C、Switch D和Switch E位于AS 100内,AS 100内使用OSPF作为IGP协议。
· Switch B和Switch C之间建立EBGP连接,配置BGP引入OSPF和直连路由,配置OSPF进程引入BGP路由。
· 为了减小Switch A的路由表规模,在Switch B上配置路由聚合,只发布聚合后的路由10.0.0.0/8。
图1-17 OSPF发布聚合路由配置组网图
(1) 配置接口的IP地址(略)
(2) 配置OSPF
# 配置Switch A。
<SwitchA> system-view
[SwitchA] router id 11.2.1.2
[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] router id 11.2.1.1
[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] router id 11.1.1.2
[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] router id 10.3.1.1
[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
[SwitchD-ospf-1] quit
# 配置Switch E。
<SwitchE> system-view
[SwitchE] router id 10.4.1.1
[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-default] peer 11.1.1.2 as-number 100
[SwitchB-bgp-default] address-family ipv4 unicast
[SwitchB-bgp-default-ipv4] peer 11.1.1.2 enable
[SwitchB-bgp-default-ipv4] import-route ospf
[SwitchB-bgp-default-ipv4] import-route direct
[SwitchB-bgp-default-ipv4] quit
[SwitchB-bgp-default] quit
# 配置Switch C。
[SwitchC] bgp 100
[SwitchC-bgp-default] peer 11.1.1.1 as-number 200
[SwitchC-bgp-default] address-family ipv4 unicast
[SwitchC-bgp-default] peer 11.1.1.1 enable
[SwitchC-bgp-default-ipv4] import-route ospf
[SwitchC-bgp-default-ipv4] import-route direct
[SwitchC-bgp-default-ipv4] quit
[SwitchC-bgp-default] 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
Destinations : 16 Routes : 16
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
10.1.1.0/24 O_ASE2 150 1 11.2.1.1 Vlan100
10.2.1.0/24 O_ASE2 150 1 11.2.1.1 Vlan100
10.3.1.0/24 O_ASE2 150 1 11.2.1.1 Vlan100
10.4.1.0/24 O_ASE2 150 1 11.2.1.1 Vlan100
11.2.1.0/24 Direct 0 0 11.2.1.2 Vlan100
11.2.1.0/32 Direct 0 0 11.2.1.2 Vlan100
11.2.1.2/32 Direct 0 0 127.0.0.1 InLoop0
11.2.1.255/32 Direct 0 0 11.2.1.2 Vlan100
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0
224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0
255.255.255.255/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
Destinations : 13 Routes : 13
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
10.0.0.0/8 O_ASE2 150 1 11.2.1.1 Vlan100
11.2.1.0/24 Direct 0 0 11.2.1.2 Vlan100
11.2.1.0/32 Direct 0 0 11.2.1.2 Vlan100
11.2.1.2/32 Direct 0 0 127.0.0.1 InLoop0
11.2.1.255/32 Direct 0 0 11.2.1.2 Vlan100
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0
224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0
255.255.255.255/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。
· 所有的交换机都运行OSPF,整个自治系统划分为3个区域。
· 其中Switch A和Switch B作为ABR来转发区域之间的路由,Switch D作为ASBR引入了外部路由(静态路由)。
· 要求将Area1配置为Stub区域,减少通告到此区域内的LSA数量,但不影响路由的可达性。
图1-18 OSPF Stub区域配置组网图
(1) 配置接口的IP地址(略)
(2) 配置OSPF(同前例“1.21.1 OSPF基本功能配置举例”)
(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
Topology base (MTID 0)
Type Destination Area Cost Nexthop RtType
Intra 10.2.1.1 0.0.0.1 3 10.2.1.1 ABR
Inter 10.5.1.1 0.0.0.1 7 10.2.1.1 ASBR
# 查看Switch C的OSPF路由表,可以看到路由表中存在AS外部的路由。
<SwitchC> display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Table
Topology base (MTID 0)
Routing for network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 3 Transit 0.0.0.0 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
(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路由表,已经看不到AS外部的路由,取而代之的是一条缺省路由。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Table
Topology base (MTID 0)
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 0.0.0.0 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
# 配置Area1为Totally Stub区域。
[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
[SwitchA-ospf-1] quit
# 查看Switch C的OSPF路由表,可以看到路由表项进一步减少,只保留了一条通往区域外部的缺省路由。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Table
Topology base (MTID 0)
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 0.0.0.0 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
· 所有的交换机都运行OSPF,整个自治系统划分为3个区域。
· 其中Switch A和Switch B作为ABR来转发区域之间的路由。
· 要求将Area1配置为NSSA区域,同时将Switch C配置为ASBR引入外部路由(静态路由),且路由信息可正确的在AS内传播。
图1-19 OSPF NSSA区域配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF(同前例“1.21.1 OSPF基本功能配置举例”)
(3) 配置Area1区域为NSSA区域
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ospf
[SwitchA-ospf-1] area 1
[SwitchA-ospf-1-area-0.0.0.1] nssa
[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
# 查看Switch C的OSPF路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Table
Topology base (MTID 0)
Routing for network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 3 Transit 10.2.1.2 10.4.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: 5
Intra area: 2 Inter area: 3 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路由表,可以看到NSSA区域引入了一条AS外部路由。
<SwitchD> display ospf routing
Topology base (MTID 0)
OSPF Process 1 with Router ID 10.5.1.1
Routing Table
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 A、Switch B、Switch C、Switch D在同一网段,运行OSPF协议后Switch D为DR,Switch C为BDR;
· 改变交换机接口的DR优先级使Switch A成为DR,Switch C成为BDR。
图1-20 OSPF的DR选择配置组网图
网络中DR/BDR已经存在的情况下,接口上的路由器优先级的配置并不会立即生效。
当路由器的邻居关系稳定后:
· 如果邻居的状态是Full,这说明它和邻居之间形成了邻接关系。
· 如果邻居的状态是2-Way,则说明它们都不是DR或BDR,两者之间不需要交换LSA。
如果OSPF接口的状态是DROther,则说明它既不是DR,也不是BDR。
(1) 配置各接口的IP地址(略)
(2) 分别在Switch A、Switch B、Switch C和Switch D上配置OSPF基本功能(请参见“1.21.1 OSPF基本功能配置举例”)
(3) 运行OSPF后Switch D为DR,可在Switch A上通过display ospf peer verbose命令查看其邻居信息。
[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
Options is 0x02 (-|-|-|-|-|-|E|-)
Dead timer due in 38 sec
Neighbor is up for 00:01:31
Authentication Sequence: [ 0 ]
Neighbor state change count: 6
BFD status: Disabled
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
Options is 0x02 (-|-|-|-|-|-|E|-)
Dead timer due in 31 sec
Neighbor is up for 00:01:28
Authentication Sequence: [ 0 ]
Neighbor state change count: 6
BFD status: Disabled
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
Options is 0x02 (-|-|-|-|-|-|E|-)
Dead timer due in 31 sec
Neighbor is up for 00:01:28
Authentication Sequence: [ 0 ]
Neighbor state change count: 6
BFD status: Disabled
可以看到Switch D为DR,Switch C为BDR。
(4) 配置接口的DR优先级
# 配置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-interface1] 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
Options is 0x02 (-|-|-|-|-|-|E|-)
Dead timer due in 31 sec
Neighbor is up for 00:11:17
Authentication Sequence: [ 0 ]
Neighbor state change count: 6
BFD status: Disabled
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
Options is 0x02 (-|-|-|-|-|-|E|-)
Dead timer due in 35 sec
Neighbor is up for 00:11:19
Authentication Sequence: [ 0 ]
Neighbor state change count: 6
BFD status: Disabled
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
Options is 0x02 (-|-|-|-|-|-|E|-)
Dead timer due in 33 sec
Neighbor is up for 00:11:15
Authentication Sequence: [ 0 ]
Neighbor state change count: 6
BFD status: Disabled
可以看到,网络中DR/BDR并没有改变。
(5) 同时重启Switch A、Switch B、Switch C和Switch D上的OSPF进程
# 重启Switch A的进程。
<SwitchA> reset ospf 1 process
Warning : Reset OSPF process? [Y/N]:y
# 重启Switch B的进程。
<SwitchB> reset ospf 1 process
Warning : Reset OSPF process? [Y/N]:y
# 重启Switch C的进程。
<SwitchC> reset ospf 1 process
Warning : Reset OSPF process? [Y/N]:y
# 重启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
Options is 0x02 (-|-|-|-|-|-|E|-)
Dead timer due in 39 sec
Neighbor is up for 00:01:40
Authentication Sequence: [ 0 ]
Neighbor state change count: 6
BFD status: Disabled
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
Options is 0x02 (-|-|-|-|-|-|E|-)
Dead timer due in 35 sec
Neighbor is up for 00:01:44
Authentication Sequence: [ 0 ]
Neighbor state change count: 6
BFD status: Disabled
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
Options is 0x02 (-|-|-|-|-|-|E|-)
Dead timer due in 39 sec
Neighbor is up for 00:01:41
Authentication Sequence: [ 0 ]
Neighbor state change count: 6
BFD status: Disabled
可以看到Switch A成为DR,Switch C为BDR。
# 查看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
· Area 2与Area 0没有直接相连。Area 1被用作传输区域(Transit Area)来连接Area 2和Area 0。Switch B和Switch C之间配置一条虚连接。
· 配置完成后,Switch B能够学到Area 2中的路由。
图1-21 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
[SwitchA-ospf-1] 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
[SwitchD-ospf-1] quit
# 查看Switch B的OSPF路由表,由于Area 0没有与Area 2直接相连,所以Switch B的路由表中没有Area 2的路由。
[SwitchB] display ospf routing
OSPF Process 1 with Router ID 2.2.2.2
Routing Table
Topology base (MTID 0)
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
(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
[SwitchC-ospf-1] quit
# 查看Switch B的OSPF路由表。
[SwitchB] display ospf routing
OSPF Process 1 with Router ID 2.2.2.2
Routing Table
Topology base (MTID 0)
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。
· Switch A、Switch B和Switch C既属于同一自治系统,也属于同一OSPF域,通过OSPF协议实现网络互连,并提供GR机制。
· Switch A作为非IETF标准GR Restarter,Switch B和Switch C作为GR Helper并且通过GR机制与Switch A保持带外同步。
图1-22 OSPF GR配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本功能
# 配置Switch A。
<SwitchA> system-view
[SwitchA] router id 1.1.1.1
[SwitchA] ospf 100
[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] quit
[SwitchA-ospf-100] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] router id 2.2.2.2
[SwitchB] ospf 100
[SwitchB-ospf-100] area 0
[SwitchB-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[SwitchB-ospf-100-area-0.0.0.0] quit
[SwitchB-ospf-100] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] router id 3.3.3.3
[SwitchC] ospf 100
[SwitchC-ospf-100] area 0
[SwitchC-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[SwitchC-ospf-100-area-0.0.0.0] quit
[SwitchC-ospf-100] quit
(3) 配置OSPF GR
# 配置Switch A作为非IETF标准GR Restarter,即使能OSPF进程100的本地链路信令能力、OSPF带外同步能力和非IETF标准GR能力。
[SwitchA-ospf-100] enable link-local-signaling
[SwitchA-ospf-100] enable out-of-band-resynchronization
[SwitchA-ospf-100] graceful-restart
[SwitchA-ospf-100] quit
# 配置Switch B作为GR Helper,即使能OSPF进程100的本地链路信令能力和OSPF带外同步能力。
[SwitchB-ospf-100] enable link-local-signaling
[SwitchB-ospf-100] enable out-of-band-resynchronization
# 配置Switch C作为GR Helper,即使能OSPF进程100的本地链路信令能力和OSPF带外同步能力。
[SwitchC-ospf-100] enable link-local-signaling
[SwitchC-ospf-100] enable out-of-band-resynchronization
# 打开Switch A的OSPF平滑启动事件调试信息开关。在Switch A上以GR方式重启OSPF进程。
<SwitchA> debugging ospf event graceful-restart
<SwitchA> terminal monitor
<SwitchA> terminal logging level 7
<SwitchA> reset ospf 100 process graceful-restart
Reset OSPF process? [Y/N]:y
%Oct 21 15:29:28:727 2019 SwitchA OSPF/5/OSPF_NBR_CHG: OSPF 100 Neighbor 192.1.1.2(Vlan-interface100) from Full to Down.
%Oct 21 15:29:28:729 2019 SwitchA OSPF/5/OSPF_NBR_CHG: OSPF 100 Neighbor 192.1.1.3(Vlan-interface100) from Full to Down.
*Oct 21 15:29:28:735 2019 SwitchA OSPF/7/DEBUG:
OSPF 100 nonstandard GR Started for OSPF Router
*Oct 21 15:29:28:735 2019 SwitchA OSPF/7/DEBUG:
OSPF 100 created GR wait timer,timeout interval is 40(s).
*Oct 21 15:29:28:735 2019 SwitchA OSPF/7/DEBUG:
OSPF 100 created GR Interval timer,timeout interval is 120(s).
*Oct 21 15:29:28:758 2019 SwitchA OSPF/7/DEBUG:
OSPF 100 created OOB Progress timer for neighbor 192.1.1.3.
*Oct 21 15:29:28:766 2019 SwitchA OSPF/7/DEBUG:
OSPF 100 created OOB Progress timer for neighbor 192.1.1.2.
%Oct 21 15:29:29:902 2019 SwitchA OSPF/5/OSPF_NBR_CHG: OSPF 100 Neighbor 192.1.1.2(Vlan-interface100) from Loading to Full.
*Oct 21 15:29:29:902 2019 SwitchA OSPF/7/DEBUG:
OSPF 100 deleted OOB Progress timer for neighbor 192.1.1.2.
%Oct 21 15:29:30:897 2019 SwitchA OSPF/5/OSPF_NBR_CHG: OSPF 100 Neighbor 192.1.1.3(Vlan-interface100) from Loading to Full.
*Oct 21 15:29:30:897 2019 SwitchA OSPF/7/DEBUG:
OSPF 100 deleted OOB Progress timer for neighbor 192.1.1.3.
*Oct 21 15:29:30:911 2019 SwitchA OSPF/7/DEBUG:
OSPF GR: Process 100 Exit Restart,Reason : DR or BDR change,for neighbor : 192.1.1.3.
*Oct 21 15:29:30:911 2019 SwitchA OSPF/7/DEBUG:
OSPF 100 deleted GR Interval timer.
*Oct 21 15:29:30:912 2019 SwitchA OSPF/7/DEBUG:
OSPF 100 deleted GR wait timer.
%Oct 21 15:29:30:920 2019 SwitchA OSPF/5/OSPF_NBR_CHG: OSPF 100 Neighbor 192.1.1.2(Vlan-interface100) from Full to Down.
%Oct 21 15:29:30:921 2019 SwitchA OSPF/5/OSPF_NBR_CHG: OSPF 100 Neighbor 192.1.1.3(Vlan-interface100) from Full to Down.
%Oct 21 15:29:33:815 2019 SwitchA OSPF/5/OSPF_NBR_CHG: OSPF 100 Neighbor 192.1.1.3(Vlan-interface100) from Loading to Full.
%Oct 21 15:29:35:578 2019 SwitchA OSPF/5/OSPF_NBR_CHG: OSPF 100 Neighbor 192.1.1.2(Vlan-interface100) from Loading to Full.
· Switch A、Switch B和Switch C上运行OSPF,网络层相互可达。
· 当Switch A和Switch B通过L2 Switch通信的链路出现故障时BFD能够快速感知通告OSPF协议,并且切换到Switch C进行通信。
|
|
||||
|
|
||||
|
|
|
|||
|
|
|
|
[SwitchA-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.0.255
[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] network 121.1.1.1 0.0.0.0
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1-area-0.0.0.0] network 192.168.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.1 0.0.0.0
[SwitchB-ospf-1-area-0.0.0.0] quit
[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 13.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
# 在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
# 在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
[SwitchB-Vlan-interface10] quit
下面以Switch A为例,Switch B和Switch A类似,不再赘述。
Total sessions: 1 Up sessions: 1 Init mode: Active
IPv4 session working in control mode:
LD/RD SourceAddr DestAddr State Holdtime Interface
3/1 192.168.0.102 192.168.0.100 Up 1700ms Vlan10
# 在Switch A上查看120.1.1.1/32的路由信息,可以看出Switch A和Switch B是通过L2 Switch进行通信的。
<SwitchA> display ip routing-table 120.1.1.1 verbose
OrigTblID: 0x0 OrigVrf: default-vrf
AttrID: 0xffffffff Neighbor: 0.0.0.0
Flags: 0x1008c OrigNextHop: 192.168.0.100
Label: NULL RealNextHop: 192.168.0.100
SRLabel: NULL Interface: Vlan-interface10
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: Vlan-interface10
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
Exp: N/A
VpnPeerId: N/A Dscp: N/A
SID: N/A OrigLinkID: 0x0
BkSID: N/A RealLinkID: 0x0
CommBlockLen: 0
当Switch A和Switch B通过L2 Switch通信的链路出现故障时:
# 在Switch A上查看120.1.1.1/32的路由信息,可以看出Switch A和Switch B已经切换到Switch C进行通信。
<SwitchA> display ip routing-table 120.1.1.1 verbose
OrigTblID: 0x0 OrigVrf: default-vrf
AttrID: 0xffffffff Neighbor: 0.0.0.0
Flags: 0x1008c OrigNextHop: 10.1.1.100
Label: NULL RealNextHop: 10.1.1.100
SRLabel: NULL Interface: Vlan-interface11
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: Vlan-interface11
BkTunnel ID: Invalid BkIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
Exp: N/A
VpnPeerId: N/A Dscp: N/A
SID: N/A OrigLinkID: 0x0
BkSID: N/A RealLinkID: 0x0
如图1-24所示,Switch A、Switch B和Switch C属于同一OSPF区域,通过OSPF协议实现网络互连。要求当Switch A和Switch B之间的链路出现故障时,业务可以快速切换到链路B上。
图1-24 OSPF快速重路由配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
12.12.12.1/24 |
Switch B |
Vlan-int101 |
24.24.24.4/24 |
|
Vlan-int200 |
13.13.13.1/24 |
|
Vlan-int200 |
13.13.13.2/24 |
|
Loop0 |
1.1.1.1/32 |
|
Loop0 |
4.4.4.4/32 |
Switch C |
Vlan-int100 |
12.12.12.2/24 |
|
|
|
|
Vlan-int101 |
24.24.24.2/24 |
|
|
|
(1) 配置各交换机接口的IP地址和OSPF协议
请按照上面组网图配置各接口的IP地址和子网掩码,具体配置过程略。
配置各交换机之间采用OSPF协议进行互连,确保Switch A、Switch B和Switch C之间能够在网络层互通,并且各交换机之间能够借助OSPF协议实现动态路由更新。
具体配置过程略。
(2) 配置OSPF快速重路由
OSPF支持快速重路由配置有两种配置方法,可以任选一种。
方法一:使能Switch A和Switch B的OSPF快速重路由功能(通过LFA算法选取备份下一跳信息)
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ospf 1
[SwitchA-ospf-1] fast-reroute lfa
[SwitchA-ospf-1] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf 1
[SwitchB-ospf-1] fast-reroute lfa
[SwitchB-ospf-1] quit
方法二:使能Switch A和Switch B的OSPF快速重路由功能(通过路由策略指定备份下一跳)
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ip prefix-list abc index 10 permit 4.4.4.4 32
[SwitchA] route-policy frr permit node 10
[SwitchA-route-policy-frr-10] if-match ip address prefix-list abc
[SwitchA-route-policy-frr-10] apply fast-reroute backup-interface vlan-interface 100 backup-nexthop 12.12.12.2
[SwitchA-route-policy-frr-10] quit
[SwitchA] ospf 1
[SwitchA-ospf-1] fast-reroute route-policy frr
[SwitchA-ospf-1] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ip prefix-list abc index 10 permit 1.1.1.1 32
[SwitchB] route-policy frr permit node 10
[SwitchB-route-policy-frr-10] if-match ip address prefix-list abc
[SwitchB-route-policy-frr-10] apply fast-reroute backup-interface vlan-interface 101 backup-nexthop 24.24.24.2
[SwitchB-route-policy-frr-10] quit
[SwitchB] ospf 1
[SwitchB-ospf-1] fast-reroute route-policy frr
[SwitchB-ospf-1] quit
# 在Switch A上查看4.4.4.4/32网段路由,可以看到备份下一跳信息。
[SwitchA] display ip routing-table 4.4.4.4 verbose
Summary count : 1
Destination: 4.4.4.4/32
Protocol: O_INTRA
Process ID: 1
SubProtID: 0x1 Age: 04h20m37s
Cost: 1 Preference: 10
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NibID: 0x26000002 LastAs: 0
AttrID: 0xffffffff Neighbor: 0.0.0.0
Flags: 0x1008c OrigNextHop: 13.13.13.2
Label: NULL RealNextHop: 13.13.13.2
BkLabel: NULL BkNextHop: 12.12.12.2
SRLabel: NULL Interface: Vlan-interface200
BkSRLabel: NULL BkInterface: Vlan-interface100
Tunnel ID: Invalid IPInterface: Vlan-interface200
BkTunnel ID: Invalid BkIPInterface: Vlan-interface100
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
Exp: N/A
VpnPeerId: N/A Dscp: N/A
SID: N/A OrigLinkID: 0x0
BkSID: N/A RealLinkID: 0x0
CommBlockLen: 0
# 在Switch B上查看1.1.1.1/32网段路由,可以看到备份下一跳信息。
[SwitchB] display ip routing-table 1.1.1.1 verbose
Summary count : 1
Destination: 1.1.1.1/32
Protocol: O_INTRA
Process ID: 1
SubProtID: 0x1 Age: 04h20m37s
Cost: 1 Preference: 10
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NibID: 0x26000002 LastAs: 0
AttrID: 0xffffffff Neighbor: 0.0.0.0
Flags: 0x1008c OrigNextHop: 13.13.13.1
Label: NULL RealNextHop: 13.13.13.1
BkLabel: NULL BkNextHop: 24.24.24.2
SRLabel: NULL Interface: Vlan-interface200
BkSRLabel: NULL BkInterface: Vlan-interface101
Tunnel ID: Invalid IPInterface: Vlan-interface200
BkTunnel ID: Invalid BkIPInterface: Vlan-interface101
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BkColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BkTunnelInterface: N/A
Connector: N/A PathID: 0x0
SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
Exp: N/A
VpnPeerId: N/A Dscp: N/A
SID: N/A OrigLinkID: 0x0
BkSID: N/A RealLinkID: 0x0
CommBlockLen: 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保留在没有任何通知或提示的情况下对资料内容进行修改的权利!