6.1 OSPF简介
介绍OSPF的定义和目的。
定义
开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。
目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。如无特殊说明,本文中所指的OSPF均为OSPF Version 2。
- OSPF把自治系统AS(Autonomous System)划分成逻辑意义上的一个或多个区域;
- OSPF通过LSA(Link State Advertisement)的形式发布路由;
- OSPF依靠在OSPF区域内各设备间交互OSPF报文来达到路由信息的统一;
- OSPF报文封装在IP报文内,可以采用单播或组播的形式发送。
目的
在OSPF出现前,RIP是网络上使用最广泛的IGP协议。
由于RIP是基于距离矢量算法的路由协议,存在着收敛慢、路由环路、可扩展性差等问题,OSPF成为了网络上使用最广泛的IGP协议。
OSPF作为基于链路状态的协议,能够解决RIP所面临的诸多问题。此外,OSPF还有以下优点:
- OSPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响。
- OSPF支持无类型域间选路(CIDR)。
- OSPF支持对等价路由进行负载分担。
- OSPF支持报文加密。
相关信息
技术论坛
6.2 原理描述
6.2.1 OSPF基础
6.2.1.1 OSPF的特点
在OSPF网络中,每台路由器根据自己周围的网络拓扑结构生成链路状态通告LSA(Link State Advertisement),并通过更新报文将LSA发送给网络中的其它路由器。
RIP交互的是路由。与RIP不同,OSPF交互的是链路状态信息。也就是说,RIP中,路由器的选路依赖于邻居路由器的路由信息,但不管邻居路由器传达的信息是否正确;而OSPF中,路由器的选路是一种“自主行为”,LSA只是一种选路的参考信息。
每台路由器都通过链路状态数据库LSDB(Link State DataBase)掌握全网的拓扑结构。如图6-1所示,每台路由器都会收集其它路由器发来的LSA,所有的LSA放在一起便组成了链路状态数据库LSDB。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。在网络拓扑稳定的情况下,各个路由器得到的有向图是完全相同的。
图6-1 通过LSDB掌握全网的拓扑结构
路由器根据最短路径优先(Shortest Path First)算法计算到达目的网络的路径,而不是根据路由通告来获取路由信息。如图6-2所示,每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。相对于RIP,这种机制极大地提升了路由器的自主选路能力,使得路由器不再依靠路由通告进行选路。
图6-2 根据SPF计算到达目的网络的路径
总之,LSDB保证路由器能够时刻掌握全网的拓扑机构,SPF算法保证路由器能够迅速计算出到达目的网络的最短路径。
6.2.1.2 OSPF运行机制
OSPF的运行机制包括以下5个步骤:
通过交互Hello报文形成邻居关系
如图6-3所示,路由器运行OSPF协议后,会从所有启动OSPF协议的接口上发送Hello报文。如果两台路由器共享一条公共数据链路,并且能够成功协商各自Hello报文中所指定的某些参数,就能形成邻居关系。
图6-3 通过交互Hello报文形成邻居关系
通过泛洪LSA通告链路状态信息
形成邻接关系的路由器之间可以交互LSA,如图6-4所示。LSA描述了路由器所有的链路、接口、邻居及链路状态等信息。路由器通过交互这些链路信息来了解整个网络的拓扑信息。由于链路的多样性,OSPF协议定义了多种LSA类型。详见6.2.1.9 OSPF LSA类型。
图6-4 通过泛洪LSA通告链路状态信息
通过组建LSDB形成带权有向图
通过LSA的泛洪,路由器会把收到的LSA汇总记录在LSDB中。最终,所有路由器都会形成同样的LSDB,如图6-5所示。LSA是对路由器周围网络拓扑结构的描述,而LSDB则是对整个自治系统的网络拓扑结构的描述,LSDB是LSA的汇总。
图6-5 通过组建LSDB形成带权有向图
通过SPF算法计算并形成路由
如图6-6所示,当LSDB同步完成之后,每一台路由器都将以其自身为根,使用SPF算法来计算一个无环路的拓扑图来描述它所知道的到达每一个目的地的最短路径(最小的路径代价)。这个拓扑图就是最短路径树,有了这棵树,路由器就能知道到达自治系统中各个节点的最优路径。
图6-6 通过SPF算法计算并形成路由
维护和更新路由表
根据SPF算法得出最短路径树后,每台路由器将计算得出的最短路径加载到OSPF路由表形成指导数据转发的路由表项,并且实时更新,如图6-7所示。同时,邻居之间交互Hello报文进行保活,维持邻居关系或邻接关系,并且周期性地重传LSA。
图6-7 维护和更新路由表
6.2.1.3 OSPF报文类型
OSPF提供五种类型的报文。
Hello报文
Hello报文是最常用的报文,用于建立和维护邻接关系。使能了OSPF功能的接口周期性地发送Hello报文。Hello报文中包括一些定时器的数值、本网络中的DR(Designated Router)、BDR(Backup Designated Router)以及已知的邻居。
DD报文
两台路由器在邻接关系初始化时,DD报文(Database Description packet)用来协商主从关系,此时报文中不包含LSA的Header。在两台路由器交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。
邻接关系建立之后,路由器使用DD报文描述本端路由器的LSDB,进行数据库同步。DD报文里包括LSDB中每一条LSA的Header(LSA的Header可以唯一标识一条LSA),即所有LSA的摘要信息。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量。对端路由器根据LSA Header就可以判断出是否已有这条LSA。
LSR报文
两台路由器互相交换过DD报文之后,需要发送LSR报文(Link State Request packet)向对方请求更新LSA。LSR报文里包括所需要的LSA的摘要信息。
LSU报文
LSU报文(Link State Update packet)用来向对端路由器发送其所需要的LSA或者泛洪本端更新的LSA,其报文内容是多条完整的LSA的集合。为了实现泛洪的可靠性传输,需要LSAck报文对其进行确认,对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。
LSAck报文
LSAck报文(Link State Acknowledgment packet)用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header。一个LSAck报文可对多个LSA进行确认。
6.2.1.4 OSPF支持的网络类型
OSPF根据链路层协议类型,将网络分为如下四种类型:
广播类型(Broadcast)
当链路层协议是Ethernet或FDDI(Fiber Distributed Digital Interface)时,缺省情况下,OSPF认为网络类型是Broadcast。
在该类型的网络中:
- 通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF设备的预留IP组播地址;224.0.0.6的组播地址为OSPF DR/BDR的预留IP组播地址。
- 以单播形式发送DD报文和LSR报文。
NBMA类型(Non-Broadcast Multi-Access)
当链路层协议是帧中继或X.25时,缺省情况下,OSPF认为网络类型是NBMA。
在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
点到多点P2MP类型(Point-to-Multipoint)
没有一种链路层协议会被缺省的认为是P2MP类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。
在该类型的网络中:
- 以组播形式(224.0.0.5)发送Hello报文。
- 以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。
点到点P2P类型(Point-to-Point)
当链路层协议是PPP、HDLC或LAPB时,缺省情况下,OSPF认为网络类型是P2P。
在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
6.2.1.5 DR和BDR选举
Router ID
在了解DR/BDR的选举过程之前,需要先了解Router ID。Router ID是用于在自治系统中唯一标识一台运行OSPF的路由器的32位整数。每个运行OSPF的路由器都有一个Router ID。Router ID的格式和IP地址的格式是一样的。在实际网络部署中,考虑到协议的稳定,推荐使用路由器上Loopback接口的IP地址做为路由器的Router ID。
Router ID的选取有两种方式:通过命令行手动配置和设备自动设定。
如果没有手动配置Router ID,设备会从当前接口的IP地址中自动选取一个作为Router ID。其选择顺序是:
- 优先从Loopback地址中选择最大的IP地址作为Router ID。
- 如果没有配置Loopback接口,则在接口地址中选取最大的IP地址作为Router ID。
只有重新配置系统的Router ID或OSPF的Router ID,并且重新启动OSPF进程后,才会进行Router ID的重新选取。
DR和BDR选举的原因
在广播网络和NBMA网络中,任意两台路由器之间都要传递路由信息。如图6-8所示,网络中有n台路由器,则需要建立n*(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。
为解决这一问题,OSPF定义了DR。通过选举产生DR后,所有其他设备都只将信息发送给DR,由DR将网络链路状态LSA广播出去。
为了防止DR发生故障,重新选举DR时会产成业务中断,除了DR之外,还会选举一个备份指定路由器BDR。这样除DR和BDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息,这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量。
图6-8 DR和BDR选举
DR和BDR选举的原则
在广播网络和NBMA网络中,为了稳定地进行DR和BDR选举,OSPF规定了一系列的选举规则:选举制、终身制、继承制。
选举制
选举制是指DR和BDR不是人为指定的,而是由本网段中所有的路由器共同选举出来的。如图6-9所示,路由器接口的DR优先级决定了该接口在选举DR、BDR时所具有的资格,本网段内DR优先级大于0的路由器都可作为“候选人”。选举中使用的“选票”就是Hello报文,每台路由器将自己选出的DR写入Hello报文中,发给网段上的其他路由器。当处于同一网段的两台路由器同时宣布自己是DR时,DR优先级高者胜出。如果优先级相等,则Router ID大者胜出。如果一台路由器的优先级为0,则它不会被选举为DR或BDR。
图6-9 DR和BDR选举的原则—选举制
终身制
终身制也叫非抢占制。每一台新加入的路由器并不急于参加选举,而是先考察一下本网段中是否已存在DR。如图6-10所示,如果目前网段中已经存在DR,即使本路由器的DR优先级比现有的DR还高,也不会再声称自己是DR,而是承认现有的DR。因为网段中的每台路由器都只和DR、BDR建立邻接关系,如果DR频繁更换,则会引起本网段内的所有路由器重新与新的DR、BDR建立邻接关系。这样会导致短时间内网段中有大量的OSPF协议报文在传输,降低网络的可用带宽。终身制有利于增加网络的稳定性、提高网络的可用带宽。实际上,在一个广播网络或NBMA网络上,最先启动的两台具有DR选举资格的路由器将成为DR和BDR。
图6-10 DR和BDR选举的原则—终身制
继承制
如图6-11所示,继承制是指如果DR发生故障了,那么下一个当选为DR的一定是BDR,其他的路由器只能去竞选BDR的位置。这个原则可以保证DR的稳定,避免频繁地进行选举,并且DR是有备份的(BDR),一旦DR失效,可以立刻由BDR来承担DR的角色。由于DR和BDR的数据库是完全同步的,这样当DR故障后,BDR立即成为DR,履行DR的职责,而且邻接关系已经建立,所以从角色切换到承载业务的时间会很短。同时,在BDR成为新的DR之后,还会选举出一个新的BDR,虽然这个过程所需的时间比较长,但已经不会影响路由的计算了。
图6-11 DR和BDR选举的原则—继承制
DR和BDR选举过程
广播链路或者NMBA链路上DR和BDR的选举过程如下:
- 接口UP后,发送Hello报文,同时进入到Waiting状态。在Waiting状态下会有一个WaitingTimer,该计时器的长度与DeadTimer是一样的。默认值为40秒,用户不可自行调整。OSPF接口状态的详细描述,请参见OSPF接口状态机。
- 在WaitingTimer触发前,发送的hello报文是没有DR和BDR字段的。在Waiting阶段,如果收到Hello报文中有DR和BDR,那么直接承认网络中的DR和BDR,而不会触发选举。直接离开Waiting状态,开始邻居同步。
- 假设网络中已经存在一个DR和一个BDR,这时新加入网络中的路由器,不论它的Router ID或者DR优先级有多大,都会承认现网中已有的DR和BDR。
- 当DR因为故障Down掉之后,BDR会继承DR的位置,剩下的优先级大于0的路由器会竞争成为新的BDR。
- 只有当不同Router ID,或者配置不同DR优先级的路由器同时起来,在同一时刻进行DR选举才会应用DR选举规则产生DR。该规则是:优先选择DR优先级最高的作为DR,次高的作为BDR。DR优先级为0的路由器只能成为DR Other;如果优先级相同,则优先选择Router ID较大的路由器成为DR,次大的成为BDR,其余路由器成为DR Other。
DR和BDR选举过程验证
五台路由器组成一个广播网络,R5作为纯二层设备,R1~R4作为路由设备。R1~R4都规划在OSPF的Area0区域内,各路由器的IP地址及Router ID如图6-12所示。
图6-12 DR和BDR选举组网图
网络中可以正常选举出DR和BDR时
假设R1~R4各接口的配置已经完成,这里仅给出OSPF相关的配置。
R1的配置
1
2
3
4
5#
ospf 1 Router ID 10.1.1.1
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#R2的配置
1
2
3
4
5#
ospf 1 Router ID 10.2.2.2
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#R3的配置
1
2
3
4
5#
ospf 1 Router ID 10.3.3.3
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#R4的配置
1
2
3
4
5#
ospf 1 Router ID 10.4.4.4
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#
配置完成后,待网络稳定后查看当前网络中DR和BDR的选举情况。
# 在R1上查看OSPF的邻居信息。可以看出,该网络已经完成了DR和BDR的选举,R1是DR,R2是BDR,R3和R4是DR Other。这里R1是DR,R2是BDR跟系统的启动顺序是直接相关的。本例中按照R1、R2、R3、R4的顺序依次启动设备,所以R1和R2首先完成了初始化,自然成为了DR和BDR。
1 | <R1> display ospf peer |
# 在R1、R2、R3和R4上查看OSPF邻居的概要信息。可以看出,R1、R2和其他三台路由器的邻居关系都是Full,而R3和R4之间的邻居关系是2-Way状态。这表示DR、BDR与邻居间建立的是邻接关系,而DR Other之间建立的只是邻居关系。OSPF邻居状态的详细描述,请参见OSPF邻居状态机。
1 | <R1> display ospf 1 peer brief |
网络中无法选举出BDR时
如果在R2、R3、R4的接口GE0/0/1上执行ospf dr-priority命令将接口的DR优先级配置为0,那么这个时候这三台路由器将失去DR和BDR的选举资格,只能作为DR Other,网络中仅存在一台具备DR和BDR选举资格的路由器,就是R1。
# 在R1上查看OSPF邻居信息。可以看到,此时DR是R1,BDR显示为None,即网络中不存在BDR。
1 | <R1> display ospf peer |
# 在R1、R2、R3和R4上查看OSPF邻居的概要信息。可以看出,R2、R3、R4分别和R1建立了邻接关系(状态为FULL),而R2、R3、R4之间的邻居状态只停留在2-Way的状态。
1 | <R1> display ospf 1 peer brief |
由此可知,如果在一个广播网络或NBMA网络上只有一台路由器具有选举资格,那么这台路由器将成为DR,并且在这个网络上没有BDR,其他所有的路由器都将只和DR建立邻接关系。
网络中无法选举出DR和BDR时
在以上配置的基础上,如果在R1的接口GE0/0/1上执行ospf dr-priority命令将接口的DR优先级配置为0,则R1也失去DR、BDR的选举资格。此时该网络中将没有任何路由器具备DR和BDR的选举资格。
# 在R1上查看OSPF邻居信息。可以看到,DR和BDR字段都显示None,表示这个网络中不存在DR和BDR。
1 | <R1> display ospf peer |
# 在R1、R2、R3和R4上查看OSPF邻居的概要信息。可以看出,此时所有的邻居状态都只停留在2-Way的状态,网络不能建立邻接关系,各个路由器之间不能完成路由信息的交互。
1 | <R1> display ospf 1 peer brief |
由此可知,如果在一个广播网络或NBMA网络上不存在具备DR和BDR选举资格的路由器,那么这个网络上将没有DR或者BDR,而且也不会建立任何邻接关系。这种情况下,网络上所有路由器的邻居状态都将停留在2-Way状态。
6.2.1.6 OSPF状态机
OSPF接口状态机
OSPF设备从接口获取链路信息后,与相邻设备建立邻接关系,交互这些信息。在建立邻接关系之前,邻居设备间需要明确角色分工才能正常建立连接。OSPF接口信息的State字段(可通过display ospf interface命令查看)表明了OSPF设备在对应链路中的作用。
OSPF接口共有以下七种状态:
- Down:接口的初始状态。表明此时接口不可用,不能用于收发流量。
- Loopback:设备到网络的接口处于环回状态。环回接口不能用于正常的数据传输,但可以通过Router-LSA进行通告。因此,进行连通性测试时能够发现到达这个接口的路径。
- Waiting:设备正在判定网络上的DR和BDR。在设备参与DR和BDR选举前,接口上会启动Waiting定时器。在这个定时器超时前,设备发送的Hello报文不包含DR和BDR信息,设备不能被选举为DR或BDR。这样可以避免不必要地改变链路中已存在的DR和BDR。仅NMBA网络、广播网络有此状态。
- P-2-P:接口连接到物理点对点网络或者是虚拟链路,这个时候设备会与链路连接的另一端设备建立邻接关系。仅P2P、P2MP网络有此状态。
- DROther:设备没有被选为DR或BDR,但连接到广播网络或NBMA网络上的其他设备被选举为DR。它会与DR和BDR建立邻接关系。
- BDR:设备是相连的网络中的BDR,并将在当前的DR失效时成为DR。该设备与接入该网络的所有其他设备建立邻接关系。
- DR:设备是相连的网络中的DR。该设备与接入该网络的所有其他设备建立邻接关系。
OSPF接口根据不同的情况(即输入事件)在各状态中进行灵活转换,这样就形成了一个高效运作的接口状态机,如图6-13所示。
图6-13 OSPF接口状态机
表6-1列出了不同状态切换时的输入事件InputEvent(图6-13中简称IE)。
表6-1 OSPF接口状态切换的输入事件
输入事件 | 描述 |
---|---|
IE1 | InterfaceUP:底层协议表明接口是可操作的。 |
IE2 | WaitTimer:等待定时器超时,表明DR和BDR选举等待时间结束。 |
IE3 | BackupSeen:设备已检测过网络中是否存在BDR。发生这个事件主要有下面两种方式:接口收到邻居设备的Hello报文,宣称自己是BDR。接口收到邻居设备的Hello的报文,宣称自己是DR,而没有指明有BDR。这都说明邻居间已进行了相互通信,可以结束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邻居状态机
在OSPF网络中,相邻设备间通过不同的邻居状态切换,最终可以形成完全的邻接关系,完成LSA信息的交互。
OSPF邻居信息的State字段(可通过display ospf peer命令查看)表明了OSPF设备的邻居状态。
OSPF邻居共有以下八种状态:
- Down:邻居会话的初始阶段。表明没有在邻居失效时间间隔内收到来自邻居设备的Hello报文。除了NBMA网络OSPF路由器会每隔PollInterval时间对外轮询发送Hello报文,包括向处于Down状态的邻居路由器(即失效的邻居路由器)发送之外,其他网络是不会向失效的邻居路由器发送Hello报文的。
- Attempt:这种状态适用于NBMA网络,邻居路由器是手工配置的。邻居关系处于本状态时,路由器会每隔HelloInterval时间向自己手工配置的邻居发送Hello报文,尝试建立邻居关系。
- Init:本状态表示已经收到了邻居的Hello报文,但是对端并没有收到本端发送的Hello报文,收到的Hello报文的邻居列表并没有包含本端的Router ID,双向通信仍然没有建立。
- 2-Way:互为邻居。本状态表示双方互相收到了对端发送的Hello报文,报文中的邻居列表也包含本端的Router ID,邻居关系建立。如果不形成邻接关系则邻居状态机就停留在此状态,否则进入ExStart状态。DR和BDR只有在邻居状态处于这个状态或者更高的状态才会被选举出来。
- ExStart:协商主从关系。建立主从关系主要是为了保证在后续的DD报文交换中能够有序的发送。邻居间从此时才开始正式建立邻接关系。
- Exchange:交换DD报文。本端设备将本地的LSDB用DD报文来描述,并发给邻居设备。
- Loading:正在同步LSDB。两端设备发送LSR报文向邻居请求对方的LSA,同步LSDB。
- Full:建立邻接。两端设备的LSDB已同步,本端设备和邻居设备建立了完全的邻接关系。
OSPF邻居状态的切换如图6-14所示。
图6-14 OSPF邻居状态机
表6-2列出了不同状态切换时的输入事件InputEvent(图6-13中简称IE)。
表6-2 OSPF邻居状态切换的输入事件
输入事件 | 描述 |
---|---|
IE1 | Start:以HelloInterval间隔向邻居设备发送Hello报文,尝试建立邻居关系。仅NMBA网络适用。 |
IE2 | HelloReceived:从邻居设备收到一个Hello报文。 |
IE3 | 2-WayReceived:从邻居设备收到的Hello报文中包含了自己的RouterID,邻居间建立了双向通信关系。接下来会进行判断:IE3(Y):如果相邻设备间应当建立邻接关系,会将邻居状态切换为ExStart。IE3(N):如果相邻设备间不应当建立邻接关系,只建立邻居关系,会将邻居状态切换为2-Way。 |
IE4 | NegotiationDone:邻居间主从关系已经协商完成,DD序列号已经交换。 |
IE5 | ExchangeDone:邻居间成功交换了数据库描述报文。接下来会进行判断:IE5(Y):如果链路状态请求列表为空,会将邻居状态切换为Full状态,表示链路状态数据已全部交换完成,邻居间建立了完全的邻接关系。IE5(N):如果链路状态请求列表不为空,会将邻居状态切换为Loading状态,开始或继续向邻居发送LSR报文,请求还没有接收到的链路状态数据。 |
IE6 | LoadingDone:链路请求状态列表为空。 |
6.2.1.7 OSPF邻接关系的建立
OSPF邻居关系和邻接关系
OSPF设备启动后,会通过OSPF接口向外发送Hello报文。网络中其它收到Hello报文的OSPF设备会检查该报文中所定义的参数,比如Hello报文发送间隔、网络类型、IP地址掩码等。如果双方Hello报文中的参数一致就会形成邻居关系,两端设备互为邻居。
OSPF邻接关系位于邻居关系之上。两端需要进一步交换DD报文、交互LSA信息时才建立邻接关系。
在广播链路和NBMA链路上,因为DR Other之间不需要交换LSA信息,所以建立的是邻居关系。而DR与BDR之间,DR、BDR与DR Other之间需要交互LSA信息,所以建立的是邻接关系。如图6-15所示,两台DR Other各有三个邻居,但是分别只有两个邻接。
图6-15 OSPF邻居关系和邻接关系
P2P链路和P2MP链路上只有OSPF邻接关系。
简单来说,邻居关系是指邻居状态达到了2-Way状态,而邻接关系则需要达到ExStart或以上状态。
OSPF邻接关系建立过程
不同类型的网络,OSPF邻接关系建立过程略有不同。
广播网络
在广播网络中,DR、BDR和网段内的每一台路由器都形成邻接关系,但DR other之间只形成邻居关系。邻接关系建立的过程如图6-16所示。
图6-16 广播网络中邻接关系的建立过程
建立邻居关系
- RouterA连接到广播类型网络的接口上使能了OSPF协议,并发送了一个Hello报文(使用组播地址224.0.0.5)。此时,RouterA认为自己是DR设备(DR=1.1.1.1),但不确定邻居是哪台设备(Neighbors Seen=0)。
- RouterB收到RouterA发送的Hello报文后,发送一个Hello报文回应给RouterA,并且在报文中的Neighbors Seen字段中填入RouterA的Router ID(Neighbors Seen=1.1.1.1),表示已收到RouterA的Hello报文,并且宣告DR设备是RouterB(DR=2.2.2.2),然后RouterB的邻居状态机置为Init。
- RouterA收到RouterB回应的Hello报文后,将邻居状态机置为2-Way状态,下一步双方开始发送各自的链路状态数据库。在广播网络中,两个接口状态是DR Other的设备之间将停留在此步骤。
主从关系协商、DD报文交换
RouterA首先发送一个DD报文,宣称自己是Master(即将DD报文中的MS字段置为1),并规定序列号Seq=X。I=1表示这是第一个DD报文,报文中并不包含LSA的摘要,只是为了协商主从关系。M=1说明这不是最后一个报文。
为了提高发送的效率,RouterA和RouterB首先了解对端数据库中哪些LSA是需要更新的。如果某一条LSA在LSDB中已经存在,就不再需要请求更新了。为了达到这个目的,RouterA和RouterB先发送DD报文,DD报文中包含了对LSDB中LSA的摘要描述(每一条摘要可以唯一标识一条LSA)。为了保证报文在传输过程中的可靠性,在DD报文的发送过程中需要确定双方的主从关系,作为Master的一方定义一个序列号Seq,每发送一个新的DD报文将Seq加1,作为Slave的一方,每次发送DD报文时使用接收到的上一个Master的DD报文中的Seq。
RouterB在收到RouterA的DD报文后,将RouterA的邻居状态机改为ExStart,并且回应一个DD报文(该报文中同样不包含LSA的摘要信息)。由于RouterB的Router ID较大,所以在报文中RouterB认为自己是Master,并且重新规定了序列号Seq=Y。
RouterA收到报文后,同意了RouterB为Master,并将RouterB的邻居状态机改为Exchange。RouterA使用RouterB的序列号Seq=Y来发送新的DD报文,该报文开始正式传送LSA的摘要。在报文中RouterA将MS字段置为0,说明自己是Slave。
RouterB收到报文后,将RouterA的邻居状态机改为Exchange,并发送新的DD报文来描述自己的LSA摘要,此时RouterB将报文的序列号改为Seq=Y+1。上述过程持续进行,RouterA通过重复RouterB的序列号来确认已收到RouterB的报文。RouterB通过将序列号Seq加1来确认已收到RouterA的报文。当RouterB发送最后一个DD报文时,在报文中写上M=0。
LSDB同步(LSA请求、LSA传输、LSA应答)
- RouterA收到最后一个DD报文后,发现RouterB的数据库中有许多LSA是自己没有的,将邻居状态机改为Loading状态。此时RouterB也收到了RouterA的最后一个DD报文,但RouterA的LSA,RouterB都已经有了,不需要再请求,所以直接将RouterA的邻居状态机改为Full状态。
- RouterA发送LSR报文向RouterB请求更新LSA。RouterB用LSU报文来回应RouterA的请求。RouterA收到后,发送LSAck报文确认。
上述过程持续到RouterA中的LSA与RouterB的LSA完全同步为止,此时RouterA将RouterB的邻居状态机改为Full状态。当路由器交换完DD报文并更新所有的LSA后,此时邻接关系建立完成。
NBMA网络
在NBMA网络中,所有路由器只与DR和BDR之间形成邻接关系。邻接关系建立的过程如图6-17所示。
图6-17 NBMA网络中邻接关系的建立过程
- 建立邻居关系
- RouterB向RouterA的一个状态为Down的接口发送Hello报文后,RouterB的邻居状态机置为Attempt。此时,RouterB认为自己是DR设备(DR=2.2.2.2),但不确定邻居是哪台设备(Neighbors Seen=0)。
- RouterA收到Hello报文后将邻居状态机置为Init,然后再回复一个Hello报文。此时,RouterA同意RouterB是DR设备(DR=2.2.2.2),并且在Neighbors Seen字段中填入邻居设备的Router ID(Neighbors Seen=2.2.2.2)。在NBMA网络中,两个接口状态是DR Other的设备之间将停留在此步骤。
- 主从关系协商、DD报文交换过程与广播网络中邻接关系建立过程相同。
- LSDB同步(LSA请求、LSA传输、LSA应答)过程与广播网络中邻接关系建立过程相同。
点到点网络和点到多点网络
点到点网络、点到多点网络中OSPF邻接关系建立的过程与广播网络相似。不同的是,在点到点、点到多点网络中不需要选举DR和BDR,且点到点网络中的DD报文是单播发送的。
6.2.1.8 OSPF区域
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,路由器数量的增多会导致链路状态数据库LSDB(Link-State Database)非常庞大,占用大量的存储空间,并使得运行SPF算法的复杂度增加,导致路由器负担很重。在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“动荡”之中,造成网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。
OSPF协议通过将自治系统划分成不同的区域解决LSDB频繁更新的问题,提高网络的利用率。区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。区域的边界是路由器,而不是链路。一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。
在了解OSPF区域之前,需要先了解与区域相关的两个概念:路由器类型和路由类型。
路由器类型
OSPF协议中常用到的路由器类型如图6-18所示。
图6-18 路由器类型
表6-3 路由器类型
路由器类型 | 含义 |
---|---|
区域内路由器(Internal Router) | 该类设备的所有接口都属于同一个OSPF区域。 |
区域边界路由器ABR(Area Border Router) | 该类设备可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。 |
骨干路由器(Backbone Router) | 该类设备至少有一个接口属于骨干区域。所有的ABR和位于Area0的内部设备都是骨干路由器。 |
自治系统边界路由器ASBR(AS Boundary Router) | 与其他AS交换路由信息的设备称为ASBR。ASBR并不一定位于AS的边界,它可能是区域内设备,也可能是ABR。只要一台OSPF设备引入了外部路由的信息,它就成为ASBR。 |
路由类型
AS区域内和区域间路由描述的是AS内部的网络结构,AS外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPF将引入的AS外部路由分为Type1和Type2两类。
表6-4中按优先级从高到低顺序列出了路由类型。
表6-4 路由类型
路由类型 | 含义 |
---|---|
Intra Area | 区域内路由。 |
Inter Area | 区域间路由。 |
第一类外部路由(Type1 External) | 这类路由的可信程度高一些,所以计算出的外部路由的开销与自治系统内部的路由开销是相当的,并且和OSPF自身路由的开销具有可比性。到第一类外部路由的开销=本设备到相应的ASBR的开销+ASBR到该路由目的地址的开销。 |
第二类外部路由(Type2 External) | 这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远大于在自治系统之内到达ASBR的开销。所以,OSPF计算路由开销时只考虑ASBR到自治系统之外的开销,即到第二类外部路由的开销=ASBR到该路由目的地址的开销。 |
区域类型
OSPF的区域类型包括普通区域、Stub区域、NSSA区域。
表6-5 区域类型
区域类型 | 作用 | 说明 |
---|---|---|
普通区域 | 缺省情况下,OSPF区域被定义为普通区域。普通区域包括:标准区域:最通用的区域,它传输区域内路由,区域间路由和外部路由。骨干区域:连接所有其他OSPF区域的中央区域,用Area 0表示。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。 | 骨干区域自身必须保持连通。所有非骨干区域必须与骨干区域保持连通。 |
Stub区域 | Stub区域是一些特定的区域,Stub区域的ABR不传播它们接收到的自治系统外部路由,因此这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。一般情况下,Stub区域位于自治系统的边界,是只有一个ABR的非骨干区域,为保证到自治系统外的路由依旧可达,Stub区域的ABR将生成一条缺省路由,并发布给Stub区域中的其他非ABR路由器。Totally Stub区域允许ABR发布Type3缺省路由,不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。 | 骨干区域不能配置成Stub区域。Stub区域内不能存在ASBR,因此自治系统外部的路由不能在本区域内传播。虚连接不能穿过Stub区域。 |
NSSA(Not-So-Stubby Area)区域 | NSSA是Stub区域的一个变形,它和Stub区域有许多相似的地方。NSSA区域不允许存在Type5 LSA。NSSA区域允许引入自治系统外部路由,携带这些外部路由信息的Type7 LSA由NSSA的ASBR产生,仅在本NSSA内传播。当Type7 LSA到达NSSA的ABR时,由ABR将Type7 LSA转换成Type5 LSA,泛洪到整个OSPF域中。Totally NSSA区域不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。 | 该区域的ABR发布Type7 LSA缺省路由传播到区域内,所有域间路由都必须通过ABR才能发布。虚连接不能穿过NSSA区域。 |
OSPF网络划分区域以后,一个区域内参与SPF算法的只有区域内的LSA,其他的区域的LSA不参与本区域的SPF算法。如图6-19所示,Area 1中的链路质量不好一直处于闪断中,所以Area 1的SPF算法会频繁运算。但是这种影响仅局限在Area 1内,其他区域不会因此而重新进行SPF运算,网络的震荡被限制在一个更小的范围内,提高了网络的稳定性。
图6-19 划分区域后链路震荡的影响范围减小
Stub区域和Totally Stub区域
如图6-20所示,OSPF划分了Area 0和Area 2,并且Area 0内的ASBR引入了外部路由。通常情况下,为了保证网络的路由可达性,可能把网络的各个角落的路由全都发布进了OSPF。此时,虽然各路由设备都能够到达网络的各个角落了,但如果网络越来越大,设备越来越多,那么每台设备的路由表项就会越来越大,而维护一个大规模的路由表项是需要消耗很多CPU及内存资源的。特别是对于一些边缘区域,设备性能可能比较低,维护大规模的路由表项会对设备性能带来巨大压力。
图6-20 Stub区域和Totally Stub区域
从网络优化的角度考虑,通常在保证网络可达性的同时应尽量减小路由表项的规模,减少网络中LSA报文的泛洪。Area 2如果作为一个常规区域,那么可能存在Type1、Type2、Type3、Type4、Type5共计5中类型的LSA。对于Area 2中的路由器,无论想到达区域外的哪个网络,都必须首先到达到ABR路由器,也就是说这个时候Area 2中的其他路由器并不需要了解外部网络的细节。这种情况下,就产生了OSPF的Stub区域。
Stub区域是一种特殊的区域。Stub区域的ABR不传播它们接收到的自治系统外部路由,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。
Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,Stub区域位于自治系统的边界,是那些只有一个ABR的非骨干区域。
为保证到自治系统外的路由依旧可达,Stub区域的ABR将生成一条缺省路由,并发布给Stub区域中的其他非ABR路由器。
配置Stub区域时需要注意下列几点:
- 骨干区域不能配置成Stub区域。
- 如果要将一个区域配置成Stub区域,则该区域中的所有路由器都要配置Stub区域属性。
- Stub区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
- 虚连接不能穿过Stub区域。
对于Area 2中的路由器来说,其实区域间的明细路由也没必要都了解,仅保留一个出口让Area 2中的路由器的数据包能够出去就足够了,这就产生了OSPF的Totally Stub区域。Totally Stub区域中,既不允许自治系统外部的路由在区域内传播,也不允许区域间路由在区域内传播,这样就进一步减少了区域内LSA的数量。
NSSA区域和Totally NSSA区域
如图6-21所示,假设Area 2原来作为一个Stub区域运行,但是有个外部网络需要通过Area 2接入到这个OSPF网络,也就是需要将自治系统外部路由引入并传播到整个OSPF自治系统中。此时可以在RouterA上将外部路由注入到OSPF自治系统,但是这样RouterA将成为ASBR,因此,Area 2也就不是Stub区域了。针对这种场景,OSPF定义了NSSA区域。
图6-21 NSSA区域和Totally NSSA区域
相比于Stub区域,NSSA区域能够将自治系统外部路由引入并传播到整个OSPF自治系统中,同时又不会学习来自OSPF网络其它区域的路由。
在NSSA区域中,为保证到自治系统外的路由可达,NSSA区域的ABR将生成一条缺省路由,并发布给NSSA区域中的其他路由器。
配置NSSA区域时需要注意下列几点:
- 骨干区域不能配置成NSSA区域。
- 如果要将一个区域配置成NSSA区域,则该区域中的所有路由器都要配置NSSA区域属性。
- 虚连接不能穿过NSSA区域。
在NSSA区域中,可能同时存在多个ABR,为了防止路由环路产生,边界路由器之间不计算对方发布的缺省路由。
一个区域内所有路由器上配置的区域类型必须保持一致。OSPF在Hello报文中使用N-bit来标识路由器支持的区域类型,区域类型选择不一致的路由器不能建立OSPF邻居关系。虽然协议有要求,但有些厂商实现时违背了这一原则,在OSPF DD报文中也置位了N-bit。为了和这些厂商互通,交换机的实现方式是可以通过命令设置N-bit来兼容。
与Totally Stub区域类似,为了进一步减少NSSA区域中LSA的数量,OSPF还定义了Totally NSSA区域。
OSPF区域间环路及防环方法
OSPF在区域内部运行的是SPF算法,这个算法能够保证区域内部的路由不会成环。然而划分区域后,区域之间的路由传递实际上是一种类似距离矢量算法的方式,这种方式容易产生环路。
为了避免区域间的环路,OSPF规定直接在两个非骨干区域之间发布路由信息是不允许的,只允许在一个区域内部或者在骨干区域和非骨干区域之间发布路由信息。因此,每个ABR都必须连接到骨干区域。
假设OSPF允许非骨干区域之间直接传递路由,则可能会导致区域间环路。如图6-22所示,骨干区连接到其他网络的路由信息会传递至Area 1。假设非骨干区之间允许直接传递路由信息,那么这条路由信息最终又被传递回去,形成区域间的路由环路。为了防止这种区域间环路,OSPF禁止Area 1和Area 3,以及Area 2和Area 3之间直接进行路由交互,而必须通过骨干区域进行路由交互。这样就能防止区域间环路的产生。
图6-22 OSPF区域间环路
OSPF缺省路由
缺省路由是指目的地址和掩码都是0的路由。当设备无精确匹配的路由时,就可以通过缺省路由进行报文转发。由于OSPF路由的分级管理,Type3缺省路由的优先级高于Type5或Type7路由。
OSPF缺省路由通常应用于下面两种情况:
- 由区域边界路由器(ABR)发布Type3缺省Summary LSA,用来指导区域内设备进行区域之间报文的转发。
- 由自治系统边界路由器(ASBR)发布Type5外部缺省ASE LSA,或者Type7外部缺省NSSA LSA,用来指导自治系统(AS)内设备进行自治系统外报文的转发。
OSPF缺省路由的发布原则如下:
- OSPF路由器只有具有对区域外的出口时,才能够发布缺省路由LSA。
- 如果OSPF路由器已经发布了缺省路由LSA,那么不再学习其它路由器发布的相同类型缺省路由。即路由计算时不再计算其它路由器发布的相同类型的缺省路由LSA,但数据库中存有对应LSA。
- 外部缺省路由的发布如果要依赖于其它路由,那么被依赖的路由不能是本OSPF路由域内的路由,即不是本进程OSPF学习到的路由。因为外部缺省路由的作用是用于指导报文的域外转发,而本OSPF路由域的路由的下一跳都指向了域内,不能满足指导报文域外转发的要求。
不同区域缺省路由发布原则如表6-6所示。
表6-6 OSPF缺省路由发布原则
区域类型 | 作用 |
---|---|
普通区域 | 缺省情况下,普通OSPF区域内的OSPF路由器是不会产生缺省路由的,即使它有缺省路由。当网络中缺省路由通过其他路由进程产生时,路由器必须将缺省路由通告到整个OSPF自治系统中。实现方法是在ASBR上手动通过命令进行配置,产生缺省路由。配置完成后,路由器会产生一个缺省ASE LSA(Type5 LSA),并且通告到整个OSPF自治系统中。 |
Stub区域 | Stub区域不允许自治系统外部的路由(Type5 LSA)在区域内传播。区域内的路由器必须通过ABR学到自治系统外部的路由。实现方法是ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个Stub区域内。这样,到达自治系统的外部路由就可以通过ABR到达。 |
Totally Stub区域 | Totally Stub区域既不允许自治系统外部的路由(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。区域内的路由器必须通过ABR学到自治系统外部和其他区域的路由。实现方法是配置Totally Stub区域后,ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个Stub区域内。这样,到达自治系统外部的路由和其他区域间的路由都可以通过ABR到达。 |
NSSA区域 | NSSA区域允许引入通过本区域的ASBR到达的少量外部路由,但不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播。即到达自治系统外部的路由只能通过本区域的ASBR到达。只配置了NSSA区域是不会自动产生缺省路由的。此时,有两种选择:如果希望到达自治系统外部的路由通过该区域的ASBR到达,而其它外部路由通过其它区域出去。此时,ABR会产生一条Type7 LSA的缺省路由,通告到整个NSSA区域内。这样,除了某少部分路由通过NSSA的ASBR到达,其它路由都可以通过NSSA的ABR到达其它区域的ASBR出去。如果希望所有的外部路由只通过本区域NSSA的ASBR到达。则必须在ASBR上手动通过命令进行配置,使ASBR产生一条缺省的NSSA LSA(Type7 LSA),通告到整个NSSA区域内。这样,所有的外部路由就只能通过本区域NSSA的ASBR到达。上面两种情况的区别是:在ABR上无论路由表中是否存在缺省路由0.0.0.0,都会产生Type7 LSA的缺省路由。在ASBR上只有当路由表中存在缺省路由0.0.0.0时,才会产生Type7 LSA的缺省路由。因为缺省路由只是在本NSSA区域内泛洪,并没有泛洪到整个OSPF域中,所以本NSSA区域内的路由器在找不到路由之后可以从该NSSA的ASBR出去,但不能实现其他OSPF域的路由从这个出口出去。Type7 LSA缺省路由不会在ABR上转换成Type5 LSA缺省路由泛洪到整个OSPF域。 |
Totally NSSA区域 | Totally NSSA区域既不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。区域内的路由器必须通过ABR学到其他区域的路由。实现方法是配置Totally NSSA区域后,ABR会自动产生一条缺省的Type3 LSA通告到整个NSSA区域内。这样,其他区域的外部路由和区域间路由都可以通过ABR在区域内传播。 |
6.2.1.9 OSPF LSA类型
OSPF网络中划分了不同的区域,每个区域都维护自己独立的LSDB,同时路由器也被定义成不同的类型。封装了路由描述信息的LSA根据路由器的类型也可以分门别类。
图6-23是一个被划分区域的OSPF网络。R4上配置了静态路由,在R4上将静态路由引入到OSPF进程中。
图6-23 划分区域的OSPF网络
R1、R2、R3、R4的Router ID及各接口的IP地址如表6-7所示。
表6-7 数据规划
设备 | Router ID | 接口IP地址 |
---|---|---|
R1 | 10.1.1.1/32 | GE0/0/1:192.168.12.1/24 |
R2 | 10.2.2.2/32 | GE0/0/2:192.168.12.2/24GE0/0/1:192.168.23.1/24 |
R3 | 10.3.3.3/32 | GE0/0/2:192.168.23.2/24GE0/0/1:192.168.34.1/24 |
R4 | 10.4.4.4/32 | GE0/0/2:192.168.34.2/24 |
下面结合图6-23所示的网络介绍各类LSA。
Router-LSA
Router-LSA是一种最基本的LSA,即Type1 LSA。
OSPF网络里的每一台路由设备都会发布Type1 LSA。这种类型的LSA用于描述设备的链路状态和开销,在路由器所属的区域内传播。以R2为例,如图6-24所示,R2在Area 0、Area 1会分别发布Router-LSA。
图6-24 Type1 Router-LSA
以R2在接口GE0/0/1上泛洪的一条Router-LSA为例,该LSA中包含的信息如图6-25所示。
图6-25 Router-LSA信息
LSA报文包括LSA头部和LSA信息字段。所有类型的LSA报文,其LSA头部包含的字段都是一样的,唯一不同的是Link State ID字段含义。在LSA头部中,主要关注以下三个字段:
- Link-State Advertisement Type:LSA类型。
- Link State ID:链路状态ID。在Router-LSA中代表始发该LSA的设备的Router ID,这里即是R2自己的Router ID。
- Advertising Router:通告路由器。
Router-LSA的信息字段有三个,用于将自己连接的所有链路的状况以及开销告诉该LSA泛洪区域的其他路由器。
图6-25所示的LSA描述的信息为:链路类型(Type)为一个传送网络(Transit),DR接口的IP地址(ID)为192.168.23.2,和网络相连的通告路由器接口的IP地址是192.138.23.1(Data),到达该网络的开销(Metric)是1。收到该LSA报文的路由器根据这些链路状态的描生成拓扑。
其中,Link Type有四种类型,并且ID和Data的值会根据Link Type而有不同:
- 1-P2P(点对点):此时ID表示邻居路由设备的Router ID,Data表示和网络相连的通告路由器接口的IP地址。
- 2-Transit(传送网络):此时ID表示DR接口的IP地址,Data表示和网络相连的通告路由器接口的IP地址。
- 3-Stub(末梢网络):此时ID表示IP网络或子网地址,Data表示网络的IP地址或子网掩码。
- 4-Virtual Link(虚链路):此时ID表示邻居路由设备的Router ID,Data表示通告路由器接口的MIB-II ifIndex值。
Network-LSA
Network-LSA,也就是Type2 LSA,由DR(Designated Router)产生,描述本网段的链路状态,在所属的区域内传播。如图6-26所示,R3向R2发送一条Network-LSA,列出了所有与DR形成完全邻接关系的路由器的Router ID。
图6-26 Type2 Network-LSA
该Network-LSA中包含的信息如图6-27所示。
图6-27 Network-LSA信息
在Network-LSA中,Link State ID字段的含义是DR接口上的IP地址。
通过Router-LSA和Network-LSA在区域内洪泛,区域内每个路由器可以完成LSDB同步,这就解决了区域内部的通信问题。
Network-summary-LSA
Network-summary-LSA,也叫Type3 LSA,由ABR发布,用来描述区域间的路由信息。ABR将Network-summary-LSA发布到一个区域,通告该区域到其他区域的目的地址。实际上,ABR是将区域内部的Type1和Type2的信息收集起来并汇总之后扩散出去,这就是Summay的含义。如图6-28所示,R2作为ABR,将Area 0和Area 1中的路由信息分别发布对方区域。
图6-28 Type3 Network-summary-LSA
如图6-29所示,是R2在接口GE0/0/1上发布的一条Network-summary-LSA。
图6-29 Network-summary-LSA信息
在Network-summary-LSA中,Link State ID字段代表该LSA所描述网络的网络地址。从LSA的信息中可以看出,该LSA由R2发布(10.2.2.2),可以到达192.168.12.0,掩码为255.255.255.0的网络,代价为1。R2将Area 1中的网络地址在Area 0中发布,从而让Area 0中的路由器知道去该网络的路径,实现区域间的通信。
如果—台ABR在与它本身相连的区域内有多条路由可以到达目的地,那么它将只会始发单一的一条网络汇总LSA到骨干区域,而且这条网络汇总LSA是上述多条路由中代价最低的。
Network-summary-LSA不会通告给Totally Stub和Totally NSSA区域。
ASBR-Summary-LSA
ASBR-summary-LSA,也叫Type4 LSA,由ABR发布,描述到ASBR的路由信息,并通告给除ASBR所在区域的其他相关区域。如图6-30所示,R3作为ABR通告ASBR-summary-LSA到Area 0中。
图6-30 Type4 ASBR-summary-LSA
ASBR-summary-LSA信息如图6-31所示。其中,Link State ID表示该LSA所描述的ASBR的Router ID(10.4.4.4),即R4,发布该LSA的路由设备是R3(10.3.3.3),R3到达R4的代价是1。
图6-31 ASBR-summary-LSA信息
AS-external-LSA
AS-external-LSA,也叫Type5 LSA,由ASBR产生,描述到AS外部的路由,通告到除Stub区域和NSSA区域以外所有的区域。如图6-32所示,R4作为ASBR发布了一条OSPF AS到外部目的网络的路由信息。
图6-32 Type5 AS-external-LSA
AS-external-LSA中包含的信息如图6-33所示。其中,Link State ID代表外部网络目的IP地址,转发地址是指到达该外部网络的数据包应该被转发到的地址。此处的转发地址为0.0.0.0表示数据包将被转发到始发ASBR上。
图6-33 AS-external-LSA信息
NSSA LSA
除了上述几种LSA之外,还有一种比较特殊的LSA,NSSA LSA,也叫Type7 LSA。NSSA LSA由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。NSSA区域的ABR收到NSSA LSA时,会有选择地将其转化为Type5 LSA,以便将外部路由信息通告到OSPF网络的其它区域。
如果图6-23中的Area 2为NSSA区域,R4的接口GE0/0/2会始发一条NSSA LSA,如图6-34所示。
图6-34 NSSA LSA
NSSA LSA所有的字段与AS-external-LSA字段均相同,但这两种LSA泛洪的区域不同。AS-external-LSA是在整个AS泛洪,而NSSA LSA仅在NSSA区域中泛洪。
NSSA区域允许引入外部路由,但描述外部路由信息的NSSA LSA只能在本区域泛洪。为了使外部路由能被引入到除NSSA区域以外的其他区域,NSSA LSA在ABR(R3)上会转换成AS-external-LSA,并且泛洪到骨干区直至整个自治系统中。
- P-bit(Propagate bit)用于告知转化路由器该条Type7 LSA是否需要转化。
- 缺省情况下,转化路由器是NSSA区域中Router ID最大的ABR。
- 只有P-bit置位并且FA(Forwarding Address)不为0的NSSA LSA才能转化为AS-external-LSA。FA用来表示发送的某个目的地址的报文将被转发到FA所指定的地址。
- 区域边界路由器产生的NSSA LSA不会置位P-bit。
Opaque LSA
Opaque LSA包括Type9 LSA,Type10 LSA和Type11 LSA,用于OSPF的扩展通用机制。
- Type9 LSA仅在接口所在网段范围内传播。用于支持GR的Grace LSA就是Type9 LSA的一种。
- Type10 LSA在区域内传播。用于支持TE的LSA就是Type10 LSA的一种。
- Type11 LSA在自治系统内传播,目前还没有实际应用的例子。
6.2.1.10 OSPF快速收敛
OSPF快速收敛是为了提高路由的收敛速度而做的扩展特性。包括:
OSPF按优先级收敛
OSPF按优先级收敛是指在大量路由情况下,能够让某些特定的路由优先收敛的一种技术。通过对不同的路由配置不同的收敛优先级,达到重要的路由先收敛的目的,提高网络的可靠性。因此,用户可以把和关键业务相关的路由配置成相对较高的优先级,使这些路由更快的收敛,从而使关键的业务受到的影响减小。
PRC(Partial Route Calculation)部分路由计算
当网络上路由发生变化的时候,只对发生变化的路由进行重新计算。
通过智能定时器控制LSA的生成与接收,达到对低频变化快速响应,又能对高频变化起到有效抑制的目的。
RFC2328通过如下两个规定来避免网络连接或者路由频繁动荡引起的过多占用设备资源:
- 同一条LSA在1秒内不能再次生成,即LSA的更新时间间隔5秒。
- LSA被接收的时间间隔为1秒。
在网络相对稳定、对路由收敛时间要求较高的组网环境中,可以通过智能定时器指定LSA的更新、被接收的时间间隔为0,使得拓扑或者路由的变化可以通过LSA发布到网络中,或者立即被感知到,从而加快路由的收敛。
通过智能定时器控制路由计算
当网络发生变化时,OSPF需要重新进行路由计算,为避免频繁的网络变化对设备造成的冲击,标准RFC2328规定路由计算时要使用延迟定时器,定时器超时后才进行路由计算。但标准协议中,该定时器定时间隔固定,无法做到既能快速响应又能抑制震荡。
通过智能定时器来控制路由计算的延迟时间,达到对低频率变化快速响应,又能对高频率变化起到有效抑制的目的。
6.2.1.11 OSPF虚连接
虚连接(Virtual link)是指在两台ABR之间通过一个非骨干区域建立的一条逻辑上的连接通道。
根据RFC 2328,在部署OSPF时,要求所有的非骨干区域与骨干区域相连,否则会出现有的区域不可达的问题。但是在实际应用中,可能会因为各方面条件的限制,无法满足所有非骨干区域与骨干区域保持连通的要求,此时可以通过配置OSPF虚连接来解决这个问题。
如图6-35所示,Area 2没有连接到骨干区Area 0,所以RouterA不能作为ABR向Area 2生成Area 0中Network1的路由信息,所以RouterB上没有到达Network1的路由。此时可以考虑部署虚连接来解决这个问题。
图6-35 OSPF非骨干区没有连接骨干区
如图6-36所示,通过虚连接,两台ABR之间直接传递OSPF报文信息,两者之间的OSPF设备只是起到一个转发报文的作用。由于OSPF协议报文的目的地址不是这些设备,所以这些报文对于两者而言是透明的,只是当作普通的IP报文来转发。
图6-36 OSPF虚连接实现原理
虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,虚连接的两端和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区域(Transit Area)。配置虚连接时,必须在两端同时配置方可生效。
然而,虚连接的存在增加了网络的复杂程度,而且使故障的排除更加困难。因此,在网络规划中应该尽量避免使用虚连接。虚连接仅是作为修复无法避免的网络拓扑问题的一种临时手段。虚链路可以看作是一个标明网络的某个部分是否需要重新规划设计的标志。
6.2.1.12 OSPF路由聚合和路由过滤
OSPF路由聚合
路由聚合是指ABR可以将具有相同前缀的路由信息聚合到一起,只发布一条路由到其它区域。
区域间通过路由聚合,可以减少路由信息,从而减小路由表的规模,提高设备的性能。
OSPF有两种路由聚合方式:
ABR聚合
ABR向其它区域发送路由信息时,以网段为单位生成Type3 LSA。如果该区域中存在一些连续的网段,则可以通过命令将这些连续的网段聚合成一个网段。这样ABR只发送一条聚合后的LSA,所有属于命令指定的聚合网段范围的LSA将不会再被单独发送出去。
ASBR聚合
配置路由聚合后,如果本地设备是自治系统边界路由器ASBR,将对引入的聚合地址范围内的Type5 LSA进行聚合。当配置了NSSA区域时,还要对引入的聚合地址范围内的Type7 LSA进行聚合。
如果本地设备既是ASBR又是ABR,则对由Type7 LSA转化成的Type5 LSA进行聚合处理。
OSPF路由过滤
OSPF支持使用路由策略对路由信息进行过滤。缺省情况下,OSPF不进行路由过滤。
OSPF可以使用的路由策略包括route-policy、访问控制列表(access-list)和地址前缀列表(prefix-list)。
OSPF路由过滤可以应用于以下几个方面:
路由引入
OSPF可以引入其它路由协议学习到的路由。在引入时可以通过配置路由策略来过滤路由,只引入满足条件的路由。
引入路由发布
OSPF引入了路由后会向其它邻居发布引入的路由信息。
可以通过配置过滤规则来过滤向邻居发布的路由信息。该过滤规则只在ASBR上配置才有效。
路由学习
通过配置过滤规则,可以设置OSPF对接收到的区域内、区域间和自治系统外部的路由进行过滤。
该过滤只作用于路由表项的添加与否,即只有通过过滤的路由才被添加到本地路由表中,但所有的路由仍可以在OSPF路由表中被发布出去。
区域间LSA学习
通过命令可以在ABR上配置对进入本区域的Summary LSA进行过滤。该配置只在ABR上有效(只有ABR才能发布Summary LSA)。
区域间LSA学习和路由学习之间的差异在于:区域间LSA学习直接对进入区域的LSA进行过滤;路由学习不是对LSA进行过滤而是对LSA计算出来的路由是否添加本地路由表进行过滤,学习到的LSA是完整的。
区域间LSA发布
通过命令可以在ABR上配置对本区域出方向的Summary LSA进行过滤。该配置只在ABR上配置有效。
6.2.1.13 OSPF多进程
OSPF支持多进程,在同一台路由器上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。
路由器的一个接口只能属于某一个OSPF进程。
OSPF多进程的一个典型应用就是在VPN场景中PE和CE之间运行OSPF协议,同时VPN骨干网上的IGP也采用OSPF。在PE上,这两个OSPF进程互不影响。
6.2.1.14 OSPF RFC1583兼容
RFC1583是OSPFv2协议比较早的版本。
OSPF在计算外部路由时,由于RFC2328和RFC1583的路由计算规则不一致,可能会导致路由环路。为了避免路由环路的发生,RFC2328中提出了RFC1583兼容特性。
- 使能RFC1583兼容后,OSPF采用RFC1583的路由计算规则。
- 不使能RFC1583兼容时,OSPF采用RFC2328的路由计算规则。
OSPF是根据5类LSA来计算外部路由的。RFC1583兼容特性主要用于路由器收到5类LSA后:
- 选择到达产生该LSA的ASBR或该LSA所描述的转发地址(Forwarding Address)的路径;
- 选择到达相同目的地的外部路径。
缺省情况下,OSPF兼容RFC1583。
6.2.2 OSPF增强功能
6.2.2.1 OSPF VPN
定义
OSPF VPN多实例特性是为了支持在VPN场景中PE(Provider Edge)和CE(Customer Edge)之间能够运行OSPF协议、使用OSPF进行路由的学习和发布而在OSPF基础协议上进行的扩展。
目的
OSPF是一种应用广泛的IGP协议,很多情况下,VPN用户内部网络运行OSPF。如果能够在PE-CE之间使用OSPF,PE通过OSPF向CE发布VPN路由,则在CE上就不需要配置PE-CE之间的其它路由协议,从而简化CE的管理和配置。
PE-CE间运行OSPF
BGP/MPLS VPN中,PE之间使用MP-BGP传递路由信息,而PE-CE间则广泛使用OSPF进行路由学习和传递。
PE-CE间使用OSPF有如下优势:
- 通常在一个Site内部使用OSPF学习路由。如果PE-CE间也使用OSPF则可以减少CE设备所支持的协议种类,降低对CE设备的要求。
- 同样,Site内部和PE-CE间都使用OSPF可以降低网络管理人员的工作复杂度,不必要求管理人员对多种协议熟练掌握。
- PE-CE间使用OSPF可以方便从一个非VPN的骨干网转化为一个BGP/MPLS VPN网络。
如图6-37所示,CE1、CE3和CE4都属于VPN1,图中OSPF之后的数字表示PE设备上运行的OSPF多实例进程号。
图6-37 PE-CE间运行OSPF
CE1上的路由发布给CE3和CE4过程可以描述为:
- PE1将CE1上的OSPF路由引入到BGP中,形成BGP VPNv4路由。
- PE1通过MP-BGP将这些BGP VPNv4路由发布给PE2。
- PE2将BGP VPNv4路由引入到OSPF,再发布给CE3和CE4。
同理,CE4和CE3上的路由发布给CE1的过程类似。
PE-CE间OSPF区域配置
PE与CE之间的OSPF区域可以是非骨干区域,也可以是骨干区域(区域0),并且PE永远是ABR(Area Border Router)。
在OSPF VPN扩展应用中,MPLS VPN骨干网被看作是Area0。由于OSPF要求Area 0连续,因此,所有VPN Site的Area0必须与MPLS VPN骨干网相连。如果VPN Site中存在OSPF Area0,则CE接入的PE必须通过Area0与这个VPN Site的骨干区域相连(可以通过Virtual-link实现逻辑连通),如图6-38所示。
图6-38 PE-CE间OSPF区域配置
PE-CE间配置为非骨干区域1,而Site1内配置了骨干区域0,此时Site1的骨干区域就与VPN骨干区域分离了,所以在CE1与PE1间配置虚连接(Virtual link)来保持骨干区域连续。
OSPF Domain ID
本地OSPF区域和VPN远端的OSPF区域间如果相互发布区域间路由(Inter-area routes),则认为这些区域属于同一个OSPF域(OSPF Domain)。
- 域标识符(Domain ID)用来标识和区分不同的域。
- 每一个OSPF域都有一个或多个域标识符,其中有一个是主标识符,其它为从标识符。
- 如果OSPF实例没有明确域标识符,则认为它的标识符为NULL。
PE把从远端PE学来的BGP路由向CE发布时,需要根据域标识符的情况选择向CE发布Type3、Type5或Type7的OSPF路由。
- 如果本地的域标识符与BGP路由信息中携带的远端域标识符相等或相互兼容,则发布3类路由;
- 否则,发布Type5或Type7路由。
表6-8 Domain ID
本地和远端域标识符 | 本地和远端域标识符是否相等 | 发布的路由类型 |
---|---|---|
本地和远端域标识符都为NULL | 相等 | Inter-area路由。 |
远端域标识符=本地主域标识符,或者远端域标识符=本地从域标识符中的一个 | 相等 | Inter-area路由。 |
远端标识符≠本地主从标识符,并且远端标识符≠本地从域标识符中的任何一个 | 不相等 | 如果本地是非NSSA(Not So Stubby Area)区域,生成External路由。如果是NSSA区域,生成NSSA路由。 |
路由环路预防
PE和CE之间,如果OSPF与BGP的路由相互学习,则有可能导致路由环路问题。
图6-39 OSPF VPN路由环路
如图6-39所示,PE1上OSPF引入了目的地址为10.1.1.1/32的BGP路由,产生5类或7类LSA发布给CE1,CE1上学到一条目的地址为10.1.1.1/32,下一跳为PE1的OSPF路由,并发布给PE2,这样PE2上就学到一条目的地址为10.1.1.1/32,下一跳为CE1的OSPF路由。
同理,CE1上也会学到一条目的地址为10.1.1.1/32,下一跳为PE2的OSPF路由,PE1上学到一条目的地址为10.1.1.1/32,下一跳为CE1的OSPF路由。
此时,CE1上存在两条等价路由,分别指向PE1和PE2,而PE1和PE2上到10.1.1.1/32的下一跳也都指向CE1,环路就产生了。
同时,由于OSPF路由的优先级高于BGP路由,PE1和PE2上到10.1.1.1/32的BGP路由被OSPF路由所替代,也就是说,PE1和PE2的路由表中活跃的是到10.1.1.1/32,下一跳为CE1的OSPF路由。
既然BGP路由转为不活跃状态,之前OSPF引入这条BGP路由时所产生的LSA就会被删除,而这样又会导致OSPF路由被撤消。路由表中没有了OSPF路由,BGP路由又变为活跃状态,继续重复之前的循环,导致路由振荡。
OSPF VPN特性专门针对这种情况提供了解决方案,如表6-9所列。
表6-9 路由环路预防
特性名 | 定义 | 作用 |
---|---|---|
DN-bit | 为了防止路由环路,OSPF多实例进程使用一个bit位作为标志位,称为DN位。 | PE在生成Type3、Type5或Type7 LSA发布给CE时,都将DN位置位(值为1),其他类型LSA的DN位不置位(值为0)。PE的OSPF多实例进程在进行计算时,忽略DN置位的LSA。这样就防止了PE又从CE学到发出的LSA而引起的环路。 |
VPN Route Tag | VPN路由标记(VPN Route Tag),PE根据收到的BGP的私网路由产生的5/7类LSA中必须包含这个参数。VPN路由标记不在BGP的扩展团体属性中传递,只是本地概念,只在收到BGP路由并且产生OSPF LSA的PE上有意义。 | 当PE发现LSA的VPN路由标记(LSA的Tag值)和自己的一样,就会忽略这条LSA,因此避免了环路。 |
缺省路由 | 目的地址和掩码全为0的路由。 | 缺省路由用于转发源自CE和CE所在Site的流量。 |
解除路由环路预防
注意:
解除路由环路预防可能导致路由环路,进行该操作时应谨慎。
在BGP/OSPF路由进行交互的过程中,路由环路预防功能能够防止OSPF路由在VPN站点内的路由环路。
但在跨域VPN-OptionA方式场景下,当ASBR之间运行OSPF协议来发送VPN路由信息时,由于系统路由环路预防机制,将导致对端ASBR不能学习到本端ASBR发送的OSPF路由。
如图6-40所示,采用OptionA方式实现跨域VPN。以CE1发送VPN路由到CE2为例说明(PE1与CE1之间运行OSPF协议为例):
图6-40 跨域VPN-OptionA组网图
- PE1通过私网OSPF进程学习到了去往CE1站点的路由,并将这些路由引入到MP-BGP中,发送给ASBR1。
- ASBR1收到MP-BGP路由后,会将这些路由引入到私网OSPF进程中,在生成Type3、Type5或Type7 LSA时,会将DN位置为1。
- ASBR2通过OSPF协议学习到这些LSA时,会对LSA中的DN位进行检查。发现这些LSA的DN位为1,将忽略这些路由。
综上,由于系统的路由环路预防机制,导致ASBR2上学习不到对端ASBR1发来的OSPF路由,导致了CE1与CE3之间不能互通。
为解决上面的问题,有以下的解决方法:
- 不对DN位置位:在将BGP路由引入到OSPF过程中,不对LSA的DN位置位。例如ASBR1在将MP-BGP路由引入到OSPF中时,不对DN位置位,ASBR2收到这些路由时,检查DN位为0,可以参加选路。
- 不对DN位检查:在收到LSA后,不检查DN位。例如ASBR1在将MP-BGP路由引入到OSPF中时,对DN位置位,ASBR2收到这些路由时,不进行DN位检查。
为增加上述方式使用的灵活性,可以只针对特定Type类型的LSA应用。对于Type3 LSA,还可以根据生成LSA设备的OSPF的router-id决定是否进行DN位置位或者检查。
如图6-41所示,跨域VPN-OptionA方式,下ASBR之间为全连接,且都运行OSPF协议。对于ASBR2而言,可能会收到ASBR4上产生的Type3、Type5或Type7 LSA,如果在ASBR2上设置不对DN位检查,Type3 LSA会被接收,按照图6-41中的描述,会引起路由的环路。而对于Type5或Type7 LSA,因为LSA中携带的Route Tag与ASBR2上OSPF进程默认的VPN Route Tag一致,ASBR2上会忽略这些LSA。
针对Type 3类型的LSA容易引起路由环路的问题,可以在ASBR2上设置只针对OSPF Router ID为10.1.1.1和10.3.3.3的Type 3类型的LSA不进行DN位检查。设置后,当ASBR2再收到ASBR4产生的Type3 LSA时,因为该LSA的OSPF Router ID为10.4.4.4,ASBR2会进行DN位的检查,发现DN位已置位,从而忽略这些LSA。
图6-41 跨域VPN-OptionA ASBR全连接组网图
Multi-VPN-Instance CE
OSPF多实例通常运行在PE上,在用户局域网内部运行OSPF多实例的设备称为Multi-VPN-Instance CE(MCE),即多实例CE。
与PE上的OSPF多实例相比:
- Multi-VPN-Instance CE不需要支持BGP/OSPF互相引入功能。
- Multi-VPN-Instance CE通过为不同的业务建立各自的OSPF实例,相当于不同的业务使用不同的虚拟CE,从而以较低的成本解决局域网的安全问题。
- Multi-VPN-Instance CE在同一台CE上实现不同的OSPF多实例。其实现的关键在于禁止路由环路的检查,直接进行路由计算。也就是说,MCE收到了带有DN-bit的LSA也会用于路由计算。
6.2.2.2 OSPF TE
OSPF TE(OSPF Traffic Engineering,即OSPF流量工程)是为了支持MPLS流量工程(MPLS TE),支持建立和维护TE的标签交换路径LSP(Label Switch Path)而在OSPF协议基础上扩展的新特性。在MPLS TE架构中OSPF扮演了信息发布组件的角色,负责收集扩散MPLS流量工程信息。
除了网络的拓扑信息外,流量工程还需要知道网络的约束信息(包括带宽、TE度量值、管理组和亲和属性等)。但OSPF现有的功能不足以满足这些要求。因此需要对现有的OSPF进行扩展,通过引入新类型的LSA来发布这些信息,CSPF(Constrained Shortest Path First)算法利用这些信息就可以计算出满足各种约束条件的路径。
图6-42 OSPF在MPLS-TE体系中的作用
OSPF在MPLS-TE中的作用
在MPLS-TE体系结构中OSPF起到了信息发布组件的作用:
- 收集TE相关信息。
- 在同一个区域中的各设备间扩散TE信息。
- 把同步收集到的TE信息组成流量工程数据库TEDB(TE DataBase)提供给CSPF计算。
除此之外,OSPF并不关心信息具体是什么以及MPLS如何使用这些信息。
TE-LSA
OSPF通过新增Type10 Opaque LSA来实现收集和发布流量工程信息的目的。这种LSA中包含了流量工程所需要的链路状态信息,包括最大链路带宽、最大可预留带宽、当前预留带宽、链路颜色等信息。Type10 Opaque LSA利用OSPF泛洪机制在一个区域内的设备间同步这些信息,最终形成统一的TEDB,为路径计算做好准备。
OSPF TE与CSPF交互
OSPF通过Type10-LSA收集区域内的TE信息,包括带宽、优先级、链路开销(Metric)等,经过处理后,把这些信息提供给CSPF进行路径计算。
IGP Shortcut和转发邻接
OSPF支持IGP Shortcut和转发邻接(Forwarding Adjacency)特性,这两个特性允许OSPF使用隧道接口(Tunnel接口)作为到达某个目的地址的出接口。
IGP Shortcut和转发邻接的区别在于:
- 使能IGP Shortcut特性的设备使用隧道接口作为出接口,但不将这个隧道接口链路发布给邻居,因此,其他设备不能使用此隧道。
- 使能转发邻接特性的设备在使用隧道接口作为出接口的同时,也将这个隧道接口发布给邻居,因此,其他设备能够使用此隧道。
- IGP Shortcut是单向的,只需要在使用该特性的设备上配置即可。
OSPF DS-TE
DS-TE(DiffSer Aware Traffic Engineering)综合了MPLS TE和差分服务模型Diff-Ser(Differentiated Services)的优点,在精确控制流量流经的路径的基础上,可以根据业务的不同服务等级,有差别地进行流量的控制和转发,从而支持在有效利用网络资源的同时,为不同的业务流预留所需的资源。
为了支持MPLS中DS-TE的应用,OSPF支持在TE-LSA中携带子TLV(Local Overbooking Multiplier Type-Length-Value)和带宽约束BC(Bandwidth Constraint)TLV,用于发布和收集链路上各优先级的每个CT(Class Type,一条或一组LSP的相同服务等级的带宽集合)的可预留带宽。
OSPF SRLG
OSPF通过获取在同一个区域的各设备间扩散TE的共享风险链路组(Shared Risk Link Group,SRLG)信息来支持MPLS中SRLG的应用。
6.2.2.3 OSPF安全
OSPF GTSM
GTSM(Generalized TTL Security Mechanism),即通用TTL安全保护机制,通过检查IP报文头中的TTL值是否在一个预先定义好的范围内来对IP层以上业务进行保护,从而达到防止攻击的目的。如果攻击者模拟真实的OSPF协议单播报文,对一台交换机不断地发送报文,交换机收到这些报文后,发现是本机报文,则直接上送控制层面的OSPF协议处理,而不加辨别其“合法性”,这样导致交换机控制层面因为处理这些“合法”报文,系统异常繁忙,CPU占用率高。
在实际应用中,GTSM特性主要用于保护建立在TCP/IP基础上的控制层面(路由协议等)免受CPU利用(CPU-utilization)类型的攻击,如CPU过载(CPU overload)。
使能了GTSM特性和策略的设备会对收到的所有报文进行策略检查。对于没有通过策略的报文丢弃或者上送控制平面,从而达到防止攻击的目的。策略内容包括:
- 发送给本机IP报文的源地址。
- 报文所属的VPN实例。
- IP报文的协议号(OSPF是89,BGP是6)。
- TCP/UDP之上协议的协议源端口号、目的端口号。
- 有效TTL范围。
GTSM的实现手段如下:
- 对于直连的协议邻居:将需要发出的单播协议报文的TTL值设定为255。
- 对于多跳的邻居:可以定义一个合理的TTL范围。
GTSM的应用范围是:
- GTSM对单播报文有效,对组播报文无效。这是因为组播报文本身具有TTL值为255的限制,不需要使用GTSM进行保护。
- GTSM不支持基于Tunnel的邻居。
OSPF报文认证
OSPF支持报文验证功能,只有通过验证的OSPF报文才能接收,否则将不能正常建立邻居。
路由器支持两种验证方式:
- 区域验证方式
- 接口验证方式
当两种验证方式都存在时,优先使用接口验证方式。
6.2.2.4 OSPF GR
随着路由设备普遍采用了控制和转发分离的技术,在网络拓扑保持稳定的情况下,控制层面的重启并不会影响转发层面,转发层面仍然可以很好地完成数据转发任务,从而保证业务不受影响。
GR技术保证了在重启过程中转发层面能够继续指导数据的转发,同时控制层面邻居关系的重建以及路由计算等动作不会影响转发层面的功能,从而避免了路由震荡引发的业务中断,提高了整网的可靠性。
基本概念
GR是Graceful Restart的简称,又被称为平滑重启,是一种用于保证当路由协议重启时数据正常转发并且不影响关键业务的技术。
如果没有特殊说明,以下所说GR均表示RFC3623所规定的GR技术。
GR技术是属于高可靠性(HA,High Availability)技术的一种。HA是一整套综合技术,主要包括冗余容错、链路保证、节点故障修复及流量工程。GR是一种冗余容错技术,目前已经被广泛的使用在主备切换和系统升级方面,以保证关键业务的不间断转发。
和GR相关的概念如下:
Grace-LSA
OSPF通过新增Grace-LSA来支持GR功能。这种LSA用于在开始GR和退出GR时向邻居通告GR的时间、原因以及接口地址等内容。
交换机在GR中的角色
- Restarter:重启交换机。可以通过配置支持完全GR或者部分GR。
- Helper:协助重启交换机。可以通过配置支持有计划GR、无计划GR或者通过策略有选择支持GR。
GR的原因
- Unknown:未知原因导致的GR操作。
- Software restart:通过命令行主动触发的GR操作。
- Software reload/upgrade:软件重启或升级导致的GR操作。
- Switch to redundant control processor:异常主备倒换导致的GR操作。
GR的持续时间
GR持续时间最长不超过1800秒。GR成功或失败都可以提前退出,不必等到超时才退出。
GR的分类
- 完全GR(Totally GR):指当有一个邻居不支持GR功能时,整个交换机退出GR状态。
- 部分GR(Partly GR):指当有一个邻居不支持GR时,仅该邻居所关联的接口退出GR,其它接口正常进行GR过程。
- 有计划GR(Planned GR):指手动通过命令使交换机执行重启或主备倒换。在进行重启或主备倒换前Restarter会先发送Grace-LSA。
- 非计划GR(UnPlanned GR):与Planned GR的区别在于,交换机是由于故障等原因进行重启或主备倒换,并且在主备倒换前不会事先发送Grace-LSA,而是直接开始主备倒换,在备板正常Up后才进入GR过程。以下的步骤同Planned GR。
GR的过程
OSPF GR分为开始、进行中和退出三个过程,如图6-43所示。
图6-43 OSPF GR过程
OSPF GR开始
- 交换机执行主备倒换后,Restarter首先向每个邻居发送一个Grace-LSA,通知邻居GR的开始以及GR的周期、原因等。
说明:
如果是Planned-GR,Restarter会向每个邻居发送Grace-LSA,而如果是Unplanned-GR,Restarter则不发送Grace-LSA。
Restarter进入GR状态前会发送一个Grace-LSA,以维持OSPF邻居关系。
当备板状态为Up后,交换机立即发送一个Grace-LSA,通知邻居自己进入GR,包括GR的周期、原因等,然后会再向每个邻居连续发送五个Grace-LSA。
说明:
连续发送五个Grace-LSA是为了确保邻居收到该Grace-LSA,此规定为各厂商的实现方案,非协议规定。
此时,发送的Grace-LSA是为了告知邻居自己进入GR状态,邻居会在GR期间保持与Restarter的邻居关系,让其它交换机感知不到Restarter的倒换。
OSPF GR进行中
- 在Restarter和Helper之间建立OSPF邻接关系。
- Helper检测会话对端Restarter的状态,如果发现Restarter的状态为Down,Helper则会认为Restarter能在设定的GR时间内恢复业务。在GR时间超时之前,Helper既不结束对话也不删除Restarter的拓扑或路由信息。
- Restarter恢复后,会向每个邻居发送信号,并在收到响应后重新建立邻居关系列表。
- Restarter通过与所有邻居建立会话可获得拓扑或路由信息,根据收到的拓扑或路由信息计算自己的路由表。
管理员或故障都可触发GR Restarter倒换和GR重启。GR Restarter在发生故障倒换时既不删除路由表/转发表中的路由信息也不复位接口板,因此整个系统可以不间断地转发IP报文。
GR退出
如果GR成功,则Restarter在GR超时前与主备倒换前的所有邻居都重新建立好邻居关系,Helper收到Restarter发送的Age为3600秒的Grace-LSA时与Restarter的邻居关系为Full状态。
如果GR失败,则Restarter端的表现为:
- GR超时并且邻居关系尚未完全恢复。
- Helper发送的Router-LSA或Network-LSA导致Restarter端进行双向检查时失败。
- Restarter接口状态变化。
- Restarter收到Helper发送的1-way Hello报文。
- Restarter收到同一网段上另一台交换机产生的Grace-LSA。同一网段同一时间只能有一台交换机做GR。
- Restarter同一个网段的邻居之间存在DR/BDR不一致的情况(拓扑变化)。
Helper端的表现为:
- 在邻居关系超时前没有收到Restarter发送的Grace-LSA。
- Helper接口状态发生变化。
- 收到其它交换机发送的与Helper本地数据库不一致的LSA。(可以通过配置不进行严格LSA检查排除这种情况。)
- 同一网段上同一时间收到两台交换机发送的Grace-LSA。
- 与其它交换机邻居关系变化。
有无GR技术的比较
表6-10 有无GR技术的比较
无GR技术的主备倒换 | 有GR技术的主备倒换 |
---|---|
OSPF邻居重建路由重新计算转发表变化整网感知路由变化,路由短时震荡转发流量丢失,业务中断 | OSPF邻居重建路由重新计算转发表保持不变除主备倒换设备的邻居外的其他交换机感知不到路由变化转发流量零丢失,业务不受影响 |
6.2.2.5 OSPF邻居震荡抑制
OSPF邻居震荡抑制功能是一种震荡抑制方式,通过延迟邻居建立或调整链路开销为最大值的方法达到抑制震荡的目的。
产生原因
如果承载OSPF业务的接口状态在Up和Down之间切换,就会引起邻居状态的频繁震荡。此时,OSPF会快速发送Hello报文重新建立邻居,同步数据库LSDB,触发路由计算,会造成大量报文交互,影响现有邻居的稳定性,对OSPF业务造成较大影响,同时也会影响依赖OSPF的其他业务(如:LDP、BGP)的正常运行。为了解决这个问题,OSPF实现了邻居震荡抑制功能,即在邻居频繁震荡时,启动震荡抑制,实现邻居延迟建立,或实现业务流量延迟经过频繁震荡的链路,达到抑制震荡的目的。
相关概念
flapping_event:震荡事件,接口上最后一次邻居状态由Full切换为非Full,称之为flapping_event。flapping_event作为震荡源输入,用来触发震荡检测机制启动工作。
flapping_count:当前震荡次数。
detect-interval:震荡检测间隔,用于判断是否触发一次有效震荡事件。
threshold:震荡抑制阈值,有效震荡事件触发累计大于等于该值时,进入震荡抑制阶段。
resume-interval:恢复间隔,连续两次有效震荡时间间隔超过该值时,退出震荡抑制阶段。
实现原理
震荡检测
OSPF接口启动一个flapping_count计数器,相邻两次flapping_event产生时间的间隔在detect-interval之内,记为一次有效震荡事件。flapping_count计数加1,当flapping_count计数大于threshold时,系统判定震荡发生,需要进入震荡抑制阶段。进入震荡抑制阶段后,flapping_count清0。在flapping_count大于threshold之前,如果两次flapping_event的间隔大于resume-interval,则flapping_count清0。邻居震荡抑制从最后一次邻居状态变为ExStart或Down开始计时。
用户可以通过命令行配置detect-interval,threshold,resume-interval三个震荡检测的关键参数。
震荡抑制
震荡抑制分为Hold-down和Hold-max-cost两种模式:
- Hold-down模式:针对邻居建立过程中的频繁泛洪和拓扑变化的问题,在一段时间内禁止该邻居重新建立,避免频繁的数据库同步和大量的报文交互。
- Hold-max-cost模式:针对用户业务流量频繁切换的问题,在一段时间内将链路开销值设置为最大值Max-cost(65535),避免用户的业务流量经过频繁震荡的链路。
Hold-down模式和Hold-max-cost模式可以叠加使用,同时生效时,先进入Hold-down模式,待Hold-down模式退出后,再进入Hold-max-cost模式。
缺省情况下,OSPF使能Hold-max-cost模式,用户可以通过命令行修改震荡抑制方案和震荡抑制周期。
说明:
接口进入震荡抑制阶段后,接口下的全部邻居都会进入震荡抑制阶段。
退出震荡抑制
退出震荡抑制有以下几种方式:
- 抑制定时器超时。
- 复位OSPF进程。
- 用户通过命令行强制退出震荡抑制状态。
典型场景
基本场景
如图6-44所示,正常的业务流量路径是Switch A->Switch B->Switch C->Switch E。链路故障时,业务流量路径切换为Switch A->Switch B->Switch D->Switch E。在主备路径切换初期,Switch B和Switch C之间很可能会发生邻居状态频繁震荡,导致Switch A到Switch E的用户流量在两条路径不断切换,并且每次故障引发的切换都会导致用户流量部分丢失,影响网络稳定性。此时,如果Switch B和Switch C之间邻居震荡满足抑制条件时,设备就会启动震荡抑制功能。
- 采用Hold-down模式:在一段时间内禁止Switch B和Switch C建立邻居关系,达到将业务流量切换到Switch A->Switch B->Switch D->Switch E路径的目的。
- 采用Hold-max-cost模式:在一段时间内将Switch B和Switch C之间的链路开销值设置为最大值Max-cost(65535),达到将业务流量切换到Switch A->Switch B->Switch D->Switch E路径的目的。
图6-44 基本场景的邻居震荡抑制
关键路径场景
网络中只有唯一的流量转发路径,转发路径上的任何邻居断开都会导致用户流量中断。如图6-45所示,唯一的业务流量路径是Switch A->Switch B->Switch C->Switch E,如果Switch B和Switch C之间发生邻居震荡,满足抑制条件,进入震荡抑制阶段。但是,Switch B和Switch C之间的链路是组网中的关键链路,一旦断开,整个网络将被分割为互不连通的两个网络。因此,关键路径场景不建议采用Hold-down模式断开邻居关系,推荐采用Hold-max-cost模式抑制震荡,在一段时间内将Switch B和Switch C间的链路开销值设置为最大值Max-cost(65535),进行震荡抑制。待网络稳定后,抑制定时器超时,自动退出抑制状态,迅速恢复业务链路。
说明:
缺省情况下,OSPF使能Hold-max-cost模式。
图6-45 关键路径场景的邻居震荡抑制
广播网场景
如图6-46所示,四台设备分别通过交换机接入到同一个广播网中,相互之间建立广播网邻居。此时,如果Switch C因为链路原因一直处于震荡状态,并且Switch A和Switch B接入网络的时间不一致(例如,Switch A更早一点),或者Switch A和Switch B的震荡检测参数配置不一致,导致的结果是,Switch A先检测到Switch C处于震荡状态,抑制了Switch C,在Switch A发布的Hello报文中就不会携带Switch C的Switch ID,但是,Switch B无法检测到Switch C处于震荡状态,仍然认为Switch C为合法节点。在DR选举时,Switch A识别到的参与DR选举的设备集合包括Switch B和Switch D,Switch B识别到的参与DR选举的设备集合包括Switch A、Switch C和Switch D。两者备选集合不相同,选举结果也会不一致,这样就会导致广播网中的设备对网络理解的差异,造成路由计算错误。因此,在广播网或P2MP、NBMA等一个接口下存在多个邻居的场景中,不能单独抑制某个邻居,需要对接口下的全部邻居都进行抑制,震荡检测也不能以某个邻居为单位进行检测,需要检测接口上最后一个邻居状态为ExStart或Down的震荡事件。也就是说,如果Switch C震荡,广播网中的Switch A、Switch B和Switch D都会被抑制,待网络稳定后,抑制定时器超时,自动退出抑制状态,Switch A、Switch B和Switch D都会恢复到正常业务状态。
图6-46 广播网场景的邻居震荡抑制
多区域组网场景
如图6-47所示,Switch A、Switch B、Switch C、Switch E和Switch F通过Area 1连接,Switch B、Switch D和Switch E通过骨干区域Area 0连接。Switch A到Switch F的正常的业务流量优先选取区域内路由,路径是Switch A->Switch B->Switch C->Switch E->Switch F。当Switch B和Switch C之间发生邻居震荡,满足抑制条件,进入震荡抑制阶段时,缺省情况采用Hold-max-cost模式。但是,根据OSPF路由优选规则,区域内路由和区域间路由相互不会比较链路的开销值,区域内路由优先级大于区域间路由,也就是说,发生邻居震荡后,Switch A到Switch F的业务流量路径仍然是Switch A->Switch B->Switch C->Switch E->Switch F,Hold-max-cost模式在此时无法达到抑制流量路径切换的目的。因此,多区域组网场景的邻居震荡抑制只能采用Hold-down模式,即在一段时间内禁止Switch B和Switch C建立邻居关系,达到将业务流量切换到Switch A->Switch B->Switch D->Switch E->Switch F路径的目的。
说明:
缺省情况下,OSPF使能Hold-max-cost模式,用户可以通过命令行修改为Hold-down模式。
图6-47 多区域组网场景的邻居震荡抑制
IGP-LDP联动和邻居震荡抑制同时部署的场景
如图6-48所示,PE1和P1之间链路发生故障时,LDP快速回切,导致新的LSP还没有完全建立时老的LSP就已经被拆除,为了避免引起业务中断,需要部署IGP-LDP联动。部署IGP-LDP联动特性后,设置新建立的邻居发布的链路开销值为最大值Max-cost(65535),避免IGP路由回切,等新的LSP建立完成后,再修改链路开销值为配置值,触发IGP路由回切,删除老的LSP,LDP业务流量切换到新建立的路径上。
IGP-LDP联动分为Hold-down模式和Hold-max-cost模式两种,邻居震荡抑制也分为Hold-down模式和Hold-max-cost模式两种。同时部署邻居震荡抑制和IGP-LDP联动时,优先生效Hold-down模式,次优生效Hold-max-cost模式,最后生效链路上配置的开销值。优先生效原则不以业务类型为条件,以最终生效的状态(Hold-down、Hold-max-cost、退出)为条件,详细情况请参考表6-11。
表6-11 震荡抑制模式优先生效原则
IGP-LDP联动抑制模式/邻居震荡抑制模式 | IGP-LDP联动抑制Hold-down模式 | IGP-LDP联动抑制Hold-max-cost模式 | 退出IGP-LDP联动抑制 |
---|---|---|---|
邻居震荡抑制Hold-down模式 | Hold-down模式 | Hold-down模式 | Hold-down模式 |
邻居震荡抑制Hold-max-cost模式 | Hold-down模式 | Hold-max-cost模式 | Hold-max-cost模式 |
退出邻居震荡抑制 | Hold-down模式 | Hold-max-cost模式 | 退出IGP-LDP联动和邻居震荡抑制 |
例如,如图6-48所示,PE1和P1之间发生频繁震荡。同时部署邻居震荡抑制和IGP-LDP联动,通过震荡抑制模式优先生效原则选取抑制模式,即在一段时间内禁止PE1和P1建立邻居关系或将PE1和P1之间的链路开销值设置为最大值Max-cost(65535),达到将业务流量切换到PE1->P4->P3->PE2路径的目的。
图6-48 IGP-LDP联动和邻居震荡抑制同时部署的场景
误码倒换和邻居震荡抑制同时部署的场景
误码倒换特性用于保护链路质量,当链路质量检测发现链路质量差,误码率高,就会上报误码事件,误码率高的链路上承载的用户业务会受到较大的影响,可能影响用户正常使用,因此需要将用户流量尽量调整到其他链路上。OSPF业务在收到误码事件后,会调整接口开销值为最大值Max-cost(65535),路由随即重新计算,重新选路,将业务流量切换到备选链路。误码倒换和邻居震荡抑制同时部署时,两种震荡抑制方式同时生效,优先生效Hold-down模式,次优生效Hold-max-cost模式,最后生效链路上配置的开销值。
6.2.2.6 OSPF Smart-discover
定义
通常情况下,路由器会周期性地从运行OSPF协议的接口上发送Hello报文。这个周期被称为Hello Interval,通过一个Hello Timer定时器控制Hello报文的发送。这种按固定周期发送报文的方式减缓了OSPF邻居关系的建立。
通过使能Smart-discover特性,可以在特定场景下加快OSPF邻居的建立。
表6-12 OSPF Smart-discover
接口是否配置Smart-discover | 处理 |
---|---|
接口没有配置Smart-discover | 必须等待Hello Timer到时才能发送Hello报文;两次报文发送间隔为Hello Interval;在这期间邻居一直在等待接收报文。 |
接口上配置Smart-discover | 直接发送Hello报文,不需要等待Hello Timer超时;邻居可以很快收到报文迅速进行状态迁移。 |
原理
在以下场景中,使能了Smart-discover特性的接口不需要等待Hello Timer到时,可以主动向邻居发送Hello报文:
- 当邻居状态首次到达2-way状态。
- 当邻居状态从2-way或更高状态迁移到Init状态。
6.2.2.7 OSPF Database Overflow
定义
OSPF协议要求同一个区域中的路由器保存相同的链路状态数据库LSDB(Link-State Database)。
随着网络上路由数量不断增加,一些路由器由于系统资源有限,不能再承载如此多的路由信息,这种状态就被称为数据库超限(OSPF Database Overflow)。
目的
对于路由信息不断增加导致路由器系统资源耗尽而失效的问题,可以通过配置Stub或NSSA区域来解决,但Stub或NSSA区域的方案不能解决动态路由增长导致的数据库超限问题。为了解决数据库超限引发的问题,通过设置LSDB中External LSA的最大条目数,可以动态限制链路数据库的规模。
原理
通过设置路由器上非缺省外部路由数量的上限,来避免数据库超限。
OSPF网络中所有路由器都必须配置相同的上限值。这样,只要路由器上外部路由的数量达到该上限,路由器就进入Overflow状态,并同时启动超限状态定时器(默认超时时间为5秒),路由器在定时器超过5秒后自动退出超限状态。
表6-13 OSPF Database Overflow
Overflow状态阶段 | OSPF处理流程 |
---|---|
进入Overflow状态时 | 路由器删除所有自己产生的非缺省外部路由。 |
处于Overflow状态中 | 不产生非缺省外部路由。丢弃新收到的非缺省外部路由,不回复确认报文。当超限状态定时器超时,检查外部路由数量是否仍然超过上限。N=>退出超限状态。Y=>重启定时器。 |
退出Overflow状态时 | 删除超限状态定时器。产生非缺省外部路由。接收新收到的非缺省外部路由,回复确认报文。准备下一次进入超限状态。 |
6.2.2.8 OSPF Mesh-Group
定义
OSPF Mesh-Group是将并行链路场景中的链路分组,从而洪泛时从群组中选取代表链路进行洪泛,避免重复洪泛而造成不必要的系统压力。
缺省情况下,不使能Mesh-Group功能。
目的
当OSPF进程收到一个LSA或者新产生一个LSA时,会进行洪泛操作。并行链路场景下,OSPF会对每一条链路洪泛LSA,发送Update报文。
这样,如果有2000条并行链路,则每个LSA洪泛都要发送2000次,然而只有一次洪泛是有效的,其他1999次洪泛为重复洪泛。
为了避免这种重复洪泛而造成的系统压力,使能Mesh Group特性,可以将并行链路进行归组,选取代表链路进行洪泛。
原理
如图6-49所示,RouterA和RouterB建立OSPF邻居关系,通过3条链路相连。当RouterA从接口4接收到新的LSA后,会将该LSA通过1、2、3接口洪泛到RouterB。
这种洪泛方式会造成并行链路的压力,因为对于存在多条并行链路的邻居来说,只需要选取一条主链路进行洪泛LSA即可。
图6-49 没有使能OSPF Mesh-Group特性时LSA的洪泛情况
使能了OSPF Mesh-Group特性的设备和邻居存在多条并行链路时,当其收到LSA后,会选取一条主链路进行泛洪,如图6-50所示。
当主链路上接口状态低于Exchange时,OSPF会在并行链路中重新选取主链路,并继续洪泛LSA,这是因为,OSPF规定,只有当邻居状态达到Exchange时,才能洪泛LSA。并且,当RouterB从链路1收到来自RouterA洪泛的LSA后,不会再将该LSA从链路2、3反向洪泛给RouterA。
图6-50 使能OSPF Mesh-Group特性时LSA的洪泛情况
Mesh-Group以邻居的Router ID唯一标识一个群组,接口状态大于Exchange且与同一个邻居相连的接口属于同一个Mesh-Group。
如图6-51所示,RouterA在区域0中有一个群组,分别是接口1和接口2所在的链路。由于接口3所在的链路为广播链路,有超过一个邻居,所以不能加入到群组中。
图6-51 接口不能加入到群组中的情况
说明:
另外,路由器使能Mesh-Group后,若其直连的邻居路由器Router ID配置重复,会引起全网LSDB不同步、路由计算不正确的情况,需要重新配置邻居路由器的Router ID(注:配置重复Router ID属于错误配置)。
6.2.3 OSPF与其它协议联动
OSPF与BFD联动
双向转发检测BFD(Bidirectional Forwarding Detection)是一种用于检测转发引擎之间通信故障的检测机制。
BFD对两个系统间的、同一路径上的同一种数据协议的连通性进行检测,这条路径可以是物理链路或逻辑链路,包括隧道。
OSPF与BFD联动就是将BFD和OSPF协议关联起来,将BFD对链路故障的快速感应通知OSPF协议,从而加快OSPF协议对于网络拓扑变化的响应。
网络上的链路故障或拓扑变化都会导致设备重新进行路由计算,所以缩短路由协议的收敛时间对于提高网络的性能是非常重要的。
由于链路故障是无法完全避免的,因此,加快故障感知速度并将故障快速通告给路由协议是一种可行的方案。BFD和OSPF相关联,一旦与邻居之间的链路出现故障,BFD的快速性能够加快OSPF的收敛速度。
表6-14 有无OSPF与BFD联动功能对比
有无BFD | 链路故障检测机制 | 收敛速度 |
---|---|---|
无BFD | OSPF Dead定时器超时(默认配置40s) | 秒级 |
有BFD | BFD会话状态为Down | 毫秒级 |
OSPF与BFD联动的原理如图6-52所示。
图6-52 OSPF与BFD联动
- SwitchA、SwitchB、SwitchC之间建立OSPF邻居关系。
- 邻居状态到达Full状态时通知BFD建立BFD会话。
- SwitchA到SwitchB的路由出接口为GE0/0/2,当这两台设备间的链路出现故障后,BFD首先感知到并通知SwitchA。
- SwitchA处理邻居Down事件,重新进行路由计算,新的路由出接口为GE0/0/1,经过SwitchC到达SwitchB。
OSPF与BGP联动
当有新的设备加入到网络中,或者设备重启时,可能会出现在BGP收敛期间内网络流量丢失的现象。这是由于IGP收敛速度比BGP快而造成的。
通过使能OSPF与BGP联动特性可以解决这个问题。
在存在备份链路的情况下,BGP在链路回切时,由于路由收敛速度滞后于OSPF路由收敛速度,从而造成流量丢失。
如图6-53所示,四台设备SwitchA、SwitchB、SwitchC、SwitchD之间运行OSPF协议,并建立IBGP连接。SwitchC为SwitchB的备份设备。当网络环境稳定时,BGP与OSPF在设备上是完全收敛的。
正常情况下,从SwitchA到10.3.1.0/30的流量会途经SwitchB。当SwitchB发生故障后,流量切换到SwitchC。SwitchB故障恢复以后,流量回切到SwitchB,此时会有流量丢失。
这是因为,在流量回切到SwitchB的过程中,IGP收敛速度比BGP快,因此OSPF先收敛,BGP还没有完成收敛,导致SwitchB不知如何到达10.3.1.0/30。
这样,当从SwitchA去往10.3.1.0/30的流量被发送给SwitchB时,由于没有必要的路由选择信息,这些流量就会被丢弃。
图6-53 OSPF与BGP联动
使能了OSPF与BGP联动特性的设备会在设定的联动时间内保持为Stub路由器,也就是说,该设备发布的LSA中的链路度量值为最大值(65535),从而告知其它OSPF设备不要使用这个路由器来转发数据。
图6-53中,在RoutetB上使能BGP联动,这样,在BGP收敛完成前,SwitchA不把流量转发到SwitchB上,而是继续使用备份设备SwitchC转发流量,直到SwitchB上的BGP路由完成收敛。
OSPF-LDP联动
在存在主备链路的网络中,当主链路故障恢复后,流量会从备份链路切换到主链路。
由于IGP的收敛在LDP会话建立之前完成,导致旧的LSP已经删除,新的LSP还没有建立,因此LSP流量中断。
如图6-54所示,PE1-P1-P2-P3-PE2为主链路,PE1-P1-P4-P3-PE2为备份链路。
主链路发生故障,流量从主链路切换到备份链路。主链路故障恢复,流量从备份链路回切到主链路,此时流量会有较长时间的中断。
图6-54 OSPF-LDP联动
通过在P1和P2上配置标签分发协议LDP(Label Distribution Protocol)和IGP同步功能,能够缩短流量从备份链路切换到主链路时的中断时间。
表6-15 OSPF-LDP联动
是否使能OSPF-LDP联动特性 | 流量中断时间 |
---|---|
不使能OSPF-LDP联动特性 | 秒级 |
使能OSPF-LDP联动特性 | 毫秒级 |
LDP和IGP同步的基本原理是:通过抑制IGP建立邻居关系来推迟路由的回切,直至LDP完成收敛。也就是在主链路的LSP建立之前,先保留备份链路,让流量继续从备份链路转发,直至主链路的LSP建立成功,再删除备份链路。
LDP和IGP同步包括三个定时器:
- Hold-down
- Hold-max-cost
- Delay
当主链路故障恢复后,路由器进行以下操作:
- 启动Hold-down定时器,IGP接口先不建立IGP邻居,等待LDP会话的建立。
- Hold-down定时器超时后,启动Hold-max-cost定时器。IGP在本地路由器的链路状态通告中,向主链路通告接口链路的最大metric值。
- 故障链路的LDP会话重新建立以后,启动Delay定时器等待LSP的建立。
- Delay定时器超时以后,无论IGP的状态如何,LDP都通知IGP同步流程结束。
6.3 应用
介绍OSPF的应用。
6.3.1 OSPF GR
如图6-55所示,RouterA、RouterB、RouterC和RouterD运行OSPF协议实现网络互通,RouterA和RouterB使能了GR功能。当RouterA重启时,RouterB协助RouterA完成平滑重启,但并不通告给其它邻居,网络流量并不中断。
图6-55 OSPF GR
6.3.2 OSPF GTSM
如图6-56所示,各路由器间运行OSPF协议,在RouterC上启用GTSM保护功能。各路由器发往RouterC的报文有效TTL范围如下:
- RouterA和RouterE是RouterC的相邻路由器,报文有效TTL范围是255-hops+1到255。
- RouterB、RouterD、RouterF发往RouterC的报文有效TTL范围分别是254到255、253到255、252到255。
图6-56 OSPF GTSM
6.4 OSPF部署指南
6.4.1 OSPF网络规划设计原则
保持OSPF网络的稳定性:Router ID的规划
在OSPF网络设计和实施中需要考虑的第一点就是Router ID的选择。
OSPF作为一种链路状态路由协议其计算路由的依据是LSA。每台运行OSPF的路由器都会发送并泛洪LSA报文到整个网络,这样网络中每台运行OSPF的路由器都会收集到其他设备发送过来的LSA并且放入LSDB,然后根据SPF算法计算出一棵以自己为根的到其他网络的无环树。由此可以看出保持每台路由器的LSDB的稳定性是保证OSPF网络稳定的前提。在LSDB中,不同OSPF路由器发送来的LSA是通过Router ID进行区分的。如果一台路由器的Router ID发生变化,那么此路由器会重新进行LSA泛洪,从而导致全网OSPF路由器都会更新其LSDB并且重新进行SPF计算,使得OSPF网络发生振荡。因此选择一个稳定的Router ID是OSPF网络设计的首要工作。
路由器的Router ID可以手工配置,如果没有通过命令指定Router ID,系统会从当前接口的IP地址中自动选取一个作为路由器的Router ID。其选择规则如下:
- 优先从Loopback地址中选择最大的IP地址作为路由器的Router ID。
- 如果没有配置Loopback接口,则在接口地址中选取最大的IP地址作为路由器的Router ID。
- 只有当被选举为Router ID的接口IP地址被删除或修改后,才会进行Router ID的重新选举。
在实际工程中,推荐手工指定OSPF路由设备的Router ID。首先规划出一个私有网段用于OSPF的Router ID选择,例如:192.168.1.0/24。在启用OSPF进程前在每个OSPF路由器上建立一个Loopback接口,使用一个32位掩码的私有地址作为其IP地址,这个32位的私有地址即作为该路由设备的Router ID。如果没有特殊要求,这个Loopback接口地址可以不发布在OSPF网络中。
层次化的网络设计:OSPF区域的规划
OSPF是一个需要层次化设计的网络协议。在OSPF网络中使用了区域的概念,从层次化的角度来看区域被分为两种:骨干区域和非骨干区域。骨干区域的编号为0,非骨干区域的编号从1到4294967295。处于骨干区域和非骨干区域边界的OSPF路由器被称为ABR。
实际上OSPF区域的规划也就是把网络中的OSPF路由器归类的过程。在设计OSPF区域时,需要考虑的第一点是网络的规模。对于小型的网络,例如只有几台路由设备作为核心层和汇聚层设备的网络可以考虑仅规划一个骨干区域。但是在大型的OSPF网络中,网络的层次化设计是必须要考虑的。
对于大型的OSPF网络,在规划上会遵循核心、汇聚、接入的分层原则,且OSPF骨干路由器的选择一般包含出口路由器和核心交换机。这些设备通常都是高端路由设备,例如华为NE系列高端路由器、华为S系列框式交换机。非骨干区域的设计则是根据地理位置和设备性能而定。如果在单个非骨干区域中使用了较多的低端三层交换产品,由于其产品定位和性能的限制,应该尽量减少其路由条目数量,把区域规划得更小一些或者使用特殊区域。
实际工程中对于非骨干区域的Area编号的规划也是有讲究的,尽量不要使用类似Area 1、2、3这种连续的编号,推荐使用Area 10、20、30这种递增方式,以便在后期网络扩容的时候用户增加区域编号。
非骨干区域的路由表项优化:特殊区域的使用
特殊区域的使用可以达到优化非骨干区域的路由表项的目的。实际上对于非骨干区域,一般可能存在如下两种情况需要减少路由表项的规模:
- 非骨干区域仅有一个ABR做出口,任何访问区域外的流量都要经过这个出口设备。此时该非骨干区域内的路由器不需要了解外部网络的细节,仅需要有个出口能够出去即可。
- 非骨干区域的设备使用了一些低端的三层交换机,设备性能使得其不可能承受过多的路由条目。为了精简设备上的路由条目数量,可以采用配置特殊区域的方法进行路由表项的优化。
交换机支持OSPF协议中定义四种特殊区域类型:Stub区域,Totally Stub区域,NSSA区域,Totally NSSA区域。
在绝大部分的情况下,典型OSPF网络的非骨干区域中都只需要知道缺省路由出口在哪里,因此建议把非骨干区域统一规划成Totally NSSA区域,这样极大地减少了非骨干区域内部路由器的路由条目数量和区域内部OSPF交互的报文数量。对于少数存在特殊需求的网络,可根据实际情况灵活使用几种区域类型。
骨干区域的路由表项优化:非骨干区域IP子网规划和路由汇聚
由于OSPF骨干区域需要负责区域之间的路由交互,所以骨干区域路由器的路由表规模会比较大。通过对非骨干区域使用的IP网段作出合理规划、聚合区域边界的路由,可以优化OSPF骨干区域的路由器的路由表项。
建议新建OSPF网络时设计利于路由汇总的IP网络,对于扩建的网络尽量进行IP地址的重新规划,通过路由汇聚能精简骨干区域路由器的路由表,减少骨干区域内OSPF交互的报文数量。同时,路由汇总以后,单点的链路故障或者网络震荡不至于影响整个网络的路由更新,因此路由汇聚还可以提高网络的稳定性。
上行流量的引导:OSPF缺省路由的引入和选路优化
对于一个大型OSPF网络来说,大部分的业务流量并不在网络内部,而是通往Internet出口,因此缺省路由的设计是OSPF网络设计要点。
在实际工程中,OSPF网络的出口有可能不止一个,如何有效地将出口流量分担到多条链路上就成为了OSPF设计中的一个难点。虽然有很多种手段能够达到分担流量的目的,但是最简单、最安全的方法是使用OSPF内在的选路机制。OSPF路由器对一条路由的优劣衡量是通过计算其cost值来实现的,cost值小的路由会被路由器优先放入路由表。因此,通过调整OSPF接口的cost值可以使得路由器选择不同的链路出口来达到负载分担的目的。
OSPFv2出现的时间较早,没有考虑到带宽的飞速发展,因此缺省情况下,OSPF计算cost值使用的参考带宽为100Mbit/s。也就是说,缺省情况下,OSPF认为100Mbit/s带宽以上的端口其cost是1。在网络骨干带宽迈向10Tbit/s的今天已经显得非常不合时宜。交换机提供了更改参考带宽的功能,使用bandwidth-reference命令选择一个合适的参考带宽成为OSPF网络建设中必要的一项工作。对于OSPF网络的选路优化,推荐首先选择合适的参考带宽,然后通过调整OSPF接口cost值来实现。
路由汇总场景下的防环设计:黑洞路由的使用
在很多场景下路由聚合确实能够做到精简路由,提高网络稳定性的作用,但路由聚合容易产生路由环路,而黑洞路由可以用来弥补这种缺陷。在路由器上,命中黑洞路由的报文会被丢弃,而且路由器不向报文发送者反馈任何差错信息。所以OSPF网络设计中,路由聚合和黑洞路由经常配合使用。
OSPF网络基本安全:OSPF静默接口的使用
对于一个大型OSPF网络来说,安全性是必须要考虑到的问题。在OSPF网络设计中,通常会禁止将OSPF报文发往用户端,这是为了防止终端用户窥探OSPF报文信息。如果用户能截获OSPF报文,就可能知道如何加入此OSPF网络,此时OSPF网络容易被攻击或破坏。例如,接入一台路由器到OSPF网络中并且使该路由器的OSPF进程处于不稳定的状态中,就会导致OSPF网络发生振荡甚至瘫痪。
在实际工程中,为了保证OSPF网络的安全与稳定,推荐在OSPF网络的边缘设备上使用静默接口的方式来阻止通往用户侧的OSPF报文。这样,该接口就被禁止接收和发送OSPF报文,该接口的直连路由仍可以发布出去,但接口的Hello报文将被阻塞,接口上无法建立邻居关系。
6.4.2 OSPF网络设计部署案例
图6-57是一个典型园区网的拓扑图,可以看到这是一个大型园区网络,核心、汇聚、接入三层分明,有多出口到Internet,网络内部存在双链路冗余,核心、汇聚交换机部署集群保护等。这种大型园区网络,园区出口设备一般选用华为NE系列高端路由器,核心交换机和汇聚层交换机选用华为园区框式交换机集群。用户网关部署在汇聚层上,汇聚层作为二层和三层的分界点。
图6-57 典型园区网络拓扑图
由于上述典型园区网络中核心交换机和汇聚交换机都属于集群系统,因此它们在逻辑上相当于一台设备,多链路捆绑在逻辑上也属于一条链路。为了简化问题的描述,这里把上述网络拓扑经过抽象形成图6-58所示的逻辑拓扑图,园区网中可能存在很多栋楼,这里以3栋为例进行描述。
图6-58 典型园区网络的逻辑拓扑图
保持OSPF网络的稳定性:Router ID的规划
部署OSPF的首要工作就是设计和部署Router ID。一般情况下,使用一个合适的私有IP地址段即可。本例选用的Router ID地址段为10.0.0.0/24。
选取完Router ID地址段后,接下来需要做的工作是在每个OSPF设备上创建相应的Loopback接口并配置接口IP为10.0.0.X/32。
Router ID的配置以核心层交换机框式交换机集群为例:
1 | [HUAWEI] interface LoopBack 0 |
说明:
如无特殊要求,建议不要在OSPF进程中发布Loopback0的接口地址,以减少无用的OSPF信息交互报文。
规划Router ID后的网络拓扑图如图6-59所示。
图6-59 规划Router ID后的网络拓扑图
层次化的网络设计:OSPF区域的规划
在分配完Router ID后,需要对整个OSPF网络进行区域划分。对于层次分明的网络,划分OSPF区域时,可以直接把出口路由器和核心交换机包含到Area 0,再按照地理位置来区分非骨干区域。规划非骨干区域Area编号时需要注意编号之间的差值,方便后续网络扩容时添加新的区域。本例中按照地理位置,把出口路由器和核心交换机划分到骨干区域,把每栋楼的汇聚交换机划分为一个非骨干区域。图6-60是划分区域后的OSPF网络拓扑图。
图6-60 规划区域后的OSPF网络拓扑图
区域划分的配置以核心层交换机集群的Area 0和Area 10的配置为例。
1 | [HUAWEI] ospf 1 //进入OSPF进程视图 |
从配置命令中可以看到OSPF区域是以OSPF设备为边界的,例如此拓扑中核心层交换机集群上行接口属于Area 0,下行接口属于Area 10,也就是说此交换机集群跨越了两个区域,是ABR。
说明:
在单个区域包含过多的低端路由器或者三层交换机是一种不好的设计,如果出现这种情况应该考虑缩小区域范围。
非骨干区域的路由表项优化:特殊区域的使用
划分完OSPF网络区域后可以看到非骨干区域的路由表项的规模相对较大。如果非骨干区域的设备性能较低且用户不希望路由表项规模过大,此时可以考虑运用特殊区域。本例中非骨干区域一律采用Totally NSSA区域,具体拓扑如图6-61所示。
图6-61 非骨干区域划分特殊区域后的网络拓扑图
Totally NSSA区域的配置以Area 10中的核心层交换机集群和汇聚层交换机集群为例。
核心层交换机集群的配置如下:
1 | [HUAWEI] ospf 1 //进入OSPF进程视图 |
汇聚层交换机集群的配置如下:
1 | [HUAWEI] ospf 1 //进入OSPF进程视图 |
配置Totally NSSA区域前,汇聚层交换机集群上的非骨干区域路由表项如下:
1 | <HUAWEI> display ip routing-table |
配置Totally NSSA区域后,汇聚层交换机集群上的非骨干区域路由表项如下:
1 | <HUAWEI> display ip routing-table |
可以明显看出,配置Totally NSSA区域以后,Area 10的路由表的规模明显减小,说明在非骨区域通过配置Totally NSSA区域可以达到降低路由表项规模的作用。
骨干区域的路由表项优化:非骨干区域IP子网规划和路由汇聚
在非骨区域通过配置Totally NSSA区域后,非骨干区域内部路由器的路由表得到极大的精简并且减少了区域内部OSPF路由器之间的信息交互量。在骨干区域也需要作出适当的操作来达到同样的目的,这就要对非骨干区域使用的IP子网作出合理规划并在ABR进行汇总。
图6-62显示了Area 10作出合理的IP规划后往Area 0通告的路由汇总表项。
图6-62 通过路由汇总实现骨干区域的路由表项优化
区域路由汇总会抑制明细路由条目的通告,这样Area 10的ABR就只会向Area 0内注入一条汇总路由10.10.0.0/16,这样可以精简骨干路由器路由表项,减少Area 0的OSPF报文交互量和保证其路由表的稳定。建议在设计OSPF网络时合理规划IP地址,以方便进行路由汇总。
路由汇总的配置以Area 10中的ABR(核心层交换机集群)为例,配置如下:
1 | [HUAWEI] ospf 1 //进入OSPF进程视图 |
说明:
abr-summary命令只能在ABR上配置,区域内部路由器上不要使用此条命令,否则会造成路由表项错误。
路由汇总前,NE40E-1上的路由表项如下:
1 | <NE40E-1> display ip routing-table |
路由汇总后,NE40E-1上的路由表项如下:
1 | <NE40E-1> display ip routing-table |
可以看出,路由汇总之前骨干区域内有用户网段的明细路由。在ABR上配置路由汇总后,骨干区域的NE40E-1上只有一条16位掩码的汇总的用户网段路由。这样,在有很多用户网段的情况下,通过汇可以在很大程度上精简骨干区域的路由,减少骨干区域和非骨干区域的LSA交互数量,提高网络的稳定性。
上行流量的引导:OSPF缺省路由的引入和选路优化
对于一个园区网络,很大一部分流量是流向Internet的,因此对于这种多出口的网络拓扑,引入缺省路由和多出口流量分担是必须要考虑的问题。
引入缺省路由的方式有多种,建议的做法是在ABR上通过OSPF“非强制”下发缺省路由来实现。OSPF“非强制”下发缺省路由,是指只有ABR自身的IP路由表中存在缺省路由的时候才能发布缺省路由,否则就不能发布。这样可以防止在特殊场景下产生环路或者次优路由。
在本例中两台ABR发布缺省路由后,核心层交换机集群会收到两条缺省路由,下一跳分别指向两个出口路由器。此时核心层交换机集群可以选择其中一条链路作为上行,也可以选择两条上行链路负载分担。具体如何分配流量,可以根据实际的网络情况灵活配置。核心层交换机集群的缺省路由和流量的走向如图6-63所示。
图6-63 通过缺省路由引导核心层交换机集群的上行流量
NE40E-1上发布缺省路由的配置如下,NE40E-2上的配置类似,不再赘述。
1 | [NE40E-1] ip route-static 0.0.0.0 0.0.0.0 202.10.10.1 //在NE40E-1上手工配置一条下一跳指向电信运营商的公网地址的缺省路由 |
完成上述配置后,核心层交换机集群会学习到两条等价的缺省路由,如下所示。此时核心层交换机集群的上行流量将会采取负载分担的方式进行转发。
1 | <HUAWEI> display ip routing-table |
如果用户想让核心层交换机集群上行的两条链路采取主备份的形式,正常情况下上行流量发送到NE40E-1,当NE40E-1发生故障时流量自动切换到NE40E-2,最简单直接的方法就是使用OSPF自身的选路机制,通过修改cost值来影响选路。
为了实现路由的主备份,可以修改核心层交换机集群到达NE40-2这条链路的cost,使得核心层交换机集群到达NE40-2这条链路的cost值大于核心层交换机集群到达NE40-1这条链路。
核心层交换机集群的配置:
1 | [HUAWEI] interface vlanif 50 //进入OSPF接口视图 |
NE40E-2的配置:
1 | [NE40E-2] interface gigabitethernet 0/0/1 //进入OSPF接口视图 |
说明:
如果需要调整cost值来影响OSPF的选路,则需要在链路两侧的设备上都调整cost值,否则会形成不对称路由,引起网络故障。
缺省情况下百兆带宽以上的链路OSPF的cost为1,将核心层交换机集群到NE40E-2之间的链路的OSPF cost值修改为10以后,核心层交换机集群将优选到NE40E-1的链路作为上行流量的出口。此时核心层交换机集群的IP路由表中将会仅存在一条指向NE40E-1的缺省路由,如下所示。
1 | <HUAWEI> display ip routing-table |
路由汇总场景下的防环设计:黑洞路由的使用
经过上述规划与部署,该网络已经具备基本的OSPF功能,路由表项也得到了优化。但是,该网络当前存在产生环路的风险,原因是路由汇总通常容易产生环路。
对于园区网来说,来自内部的网络攻击是很常见的。假设1号楼内的某台主机受到病毒攻击,这种攻击会导致主机遍历并访问10.0.0.0网段的IP地址。此时就有很大的风险产生环路。
假设主机访问10.10.50.1这个地址(1号楼实际上不存在这个地址)。环路产生的过程如下:
- 主机发送数据包时,数据包会不发送至主机的网关,即1号楼的汇聚层交换机集群1。
- 汇聚层交换机集群1上不存在这个目的地址的明细路由,所以会匹配默认路由发送至核心层交换机集群。
- 由于10.10.50.1这个地址在整个园区网中根本不存在,所以数据包到达核心层交换机集群后只能匹配缺省路由,发送至NE40E-1。
- NE40E-1上学习到的路由是核心层交换机集群通过路由汇总发布出去的,所以会匹配到10.10.0.0/16这条路由,所以数据包又重新发回核心层交换机集群。
这样,核心层交换机集群和NE40E-1之间就形成了路由环路,如图6-64所示。一旦形成路由环路,将会严重影响网络的运行,甚至导致整网的瘫痪。所以做路由汇总的场景下,必须考虑如何防止路由环路。
图6-64 路由环路
形成路由环路的主要原因是在核心层交换机集群上把目的地址为一个园区网内不存在的地址的数据包匹配默认路由发送给和骨干区域,同时骨干区域又通过汇总的回程路由回送回来。
解决这个路由环路的方法就是在核心层交换机集群上阻断目的地址为一个园区网内不存在的地址的数据包,推荐使用的方法就是配置黑洞路由。配置如下:
1 | [HUAWEI] ip route-static 10.10.0.0 255.255.0.0 NULL0 |
配置黑洞路由后,回程到10.10.0.0这个网段的数据包都会由明细路由引导回到用户网段。如果找不到这个明细路由,则证明园区网内不存在这个主机地址。此时数据包就会匹配这条黑洞路由而被丢弃,从而防止产生路由环路。其他区域中也需要在配置路由汇总的同时配置黑洞路由用来防止路由环路的产生。
OSPF网络基本安全:OSPF静默接口的使用
完成上述部署后,整个OSPF网络已经能够正常的运行。但是这个网络存在一个较大的安全漏洞,即用户侧能够接收到OSPF的Hello报文,使用网络嗅探工具可以很轻易地获得基本的网络信息,并作出下一步的攻击行为。
为了实现OSPF网络的基本安全,推荐使用静默接口的方式来阻止发往用户的OSPF报文,如图6-65所示。
图6-65 使用静默接口阻止发往用户的OSPF报文
以Area 10中的汇聚层交换机集群1为例,静默接口的配置如下:
1 | [HUAWEI] ospf 1 |
说明:
silent-interface命令会禁止接口接收和发送OSPF报文,一般只用于用户侧接口上。应用于OSPF路由器之间的链路会导致OSPF邻居无法建立。
6.5 配置任务概览
完成配置OSPF的基本功能后,即可以实现通过OSPF协议构建三层网络。如果还需要OSPF的其他功能,还需要根据相应章节进行配置。
OSPF的配置任务如表6-16所示。
表6-16 OSPF配置任务概览
场景 | 描述 | 对应任务 |
---|---|---|
配置OSPF的基本功能 | 配置OSPF的基本功能是能够使用OSPF特性的前提。 | 6.8 配置OSPF的基本功能6.9 配置OSPF邻居或邻接的会话参数6.10 配置OSPF在不同网络类型中的属性 |
配置OSPF区域 | STUB区域是一些特定的区域,STUB区域的ABR不传播它们接收到的自治系统外部路由,在这些区域中设备的路由表规模以及路由信息传递的数量都会大大减少。OSPF NSSA(Not-So-Stubby Area)区域是OSPF特殊的区域类型。NSSA区域与STUB区域有许多相似的地方,两者都不传播来自OSPF网络其它区域的外部路由。差别在于STUB区域不能引入外部路由,NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中。 | 6.11 配置OSPF的Stub区域6.12 配置OSPF的NSSA区域 |
调整OSPF的选路 | 为了在现网中更灵活的应用OSPF,满足用户的各种需求,可以通过配置不同的参数,实现对OSPF路由的控制。 | 6.13 调整OSPF的选路 |
控制OSPF的路由信息 | 在实际应用中,可以通过配置不同的参数,实现对OSPF路由信息的发布和接收进行更为精确的控制,以满足网络需要。 | 6.14 控制OSPF的路由信息 |
配置OSPF网络的快速收敛 | 当需要OSPF快速感知网络中的变化时,可以配置加快OSPF网络的收敛速度。当需要减少防止路由震荡对网络的影响、减轻设备负担时,可以配置减慢OSPF网络的收敛速度。 | 6.17 配置OSPF网络的快速收敛 |
提高OSPF网络可靠性 | 配置指定进程或指定接口的BDF for OSPF特性,可以快速检测链路的状态,故障检测时间可以达到毫秒级,提高链路状态变化时OSPF的收敛速度。配置OSPF GR可以避免流量中断和主备板切换带来的路由震荡。 | 6.15 配置OSPF与BFD联动6.18 配置OSPF GR |
提高OSPF网络的稳定性 | 在实际应用中,可以通过提高OSPF网络的稳定性来使得OSPF网络路由振荡少,并且让设备常时间工作在正常的环境下。 | 6.19 提高OSPF网络的稳定性 |
提高OSPF网络的安全性 | 如果将OSPF部署在安全性较高的网络中,可以通过配置OSPF认证特性和GTSM机制来提高OSPF网络的安全性。 | 6.20 提高OSPF网络的安全性 |
6.6 配置注意事项
介绍OSPF的配置注意事项。
涉及网元
需要其他网元支持OSPF协议。
License支持
本特性是交换机的基本特性,无需获得License许可即可应用此功能。
版本支持
表6-17 产品形态和软件版本支持情况
系列 | 产品 | 支持版本 |
---|---|---|
S1700 | S1720GFR | 不支持 |
S1720GW-E、S1720GWR-E | V200R010C00、V200R011C00、V200R011C10 | |
S1720X-E | V200R011C00、V200R011C10 | |
S2700 | S2700SI | 不支持 |
S2700EI | 不支持 | |
S2710SI | 不支持 | |
S2720EI | V200R011C10 | |
S2750EI | 不支持 | |
S3700 | S3700SI | 不支持 |
S3700EI | V100R005C01、V100R006(C00&C01&C03&C05) | |
S3700HI | V100R006C01、V200R001C00 | |
S5700 | S5700LI/S5700S-LI | 不支持 |
S5710-C-LI | 不支持 | |
S5710-X-LI | 不支持 | |
S5700SI | 不支持 | |
S5700EI | V100R005C01、V100R006(C00&C01)、V200R001(C00&C01)、V200R002C00、V200R003C00、V200R005(C00&C01&C02&C03) | |
S5710EI | V200R001C00、V200R002C00、V200R003C00、V200R005(C00&C02) | |
S5720EI | V200R007C00、V200R008C00、V200R009C00、V200R010C00、V200R011C00、V200R011C10 | |
S5720LI/S5720S-LI | V200R010C00、V200R011C00、V200R011C10 | |
S5720SI/S5720S-SI | V200R008C00、V200R009C00、V200R010C00、V200R011C00、V200R011C10 | |
S5730SI | V200R011C10 | |
S5730S-EI | V200R011C10 | |
S5700HI | V100R006C01、V200R001(C00&C01)、V200R002C00、V200R003C00、V200R005(C00SPC500&C01&C02) | |
S5710HI | V200R003C00、V200R005(C00&C02&C03) | |
S5720HI | V200R006C00、V200R007(C00&C10)、V200R008C00、V200R009C00、V200R010C00、V200R011C00、V200R011C10 | |
S6700 | S6700EI | V100R006C00、V200R001(C00&C01)、V200R002C00、V200R003C00、V200R005(C00&C01&C02) |
S6720EI | V200R008C00、V200R009C00、V200R010C00、V200R011C00、V200R011C10 | |
S6720S-EI | V200R009C00、V200R010C00、V200R011C00、V200R011C10 | |
S6720SI、S6720S-SI | V200R011C00、V200R011C10 | |
S6720LI、S6720S-LI | V200R011C00、V200R011C10 |
说明:
如需了解交换机软件配套详细信息,请参见华为交换机版本配套速查。
特性依赖和限制
无
6.7 缺省配置
介绍OSPF的缺省配置,实际应用的配置可以基于缺省配置进行修改。
OSPF的缺省配置如表6-18所示。
表6-18 OSPF缺省配置
参数 | 缺省值 |
---|---|
OSPF特性 | 不使能 |
Hello报文发送间隔 | P2P、Broadcast类型接口为10秒;P2MP、NBMA类型接口为30秒 |
邻居失效时间 | P2P、Broadcast类型接口为40秒;P2MP、NBMA类型接口为120秒 |
Stub router保持时间 | 500秒 |
计算接口开销的带宽参考值 | 100Mbit/s |
6.8 配置OSPF的基本功能
配置完OSPF的基本功能,就可以组建起最基本的OSPF网络。
应用环境
在同一区域内配置多台交换机时,大多数的配置数据(如定时器、过滤、聚合等)都应该以区域为单位进行统一规划。错误的配置可能会导致相邻交换机之间无法相互传递信息,甚至导致路由信息的阻塞或者自环。
在接口视图下配置的OSPF命令不受OSPF是否使能的限制。在关闭OSPF后,原来在接口下配置的相关命令仍然存在。
前置任务
在配置OSPF的基本功能之前,需完成以下任务:
- 配置接口的网络层地址,使各相邻节点网络层可达。
6.8.1 创建OSPF进程
背景信息
一台交换机如果要运行OSPF协议,必须存在Router ID。交换机的Router ID是一个32比特无符号整数,是一台交换机在自治系统中的唯一标识。为保证OSPF运行的稳定性,在进行网络规划时应该确定Router ID的划分并手工配置。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] *,启动OSPF进程,进入OSPF视图。
process-id为进程号,缺省值为1。
交换机支持OSPF多进程,可以根据业务类型划分不同的进程。进程号是本地概念,不影响与其它交换机之间的报文交换。因此,不同的交换机之间,即使进程号不同也可以进行报文交换。
router-id router-id为交换机的ID号。
缺省情况下,交换机系统会从当前接口的IP地址中自动选取一个最大值作为Router ID。手动配置Router ID时,必须保证自治系统中任意两台Router ID都不相同。通常的做法是将Router ID配置为与该设备某个接口的IP地址一致。
说明:
每个OSPF进程的Router ID要保证在OSPF网络中唯一,否则会导致邻居不能正常建立、路由信息不正确的问题。建议在OSPF设备上单独为每个OSPF进程配置全网唯一的Router ID。
vpn-instance vpn-instance-name表示VPN实例。
如果指定了VPN实例,那么此OSPF进程属于指定的VPN实例,如果未指定则属于公网实例。
6.8.2 创建OSPF区域
背景信息
随着网络规模日益扩大,设备数量的增多会导致LSDB非常庞大,导致设备负担很重。OSPF协议通过将自治系统划分成不同的区域(Area)来解决上述问题。区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识。区域的边界是设备,而不是链路。一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] *,启动OSPF进程,进入OSPF视图。
执行命令area area-id,创建并进入OSPF区域视图。
并非所有的区域都是平等的关系。其中区域号(Area ID)是0的称为骨干区域。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。
6.8.3 使能OSPF
背景信息
创建OSPF进程后,还需要配置区域所包含的网段。一个网段只能属于一个区域,或者说每个运行OSPF协议的接口必须指明属于某一个特定的区域。该处的网段是指运行OSPF协议接口的IP地址所在的网段。
OSPF需要对接收到的Hello报文做网络掩码检查,当接收到的Hello报文中携带的网络掩码和本设备不一致时,则丢弃这个Hello报文,即不能建立邻居关系。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令area area-id,进入OSPF区域视图。
可以在OSPF区域和指定接口中使能OSPF。
- 在OSPF区域中使能OSPF。
- 执行命令network ip-address wildcard-mask,配置区域所包含的网段。
满足下面两个条件,接口上才能正常运行OSPF协议:
- 接口的IP地址掩码长度≥**network**命令指定的掩码长度。
- 接口的主IP地址必须在**network**命令指定的网段范围内。
缺省情况下,OSPF以32位主机路由的方式对外发布Loopback接口的IP地址,与Loopback接口上配置的掩码长度无关。如果要发布Loopback接口的网段路由,需要在接口下配置网络类型为NBMA或广播型。请参考[配置接口的网络类型](http://support.huawei.com/enterprise/docinforeader!loadDocument1.action?contentId=DOC1000162056&partNo=10092#dc_cfg_ospf_0014)。
- 在指定接口中使能OSPF。
在系统视图中执行命令interface interface-type interface-number,进入接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf enable [ process-id ] area area-id,在接口上使能OSPF。
区域ID可以采用十进制整数或IPv4地址形式输入,但显示时使用IPv4地址形式。
6.8.4 (可选)创建虚连接
背景信息
在划分OSPF区域之后,非骨干区域之间的OSPF路由更新是通过骨干区域来交换完成的。因此,OSPF要求所有非骨干区域必须与骨干区域保持连通,并且骨干区域之间也要保持连通。但在实际应用中,因为各方面条件的限制,可能无法满足这个要求,这时可以通过配置OSPF虚连接解决。
请在运行OSPF协议的设备上进行以下配置。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令area area-id,进入OSPF区域视图。
执行命令vlink-peer router-id [ smart-discover | hello hello-interval | retransmit retransmit-interval | trans-delay trans-delay-interval | dead dead-interval | [ simple [ plain plain-text | [ cipher ] cipher-text ] | { md5 | hmac-md5 | hmac-sha256 } [ key-id { plain plain-text | [ cipher ] cipher-text } ] | authentication-null | keychain keychain-name ] ] *,创建并配置虚连接。
在虚连接的另一端也需要配置此命令。
注意:
如果使用plain选项,密码将以明文形式保存在配置文件中,存在安全隐患。建议使用cipher选项,将密码加密保存。
MD5和HMAC-MD5认证模式存在风险,推荐使用HMAC-SHA256认证模式。
说明:
仅S6720EI、S6720S-EI、S5720HI和S5720EI支持keychain keychain-name参数。
后续处理
建立虚连接后,不同的设备制造商可能会使用不同的MTU(maximum transmission unit)缺省设置。为了保证一致,应该设置接口发送DD报文时MTU值为缺省值0。参见使能在DD报文中填充接口的实际MTU。
6.8.5 (可选)配置对OSPF更新LSA的泛洪限制
背景信息
当邻居数量或者需要泛洪的LSA报文数量较多时,邻居路由器会在短时间内收到大量的更新报文。如果邻居路由器不能及时处理这些突发的大量报文,则有可能因为忙于处理更新报文而丢弃了维护邻居关系的Hello报文,造成邻居断开。而重建邻居时,需要交互的报文数量将会更大,由此导致报文数量过大的情况进一步恶化。通过对OSPF更新LSA的泛洪限制可以有效避免以上情况的发生,起到了维护邻居关系的目的。
请在运行OSPF协议的交换机上进行以下配置。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令flooding-control [ number transmit-number | timer-interval transmit-interval ] *,配置对OSPF更新LSA的泛洪限制。
缺省情况下,每次泛洪更新LSA的数量的缺省值是50,泛洪更新LSA的时间间隔是30秒。
配置flooding-control命令后,控制对OSPF更新LSA的泛洪的这个功能立刻生效。
若没有配置flooding-control命令,当邻居数量超过256个时自动使能该功能。
6.8.6 检查配置结果
前提条件
已经完成OSPF基本功能的所有配置。
操作步骤
- 在任意视图下执行display ospf [ process-id ] peer命令,查看OSPF邻居的信息。
- 在任意视图下执行display ospf [ process-id ] interface命令,查看OSPF接口的信息。
- 在任意视图下执行display ospf [ process-id ] routing命令,查看OSPF路由表的信息。
- 在任意视图下执行display ospf [ process-id ] lsdb命令,查看OSPF的LSDB信息。
6.9 配置OSPF邻居或邻接的会话参数
OSPF网络中,所有链路状态信息都在邻居或邻接中传递、交换。配置合理的OSPF邻居或邻接关系的会话参数,对整网的稳定性起着重要作用。
前置任务
在配置OSPF邻居或邻接关系的会话参数之前,需完成以下任务:
- 配置链路层协议。
- 配置接口的网络层地址,使各相邻节点网络层可达。
- 6.8 配置OSPF的基本功能。
配置流程
以下配置任务(不含检查配置结果),根据应用环境选择其中一项或几项进行配置。
6.9.1 配置OSPF报文重传限制
背景信息
OSPF
交换机
发送完以下这三种报文后,若没有在规定时间内收到相应的LSAck报文,会再次重传。当达到限定报文重传次数后,本端就断开和对方的邻接关系。
- DD报文
- LSU报文
- LSR报文
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令retransmission-limit [ max-number ],配置OSPF重传限制功能。
缺省情况下,不使能此功能。最大重传限制数的缺省值是30。
6.9.2 使能在DD报文中填充接口的实际MTU
背景信息
建立虚连接后,不同的设备制造商可能会使用不同的MTU缺省设置。为了保证一致,应该设置接口发送DD报文时MTU值为缺省值0。
操作步骤
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入运行OSPF协议的接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf mtu-enable,使能接口发送DD报文时填充MTU值,同时还会检查邻居DD报文所携带的MTU是否超过本端的MTU值。
缺省情况下,接口发送DD报文的MTU值为0。
注意:
当配置DD报文MTU值后,会引起邻居关系重新建立。
6.9.3 检查配置结果
前提条件
已经完成配置OSPF邻居或邻接的会话参数的所有配置。
操作步骤
- 使用display ospf [ process-id ] peer命令查看OSPF邻居的信息。
- 使用display ospf [ process-id ] brief命令查看OSPF的概要信息。
- 使用display ospf [ process-id ] retrans-queue [ interface-type interface-number ] [ neighbor-id ] [ low-level-of-retrans-times-range min-time ] [ high-level-of-retrans-times-range max-time ]命令查看OSPF重传列表。
6.10 配置OSPF在不同网络类型中的属性
通过配置OSPF接口的网络类型和调整属性,可以灵活组建OSPF网络。
应用环境
OSPF根据链路层协议类型将网络分为四种不同的类型。如表6-19所示。
表6-19 OSPF的网络类型和特点
网络类型 | 特点 | 缺省选择 |
---|---|---|
广播类型(Broadcast) | 在该类型的网络中,通常以组播形式发送Hello报文、LSU报文和LSAck报文,以单播形式发送DD报文和LSR报文。 | 当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。 |
NBMA类型(Non-broadcast multiple access) | 在该类型的网络中,以单播形式发送Hello报文、DD报文、LSR报文、LSU报文、LSAck报文。NBMA网络必须是全连通的,即网络中任意两台交换机之间都必须直接可达。 | 当链路层协议是ATM时,缺省情况下,OSPF认为网络类型是NBMA。 |
点到点P2P类型(point-to-point) | 在该类型的网络中,以组播形式发送Hello报文、DD报文、LSR报文、LSU报文、LSAck报文。 | 当链路层协议是PPP、HDLC和LAPB时,缺省情况下,OSPF认为网络类型是P2P。 |
点到多点P2MP类型(Point-to-Multipoint) | 在该类型的网络中:以组播形式发送Hello报文,以单播形式发送DD报文、LSR报文、LSU报文、LSAck报文。 | 没有一种链路层协议会被缺省的认为是P2MP类型,P2MP必须是由其他的网络类型强制更改的。 |
由表6-19可以看出,OSPF协议在上述四种网络类型中的差异主要集中在发送报文形式不同,因此,在四种网络类型中配置的OSPF协议,配置差异主要体现在协议报文的发送形式的配置。
前置任务
在配置OSPF在不同网络类型中的属性之前,需完成以下任务:
- 配置接口的网络层地址,使各相邻节点网络层可达。
- 6.8 配置OSPF的基本功能。
配置流程
配置接口的网络类型是配置P2MP和NBMA网络属性的前置任务。
6.10.1 配置接口的网络类型
背景信息
下面三种情况是配置接口网络类型的最常见情况:
- P2MP网络类型:由于P2MP不存在于链路层协议中,所以P2MP都是由其他网络类型强制更改的。
- NBMA网络类型:由于NBMA网络必须是全连通的,所以网络中任意两台交换机之间都必须直接可达。但在很多情况下,这个要求无法满足,这时就需要通过命令强制改变网络的类型。
- 广播网络类型:为了提高建立邻居速度,可以将广播类型网络更改为P2P网络。
操作步骤
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入运行OSPF的接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf network-type { broadcast | nbma | p2mp | p2p [ peer-ip-ignore ] },配置OSPF接口的网络类型。
缺省情况下,接口的网络类型根据物理接口而定。以太网接口的网络类型为广播。
当用户为接口配置了新的网络类型后,原接口的网络类型将被替换。
根据实际情况配置接口的网络类型,例如:
- 如果接口的网络类型是广播,但在广播网络上有不支持组播地址的交换机,可以将接口的网络类型改为NBMA网络。
- 如果接口的网络类型是NBMA,且网络是全连通的,即任意两台交换机都直接可达。此时,可以将接口类型改为广播网络,并且不必再配置邻居路由器。
- 如果接口的网络类型是NBMA,但网络不是全连通的,必须将接口的网络类型改为P2MP。这样,两台不能直接可达的交换机就可以通过一台与两者都直接可达的交换机来交换路由信息。接口的网络类型改为P2MP网络后,不必再配置邻居交换机。
- 如果同一网段内只有两台交换机运行OSPF协议,建议将接口的网络类型改为P2P网络。
说明:
OSPF协议不支持NULL接口的配置。
6.10.2 配置P2MP网络属性
操作步骤
配置忽略对网络掩码的检查。
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf network-type p2mp,配置OSPF接口的网络类型。
P2MP网络类型必须是由其他的网络类型强制更改的。详细描述参见[配置接口的网络类型](http://support.huawei.com/enterprise/docinforeader!loadDocument1.action?contentId=DOC1000162056&partNo=10092#dc_cfg_ospf_0014)。
执行命令ospf p2mp-mask-ignore命令,配置在P2MP网络上忽略对网络掩码的检查。
执行命令quit,退出接口视图。
- (可选)配置P2MP网络上到指定邻居所需的开销值。
缺省情况下,P2MP网络上到指定邻居所需的开销值等于接口的开销值,当需要修改此开销值时,可以通过p2mp-peer命令进行配置。
- 执行命令ospf [ process-id ],进入OSPF进程视图。
- 执行命令p2mp-peer ip-address cost cost,配置P2MP网络上到指定邻居所需的开销值。
- 配置对发送的LSA进行过滤。
当两台交换机之间存在多条链路时,通过对出方向的LSA进行过滤可以在某些链路上过滤LSA的传送,减少不必要的重传,节省带宽资源。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令filter-lsa-out peer ip-address { all | { summary [ acl { acl-number | acl-name } ] | ase [ acl { acl-number | acl-name } ] | nssa [ acl { acl-number | acl-name } ] } * },配置在P2MP网络中对发送的LSA进行过滤。
缺省情况下,不对LSA进行过滤。
6.10.3 配置NBMA网络属性
操作步骤
- (可选)配置NBMA网络类型。
由于NBMA网络必须是全连通的,所以网络中任意两台交换机之间都必须直接可达。但在很多情况下,这个要求无法满足,此时必须通过命令强制改变网络的类型为P2MP。详细描述参见配置接口的网络类型。
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf network-type nbma,配置OSPF接口的网络类型为NBMA。
- (可选)配置NBMA网络发送轮询报文的时间间隔。
在NBMA网络上,当邻居失效后,交换机将按设置的轮询时间间隔定期地发送Hello报文。
- 执行命令ospf timer poll interval,在NBMA接口上配置发送轮询报文的时间间隔。
缺省情况下,时间间隔*interval*为120秒。
- 配置NBMA网络的邻居。
网络类型为NBMA的接口,无法通过广播Hello报文的形式发现邻居交换机,必须在接口上手工配置邻居交换机的IP地址和邻居交换机是否有选举权。
- 执行命令quit,退出接口视图。
- 执行命令ospf [ process-id ],进入OSPF进程视图。
- 执行命令peer ip-address [ dr-priority priority ],配置NBMA网络的邻居。
6.10.4 检查配置结果
前提条件
已经完成OSPF在NBMA网络和P2MP网络中的属性的所有配置。
操作步骤
- 使用以下命令查看OSPF的LSDB信息:
- display ospf [ process-id ] lsdb [ brief ]
- display ospf [ process-id ] lsdb [ { router | network | summary | asbr | ase | nssa | opaque-link | opaque-area | opaque-as } [ link-state-id ] ] [ originate-router [ advertising-router-id ] | self-originate ] [ age { min-value min-age-value | max-value max-age-value } * ]
使用display ospf [ process-id ] peer [ [ interface-type interface-number ] neighbor-id | brief | last-nbr-down ]命令查看OSPF邻居的信息。
使用display ospf [ process-id ] nexthop查看OSPF的下一跳信息。
使用以下命令查看OSPF的路由表信息:
- display ospf [ process-id ] routing [ ip-address [ mask | mask-length ] ] [ interface interface-type interface-number ] [ nexthop nexthop-address ]
- display ospf [ process-id ] routing router-id [ router-id ]
- 使用display ospf [ process-id ] interface [ all | interface-type interface-number ] [ verbose ]查看OSPF的接口信息。
6.11 配置OSPF的Stub区域
通过将位于AS边缘的一些非骨干区域配置成Stub,可以缩减LSDB和路由表规模,减少需要传递的路由信息数量。
应用环境
OSPF划分区域可以减少网络中LSA的数量。对于位于自治系统边界的非骨干区域,为了更多的缩减其路由表规模和降低LSA的数量,可以将它们配置为STUB区域。
STUB区域是一种可选的配置属性。
配置STUB区域时需要注意以下几点:
- 骨干区域(Area0)不能配置成STUB区域。
- 如果要将一个区域配置成STUB区域,则该区域中的所有路由器都要配置STUB区域属性。
- STUB区域内不能存在ASBR,即自治系统外部的路由不能在STUB区域内传播。
- STUB区域内不能存在虚连接。
前置任务
在配置OSPF的Stub区域前,需完成以下任务:
- 配置接口的网络层地址,使各相邻节点网络层可达。
- 6.8 配置OSPF的基本功能。
配置流程
图6-66 OSPF的Stub区域配置流程图
6.11.1 配置当前区域为Stub区域
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令area area-id,进入OSPF区域视图。
执行命令stub [ no-summary | default-route-advertise backbone-peer-ignore ] *,配置当前区域为STUB区域。
no-summary用来禁止ABR向Stub区域内发送Type-3 LSA(Summary LSA)。
default-route-advertise用来在ABR上配置产生缺省的Type-3 LSA到Stub区域。
backbone-peer-ignore用来忽略检查骨干区域的邻居状态。即骨干区域中只要存在Up状态的接口,无论是否存在Full状态的邻居,ABR都会产生缺省的Type-3 LSA到Stub区域。
说明:
- 所有连接到STUB区域的交换机必须使用stub命令将该区域配置成STUB区域属性。
- 配置或取消STUB属性,会触发区域更新。只有在上一次区域更新完成后,才能进行再次配置或取消配置操作。
6.11.2 (可选)配置发送到Stub区域缺省路由的开销
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令area area-id,进入OSPF区域视图。
执行命令stub [ no-summary | default-route-advertise backbone-peer-ignore ] *,配置当前区域为STUB区域。
no-summary用来禁止ABR向Stub区域内发送Type-3 LSA(Summary LSA)。
default-route-advertise用来在ABR上配置产生缺省的Type-3 LSA到Stub区域。
backbone-peer-ignore用来忽略检查骨干区域的邻居状态。即骨干区域中只要存在Up状态的接口,无论是否存在Full状态的邻居,ABR都会产生缺省的Type-3 LSA到Stub区域。
说明:
- 所有连接到STUB区域的交换机必须使用stub命令将该区域配置成STUB区域属性。
- 配置或取消STUB属性,会触发区域更新。只有在上一次区域更新完成后,才能进行再次配置或取消配置操作。
- 执行命令default-cost cost,配置发送到Stub区域缺省路由的开销。
cost为发送到Stub区域的Type3缺省路由的开销,缺省值为1。
当区域配置为STUB区域后,为保证到自治系统外的路由可达,STUB区域的ABR将生成一条缺省路由,并发布给STUB区域中的其他交换机。
6.11.3 检查配置结果
操作步骤
使用以下命令查看OSPF的LSDB信息:
- display ospf [ process-id ] lsdb [ brief ]
- display ospf [ process-id ] lsdb [ { router | network | summary | asbr | ase | nssa | opaque-link | opaque-area | opaque-as } [ link-state-id ] ] [ originate-router [ advertising-router-id ] | self-originate ] [ age { min-value min-age-value | max-value max-age-value } *]
使用以下命令查看OSPF路由表的信息:
- display ospf [ process-id ] routing [ ip-address [ mask | mask-length ] ] [ interface interface-type interface-number ] [ nexthop nexthop-address ]
- display ospf [ process-id ] routing router-id [ router-id ]
使用display ospf [ process-id ] abr-asbr [ router-id ]命令查看OSPF ABR及ASBR信息。
6.12 配置OSPF的NSSA区域
通过将位于自治系统边缘的非骨干区域配置成NSSA区域,可以缩减其路由表规模,减少需要传递的路由信息数量。
应用环境
NSSA区域适用于既需要引入外部路由又要避免外部路由带来的资源消耗的场景。
OSPF NSSA(Not-So-Stubby Area)区域是OSPF特殊的区域类型。NSSA区域与STUB区域有许多相似的地方,两者都不传播来自OSPF网络其它区域的外部路由。差别在于STUB区域是不能引入外部路由,NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中。
在NSSA区域中使用Type7 LSA描述引入的外部路由信息。Type7 LSA由NSSA区域的自治域边界路由器(ASBR)产生,其扩散范围仅限于边界路由器所在的NSSA区域。NSSA区域的区域边界路由器(ABR)收到Type7 LSA时,会有选择地将其转化为Type5 LSA,以便将外部路由信息通告到OSPF网络的其它区域。
前置任务
在配置OSPF的NSSA区域之前,需完成以下任务:
- 配置接口的网络层地址,使相邻节点之间网络层可达。
- 6.8 配置OSPF的基本功能。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令area area-id,进入OSPF区域视图。
执行命令nssa [ { default-route-advertise [ backbone-peer-ignore ] | suppress-default-route } | flush-waiting-timer interval-value | no-import-route | no-summary | set-n-bit | suppress-forwarding-address | translator-always | translator-interval interval-value | zero-address-forwarding | translator-strict ]*,配置当前区域为NSSA区域。
说明:
所有连接到NSSA区域的设备必须使用nssa命令将该区域配置成NSSA属性。
配置或取消NSSA属性,会触发区域更新,邻居中断。只有在上一次区域更新完成后,才能进行再次配置或取消配置操作。
nssa
命令参数的使用场景如下:
default-route-advertise用来在ASBR上配置产生缺省的Type7 LSA到NSSA区域。
在ABR上无论路由表中是否存在缺省路由0.0.0.0/0,都会产生Type7 LSA缺省路由。在ASBR上只有当路由表中存在缺省路由0.0.0.0/0,才会产生Type7 LSA缺省路由。
当ASBR所在的区域被配置成NSSA时,在LSA洪泛区域中的其他交换机上仍会保留已经没用的Type5 LSA,这些LSA必须等到老化时间到达3600秒后才会被删除。由于大量的LSA会占用交换机内存,所以对设备的性能造成了一定影响。此时,通过配置flush-waiting-timer参数产生老化时间被置为最大值(3600秒)的Type5 LSA,及时清除其他交换机上已经没用的Type5 LSA。
说明:
- 当LSA报文头部的LS age(老化时间)达到3600秒时,该LSA会被删除。
- 当ASBR同时还是ABR时,**flush-waiting-timer**功能不会生效,防止删除非NSSA区域的Type5 LSA。
当ASBR同时还是ABR时,通过配置no-import-route参数使OSPF通过import-route命令引入的外部路由不被通告到NSSA区域。
为了继续减少发送到NSSA区域的LSA的数量,可以配置ABR的
no-summary
属性,禁止ABR向NSSA区域内发送Summary LSA(Type3 LSA)。
说明:
配置**nssa** **default-route-advertise** **backbone-peer-ignore** **no-summary**命令后,骨干区域中只要存在Up状态的接口,无论是否存在Full状态的邻居,ABR会同时产生缺省的Type-7 LSA和缺省的Type-3 LSA,且缺省的Type-3 LSA优先生效。
设置了set-n-bit关键字后,交换机会与邻居交换机同步时在DD报文中设置N-bit位的标志。
当NSSA区域中有多个ABR时,系统会根据规则自动选择一个ABR作为转换器(通常情况下NSSA区域选择Router ID最大的设备),将Type7 LSA转换为Type5 LSA。通过在ABR上配置translator-always参数,可以将某一个ABR指定为转换器。如果需要指定某两个ABR进行负载分担,可以通过配置translator-always来指定两个转换器同时工作。如果需要某一个固定的转换器,防止由于转换器变动引起的LSA重新泛洪,可以预先使用此命令指定。
translator-interval参数主要用于转换器切换过程,保障切换平滑进行。所以interval-value参数的缺省间隔要大于泛洪的时间。
- (可选)执行命令default-cost cost,配置ABR发送到NSSA区域的Type3 LSA的缺省路由的开销。
当区域配置为NSSA区域后,为保证到自治系统外的路由可达,NSSA区域的ABR将生成一条缺省路由,并发布给NSSA区域中的其他交换机。配置NSSA区域的缺省路由的开销,调整缺省路由的选路。
缺省路由也可以通过Type7 LSA来表示,用于指导流量流向其它自治域。
在NSSA区域中,可能同时存在多个边界路由器。为了防止路由环路产生,边界路由器之间不计算对方发布的缺省路由。
缺省情况下,ABR发送到NSSA区域的缺省路由的开销为1。
检查配置结果
使用以下命令查看OSPF的LSDB信息:
- display ospf [ process-id ] lsdb [ brief ]
- display ospf [ process-id ] lsdb [ { router | network | summary | asbr | ase | nssa | opaque-link | opaque-area | opaque-as } [ link-state-id ] ] [ originate-router [ advertising-router-id ] | self-originate ] [ age { min-value min-age-value | max-value max-age-value } *]
使用以下命令查看OSPF的路由表信息:
- display ospf [ process-id ] routing [ ip-address [ mask | mask-length ] ] [ interface interface-type interface-number ] [ nexthop nexthop-address ]
- display ospf [ process-id ] routing router-id [ router-id ]
使用display ospf [ process-id ] interface [ all | interface-type interface-number ] [ verbose ]命令查看OSPF的接口信息。
6.13 调整OSPF的选路
通过调整OSPF选路,使得网络以满足复杂环境中的需要。
应用环境
在复杂网络环境,通过调整OSPF的功能参数来达到灵活组网、优化网络负载分担。
前置任务
在调整OSPF的选路之前,需完成以下任务:
- 配置接口的网络层地址,使各相邻节点网络层可达。
- 6.8 配置OSPF的基本功能。
配置流程
以下配置任务(不含检查配置结果),根据应用环境选择其中一项或几项进行配置。
6.13.1 配置OSPF的接口开销
背景信息
OSPF既可以根据接口的带宽自动计算其链路开销值,也可以通过命令配置。
如果没有通过ospf cost cost命令配置OSPF接口的开销值,OSPF会根据该接口的带宽自动计算其开销值。计算公式为:接口开销=带宽参考值/接口带宽,取计算结果的整数部分作为接口开销值(当结果小于1时取1)。通过改变带宽参考值可以间接改变接口的开销值。
操作步骤
配置OSPF接口的开销值
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入运行OSPF的接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf cost cost,设置OSPF接口的开销值。
配置带宽参考值
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令bandwidth-reference value,配置带宽参考值。
*value*为计算链路开销时所依据的参考值,单位是Mbit/s。
说明:
在配置带宽参考值时请注意,必须保证该进程中所有交换机的带宽参考值一致。
6.13.2 配置等价路由
背景信息
当网络中到达同一目的地存在同一路由协议发现的多条路由,且这几条路由的开销值也相同,那么这些路由就是等价路由,可以实现负载分担。
例如,如图6-67所示。交换机A和交换机B之间的三条路由都运行OSPF协议,且几条路由的开销值也相同,那么这三条路由就是等价路由,形成了负载分担。
图6-67 等价路由组网图
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令maximum load-balancing number,配置最大等价路由数量。
说明:
缺省情况下,S6720SI、S6720S-SI、S5720S-SI和S5720SI最大等价路由条数为8,S5720EI、S5720HI、S6720S-EI和S6720EI最大等价路由条数为16。
- (可选)执行命令nexthop ip-address weight value,配置OSPF的负载分担优先级。
当组网中存在的等价路由数量大于maximum load-balancing命令配置的等价路由数量时,会随机选取有效路由进行负载分担。如果需要指定负载分担的有效路由,可以通过nexthop命令配置路由的优先级,将需要指定的有效路由的优先级设置为高。
weight值越小,路由优先级越高。weight的缺省值是255,表示等价路由间进行负载分担,不区分优先级。
6.13.3 配置路由选择规则
背景信息
由于RFC2328与RFC1583定义的路由选路规则不同,因此使能OSPF后,根据实际设备支持的路由选路的定义情况(支持RFC2328或支持RFC1583)配置OSPF域的路由选路规则。默认支持RFC1583,当设备支持的是RFC2328时,需要将RFC1583配置成RFC2328,使OSPF路由域中的所有设备配置为同一种路由选路规则。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令undo rfc1583 compatible,将RFC1583配置成RFC2328,配置OSPF域的路由选路规则。
缺省情况下,交换机支持RFC1583的选路规则。
6.13.4 检查配置结果
前提条件
已经完成OSPF路由属性的所有配置。
操作步骤
- 使用display ospf [ process-id ] interface命令查看OSPF接口的信息。
- 使用display ospf [ process-id ] routing命令查看OSPF路由表的信息。
6.14 控制OSPF的路由信息
控制OSPF路由信息包括引入外部路由以及对路由、LSA的过滤。
前置任务
在控制OSPF的路由信息之前,需完成以下任务:
- 配置接口的网络层地址,使各相邻节点网络层可达。
- 6.8 配置OSPF的基本功能。
配置流程
以下配置任务(不含检查配置结果),根据应用环境选择其中一项或几项进行配置。
6.14.1 配置OSPF引入外部路由
背景信息
当OSPF网络中的设备需要访问运行其他协议的网络中的设备时,需要将其他协议的路由引入到OSPF网络中。
OSPF是一个无环路的动态路由协议,但这是针对域内路由和域间路由而言的,其对引入的外部路由环路没有很好的防范机制,所以在配置OSPF引入外部路由时一定要慎重,防止手工配置引起的环路。
请在运行OSPF协议的自治系统边界交换机ASBR上进行以下配置。
操作步骤
配置OSPF引入其它协议的路由
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令import-route { limit limit-number | { bgp [ permit-ibgp ] | direct | unr | rip [ process-id-rip ] | static | isis [ process-id-isis ] | ospf [ process-id-ospf ] } [ cost cost | type type | tag tag | route-policy route-policy-name ] * },引入其它协议的路由信息。
说明:
仅S6720EI、S6720S-EI、S5720HI、S5720EI、S6720SI、S6720S-SI、S5720SI和S5720S-SI支持**bgp** [ **permit-ibgp** ]参数和**isis** [ *process-id-isis* ]参数。
配置OSPF引入路由时的相关参数
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令default { cost { cost-value | inherit-metric } | limit limit | tag tag | type type } *,配置引入路由时的参数缺省值(路由度量、标记、类型)。
当OSPF引入外部路由时,可以配置一些额外参数的缺省值,如开销、路由数量、标记和类型。路由标记可以用来标识协议相关的信息,如OSPF接收BGP时用来区分自治系统的编号。
缺省情况下,OSPF引入外部路由的缺省度量值为1,引入的外部路由类型为Type2,设置缺省标记值为1。
说明:
可以通过以下三条命令设置引入路由的开销值,其优先级依次递减:
- 通过**apply cost**命令设置的路由开销值。
- 通过**import-route**命令设置的引入路由开销值。
- 通过**default**命令设置引入路由的缺省开销值。
6.14.2 配置OSPF将缺省路由通告到OSPF路由区域
背景信息
OSPF实际组网应用中,区域边界和自治系统边界通常都是由多个交换机组成的多出口冗余备份或者负载分担。此时,为了减少路由表的容量,可以配置缺省路由,保证网络的高可用性。
OSPF缺省路由通常应用于下面两种情况:
- 由区域边界交换机(ABR)发布Type3 LSA,用来指导区域内路由器进行区域之间报文的转发。
- 由自治系统边界交换机(ASBR)发布Type5 LSA或Type7 LSA,用来指导OSPF路由域内路由器进行域外报文的转发。
当路由器无精确匹配的路由时,就可以通过缺省路由进行报文转发。
Type3 LSA缺省路由的优先级要高于Type5 LSA或Type7 LSA路由。
OSPF缺省路由的发布方式取决于引入缺省路由的区域类型。如表6-20所示。
表6-20 缺省路由发布方式
区域类型 | 产生条件 | 发布方式 | 产生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协议的自治系统边界交换机ASBR上进行以下配置。
操作步骤
配置OSPF将缺省路由通告到OSPF路由区域
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
请根据实际情况选择以下配置。
- 如果要将缺省路由通告到OSPF路由区域,则执行命令**default-route-advertise** [ [ **always** | **permit-calculate-other** ] | **cost** *cost* | **type** *type* | **route-policy** *route-policy-name* [ **match-any** ] ] *。
- **always**表示无论本机是否存在激活的非本OSPF进程的缺省路由,都会产生并发布一个描述缺省路由的LSA。
- **permit-calculate-other**表示在发布缺省路由后,仍允许计算其他交换机发布的缺省路由。
- **route-policy** *route-policy-name*表示路由表中有匹配的非本OSPF进程产生的缺省路由表项时,按路由策略所配置的参数发布缺省路由的匹配规则。
说明:
- 本机必须存在激活的非本OSPF进程的缺省路由时才会产生并发布一个缺省路由的ASE LSA。
- OSPF路由域中在通告缺省路由前,会比较缺省路由的优先级,如果在其中某OSPF交换机上同时配置了静态缺省路由,要使OSPF通告的缺省路由加入到当前的路由表中,则必须保证所配置的静态缺省路由的优先级比OSPF通告的缺省路由的优先级低。
6.14.3 配置OSPF路由聚合
背景信息
当OSPF网络规模较大时,配置路由聚合,可以有效减少路由表中的条目,减小对系统资源的占用,不影响系统的性能。此外,如果被聚合的IP地址范围内的某条链路频繁Up和Down,该变化并不会通告到被聚合的IP地址范围外的设备。因此,可以避免网络中的路由震荡,在一定程度上提高了网络的稳定性。
ABR向其它区域发送路由信息时,以网段为单位生成Type3 LSA。当区域中存在连续的网段(具有相同前缀的路由信息)时,可以通过abr-summary命令将这些网段聚合成一个网段,ABR向其他区域只发送一条聚合后的LSA,所有指定的聚合网段范围的LSA将不会再被单独发送。从而减小路由表的规模,提高交换机的性能。
请在运行OSPF协议的交换机上进行以下配置。
操作步骤
配置ABR路由聚合
- 执行命令system-view,进入系统视图。
- 执行命令ospf [ process-id ],进入OSPF进程视图。
- 执行命令area area-id,进入OSPF区域视图。
- 执行命令abr-summary ip-address mask [ [ cost { cost | inherit-minimum } | [ advertise [ generate-null0-route ] | not-advertise | generate-null0-route [ advertise ] ] ] * ],配置OSPF的ABR路由聚合。
配置ASBR路由聚合
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
(可选)执行命令asbr-summary type nssa-trans-type-reference [ cost nssa-trans-cost-reference ],配置OSPF设置聚合路由类型(Type)和开销值(Cost)时考虑Type7转换到Type5的LSA。
缺省情况下,OSPF在设置聚合路由类型和开销时不考虑Type7转换到Type5的LSA。
执行命令asbr-summary ip-address mask [ not-advertise | tag tag | cost cost | distribute-delay interval ] *,配置OSPF的ASBR路由聚合。
说明:
在配置路由聚合后,本地OSPF设备的路由表保持不变。但是其他OSPF设备的路由表中将只有一条聚合路由,没有具体路由。直到网络中被聚合的路由都出现故障而消失时,该聚合路由才会消失。
6.14.4 配置OSPF对接收的路由进行过滤
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name [ secondary ] } import,配置对接收的路由进行过滤。
- acl-number为基本访问控制列表号。
- acl-name acl-name为访问控制列表名称。
- ip-prefix ip-prefix-name为地址前缀列表名称。
filter-policy import命令是对OSPF计算出来的路由进行过滤,不能对发布和接收的LSA进行过滤,只有通过过滤的路由才被添加到路由表中,没有通过过滤的路由不会被添加进OSPF路由表,但不影响对外发布出去。
6.14.5 配置OSPF对发布的路由进行过滤
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name } export [ protocol [ process-id ] ],配置对通过import-route命令引入的路由进行过滤,只有通过过滤的路由才能被发布出去。
acl-number为基本访问控制列表号。
acl-name acl-name为访问控制列表名称。
ip-prefix ip-prefix-name为地址前缀列表名称。
route-policy route-policy-name为路由策略名称。
用户可以通过指定protocol [ process-id ]对特定的某一种协议或某一进程的路由信息进行过滤。如果没有指定protocol [ process-id ],则OSPF将对所有引入的路由信息进行过滤。
说明:
- import-route命令不能引入外部路由的缺省路由。
- OSPF对引入的路由进行过滤,是指OSPF只将满足条件的外部路由生成的Type5 LSA发布出去。
6.14.6 配置对发送的LSA进行过滤
背景信息
当两台交换机之间存在多条链路时,通过对发送的LSA进行过滤可以在某些链路上过滤LSA的传送,减少不必要的重传,节省带宽资源。
请在运行OSPF协议的交换机上进行以下配置。
操作步骤
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf filter-lsa-out { all | { summary [ acl { acl-number | acl-name } ] | ase [ acl { acl-number | acl-name } ] | nssa [ acl { acl-number | acl-name } ] } * },配置对出方向的LSA进行过滤。
缺省情况下,不对发送的LSA进行过滤。
6.14.7 配置对ABR Type3 LSA进行过滤
背景信息
通过对区域内出、入方向ABR Type3 LSA(Summary LSA)设置过滤条件,只有通过过滤的信息才能被发布、接收。
此功能仅在ABR上配置。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令area area-id,进入OSPF区域视图。
请根据需要,配置对ABR Type3 LSA进行过滤。
- 执行命令filter { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name } export,配置对本区域出方向的Summary LSA进行过滤。
- 执行命令filter { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name } import,配置对进入本区域的Summary LSA进行过滤。
6.14.8 (可选)使能Mesh-Group特性
背景信息
当交换机和邻居存在并行链路时,使能Mesh-Group特性,可以减轻链路的压力。
Mesh-Group时以邻居的Router-id唯一标识一个Group。是几条并行的LSA,合并为一个组,只泛洪一次。只有同时满足以下三个条件的接口才能属于同一个Mesh-Group:
- 属于相同区域和OSPF进程
- 接口状态大于Exchange
- 只连着同一个邻居
请在运行OSPF协议的交换机上进行以下配置。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令mesh-group enable,使能Mesh-Group特性。
缺省情况下,不使能Mesh-Group特性。
6.14.9 配置LSDB中External LSA的最大数量
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令ospf [ process-id ],进入OSPF进程视图。
- 执行命令lsdb-overflow-limit number,配置LSDB中External LSA的最大数量。
6.14.10 检查配置结果
前提条件
已经完成控制OSPF路由信息的所有配置。
操作步骤
- 使用以下命令查看OSPF路由表信息:
- display ospf [ process-id ] routing [ ip-address [ mask | mask-length ] ] [ interface interface-type interface-number ] [ nexthop nexthop-address ]
- display ospf [ process-id ] routing router-id [ router-id ]
使用display ospf [ process-id ] interface [ all | interface-type interface-number ] [ verbose ]命令查看OSPF的接口信息。
使用display ospf [ process-id ] asbr-summary [ ip-address mask ]命令查看OSPF ASBR聚合信息。
6.15 配置OSPF与BFD联动
如果需要提高链路状态变化时OSPF的收敛速度,可以在运行OSPF的链路上配置BFD特性。当BFD检测到链路故障时,能够将故障通告给路由协议,触发路由协议的快速收敛;当邻居关系为Down时,则动态删除BFD会话。
应用环境
OSPF通过周期性的向邻居发送Hello报文来实现邻居检测,检测到故障所需时间比较长,超过1秒钟。随着科技的发展,语音、视频及其它点播业务应用广泛,而这些业务对于丢包和延时非常敏感,当数据达到吉比特速率级时,较长的检测时间会导致大量数据丢失,无法满足电信级网络高可靠性的需求。
为了解决上述问题,配置指定进程或指定接口的BDF for OSPF特性,可以快速检测链路的状态,故障检测时间可以达到毫秒级,提高链路状态变化时OSPF的收敛速度。
说明:
仅S6720EI、S6720S-EI、S5720HI、S5720EI、S6720SI、S6720S-SI、S5720SI和S5720S-SI支持OSPF与BFD联动。
前置任务
在配置OSPF与BFD联动前,需完成以下任务:
- 配置接口的网络层地址,使各相邻节点网络层可达。
- 6.8 配置OSPF的基本功能。
配置流程
图6-68 OSPF与BFD联动配置流程图
6.15.1 配置全局BFD功能
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令bfd,配置全局BFD功能并进入到全局BFD视图。
6.15.2 配置OSPF的BFD特性
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF视图。
执行命令bfd all-interfaces enable,打开OSPF BFD特性的开关,建立BFD会话。
当配置了全局BFD特性,且邻居状态达到Full时,OSPF为该进程下所有具有邻接关系的邻居建立BFD会话。
- (可选)如果需要配置BFD参数请执行bfd all-interfaces { min-rx-interval receive-interval | min-tx-interval transmit-interval | detect-multiplier multiplier-value } *命令,指定需要建立BFD会话的各个参数值。
- min-rx-interval receive-interval表示期望从对端接收BFD报文的最小接收间隔。
- min-tx-interval transmit-interval表示向对端发送BFD报文的最小发送间隔。
- detect-multiplier multiplier-value表示本地检测倍数。
说明:
BFD报文实际收发时间间隔和检测倍数一般推荐使用缺省值。
具体参数如何配置取决于网路状况以及对网络可靠性的要求,对于网络可靠性要求较高链路,可以配置减小BFD报文实际发送时间间隔;对于网络可靠性要求较低的链路,可以配置增大BFD报文实际发送时间间隔。
说明:
本地BFD报文实际发送时间间隔=MAX { 本地配置的发送时间间隔transmit-interval,对端配置的接收时间间隔receive-interval }
本地BFD报文实际接收时间间隔=MAX { 对端配置的发送时间间隔transmit-interval,本地配置的接收时间间隔receive-interval }
本地BFD报文实际检测时间=本地实际接收时间间隔×对端配置的BFD检测倍数multiplier-value
例如,
本地配置的发送时间间隔为200ms,本地配置的接收时间间隔为300ms,本地检测倍数为4。
对端配置的发送时间间隔为100ms,对端配置的接收时间间隔为600ms,对端检测倍数为5。
则:
本地实际的发送时间间隔为MAX { 200ms,600ms }=600ms,本地实际接收时间间隔为MAX { 100ms,300ms }=300ms,本地实际检测时间间隔为300ms×5=1500ms。
对端实际的发送时间间隔为MAX { 100ms,300ms }=300ms,对端实际接收时间间隔为MAX { 200ms,600ms }=600ms,对端实际检测时间间隔为600ms×4=2400ms。
6.15.3 (可选)阻止接口动态创建BFD会话
背景信息
如果在OSPF进程中执行bfd all-interfaces enable命令后,该进程下所有使能OSPF且邻居状态为Full的邻居都将创建BFD会话。此时,如果不希望某个接口创建BFD会话可以阻止接口动态创建BFD会话。
操作步骤
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入运行OSPF与BFD联动的接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf bfd block,阻止接口动态创建BFD会话。
6.15.4 (可选)配置指定接口的BFD特性
背景信息
如果希望单独只对某些指定的接口配置BFD for OSPF特性,当这些接口的链路发生故障时,交换机可以快速的感知,并及时通知OSPF重新计算路由,从而提高OSPF的收敛速度。当邻居关系为Down时,则动态删除BFD会话。
OSPF创建BFD会话需要先使能全局BFD功能。
请在指定接口配置BFD会话的交换机上进行以下配置。
操作步骤
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入运行OSPF与BFD联动的接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf bfd enable,打开接口BFD特性的开关,建立BFD会话。
当配置了全局BFD特性,且邻居状态为Full时,OSPF为指定的接口建立了使用缺省参数值的BFD会话。
说明:
接口上配置BFD for OSPF特性的优先级高于进程中配置BFD for OSPF特性的优先级。
如果需要单独配置BFD参数请执行命令ospf bfd { min-rx-interval receive-interval | min-tx-interval transmit- interval | detect-multiplier multiplier-value } *,指定BFD会话的参数值。
BFD报文实际收发时间间隔和检测倍数一般推荐使用缺省值,即不执行该命令。
具体参数如何配置取决于网络状况以及对网络可靠性的要求,对于网络可靠性要求较高链路,可以配置减小BFD报文实际发送时间间隔;对于网络可靠性要求较低的链路,可以配置增大BFD报文实际发送时间间隔。
说明:
本地BFD报文实际发送时间间隔=MAX { 本地配置的发送时间间隔transmit-interval,对端配置的接收时间间隔receive-interval }
本地BFD报文实际接收时间间隔=MAX { 对端配置的发送时间间隔transmit-interval,本地配置的接收时间间隔receive-interval }
本地BFD报文实际检测时间=本地实际接收时间间隔×对端配置的BFD检测倍数multiplier-value
例如,
本地配置的发送时间间隔为200ms,本地配置的接收时间间隔为300ms,本地检测倍数为4。
对端配置的发送时间间隔为100ms,对端配置的接收时间间隔为600ms,对端检测倍数为5。
则:
本地实际的发送时间间隔为MAX { 200ms,600ms }=600ms,本地实际接收时间间隔为MAX { 100ms,300ms }=300ms,本地实际检测时间间隔为300ms×5=1500ms。
对端实际的发送时间间隔为MAX { 100ms,300ms }=300ms,对端实际接收时间间隔为MAX { 200ms,600ms }=600ms,对端实际检测时间间隔为600ms×4=2400ms。
6.15.5 检查配置结果
前提条件
已经完成OSPF与BFD联动的所有配置。
操作步骤
- 选择如下命令查看OSPF与BFD联动的会话信息。
- display ospf [process-id ] bfd session interface-type interface-number [ router-id ]
- display ospf [process-id ] bfd session { router-id | all }
6.16 配置OSPF IP FRR
配置OSPF IP FRR可以将故障链路的流量快速切换到备份链路上,保证流量不中断,从而达到保护流量的目的,因此极大的提高了OSPF网络的可靠性。
说明:
仅S5720EI、S5720HI、S6720S-EI和S6720EI支持OSPF IP FRR。
6.16.1 使能OSPF IP FRR
使能OSPF IP FRR生成无环的备份链路,出现故障时,OSPF可以快速将流量切换到备份路由上。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] *,启动OSPF进程,进入OSPF视图。
执行命令frr,进入OSPF IP FRR视图。
执行命令loop-free-alternate,使能OSPF IP FRR特性,生成无环的备份链路。
缺省情况下,不使能OSPF IP FRR功能。需满足OSPF IP FRR流量保护不等式,OSPF才能生成无环的备份链路。
说明:
下面的描述有如下约定:Distance_opt(X, Y)指节点X到Y之间的最短路径,S是转发流量的源节点,E是发生故障的节点,N是备份链路的节点,D是流量转发的目的节点。
当需要保护的对象是经过特定链路的流量时,流量保护类型为链路保护。链路开销必须满足不等式Distance_opt(N, D) < Distance_opt(N, S) + Distance_opt(S, D)。
当需要保护的对象是经过特定节点和链路的流量时,流量保护类型为节点链路双保护。
节点链路双保护需同时满足如下两个条件:
- 链路开销必须满足Distance_opt(N, D) < Distance_opt(N, S) + Distance_opt(S, D)。
- 设备的接口开销必须满足Distance_opt(N, D) < Distance_opt(N, E) + Distance_opt(E, D)。
- (可选)执行命令frr-priority static low,设置利用LFA(Loop-Free Alternates)算法计算备份下一跳和备份出接口。
OSPF有两种方式可以获得备份路径:
静态备份路径:由ip frr(系统视图)命令或ip frr(VPN实例视图)命令使能IP FRR功能后,指定备份下一跳和备份出接口。
动态备份路径:由loop-free-alternate命令使能OSPF IP FRR功能后,利用LFA算法计算备份下一跳和备份出接口。
缺省情况下,静态备份路径的优先级高于动态备份路径的优先级,即静态备份路径会被优选。但是,由于静态备份路径的灵活性较差,当备份路径出现故障时,静态备份路径不会自动更新,而动态备份路径可以自动更新。因此,为了保证备份路径的及时更新,可以配置frr-priority static low命令指定利用LFA算法计算备份下一跳和备份出接口,使动态备份路径的优先级高于静态备份路径的优先级。
- (可选)执行命令frr-policy route route-policy route-policy-name,配置OSPF IP FRR过滤策略。
配置了OSPF IP FRR过滤策略后,只有满足过滤条件的OSPF路由的备份路由才能下发转发表。如果希望保护经过某条特定OSPF路由的流量时,可以通过设置过滤策略,使该OSPF路由满足过滤条件,则该OSPF路由的备份路由加入转发表中。当这条路由出现故障时,OSPF可以快速将流量切换到备份路由上。
6.16.2 (可选)配置OSPF IP FRR与BFD绑定
配置OSPF IP FRR与BFD会话绑定可以达到快速感知故障的目的,确保故障后流量切换的及时性。
背景信息
配置OSPF IP FRR特性时,需要底层能够快速响应链路变化,当主链路故障时迅速将流量切换到备份链路。将OSPF IP FRR与BFD会话绑定可以达到快速感知故障的目的,确保故障后流量切换的及时性。
OSPF IP FRR与BFD绑定可以在OSPF指定进程或指定接口上配置。在指定接口配置的BFD特性优先级高于指定进程配置的BFD特性优先级。如果打开了接口的BFD开关,则按照接口上BFD参数建立BFD会话。
操作步骤
- 在OSPF指定进程上配置OSPF IP FRR与BFD绑定。
- 执行命令system-view,进入系统视图。
- 执行命令bfd,配置全局BFD功能。
- 执行命令quit,返回系统视图。
- 执行命令ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ] *,使能OSPF进程,进入OSPF视图。
- 执行命令bfd all-interfaces enable,在OSPF进程下使能BFD特性。
- 执行命令bfd all-interfaces frr-binding,配置OSPF进程下的IP FRR和BFD绑定。
- 在OSPF指定接口上配置OSPF IP FRR与BFD绑定。
- 执行命令system-view,进入系统视图。
- 执行命令bfd,配置全局BFD功能。
- 执行命令quit,返回系统视图。
- 执行命令interface interface-type interface-number,进入接口视图。
- 执行命令ospf bfd enable,在使能OSPF的特定接口下配置BFD特性。
- 执行命令ospf bfd frr-binding,配置接口下的IP FRR和BFD绑定。
6.16.3 (可选)禁止指定接口的OSPF IP FRR能力
对于承载重要业务的节点设备,在指定接口上禁止OSPF IP FRR功能,从而使此接口相连的对端设备不成为备份链路上的节点设备,避免使能OSPF IP FRR功能后对节点设备上运行的重要业务造成影响。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令interface interface-type interface-number,进入已使能OSPF IP FRR功能的接口视图。
- 执行命令ospf frr block,在指定接口上禁止OSPF IP FRR功能。
6.16.4 检查配置结果
成功配置OSPF IP FRR功能后,您可以查看到OSPF的链路信息。
前提条件
已经完成OSPF IP FRR的所有配置。
操作步骤
- 配置OSPF IP FRR功能后,执行display ospf [ process-id ] routing命令查看路由的主用链路和备份链路信息。
显示到指定OSPF设备的路由信息。
1 | <HUAWEI> display ospf routing 192.168.4.0 |
从显示信息可以看出,交换机上已经生成了备份的路由。路由信息包含备份下一跳信息:Backup NextHop表示备份下一跳地址,Backup Interface表示备份下一跳的出接口,Backup Type表示备份下一跳类型。
6.17 配置OSPF网络的快速收敛
通过调整定时器,可以达到网络快速收敛的目的。
前置任务
在配置OSPF网络的快速收敛之前,需完成以下任务:
- 配置链路层协议。
- 配置接口的网络层地址,使各相邻节点网络层可达。
- 6.8 配置OSPF的基本功能。
配置流程
以下配置任务(不含检查配置结果),根据应用环境选择其中一项或几项进行配置。
6.17.1 配置OSPF路由的收敛优先级
背景信息
随着网络业务的融合,数据、语音、视频等不同类型业务会在同样的网络基础设施上进行运行,但是不同业务对网络的要求是不一样的。
通过配置OSPF路由的收敛优先级,允许用户配置特定路由的优先级,使这些路由能够比其他的路由优先收敛。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令prefix-priority { critical | high | medium } ip-prefix ip-prefix-name,配置OSPF路由的收敛优先级。
配置OSPF路由的收敛优先级后,OSPF路由可以按照优先级来计算和泛洪LSA、同步LSDB,从而提高路由收敛速度。当一个LSA满足多个策略优先级时,最高优先级生效。OSPF依次按区域内路由、区域间路由、自治系统外部路由顺序进行LSA计算,该命令可以计算OSPF的收敛优先级。收敛优先级的优先级顺序为:critical>high>medium>low。为了加速处理高优先级的LSA,泛洪过程中,需要按照优先级将相应的LSA分别存放在对应的critical、high、medium和low的队列中。
说明:
该命令仅在公网上配置时有效。
6.17.2 配置接口发送Hello报文的时间间隔
背景信息
Hello报文是最常用的一种报文,其作用为建立和维护邻接关系,周期性的在使能了OSPF的接口上发送。OSPF邻居之间的Hello定时器的时间间隔要保持一致,否则不能协商为邻居。
操作步骤
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入运行OSPF协议的接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf timer hello interval,配置接口发送Hello报文的时间间隔。
缺省情况下,P2P、Broadcast类型接口发送Hello报文的时间间隔的值为10秒;P2MP、NBMA类型接口发送Hello报文的时间间隔的值为30秒;且同一接口上邻居失效时间是Hello间隔时间的4倍。
6.17.3 配置相邻邻居失效的时间
操作步骤
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入运行OSPF协议的接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf timer dead interval,设置相邻邻居失效的时间。
缺省情况下,P2P、Broadcast类型接口的OSPF邻居失效时间为40秒,P2MP、NBMA类型接口的OSPF邻居失效时间为120秒;且同一接口上失效时间是Hello间隔时间的4倍。
说明:
建议配置的失效时间大于20秒。如果失效的时间小于20秒,可能会造成邻居会话的中断。
修改了网络类型后,Hello与Dead定时器都将恢复缺省值。
6.17.4 配置Smart-discover
背景信息
交换机的邻居状态或者多址网络(广播型或NBMA)上的DR、BDR发生变化时,需要等到Hello定时器到时才会向邻居发送Hello报文,影响了设备间建立邻居的速度。通过配置Smart-discover,网络中邻居状态,或者DR、BDR发生变化时,设备不必等到Hello定时器到就可以立刻主动的向邻居发送Hello报文。从而提高建立邻居的速度,达到网络快速收敛的目的。
操作步骤
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入运行OSPF的接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf smart-discover,配置接口的Smart-discover功能。
6.17.5 配置更新LSA的时间间隔
背景信息
OSPF协议规定LSA的更新时间间隔5秒,是为了防止网络连接或者路由频繁动荡引起的过多占用网络带宽和设备资源。
在网络相对稳定、对路由收敛时间要求较高的组网环境中,可以指定LSA的更新时间间隔为0来取消LSA的更新时间间隔,使得拓扑或者路由的变化可以立即通过LSA发布到网络中,从而加快网络中路由的收敛速度。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令lsa-originate-interval { 0 | { intelligent-timer max-interval start-interval hold-interval | other-type interval } * },配置LSA的更新时间间隔。
intelligent-timer表示通过智能定时器设置OSPF Router LSA和Network LSA的更新间隔时间。
max-interval为更新OSPF LSA的最长间隔时间,单位是毫秒。
start-interval为更新OSPF LSA的初始间隔时间,单位是毫秒。
hold-interval为更新OSPF LSA的基数间隔时间,单位是毫秒。
other-type interval表示设置除OSPF Router LSA和Network LSA外LSA的更新间隔时间。
缺省情况下,使能智能定时器intelligent-timer。使能智能定时器后,更新LSA的最长间隔时间的缺省值为5000毫秒、初始间隔时间的缺省值为500毫秒、基数间隔时间的缺省值为1000毫秒(以毫秒为单位的时间间隔),更新LSA的时间间隔方式如下:
- 初次更新LSA的间隔时间由start-interval参数指定。
- 第n(n≥2)次更新LSA的间隔时间为hold-interval×2(n-2)。
- 当hold-interval×2(n-2)达到指定的最长间隔时间max-interval时,OSPF连续三次更新LSA的时间间隔都是最长间隔时间,之后,再次返回步骤3.a,按照初始间隔时间start-interval更新LSA。
6.17.6 配置接收LSA的时间间隔
背景信息
OSPF协议规定LSA的接收时间间隔1秒,是为了防止网络连接或者路由频繁动荡引起的过多占用网络带宽和设备资源。
在网络相对稳定、对路由收敛时间要求较高的组网环境中,可以指定LSA的接收时间间隔为0来取消LSA的接收时间间隔,使得拓扑或者路由的变化可以立即通过LSA发布到网络中,从而加快网络中路由的收敛速度。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令lsa-arrival-interval { interval | intelligent-timer max-interval start-interval hold-interval },配置LSA接收的时间间隔。
interval为LSA被接收的时间间隔,单位是毫秒。
intelligent-timer表示通过智能定时器设置OSPF Router LSA和Network LSA的接收间隔时间。
max-interval为接收OSPF LSA的最长间隔时间,单位是毫秒。
start-interval为接收OSPF LSA的初始间隔时间,单位是毫秒。
hold-interval为接收OSPF LSA的基数间隔时间,单位是毫秒。
在网络相对稳定、对路由收敛时间要求较高的组网环境中,可以指定LSA被接收的时间间隔为0,使得拓扑或者路由的变化能够立即被感知到。
缺省情况下,使能智能定时器intelligent-timer。使能智能定时器后,接收LSA的最长间隔时间的缺省值为1000毫秒、初始间隔时间的缺省值为500毫秒、基数间隔时间的缺省值为500毫秒(以毫秒为单位的时间间隔)。接收LSA的最长间隔时间方式如下:
- 初次接收LSA的间隔时间由start-interval参数指定。
- 第n(n≥2)次接收LSA的间隔时间为hold-interval×2(n-2)。
- 当hold-interval×2(n-2)达到指定的最长间隔时间max-interval时,OSPF连续三次接收LSA的时间间隔都是最长间隔时间,之后,再次返回步骤3.a,按照初始间隔时间start-interval接收LSA。
6.17.7 配置SPF计算的时间间隔
背景信息
当OSPF的链路状态数据库(LSDB)发生改变时,需要重新计算最短路径。如果网络频繁变化,由于不断的计算最短路径,会占用大量系统资源,影响设备的效率。通过配置智能定时器intelligent-timer,设置合理的SPF计算的间隔时间,可以避免占用过多的交换机内存和带宽资源。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令spf-schedule-interval { interval1 | intelligent-timer max-interval start-interval hold-interval | millisecond interval2 },设置SPF计算间隔。
interval1为OSPF的SPF计算间隔时间,单位是秒。
intelligent-timer表示通过智能定时器设置OSPF SPF计算的间隔时间。
max-interval为OSPF SPF计算的最长间隔时间,单位是毫秒。
start-interval为OSPF SPF计算的初始间隔时间,单位是毫秒。
hold-interval为OSPF SPF计算的基数间隔时间,单位是毫秒。
millisecond interval2表示OSPF的SPF计算间隔时间,单位是毫秒。
缺省情况下,使能智能定时器intelligent-timer,SPF计算的最长间隔时间为10000毫秒、初始间隔时间为500毫秒、基数间隔时间为1000毫秒(以毫秒为单位的时间间隔)。
使能智能定时器后:
初次计算SPF的间隔时间由*start-interval*参数指定。
第n(n≥2)次计算SPF的间隔时间为hold-interval×2(n-2)。
当hold-interval×2(n-2)达到指定的最长间隔时间max-interval时,OSPF连续三次计算SPF的时间间隔都是最长间隔时间,之后,再次返回步骤3.a,按照初始间隔时间start-interval计算SPF。
6.17.8 检查配置结果
前提条件
已经完成调整优化OSPF网络的所有配置。
操作步骤
- 使用display ospf [ process-id ] brief命令查看OSPF的概要信息。
6.18 配置OSPF GR
配置OSPF GR可以避免流量中断和主备板切换带来的路由震荡。
应用场景
对于OSPF协议,为了避免流量中断和主备板切换带来的路由震荡,可以使能OSPF协议的GR特性。
OSPF通过GR重启后,Restarter交换机和Helper交换机之间重新建立邻居关系,交换路由信息并同步数据库,更新路由表和转发表,从而实现OSPF快速收敛,保持网络拓扑稳定。
说明:
在实际应用中,为了实现业务转发不受主板故障的影响,通常在双主板的硬件环境下配置OSPF GR才有意义。
前置任务
在配置OSPF GR特性之前,需完成以下任务:
- 配置接口的网络层地址,使相邻节点之间网络层可达。
- 配置OSPF的基本功能。
6.18.1 使能OSPF的opauqe-LSA特性
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF视图。
执行命令opaque-capability enable,使能opaque-LSA特性。
因为OSPF中通过Type-9类LSA对OSPF GR支持,所以需要首先使能OSPF的opauqe-LSA特性。
- 执行命令graceful-restart,使能OSPF GR特性。
6.18.2 (可选)配置Restarter端GR的会话参数
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF视图。
执行命令graceful-restart [ period period | planned-only | partial ] *,配置Restarter端GR的会话参数。
- period用来配置Restarter端GR的周期。缺省情况下,重启的时间为120秒。
- planned-only用来配置Restarter只支持Planned GR。缺省情况下,Restarter支持Planned GR和Unplanned GR。
- partial用来配置Restarter支持Partial GR。缺省情况下,Restarter支持Totally GR。
6.18.3 (可选)配置Helper端GR的会话参数
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [process-id ],进入OSPF视图。
执行命令graceful-restart helper-role { [ { ip-prefix ip-prefix-name | acl-number acl-number | acl-name acl-name } | ignore-external-lsa | planned-only ] * | never },配置Helper端GR的会话参数。
- acl和ip-prefix参数用来配置过滤策略,只有通过过滤器策略后才能进入Helper模式。
- ignore-external-lsa用来配置Helper不对自治系统外部的LSA(AS-external LSA)进行检查。缺省情况下,执行外部LSA检查。
- planned-only用来配置Helper只支持Planned GR。缺省情况下,Helper支持Planned GR和Unplanned GR。
- never用来配置交换机不支持Helper模式。
6.18.4 检查配置结果
前提条件
已经完成OSPF GR的所有配置。
操作步骤
- 使用display ospf [ process-id ] graceful-restart [ verbose ]命令查看OSPF GR信息。
6.19 提高OSPF网络的稳定性
稳定的OSPF网络意味路由振荡较少、设备性能正常,表现出的网络性能较好。
应用环境
通过设置时间间隔参数,可以减少网络中不必要的报文数量,降低设备负荷,从而提升网络性能。
前置任务
在提高OSPF网络的稳定性之前,需完成以下任务:
配置流程
以下配置任务(不含检查配置结果),根据应用环境选择其中一项或几项进行配置。
6.19.1 配置OSPF的协议优先级
背景信息
由于交换机上可能同时运行多个动态路由协议,就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级。在不同协议发现同一条路由时,优先级高的路由将被优选。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令preference [ ase ] { preference | route-policy route-policy-name } *,配置OSPF协议的优先级。
ase表示设置AS-External路由的优先级。
preference表示OSPF协议路由的优先级。优先级的值越小,其实际的优先程度越高。
route-policy route-policy-name表示对特定的路由通过路由策略设置优先级。
缺省情况下,OSPF路由的优先级为10。当指定ASE时,缺省优先级为150。
6.19.2 配置接口传送LSA的延迟时间
操作步骤
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入运行OSPF的接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf trans-delay interval,配置接口传送LSA的延迟时间。
缺省情况下,传输延迟时间为1秒。
6.19.3 配置邻接交换机重传LSA的间隔
背景信息
当一台交换机向它的邻居发送一条LSA后,需要等到对方的确认报文。若在重传间隔时间内没有收到对方的确认报文,就会向邻居重传这条LSA。
操作步骤
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入运行OSPF的接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 执行命令ospf timer retransmit interval,设置邻接交换机重传LSA的间隔。
缺省情况下,重传间隔时间为5秒。
说明:
相邻交换机重传LSA时间间隔的值不要设置得太小,否则将会引起不必要的重传。通常应该大于一个报文在两台交换机之间传送一个来回的时间。
6.19.4 配置Stub路由器
背景信息
配置Stub路由器是一种特殊的路由选路,配置了stub router的路径不被优选。实现方法是将度量值设为最大(65535),尽量避免数据从此交换机转发。用于保护此交换机链路,通常使用在升级等维护操作的场景。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令stub-router [ on-startup [ interval ] ],配置Stub交换机。
缺省情况下,没有交换机为Stub路由器。
如果配置了Stub路由器,缺省情况下,交换机保持为Stub路由器的时间间隔是500秒。
说明:
通过此命令配置的Stub路由器与Stub区域里的交换机没有必然联系。
6.19.5 禁止OSPF接口发送和接收协议报文
背景信息
当用户希望本地OSPF路由信息不被其他网络中的设备获得,并且本地设备不接收网络中其他设备发布的路由更新信息的时候,可以通过配置禁止OSPF接口发送和接收协议报文来实现。
禁止OSPF接口发送和接收协议报文后,该接口的直连路由仍可以发布出去,但接口的Hello报文将被阻塞,无法通过此接口与相邻设备建立邻居关系。这样可以增强OSPF的组网适应能力,减少系统资源的消耗。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令silent-interface { all | interface-type interface-number },禁止OSPF接口发送和接收协议报文。
缺省情况下,允许OSPF接口发送和接收协议报文。
可以在不同的OSPF进程中,禁止同一个接口发送和接收OSPF报文,但silent-interface命令只对本进程已经使能的OSPF接口起作用,对其它进程的接口不起作用。
6.19.6 关闭OSPF异常老化触发的主备倒换功能
OSPF异常老化触发的主备倒换功能默认使能,如果需要关闭此功能,请配置此任务。
背景信息
如果设备时钟加快,老化计时器异常超时,将会导致本端设备触发异常清除对端设备的所有Router LSA,造成大规模路由震荡和业务中断。为了避免此类情况发生,设备自动使能OSPF异常老化触发的主备倒换功能,当满足以下公式时,触发主备倒换来恢复网络连通和业务流量。
计算公式为:(异常清除的Router LSA的数量 / Router LSA总数) * 100% ≥ 80%(这里的Router LSA指的是对端设备发到本端设备的Router LSA)。
如果需要关闭此功能,请执行命令ospf maxage-lsa auto-protect disable。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf maxage-lsa auto-protect disable,关闭OSPF异常老化触发的主备倒换功能。
缺省情况下,OSPF异常老化触发的主备倒换功能处于使能状态。
6.19.7 检查配置结果
前提条件
已经完成提高OSPF网络的稳定性的所有配置。
操作步骤
- 使用display ospf [ process-id ] brief命令查看OSPF的概要信息。
- 使用display ip routing-table命令查看IP路由表信息。
6.20 提高OSPF网络的安全性
应用环境
在安全性较高的网络中,可以通过配置OSPF验证特性和GTSM机制来提高OSPF网络的安全性。
说明:
GTSM只支持单播地址,因此在OSPF中GTSM的作用范围主要是虚连接和伪连接。
前置任务
在提高OSPF网络的安全性之前,需完成以下任务:
- 配置接口的网络层地址,使各相邻节点网络层可达。
- 6.8 配置OSPF的基本功能。
配置流程
以下配置任务(不含检查配置结果),根据应用环境选择其中一项或几项进行配置。
6.20.1 配置OSPF GTSM功能
背景信息
配置GTSM功能,通过检测IP报文头中的TTL值是否在一个预先定义好的特定范围内来对交换机进行保护,增强系统的安全性。
应用GTSM功能,需要在OSPF连接的两端都使能GTSM。
被检测的报文的TTL值有效范围为 [ 255–hops+1, 255 ]。
GTSM只会对匹配GTSM策略的报文进行TTL检查。对于未匹配策略的报文,可以设置为通过或丢弃。如果配置GTSM缺省报文动作为丢弃,就需要在GTSM中配置所有可能的交换机连接情况,没有配置的交换机发送的报文将被丢弃,无法建立连接。因此,在保证安全性的同时会损失一些易用性。
对于丢弃的报文,可以通过LOG信息开关,控制是否对报文被丢弃的情况记录日志,以方便故障的定位。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf valid-ttl-hops hops [ nonstandard-multicast ] [ vpn-instance vpn-instance-name ],配置OSPF GTSM功能。
说明:
ospf valid-ttl-hops命令有两个功能,一是使能OSPF GTSM特性,二是配置需要检测的TTL值。vpn-instance参数只对后一个功能有效。因此,如果仅配置私网策略或仅配置公网策略,建议将未匹配GTSM策略的报文的缺省动作设置为pass,以免其他实例的OSPF报文被错误地丢弃。
- (可选)执行命令gtsm default-action { drop | pass },设置未匹配GTSM策略的报文的缺省动作。
缺省情况下,未匹配GTSM策略的报文可以通过过滤。
说明:
如果仅仅配置了缺省动作,但没有配置GTSM策略时,GTSM不起作用。
- (可选)执行命令gtsm log drop-packet all,打开设备的LOG信息的开关,在设备GTSM丢弃报文时记录LOG信息。
6.20.2 区域验证方式
背景信息
使用区域验证时,一个区域中所有的交换机在该区域下的验证模式和口令必须一致。例如,在Area0内所有交换机上配置验证模式为简单验证,口令为abc。
注意:
在配置区域认证模式时,如果使用plain选项,密码将以明文形式保存在配置文件中,存在安全隐患。建议使用cipher选项,将密码加密保存。
Simple、MD5和HMAC-MD5密文验证模式存在安全风险,推荐使用HMAC-SHA256密文验证模式。
操作步骤
执行命令system-view,进入系统视图。
执行命令ospf [ process-id ],进入OSPF进程视图。
执行命令area area-id,进入OSPF区域视图。
请根据需求,配置OSPF区域的验证模式。
执行命令authentication-mode simple [ plain plain-text | [ cipher ] cipher-text ],配置OSPF区域的验证模式(简单验证)。
- plain表示明文类型的认证密码。
- cipher表示密文类型的认证密码。对于MD5/HMAC-MD5验证模式,当此参数缺省时,默认为cipher类型。
执行命令authentication-mode { md5 | hmac-md5 | hmac-sha256 } [ key-id { plain plain-text | [ cipher ] cipher-text } ],配置OSPF区域的验证模式。
- md5表示使用MD5密文验证模式。
- hmac-md5表示使用hmac-md5密文验证模式。
- hmac-sha256表示使用hmac-sha256密文验证模式
- key-id表示密文验证的验证字标识符。
执行命令authentication-mode keychain keychain-name,配置OSPF区域的Keychain验证模式。
说明:
使用Keychain验证模式,需要在系统视图下配置Keychain信息。必须保证本端ActiveSendKey和对端ActiveRecvKey的**key-id**、**algorithm**、**key-string**相同,才能建立OSPF邻居。
仅S5720EI、S5720HI、S6720S-EI和S6720EI支持**keychain** *keychain-name*参数。
6.20.3 接口验证方式
背景信息
接口验证方式用于在相邻的交换机之间设置验证模式和口令,优先级高于区域验证方式。
注意:
在配置接口认证模式时,如果使用plain选项,密码将以明文形式保存在配置文件中,存在安全隐患。建议使用cipher选项,将密码加密保存。
Simple、MD5和HMAC-MD5验证模式存在安全风险,推荐使用HMAC-SHA256验证模式。
操作步骤
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入运行OSPF的接口视图。
(可选)对于以太网接口,执行命令undo portswitch,配置接口切换到三层模式。
缺省情况下,以太网接口处于二层模式。
说明:
仅S5720HI、S5720EI、S6720EI和S6720S-EI支持二层模式与三层模式切换。
- 请根据需求,配置接口验证方式。
执行命令ospf authentication-mode simple [ plain plain-text | [ cipher ] cipher-text ],配置OSPF接口的验证模式(简单验证)。
- simple表示使用简单验证模式。
- plain表示明文类型的认证密码。
- cipher表示密文类型的认证密码。对于MD5或者HMAC-MD5验证模式,当此参数缺省时,默认为cipher类型。
执行命令ospf authentication-mode { md5 | hmac-md5 | hmac-sha256 } [ key-id { plain plain-text | [ cipher ] cipher-text } ],配置OSPF接口的验证模式。
- md5表示使用MD5密文验证模式。
- hmac-md5表示使用hmac-md5密文验证模式。
- hmac-sha256表示使用hmac-sha256密文验证模式
执行命令ospf authentication-mode null,不对OSPF接口进行验证。
执行命令ospf authentication-mode keychain keychain-name,配置OSPF区域的Keychain验证模式。
说明:
使用Keychain验证模式,需要在系统视图下配置Keychain信息。必须保证本端ActiveSendKey和对端ActiveRecvKey的**key-id**、**algorithm**、**key-string**相同,才能建立OSPF邻居。
仅S5720EI、S5720HI、S6720S-EI和S6720EI支持**keychain** *keychain-name*参数。
6.20.4 检查配置结果
前提条件
已经完成提高OSPF网络的安全性的所有配置。
操作步骤
- 使用display gtsm statistics { slot-id | all }命令查看GTSM的统计信息。
- 使用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 ] error [ lsa ]命令查看OSPF的错误信息
6.21 配置OSPF邻居震荡抑制
配置OSPF邻居震荡抑制功能,通过延迟邻居建立或调整链路开销为最大值的方法达到抑制震荡的目的。
应用环境
如果承载OSPF业务的接口状态在Up和Down之间切换,就会引起邻居状态的频繁震荡。此时,OSPF会快速发送Hello报文重新建立邻居,同步数据库LSDB,触发路由计算,会造成大量报文交互,影响现有邻居的稳定性,对OSPF业务造成较大影响,同时也会影响依赖OSPF的其他业务(如:LDP、BGP)的正常运行。为了解决这个问题,OSPF实现了邻居震荡抑制功能,即在邻居频繁震荡时,启动震荡抑制,实现邻居延迟建立,或实现业务流量延迟经过频繁震荡的链路,达到抑制震荡的目的。
说明:
以下步骤均为可选步骤,请根据实际情况选择配置。
前置任务
在配置OSPF邻居震荡抑制之前,需完成以下任务:
- 配置接口的网络层地址,使相邻节点之间网络层可达。
- 6.8 配置OSPF的基本功能。
操作步骤
- 执行命令system-view,进入系统视图。
缺省情况下,OSPF邻居震荡抑制功能处于全局使能状态,执行suppress-flapping peer disable命令可以去使能此功能。
- 执行命令interface interface-type interface-number,进入接口视图。
缺省情况下,OSPF邻居震荡抑制功能处于全局使能状态,即进程中所有接口的OSPF邻居震荡抑制功能处于使能状态,如果需要在某一指定接口去使能OSPF邻居震荡抑制功能,执行ospf suppress-flapping peer disable命令可以在指定接口去使能OSPF邻居震荡抑制功能。
- 执行命令ospf suppress-flapping peer hold-down interval,配置震荡抑制模式为Hold-down模式,并设置抑制持续时间。
OSPF邻居震荡抑制分为Hold-down和Hold-max-cost两种模式:
Hold-down模式:针对邻居建立过程中的频繁泛洪和拓扑变化的问题,在一段时间内禁止该邻居重新建立,避免频繁的数据库同步和大量的报文交互。
Hold-max-cost模式:针对用户业务流量频繁切换的问题,在一段时间内将链路开销值设置为最大值Max-cost(65535),避免用户的业务流量经过频繁震荡的链路。
Hold-down模式和Hold-max-cost模式可以叠加使用,同时生效时,先进入Hold-down模式,待Hold-down模式退出后,再进入Hold-max-cost模式。
缺省情况下,Hold-down模式处于去使能状态,Hold-max-cost模式处于使能状态。
执行ospf suppress-flapping peer hold-max-cost disable命令可以取消Hold-max-cost邻居震荡抑制模式。
- 执行命令ospf suppress-flapping peer { detecting-interval detecting-interval | threshold threshold | resume-interval resume-interval } *,配置OSPF邻居震荡抑制的检测参数。
OSPF接口启动一个flapping-count计数器,相邻两次邻居状态由Full切换为非Full的时间间隔小于detecting-interval时,设备识别为一次有效震荡事件,flapping-count计数加1。flapping-count(有效震荡事件次数)大于等于threshold时,进入震荡抑制阶段。相邻两次邻居状态由Full切换为非Full的时间间隔大于resume-interval,flapping-count清0。
说明:
resume-interval必须大于detecting-interval。
根据网络的实际情况,可以在指定接口设置OSPF邻居震荡抑制的检测参数。推荐使用缺省值,缺省情况下,指定接口的OSPF邻居震荡抑制的震荡检测门限为60秒,震荡抑制门限为10,震荡检测恢复门限为120秒。
执行命令quit,返回系统视图。
执行命令quit,返回用户视图。
执行命令reset ospf process-id suppress-flapping peer [ interface-type interface-number ] [ notify-peer ],强制OSPF接口退出邻居震荡抑制阶段。
说明:
退出邻居震荡抑制阶段有以下几种方式:
- 抑制定时器超时。
- 复位OSPF进程。
- 执行suppress-flapping peer disable(OSPF)命令全局去使能OSPF邻居震荡抑制功能。
- 执行reset ospf suppress-flapping peer命令强制退出震荡抑制阶段。
检查配置结果
执行命令display ospf [ process-id ] interface interface-type interface-number verbose,可以查看OSPF邻居震荡抑制的状态。
1 | <HUAWEI> display ospf interface vlanif 100 verbose |
通过显示信息中Suppress flapping peer字段,可以看出OSPF邻居震荡抑制处于enable模式,以及震荡抑制的开始时间和震荡抑制退出的倒计时时间。
6.22 配置OSPF网管功能
OSPF同时支持网管功能,可以配置OSPF MIB与某一进程绑定,以及发送Trap消息和日志功能。
前置任务
在配置OSPF的网管功能之前,需要完成以下任务:
- 配置接口的网络层地址,使相邻节点网络层可达。
- 配置OSPF的基本功能。
配置流程
以下配置任务(不含检查配置结果),根据应用环境选择其中一项或几项进行配置。
6.22.1 配置OSPF MIB绑定
背景信息
当启动了多个OSPF进程时,可以配置OSPF MIB对哪个进程进行处理,即绑定在哪个进程。
请在运行OSPF协议的交换机上进行以下配置。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令ospf mib-binding process-id,配置OSPF MIB绑定。
6.22.2 配置OSPF TRAP功能
操作步骤
执行命令system-view,进入系统视图。
执行命令snmp-agent trap enable feature-name ospf [ trap-name { ospfifauthfailure | ospfifconfigerror | ospfifrxbadpacket | ospfifstatechange | ospflsdbapproachingoverflow | ospflsdboverflow | ospfmaxagelsa | ospfnbrrestarthelperstatuschange | ospfnbrstatechange | ospfnssatranslatorstatuschange | ospforiginatelsa | ospfrestartstatuschange | ospftxretransmit | ospfvirtifauthfailure | ospfvirtifconfigerror | ospfvirtifrxbadpacket | ospfvirtifstatechange | ospfvirtiftxretransmit | ospfvirtnbrrestarthelperstatuschange | ospfvirtnbrstatechange } ],打开OSPF模块的告警开关。
如果只打开某个或几个事件的告警开关时,请选择trap-name。
6.22.3 配置OSPF日志信息功能
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令ospf [ process-id ],进入OSPF进程视图。
- 执行命令enable log [ config | error | state | snmp-trap ],使能日志信息。
6.22.4 检查配置结果
前提条件
已经完成OSPF网管功能的所有配置。
操作步骤
- 使用display ospf [ process-id ] brief命令查看OSPF MIB绑定信息。
- 使用display snmp-agent trap feature-name ospf all命令查看OSPF模块的所有告警信息。
6.23 维护OSPF
维护OSPF,包括清除和复位OSPF。
6.23.1 清除OSPF
背景信息
注意:
清除OSPF的信息后,以前的信息将无法恢复,务必仔细确认。
在确认需要清除OSPF的运行信息后,请在用户视图下执行以下命令。
操作步骤
- 执行reset ospf [ process-id ] counters [ neighbor [ interface-type interface-number ] [ router-id ] ]命令清除OSPF计数器。
- counters表示用来将OSPF计数器清零。
- neighbor表示指定接口上邻居的信息。
执行reset ospf [ process-id ] redistribution命令重新引入路由。
执行reset gtsm statistics all命令清除设备上的GTSM统计信息。
6.23.2 复位OSPF
背景信息
注意:
复位OSPF连接(执行reset ospf命令)会导致交换机之间的OSPF邻接关系中断。务必仔细确认是否必须执行复位OSPF连接的操作。
如果需要复位OSPF连接,可在用户视图下选择执行以下命令。
操作步骤
- 在用户视图下执行reset ospf [ process-id ] process [ flush-waiting-timer time | graceful-restart ]命令重启OSPF进程。
6.24 配置举例
介绍OSPF配置举例。请结合配置流程图了解配置过程。配置示例中包括组网需求、配置思路等。
6.24.1 配置OSPF基本功能示例
组网需求
如图6-69所示,网络中有三台交换机。现在需要实现三台交换机之间能够互通,且以后能依据SwitchA和SwitchB为主要的业务设备来继续扩展整个网络。
图6-69 配置OSPF基本功能组网图
配置思路
采用如下的思路配置OSPF基本功能:
- 在各交换机的VLANIF接口上配置IP地址并配置各接口所属VLAN,实现网段内的互通。
- 在各交换机上配置OSPF基本功能,并且以SwitchA为ABR将OSPF网络划分为Area0和Area1两个区域,实现后续以SwitchA和SwitchB所在区域为骨干区域来扩展整个OSPF网络。
操作步骤
- 配置各接口所属的VLAN
# 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。
1 | <HUAWEI> system-view |
- 配置各VLANIF接口的IP地址
# 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。
1 | [SwitchA] interface vlanif 10 |
- 配置OSPF基本功能
# 配置SwitchA。
1 | [SwitchA] ospf 1 router-id 10.1.1.1 |
# 配置SwitchB。
1 | [SwitchB] ospf 1 router-id 10.2.2.2 |
# 配置SwitchC。
1 | [SwitchC] ospf 1 router-id 10.3.3.3 |
- 验证配置结果
# 查看SwitchA的OSPF邻居。
1 | <SwitchA> display ospf peer |
# 查看SwitchC的OSPF路由信息。
1 | <SwitchC> display ospf routing |
由以上回显可以看出,SwitchC有到192.168.0.0/24网段的路由,且此路由被标识为区域间路由。
# 查看SwitchB的路由表,并使用Ping测试SwitchB和SwitchC的连通性。
1 | <SwitchB> display ospf routing |
由以上回显可以看出,SwitchB有到192.168.1.0/24网段的路由,且此路由被标识为区域间路由。
# 在SwitchB上使用Ping测试SwitchB和SwitchC之间的连通性。
1 | <SwitchB> ping 192.168.1.2 |
配置文件
SwitchA的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#
sysname SwitchA
#
vlan batch 10 20
#
interface Vlanif10
ip address 192.168.0.1 255.255.255.0
#
interface Vlanif20
ip address 192.168.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 20
#
ospf 1 router-id 10.1.1.1
area 0.0.0.0
network 192.168.0.0 0.0.0.255
area 0.0.0.1
network 192.168.1.0 0.0.0.255
#
returnSwitchB的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#
sysname SwitchB
#
vlan batch 10
#
interface Vlanif10
ip address 192.168.0.2 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
ospf 1 router-id 10.2.2.2
area 0.0.0.0
network 192.168.0.0 0.0.0.255
#
returnSwitchC的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#
sysname SwitchC
#
vlan batch 20
#
interface Vlanif20
ip address 192.168.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 20
#
ospf 1 router-id 10.3.3.3
area 0.0.0.1
network 192.168.1.0 0.0.0.255
#
return
6.24.2 配置OSPF的DR选择示例
组网需求
如图6-70所示,部署OSPF协议的网络中有五台交换机,其中Switch作为二层交换机连接其他运行OSPF协议的四台交换机。由于之前四台设备之间缺省选举的DR不符合网络需求,现在需要让SwitchA被选举为DR来和OSPF网络其他设备交互LSA信息,而SwitchC则作为SwitchA的备份。而SwitchB由于其他业务需要,只能让它通过DR来与OSPF网络其他设备交互LSA信息。
图6-70 配置OSPF的DR选择组网图
配置思路
采用如下的思路配置OSPF的DR选择:
- 在各交换机上配置OSPF的基本功能,查看四台交换机之间缺省的DR的选举情况。
- 配置SwitchA对应接口的DR优先级为100,SwitchB对应接口的DR优先级为0,SwitchC对应接口的DR优先级为2,使得SwitchA被选举为DR,SwitchC被选举为BDR,SwitchB永远无法成为DR或BDR,而SwitchD采用缺省DR优先级,维持原状不变。
操作步骤
- 配置各接口所属的VLAN
# 配置SwitchA。Switch、SwitchB、SwitchC和SwitchD的配置与SwitchA类似。
1 | <HUAWEI> system-view |
- 配置各VLANIF接口的IP地址
# 配置SwitchA。SwitchB、SwitchC和SwitchD的配置与SwitchA类似。
1 | [SwitchA] interface vlanif 10 |
- 配置OSPF基本功能
# 配置SwitchA。
1 | [SwitchA] ospf 1 router-id 10.1.1.1 |
# 配置SwitchB。
1 | [SwitchB] ospf 1 router-id 10.2.2.2 |
# 配置SwitchC。
1 | [SwitchC] ospf 1 router-id 10.3.3.3 |
# 配置SwitchD。
1 | [SwitchD] ospf 1 router-id 10.4.4.4 |
# SwitchA上查看OSPF邻居的信息。
1 | [SwitchA] display ospf peer |
从以上回显中可以看到在缺省情况下SwitchD为DR,SwitchC为BDR。这是因为当DR优先级相同时,Router-ID高的被选举为DR。
- 配置交换机接口上的DR优先级
# 配置SwitchA。
1 | [SwitchA] interface vlanif 10 |
# 配置SwitchB。
1 | [SwitchB] interface vlanif 10 |
# 配置SwitchC。
1 | [SwitchC] interface vlanif 10 |
# 在SwitchD上查看OSPF邻居的信息。
1 | <SwitchD> display ospf peer |
通过以上回显信息发现四台交换机之间DR的选举情况并没有改变。这是因为如果DR、BDR已经选择完毕,当一台新设备加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR,只有重启OSPF进程之后才会重新选举DR和BDR。
- 重启OSPF进程
# 在各交换机的用户视图下,同时执行命令reset ospf 1 process,以重启OSPF进程。同时重启OSPF进程是为了让四台交换机都参与DR和BDR的选举过程。
# 重启SwitchA
1 | <SwitchA> reset ospf 1 process |
# 重启SwitchB
1 | <SwitchB> reset ospf 1 process |
# 重启SwitchC
1 | <SwitchC> reset ospf 1 process |
# 重启SwitchD
1 | <SwitchD> reset ospf 1 process |
- 验证配置结果
# 在SwitchD上查看OSPF邻居信息。
1 | <SwitchD> display ospf peer |
1 |
从以上回显中可以看到SwitchA被选举为DR,SwitchC为BDR。而SwitchD与SwitchB之间的邻居状态为2-Way,这说明两者既不是DR,也不是BDR,即它们之间不需要交换LSA信息。
配置文件
Switch的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#
sysname Switch
#
vlan batch 10
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/4
port link-type trunk
port trunk allow-pass vlan 10
#
returnSwitchA的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#
sysname SwitchA
#
vlan batch 10
#
interface Vlanif10
ip address 192.168.1.1 255.255.255.0
ospf dr-priority 100
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
ospf 1 router-id 10.1.1.1
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#
returnSwitchB的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#
sysname SwitchB
#
vlan batch 10
#
interface Vlanif10
ip address 192.168.1.2 255.255.255.0
ospf dr-priority 0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
ospf 1 router-id 10.2.2.2
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#
returnSwitchC的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#
sysname SwitchC
#
vlan batch 10
#
interface Vlanif10
ip address 192.168.1.3 255.255.255.0
ospf dr-priority 2
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
ospf 1 router-id 10.3.3.3
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#
returnSwitchD的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#
sysname SwitchD
#
vlan batch 10
#
interface Vlanif10
ip address 192.168.1.4 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
ospf 1 router-id 10.4.4.4
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#
return
6.24.3 配置OSPF的Stub区域示例
组网需求
如图6-71所示,三台交换机之间运行OSPF协议,整个OSPF网络被划分为Area0和Area1两个区域,其中SwitchB作为ASBR与OSPF外部网络实现互通。现要求在不影响通信的情况下减少SwitchC上OSPF路由表的规模。
图6-71 配置OSPF Stub区域组网图
配置思路
采用如下的思路配置OSPF Stub区域:
- 在各交换机上配置OSPF基本功能,实现OSPF网络的基本互通。
- 在SwitchB上配置静态路由,并引入到OSPF路由表中,实现OSPF网络到外部网络路由可达。
- 配置Area1为Stub区域,初步减少SwitchC上OSPF路由表的规模。
- 在Area1的ABR(SwitchA)上配置禁止向Stub区域通告Type3 LSA,即将Area1配置为Totally Stub区域,达到最大限度减少SwitchC上OSPF路由表规模的目的。
操作步骤
- 配置各接口所属的VLAN
# 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。
1 | <HUAWEI> system-view |
- 配置各VLANIF接口的IP地址
# 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。
1 | [SwitchA] interface vlanif 10 |
- 配置OSPF基本功能
# 配置SwitchA。
1 | [SwitchA] ospf 1 router-id 10.1.1.1 |
# 配置SwitchB。
1 | [SwitchB] ospf 1 router-id 10.2.2.2 |
# 配置SwitchC。
1 | [SwitchC] ospf 1 router-id 10.3.3.3 |
- 配置SwitchB引入静态路由
1 | [SwitchB] ip route-static 10.0.0.0 8 null 0 |
# 查看SwitchC的OSPF路由表信息,可以看到OSPF路由表中存在AS外部的路由。
1 | [SwitchC] display ospf routing |
- 配置Area1为Stub区域
# 配置SwitchA。
1 | [SwitchA] ospf 1 |
# 配置SwitchC。
1 | [SwitchC] ospf 1 |
# 查看SwitchC的OSPF路由表信息,发现此时AS外部的路由已经消失,但是多了一条通往区域外部的缺省路由。
1 | [SwitchC] display ospf routing |
- 配置Area1为Totally Stub区域
1 | [SwitchA] ospf 1 |
- 验证配置结果
# 查看SwitchC的OSPF路由表,发现目的地址为192.168.0.0/24的路由也消失了,仅保留了区域内的OSPF路由以及一条通往区域外部缺省路由。
1 | [SwitchC] display ospf routing |
配置文件
SwitchA的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#
sysname SwitchA
#
vlan batch 10 20
#
interface Vlanif10
ip address 192.168.0.1 255.255.255.0
#
interface Vlanif20
ip address 192.168.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 20
#
ospf 1 router-id 10.1.1.1
area 0.0.0.0
network 192.168.0.0 0.0.0.255
area 0.0.0.1
network 192.168.1.0 0.0.0.255
stub no-summary
#
returnSwitchB的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#
sysname SwitchB
#
vlan batch 10
#
interface Vlanif10
ip address 192.168.0.2 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
ospf 1 router-id 10.2.2.2
import-route static type 1
area 0.0.0.0
network 192.168.0.0 0.0.0.255
#
ip route-static 10.0.0.0 255.0.0.0 NULL0
#
returnSwitchC的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#
sysname SwitchC
#
vlan batch 20
#
interface Vlanif20
ip address 192.168.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 20
#
ospf 1 router-id 10.3.3.3
area 0.0.0.1
network 192.168.1.0 0.0.0.255
stub
#
return
6.24.4 配置OSPF的NSSA区域示例
组网需求
如图6-72所示,四台交换机都运行OSPF,且整个OSPF网络被划分为Area0和Area1两个区域。现要求Area1内的设备不接收其他OSPF区域引入的外部路由信息,而Area1内的交换机则通过区域内的设备引入外部路由来与外部网络进行通信。同时,由于SwitchB承载的业务较多,所以需要指定SwitchA作为转换路由器将Type7 LSA转换为Type5 LSA发送到其他OSPF区域。
说明:
请确保该场景下互联接口的STP处于未使能状态。因为在使能STP的环形网络中,如果用交换机的VLANIF接口构建三层网络,会导致某个端口被阻塞,从而导致三层业务不能正常运行。
图6-72 配置OSPF NSSA区域组网图
配置思路
采用如下的思路配置OSPF的NSSA区域:
- 在各交换机上配置OSPF基本功能,实现OSPF网络的基本互通。
- 配置Area1为NSSA区域,并在SwitchD上配置静态路由,并引入到OSPF路由表中,实现Area1内的交换机仅能通过SwitchD来与外部网络进行通信。
- 配置SwitchA为转换路由器,实现指定SwitchA将Type7 LSA转换为Type5 LSA发送到其他OSPF区域。
操作步骤
- 配置各接口所属的VLAN
# 配置SwitchA。SwitchB、SwitchC和SwitchD的配置与SwitchA类似。
1 | <HUAWEI> system-view |
- 配置各VLANIF接口的IP地址
# 配置SwitchA。SwitchB、SwitchC和SwitchD的配置与SwitchA类似。
1 | [SwitchA] interface vlanif 10 |
- 配置OSPF基本功能
# 配置SwitchA。
1 | [SwitchA] ospf 1 router-id 10.1.1.1 |
# 配置SwitchB。
1 | [SwitchB] ospf 1 router-id 10.2.2.2 |
# 配置SwitchC。
1 | [SwitchC] ospf 1 router-id 10.3.3.3 |
# 配置SwitchD。
1 | [SwitchD] ospf 1 router-id 10.4.4.4 |
- 配置Area1区域为NSSA区域
# 配置SwitchA。
1 | [SwitchA] ospf 1 |
# 配置SwitchB。
1 | [SwitchB] ospf 1 |
# 配置SwitchD。
1 | [SwitchD] ospf 1 |
- 配置SwitchD引入静态路由
1 | [SwitchD] ip route-static 172.16.0.0 16 null 0 |
# 查看SwitchC的OSPF路由表。
1 | [SwitchC] display ospf routing |
从以上回显信息可以看出NSSA区域引入的AS外部路由是通过SwitchB向其他区域发布的,即SwitchB将Type7 LSA转换成了Type5 LSA。这是因为OSPF会选举Router ID较大的ABR作为转换路由器。
- 配置SwitchA为转换路由器
1 | [SwitchA] ospf 1 |
- 验证配置结果
# 等待40秒后,查看SwitchC的OSPF路由表。
1 | [SwitchC] display ospf routing |
从以上回显信息可以看出NSSA区域引入的AS外部路由是通过SwitchA向其他区域发布的,即SwitchA成了转换路由器。
说明:
缺省情况下,新指定的转换路由器会和以前的转换路由器共同承担40s转换路由器的角色,过了40s后,只有新指定的转换路由器会继续完成转换路由器的工作。
配置文件
SwitchA的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#
sysname SwitchA
#
vlan batch 10 30
#
interface Vlanif10
ip address 192.168.1.1 255.255.255.0
#
interface Vlanif30
ip address 192.168.3.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 30
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 10
#
ospf 1 router-id 10.1.1.1
area 0.0.0.0
network 192.168.1.0 0.0.0.255
area 0.0.0.1
network 192.168.3.0 0.0.0.255
nssa translator-always
#
returnSwitchB的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#
sysname SwitchB
#
vlan batch 20 40
#
interface Vlanif20
ip address 192.168.2.1 255.255.255.0
#
interface Vlanif40
ip address 192.168.4.2 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 40
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 20
#
ospf 1 router-id 10.2.2.2
area 0.0.0.0
network 192.168.2.0 0.0.0.255
area 0.0.0.1
network 192.168.4.0 0.0.0.255
nssa
#
returnSwitchC的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#
sysname SwitchC
#
vlan batch 10 20
#
interface Vlanif10
ip address 192.168.1.2 255.255.255.0
#
interface Vlanif20
ip address 192.168.2.2 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 20
#
ospf 1 router-id 10.3.3.3
area 0.0.0.0
network 192.168.1.0 0.0.0.255
network 192.168.2.0 0.0.0.255
#
returnSwitchD的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29#
sysname SwitchD
#
vlan batch 30 40
#
interface Vlanif30
ip address 192.168.3.2 255.255.255.0
#
interface Vlanif40
ip address 192.168.4.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 30
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 40
#
ospf 1 router-id 10.4.4.4
import-route static
area 0.0.0.1
network 192.168.3.0 0.0.0.255
network 192.168.4.0 0.0.0.255
nssa
#
ip route-static 172.16.0.0 255.255.0.0 NULL0
#
return
6.24.5 配置OSPF负载分担示例
组网需求
如图6-73所示,OSPF网络中有四台交换机,同属于区域0。要求配置负载分担,使得SwitchA流量,可以分别通过SwitchB和SwitchC送到SwitchD。
说明:
请确保该场景下互联接口的STP处于未使能状态。因为在使能STP的环形网络中,如果用交换机的VLANIF接口构建三层网络,会导致某个端口被阻塞,从而导致三层业务不能正常运行。
图6-73 配置OSPF负载分担组网图
配置思路
采用如下的思路配置OSPF的负载分担:
- 在各交换机上配置OSPF基本功能,实现OSPF网络的基本互通。
- 在SwitchA配置负载分担,实现负载均衡的目的。
操作步骤
- 配置各接口所属VLAN
# 配置SwitchA。SwitchB、SwitchC和SwitchD的配置与SwitchA类似。
1 | <HUAWEI> system-view |
- 配置各VLANIF接口的IP地址
# 配置SwitchA。SwitchB、SwitchC和SwitchD的配置与SwitchA类似。
1 | [SwitchA] interface vlanif 10 |
- 配置OSPF基本功能
# 配置SwitchA。
1 | [SwitchA] ospf 1 router-id 10.10.10.1 |
# 配置SwitchB。
1 | [SwitchB] ospf 1 router-id 10.10.10.2 |
# 配置SwitchC。
1 | [SwitchC] ospf 1 router-id 10.10.10.3 |
# 配置SwitchD。
1 | [SwitchD] ospf 1 router-id 10.10.10.4 |
# 查看SwitchA的路由表。
1 | [SwitchA] display ip routing-table |
从路由表可以看出,由于最大等价路由条数的缺省值为8,因此SwitchA的两个下一跳10.1.1.2(SwitchB)和10.1.2.2(SwitchC)均成为有效路由。
- 在SwitchA上配置等价路由优先级
如果不希望SwitchB和SwitchC形成负载分担,可以配置等价路由优先级,指定下一跳。
1 | [SwitchA] ospf 1 |
# 查看SwitchA的路由表
1 | [SwitchA] display ip routing-table |
从路由表中可以看出,当配置等价路由的优先级后,由于下一跳为10.1.2.2(SwitchC)的优先级(权值为1)高于下一跳为10.1.1.2(SwitchB)的优先级,所以OSPF优先选择下一跳为10.1.2.2为唯一最优路由。
配置文件
SwitchA的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34#
sysname SwitchA
#
vlan batch 10 20 50
#
interface Vlanif10
ip address 10.1.1.1 255.255.255.0
#
interface Vlanif20
ip address 10.1.2.1 255.255.255.0
#
interface Vlanif50
ip address 172.16.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 20
#
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 50
#
ospf 1 router-id 10.10.10.1
nexthop 10.1.2.2 weight 1
area 0.0.0.0
network 10.1.1.0 0.0.0.255
network 10.1.2.0 0.0.0.255
network 172.16.1.0 0.0.0.255
#
returnSwitchB的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#
sysname SwitchB
#
vlan batch 10 30
#
interface Vlanif10
ip address 10.1.1.2 255.255.255.0
#
interface Vlanif30
ip address 192.168.0.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 30
#
ospf 1 router-id 10.10.10.2
area 0.0.0.0
network 10.1.1.0 0.0.0.255
network 192.168.0.0 0.0.0.255
#
returnSwitchC的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#
sysname SwitchC
#
vlan batch 20 40
#
interface Vlanif20
ip address 10.1.2.2 255.255.255.0
#
interface Vlanif40
ip address 192.168.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 20
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 40
#
ospf 1 router-id 10.10.10.3
area 0.0.0.0
network 10.1.2.0 0.0.0.255
network 192.168.1.0 0.0.0.255
#
returnSwitchD的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33#
sysname SwitchD
#
vlan batch 30 40 60
#
interface Vlanif30
ip address 192.168.0.2 255.255.255.0
#
interface Vlanif40
ip address 192.168.1.2 255.255.255.0
#
interface Vlanif60
ip address 172.17.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 30
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 40
#
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 60
#
ospf 1 router-id 10.10.10.4
area 0.0.0.0
network 172.17.1.0 0.0.0.255
network 192.168.0.0 0.0.0.255
network 192.168.1.0 0.0.0.255
#
return
6.24.6 配置OSPF-BGP联动特性示例
组网需求
如图6-74所示,SwitchD和SwitchE之间建立EBGP连接。在AS10内的交换机之间建立IBGP连接,并且使用OSPF作为IGP协议。要求在SwitchB上使能OSPF-BGP联动功能,使得当SwitchB重启后,从SwitchA到AS20的流量不发生中断。
说明:
请确保该场景下互联接口的STP处于未使能状态。因为在使能STP的环形网络中,如果用交换机的VLANIF接口构建三层网络,会导致某个端口被阻塞,从而导致三层业务不能正常运行。
图6-74 配置OSPF-BGP联动组网图
配置思路
采用如下的思路配置OSPF-BGP联动功能。
- 在各交换机的VLANIF接口上配置IP地址并配置各接口所属VLAN,实现网段内的互通。
- 在SwitchA、SwitchB、SwitchC和SwitchD(除去10.2.1.1/30)上配置OSPF基本功能和IBGP连接,实现AS10内设备互通。
- 在SwitchD和SwitchE之间配置EBGP连接并引入直连路由和OSPF路由,实现AS10与AS20之间互通。
- 在SwitchC上配置OSPF协议的开销值为2,实现SwitchA只选择SwitchB作为到10.2.1.0网段的中间路由器,SwitchC成为SwitchB的备份路由器。
- 在SwitchB上配置OSPF-BGP联动功能,实现BGP当SwitchB重启后,从SwitchA到AS20的流量不发生中断。
操作步骤
- 配置各接口所属VLAN
# 配置SwitchA。SwitchB、SwitchC、SwitchD和SwitchE的配置与SwitchA类似。
1 | <HUAWEI> system-view |
- 配置各VLANIF接口和LoopBack接口的IP地址
# 配置SwitchA。SwitchB、SwitchC、SwitchD和SwitchE的配置与SwitchA类似。
1 | [SwitchA] interface vlanif 10 |
- 配置OSPF的基本功能
# 配置SwitchA。SwitchB、SwitchC和SwitchD的配置与SwitchA类似。
1 | [SwitchA] router id 10.10.10.1 |
- 配置IBGP全连接
# 配置SwitchA。
1 | [SwitchA] bgp 10 |
# 配置SwitchB。
1 | [SwitchB] bgp 10 |
# 配置SwitchC。
1 | [SwitchC] bgp 10 |
# 配置SwitchD。
1 | [SwitchD] bgp 10 |
- 配置EBGP连接
# 配置SwitchD。
1 | [SwitchD] bgp 10 |
# 配置SwitchE。
1 | [SwitchE] bgp 20 |
- 配置SwitchC上OSPF协议的开销值
1 | [SwitchC] interface vlanif 20 |
# 查看SwitchA的路由表。从路由表中可以看出,通过BGP协议可以学习到目标网段10.3.1.0的路由,出接口是Vlanif10。
1 | [SwitchA] display ip routing-table |
# 查看SwitchB的路由表。
1 | [SwitchB] display ip routing-table |
从路由表中可以看出,SwitchB通过BGP协议可以学习到目标网段10.3.1.0的路由,出接口是Vlanif40。通过OSPF协议可以学习到目标网段10.1.2.0和10.1.4.0的路由,路由开销都是2。
- 在SwitchB上配置OSPF-BGP联动功能
1 | [SwitchB] ospf |
- 查看配置结果
# 保存配置。
1 | <SwitchB> save |
系统会提示将当前配置保存至设备,是否继续,输入y即可。
# 重启SwitchB
1 | <SwitchB> reboot |
系统会提示即将重新启动,是否继续,输入y即可。
# 查看SwitchA的路由表。从路由表中可以看出,通过BGP协议可以学习到目标网段10.3.1.0的路由,出接口变为Vlanif20。
1 | [SwitchA] display ip routing-table |
# 查看SwitchB的路由表。从路由表中可以看出,由于IGP收敛速度比BGP快,所以路由表中暂时只有OSPF路由,并且开销值都已变为较大的数(≥65535)。
1 | <SwitchB> display ip routing-table |
# 在网络稳定后,再次查看SwitchB的路由表。
1 | <SwitchB> display ip routing-table |
从路由表中可以看出,当SwitchB上的BGP完全收敛后,路由信息又恢复到重启前的内容。
配置文件
SwitchA的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45#
sysname SwitchA
#
router id 10.10.10.1
#
vlan batch 10 20
#
interface Vlanif10
ip address 10.1.1.1 255.255.255.252
#
interface Vlanif20
ip address 10.1.2.1 255.255.255.252
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 20
#
interface LoopBack0
ip address 10.10.10.1 255.255.255.255
#
bgp 10
peer 10.10.10.2 as-number 10
peer 10.10.10.2 connect-interface LoopBack0
peer 10.10.10.3 as-number 10
peer 10.10.10.3 connect-interface LoopBack0
peer 10.10.10.4 as-number 10
peer 10.10.10.4 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 10.10.10.2 enable
peer 10.10.10.3 enable
peer 10.10.10.4 enable
#
ospf 1
area 0.0.0.0
network 10.1.1.0 0.0.0.3
network 10.1.2.0 0.0.0.3
network 10.10.10.1 0.0.0.0
#
returnSwitchB的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46#
sysname SwitchB
#
router id 10.10.10.2
#
vlan batch 10 40
#
interface Vlanif10
ip address 10.1.1.2 255.255.255.252
#
interface Vlanif40
ip address 10.1.3.1 255.255.255.252
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 40
#
interface LoopBack0
ip address 10.10.10.2 255.255.255.255
#
bgp 10
peer 10.10.10.1 as-number 10
peer 10.10.10.1 connect-interface LoopBack0
peer 10.10.10.3 as-number 10
peer 10.10.10.3 connect-interface LoopBack0
peer 10.10.10.4 as-number 10
peer 10.10.10.4 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 10.10.10.1 enable
peer 10.10.10.3 enable
peer 10.10.10.4 enable
#
ospf 1
stub-router on-startup
area 0.0.0.0
network 10.1.1.0 0.0.0.3
network 10.1.3.0 0.0.0.3
network 10.10.10.2 0.0.0.0
#
returnSwitchC的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47#
sysname SwitchC
#
router id 10.10.10.3
#
vlan batch 20 30
#
interface Vlanif20
ip address 10.1.2.2 255.255.255.252
ospf cost 2
#
interface Vlanif30
ip address 10.1.4.1 255.255.255.252
ospf cost 2
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 30
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 20
#
interface LoopBack0
ip address 10.10.10.3 255.255.255.255
#
bgp 10
peer 10.10.10.1 as-number 10
peer 10.10.10.1 connect-interface LoopBack0
peer 10.10.10.2 as-number 10
peer 10.10.10.2 connect-interface LoopBack0
peer 10.10.10.4 as-number 10
peer 10.10.10.4 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 10.10.10.1 enable
peer 10.10.10.2 enable
peer 10.10.10.4 enable
#
ospf 1
area 0.0.0.0
network 10.1.2.0 0.0.0.3
network 10.1.4.0 0.0.0.3
network 10.10.10.3 0.0.0.0
#
returnSwitchD的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56#
sysname SwitchD
#
router id 10.10.10.4
#
vlan batch 30 40 50
#
interface Vlanif30
ip address 10.1.4.2 255.255.255.252
#
interface Vlanif40
ip address 10.1.3.2 255.255.255.252
#
interface Vlanif50
ip address 10.2.1.1 255.255.255.252
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 30
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 40
#
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 50
#
interface LoopBack0
ip address 10.10.10.4 255.255.255.255
#
bgp 10
peer 10.10.10.1 as-number 10
peer 10.10.10.1 connect-interface LoopBack0
peer 10.10.10.2 as-number 10
peer 10.10.10.2 connect-interface LoopBack0
peer 10.10.10.3 as-number 10
peer 10.10.10.3 connect-interface LoopBack0
peer 10.2.1.2 as-number 20
#
ipv4-family unicast
undo synchronization
import-route direct
import-route ospf 1
peer 10.10.10.1 enable
peer 10.10.10.2 enable
peer 10.10.10.3 enable
peer 10.2.1.2 enable
#
ospf 1
area 0.0.0.0
network 10.1.3.0 0.0.0.3
network 10.1.4.0 0.0.0.3
network 10.10.10.4 0.0.0.0
#
returnSwitchE的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32#
sysname SwitchE
#
vlan batch 50 60
#
interface Vlanif50
ip address 10.2.1.2 255.255.255.252
#
interface Vlanif60
ip address 10.3.1.1 255.255.255.252
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 50
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 60
#
interface LoopBack0
ip address 10.10.10.5 255.255.255.255
#
bgp 20
router-id 10.10.10.5
peer 10.2.1.1 as-number 10
#
ipv4-family unicast
undo synchronization
network 10.3.1.0 255.255.255.252
peer 10.2.1.1 enable
#
return
6.24.7 配置OSPF GR特性示例
组网需求
如图6-75所示,三台设备之间运行OSPF协议,整个OSPF网络被划分为Area0和Area1两个区域。现要求在SwitchC上运行的OSPF协议重启过程中不影响数据的正常转发。
图6-75 OSPF GR的配置举例
配置思路
采用如下的思路配置OSPF GR:
- 在各交换机上配置OSPF基本功能,实现OSPF网络的基本互通。
- 在SwitchA和SwitchC上使能Opaque LSA功能,实现OSPF通过Type9 LSA支持OSPF GR。
- 在SwitchA和SwitchC上配置GR功能,实现当OSPF协议重启时保证数据正常转发。
操作步骤
- 配置各接口所属的VLAN
# 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。
1 | <HUAWEI> system-view |
- 配置各VLANIF接口的IP地址
# 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。
1 | [SwitchA] interface vlanif 10 |
- 配置OSPF基本功能
# 配置SwitchA。
1 | [SwitchA] ospf 1 router-id 10.1.1.1 |
# 配置SwitchB。
1 | [SwitchB] ospf 1 router-id 10.2.2.2 |
# 配置SwitchC。
1 | [SwitchC] ospf 1 router-id 10.3.3.3 |
- 使能Opaque-LSA功能
# 配置SwitchA。
1 | [SwitchA] ospf 1 |
# 配置SwitchC。
1 | [SwitchC] ospf 1 |
- 配置OSPF GR特性
# 配置SwitchA。
1 | [SwitchA] ospf 1 |
# 配置SwitchC。
1 | [SwitchC] ospf 1 |
- 验证配置结果
# 查看SwitchC的GR状态。
1 | <SwitchC> display ospf graceful-restart |
# 在SwitchA查看邻居状态。
1 | <SwitchA> display ospf peer |
可以看到,SwitchA的OSPF邻居处于Full状态,GR的状态是Normal。
# 平滑重启SwitchC的OSPF进程。
1 | <SwitchC> reset ospf process graceful-restart |
# 在SwitchA查看邻居状态。
1 | <SwitchA> display ospf peer |
可以看到,SwitchA与SwitchC邻居关系继续保持为Full状态,不受SwitchC的OSPF进程平滑重启的影响。
配置文件
SwitchA的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28#
sysname SwitchA
#
vlan batch 10 20
#
interface Vlanif10
ip address 192.168.0.1 255.255.255.0
#
interface Vlanif20
ip address 192.168.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 20
#
ospf 1 router-id 10.1.1.1
opaque-capability enable
graceful-restart
area 0.0.0.0
network 192.168.0.0 0.0.0.255
area 0.0.0.1
network 192.168.1.0 0.0.0.255
#
returnSwitchB的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#
sysname SwitchB
#
vlan batch 10
#
interface Vlanif10
ip address 192.168.0.2 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
ospf 1 router-id 10.2.2.2
area 0.0.0.0
network 192.168.0.0 0.0.0.255
#
returnSwitchC的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#
sysname SwitchC
#
vlan batch 20
#
interface Vlanif20
ip address 192.168.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 20
#
ospf 1 router-id 10.3.3.3
opaque-capability enable
graceful-restart
area 0.0.0.1
network 192.168.1.0 0.0.0.255
#
return
6.24.8 配置OSPF与BFD联动示例
组网需求
如图6-76所示,SwitchA、SwitchB和SwitchC之间运行OSPF,SwitchA和SwitchB之间的交换机仅作透传功能。现在需要SwitchA和SwitchB能快速感应它们之间的链路状态,当链路SwitchA-SwitchB发生故障时,业务能快速切换到备份链路SwitchA-SwitchC-SwitchB上。
说明:
请确保该场景下互联接口的STP处于未使能状态。因为在使能STP的环形网络中,如果用交换机的VLANIF接口构建三层网络,会导致某个端口被阻塞,从而导致三层业务不能正常运行。
图6-76 配置OSPF与BFD联动组网图
配置思路
采用如下思路配置OSPF与BFD联动:
- 在各交换机上配置OSPF基本功能,实现整个OSPF网络的互通。
- 在各交换机上配置OSPF与BFD联动功能,实现当SwitchA和SwitchB之间的链路出现故障时快速的切换到备份链路。
操作步骤
- 配置各接口所属的VLAN
# 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。
1 | <HUAWEI> system-view |
- 配置各VLANIF接口的IP地址
# 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。
1 | [SwitchA] interface vlanif 10 |
- 配置OSPF基本功能
# 配置SwitchA。
1 | [SwitchA] ospf 1 router-id 10.10.10.1 |
# 配置SwitchB。
1 | [SwitchB] ospf 1 router-id 10.10.10.2 |
# 配置SwitchC。
1 | [SwitchC] ospf 1 router-id 10.10.10.3 |
# 配置完成后,执行命令display ospf peer,可以看到SwitchA,SwitchB和SwitchC之间互相建立了邻接关系。以SwitchA的显示结果为例。
1 | [SwitchA] display ospf peer |
# 查看SwitchA的OSPF路由表的信息,可以看到去往SwitchB和SwitchC的路由表项。而去往目的网段172.16.1.0/24的路由下一跳地址为10.3.3.2,说明流量在链路SwitchA→SwitchB上传输。
1 | [SwitchA] display ospf routing |
- 配置OSPF与BFD联动
# 在SwitchA上配置OSPF与BFD联动功能。
1 | [SwitchA] bfd |
# 在SwitchB上配置OSPF与BFD联动功能。
1 | [SwitchB] bfd |
# 在SwitchC上配置OSPF与BFD联动功能。
1 | [SwitchC] bfd |
# 配置完成后,在SwitchA或SwitchB、SwitchC上执行display ospf bfd session all命令,可以看到BFD会话的状态为Up。以SwitchA的显示为例。
1 | [SwitchA] display ospf bfd session all |
- 检查配置结果
# 对SwitchB的GE0/0/1接口执行shutdown命令,模拟链路故障。
1 | [SwitchB] interface gigabitethernet 0/0/1 |
# 在SwitchA上查看OSPF路由表。
1 | [SwitchA] display ospf routing |
可以看出在链路SwitchA-SwitchB出现故障后,备份链路SwitchA-SwitchC-SwitchB开始生效,即去往目的网段172.16.1.0/24的路由下一跳地址变成了10.1.1.2。
配置文件
SwitchA的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28#
sysname SwitchA
#
vlan batch 10 30
#
bfd
#
interface Vlanif10
ip address 10.1.1.1 255.255.255.0
#
interface Vlanif30
ip address 10.3.3.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 30
#
ospf 1 router-id 10.10.10.1
bfd all-interfaces enable
area 0.0.0.0
network 10.1.1.0 0.0.0.255
network 10.3.3.0 0.0.0.255
#
returnSwitchB的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36#
sysname SwitchB
#
vlan batch 20 30 40
#
bfd
#
interface Vlanif20
ip address 10.2.2.2 255.255.255.0
#
interface Vlanif30
ip address 10.3.3.2 255.255.255.0
#
interface Vlanif40
ip address 172.16.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 30
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 20
#
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 40
#
ospf 1 router-id 10.10.10.2
bfd all-interfaces enable
area 0.0.0.0
network 10.2.2.0 0.0.0.255
network 10.3.3.0 0.0.0.255
network 172.16.1.0 0.0.0.255
#
returnSwitchC的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28#
sysname SwitchC
#
vlan batch 10 20
#
bfd
#
interface Vlanif10
ip address 10.1.1.2 255.255.255.0
#
interface Vlanif20
ip address 10.2.2.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 20
#
ospf 1 router-id 10.10.10.3
bfd all-interfaces enable
area 0.0.0.0
network 10.1.1.0 0.0.0.255
network 10.2.2.0 0.0.0.255
#
return
6.24.9 配置OSPF IP FRR示例
组网需求
如图6-77所示,四台交换机属于同一个OSPF区域,用户希望对SwitchA转发的流量进行可靠性保护,具体需求如下:
- 正常情况下,SwitchA的流量通过主用链路SwitchA-SwitchC转发。
- 当主用链路SwitchA-SwitchC发生故障的时候,流量快速切换至备用链路SwitchA-SwitchB,而不用等待路由收敛,从而达到流量不中断的目的。
说明:
请确保该场景下互联接口的STP处于未使能状态。因为在使能STP的环形网络中,如果用交换机的VLANIF接口构建三层网络,会导致某个端口被阻塞,从而导致三层业务不能正常运行。
图6-77 配置OSPF IP FRR组网图
配置思路
采用如下思路配置OSPF IP FRR:
- 在各交换机上配置OSPF基本功能。
- 在SwitchA上配置OSPF IP FRR功能,实现对SwitchA转发的流量进行可靠性保护的目的。
操作步骤
- 配置各接口所属的VLAN
# 配置SwitchA。SwitchB、SwitchC和SwitchD的配置与SwitchA类似。
1 | <HUAWEI> system-view |
- 配置各VLANIF接口的IP地址
# 配置SwitchA。SwitchB、SwitchC和SwitchD的配置与SwitchA类似。
1 | [SwitchA] interface vlanif 10 |
- 配置OSPF基本功能
# 配置SwitchA。
1 | [SwitchA] ospf 1 router-id 10.1.1.1 |
# 配置SwitchB。
1 | [SwitchB] ospf 1 router-id 10.2.2.2 |
# 配置SwitchC。
1 | [SwitchC] ospf 1 router-id 10.3.3.3 |
# 配置SwitchD。
1 | [SwitchD] ospf 1 router-id 10.4.4.4 |
- 在SwitchA上使能OSPF IP FRR。
# 在SwitchA上使能OSPF IP FRR。
1 | [SwitchA] ospf |
- 检查配置结果
# 查看SwitchA到SwitchD的路由信息。由于使能了OSPF IP FRR,OSPF生成了一条备份路由。
1 | <SwitchA> display ospf routing 192.168.4.0 |
从显示信息可以看出,SwitchA上已经生成了备份的路由。
配置文件
SwitchA的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#
sysname SwitchA
#
vlan batch 10 20
#
interface Vlanif10
ip address 192.168.1.1 255.255.255.0
#
interface Vlanif20
ip address 192.168.2.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 20
#
ospf 1 router-id 10.1.1.1
frr
loop-free-alternate
area 0.0.0.0
network 192.168.1.0 0.0.0.255
network 192.168.2.0 0.0.0.255
#
returnSwitchB的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#
sysname SwitchB
#
vlan batch 10 30
#
interface Vlanif10
ip address 192.168.1.2 255.255.255.0
#
interface Vlanif30
ip address 192.168.3.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 30
#
ospf 1 router-id 10.2.2.2
area 0.0.0.0
network 192.168.1.0 0.0.0.255
network 192.168.3.0 0.0.0.255
#
returnSwitchC的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33#
sysname SwitchC
#
vlan batch 20 30 40
#
interface Vlanif20
ip address 192.168.2.2 255.255.255.0
#
interface Vlanif30
ip address 192.168.3.2 255.255.255.0
#
interface Vlanif40
ip address 192.168.4.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 20
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 40
#
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 30
#
ospf 1 router-id 10.3.3.3
area 0.0.0.0
network 192.168.2.0 0.0.0.255
network 192.168.3.0 0.0.0.255
network 192.168.4.0 0.0.0.255
#
returnSwitchD的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#
sysname SwitchD
#
vlan batch 40
#
interface Vlanif40
ip address 192.168.4.2 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 40
#
ospf 1 router-id 10.4.4.4
area 0.0.0.0
network 192.168.4.0 0.0.0.255
#
return
6.25 常见配置错误
介绍常见配置错误的案例,避免在配置阶段引入故障。
6.25.1 OSPF邻居建立不成功
故障现象
OSPF邻居建立不成功。
操作步骤
- 检查邻居两端的接口物理和协议状态是否UP,状态是否稳定,接口是否有丢包,两边互ping大包是否能通。
若物理接口不Up或是不稳定(有振荡现象),请排查物理链路和链路层协议,确保物理和协议状态都是Up,并且接口无错误计数。
可以通过ping测试,长ping测试是否存在丢包现象,ping大包(1500字节以上)测试是否存在大包不通的现象。若存在,请检查数据包传送路径上各设备接口的MTU值设置是否合理。
- 检查链路两端OSPF进程的Router ID是否一致。
分别在链路两端的设备上执行命令display ospf [ process-id ] brief,查看OSPF进程的Router ID。
Router ID要保证全网唯一,否则会导致邻居不能正常建立、路由信息不正确的问题。建议在设备上单独为每个OSPF进程配置全网唯一的Router ID。
如果链路两端OSPF进程的Router ID一致,请在系统视图下执行命令ospf [ process-id ] router-id router-id,修改OSPF进程的Router ID以保证不冲突。
修改OSPF进程的Router ID之后,必须在用户视图下执行命令reset ospf [ process-id ] process后,新配置的Router ID才会生效。
- 检查链路两端OSPF区域ID是否一致。
分别在链路两端的设备上执行命令display ospf [ process-id ] brief,查看OSPF的区域ID。
如果链路两端的OSPF区域ID不一致,请在OSPF视图下执行命令area area-id,修改OSPF区域ID以保证一致。
- 检查链接两端OSPF接口的网络类型是否一致。
分别在链路两端的设备上执行命令display ospf [ process-id ] interface,查看OSPF接口的接口类型。
一般情况下,链路两端的OSPF接口的网络类型必须一致,否则双方不能正常建立起OSPF邻居关系。
如果OSPF接口的网络类型不一致,请在运行OSPF协议的接口视图下执行命令ospf network-type { broadcast | nbma | p2mp | p2p },修改OSPF接口的网络类型以保证一致。
说明:
如果链路两端OSPF接口的网络类型都是NBMA,则必须在OSPF视图下执行命令peer ip-address [ dr-priority priority ],配置NBMA网络的OSPF邻居。
- 检查链路两端OSPF接口的IP地址的掩码是否一致。
分别在链路两端的设备上执行命令display current-configuration interface interface-type interface-number,查看OSPF接口的IP地址。
一般情况下,链路两端的OSPF接口的IP地址的掩码必须一致,否则双方不能正常建立OSPF邻居关系。但在P2MP网络中,可以通过在运行OSPF协议的接口视图下配置命令ospf p2mp-mask-ignore来使设备忽略对网络掩码的检查,从而正常建立OSPF邻居关系。
如果OSPF接口的IP地址的掩码不一致,请在运行OSPF协议的接口视图下执行命令ip address ip-address { mask | mask-length },修改OSPF接口的IP地址以保证掩码一致。
- 检查链路两端OSPF接口的IP地址所在网段是否包含在区域内配置的network内。
分别在链路两端的设备上执行命令display current-configuration interface interface-type interface-number,查看OSPF接口的IP地址;执行命令display current-configuration configuration ospf,查看OSPF进程的配置。
满足下面两个条件,OSPF协议才能在接口上运行:
接口的IP地址掩码长度≥network命令中的掩码长度。OSPF使用反掩码,例如0.0.0.255表示掩码长度24位。
接口的主IP地址必须在network命令指定的网段范围之内。
如果检查发现接口IP地址与配置的network不满足上述条件,请在运行OSPF协议的接口视图下执行命令ip address ip-address { mask | mask-length },修改接口的IP地址;或者在OSPF进程对应的区域视图下执行命令network,修改配置的网段,保证满足上述条件。
- 检查链路两端OSPF接口的DR优先级是否非零。
分别在链路两端的设备上执行命令display ospf [ process-id ] interface,查看OSPF接口的DR优先级。
对于广播和NBMA类型网络,链路中至少要有一个OSPF接口的DR优先级不为0,这样才能正常选举出DR。否则两边的邻居状态只能达到2-Way。
如果链路两端OSPF接口的DR优先级都为0,请在运行OSPF协议的接口视图下执行命令ospf dr-priority priority,修改OSPF接口的DR优先级以保证至少有一个接口的DR优先级不为0。
6.25.2 OSPF不能发现其他区域的路由
故障现象
在链路正常的情况下,OSPF不能发现其他区域的路由。
操作步骤
- 检查设备所在区域是否与骨干区域相连。
在设备所在区域的ABR上执行命令display ospf [ process-id ] brief,查看ABR的区域配置信息。
OSPF规定所有非骨干区域必须与骨干区域保持连通。
如果ABR上没有配置骨干区域的信息,请在OSPF视图下执行命令area area-id,修改OSPF区域信息以保证ABR上至少有一个接口运行在骨干区域。
说明:
如果因实际组网限制,无法满足所有非骨干区域与骨干区域保持连通的要求,可以通过配置虚连接来满足需求。
- 检查设备所在区域是否为Totally Stub区域。
在设备上执行命令display current-configuration configuration ospf [ process-id ],查看OSPF进程的配置信息。
配置非骨干区域为Stub区域时,如果在ABR上配置时加上了参数no-summary (即OSPF区域视图下执行stub no-summary命令),则将该区域配置成了Totally Stub区域。
Totally Stub区域,不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。
如果设备所在区域被配置为Totally Stub区域,请在确认需要修改的情况下,根据需求选择如下配置:
- 如果要将该Totally Stub区域恢复为普通区域,则需要在该区域的所有设备的OSPF区域视图下执行命令undo stub。
- 如果仅仅是需要将Totally Stub区域改成Stub区域,则需要在该区域的ABR的OSPF区域视图下先执行命令undo stub,然后再执行命令stub。
- 检查设备所在区域是否为Totally NSSA区域。
在设备上执行命令display current-configuration configuration ospf [ process-id ],查看OSPF进程的配置信息。
配置非骨干区域为NSSA区域时,如果在ABR上配置时加上了参数no-summary (即在OSPF区域视图下执行nssa no-summary命令),则将该区域配置成了Totally NSSA区域。
Totally NSSA区域不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。
如果设备所在区域被配置为Totally NSSA区域,请在确认需要修改的情况下,根据需求选择如下配置:
- 如果要将该Totally NSSA区域恢复为普通区域,则需要在该区域的所有设备的OSPF区域视图下执行命令undo nssa。
- 如果仅仅是需要将Totally NSSA区域改成NSSA区域,则需要在该区域的ABR的OSPF区域视图下先执行命令undo nssa,然后再执行命令nssa。
6.26 参考信息
介绍OSPF的参考标准和协议。
本特性的参考资料清单如下:
文档 | 描述 | 备注 |
---|---|---|
RFC1587 | This document describes a new optional type of OSPF area, somewhat humorously referred to as a “not-so-stubby” area (or NSSA). NSSAs are similar to the existing OSPF stub area configuration option but have the additional capability of importing AS external routes in a limited fashion. | - |
RFC1765 | Proper operation of the OSPF protocol requires that all OSPF routers maintain an identical copy of the OSPF link-state database. However, when the size of the link-state database becomes very large, some routers may be unable to keep the entire database due to resource shortages; we term this “database overflow”. | 该RFC为Experimental,非Standard。 |
RFC2328 | This memo documents version 2 of the OSPF protocol. OSPF is a link-state routing protocol. | - |
RFC2370 | This memo defines enhancements to the OSPF protocol to support a new class of link-state advertisements (LSA) called Opaque LSAs. Opaque LSAs provide a generalized mechanism to allow for the future extensibility of OSPF. | - |
RFC3137 | This memo describes a backward-compatible technique that may be used by OSPF (Open Shortest Path First) implementations to advertise unavailability to forward transit traffic or to lower the preference level for the paths through such a router. | 该RFC为Informational,非Standard。 |
RFC3623 | This memo documents an enhancement to the OSPF routing protocol, whereby an OSPF router can stay on the forwarding path even as its OSPF software is restarted. | - |
RFC3630 | This document describes extensions to the OSPF protocol version 2 to support intra-area Traffic Engineering (TE), using Opaque Link State Advertisements. | - |
RFC3682 | The use of a packet’s Time to Live (TTL) (IPv4) or Hop Limit (IPv6) to protect a protocol stack from CPU-utilization based attacks has been proposed in many settings. | 该RFC为Experimental,非Standard。 |
RFC3906 | This document describes how conventional hop-by-hop link-state routing protocols interact with new Traffic Engineering capabilities to create Interior Gateway Protocol (IGP) shortcuts. | - |
RFC4576 | This document specifies the necessary procedure, using one of the options bits in the LSA (Link State Advertisements) to indicate that an LSA has already been forwarded by a PE and should be ignored by any other PEs that see it. | - |
RFC4577 | This document extends that specification by allowing the routing protocol on the PE/CE interface to be the Open Shortest Path First (OSPF) protocol. | - |
RFC4750 | This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in TCP/IP-based internets. In particular, it defines objects for managing version 2 of the Open Shortest Path First Routing Protocol. Version 2 of the OSPF protocol is specific to the IPv4 address family. | - |
- 本文链接:https://zeozzz.github.com/2019/05/28/54/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。