掌握OSPF协议的配置在协议的学习过程中是非常重要的,可以巩固对于所学知识的了解程度。本章介绍了OSPF协议的基本配置步骤,以及OSPF的维护调试命令,阐述了如何配置参数优化OSPF网络,包括配置OSPF网络类型、接口开销、定时器,并且讲解了如何在OSPF中引入缺省路由。
8.2 OSPF基本配置与显示
8.2.1 配置OSPF基本功能
路由器默认没有运行OSPF协议。如果需要使用OSPF协议,进行路由发现和选择,需要在路由器上进行配置。配置OSPF基本功能的步骤包括以下几部分:
- 第一步:启动OSPF进程,并指定进程ID
如果没有指定ospf进程id,系统默认当前运行进程ID为1。
[H3C]ospf process-id
- 第二步:配置OSPF区域进入OSPF区域视图
缺省情况下,没有配置OSPF区域。如果在单区域情况下,可以不配置骨干区域Area0;如果在多区域情况下配置区域,必须配置骨干区域Area0 。
[H3C-ospf-1]area area-id
- 第三步:配置区域包含的网段并在指定接口上使能OSPF
[H3C-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
缺省情况下,接口不属于任何区域且OSPF功能处于关闭状态。一个网段只能属于一个区域,并且必须为每个运行OSPF协议的接口指明某一个特定的区域。在这个配置过程中,需要使用尽量精确的反掩码。
当在路由器上启动多个OSPF进程时,需要指定不同的进程号。OSPF进程号是本地概念,不影响与其它路由器之间的报文交换。因此,不同的路由器之间,即使进程号不同也可以进行报文交换。
在配置同一区域内的路由器时,大多数的配置数据都应该以区域为基础来统一考虑。错误的配置可能会导致相邻路由器之间无法相互传递信息,甚至导致路由信息的阻塞或者产生路由环路。例如,在配置OSPF区域的时候,如果两台邻居路由器错误地配置了不同的OSPF区域,就会导致邻居关系无法建立。
8.2.2 配置Router ID
一台路由器。Router ID可以由系统自动选择,也可以人为的手工配置。为保证OSPF运行的稳定性,在进行网络规划时应该确定路由器ID的划分并建议手工配置,以便在网络设计之初就明确了每台路由器对应的Router ID。手工配置路由器的ID时,必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个Loopback接口的IP地址一致。
手工配置Router ID的方法有两种:
- 配置设备的Router ID。如果使用这种方法配置,这台路由器的所有路由协议的Router ID都被指定,
[H3C]router id 10.1.1.199
- 配置OSPF协议的Router ID。如果使用这种配置方法,仅仅指定这台路由器上的OSPF协议的Router ID。一般情况下,推荐使用这种配置方法
[H3C]ospf 1router-id 10.1.1.199
8.2.3 OSPF单区域配置示例
如上图所示,RTA和RTB运行OSPF,并划分在同一区域内。
RTA使用loopback接口0的IP地址1.1.1.1作为Router ID,并且将接口加入OSPF的Area0。RTB使用loopback接口0的IP地址2.2.2.2作为Router ID,并且将接口加入OSPF的Area0。完成上述配置后,由于RTA的Ethernet0/0与RTB的Ethernet0/0共享同一条数据链路,并且在同一个网段内,故它们互为邻居。
[RTA]ospf 1 route-id 1.1.1.1
[RTA-osfp-1]area 0.0.0.0
[RTA-osfp-1]network 10.0.0.0 0.0.0.255
[RTB]ospf 1 route-id 2.2.2.2
[RTB-osfp-1]area 0.0.0.0
[RTB-osfp-1]network 10.0.0.0 0.0.0.255
8.2.4 OSPF 多区域配置示例
如上图所示,RTA、RTB和RTC运行OSPF,规划RTA和RTC属于不同的区域,RTB是区域边界路由器,负责在不同区域之间转发报文。
RTA、RTB和RTC使用loopback 接口地址作为Router ID。RTB作为ABR,在Area0内与RTA建立邻居,在Area1内与RTC建立邻居。RTA和RTC配置与单区域情况下相比没有变化,重点关注RTB的配置。
RTA配置如下:
[RTA]int loopback0
[RTA-loopback-0]ip address 1.1.1.1 24
[RTA]ospf 1 router-id 1.1.1.1
[RTA-ospf-1]area 0.0.0.0
[RTA-ospf-1]network 10.0.0.0 0.0.0.255
[RTA-ospf-1]area 1.1.1.1
[RTA-ospf-1]network 20.0.0.0 0.0.0.255
RTB配置如下:
[RTB]int loopback0
[RTB-loopback-0]ip address 2.2.2.2 24
[RTB]ospf 1 router-id 2.2.2.2
[RTB-ospf-1]area 0.0.00
[RTB-ospf-1]network 10.0.0.0 0.0.0.255
[RTB-ospf-1]
8.2.5 OSPF显示与调试
在完成OSPF协议相关配置后,在任意视图下执行display命令可以显示配置后OSPF的运行情况,通过查看显示信息验证配置的效果。
使用display ospf peer
可以用来显示OSPF邻居信息。以下是输出示例:
从输出示例中可以看到本台路由器的Router ID是2.2.2.2。
输出命令中各参数描述如下表:
使用display ospf interface
可以用来显示OSPF接口信息。以下是输出示例:
输出命令中各参数如下表:
使用display ospf routing
可以用来显示OSPF路由信息。以下是输出示例:
使用display ip routing-table
可以显示ip路由信息。以下是输出信息:
从输出示例中可以看出,1.1.1.1/32、3.3.3.3/32和10.0.1.1/32这3条路由都是通过OSPF协议学习而来的,其中OSPF协议的优先级为10,到达目的地的度量值为1。
下面列出了其他常用的OSPF显示命令。
在OSPF的维护过程中,有时候需要重置OSPF的进程或连接计数器。
在用户视图下执行reset命令可以复位OSPF计数器或连接,命令如下表所示。
除了上文介绍的显示和维护命令外,系统还提供丰富的调试命令,来显示OSPF协议动态过程。
如上图所示,RTA和RTB运行OSPF协议。在RTA上的用户视图下用debugging ospf event
命令打开OSPF协议的事件调试信息开关,以下是输出示例:
经命令输出可以看到OSPF邻居间建立邻接关系的全过程。可以从中观察邻居状态从DOWN开始,经过Init、2-way、ExStart、Exchange、loading直到Full。
另外,OSPF协议还具有其它大量的调试命令,可以用来观察OSPF协议的链路状态调试信息、报文调试信息、OSPF路由计算调试信息以及进程调试信息等。
一般情况下,建议根据需要输入相应的调试命令,观察OSPF协议的报文交互。在正常状态时,不建议配置任何调试命令,以防止对于系统运行造成不必要的影响。
8.2 优化OSPF网络
8.3.1 配置OSPF网络类型
缺省情况下,OSPF根据接口的链路层协议来确定接口网络类型。在不同的网络类型下,OSPF工作机制会有所不同。可以根据链路层协议和网络拓扑来配置相应的网络类型。
在接口视图下,配置OSPF接口网络类型的命令如下:
[RTA-g1/0/1]ospf network-type {broacast | nbma | p2mp [unicast] | p2p [peer-address-check] }
在ATM、帧中继等NBMA网络中,如果任意两台路由器之间都有一条虚电路直接可达,那么可以把OSPF接口的网路类型配置为NBMA;否则,需要把OSPF接口的网络类型配置为P2MP;如果路由器在NBMA网络中只有一个对端,也可将接口类型改为P2P方式。
另外,在配置广播网络和NBMA网络时,还可以指定各接口的路由器优先级,以此来影响网络中的DR/BDR选择。一般情况下,应该选择性能和可靠性较高的路由器作为DR和BDR。
当网络类型为广播网或NBMA类型时,可以通过配置接口的路由器优先级来影响网络中DR/BDR的选择。默认的路由器优先级为1,可以根据需要将性能和可靠性较高的路由器优先级调整的较高。
在接口视图下,配置OSPF接口(如果是三层交换机则是在vlan接口,也就是三层接口下调整ospf相关参数)的路由器优先级的命令如下:
[RTA-g1/01]ospf dr-priority 4 #优先级大的优先选为DR
8.3.2 配置OSPF接口开销
OSPF路由以到达目的地址的开销作为度量值,而到达目的地的开销是路径上所有路由器接口开销之和。所以,通过配置路由器接口开销,可以改变OSPF路由开销,从而达到控制路由选路的目的。
配置ospf接口开销有两种方式:
- 1.在接口视图下,配置ospf接口开销值。
ospf cost value
使用上述命令后,ospf协议仅对当前接口开销值进行修改。推荐使用此方式。
- 2.在ospf视图下,配置ospf接口的参考带宽
bandwidth-reference value
使用上述命令后,OSPF协议会根据该接口的带宽自动计算其开销值,计算公式为:
接口开销=带宽参考值÷接口带宽
缺省情况下,带宽参考值为100M。意味着所有链路带宽大于100M的接口开销都被计算为1,不能反馈链路带宽的真实情况。所以,可以根据网络情况将参考带宽修改为1000M或者更大。推荐配置带宽参考值为网络中所有链路带宽中的最大值。
配置了OSPF参考带宽之后,路由器上所有接口的开销都被重新计算。
在上图所示网络中,RTA、RTB、RTC之间通过GE接口互连。缺省情况下,GE接口的开销值为1。所以,在RTC上进行路由查看时,可以发现路由1.1.1.1/32的开销值为2。如果要改变此路由的开销,可以在RTC上修改接口GO/0的接口开销。
如果在RTB上配置接口GO/0的接口开销值为100,则可以发现RTC上的路由1.1.1.1/32开销值变为200。
8.3.3 配置OSPF报文定时器
OSPF协议的Hello定时器是指接口发送Hello报文的时间间隔。OSPF邻居的失效时间是指,在该时间间隔内,若未收到邻居的Hello报文,就认为该邻居已失效。
除此之外,还有其他的定时器:
Poll 定时器:在NBMA网络中,路由器向状态为Down的邻居路由器发送轮询 Hello报文的时间间隔。
接口重传LSA的时间间隔:路由器向它的邻居通告一条LSA后,需要对方进行确认。若在重传间隔时间内没有收到对方的确认报文,就会向邻居重传这条LSA。
修改了网络类型后,Hello定时器与邻居失效时间都将恢复缺省值。另外,相邻路由器重传LSA时间间隔的值不要设置得太小,否则将会引起不必要的重传。通常应该大于一个报文在两台路由器之间传送一个来回的时间。
缺省情况下,P2P、Broadcast类型接口发送Hello报文的时间间隔为10秒;P2MP、NBMA类型接口发送Hello报文的时间间隔为30秒。Hello定时器的值越小,发现网络拓扑改变的速度越快,对系统资源的开销也就越大。同一网段上的接口的Hello定时器的值必须相同。
缺省情况下,P2P、Broadcast类型接口的OSPF邻居失效的时间为40秒;P2MP、NBMA类型接口的OSPF邻居失效的时间为120秒。邻居失效时间值至少应为Hello计时器值的4倍,同一网段上的接口的邻居失效时间也必须相同。
在OSPF中,如果双方的Hello定时器和邻居失效时间不一致,就不能建立邻居。因此,一般情况下不建议对于OSPF协议的Hello计时器和邻居失效时间进行修改。
8.3.4 配置OSPF引入缺省路由
在OSPF中,使用import-route
命令不能引入缺省路由,如果要引入缺省路由,必须使用该命令。配置OSPF引入缺省路由的命令如下:
default-route-advertise [[[always | permit-calculate-other] | cost 10 | route-policy route-policy-name | type type]* | summary const 10]
主要含义如下:
always:如果当前路由器的路由表中没有缺省路由,使用此参数可产生一个描述缺省路由的Type-5LSA发布出去。如果没有指定该关键字,仅当本地路由器的路由表中存在缺省路由时,才可以产生一个描述缺省路由的Type-5LSA发布出去。
cost cost:该缺省路由的度量值,取值范围为0~16777214,如果没有指定,缺省路由的度量值将取default cost命令配置的值
route-policy route-policy-name:路由策略名,为1~63个字符的字符串,区分大小写。只有当前路由器的路由表中存在缺省路由,并且有路由匹配 route-policy-name指定的路由策略,才可以产生一个描述缺省路由的Type-5LSA发布出去,指定的路由策略会影响Type-5LSA中的值。如果同时指定always参数,不论当前路由器的路由表中是否有缺省路由,只要有路由匹配指定的路由策略,就将产生一个描述缺省路由的Type-5LSA发布出去,指定的路由策略会影响 Type-5LSA中的值。
type type:该Type-5LSA的类型,取值范围为1~2,如果没有指定,Type-5 LSA的缺省类型将取default type命令配置的值。
summary:发布指定缺省路由的Type-3LSA。在选用该参数时,必须首先使能VPN,否则路由不能发布。