OSPF(Open Shortest Path First,开放式最短路径优先协议)是一种IGP(Interior Gateway Protocol,内部网关协议),应用在AS(Autonomous System,自治系统)内部,使路由器获得远端网络的路由。
在动态路由诞生初期,网络中主要使用的是RIP(Routing Information Protocol,路由信息协议)路由协议。RIP是距离矢量路由协议,存在收敛慢、路由环路、扩展性差和只能应用于简单网络等问题。而OSPF Version 2(以下简称为OSPFv2)是链路状态路由协议(Link-State Routing Protocols),能够有效解决这些问题,因此在中大型网络中,OSPFv2得到广泛使用。
说明
OSPF Version 2应用于IPv4,OSPF Version 3应用于IPv6,协议运行机制和大部分配置都相同。
若无特殊说明,下文以“OSPF”来指代“OSPF Version 2”。
OSPF具备如下特点:
适用范围广:适用于更大规模的网络(最大可支持几百台路由器)。
快速收敛:一旦网络拓扑发生变化,路由器之间能够快速通告信息,更新路由。
无自环:路由器之间仅同步链路状态信息,每台路由器独立计算路由,不会生成自环。
区域划分:将一个大的路由域划分为多个较小的区域,可以节省系统资源和网络带宽,使路由稳定可靠。
路由分类:将路由分为多种类型区别对待,支持灵活的控制策略。
等价路由:支持等价路由。
支持认证:支持报文认证,保障协议交互过程的安全。
组播发送:支持以组播地址发送协议报文,可以避免干扰无关者和节省系统资源。
说明
本章使用“路由器”指支持路由功能的网络设备。这些网络设备可以是三层交换机、路由器、防火墙等。
一个AS中的所有路由器必须相互连接,运行相同的路由协议。因此,AS也被称为路由域(Routing Domain)。
运行OSPF的AS也被称为OSPF路由域,简称OSPF域。
OSPF支持多实例(Instance),每个实例对应一个OSPF进程。一台路由器上可以启用一个OSPF进程,也可以启用多个OSPF进程。每个OSPF进程独立执行OSPF协议,相互隔离。Process ID只有本地意义,不影响相邻接口上的OSPF报文交互。
OSPF域内,使用Router ID唯一标识一台路由器。任意两台路由器的Router ID不能相同。
如果路由器上存在多个OSPF进程,则每个OSPF进程使用一个Router ID。任意两个OSPF进程的Router ID不能相同。
Router ID可以使用手动配置方式或者路由器自动选取方式,为防止不同路由器通过自动选取方式得到的Router ID冲突,建议使用手动配置方式。如果没有手动指定Router ID,自动选取规则如下:
从Lookback接口地址中选取最大的IP地址作为Router ID;
如果没有配置Lookback接口,则从物理接口地址中选取最大的IP地址作为Router ID。
区域(Area)是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。如图1-1所示,OSPF支持将网络拓扑划分为多个区域,有助于缓解大规模网络的计算压力。
区域的边界是路由器,一台路由器可以只属于一个区域,也可以属于多个区域。一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。
OSPF区域有如下分类:
骨干区域(Backbone Area)和常规区域(Normal Area)
区域0为骨干区域,其他区域为常规区域。常规区域必须与骨干区域直接相连。
Stub区域(OSPF末节区域)
配置Stub区域可以减少区域内的LSA数量,Stub区域的ABR(Area Border Router,区域边界路由器)不会传递Type 5 LSA(域外路由),同时向Stub区域通告缺省路由。
Totally Stub区域(完全末节区域)
Totally Stub区域是Stub区域的升级,Totally Stub区域的路由器不会传递Type 3 LSA(域间路由)和Type 5 LSA(域外路由),同时向Stub区域通告缺省路由。
NSSA(Not-So-Stubby Area,次末节区域)
NSSA区域和Stub区域相似,但是允许存在ASBR(Autonomous System Boundary Router,自治系统边界路由器)。ASBR重分发的路由会以Type 7 LSA形式在NSSA区域传递,在ABR上会将Type 7 LSA转换成Type 5 LSA后传递到其他区域。ABR也会向NSSA区域通告缺省路由。
Totally NSSA(Totally Not-So-Stubby Area,完全次末节区域)
Totally NSSA和NSSA的关系与Totally Stub区域和Stub区域的关系类似。Totally NSSA在NSSA的基础上禁止传递Type 3 LSA(域间路由)。
说明
骨干区域不可配置为Stub区域、Totally Stub区域、NSSA和Totally NSSA区域。
Stub区域和Totally Stub区域不能存在ASBR。
Stub区域、Totally Stub区域、NSSA和Totally NSSA区域不能存在虚链路。
在OSPF中定义了几种路由器类型,并为每种类型的路由器赋予不同的职责。
区域内路由器(Internal Router)
该类路由器的所有接口都属于同一个Area。如图1-1中的A、C、F、G、I、M、J、K和L。
ABR
该类路由器用来连接骨干区域和常规区域。ABR同时属于两个以上的区域,其中一个必须是骨干区域。如图1-1中的B、D、E和H。
骨干路由器(Backbone Router)
该类路由器至少有一个接口属于骨干区域。所有的ABR和Area 0的区域内路由器都是骨干路由器。如图1-1中的A、B、C、D、E和H。
ASBR
该类路由器用来与其他AS交换路由信息。ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。如图1-1中的A。
OSPF通过LSA(Link State Advertisement,链路状态通告)来封装对路由信息的描述,并对外发布。常用的LSA类型如表1-1所示:
LSA类型 |
说明 |
---|---|
Router-LSA(Type 1) |
由每个路由器始发,描述了路由器的链路状态和代价,在始发路由器所在区域内传播 |
Network-LSA(Type 2) |
由广播或NBMA类型网络上的DR始发,描述本网段的链路状态,在DR所在区域内传播 |
Network-summary-LSA(Type 3) |
由ABR始发,描述到其它区域的路由,通告给非Totally Stub、NSSA区域 |
ASBR-summary-LSA(Type 4) |
由ABR始发,描述到ASBR的路由,通告给除ASBR所在区域的其他区域 |
AS-external-LSA(Type 5) |
由ASBR始发,描述到AS外部的路由,通告到所有区域(除了Stub、NSSA区域) |
NSSA LSA(Type 7) |
由ASBR始发,描述到AS外部的路由,仅在NSSA区域内传播 |
Opaque LSA(Type 9/Type 10/Type 11) |
Opaque LSA提供用于OSPF的扩展的通用机制,其中: Type9 LSA仅在接口所在网段范围内传播,用于支持GR的Grace LSA就是Type9 LSA的一种 Type10 LSA在区域内传播,用于支持TE的LSA就是Type10 LSA的一种 Type11 LSA在自治域内传播,目前还没有实际应用的例子 |
LSA报文头的格式如下所示:
LSA报文头格式
各区域对不同类型LSA的支持情况如表1-2所示。Stub区域、NSSA区域、Totally Stub区域、Totally NSSA区域作为常规区域的几种特殊形态,有助于减少OSPF区域内LSA传递的数量,可以免除大量的Type 3 LSA和Type 5 LSA在区域内传播,减轻路由器负担,增强OSPF路由稳定性。
区域 |
Type1、2 |
Type 3 |
Type 4 |
Type 5 |
Type 7 |
---|---|---|---|---|---|
非Stub/Totally Stub、NSSA/Totally NSSA区域 |
允许 |
允许 |
允许 |
允许 |
不允许 |
Stub区域 |
允许 |
允许,包括一条缺省路由 |
不允许 |
不允许 |
不允许 |
Totally Stub区域 |
允许 |
只允许一条缺省路由 |
不允许 |
不允许 |
不允许 |
NSSA区域 |
允许 |
允许,包括一条缺省路由 |
允许 |
不允许 |
允许 |
Totally NSSA区域 |
允许 |
只允许一条缺省路由 |
允许 |
不允许 |
允许 |
说明
ABR使用LSA Type 3向Stub/Totally Stub、NSSA/Totally NSSA区域发布一条缺省路由。
ABR将NSSA/Totally NSSA区域内的LSA Type 7转换成LSA Type 5,发布到骨干区域。
OSPF报文被封装在IP报文中,以组播或单播方式发送。当任意网络中运行OSPF进程的接口都属于该组的情况下,运行OSPF的路由器接收所有224.0.0.5的组播数据包;当路由器作为多路访问网络中的DR/BDR时,则使用224.0.0.6作为组播接收地址。
OSPF共有五种报文类型,如表1-3所示。
报文类型 |
说明 |
---|---|
Hello |
周期性发送的Hello报文用来发现OSPF邻居,维持邻接关系 |
DD |
DD(Database Description,数据库描述)报文描述了本地LSDB(Link-State Database,链路状态数据库)的摘要信息,用于在OSPF邻居之间进行数据库同步 |
LSR |
LSR(Link State Request,链路状态请求)报文用于向对方请求所需的LSA。只有在OSPF邻居双方成功交换DD报文后,才会向对方发出LSR报文 |
LSU |
LSU(Link State Update,链路状态更新)报文用于向对方发送其所需要的LSA |
LSAck |
LSAck(Link State Acknowledgment,链路状态应答)报文用于对收到的LSA进行确认 |
OSPF数据报文的格式如下:
OSPF报文格式
OSPF报文格式字段说明
报文字段 |
说明 |
---|---|
Version |
OSPF的版本号。OSPFv2的值为2 |
Type |
OSPF报文的类型: 1:Hello报文 2:DD报文 3:LSR报文 4:LSU报文 5:LSAck报文 |
Packet length |
包括报文头在内的OSPF报文总长度,单位为字节 |
Router ID |
发送该报文的路由器的Router ID |
Area ID |
发送该报文的路由器所在区域 |
Checksum |
除了认证字段的整个报文的校验和 |
AuType |
认证类型: 0:不认证 1:简单认证 2:MD5认证 |
Authentication |
认证类型不同,此字段含义也不同: 不认证:则不对此字段作定义 简单认证:密码信息 MD5认证:包括Key ID、MD5验证数据长度和序列号信息 |
每条OSPF路由前都带有一个标识,用来说明此路由的类型。OSPF路由共有以下6种类型:
O:区域内路由
此类路由描述了如何到达本区域内的目标网络。路由代价=本地到目标网络的代价。
IA:区域间路由
此类路由描述了如何到达其他区域的目标网络。路由代价=本地到目标网络的代价。
E1:第一类外部路由
此类路由描述了如何到达AS以外的目标网络。路由代价=本地到ASBR的代价+ASBR到目标网络的代价。Stub、NSSA区域内的路由器上不存在此类路由。
E2:第二类外部路由
此类路由描述了如何到达AS以外的目标网络。路由代价=ASBR到目标网络的代价。Stub、NSSA区域内的路由器上不存在此类路由。
N1:NSSA区域的第一类外部路由
此类路由仅描述了如何经NSSA区域的ASBR到达AS以外的目标网络。路由代价=本地到ASBR的代价+ASBR到目标网络的代价。仅NSSA区域的路由器上存在此类路由。
N2:NSSA区域的第二类外部路由
此类路由描述了如何经NSSA区域的ASBR到达AS以外的目标网络。路由代价=ASBR到目标网络的代价。仅NSSA区域的路由器上存在此类路由。
说明
E2和N2这两类路由的可信度比较低,OSPF认为从ASBR到自治系统之外的代价远远大于在自治系统之内到达ASBR的代价。所以,计算路由代价时只考虑ASBR到自治系统之外的代价。
将适当的区域设置为Stub/Totally Stub、NSSA/Totally NSSA区域,则区域内路由器的路由表中可以免除大量E1、E2、IA类型的路由。
Stub/NSSA区域中的路由类型
区域 |
区域内路由器的路由表中存在哪些路由 |
---|---|
非Stub/Totally Stub、NSSA/Totally NSSA区域 |
O:到本区域某目标网段的路由 IA:到其他区域某目标网段的路由 E1或E2:经过AS内任意ASBR到AS外部某目标网段的路由、缺省路由 |
Stub区域 |
O:到本区域某目标网段的路由 IA:到其他区域某目标网段的路由、缺省路由 |
Totally Stub区域 |
O:到本区域某目标网段的路由 IA:缺省路由 |
NSSA区域 |
O:到本区域某目标网段的路由 IA:到其他区域某目标网段的路由、缺省路由 N1或N2:经过本区域内的ASBR到AS外部某目标网段的路由、缺省路由 |
Totally NSSA区域 |
O:到本区域某目标网段的路由 IA:缺省路由 N1或N2:经过本区域内的ASBR到AS外部某目标网段的路由、缺省路由 |
OSPF的网络中,邻居设备需要达到邻接状态才能交互链路信息。设备间存在邻居(Neighbors)关系与邻接(Adjacencies)关系。
邻居关系:如果两台路由器之间能够交互Hello报文,并且能够成功协商Hello报文中携带的参数,则二者互为邻居。
邻接关系:当邻居设备成功交换LSA,实现LSDB同步,则邻接关系建立。
OSPF共有8种邻居状态,如表1-6所示。
状态 |
含义 |
---|---|
Down |
第一个OSPF邻居状态,表示邻居失效时间间隔内未收到邻居的Hello报文 |
Attempt |
Attempt状态路由器定期向手工配置的邻居发送Hello报文 Attempt状态只适用于NBMA类型的接口 |
Init |
已经收到了邻居的Hello报文,但是报文中未包含邻居接收路由器Router ID,即对端并没有收到本端发送的Hello报文 |
Two-Way |
互为邻居 收到Hello报文中邻居Router ID字段为自身Router ID双方互相收到了对端发送的Hello报文,建立了邻居关系 此阶段结束后,广播和非广播多路访问将会选取DR和BDR |
Exstart |
协商主/从关系 选择形成邻接的初始序列号 主从关系保证在后续的DD报文交换中能够有序的发送 |
Exchange |
交换DD报文 以检查邻居是否可提供新的或更新的链路状态信息 |
Loading |
基于DBD提供的信息,路由器将发送LSR和交互LSU,进行LSDB同步 |
Full |
建立邻接 两端设备的LSDB已同步,本端设备和邻居设备建立了邻接状态 |
广播网络中的OSPF邻接建立过程如图1-4所示,当进入Full状态时,邻接关系建立。
在广播或NBMA网络中,在构建相关路由器的邻接关系时,会创建很多不必要的LSA。假设有n台路由器,那么就会构建n*(n-1)/2个邻接关系,网络上将产生n^2个LSA通告;建邻居交换LSA过程中会产生很多不必要的副本,使得多址网络本身的洪泛扩散显得比较混乱。为了在一个多路访问网络避免这些问题的发生,OSPF定义了DR(Designated Router,指定路由器)和BDR(Backup Designated Router,备份指定路由器)的概念。
通过选举产生DR和BDR后,所有路由器都只和DR、BDR建立邻接关系,将信息发给DR/BDR,由DR将网络链路状态广播出去。除DR和BDR之外的路由器称为DR Other,DR Other之间将不再建立邻接关系,也不再交换任何路由信息,这样就减少了广播和NBMA网络上各路由器之间邻接关系的数量,如图1-5和图1-6所示。
路由器不一定需要与它的每一个邻居交换LSA或建立邻接关系。为提高效率,OSPF将各种链路层协议的网络归类为如表1-7所示的5种类型,以不同的方式交换LSA并建立邻接关系。
缺省情况下,Ethernet和FDDI为广播类型;X.25、帧中继和ATM为NBMA类型;PPP、HDLC和LAPB为P2P类型。
网络类型 |
链路层协议 |
邻居关系与DR选举 |
---|---|---|
广播(Broadcast) |
Ethernet、FDDI默认属于此类型 |
自动发现邻居,选举DR、BDR DR或BDR与其他所有路由器交换LSA、建立邻接关系 DR、BDR之外的路由器之间不交换LSA、不建立邻接关系 |
NBMA(Non-broadcast Multiple Access,非广播) |
X.25、帧中继、ATM默认属于此类型 |
手工配置邻居,选举DR、BDR DR或BDR与其他所有路由器交换LSA、建立邻接关系 DR、BDR之外的路由器之间不交换LSA、不建立邻接关系 |
P2P(Point-to-Point,点到点) |
PPP、HDLC、LAPB默认属于此类型 |
自动发现邻居,不选举DR/BDR 链路两端路由器之间交换LSA、建立邻接关系 |
P2MP(Point-to-Multipoint,点到多点) |
没有任何链路层协议的网络默认为此类型 |
自动发现邻居,不选举DR/BDR 任意两台路由器之间都要交换LSA、建立邻接关系 |
点到多点非广播 |
没有任何链路层协议的网络默认为此类型 |
手动配置邻居,不选举DR/BDR 任意两台路由器之间都要交换LSA、建立邻接关系 |
OSPF支持虚链路(Virtual Link)。虚链路是一条逻辑链路,属于骨干区域,用于解决在物理网络上骨干区域不连续或骨干区域与常规区域不能直接相连的问题。虚链路只能穿越一个常规区域,该区域被称为“传输区域”(Transit Area)。虚链路两端的路由器均为ABR。
虚链路依托于OSPF域内路由使得两台ABR成为邻接状态,ABR交互的OSPF报文信息对于中间设备来说是透明的。
如图1-7所示,在A、B之间建立虚链路,将Area 0连接;Area 1是传输区域,A、B是Area 1的ABR。
如图1-8所示,在A、B之间建立虚链路,将Area 0延伸到B,则Area 0与Area 2在B上直接相连。Area 1是传输区域,A是Area 1的ABR,B是Area 1、Area 2的ABR。
OSPF属于链路状态路由协议,工作过程包括三个阶段:
邻居发现双向通信
在相连的路由器之间建立OSPF邻居关系,并保持双向通信。
路由器从所有启动OSPF的接口上或虚链路发出Hello报文。如果两台路由器之间能够交互Hello报文,并且能够成功协商Hello报文中携带的参数,则它们就成为了邻居。当互为邻居的路由器在彼此的Hello报文中找到本端的Router ID时,双向通信就建立了。
Hello报文中包含(但不限于)如下信息:
始发路由器的Router ID。
始发路由器接口或虚链路的Area ID、网络掩码、认证信息、Hello时间间隔和邻居失效时间。
DR,BDR的IP地址。
始发路由器接口的优先级(用于DR/BDR竞选)。
始发路由器的邻居的Router ID。
数据库同步完全邻接
路由器使用LSA发布本端的全部链路状态。邻居之间交换LSA,同步LSDB,达到完全邻接状态。
邻居路由器之间建立双向通信后,使用DD、LSR、LSU和LSAck报文交换LSA,建立邻接关系。简要过程如下:
路由器产生LSA,用来描述该设备上的全部链路状态。
邻居之间交换LSA。当路由器接收到邻居发送的LSA时,将拷贝一份到本地LSDB,再传播给其它邻居。
当路由器及其邻居都获得了相同的LSDB时,达到完全邻接状态。
说明
如果没有链路代价、网络增删变化,OSPF将不会产生LSDB的更新和通告。如果发生变化,则通告变化的链路状态,快速同步LSDB。
计算SPT(Shortest Path Tree,最短路径树)形成路由表
路由器依据LSDB计算出到达每个目标网络的最短路径,形成OSPF路由表。
路由器上获得完整的LSDB后,将运行Dijkstra算法生成一棵从本地到每个目标网络的SPT。SPT中记录了目标网络、下一跳地址和代价。OSPF依据SPT形成路由表。
如果发生链路代价或网络增删变化,则会引起LSDB的更新。设备将再次运行Dijkstra算法,生成新的SPT,并更新路由表。
说明
Dijkstra算法用来在一个有权重的有向图中,找到从一个顶点到其他顶点的最短路径。
如果网络中存在冗余链路或设备,则从本地到目的网络之间可能存在多条路径。OSPF选择其中总代价最小的路径形成OSPF路由。一条路径的总代价等于沿途链路上的代价之和。通过修改沿途链路上的代价,使一条路径的总代价最小,即可使OSPF选择此路径形成路由。
通过配置命令,可以修改如下链路代价:
从接口到直连网段的代价、从接口到邻居的代价。
从ABR到区间汇聚网段的代价、从ABR到缺省网段的代价。
从ASBR到外部网段的代价、从ASBR到缺省网段的代价。
说明
Cost值的是指链路的开销,是计算后的链路质量值。Metric是完整路径的花费,是所经过链路开销的总和。
管理距离(Administrative Distance,缩写为AD)用于评价路由的可信度。取值范围0~255(整数)。AD值越小,则表示此路由更值得信任。到达同一目的地存在多条路由时,路由器优先选择AD值较小的路由。AD值较大者,成为浮动路由(作为最优路由的备份)。
缺省情况下,每种来源的路由对应一个AD值。AD值为本地概念,修改AD值只会影响当前路由器上的路由选择。
路由协议缺省管理距离
路由来源 |
直连网络 |
静态路由 |
EBGP路由 |
OSPF路由 |
IS-IS路由 |
RIP路由 |
IBGP路由 |
不可达路由 |
缺省AD |
0 |
1 |
20 |
110 |
115 |
120 |
200 |
255 |
路由重分布是指:将设备上存在的“其他路由协议的路由、其他OSPF进程的路由、静态路由、直连路由”引入OSPF进程,以LSA Type 5、7的方式发送给邻居。路由重分布不能引入缺省路由。
路由重分布常用于AS间互联。通过在ASBR上配置路由重分布,可以将AS外部的路由信息传播到AS内部,也可以将AS内部的路由信息传播到AS外部。
通过在ASBR上配置命令,可以将一条缺省路由引入OSPF进程,以LSA Type 5、7的方式发送给邻居。
“引入缺省路由”常用于AS间互联,以一条缺省路由代替所有AS外部的路由信息。
路由汇聚是指将具有相同前缀的路由信息汇聚为一条路由,并将汇聚后的路由替代大量琐碎路由发布给邻居。路由汇聚有助于减轻协议交互负担、减小路由表的规模。
缺省情况下,对于区域间的路由信息,ABR以网段为单位发布LSA Type 3;对于重分布进来的路由信息,ASBR逐条发布LSA Type 5、7。如果其中存在连续的网段,则建议配置路由汇聚。
配置路由汇聚时,汇聚范围有可能超出实际路由的网络范围。如果数据发往汇聚范围内不存在的网络,将有可能发生路由环路或加重路由器的处理负担。为阻止这种情况的发生,ABR或ASBR会自动添加一条Discard路由到路由表。该路由不会被传播。
OSPF允许对学习、交互的路由和LSA进行过滤,可以满足特定场景中安全需求,如部分网段路由不愿意被其他区域学习等。
通过配置命令,可以在以下几处进行路由过滤:
针对接口。禁止接口发出任意LSA、或禁止接口与邻居交互任意LSA。
针对区域间发布的路由信息。只有满足过滤条件的LSA Type 3才能被发布到另一区域。
针对AS外部的路由信息。只有满足过滤条件的LSA Type 5、7才能被重分布到OSPF进程。
针对路由器收到的LSA。OSPF路由表中,只有由满足过滤条件的LSA计算出的路由,才能执行报文转发。
认证是为了阻止非法接入网络的路由器和伪造OSPF报文的主机参与OSPF协议过程。在OSPF接口或虚链路两端对收到的OSPF报文进行认证。如果认证失败,则丢弃报文,邻接关系将不能被建立。
启动认证功能后,可以避免学到非认证的无效路由,避免通告有效路由到非认证设备。在广播类型网络中,认证还可以避免非认证设备成为指定设备的可能性,保证了路由系统的稳定性和抗入侵性。
认证分为以下两种类型:
区域认证:区域级别认证,对区域内所有接口传输的报文进行认证,在OSPF路由进程模式下配置。
接口认证:邻居级别认证,对接口上传输的报文进行认证,在接口模式下配置。
OSPF在收到DD时会校验邻居的接口的MTU和本端接口的MTU是否相同,如果收到的DD报文中指示的接口的MTU大于接收接口的MTU,则邻接关系将不能被建立。关闭MTU的校验,可以避免此问题。
通常情况下,OSPF收到报文的源地址和接收接口会在同一个网段。不过在点到点链路上,链路两端的地址是独立设置的,可以不要求在同一个网段,在这种场景下,由于点到点链路协商过程中会告知对端的地址信息,因此OSPF会检查报文的源地址是否就是协商时对端通告的地址,若不是则认为报文非法并丢弃该报文。特别的,对于未配置IP的接口,OSPF始终不进行地址校验。
但在某些应用场景中,可能会出现源地址不如上面所述,导致OSPF校验失败,比如点到点链路上,协商的对端地址无法获取。在这种场景中,需要关闭源地址校验功能,以保证OSPF邻居能正常建立。
OSPF路由器之间通过周期性发送Hello报文来维持邻接关系。在较大的网络中,可能会出现大量的报文收发,占用较高的CPU和内存资源,造成部分报文的延迟或丢弃。如果Hello报文的处理超出了邻居失效间隔,将导致邻接关系断开。
如果启用双向维持功能,则除了Hello报文外,DD、LSU、LSR、LSAck报文也能用来维持邻居之间的双向通信,从而使邻接关系更加稳定。
当路由器同时与多个邻居交换数据时,其性能会受到影响。限制OSPF进程可并发交互(发起或接受)的邻居最大数目,使路由器可以分批与邻居进行交互,有助于保障数据转发或其他关键业务。
OSPF要求同一个区域中的路由器保存相同的LSDB。随着网络上路由数量不断增加,部分路由器由于系统资源有限,不能承载如此多的路由信息,有可能导致路由器系统资源耗尽而失效的故障。
OVERFLOW是通过限制LSDB中外部路由的数量,达到控制LSDB的规模的目的。
当路由器上的外部路由数量达到上限时,进入OVERFLOW状态:删除LSDB中本端产生的外部路由、不产生新的外部路由、丢弃新收到的外部路由。OVERFLOW状态超时后(5秒),如果外部路由数量低于上限,则恢复正常状态。
路由器普遍采用了控制和转发分离的技术。在网络拓扑保持稳定的情况下,启用GR(Graceful Restart,优雅重启)功能的路由器在控制层面的重启过程中,转发层面能够继续指导数据的转发,同时控制层面邻居关系的重建以及路由计算等动作不会影响转发层面的功能,从而避免了路由震荡引发的业务中断,提高了整网的可靠性。
目前,GR功能只在主备切换和系统升级过程中使用。
正常的OSPF GR过程
GR过程需要Restarter和Helper的协作。Restarter是发生GR的路由器。Helper是Restarter的邻居。
Restarter在开始和退出GR时向邻居发送Grace-LSA,通知邻居进入和退出Helper状态。
Restarter与Helper邻居关系达到Full状态,则GR可成功退出。
NSR(Nonstop Routing,不间断路由)通过将OSPF的相关信息从分布式设备的主管理板备份到备用管理板,或者从VSU(Virtual Switching Unit,虚拟交换单元)的主机备份到从机,使设备在发生主备切换时可以自行完成链路状态的恢复和路由的重新生成,在恢复过程中不需要邻居设备的帮助。NSR主备同步的具体信息包括:配置信息备份、进程信息备份、接口信息备份、邻居信息备份、LSA信息备份。
当发生链路故障后,OSPF需要一段时间(约40秒)才能感知邻居失效。而后再将此信息传播出去、并重新计算SPT。这期间会发生流量中断。
启动Fast Hello功能(即将邻居失效时间设置为1秒)后,一旦发生链路故障后,OSPF可以在1秒内感知到邻居失效。从而加快路由收敛,避免流量中断。
BFD(Bidirectional Forwarding Detection,双向转发检测)用于检测设备之间的连通性,最短能够在150毫秒内发现链路故障。将OSPF与BFD联动后,一旦发生链路故障,OSPF最短可以在150毫秒内感知到邻居失效。从而加快路由收敛,避免流量中断。
OSPF的拓扑以区域为单位,每个区域通过运行SPF算法独立计算。对于标准的SPF算法,每次计算需要重新计算整个区域的拓扑,即使区域拓扑只有叶子节点变化。
iSPF(Incremental Shortest Path First,增量最短路径优先)在计算网络拓扑时,只修正最短路径树上受拓扑变化影响的节点,而不是重建整棵最短路径树。在大型网络中,这将有效缓解路由器处理器的压力,尤其是在网络不稳定的情况下。
当OSPF网络中的链路或某台路由设备发生故障时,需要通过故障链路或故障路由设备传输才能到达目的地的报文将会丢失或产生路由环路,数据流量会被中断,直到OSPF根据新的拓扑网络收敛完毕后,被中断的流量才能恢复正常的传输。
为了尽可能缩短网络故障导致的流量中断时间,网络管理员可以根据需要配置OSPF的Fast Hello功能,加快网络收敛。
MIB、Syslog等功能使OSPF更易于管理。
MIB(Management Information Base,管理信息库)是设备端维护的设备状态信息集。管理程序可以对MIB节点进行查阅和设置。
路由器上可以同时启动多个OSPF进程,但OSPF MIB只能与一个OSPF进程绑定。
告警是系统检测到故障而产生的通知,告警中携带对应的故障信息。
启动Trap功能,则路由器可以主动将告警信息发送到网管设备。
日志记录了用户对路由器的操作(比如命令配置)以及特定事件(比如网络连接失效)等信息。
允许日志记录邻接状态变化,则网络管理员可以通过查看日志了解OSPF邻居之间建立和维持邻接关系的全过程。
OSPF是一种广泛使用的IGP协议,在现有的大部分应用方案,VPN用户内部一般选择OSPF作为内部路由协议。如果在PE(Provider Edge,运营商边缘路由器)和CE(Customer Edge,用户边缘路由器)之间也采用OSPF协议,则不用再运行其他路由协议,从而简化CE的配置和管理。
域ID用来标识该路由所属的OSPF域。当CE学习VPN内部站点OSPF路由,该路由以1、2或者3类LSA通告给PE并重分布到BGP形成VPN路由时,域ID也会随路由重分布给BGP,并作为VPN路由中的扩展团体属性一起通告出去。当其他PE收到该VPN路由并重分布给VRF OSPF实例,域ID也会随该路由重分布给对应的VRF OSPF实例,如果VRF OSPF实例确认路由中的域ID和本VRF OSPF实例的域ID一样,则以内部路由的形式通告给CE;反之,如果VRF OSPF实例确认路由中的域ID和本VRF OSPF实例的域ID不一样,则该路由会以外部路由的形式通告给CE。
如图1-10所示,对于属于同一个OSPF域内部的路由,CE1把路由以2类LSA通告给PE1,并形成VPN路由通告给PE2,PE2接收到该路由并重分布给VRF OSPF实例,由于VRF OSPF实例具有和该VPN路由一样的域ID,则这些站点最终以内部路由的形式通告给VPN站点。
DN位是LSA报头可选字段中的一个bit位,DN位技术是在PE-CE间运行OSPF协议时采用的一种环路检测技术。
在PE-CE间运行OSPF时可能产生环路问题,比如在一个VPN站点连接多台PE,如果一台PE把学习到的VPN路由通告给VPN站点,在VPN站点内部又通过运行的OSPF协议传给另外一台PE并传播出去,那么就可能产生环路。
如图1-11所示。192.168.10.0/24的路由PE1通告给PE2和PE3,CE2通过OSPF协议通告给CE3,再由CE3通告给PE3,重分布给PE3的BGP协议,PE3上优选了OSPF重分布来的路由,并把该路由转化为VPNv4路由通告出去,就有可能产生环路。
为了阻止上述可能的环路,当PE通告3、5或者7类的LSA给CE,会在LSA消息的可选字段中置上DN位。当其他PE站点收到的LSA的消息的可选字段DN位的值为1时,则PE上的OSPF协议不让该LSA参与OSPF计算。
VPN路由标记是PE-CE间运行OSPF协议的另一种环路检测技术。PE-CE运行OSPF协议时,PE上对应的VRF OSPF实例默认都有一个路由标记,称之为“VPN路由标记”,在PE上的VRF OSPF实例引入VPN路由并转化为5类或者7类LSA通告给CE时,该LSA消息会附带VPN路由标记,在一个VPN站点连接多台PE的环境中,如果PE收到5类或者7类LSA中设备含有VPN路由标记,且该VPN路由标记和该OSPF实例的VPN路由标记相等,则该LSA不会参与OSPF协议的路由计算。
正常情况下,PE-CE间的链路可以是任意的OSPF区域,但是如果PE-CE间的链路是非0区域,则对CE所在的OSPF区域来说,PE是一台ABR。这可能会引起问题,因为作为ABR设备的OSPF协议具有如下特点:
ABR只计算骨干区域的3类LSA。
ABR只将骨干区域内的3类LSA转发到非骨干区域。
如图1-12所示,如果PE-CE间的链路是非0区域,那么PE设备将MP-BGP通告的VPNv4路由重分布给OSPF并还原成3类LSA通告给CE1,CE1不会计算非骨干区域的LSA,所以这些LSA不会通告给AREA0内的路由器,这样VPN内部站点可能无法学习到其他站点的路由。
在L3VPN应用中,如果PE-CE间运行OSP协议来交互VPN路由,则尽量不在VPN内部站点部署骨干区域。实际中如果除了PE站点外还有VPN内部站点路由器也是属于骨干区域,那么该VPN内部站点内必须至少有一个路由器和PE相连,且CE和PE间的链路必须属于区域0,这样才能确保区域间路由器和外部路由可以在PE和VPN站点间传输。
伪链路(Sham-Link)不是一条真正的链路,它是指在两台PE上的VRF OSPF实例间建立的一条“虚拟链路”。伪链路和正常的OSPF链路一样,有OSPF接口,可以发送OSPF协议报文,建立邻居,发送LSA。当LSA在伪链路中进行泛洪时,所有的OSPF路由类型不会改变,如图1-13所示。
不同PE的VRF OSPF实例建立伪链路的目的主要有以下两点:
通过MP-IBGP携带私网路由的方式,只是传递路由,到达对端PE后的还原工作也只是尽力而为式的引入原有OSPF路由信息,并不能真正使OSPF的拓扑信息得到沟通。通过伪链路建立一条OSPF链路,从而使各个站点内的OSPF实例能够真正连通,并建立完整的拓扑信息。
同一VPN内的不同站点通过MPLS骨干网交互信息,但是这些VPN站点内部又连接一条链路,其目的是在MPLS骨干网无法使用时,VPN站点间仍然可以通过该链路通信,这种链路称为“后门链路”。如果VPN用户的两个站点同属于同一个OSPF区域,且这两个站点间又连接一条“后门链路”,那么两个站点内的路由即通过MPLS骨干网交互,也通过“后门链路”交互。由于通过MPLS骨干网交互后的路由为域间路由,而通过“后门链路”交互后的路由为域内路由,显然后门链路所通告的域内路由优于MPLS骨干网通告的域间路由,因而这两个站点内的路由转发会优先走后门链路。这不符合VPN用户连接“后门链路”的意图,因此这种应用也需要使用伪链路。
RFC 2328:OSPF Version 2
RFC 2370:The OSPF Opaque LSA Option
RFC 3137:OSPF Stub Router Advertisement
RFC 3623:Graceful OSPF Restart
RFC 3630:Traffic Engineering (TE) Extensions to OSPF Version 2
RFC 3682:The Generalized TTL Security Mechanism (GTSM)
RFC 3906:Calculating Interior Gateway Protocol (IGP) Routes Over Traffic Engineering Tunnels
RFC 4576:Using a Link State Advertisement (LSA) Options Bit to Prevent Looping in BGP/MPLS IP Virtual Private Networks (VPNs)
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
OSPFv2配置任务如下:
配置OSPF基本功能
配置OSPF进程
(可选)配置Router ID
在指定网段上启动OSPF
在指定接口上启动OSPF
(可选)配置虚链路
(可选)配置OSPF网络类型
配置接口网络类型
(可选)配置邻居
(可选)配置接口优先级
(可选)关闭源地址校验
(可选)配置Stub和NSSA区域。以下所有配置任务均为可选配置,请根据实际情况选择。
配置Stub区域
配置NSSA区域
(可选)调整OSPF的选路。以下所有配置任务均为可选配置,请根据实际情况选择。
配置管理距离
配置参考带宽
配置接口Cost值
配置Stub/NSSA区域缺省路由的Cost值
配置重分布路由缺省度量值
配置最大度量值
配置兼容RFC 1583
配置外部路由转发地址与接口配置关联
(可选)配置OSPF路由发布
配置重分发外部路由
配置生成缺省路由
(可选)配置设备为ASBR
(可选)配置OSPF路由汇聚。以下所有配置任务均为可选配置,请根据实际情况选择。
配置区域间路由汇聚
配置外部路由汇聚
配置Discard Route
(可选)配置OSPF路由过滤。以下所有配置任务均为可选配置,请根据实际情况选择。
配置被动接口
关闭接口发送LSA更新报文功能
配置区域间路由过滤
配置重分布路由过滤
配置对学习的路由过滤
(可选)调整OSPF网络的收敛速度。以下所有配置任务均为可选配置,请根据实际情况选择。
配置Hello时间
配置Dead时间
配置LSU发送延迟
配置LSU重传间隔
配置LSU生成时间
配置LSA分组刷新时间
配置LSA分组
配置LSA重复接收延迟
配置区域间路由计算延时
配置外部路由计算延时
配置SPF计算时间
开启双向维持功能
(可选)配置OSPF认证
配置区域认证类型
配置接口认证类型
(可选)配置接口明文认证密钥
(可选)配置接口MD5认证密钥
(可选)配置并发邻居数量限制。以下所有配置任务均为可选配置,请根据实际情况选择。
配置当前进程并发邻居数
配置所有进程并发邻居数
(可选)配置GR功能。以下所有配置任务均为可选配置,请根据实际情况选择。
开启GR功能
配置OSPF GR Helper功能
(可选)开启OSPF与BFD联动。以下所有配置任务均为可选配置,请根据实际情况选择。
配置指定OSPF接口的BFD功能
配置OSPF进程下所有接口的BFD功能
(可选)开启溢出功能。以下所有配置任务均为可选配置,请根据实际情况选择。
配置内存OVERFLOW
配置数据库OVERFLOW
配置外部LSA数据库OVERFLOW
(可选)配置OSPF的VPN扩展特性。以下所有配置任务均为可选配置,请根据实际情况选择。
配置域ID
配置伪链路
配置域标签
关闭VRF OSPF实例环路检测
配置VPN路由扩展团体属性
关闭LSA的DN位检测环路功能
关闭LSA的路由标记检测环路功能
(可选)配置网管功能。以下所有配置任务均为可选配置,请根据实际情况选择。
配置MIB绑定
配置Trap
开启日志记录功能
(可选)开启NSR功能
(可选)开启iSPF特性
(可选)关闭MTU校验
(可选)开启4类LSA冲突检测
在网络中建立一个OSPF路由域,为网络内用户提供IPv4单播路由服务。
需要确保IP单播路由功能启用,即ip routing开关未被关闭,才能够启用OSPF。
开启OSPF路由功能时,建议手工配置Router ID。
配置ip ospf disable all后,即使接口属于该network命令通告范围,也不再接收和发送任何OSPF报文,也不参与OSPF的计算。
OSPF基本功能配置任务如下:
配置OSPF进程
(可选)配置Router ID
在指定网段上启动OSPF
在指定接口上启动OSPF
(可选)配置虚链路
为了在设备上启用OSPF功能,必须通过指定进程号创建OSPF进程。
OSPF支持多进程,一台路由器上可以启用一个OSPF进程,也可以启用多个OSPF进程。每个OSPF进程独立执行OSPF协议,相互隔离。
Process ID只有本地意义,不影响相邻接口上的OSPF报文交互。
在每一台需要使用OSPF的路由器上配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
创建OSPF进程,并进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
Router ID是路由器在OSPF域中唯一标识,因此Router ID需要全网唯一,否则会导致邻居建立异常,路由信息错误等问题。同时同一台路由器中的不同OSPF进程需使用不同的Router ID。
建议手工配置Router ID。
同一台路由器中的不同OSPF进程需使用不同的Router ID。
若未手动配置Router ID,OSPF会自动选择接口IP地址作为Router ID。若没有接口配置IP地址或者配置的IP地址已经被其他OSPF实例使用,则必须手工配置Router ID。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置Router ID。
router-id router-id
缺省情况下,OSPF路由进程选举所有环回(Loopback)接口IP地址最大的作为路由设备标识。如果没有配置IP地址的环回(Loopback)接口,那么OSPF将选取它所有的物理接口IP地址最大的作为路由设备标识。
为了在设备间交互OSPF路由信息,需要将设备接口加入OSPF进程。通过在指定网段上启动OSPF,IP地址属于该网段范围的所有接口同时加入OSPF进程,并和区域关联。
所有运行OSPF的路由器都需要配置将接口加入OSPF进程。
当接口地址同时与多个OSPF进程network area命令定义的IP地址范围相匹配时,按照最优匹配方式,确定接口参与的OSPF进程。
如果network area命令定义的IP地址范围,只包括接口的次IP地址,该接口将不会运行OSPF。
当OSPF进程下的network area命令与接口下的ip ospf area命令同时配置时,接口下的配置优先生效。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
在指定网段上启动OSPF,并关联Area ID。
network ipv4-address wildcard area area-id
缺省情况下,未配置任何接口IP加入OSPF区域。
为了在设备间交互OSPF路由,需要将设备接口加入OSPF进程。通过在指定接口上启动OSPF,接口下所有IP地址都自动加入OSPF进程,并和区域关联。
每台运行OSPF的路由器都需要配置将接口加入OSPF进程。
OSPF还可以通过实例下的network命令将接口加入OSPF实例运行。两者同时配置时,接口下的配置优先生效。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
在指定接口上启动OSPF,并关联Area ID。
ip ospf process-id area area-id
缺省情况下,接口上未启动OSPF。
允许接口产生OSPF报文
no ip ospf disable all
缺省情况下,接口允许产生OSPF报文。
在OSPF路由域中,所有的区域都必须与骨干域连接。如果骨干域断接,就需要配置虚拟链接将骨干域接续起来,否则网络通讯将出现问题。虚拟链接需要在两个区域边界路由设备(ABR)之间创建,两个ABR共同所属的区域成为过渡区域。Stub区域(Stub Area)和NSSA是不能作为过渡区域的。虚拟链接也可以用于接续其它非骨干区域。
虚链路中只定义虚拟链路的认证密钥,要启用虚拟链路所连接区域的OSPF报文认证,需要用命令area authentication启用认证。
虚链路支持Fast Hello功能:
当虚链路配置了Fast Hello功能,从该虚链路通告的Hello报文的Hello间隔字段设置为0,从该虚链路接收的Hello报文的Hello间隔字段被忽略。
无论是否启用Fast Hello功能,虚链路两端的设备邻居失效间隔始终要保持一致。
为Fast Hello功能引入的dead-interval、minimal hello-multiplier参数和hello-interval参数不允许同时配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置虚链路。
area area-id virtual-link router-id [ authentication [ keychain kechain-name | message-digest | null ] | dead-interval { dead-interval | minimal hello-multiplier multiplier-time } | hello-interval hello-interval | retransmit-interval retransmit-interval | transmit-delay transmit-delay ] * [ authentication-key [ 0 | 7 ] key | message-digest-key key-id md5 [ 0 | 7 ] key ]
缺省情况下,未配置虚拟链路。
物理网络为X.25、帧中继、ATM时,设置OSPF网络类型,使其也可以运行OSPF协议,提供IPv4单播路由服务。
OSPF根据链路层协议类型将网络分为五种不同的类型,以不同的方式交换LSA、建立邻接关系。通过配置接口的网络类型,可以强制改变接口的网络类型。
使用本功能前必须配置OSPF基本功能。
链路两端设备的网络类型必须一致,否则无法建立邻居关系。
广播网络以组播方式发送OSPF报文,自动发现邻居,需要选举DR和BDR。
P2P网络以组播方式发送OSPF报文,自动发现邻居。
NBMA网络以单播方式发送OSPF报文,必须手动指定邻居,需要选举DR和BDR。
P2MP网络(不携带non-broadcast参数)以组播方式发送OSPF报文,自动发现邻居。
P2MP网络(携带non-broadcast参数)以单播方式发送OSPF报文,必须手动指定邻居。
OSPF网络类型配置任务如下:
配置接口网络类型
(可选)配置邻居
(可选)配置接口优先级
(可选)关闭源地址校验
OSPF存在五种网络类型,缺省情况下,Ethernet、FDDI为广播类型;X.25、帧中继、ATM为NBMA类型;PPP、HDLC、LAPB为P2P类型,通过本配置可强制修改接口的网络类型。
链路两端路由器都需要配置。
广播类型要求接口具有广播能力。
P2P类型要求接口1对1互联。
NBMA类型要求全网状连接,所有互联的路由设备必须能够直接通讯。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置接口网络类型。
ip ospf network { broadcast | non-broadcast | point-to-multipoint [ non-broadcast ] | point-to-point }
缺省情况下未配置OSPF的网络类型,并且没有接口为P2MP类型。
NBMA网络中,路由器不能发送和接收广播报文,无法通过Hello报文发现邻居,需要手工指定邻居,以单播的形式发送Hello报文。
在NBMA网络上如果邻居路由设备变为不活跃,即在路由设备邻居失效时间内还没有收到Hello报文,OSPF还会往该邻居发送Hello报文,发送Hello报文的时间间隔称为轮询间隔。当OSPF第一次开始运行时,只向优先权值不为0的邻居发送Hello报文,这样优先权值设为0的邻居就不会参与DR/BDR的竞选。等DR/BDR产生以后,DR/BDR会向所有的邻居发送Hello报文建立邻居关系。
若接口的网络类型配置为NBMA或者P2MP(携带non-broadcast参数),则必须配置。
在NBMA或者P2MP(携带non-broadcast参数)网络两端路由器上配置。
邻居的IP地址,必须为该邻居接口的主IP地址。
在P2MP非广播网络上,因为不具备广播能力所以无法动态的发现邻居,因此必须使用该命令手工为其配置邻居。
P2MP类型的网络可以通过cost选项指定到达每个邻居的花费。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置邻居。
neighbor ipv4-address [ cost cost | [ poll-interval poll-interval | priority priority ] * ]
缺省情况下,未配置任何邻居,必须为NBMA类型接口和P2MP类型非广播接口指定邻居。邻居的IP地址,必须为该邻居接口的主IP地址。此外P2MP类型的网络可以通过cost选项指定到达每个邻居的花费。
当OSPF广播类型网络发生DR/BDR(指定路由设备/备份指定路由设备)竞选时,高优先权值的路由设备,将成为DR或BDR。如果优先权值一样,路由设备标识符高的路由设备将成为DR或BDR。优先权值为0的路由设备,不参与DR/BDR竞选。OSPF接口的优先权值包含在Hello报文中。
该命令只对OSPF广播类型和NBMA类型有效。
若需要指定路由器作为DR或者禁止路由器做为DR,需要配置。
在被指定为DR或者被禁止做为DR的路由器上配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置接口优先级。
ip ospf priority priority
缺省情况下,优先权值为1。
通常情况下,OSPF收到报文的源地址和接收接口会在同一个网段。不过在点对点链路上,链路两端的地址是独立设置的,可以不要求在同一个网段。在这种场景下,由于点对点链路协商过程中会告知对端的地址信息,因此OSPF会检查报文的源地址是否就是协商时对端通告的地址,若不是则认为报文非法并丢弃该报文。另外,对于unnumbered接口,OSPF始终不进行地址校验。
但在某些应用场景中,可能会出现源地址不如上面所述,导致OSPF校验失败,比如点对点链路上,协商的对端地址无法获取。在这种场景中,需要关闭源地址校验功能,以保证OSPF邻居能正常建立。
使用本功能前必须配置OSPF基本功能。
广播网络和NBMA网络不能关闭源地址校验。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
关闭源地址校验功能。
ip ospf source-check-ignore
缺省情况下,点对点链路源地址校验功能处于开启状态。
将末梢区域设置为Stub区域,有助于减少路由信息的交互,缩小路由表规模,增强路由稳定性。
使用本功能前必须配置OSPF基本功能。
骨干区域、传输区域不允许设置为Stub区域、NSSA区域。
Stub区域内路由器不能引入外部路由,NSSA区域内路由器可以引入外部路由。
Stub和NSSA区域配置任务如下,以下配置均可选,请根据实际情况配置:
配置Stub区域
配置NSSA区域
Stub区域是OSPF末节区域,配置Stub区域可以减少区域内的LSA数量,Stub区域的ABR路由器不会传递Type 5 LSA(域外路由),同时向Stub区域通告缺省路由。
Totally Stub区域是完全末节区域,是Stub区域的升级,Totally Stub区域的路由器不会传递Type 3 LSA(域间路由)和Type 5 LSA(域外路由),同时向Stub区域通告缺省路由。
若希望减小区域内路由器的路由表规模,可进行Stub或Totally Stub区域配置。
必须在该区域内的所有路由器上配置该区域为Stub区域。
如果需要配置Totally Stub区域,只需在ABR上执行area stub命令时,选择no-summary关键字。Totally Stub区域的路由设备只能学到本区域内的路由,以及ABR产生的内部缺省路由。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置Stub区域。
area area-id stub [ no-summary ]
缺省情况下,Stub区域功能处于关闭状态。
NSSA区域和Stub区域相似,但是允许存在ASBR。ASBR重分发的路由会以Type 7 LSA形式在NSSA区域传递,在ABR上会将Type 7 LSA转换成Type 5 LSA后传递到其他区域,此ABR也称为翻译者(Translator),ABR也会向NSSA区域通告缺省路由。
Totally NSSA区域是NSSA区域的升级,和NSSA区域中的路由器相比,Totally NSSA区域的路由器只能够通告一条区域间缺省路由,其余的Type 3 LSA(域间路由)不允许传递。
若希望减小区域内路由器的路由表规模和区域内的LSA数量,同时又希望本区域可以引入OSPF域外路由,可进行NSSA或Totally NSSA区域配置。
必须在该区域内的所有路由器上配置该区域为NSSA区域。
在NSSA区域的ABR上执行参数default-information-originate时,无论路由表中是否存在缺省路由,都会产生Type 7 LSA缺省路由;在NSSA区域的ASBR上(同时也不是ABR)执行相同参数时,只有路由表中存在缺省路由,才会产生Type 7 LSA缺省路由。
配置Totally NSSA区域可以进一步减少发送到NSSA区域中的LSA的数量,在ABR上配置no-summary属性,禁止ABR向NSSA区域内发送summary LSAs(Type 3 LSA)。
同一NSSA区域中,建议只有一台ABR成为Translator。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置NSSA区域。
area area-id nssa [ default-information-originate [ metric metric | metric-type metric-type ] * | no-redistribution | no-summary | translate type7 suppress-fa | translator [ always | stability-interval stability-interval ] * | zero-address-forwarding ] *
缺省情况下,NSSA区域功能处于关闭状态。
通过配置管理距离、参考带宽、接口Cost值等选路参数,能够改变路由器选择各类路由的顺序,使得OSPF路由的优先级提高或降低,从而改变OSPF路由,使流量经过或避开某些节点。
使用本功能前必须配置OSPF基本功能。
如果用命令ip ospf cost设置了接口的Cost,则将覆盖自动代价算出的Cost。
调整OSPF选路的配置任务如下,以下配置均可选,请根据实际情况配置:
配置管理距离
配置参考带宽
配置接口Cost值
配置Stub/NSSA区域缺省路由的Cost值
配置重分布路由缺省度量值
配置最大度量值
配置兼容RFC 1583
配置外部路由转发地址与接口配置关联
管理距离是在使用多种路由协议去往同一个目标时,用来选择最佳路径的功能。管理距离定义了路由协议的可靠性。管理距离越低,可靠性越高,路由选择的优先级越高。OSPF域内路由,域间路由和域外路由的管理距离缺省值都为110,可以设定不同的管理距离来控制路由选择。
在同时运行多种单播路由协议的路由器上,若希望改变OSPF路由的优先级,必须配置管理距离。
若要指定OSPF不同类型路由对应不同管理距离时,需要对不同类型路由分别配置管理距离。
配置route-map参数,可通过策略为特定的路由设置管理距离。如果路由图中通过set distance命令配置了管理距离,则:
通过匹配的路由:管理距离以set distance命令设定为准。
未通过匹配的路由:管理距离以命令distance命令设定为准。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置管理距离。
distance { distance [ route-map map-name ] | ospf { external distance [ route-map map-name ] | inter-area distance [ route-map map-name ] | intra-area distance [ route-map map-name ] } * }
缺省情况下,所有OSPF路由管理距离均为110。
OSPF参考带宽缺省值为100Mbps,Cost为参考带宽/实际带宽,在千兆和万兆网络环境中,计算出的Cost值均为1,缺省带宽值无法适应如今高速传输网络。路由器连接不同带宽的线路,若希望优先选择带宽大的线路,建议根据实际带宽调整配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置参考带宽。
auto-cost reference-bandwidth reference-bandwidth
缺省情况下,接口的度量计算的带宽参考值为100Mbps。
修改OSPF的接口开销可以优化路由选路,链路的开销值越低,选路时的优先级越高。
缺省情况下,OSPF接口Cost值等于自动代价参考值/接口带宽。
当路由器连接多条线路时,若希望手动指定优先的线路,建议在对应接口配置更低的接口开销。
使用auto-cost命令自动代价参考值。缺省值100Mbps。
使用bandwidth命令设置接口带宽。
几种典型线路的OSPF接口Cost缺省值为:
64K串行线路,Cost为1562;
E1线路,Cost为48;
10M以太网,Cost为10;
100M以太网,Cost为1。
如果用命令ip ospf cost设置了接口的Cost,则将覆盖自动代价算出的Cost。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置接口Cost值。
ip ospf cost cost
缺省情况下,OSPF接口开销为自动代价参考值/接口带宽(参考带宽默认为100Mbps)。
区域设置为Stub/NSSA区域后,ABR会向Stub/NSSA区域通告缺省路由,保证Stub/NSSA区域到其他区域路由可达。缺省路由的缺省开销值为1,而此功能可以调整缺省路由的开销,灵活控制Stub、NSSA区域路由。
该命令只有在Stub区域的ABR或NSSA区域的ABR/ASBR上配置才能生效。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置Stub/NSSA区域缺省路由的Cost值。
area area-id default-cost cost
缺省情况下,路由的开销值为1。
重分发外部路由时,可以调整外部路由开销值,以灵活调整路由选路。
在ASBR上引入域外路由时,若需要指定域外路由的代价,必须配置。
default-metric命令必须与redistribute路由进程配置命令配合使用,可以修改所有重分布路由的初始化量度值。
default-metric命令的设置,对以default-information originate方式注入OSPF路由域的外部路由不起作用。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置重分布缺省度量。
default-metric metric
缺省情况下,重分布路由的量度值为20。
在重启设备、设备作为备选路径等场景下,设置当前设备发布的OSPF信息具有最大度量值,以达到数据流量不经过当前设备的目的。
路由器重启过程中以及重启刚完成的一段时间内,路由器可能还不稳定,用户的数据流量转发不希望经过该路由器,此时建议配置。
配置命令max-metric router-lsa后,路由设备生成的Router LSA中的非Stub links的度量将被设置为最大值(0xFFFF)。在用户取消本配置,或者定时器到期后,恢复链路的正常度量值。
缺省情况下,当配置该命令,stub links仍将通告普通度量值,即出接口代价值,如果配置了include-stub参数,Stub links将通告为最大度量值;
作为ABR设备,如果不希望传输区间流量则使用summary-lsa参数设置汇总LSA为最大度量值;
作为ASBR设备,如果不希望传输外部流量则使用external-lsa参数设置外部LSA为最大度量值。
max-metric router-lsa命令通常在以下场景使用:
重启设备。当设备重启,IGP协议通常更快收敛,其它设备试图通过新启动的设备转发流量。如果当前设备仍然在构建BGP路由表,部分BGP路由还没有被学习到,发往这些网络的报文将被丢弃。这种情况可以使用on-startup参数设置一定的延时,启动后等待定时器到期后再开始作为传输节点。
将设备加入网络但不用于传输流量。将设备加入网络,如果存在备选路径,则当前设备不用于传输流量;如果不存在备选路径,则当前设备仍然用于传输流量。
将设备优雅的从网络中移除。通过配置该命令,当前设备通告所有最大度量值,这样就能够在设备关闭前,使网络中的其它设备选择备份路径传输流量。
在旧版本OSPF实现(RFC 1247或更早的版本)中,LSA中最大度量(0xFFFF)的Links不参与SPF计算,即没有流量发往生成这些LSA的路由设备。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置最大度量值。
max-metric router-lsa [ external-lsa [ max-metric-value ] | on-neighborup [ full-interval-time ] | include-stub | on-startup [ startup-interval-time ] | summary-lsa [ max-metric-value ] ] *
缺省情况下,通告正常度量的LSA。
当存在多条到达ASBR或外部路由转发地址的路径时,RFC 1583与RFC 2328定义了不同的选路规则。配置兼容RFC 1583时,优先选择骨干区域的区域内路径或区域间路径;不兼容RFC 1583时,优先选择非骨干区域的区域内路径。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置兼容RFC 1583。
compatible rfc1583
缺省情况下,RFC 1583规则功能处于开启状态。
通过置位相关标志位FA,使接口配置与外部路由转发地址相关联,计算可达性和度量。
在与思科设备对接时,必须开启兼容思科设备的FA转发地址配置。
外部路由的转发地址为0时,OSPF计算外部路由将计算到达通告者的可达性和度量。而当转发地址非0时,将计算到转发地址的可达性和度量。
缺省配置下,同时满足如下条件时,OSPF的ASBR将外部路由的转发地址字段填充非0:
OSPF在ASBR与外部网络连接的下一跳接口启用。
ASBR与外部网络连接的下一跳接口是落在OSPF协议中发布的网络范围之中。
配置转发地址规则与接口配置关联后,同时满足如下条件时,OSPF的ASBR将外部路由的转发地址字段填充非0:
OSPF在ASBR与外部网络连接的下一跳接口启用。
ASBR与外部网络连接的下一跳接口是落在OSPF协议中发布的网络范围之中。
ASBR与外部网络连接的下一跳接口没有被配置为被动接口。
ASBR与外部网络连接的下一跳接口不是OSPF的P2P或P2MP类型。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置外部路由转发地址与接口配置关联。
commpatible forward-address
缺省情况下,外部路由的转发地址按照默认规则设置。
在OSPF域内引入其他AS域的单播路由,或者通往其他AS域的默认路由,为OSPF域内的用户提供到其他AS域的单播路由服务。引入路由的路由器会自动成为ASBR。
OSPF有两种外部路由,类型1外部路由的路由量度会改变,而类型2外部路由的路由量度是固定不变。到一个目标网络存在两条并行路径,同样的路由量度,类型1会比类型2优先级高,所以show ip route只显示类型1路由。
使用本功能前必须配置OSPF基本功能。
OSPF路由发布的配置任务如下:
配置重分发外部路由
配置生成缺省路由
(可选)配置设备为ASBR
在AS边界路由器上需要引入OSPF域外路由时,配置重分发外部路由。
在AS边界路由器上配置。
配置完该命令后,该路由设备将变为ASBR,将相应路由信息导入OSPF域内,并以Type 5 LSA广播到域内其他OSPF路由设备。
配置重分布IS-IS路由时,如果未携带level参数,默认只允许重分布Level-2的路由。若初始配置重分布时,携带level参数,则允许重分布配置的level参数的路由。配置保存时,如果同时配置level 1,level 2时,合并为level-1-2参数保存。
配置重分布OSPF路由时,如果不携带match参数,默认允许重分布所有子类型的OSPF路由;而后的第一次配置match参数作为初始的match参数,重分布时只允许匹配的子类型的路由进行重分布;使用no命令恢复match参数为默认值。
配置重分布时,配置route-map过滤时,route-map中的match规则是针对重分布的原始参数进行匹配;对于重分布OSPF或IS-IS路由,只有重分布的路由满足配置的match或level的规则,才再进行route-map的判断。
所关联的route-map的set metric取值范围为0~16777214,如果超出该范围,将无法引入路由。
redistribute命令的no形式配置的规则如下:
如果no命令指定某些参数,则将这些参数恢复缺省配置;
如果no命令不指定任何参数,则将整个命令删除。
如已配置:redistribute isis 112 level-2,再执行:no redistribute isis 112 level-2。该no命令仅将level-2参数恢复缺省值,而level-2本身又是参数缺省值,所以,配置仍保存为redistribute isis 112 level-2。要将整个命令删除请执行命令:no redistribute isis 112。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置重分发外部路由。
redistribute { arp-host | bgp | connected | isis [ area-tag ] [ level-1 | level-1-2 | level-2 ] | ospf process-id [ match { external [ 1 | 2 ] | internal | nssa-external [ 1 | 2 ] } * ] | rip | static } [ metric metric-value | metric-type { 1 | 2 } | route-map route-map-name | subnets | tag tag-value ] *
缺省情况下,未配置路由重分布功能。
在AS边界路由器上需要引入默认路由,使得OSPF域内访问其他AS域默认通过该边界路由器。
当执行redistribute或者default-information命令时,OSPF路由设备会自动变为ASBR(自治域边界路由设备)。但是ASBR不会自动产生缺省路由,并通告给OSPF路由域中的所有路由设备。ASBR产生缺省路由,必须用default-information originate路由进程配置命令进行配置。
外部缺省路由的路由量度值,只能由default-information originate命令进行定义,不能通过命令default-metric设置。
Stub区域中的路由设备不可以产生外部缺省路由。
所关联的route-map的set metric取值范围为0~16777214,如果超出该范围,将无法引入路由。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置生成缺省路由。
default-information originate [ always | metric metric | metric-type type | route-map map-name ] *
缺省情况下,未生成缺省路由。
如果选择always参数,OSPF路由进程不管是否存在缺省路由,都会向邻居通告一条外部缺省路由。但是本地路由设备不会显示该缺省路由,要确认是否产生缺省路由,可以用show ip ospf database观察OSPF链路状态数据库,链路标识为0.0.0.0的外部链路描述了缺省路由。OSPF的邻居通过执行show ip route命令,可以看到缺省路由。
在AS域内或者AS边界配置某台设备为ASBR。
当执行redistribute或者default-information命令后,OSPF路由设备会自动变为ASBR(自治域边界路由设备)。若未配置上述命令,也希望设备成为ASBR,则配置asbr enable。若删除asbr enable配置,但redistribute或者default-information仍然有配置,设备仍然是ASBR。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置设备为ASBR。
asbr enable
缺省情况下,ASBR处于关闭状态。
明细路由汇聚,减少路由信息的交互,缩小路由表规模,增强路由稳定性。屏蔽或者过滤路由。
使用本功能前必须配置OSPF基本功能。
汇总路由的地址范围有可能超出路由表中实际的网络范围,如果数据发往汇总范围内不存在的网络,将有可能发生路由环路或加重路由设备的处理负担。为阻止这种情况的发生,需要向路由表中添加一条Discard路由屏蔽或者过滤路由。
OSPF路由汇聚配置任务如下,以下配置均可选,请根据实际情况配置:
配置区域间路由汇聚
配置外部路由汇聚
配置Discard Route
大规模OSPF网络中,配置路由聚合可以减小路由表规模和LSA信息,降低系统损耗。
对OSPF区域的路由进行汇聚时,需要配置。
若无特殊要求,应在被汇聚路由所在区域的ABR上配置。
该命令只能在ABR上执行有效,用来将一个区域的多个路由合并或汇聚成一条路由,再通告到其它区域去。路由信息的合并行为只发生在区域边界,区域内部路由设备上看到的都是具体的路由信息,但其它区域的设备只能看到一条汇聚路由。可以通过设置advertise和not-advertise选项来决定是否公布此汇聚范围,起到屏蔽和过滤的作用,缺省是向外公布。可以通过cost选项来设置汇聚路由的度量值。
可以定义多个区域路由汇聚命令,这样整个OSPF路由域的路由将得到简化,特别是网络规模大时,会提高网络转发性能。
当配置了多条汇总,并且项目直接有包含关系的时候,路由是根据最长匹配原则确定被汇总的路由范围。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置区域间路由汇聚。
area area-id range ipv4-address mask [ advertise | not-advertise ] [ cost cost | inherit-minimum ]
缺省情况下,区域间汇聚路由功能处于关闭状态。
需要引入OSPF域路由过多的时候,配置路由聚合可以减小路由表规模和LSA信息,降低系统损耗。
对域外的路由进行汇聚时,需要配置。
若无特殊要求,应在引入被汇聚路由的ASBR上配置。
当路由从其它路由进程重新分布,注入OSPF路由进程时,每条路由均分别以一个外部链路状态的方式通告给OSPF路由设备。如果注入的路由是一个连续的地址空间,自治域边界路由设备可以只通告一个汇聚路由,从而减小路由表的规模。
area range汇聚的是OSPF区域之间路由,而summary-address汇聚的是OSPF路由域的外部路由。
summary-address命令配置在NSSA的ABR转换者上时,对重分布的路由及LSA从7类转5类的路由进行汇聚,而配置在ASBR(非NSSA的ABR转换者)时,只对重分布的路由进行汇聚。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置外部路由汇聚。
summary-address ipv4-address mask [ not-advertise | [ tag tag-value | cost cost | distribute-delay interval | nssa-only ] * ]
缺省情况下,汇聚路由功能处于关闭状态。
在路由汇聚时,汇聚后的范围有可能超出路由表中实际的网络范围,如果数据发往汇聚范围内不存在的网络,将有可能发生路由环路或加重路由设备的处理负担。为阻止这种情况的发生,需要在ABR或ASBR添加一条Discard路由到路由表。该路由自动生成,并且不会被传播。
Discard路由是往路由表添加一条出口是Null 0的路由,不会生成对应的LSA,因此邻居不会感知。匹配该路由的报文被丢弃。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置Discard Route。
discard-route { external | internal }
缺省情况下,添加Discard路由处于开启状态。
被过滤掉的路由不能被加载到路由表或被传播给邻居,网络内用户将无法访问指定的目的网络。
使用本功能前必须配置OSPF基本功能。
路由过滤有如下三种方式:
若要使接口将不再接收和发送Hello报文,可通过passive-interface命令将其设置为被动接口。
ASBR引入外部路由时,如果需要对引入的外部路由进行过滤,可以配置distribute-list out。
若需要限制用户访问指定的目的网络,配置distribute-list in对收到的LSA计算出的路由进行过滤,满足过滤条件的路由才能用于转发。它并不会影响链路状态数据库,对邻居的路由表也不会产生任何影响。
OSPF路由过滤配置任务如下,以下配置均可选,请根据实际情况配置:
配置被动接口
关闭接口发送LSA更新报文功能
配置区域间路由过滤
配置重分布路由过滤
配置对学习的路由过滤
为了防止网络中的其他路由设备动态的学习到本路由设备的路由信息,可以将本路由设备的指定网络接口设为被动接口或者指定网络接口下的IP地址为被动地址,此时该接口无法收发OSPF报文。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置被动接口。
passive-interface { default | interface-type interface-number | interface-type interface-number ipv4-address }
缺省情况下,接口的被动模式处于关闭状态,允许所有接口收发OSPF报文。
要阻止在某个接口上发送LSA的更新报文时,可以在该接口上打开该功能,打开该功能后,本设备将不向邻居通告LSA更新报文,但仍然同邻居建立邻接关系并接收邻居发来的LSA信息。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置LSA更新报文过滤功能。
ip ospf database-filter all out
缺省情况下,接口的LSA更新报文扩散功能处于开启状态,即可以在该接口上发送任何LSA更新报文。
路由过滤可以限制路由被加载到路由表或被传播给邻居,网络内用户将无法访问指定的目的网络。
该命令只能在ABR上进行配置。
当需要在该ABR上配置不同区域之间路由学习的过滤条件时,使用本命令。
若限制用户访问OSPF某个区域的网络,建议配置。
若无特殊要求,应在被过滤路由所在区域的ABR上配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置ACL或者Prefix List,请选择其中一项进行配置。
配置ACL。
access-list acl-number { deny | permit } { source-ipv4-address source-ipv4-wildcard | host source-ipv4-address | any } [ time-range tm-range-name ] [ log ]
配置Prefix List。
ip prefix-list prefix-list-name [ seq seq-number ] { deny | permit } ipv4-prefix [ ge minimum-prefix-length ] [ le maximum-prefix-length ]
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置区域间路由过滤。
area area-id filter-list { access acl-number | prefix prefix-list-name } { in | out }
缺省情况下,ABR上未配置过滤列表功能。
distribute-list out与redistribute route-map命令类似,对从其他协议重分布到OSPF中的路由进行过滤,但它本身不执行路由重分布,一般与redistribute命令配合使用。
ASBR引入外部路由时,如果需要对引入的外部路由进行过滤,必须配置。
若无特殊要求,应在引入被过滤外部路由的ASBR上配置。
ACL过滤规则和前缀列表过滤规则不能在该配置中共存,即若对某一来源的路由使用ACL过滤规则,则不能再配置前缀列表进行过滤。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置ACL或者Prefix List,请选择其中一项进行配置。
配置ACL。
access-list acl-number { deny | permit } { source-ipv4-address source-ipv4-wildcard | host source-ipv4-address | any } [ time-range tm-range-name ] [ log ]
配置Prefix List。
ip prefix-list prefix-list-name [ seq seq-number ] { deny | permit } ipv4-prefix [ ge minimum-prefix-length ] [ le maximum-prefix-length ]
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置重分布路由过滤。
distribute-list { [ acl-name | acl-number ] | prefix prefix-list-name } out [ arp-host | bgp | connected | isis [ area-tag ] | ospf process-id | rip | static ]
缺省情况下,重分布路由过滤功能处于关闭状态,即重分布路由全通过。
对收到的LSA计算出的路由进行过滤,满足过滤条件的路由才能用于转发。
通过distribute-list in过滤只影响本地路由转发,不影响LSA计算路由。因此,如果确定需要在ABR上配置过滤,则由于LSA仍然可以计算出路由,仍会生产Type 3 LSA往其他区域通告,这将导致黑洞路由存在。这时可以在ABR上使用area filter-list或area range带not-advertise选项来避免产生黑洞路由。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置ACL或者Prefix List,请选择其中一项进行配置。
配置ACL。
access-list acl-number { deny | permit } { source-ipv4-address source-ipv4-wildcard | host source-ipv4-address | any } [ time-range tm-range-name ] [ log ]
配置Prefix List。
ip prefix-list prefix-list-name [ seq seq-number ] { deny | permit } ipv4-prefix [ ge minimum-prefix-length ] [ le maximum-prefix-length ]
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置对学习的路由过滤。
distribute-list { [ acl-name | acl-number ] | gateway prefix-list-name | prefix prefix-list-name [ gateway prefix-list-name ] | route-map route-map-name } in [ interface-type interface-number ]
缺省情况下,LSA计算的路由过滤功能处于关闭状态,即LSA计算出的路由全通过。
修改协议运行参数,改变协议运行状态,从而调整OSPF网络收敛速度。
使用本功能前必须配置OSPF基本功能。
邻居维持时间不得小于Hello间隔时间。
调整OSPF网络的收敛速度配置任务如下,以下配置均可选,请根据实际情况配置:
配置Hello时间
配置Dead时间
配置LSU发送延迟
配置LSU重传间隔
配置LSU生成时间
配置LSA分组刷新时间
配置LSA分组
配置LSA重复接收延迟
配置区域间路由计算延时
配置外部路由计算延时
配置SPF计算时间
开启双向维持功能
Hello报文时间间隔包含在Hello报文中。该时间越短,OSPF检测到拓扑变化的时间也将越快,但是将增加网络流量。
在链路两端的路由器上配置。
同一网段上的所有路由设备的Hello报文时间间隔必须一致。如果手工修改判断邻居失效时间,必须保证Hello报文时间间隔不能大于邻居失效时间。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置Hello时间。
ip ospf hello-interval hello-interval
缺省情况下,以太网、PPP、HDLC封装接口和帧中继点到点子接口Hello时间间隔为10秒;非帧中继点到点子接口、X.25接口Hello时间间隔为30秒。
若用户希望链路失效时加快协议收敛,可调整该配置。OSPF的邻居失效时间包含在Hello报文内。如果OSPF在邻居失效时间内,没有收到邻居发送的Hello报文,就宣告邻居无效并从邻居表中删除该邻居记录。
在链路两端的路由器上配置。
Dead时间缺省为Hello报文时间间隔的4倍,如果修改了Hello时间间隔,会自动修改邻居失效时间。
用该命令可以手工修改OSPF判断邻居失效时间,配置时有如下注意事项:
邻居失效时间间隔不能小于Hello报文时间间隔;
同一网段上的所有路由设备的邻居失效时间间隔必须一致。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置Dead时间。
ip ospf dead-interval { dead-interval | minimal hello-multiplier multiplier }
缺省情况下,Fast Hello功能处于关闭状态,邻居失效时间为Hello报文发送间隔的4倍。
在低速网络中,设备可以设置延迟发送LSU。
在传输LSU报文之前,该报文中所有LSAs(链路状态描述)的Age字段将增加,增加量根据LSU发送延迟而定义。设置该参数必须考虑到该接口的发送和线路传播时延,对于低速线路,接口的传输延时应该设置得大些。虚拟链路的LSU报文传输延时,用area virtual-link命令跟随transmit-delay关键字进行定义。
对Age达到3600的LSA,将进行重传或请求重传,如果没有得到及时刷新,超时的LSA将从链路状态数据库中清除。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置LSU的传输延时。
ip ospf transmit-delay transmit-delay
缺省情况下,LSU的传输延时为1秒。
网络拥塞时,频繁LSU重传会加剧拥塞。为了避免不必要的重传,在串行线路或虚拟链路上,可以将重传时间设置得大一点。虚拟链路的LSU报文重传时间间隔用area virtual-link命令跟随retransmit-interval关键字进行定义。
当路由设备发送完一个LSU报文,该LSU报文还保留在发送缓冲队列中。如果在LSU重传时间间隔内,没有得到邻居的确认,设备将重新发送LSU报文。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置LSU的重传时间间隔。
ip ospf retransmit-interval retransmit-interval
缺省情况下,LSU的重传时间间隔为5秒。
根据不同网络性能和收敛速度等不同要求,可以调整LSU的生成时间。
对链路变化收敛性要求较高时,delay-time可以配置为较小值。若希望减少CPU消耗,可以把delay-time、hold-time和max-wait-time值调高。
配置命令时,hold-time不允许小于delay-time,max-wait-time也不允许小于hold-time。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置LSA生成指数退避算法。
timers throttle lsa all delay-time hold-time max-wait-time
缺省情况下,LSA生成的最小延迟时间为0毫秒,首次与第2次刷新LSA最短时间间隔为5000毫秒,连续刷新LSA最大时间间隔为5000毫秒。
每个LSA都有各自的生存时间(LSA age),当生存时间达到3600秒时,需要进行刷新以防止正常的LSA通告达到最大生存时间而被清除掉。如果对每个LSA都独立进行更新和老化计算,将消耗大量的CPU资源。为了有效利用CPU资源,将设备内LSA分组进行刷新操作。将一定时间内(步调时间间隔)收到的LSA设为同一个分组,设备将为此分组维护一个刷新计时器,计时器到期后,分组内的LSA会统一刷新。
在LSA数量一定的情况下,步调时间间隔越大,定时器期满后处理的LSA数量越多,会导致CPU在一定时间内高负载。为了保持CPU的稳定,建议每次期满处理的LSA数量不宜太多。如果LSA数量较大,建议降低步调间隔。比如,数据库中有10000条LSA,可以降低步调时间间隔,如果只有40~100条,则可以调整到10~20分钟。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置LSA分组刷新时间。
timers pacing lsa-group pacing-interval
缺省情况下,步调时间间隔为30秒。
如果路由器的路由条目数量多,同步LSDB会发送大量LSU,容易造成网络拥塞。将LSU进行分组,间隔发送,保证网络稳定。
环境中LSA数量很多,设备本身负荷太大时,配置适当的transimit-time和transimit-count可以抑制网络中洪泛的LSU报文数量。
CPU负荷不高,网络带宽负荷不大时,减小transimit-time增加transimit-count可以加快环境的收敛。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置lsa分组刷新间隔。
timers pacing lsa-transmit transmit-interval transmit-count
缺省情况下,LSU发送分组更新时间间隔为40毫秒,每组LS-UPD报文的个数为1。
为防止网络连接或者路由频繁动荡引起的过多占用网络带宽和设备资源,可以根据当前网络中的网络连接和设备资源情况,配置设备在指定时间之内接收到相同LSA时不做处理。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置lsa重复接收延迟。
timers lsa arrival arrival-time
缺省情况下,重复接收延时为1000毫秒。
在路由震荡时,频繁计算区域间路由会消耗大量设备性能,推迟区域间路由计算的过程,可以降低设备负载。
对网络收敛时间有严格要求时,不能更改该时间。
对于存在大量区间、外部路由的网络,且网络不稳定时,可调整相应的延时。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置区域间路由计算延时时间。
timers throttle route inter-area ia-delay
缺省情况下,区域间路由计算无延时。
在路由震荡时,频繁计算外部路由会消耗大量设备性能,推迟外部路由计算的过程,可以降低设备负载。
对网络收敛时间有严格要求时,不能更改该时间。
对于存在大量区间、外部路由的网络,且网络不稳定时,可调整相应的延时。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置外部路由计算延时时间。
timers throttle route ase ase-delay
缺省情况下,外部路由计算无延时。
LSDB变化会触发SPF计算,如果网络频繁抖动则会耗费大量CPU资源。设置合理的SPF计算的延时时间,可以避免占用过多的路由器内存和带宽资源。
与timers spf命令相比,timers throttle spf命令能够进行更灵活的设置,既可以加快SPF计算收敛速度,又可以在拓扑连续变化时更好的减少SPF计算的系统资源消耗,所以调整SPF计算时间推荐使用timers throttle spf命令。
spf-holdtime的值不能小于spf-delay,否则spf-holdtime的值将被自动设置为与spf-delay相等。
spf-max-waittime的值不能小于spf-holdtime,否则spf-max-waittime的值将被自动设置为与spf-holdtime相等。
timers throttle spf配置与timers spf配置会互相覆盖。
当timers spf与timers throttle spf都未配置时,缺省值为timers throttle spf配置的缺省值。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置SPF计算时间。以下配置请选择其中一项进行配置。
timers throttle spf spf-delay spf-holdtime spf-max-waittime
缺省情况下,SPF计算的等待时间为50毫秒,两次SPF运算之间的最小时间间隔为200毫秒,最大时间间隔为5000毫秒。
timers spf spf-delay spf-holdtime
缺省情况下timers spf命令不生效,SPF计算延时是以timers throttle spf命令的缺省配置为准。
在较大的网络中,可能会出现大量的报文收发,占用较高的CPU和内存资源,造成部分报文的延迟或丢弃。如果Hello报文的处理时长超出了邻居失效时间,将导致对应的邻接超时断开。启用双向维持功能后,除了Hello报文外,来自某个邻居的DD、LSU、LSR和LSAck报文也能够用于维持该邻居的双向关系,避免由于Hello报文的延迟或丢弃而导致邻居的失效。此功能默认开启,建议保持开启。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
启动双向维持。
two-way-maintain
缺省情况下,OSPF双向维持功能处于开启状态。
认证是为了阻止非法接入网络的路由器和伪造OSPF报文的主机参与OSPF协议过程。所有接入OSPF网络的路由器都必须经过认证,保证OSPF协议的稳定性和抗入侵性。
使用本功能前必须配置OSPF基本功能。
在区域上配置认证,则在属于此区域的所有接口上生效。
当区域和接口同时配置认证时,接口配置优先生效。
OSPF认证配置任务如下:
配置区域认证类型
配置接口认证类型
(可选)配置接口明文认证密钥
(可选)配置接口MD5认证密钥
OSPF区域认证可以提高OSPF区域安全性,认证模式和口令一致是建立邻居的必要条件。如果要求同一区域内所有接口启用相同的认证类型,建议通过区域认证类型完成配置。若当路由器接入需要认证的网络时,需要配置区域认证或接口认证。
设备可以支持三种认证类型:
类型0,不要求认证,当没有用该命令启用OSPF认证,OSPF数据包中的认证类型为0。
类型1,为明文认证模式,配置该命令时,没有使用message-digest选项。
类型2,为MD5认证模式,配置该命令时,使用message-digest选项。
一个OSPF区域中所有的路由设备,必须采用同一种认证类型。如果启用了认证,还必须在有连接邻居的接口配置认证口令。
若配置Keychain认证,则使用Keychain配置的口令及认证类型,当前Keychain支持明文认证、MD5认证和SM3认证。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id [ vrf vrf-name ]
配置区域认证类型。
area area-id authentication [ keychain keychain-name | message-digest ]
缺省情况下,OSPF区域认证功能处于关闭状态。
OSPF接口认证可以提高OSPF邻居通讯安全性,认证模式和口令一致是建立邻居的必要条件。如果要求同一区域内所有接口启用不同的认证类型,则必须在接口上配置认证类型。若当路由器接入需要认证的网络时,需要配置区域认证或接口认证。
如果命令ip ospf authentication后面不跟任何选项表示进行明文认证。如果将认证方式设置为null,则强制设置为不认证,当接口上的认证方式和接口所在的区域的认证方式都设置时,优先采用接口上的认证方式。
若配置Keychain认证,则使用Keychain配置的口令及认证类型,当前Keychain支持明文认证、MD5认证和SM3认证。
若已配置区域认证,当使用no选项将接口认证方式恢复缺省值时,接口认证方式由区域认证的配置决定。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置接口认证类型。
ip ospf authentication [ keychain keychain-name | message-digest | null ]
缺省情况下,接口上没有设置认证方式,采用的是所在的区域的认证类型。
路由器接入需要明文认证的网络。密钥信息将被插入所有OSPF报头。如果密钥不一致,两台直接连接的设备不能建立OSPF邻居关系,也不能进行路由信息的交换。
不同接口可以配置不同密钥,但所有连接在同一物理网段上的路由设备必须配置相同密钥。
需要提前在接口或者区域将认证模式设置为明文认证。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置接口为明文认证。
ip ospf authentication
配置接口明文认证密钥。
ip ospf authentication-key [ 0 | 7 ] key
缺省情况下,认证密钥处于关闭状态。
使用MD5密文验证模式,可以增强一定的安全性。
MD5认证安全性较高,建议用户使用MD5认证。明文认证与MD5认证必须配置一个。HMAC-SHA256算法安全性最高,也最消耗性能,MD5算法安全性最低,消耗性能最小,请根据实际情况进行选择。
若路由器接入需要MD5认证的网络,需要配置。
需要提前在接口或者区域将认证模式设置为密文认证。
key-id与密钥都匹配时认证才通过。
同一个接口配置多个key-id,发送报文时只有最后配置的key-id生效,但接收报文时所有的key-id都可以参与认证。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置接口使用密文认证。
ip ospf authentication message-digest
配置接口MD5认证密钥。
ip ospf message-digest-key key-id md5 [ 0 | 7 ] key
缺省情况下,密文密钥功能处于关闭状态。
修改并发邻居数量限制,能够控制OSPF邻居的并发建立,缓解设备压力。
使用本功能前必须配置OSPF基本功能。
修改并发邻居数量限制配置任务如下,以下配置均可选,请根据实际情况配置:
配置当前进程并发邻居数
配置所有进程并发邻居数
当路由设备与多个邻居同时交换数据,其性能受到影响时,配置当前进程的并发邻居数,可限制每个OSPF实例允许同时并发交互(发起或接受)的邻居最大数目。若路由器连接了大量其他路由器,且希望加快OSPF邻居建立过程,建议进行配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
配置当前进程并发邻居数。
max-concurrent-dd neighbor-number
缺省情况下,单OSPF路由进程最大邻居数为5。
当路由设备与多个邻居同时交换数据,其性能受到影响时,配置所有进程的并发邻居数,可限制所有OSPF实例允许同时并发交互(发起或接受)的最大邻居数目。若路由器连接了大量其他路由器,且希望加快OSPF邻居建立过程,建议进行配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置所有进程并发邻居数。
router ospf max-concurrent-dd max-neighbor
缺省情况下,所有OSPF路由进程的最大邻居数目为10。
启用GR(Graceful Restart,优雅重启)功能的路由器在控制层面的重启过程中转发层面能够继续指导数据的转发,同时控制层面邻居关系的重建以及路由计算等动作不会影响转发层面的功能,从而避免了路由震荡引发的业务中断,提高了整网的可靠性。
使用本功能前必须配置OSPF基本功能。
邻居路由器必须支持GR Helper。
GR时间不能小于邻居路由器的邻居维持时间。
启动GR功能配置任务如下:
开启GR功能
(可选)配置OSPF GR Helper功能
优雅重启功能基于OSPF实例配置,不同的实例可以根据情况配置不同的参数。该命令用于配置设备的GR Restarter能力。重启周期为GR从开始到结束的最长时间,在这段时间内执行链路状态重建工作,使OSPF恢复到原有状态。当重启周期到期后,OSPF将退出GR状态,执行普通的OSPF操作。
保证GR成功执行、转发不间断的前提是拓扑保持稳定。若拓扑发生改变,OSPF将尽快收敛,不再等待GR的继续执行,避免长时间的转发黑洞。当开启拓扑检测功能时,设备才能感知GR期间的拓扑变化。
该功能默认已开启,建议保持开启状态。
若关闭拓扑检测功能,对于GR过程中的拓扑变化不能及时收敛,有可能造成长时间的转发黑洞。
若开启拓扑检测功能,拓扑变化时有可能引起转发间断,但间断时间远小于关闭拓扑检测造成的转发黑洞。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
启动Opaque LSA处理能力。
capability opaque
缺省情况下,Opaque LSA处理功能处于开启状态。
启动GR功能。
graceful-restart [ grace-period grace-period | inconsistent-lsa-checking ]
缺省情况下,GR能力处于开启状态。
当邻居设备实施优雅重启时,GR Helper将发送Grace-LSA通告其所有的邻居设备。如果本设备配置GR Helper能力,在收到Grace-LSA时,会成为GR Helper,辅助邻居完成优雅重启。
该功能默认已开启,建议保持开启状态。
设备成为GR Helper后,缺省情况下不对网络变化进行检测,如果网络发生变化,也将等到GR完成之后才会重新进行收敛。如果用户希望在GR过程中,对于变化的网络能够快速探测,可以通过配置strict-lsa-checking或者internal-lsa-checking选项启动检测,其中前者对任何表示网络信息的LSA(Types 1~5,7)进行检测,后者对表示AS域内路由的LSA(Types 1-3)进行检测。在网络规模较大的情况下,不建议用户启动LSA检测选项,因为局部网络的变化会触动GR结束,从而导致整网的收敛降低。
配置disable参数表示禁止对任何执行优雅重启的设备进行GR辅助。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
配置OSPF GR Helper功能。
graceful-restart helper { disable | internal-lsa-checking | strict-lsa-checking }
缺省情况下,GR Helper能力处于开启状态。设备成为GR Helper后,不检查LSA变化。
与BFD联动后,一旦发生链路故障,OSPF可以快速发现路由失效。此项配置有助于缩短流量中断时间。
使用本功能前必须配置OSPF基本功能。
接口必须先配置BFD参数。
在OSPF进程模式与接口模式下同时配置与BFD联动时,接口下的配置优先生效。
链路两端的路由器都需要配置。
开启OSPF与BFD联动配置任务如下,以下配置均可选,请根据实际情况配置:
配置指定OSPF接口的BFD功能
配置OSPF进程下所有接口的BFD功能
配置指定接口的BFD与OSPF联动,可以快速检测该接口故障,加快OSPF收敛速度。
接口配置BFD的优先级高于OSPF进程下配置BFD。
用户可以根据实际环境,通过ip ospf bfd命令选择指定的接口使用BFD进行链路检测,也可以使用OSPF进程配置模式下的命令bfd all-interfaces配置参与OSPF运行的所有接口通过BFD进行链路检测,使用ip ospf bfd disable选择关闭指定接口的BFD检测功能。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置OSPF接口与BFD联动。
ip ospf bfd [ disable ]
缺省情况下,接口下的BFD功能处于关闭状态,以OSPF进程配置模式下的BFD配置为准。
OSPF协议通过Hello报文动态发现邻居,当OSPF启动BFD检测功能后,将会为达到Full关系的邻居建立BFD会话,通过BFD机制检测邻居状态,一旦BFD邻居失效,OSPF会立刻进行网络收敛。
用户也可以通过接口配置模式命令ip ospf bfd [ disable ]启动或者关闭指定接口的BFD检测功能,接口配置的优先级高于进程配置模式下的bfd all-interfaces命令。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
进入OSPF配置模式与BFD联动。
bfd all-interfaces
缺省情况下,所有接口BFD功能处于关闭状态。
启动溢出功能,使得路由器在内存不足或数据库达到上限时不再加载新的路由。
使用本功能前必须配置OSPF基本功能。
进入溢出状态后,可以通过使用clear ip ospf process命令,或者关闭再重新启动OSPF协议的方式退出溢出状态。
开启溢出功能配置任务如下,以下配置均可选,请根据实际情况配置:
配置内存OVERFLOW
配置数据库OVERFLOW
配置外部LSA数据库OVERFLOW
OSPF进入溢出状态主要是丢弃新学到外部路由,该行为能够有效保证内存不再增长。
若域内有大量路由,可能导致路由器内存不足,建议配置。
开启该功能,在OSPF进入溢出状态丢弃新学到的外部路由,可能会引起整网出现路由环路的现象。为了减少出现这种现象的产生,OSPF会生成一条指向NULL口的缺省路由,从而降低这种现象产生的概率,该路由在溢出状态下将一直存在。
用户可以使用clear ip ospf process命令重新复位OSPF运行,清除OSPF溢出状态。使用no选项不允许OSPF在内存不足时进入溢出状态,这可能会造成内存资源继续消耗。当内存消耗到一定程度时,OSPF实例将停止运行,并删除所有学到的路由。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
配置内存OVERFLOW。
overflow memory-lack
缺省情况下,内存不足时,OSPF允许进入溢出状态。
控制LSDB中的路由最大数量,避免内存不足导致路由器运行异常。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
配置数据库OVERFLOW。
overflow database max-lsa [ hard | soft ]
缺省情况下,未配置LSA最大数目。
控制LSDB中的外部路由最大数量,避免内存不足导致路由器运行异常。
若ASBR引入了大量外部路由,可能导致路由器内存不足,建议配置。
在使用该功能时必须保证OSPF主干区域和普通区域的所有设备配置相同的max-dbsize值,否则可能引起如下现象:
整网的链路状态数据库无法达成一致,邻居无法达到Full状态。
错误的路由,包括环路的情况。
频繁的AS-External-LSA重传。
如果限制了External-LSA最大数,当external-LSA的数目超过配置的最大值后,不再恢复正常状态。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
配置外部LSA数据库OVERFLOW。
overflow database external max-dbsize wait-time
缺省情况下,未配置与External-LSA的最大数目。
当VPN用户网络内部运行OSPF时,在PE/CE之间运行OSPF协议,简化CE的配置和管理。
LDP的Router ID必须为32位。
OSPF的VPN扩展特性配置任务如下,以下所有配置任务均为可选配置,请根据实际情况选择配置:
配置域ID
配置域标签
配置伪链路
关闭VRF OSPF实例环路检测
配置VPN路由扩展团体属性
关闭LSA的DN位检测环路功能
关闭LSA的路由标记检测环路功能
域ID用来表示OSPF实例所属的域信息。
VRF OSPF实例可以配置多个域ID,但是只有唯一一个主域ID,其余的都是从域ID。当OSPF路由转化为VPN路由对外通告时,VPN路由中包含的只有主域ID。
本功能只对关联VRF的OSPF实例有效。
不同VRF OSPF实例可以配置相同的域ID,相互没有影响。
同一VPN内的VRF OSPF实例应配置相同的域ID,以保证路由通告的正确性。
建议把属于一个VPN内的所有VRF OSPF实例配置成相同的域ID。
配置VPN特性前,需完成VRF配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id vrf vrf-name
配置域ID。
domain-id { ipv4-address [ secondary ] | null | type { 0005 | 0105 | 0205 | 8005 } value hex-value [ secondary ] }
缺省情况下,OSPF实例的域ID值为null,类型值为0x0005。
域标签,即VRF OSPF实例的VPN路由标记,用于在运行OSPF协议的PE-CE间检测环路。如果一个VPN站点连接多台PE,则从PE上通过MP-BGP学习到VPN路由。若通过5类或者7类LSA通告给VPN站点,之后又可能被连接该VPN站点的其他PE路由器学习到,并发布出去,这就可能产生环路。为了阻止上述环路,在PE上连接同一个VPN站点的VRF OSPF实例配置相同的VPN路由标记。VRF OSPF实例向VPN站点发送5类或者7类LSA时,该LSA中也会附上VPN路由标记信息。其他PE站点收到这种5类或者7类LSA时,如果检测到LSA中的VPN路由标记和本地OSPF实例的VPN路由标记一致,该LSA不会参与OSPF计算。一般把属于同一个VPN的OSPF实例都配置相同的Tag值。
VPN路由标记在OSPF报文中占用4个字节,若VRF OSPF实例没有配置该命令时,则缺省情况下OSPF实例通告5类或者7类LSA时设置VPN路由标记的前两个字节为0xD000,后面两个字节为本地BGP的AS号,比如本地BGP的AS号为1,则VPN路由标记的十六进制的表示形式为:0xD0000001。
该功能只对关联VRF的OSPF实例有效,且只对BGP重分布路由才生效。
配置VPN特性前,需完成VRF配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id vrf vrf-name
配置VPN路由标记。
domain-tag tag
缺省情况下,VRF OSPF实例缺省值为本地BGP协议的AS号。
伪链路主要用在VPN站点间有后门链路(Back-door)的环境中,如果此时希望VPN数据仍然通过MPLS骨干网传输,则可以在两台PE的VRF OSPF实例间建立伪链路,两台PE的VRF OSPF实例通过该伪链路可以建立OSPF邻居,在该伪链路上分发LSA报文。
两台PE配置伪链路的区域ID要一致。
一台PE上所配置伪链路的<源地址,目的地址>必须和另外一台PE所配置伪链路的<目的地址,源地址>相同。
PE上用来建立伪链路的源地址和目的地址必须均是VRF所绑定的32位Loopback地址。
由于通过伪链路通告的OSPF路由缺少VPN标签,因此该路由并不能用于转发,实际的转发仍然需要通过BGP VPNv4路由。因此实际配置中必须保证通过伪链路学习到的路由也会通过MP-BGP协议学习到。
建立伪链路的源地址必须参与BGP协议VPNv4路由通告,但不能加入VRF OSPF实例的计算。
配置VPN特性前,需完成VRF配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id vrf vrf-name
配置伪链路。
area area-id sham-link source-ipv4-address destination-ipv4-address [ [ authentication [ keychain kechain-name | message-digest | null ] | cost number | dead-interval dead-interval | hello-interval hello-interval | retransmit-interval retransmit-interval | transmit-delay transmit-delay ] * | authentication-key [ 0 | 7 ] key | message-digest-key key-id md5 [ 0 | 7 ] key ]
缺省情况下,未配置伪链路。
OSPF实例的环路检测是防止VPN路由在传播中可能的环路。
缺省情况下,VRF OSPF实例支持PE-CE OSPF特性(即根据域ID转化LSA、DN比特位和VPN路由标记三种功能)。如果不希望VRF OSPF实例支持PE-CE OSPF特性,则可以通过命令capability vrf-lite命令关闭。
该命令只对关联VRF的OSPF实例有效。
在某些应用场景中,可能希望关闭VRF OSPF实例的环路检测功能:比如VPN用户用MCE设备和PE交互VPN路由,如果MCE和PE间运行OSPF协议交互VPN路由,为了VPN站点可以学习到其他VPN站点的路由,就需要通过命令capability vrf-lite关闭MCE设备的VRF OSPF实例的环路检测功能。
配置VPN特性前,需完成VRF配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id vrf vrf-name
开启环路检测功能。
capability vrf-lite [ auto ]
缺省情况下,VRF关联的OSPF实例支持环路检测功能处于开启状态。
在VRF的OSPF路由形成VPN路由时,该VPN路由的扩展团体属性中也会携带OSPF实例的Router-ID和Router-Type,为兼容不同厂商的实现,可手动修改Router-ID和Router-Type。
OSPF路由重分布给BGP形成VPN路由时,也会附上OSPF路由的扩展团体属性,包括router-id和route-type的扩展团体属性。缺省情况下,router-id的扩展团体属性的类型是0x0107,route-type的扩展团体属性是0x0306。
该功能只对关联VRF的OSPF实例有效。
配置VPN特性前,需完成VRF配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id vrf vrf-name
配置VPN路由扩展团体属性。
extcommunity-type { router-id { 0107 | 8001 } | route-type { 0306 | 8000 } } *
缺省情况下,router-id的类型为0107,route-type的类型为0306。
在L3VPN的CE双归场景,PE之间通过抑制DN位的路由计算来避免环路。但在特定场景下,可能允许PE之间互相学习路由,且不会产生环路,此时通过该配置取消DN位的检查。当PE设备连接MCE设备时,MCE设备需要计算PE通告的路由,不会检查DN位。OSPF的3/5/7类LSA都可以携带DN位。
该功能只对关联VRF的OSPF实例有效。
配置VPN特性前,需完成VRF配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id vrf vrf-name
禁止使用LSA的DN位检测环路。
disable-dn-bit-check [ ase | nssa | summary ]
缺省情况下,LSA的DN位检测环路功能处于开启状态。
在L3VPN的CE双归场景,当PE收到的LSA的路由标记与本端相同时,不计算路由,由此避免环路。在特定场景下,允许PE间互相学习路由,且不会产生环路,此时可设置多台PE的路由标记不同,或者设置不检查路由标记。当PE设备连接MCE设备时,MCE设备需要计算PE通告的路由,不会检查路由标记。OSPF的5/7类LSA可携带路由标记。
该命令只对关联VRF的OSPF实例有效。
配置VPN特性前,需完成VRF配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf process-id vrf vrf-name
禁止使用LSA的路由标记来检测环路。
disable-tag-check
缺省情况下,LSA的路由标记检查环路处于开启状态。
通过网管软件管理OSPF协议的参数及监控协议运行状态。
使用本功能前必须配置OSPF基本功能。
如需开启OSPF的MIB功能,必须开启SNMP-Server的MIB功能。
如需开启OSPF的Trap功能,必须开启SNMP-Server的Trap功能。
如需输出OSPF的日记信息,必须开启设备的日记开关。
网管功能配置任务如下,以下所有配置任务均为可选配置,请根据实际情况选择配置:
配置MIB绑定
配置Trap
开启日志记录功能
由于OSPFv2 MIB没有OSPFv2进程信息,所以通过SNMP操作OSPFv2进程时,只能操作唯一的指定进程。缺省情况下,OSPFv2 MIB绑定在进程号最小的OSPFv2进程上,用户的操作都只对该进程生效。若希望通过网管软件管理指定的OSPF实例的参数,需要将MIB与OSPF进程绑定。
如果用户希望能够通过SNMP操作指定的OSPFv2进程,可以通过本功能将MIB绑定到该进程上。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
配置MIB绑定。
enable mib-binding
缺省情况下,MIB绑定的进程为进程号最小的OSPFv2进程。
若希望通过网管软件监控协议的运行状态,需要配置。
本命令对应功能受snmp-server命令的限制,必须先打开配置开关snmp-server enable traps ospf,再配置enable traps以后,对应的OSPF Trap才能够正确发送。
本命令不受进程绑定MIB的限制,允许不同进程同时打开Trap开关。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
配置Trap。
enable traps [ error [ ifauthfailure | ifconfigerror | ifrxbadpacket | virtifauthfailure | virtifconfigerror | virtifrxbadpacket ] * | lsa [ lsdbapproachoverflow | lsdboverflow | maxagelsa | originatelsa ] * | retransmit [ iftxretransmit | virtiftxretransmit ] * | state-change [ ifstatechange | nbrrestarthelperstatuschange | nbrstatechange | nssatranslatorstatuschange | restartstatuschange | virtifstatechange | virtnbrrestarthelperstatuschange | virtnbrstatechange ] * ]
缺省情况下,Trap信息发送处于关闭状态。
开启日志记录功能,能够记录邻接状态的变化日志,便于分析查找相关信息。缺省情况下,日志记录功能处于开启状态,但只记录以下4类事件的日志信息:邻接状态达到Full状态;邻接状态离开Full状态;邻接状态达到Down状态;邻接状态离开Down状态。
该功能默认已开启,建议保持默认配置。若希望减少日志输出,可关闭该功能。
配置detail参数后,将记录所有邻接状态的变化日志。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
配置日志输出。
log-adj-changes [ detail ]
缺省情况下,日志记录处于开启状态,不带detail参数。
开启NSR功能,使得设备在主备切换过程中维持邻接状态稳定,保证用户数据流量始终保持转发不断流。
使用本功能前必须配置OSPF基本功能。
同一个OSPF进程,NSR和GR只能开启一种。因此开启GR时将自动关闭NSR能力,开启NSR时将自动关闭GR能力,但不影响GR Helper能力。
主备切换过程需要持续一段时间,若OSPF的邻居到期时间比切换时间短,将导致邻居设备上OSPF邻居断开,切换期间业务中断。因此,开启NSR功能时,建议OSPF的邻居到期时间不小于默认配置。开启Fast Hello时,OSPF的邻居到期时间小于1秒,因此建议开启NSR功能时不启用Fast Hello。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
启动NSR功能。
nsr
缺省情况下,NSR功能处于关闭状态。
OSPF采用iSPF(增量SPF)算法来计算网络拓扑。iSPF特性通常在大型网络中用于缓解路由器处理器的压力。
使用本功能前必须配置OSPF基本功能。
若单个区域超过100台路由器,且希望加快收敛,建议配置。
在区域的所有路由器上配置。
启用iSPF特性后,OSPF将采用增量SPF算法来计算网络拓扑,即网络拓扑变化后,只修正受拓扑变化影响的节点,而不是重建整棵最短路径树。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
配置iSPF特性。
ispf enable
缺省情况下,iSPF功能处于关闭状态。
OSPF在收到数据库描述报文时会校验邻居接口的MTU和本端接口的MTU是否相同,如果收到的数据库描述报文中指示接口的MTU大于接收接口的MTU,那么邻接关系将不能被建立,此时可以通过关闭MTU的校验来解决。
使用本功能前必须配置OSPF基本功能。
默认已关闭MTU校验,建议保持默认配置。
在两端接口MTU不同的路由器上配置。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入三层以太网接口配置模式。
interface ethernet-type interface-number
进入三层以太网子接口配置模式。
interface ethernet-type interface-number.subnumber
进入SVI接口配置模式。
interface vlan interface-number
进入环回口配置模式。
interface loopback interface-number
配置关闭MTU校验。
ip ospf mtu-ignore
缺省情况下,MTU校验功能处于关闭状态。
开启4类LSA冲突检测,对收到4类LSA进行冲突检测。
使用此功能必须配置OSPF基本功能。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入OSPF配置模式。
router ospf [ process-id [ vrf vrf-name ] ]
配置4类LSA冲突检测。
detect-conflict lsa-4
缺省情况下,4类LSA冲突检测处于关闭状态。
可以通过show命令行查看功能配置后的运行情况以验证配置效果。
可以通过执行clear命令来清除各类信息。
注意
在设备运行过程中执行clear命令,可能因为重要信息丢失而导致业务中断。
可以通过debug命令行列举输出的各种调试信息。
注意
使用debug命令输出调试信息,会占用系统资源。使用完毕后,请立即关闭调试开关。
OSPF监视与维护
作用 |
命令 |
---|---|
查看OSPF进程的配置信息 |
show ip ospf [ process-id ] |
查看OSPF内部路由表(到ABR和ASBR的路由) |
show ip ospf [ process-id ] border-routers |
查看OSPF链路状态数据库信息 |
show ip ospf [ process-id [ area-id ] database [ asbr-summary | external | network | nssa-external | opaque-area [ net-address/mask ] | opaque-as [ net-address/mask ] | opaque-link | router | summary ] [ adv-router ipv4-address | self-originate | link-state-id | brief ] [ database-summary | max-age | detail ] |
查看LSA泛洪信息 |
show ip ospf [ process-id ] flood [ normal | realtime | statistics ] |
查看运行OSPF的接口 |
show ip ospf [ process-id ] interface [ interface-type interface-number | brief ] |
查看OSPF区域通过iSPF计算路由的次数 |
show ip ospf [ process-id ] ispf |
查看OSPF的邻居表 |
show ip ospf [ process-id ] neighbor [ [ interface-type interface-number ] [ neighbor-id ] [ detail ] | statistics ] |
查看OSPF路由表 |
show ip ospf [ process-id ] route [ count | ipv4-address mask ] |
查看OSPF的伪链路信息 |
show ip ospf [ process-id ] sham-links [ area area-id ] |
查看OSPF区域的SPT计算次数 |
show ip ospf [ process-id ] spf |
查看OSPF重分布路由的汇聚路由 |
show ip ospf [ process-id ] summary-address |
查看OSPF网络拓扑信息 |
show ip ospf [ process-id [ area-id ] ] topology |
查看OSPF的虚链路 |
show ip ospf [ process-id ] virtual-links [ ipv4-address ] |
查看OSPF配置 |
show running-config router ospf |
清除并重启OSPF进程 |
clear ip ospf [ process-id ] process |
打开OSPF事件的调试开关 |
debug ip ospf events [ abr | asbr | lsa | nssa | os | restart | router | slink | vlink ] |
打开OSPF接口的调试开关 |
debug ip ospf ifsm [ events | status | timers ] |
打开OSPF邻居的调试开关 |
debug ip ospf nfsm [ events | status | timers ] |
打开OSPF NSM的调试开关 |
debug ip ospf nsm [ interface | redistribute | route ] |
打开OSPF LSA的调试开关 |
debug ip ospf lsa [ flooding | generate | install | maxage | refresh ] |
打开OSPF报文的调试开关 |
debug ip ospf packet [ dd | detail | hello | ls-ack | ls-request | ls-update | recv | send ] |
打开OSPF路由的调试开关 |
debug ip ospf route [ ase | ia | install | spf | time ] |
所有的设备都运行OSPF,一共划分3个区域,Device A和Device B作为ABR转发区域间路由,以此实现所有网络的互联互通。配置完成后,所有设备都能学习到自治系统内的所有网段的路由,并且邻居关系正确。
OSPF基本功能组网图
在所有设备上配置接口IP地址。
在所有设备上启动IPv4单播路由功能(该功能默认已开启)。
在所有设备上配置OSPF实例、Router ID。
在所有设备上配置接口配置OSPF。
在所有设备上配置接口IP地址。
# Device A的配置。
Device A> enable
Device A# configure terminal
Device A(config)# interface gigabitethernet 0/1
Device A(config-if-GigabitEthernet 0/1)# ip address 192.168.1.1 255.255.255.0
Device A(config-if-GigabitEthernet 0/1)# exit
Device A(config)# interface gigabitethernet 0/2
Device A(config-if-GigabitEthernet 0/2)# ip address 192.168.2.1 255.255.255.0
Device A(config-if-GigabitEthernet 0/2)# exit
# Device B的配置。
Device B> enable
Device B# configure terminal
Device B(config)# interface gigabitethernet 0/1
Device B(config-if-GigabitEthernet 0/1)# ip address 192.168.1.2 255.255.255.0
Device B(config-if-GigabitEthernet 0/1)# exit
Device B(config)# interface gigabitethernet 0/2
Device B(config-if-GigabitEthernet 0/2)# ip address 192.168.3.1 255.255.255.0
Device B(config-if-GigabitEthernet 0/2)# exit
# Device C的配置。
Device C> enable
Device C# configure terminal
Device C(config)# interface gigabitethernet 0/3
Device C(config-if-GigabitEthernet 0/3)# ip address 192.168.2.2 255.255.255.0
Device C(config-if-GigabitEthernet 0/3)# exit
# Device D的配置。
Device D> enable
Device D# configure terminal
Device D(config)# interface gigabitethernet 0/3
Device D(config-if-GigabitEthernet 0/3)# ip address 192.168.3.2 255.255.255.0
Device D(config-if-GigabitEthernet 0/3)# exit
配置OSPF实例、Router ID,并将接口地址加入OSPF。
# Device A的配置。
Device A(config)# router ospf 1
Device A(config-router)# router-id 192.168.1.1
Device A(config-router)# network 192.168.1.0 0.0.0.255 area 0
Device A(config-router)# network 192.168.2.0 0.0.0.255 area 1
# Device B的配置。
Device B(config)# router ospf 1
Device B(config-router)# router-id 192.168.1.2
Device B(config-router)# network 192.168.1.0 0.0.0.255 area 0
Device B(config-router)# network 192.168.3.0 0.0.0.255 area 2
# Device C的配置。
Device C(config)# router ospf 1
Device C(config-router)# router-id 192.168.2.2
Device C(config-router)# network 192.168.2.0 0.0.0.255 area 1
# Device D的配置。
Device D(config)# router ospf 1
Device D(config-router)# router-id 192.168.3.2
Device D(config-router)# network 192.168.3.0 0.0.0.255 area 2
检查Device A的OSPF邻居和路由。
# Device A的OSPF路由。
Device A# show ip route ospf
O IA 192.168.3.0/24 [110/2] via 192.168.1.2, 00:18:03, GigabitEthernet 0/1
# Device A的邻居信息。
Device A# show ip ospf neighbor
OSPF process 1, 2 Neighbors, 2 is Full:
Neighbor ID Pri State Dead Time Address Interface
192.168.1.2 1 Full/DR 00:00:40 192.168.1.2 GigabitEthernet 0/1
192.168.2.2 1 Full/BDR 00:00:34 192.168.2.2 GigabitEthernet 0/2
检查Device B的OSPF邻居和路由。
# Device B的OSPF路由。
Device B# show ip route ospf
O IA 192.168.2.0/24 [110/2] via 192.168.1.2, 00:18:03, GigabitEthernet 0/1
# Device B的邻居信息。
Device B# show ip ospf neighbor
OSPF process 1, 2 Neighbors, 2 is Full:
Neighbor ID Pri State Dead Time Address Interface
192.168.1.1 1 Full/BDR 00:00:32 192.168.1.1 GigabitEthernet 0/1
192.168.3.2 1 Full/BDR 00:00:30 192.168.3.2 GigabitEthernet 0/2
检查Device C的OSPF邻居和路由。
# Device C的OSPF路由。
Device C# show ip route ospf
O IA 192.168.1.0/24 [110/2] via 192.168.2.1, 00:19:05, GigabitEthernet 0/3
O IA 192.168.3.0/24 [110/3] via 192.168.2.1, 00:19:05, GigabitEthernet 0/3
# Device C的邻居信息。
Device C# show ip ospf neighbor
OSPF process 1, 1 Neighbors, 1 is Full:
Neighbor ID Pri State Dead Time Address Interface
192.168.1.1 1 Full/BDR 00:00:32 192.168.2.1 GigabitEthernet 0/3
检查Device D的OSPF邻居和路由。
# Device D的OSPF路由。
Device D# show ip route ospf
O IA 192.168.1.0/24 [110/2] via 192.168.3.1, 00:19:05, GigabitEthernet 0/3
O IA 192.168.2.0/24 [110/3] via 192.168.3.1, 00:19:05, GigabitEthernet 0/3
# Device D的邻居信息。
Device D# show ip ospf neighbor
OSPF process 1, 1 Neighbors, 1 is Full:
Neighbor ID Pri State Dead Time Address Interface
192.168.1.2 1 Full/BDR 00:00:30 192.168.3.1 GigabitEthernet 0/3
在Device D上检测到地址192.168.2.2的网络可达性。
Device D# ping 192.168.2.2
Sending 5, 100-byte ICMP Echoes to 192.168.2.2, timeout is 2 seconds:
< press Ctrl+C to break >
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms.
Device A的配置文件。
!
interface gigabitethernet 0/1
ip address 192.168.1.1 255.255.255.0
!
interface gigabitethernet 0/2
ip address 192.168.2.1 255.255.255.0
!
router ospf 1
router-id 192.168.1.1
network 192.168.1.0 0.0.0.255 area 0
network 192.168.2.0 0.0.0.255 area 1
!
Device B的配置文件。
!
interface gigabitethernet 0/1
ip address 192.168.1.2 255.255.255.0
!
interface gigabitethernet 0/2
ip address 192.168.3.1 255.255.255.0
!
router ospf 1
router-id 192.168.1.2
network 192.168.1.0 0.0.0.255 area 0
network 192.168.3.0 0.0.0.255 area 2
!
Device C的配置文件。
!
interface gigabitethernet 0/3
ip address 192.168.2.2 255.255.255.0
!
router ospf 1
router-id 192.168.2.2
network 192.168.2.0 0.0.0.255 area 1
!
Device D的配置文件。
!
interface gigabitethernet 0/3
ip address 192.168.3.2 255.255.255.0
!
router ospf 1
router-id 192.168.3.2
network 192.168.3.0 0.0.0.255 area 2
!
IP单播路由功能被关闭,OSPF协议无法启用。
network命令配置的网段范围未包含接口IP地址。
相连接口配置的Area ID不一致。
多台设备上配置了相同的Router ID,导致Router ID冲突。
多台设备上配置了相同的接口IP地址,导致OSPF网络运行错误。
Device A、B、C和D之间通过OSPF路由协议互联。
Device A和Device B作为ABR传递OSPF区域间路由,Device D作为ASBR引入外部静态路由。
为减少Area 1内LSA数量,节约设备性能,将Area 1配置成Totally Stub区域。
Stub区域举例组网图
所有设备配置接口IP地址(略)。
所有设备配置OSPF基本功能(略)。
在Device A和Device C上配置区域1为Stub类型。
Device D上配置引入外部静态路由。
Device D> enable
Device D# configure terminal
Device D(config)# router ospf 1
Device D(config-router)# redistribute static subnets
Device A、C上区域1配置成Stub类型。
# Device A的配置。
Device A> enable
Device A# configure terminal
Device A(config)# router ospf 1
Device A(config-router)# area 1 stub no-summary
# Device C的配置。
Device C> enable
Device C# configure terminal
Device C(config)# router ospf 1
Device C(config-router)# area 1 stub
# 在Device C上查看路由表,确认只有一条默认区域间路由,而没有Device D引入的外部静态路由。
Device C# show ip route ospf
O*IA 0.0.0.0/0 [110/2] via 192.168.2.1, 00:30:53, GigabitEthernet 0/2
Device A的配置文件。
!
router ospf 1
area 1 stub no-summary
!
Device C的配置文件。
!
router ospf 1
area 1 stub
!
Device D的配置文件。
!
router ospf 1
redistribute static subnets
!
Device A、B、C之间通过OSPF路由协议互联。
Device B作为ABR传递OSPF区域间路由,Device C作为ASBR引入了外部静态路由。
为减少Area 1内LSA数量,节约设备性能,Area 1配置成NSSA区域。
NSSA区域组网图
所有设备配置接口IP地址(略)。
所有设备配置OSPF基本功能(略)。
Device C上需要将外部静态路由引入OSPF进程。
需要分别在Device B、C上将区域1配置成NSSA。
Device C配置静态路由。
Device C> enable
Device C# configure terminal
Device C(config)# ip route 172.10.10.0 255.255.255.0 192.168.6.2
Device C上配置引入外部静态路由。
Device C(config)# router ospf 1
Device C(config-router)# redistribute static subnets
Device B、C上区域1配置成NSSA。
# Device B的配置。
Device B> enable
Device B# configure terminal
Device B(config)# router ospf 1
Device B(config-router)# area 1 nssa
# Device C的配置。
Device C(config-router)# area 1 nssa
# Device C上查看生成172.10.10.0/24的7类LSA。
Device C# show ip ospf database nssa-external
OSPF Router with ID (192.168.6.2) (Process ID 1)
NSSA-external Link States (Area 0.0.0.1 [NSSA])
LS age: 61
Options: 0x8 (-|-|-|-|N/P|-|-|-)
LS Type: AS-NSSA-LSA
Link State ID: 172.10.10.0 (External Network Number For NSSA)
Advertising Router: 192.168.6.2
LS Seq Number: 80000001
Checksum: 0xc8f8
Length: 36
Network Mask: /24
Metric Type: 2 (Larger than any link state path)
TOS: 0
Metric: 20
NSSA: Forward Address: 192.168.6.2
External Route Tag: 0
# Device B上查看172.10.10.0/24同时存在5类和7类LSA。
Device B# show ip ospf database nssa-external
OSPF Router with ID (192.168.3.1) (Process ID 1)
NSSA-external Link States (Area 0.0.0.1 [NSSA])
LS age: 314
Options: 0x8 (-|-|-|-|N/P|-|-|-)
LS Type: AS-NSSA-LSA
Link State ID: 172.10.10.0 (External Network Number For NSSA)
Advertising Router: 192.168.6.2
LS Seq Number: 80000001
Checksum: 0xc8f8
Length: 36
Network Mask: /24
Metric Type: 2 (Larger than any link state path)
TOS: 0
Metric: 20
NSSA: Forward Address: 192.168.6.2
External Route Tag: 0
# Device B上查看生成了172.10.10.0/24的N2类型的路由。
Device B# show ip ospf database external
OSPF Router with ID (192.168.3.1) (Process ID 1)
AS External Link States
LS age: 875
Options: 0x2 (-|-|-|-|-|-|E|-)
LS Type: AS-external-LSA
Link State ID: 172.10.10.0 (External Network Number)
Advertising Router: 192.168.3.1
LS Seq Number: 80000001
Checksum: 0xd0d3
Length: 36
Network Mask: /24
Metric Type: 2 (Larger than any link state path)
TOS: 0
Metric: 20
Forward Address: 192.168.6.2
External Route Tag: 0
Device B的配置文件。
!
router ospf 1
area 1 nssa
!
Device C的配置文件。
!
ip route 172.10.10.0 255.255.255.0 192.168.6.2
!
router ospf 1
redistribute static subnets
area 1 nssa
!
同一区域中的设备,区域类型配置不一致。
在Stub区域中配置路由重分布,将无法加入外部路由。
Device A、Device B和Device C之间通过运行OSPFv2协议实现网络互通。
Device A和Device B使用Switch为主链路,当Switch或者其连接链路故障上,BFD能够快速检测故障,并切换至Device C进行通讯。
OSPF进程与BFD联动组网图
所有设备配置接口IP地址(略)。
所有设备配置OSPF基本功能(略)。
所有设备配置接口BFD参数。
所有设备配置OSPF联动BFD。
在设备接口配置BFD参数。
# Device A的配置。
Device A> enable
Device A# configure terminal
Device A(config)# interface gigabitethernet 0/1
Device A(config-if-GigabitEthernet 0/1)# bfd interval 200 min_rx 200 multiplier 5
Device A(config-if-GigabitEthernet 0/1)# exit
Device A(config)# interface gigabitethernet 0/2
Device A(config-if-GigabitEthernet 0/2)# bfd interval 200 min_rx 200 multiplier 5
Device A(config-if-GigabitEthernet 0/2)# exit
# Device B的配置。
Device B> enable
Device B# configure terminal
Device B(config)# interface gigabitethernet 0/1
Device B(config-if-GigabitEthernet 0/1)# bfd interval 200 min_rx 200 multiplier 5
Device B(config-if-GigabitEthernet 0/1)# exit
Device B(config)# interface gigabitethernet 0/2
Device B(config-if-GigabitEthernet 0/2)# bfd interval 200 min_rx 200 multiplier 5
Device B(config-if-GigabitEthernet 0/2)# exit
OSPF联动BFD。
# Device A的配置。
Device A(config)# router ospf 1
Device A(config-router)# bfd all-interfaces
# Device B的配置。
Device B(config)# router ospf 1
Device B(config-router)# bfd all-interfaces
# 检查Device A上查看OSPF联动BFD处于UP状态。
Device A# show ip ospf neighbor
OSPF process 1, 1 Neighbors, 1 is Full:
Neighbor ID Pri State BFD State Dead Time Address Interface
192.168.1.2 1 Full/BDR Up 00:00:40 192.168.1.2 GigabitEthernet 0/1
192.168.13.3 1 Full/BDR Up 00:00:40 192.168.13.3 GigabitEthernet 0/2
# 检查Device B上查看OSPF联动BFD处于UP状态。
Device B# show ip ospf neighbor
OSPF process 1, 1 Neighbors, 1 is Full:
Neighbor ID Pri State BFD State Dead Time Address Interface
192.168.1.1 1 Full/BDR Up 00:00:40 192.168.1.1 GigabitEthernet 0/1
192.168.13.3 1 Full/BDR Up 00:00:40 192.168.23.3 GigabitEthernet 0/2
Device A的配置文件。
!
interface gigabitethernet 0/1
bfd interval 200 min_rx 200 multiplier 5
!
interface gigabitethernet 0/2
bfd interval 200 min_rx 200 multiplier 5
!
router ospf 1
bfd all-interfaces
!
Device B的配置文件。
!
interface gigabitethernet 0/1
bfd interval 200 min_rx 200 multiplier 5
!
interface gigabitethernet 0/2
bfd interval 200 min_rx 200 multiplier 5
!
router ospf 1
bfd all-interfaces
!
Device A配置网管功能,通过SNMP实现NMS到Agent的信息管理交互。NMS服务器IP为192.168.2.2。
网管功能组网图
Device A配置MIB绑定。
Device A配置Trap。
所有设备配置接口IP地址(略)。
所有设备配置OSPF基本功能(略)。
绑定Device A MIB。
Device A> enable
Device A# configure terminal
Device A(config)# snmp-server host 192.168.2.2 traps version 2c public
Device A(config)# snmp-server community public rw
Device A(config)# snmp-server enable traps
OSPF进程10中配置Trap。
Device A(config)# router ospf 10
Device A(config-router)# enable mib-binding
Device A(config-router)# enable traps
# OSPF配置Trap前的SNMP信息。
Device A# show snmp
Chassis: 60FF60
0 SNMP packets input
0 Bad SNMP version errors
0 Unknown community name
0 Illegal operation for community name supplied
0 Encoding errors
0 Number of requested variables
0 Number of altered variables
0 Get-request PDUs
0 Get-next PDUs
0 Set-request PDUs
0 Drop PDUs
0 UDP parse errors
0 SNMP packets output
0 Too big errors (Maximum packet size 1472)
0 No such name errors
0 Bad values errors
0 General errors
0 Response PDUs
0 Trap PDUs
SNMP global trap: disabled
SNMP logging: disabled
SNMP trap logging: disabled
SNMP agent: enabled
SNMP v1: enabled
SNMP v2c: enabled
SNMP v3: enabled
# OSPF配置Trap后的SNMP信息。
Device A# show snmp
Chassis: 60FF60
0 SNMP packets input
0 Bad SNMP version errors
0 Unknown community name
0 Illegal operation for community name supplied
0 Encoding errors
8 Number of requested variables
0 Number of altered variables
0 Get-request PDUs
0 Get-next PDUs
0 Set-request PDUs
0 Drop PDUs
0 UDP parse errors
2 SNMP packets output
0 Too big errors (Maximum packet size 1472)
0 No such name errors
0 Bad values errors
0 General errors
0 Response PDUs
2 Trap PDUs
Device A的配置文件。
!
snmp-server host 192.168.2.2 traps version 2c public
snmp-server community public rw
snmp-server enable traps
!
router ospf 10
enable mib-binding
enable traps
!
SNMP Server配置错误:没有开启MIB、Trap功能等。
客户的两个不同站点通过MPLS骨干网交互VPN路由,同时这两个站点间又假设了一条“后门链路”,其目的为了确保在MPLS骨干网发生故障时,两个站点的信息交互仍然可以通过这条备份链路正常交互。
伪链路功能组网图
在SITEA上配置和PE1、SITEB站点相连的接口运行OSPF协议,其中和SITEB站点是通过后门链路运行OSPF协议,配置接口OSPF Cost值。
在SITEB上配置和PE2、SITEA站点相连的接口运行OSPF协议,其中和SITEA站点是通过备份链路运行OSPF协议,配置接口的OSPF的Cost值。
在PE1上配置Loopback接口,创建一个VRF:VPN A,定义RD值和RT值,并把VRF和对应的接口关联,连接CE的接口关联VRF;配置VRF的环回口,用来建立伪链路,配置BGP协议,和PE2建立MP-IBGP会话,通过OSPF协议和CE交互路由,和PE2上的OSPF实例建立伪链路,配置骨干网MPLS信令,打开公网口的MPLS能力,配置骨干网路由协议。
在PE2上配置Loopback接口,创建一个VRF:VPN A,定义RD值和RT值,并把VRF和对应的接口关联,连接CE的接口关联VRF,配置VRF的环回口,用来建立伪链路;配置BGP协议,和PE1建立MP-IBGP会话,通过OSPF协议和CE交互VPN路由,配置和PE1建立伪链路;配置骨干网MPLS信令,打开公网口的MPLS能力,配置骨干网路由协议。
在P1上配置骨干网MPLS信令,打开接口MPLS能力,配置骨干网路由协议。
SITEA上的配置。
# 配置接口IP地址。
SITEA> enable
SITEA# configure terminal
SITEA(config)# interface gigabitethernet 1/0
SITEA(config-GigabitEthernet 1/0)# ip address 192.168.10.2 255.255.255.0
SITEA(config-GigabitEthernet 1/0)# ip ospf cost 1
SITEA(config-GigabitEthernet 1/0)# exit
SITEA(config)# interface gigabitethernet 1/1
SITEA(config-GigabitEthernet 1/1)# ip address 192.168.20.1 255.255.255.0
SITEA(config-GigabitEthernet 1/1)# ip ospf cost 200
SITEA(config-GigabitEthernet 1/1)# exit
# OSPF通告接口网络。
SITEA(config)# router ospf 10
SITEA(config-router)# network 192.168.10.0 255.255.255.0 area 0
SITEA(config-router)# network 192.168.20.0 255.255.255.0 area 0
SITEB上的配置。
# 配置接口IP地址。
SITEB> enable
SITEB# configure terminal
SITEB(config)# interface gigabitethernet 1/0
SITEB(config-GigabitEthernet 1/0)# ip address 192.168.30.2 255.255.255.0
SITEB(config-GigabitEthernet 1/0)# ip ospf cost 1
SITEB(config-GigabitEthernet 1/0)# exit
SITEB(config)# interface gigabitethernet 1/1
SITEB(config-GigabitEthernet 1/1)# ip address 192.168.20.2 255.255.255.0
SITEB(config-GigabitEthernet 1/1)# ip ospf cost 200
SITEB(config-GigabitEthernet 1/1)# exit
# OSPF通告接口网络。
SITEB(config)# router ospf 10
SITEB(config-router)# network 192.168.30.0 255.255.255.0 area 0
SITEB(config-router)# network 192.168.20.0 255.255.255.0 area 0
PE1上的配置。
# 配置环回口0。
PE1> enable
PE1# configure terminal
PE1(config)# interface loopback 0
PE1(config-Loopback 0)# ip address 172.168.0.1 255.255.255.255
PE1(config-Loopback 0)# exit
# 创建VRF VPNA,并定义其RD和RT属性值。
PE1(config)# ip vrf VPNA
PE1(config-vrf)# rd 1:100
PE1(config-vrf)# route-target both 1:100
PE1(config-vrf)# exit
# 配置接口IP,并将VRF和对应接口关联。
PE1(config)# interface gigabitethernet 1/2
PE1(config-GigabitEthernet 1/2)# ip vrf forwarding VPNA
PE1(config-GigabitEthernet 1/2)# ip address 192.168.10.1 255.255.255.0
PE1(config-GigabitEthernet 1/2)# exit
PE1(config)# interface loopback 10
PE1(config-Loopback 10)# ip vrf forwarding VPNA
PE1(config-Loopback 10)# ip address 192.168.0.1 255.255.255.255
PE1(config-Loopback 10)# exit
# 配置BGP协议,和PE2建立MP-IBGP会话。
PE1(config)# router bgp 1
PE1(config-router)# neighbor 172.168.0.2 remote-as 1
PE1(config-router)# neighbor 172.168.0.2 update-source loopback 0
PE1(config-router)# address-family vpnv4
PE1(config-router-af)# neighbor 172.168.0.2 activate
PE1(config-router-af)# exit
PE1(config-router)# exit
# 配置和PE2上的OSPF实例建立伪链路。
PE1(config)# router ospf 10 vrf VPNA
PE1(config-router)# network 192.168.10.0 255.255.255.0 area 0
PE1(config-router)# redistribute bgp subnets
PE1(config-router)# area 0 sham-link 192.168.0.1 192.168.0.2
PE1(config-router)# exit
# 配置BGP重分发OSPF、直连路由。
PE1(config)# router bgp 1
PE1(config-router)# address-family ipv4 vrf VPNA
PE1(config-router-af)# redistribute ospf 10
PE1(config-router-af)# redistribute connected
PE1(config-router-af)# exit
PE1(config-router)# exit
# 配置骨干网MPLS信令,打开公网口的MPLS能力。
PE1(config)# mpls ip
PE1(config)# mpls router ldp
PE1(config-mpls-router)# ldp router-id interface loopback 0 force
PE1(config-mpls-router)# exit
PE1(config)# interface gigabitethernet 1/1
PE1(config-GigabitEthernet 1/1)# ip address 172.168.10.1 255.255.255.0
PE1(config-GigabitEthernet 1/1)# label-switching
PE1(config-GigabitEthernet 1/1)# mpls ip
PE1(config-GigabitEthernet 1/1)# exit
# OSPF通告接口网络。
PE1(config)# router ospf 1
PE1(config-router)# network 172.168.10.0 0.0.0.255 area 0
PE1(config-router)# network 172.168.0.1 0.0.0.0 area 0
PE2上的配置。
# 配置环回口0。
PE2> enable
PE2# configure terminal
PE2(config)# interface loopback 0
PE2(config-Loopback 0)# ip address 172.168.0.2 255.255.255.255
PE2(config-Loopback 0)# exit
# 创建VRF VPNA,并定义其RD和RT属性值。
PE2(config)# ip vrf VPNA
PE2(config-vrf)# rd 1:100
PE2(config-vrf)# route-target both 1:100
PE2(config-vrf)# exit
# 配置接口IP,并将VRF和对应接口关联。
PE2(config)# interface gigabitethernet 1/2
PE2(config-GigabitEthernet 1/2)# ip vrf forwarding VPNA
PE2(config-GigabitEthernet 1/2)# ip address 192.168.30.1 255.255.255.0
PE2(config-GigabitEthernet 1/2)# exit
PE2(config)# interface loopback 10
PE2(config-Loopback 10)# ip vrf forwarding VPNA
PE2(config-Loopback 10)# ip address 192.168.0.2 255.255.255.255
PE2(config-Loopback 10)# exit
# 配置BGP协议,和PE2建立MP-IBGP会话。
PE2(config)# router bgp 1
PE2(config-router)# neighbor 172.168.0.1 remote-as 1
PE2(config-router)# neighbor 172.168.0.1 update-source loopback 0
PE2(config-router)# address-family vpnv4
PE2(config-router-af)# neighbor 172.168.0.1 activate
PE2(config-router-af)# exit
PE2(config-router)# exit
# 配置和PE2上的OSPF实例建立伪链路。
PE2(config)# router ospf 10 vrf VPNA
PE2(config-router)# network 192.168.30.0 255.255.255.0 area 0
PE2(config-router)# redistribute bgp subnets
PE2(config-router)# area 0 sham-link 192.168.0.2 192.168.0.1
PE2(config-router)# exit
# 配置BGP重分发OSPF、直连路由。
PE2(config)# router bgp 1
PE2(config-router)# address-family ipv4 vrf VPNA
PE2(config-router-af)# redistribute ospf 10
PE2(config-router-af)# redistribute connected
PE2(config-router-af)# exit
# 配置骨干网MPLS信令,打开公网口的MPLS能力。
PE2(config)# mpls ip
PE2(config)# mpls router ldp
PE2(config-mpls-router)# ldp router-id interface loopback 0 force
PE2(config-mpls-router)# exit
PE2(config)# interface gigabitethernet 1/1
PE2(config-GigabitEthernet 1/1)# ip address 172.168.40.2 255.255.255.0
PE2(config-GigabitEthernet 1/1)# label-switching
PE2(config-GigabitEthernet 1/1)# mpls ip
PE2(config-GigabitEthernet 1/1)# exit
# OSPF通告接口网络。
PE2(config)# router ospf 1
PE2(config-router)# network 172.168.40.0 0.0.0.255 area 0
PE2(config-router)# network 172.168.0.2 0.0.0.0 area 0
P1上的配置。
# P1配置环回口0。
P1> enable
P1# configure terminal
P1(config)# interface loopback 0
P1(config-Loopback 0)# ip address 172.168.0.3 255.255.255.255
P1(config-Loopback 0)# exit
# OSPF基础配置。
P1(config)# router ospf 1
P1(config-router)# network 172.168.40.0 0.0.0.255 area 0
P1(config-router)# network 172.168.10.0 0.0.0.255 area 0
P1(config-router)# network 172.168.0.3 0.0.0.0 area 0
P1(config-router)# exit
# 在P1上配置骨干网MPLS信令,打开接口MPLS能力。
P1(config)# interface gigabitethernet 1/0
P1(config-GigabitEthernet 1/0)# ip address 172.168.10.2 255.255.255.0
P1(config-GigabitEthernet 1/0)# mpls ip
P1(config-GigabitEthernet 1/0)# label-switch
P1(config-GigabitEthernet 1/0)# exit
P1(config)# interface gigabitethernet 1/1
P1(config-GigabitEthernet 1/1)# ip address 172.168.40.1 255.255.255.0
P1(config-GigabitEthernet 1/1)# mpls ip
P1(config-GigabitEthernet 1/1)# label-switch
P1(config-GigabitEthernet 1/1)# exit
P1(config)# mpls ip
P1(config)# mpls router ldp
PE2(config-mpls-router)# ldp router-id interface loopback 0 force
PE2(config-mpls-router)# exit
PE1的配置验证。
# 检查PE1上存在OSPF伪链路路由。
PE1# show ip ospf 10 sham-links
Sham Link SLINK0 to address 192.168.0.2 is up
Area 0.0.0.0 source address 192.168.0.1, Cost: 1
Output interface is GigabitEthernet 1/1
Nexthop address 172.16.40.2
Transmit Delay is 1 sec, State Point-To-Point,
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
Hello due in 00:00:01
Adjacency state Full
# 检查PE1的OSPF邻居。
PE1# show ip ospf 10 neighbor
OSPF process 10, 1 Neighbors, 1 is Full:
Neighbor ID Pri State BFD State Dead Time Address Interface
192.168.0.2 1 Full/ - - 00:00:34 192.168.0.2 SLINK0
# 检查PE1 VRF路由。
PE1# show ip route vrf VPNA
Routing Table: VPNA
Codes: C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default
Gateway of last resort is no set
C 192.168.10.0/24 is directly connected, GigabitEthernet 1/2
O 192.168.20.0/24 [110/101] via 192.168.1.2, 00:56:23, GigabitEthernet 1/2
O 192.168.30.0/24 [110/2] via 172.168.0.2, 00:00:36
O 192.168.40.0/24 [110/2] via 172.168.0.2, 00:00:36
PE2的配置验证。
# 检查PE1上存在OSPF 伪链路路由。
PE2# show ip ospf 10 sham-links
Sham Link SLINK0 to address 192.168.0.1 is up
Area 0.0.0.0 source address 192.168.0.2, Cost: 1
Output interface is GigabitEthernet 1/1
Nexthop address 172.16.10.1
Transmit Delay is 1 sec, State Point-To-Point,
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
Hello due in 00:00:01
Adjacency state Full
# 检查PE2的OSPF邻居。
PE2# show ip ospf 10 neighbor
OSPF process 10, 1 Neighbors, 1 is Full:
Neighbor ID Pri State BFD State Dead Time Address Interface
192.168.0.1 1 Full/ - - 00:00:34 192.168.0.1 SLINK0
# 检查PE2 VRF路由。
PE2# show ip route vrf VPNA
Routing Table: VPNA
Codes: C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default
Gateway of last resort is no set
O 192.168.10.0/24 [110/2] via 172.168.0.1, 00:00:36
O 192.168.20.0/24 [110/2] via 172.168.0.1, 00:00:36
C 192.168.30.0/24 is directly connected, GigabitEthernet 1/2
O 192.168.40.0/24 [110/101] via 192.168.30.2, 00:56:23, GigabitEthernet 1/2
SITEA的配置文件。
!
interface gigabitethernet 1/0
ip address 192.168.10.2 255.255.255.0
ip ospf cost 1
!
interface gigabitethernet 1/1
ip address 192.168.20.1 255.255.255.0
ip ospf cost 200
!
router ospf 10
network 192.168.10.0 255.255.255.0 area 0
network 192.168.20.0 255.255.255.0 area 0
!
SITEB的配置文件。
!
interface gigabitethernet 1/0
ip address 192.168.30.2 255.255.255.0
ip ospf cost 1
!
interface gigabitethernet 1/1
ip address 192.168.20.2 255.255.255.0
ip ospf cost 200
!
router ospf 10
network 192.168.30.0 255.255.255.0 area 0
network 192.168.20.0 255.255.255.0 area 0
!
PE1的配置文件。
!
ip vrf VPNA
rd 1:100
route-target both 1:100
!
interface gigabitethernet 1/1
ip address 172.168.10.1 255.255.255.0
label-switching
mpls ip
!
interface gigabitethernet 1/2
ip vrf forwarding VPNA
ip address 192.168.10.1 255.255.255.0
interface loopback 0
ip address 172.168.0.1 255.255.255.255
!
interface loopback 10
ip vrf forwarding VPNA
ip address 192.168.0.1 255.255.255.255
!
router bgp 1
neighbor 172.168.0.2 remote-as 1
neighbor 172.168.0.2 update-source loopback 0
address-family vpnv4
neighbor 172.168.0.2 activate
address-family ipv4 vrf VPNA
redistribute ospf 10
redistribute connected
!
router ospf 1
network 172.168.10.0 0.0.0.255 area 0
network 172.168.0.1 0.0.0.0 area 0
!
router ospf 10 vrf VPNA
network 192.168.10.0 255.255.255.0 area 0
redistribute bgp subnets
area 0 sham-link 192.168.0.1 192.168.0.2
!
mpls ip
mpls router ldp
ldp router-id interface loopback 0 force
!
PE2的配置文件。
!
ip vrf VPNA
rd 1:100
route-target both 1:100
!
interface gigabitethernet 1/1
ip address 172.168.40.2 255.255.255.0
label-switching
mpls ip
!
interface gigabitethernet 1/2
ip vrf forwarding VPNA
ip address 192.168.30.1 255.255.255.0
!
interface loopback 0
ip address 172.168.0.2 255.255.255.255
!
interface loopback 10
ip vrf forwarding VPNA
ip address 192.168.0.2 255.255.255.255
!
router bgp 1
neighbor 172.168.0.1 remote-as 1
neighbor 172.168.0.1 update-source loopback 0
address-family vpnv4
neighbor 172.168.0.1 activate
address-family ipv4 vrf VPNA
redistribute ospf 10
redistribute connected
!
router ospf 1
network 172.168.40.0 0.0.0.255 area 0
network 172.168.0.2 0.0.0.0 area 0
!
router ospf 10 vrf VPNA
network 192.168.30.0 255.255.255.0 area 0
redistribute bgp subnets
area 0 sham-link 192.168.0.2 192.168.0.1
!
mpls ip
mpls router ldp
ldp router-id interface loopback 0 force
!
P1的配置文件。
!
interface gigabitethernet 1/0
ip address 172.168.10.2 255.255.255.0
mpls ip
label-switch
!
interface gigabitethernet 1/1
ip address 172.168.40.1 255.255.255.0
mpls ip
label-switch
!
interface loopback 0
ip address 172.168.0.3 255.255.255.255
!
router ospf 1
network 172.168.40.0 0.0.0.255 area 0
network 172.168.10.0 0.0.0.255 area 0
network 172.168.0.3 0.0.0.0 area 0
!
mpls ip
mpls router ldp
ldp router-id interface loopback 0 force
!
Area 2没有和Area 0直接连接,为保证网络中OSPF运行正常,在Device B和Device C之间配置虚链路。
虚连接举例组网图
所有设备配置接口IP地址(略)。
所有设备配置OSPF基本功能(略)。
在Device B、C上配置虚链路。
配置各接口的IP地址和OSPF路由协议(略)。
在Device B、C上配置虚链路。
# Device B的配置。
Device B> enable
Device B# configure terminal
Device B(config)# router ospf 1
Device B(config-router)# area 1 virtual-link 192.168.23.3
# Device C的配置。
Device C> enable
Device C# configure terminal
Device C(config)# router ospf 1
Device C(config-router)# area 1 virtual-link 192.168.12.2
# 检查Device A上使用show ip ospf database能学习到区域2的路由。
Device A# show ip ospf database
OSPF Router with ID (192.168.12.1) (Process ID 1)
Router Link States (Area 0)
Link ID ADV Router Age Seq# Checksum Link count
192.168.12.1 192.168.12.1 1025 0x80000002 0x00292E 1
192.168.12.2 192.168.12.2 3 0x80000004 0x00DA5E 2
192.168.23.3 192.168.23.3 7 (DNA) 0x80000001 0x001328 0
Net Link States (Area 0)
Link ID ADV Router Age Seq# Checksum
192.168.12.2 192.168.12.2 1031 0x80000001 0x00CE8E
Summary Net Link States (Area 0)
Link ID ADV Router Age Seq# Checksum
192.168.23.0 192.168.12.2 820 0x80000001 0x0077CC
192.168.23.0 192.168.23.3 7 (DNA) 0x80000001 0x002414
192.168.34.0 192.168.23.3 7 (DNA) 0x80000001 0x00AA82
Device B的配置文件。
!
router ospf 1
area 1 virtual-link 192.168.23.3
!
Device C的配置文件。
!
router ospf 1
area 1 virtual-link 192.168.12.2
!
Device A、B、C、D在同一个广播网络中。
配置Device A的优先级为10,成为DR,Device B的优先级为5,成为BDR,Device C使用默认优先级,Device D的优先级为0,不参与DR选举。
DR选择举例组网图
在Device A、B、D上设置优先级分别为10、5、0。
配置各接口的IP地址和OSPF路由协议(略)。
在Device A、B、D上设置优先级。
# Device A的配置。
Device A> enable
Device A# configure terminal
Device A(config)# interface gigabitethernet 0/1
Device A(config-if-GigabitEthernet 0/1)# ip ospf priority 10
# Device B的配置。
Device B> enable
Device B# configure terminal
Device B(config)# interface gigabitethernet 0/1
Device B(config-if-GigabitEthernet 0/1)# ip ospf priority 5
# Device D的配置。
Device D> enable
Device D# configure terminal
Device D(config)# interface gigabitethernet 0/1
Device D(config-if-GigabitEthernet 0/1)# ip ospf priority 0
# 检查Device D上使用show ip ospf neighbor邻居正确。
Device D# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
192.168.1.1 10 FULL/DR 00:00:38 192.168.1.1 GigabitEthernet0/1
192.168.1.2 5 FULL/BDR 00:00:30 192.168.1.2 GigabitEthernet0/1
Device A的配置文件。
!
interface gigabitethernet 0/1
ip ospf priority 10
!
Device B的配置文件。
!
interface gigabitethernet 0/1
ip ospf priority 5
!
Device D的配置文件。
!
interface gigabitethernet 0/1
ip ospf priority 0