11-IPv4路由操作
本章节下载 (1.03 MB)
& 说明:
本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。为提高可读性,在手册的描述中将不另行说明。
静态路由是一种特殊的路由,由管理员手工配置。在组网结构比较简单的网络中,只需配置静态路由就可以实现网络互通。恰当地设置和使用静态路由可以改善网络的性能,并可为重要的网络应用保证带宽。
静态路由的缺点在于:不能自动适应网络拓扑结构的变化,当网络发生故障或者拓扑发生变化后,可能会出现路由不可达,导致网络中断,此时必须由网络管理员手工修改静态路由的配置。
缺省路由是在路由器没有找到匹配的路由表入口项时才使用的路由:
l 如果报文的目的地址不能与路由表的任何入口项相匹配,那么该报文将选取缺省路由;
l 如果没有缺省路由且报文的目的地不在路由表中,那么该报文将被丢弃,将向源端返回一个ICMP报文报告该目的地址或网络不可达。
缺省路由可以通过静态路由配置,以到网络0.0.0.0(掩码也为0.0.0.0)的形式在路由表中出现,也可以由某些动态路由协议生成,如OSPF、IS-IS和RIP。
配置静态路由时,需要了解以下内容:
(1) 目的地址与掩码
在ip route-static命令中,IPv4地址为点分十进制格式,掩码可以用点分十进制表示,也可用掩码长度(即掩码中连续‘1’的位数)表示。
(2) 出接口和下一跳地址
在配置静态路由时,可指定出接口interface-type interface-number,也可指定下一跳地址。指定出接口还是指定下一跳地址要视具体情况而定,下一跳地址不能为本地接口IP地址,否则路由不会生效。
实际上,所有的路由项都必须明确下一跳地址。在发送报文时,首先根据报文的目的地址寻找路由表中与之匹配的路由。只有指定了下一跳地址,链路层才能找到对应的链路层地址,并转发报文。
指定出接口时需要注意:
l 对于NULL0接口,配置了出接口就不再配置下一跳地址。
l 在配置静态路由时,建议不要直接指定广播类型接口作出接口(如VLAN接口等)。因为广播类型的接口,会导致出现多个下一跳,无法唯一确定下一跳。在某些特殊应用中,如果必须配置广播接口(如VLAN接口等)为出接口,则必须同时指定其对应的下一跳地址。
(3) 其它属性
对于不同的静态路由,可以为它们配置不同的优先级,从而更灵活地应用路由管理策略。例如:配置到达相同目的地的多条路由,如果指定相同优先级,则可实现负载分担,如果指定不同优先级,则可实现路由备份。
在配置静态路由之前,需配置相关接口的IP地址。
表1-1 配置静态路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置静态路由 |
ip route-static dest-address { mask | mask-length } { next-hop-address | interface-type interface-number [ next-hop-address ] } [ preference preference-value ] [ tag tag-value ] [ description description-text ] |
必选 缺省情况下,静态路由的优先级preference为60,静态路由tag值为0,未配置描述信息 |
配置静态路由的缺省优先级 |
ip route-static default-preference default-preference-value |
可选 缺省情况下,静态路由的缺省优先级为60 |
& 说明:
l 在配置静态路由时,如果先指定下一跳地址,然后将该地址配置为本地接口(如VLAN接口等)的IP地址,静态路由不会生效。
l 如果在配置静态路由时没有指定优先级,就会使用缺省优先级。重新设置缺省优先级后,新设置的缺省优先级仅对新增的静态路由有效。
l 设置静态路由的Tag值,可以在路由策略中根据Tag值对路由进行灵活的控制。
l 在使用ip route-static配置静态路由时,如果将目的地址与掩码配置为全零(0.0.0.0 0.0.0.0),则表示配置的是缺省路由。
当网络发生故障或者拓扑发生变化后,可能会出现路由不可达,导致网络中断,因此为了提升现有网络的稳定性,需要对静态路由下一跳的可达性进行快速检测,当下一跳不可达时可以快速切换到备份路由。
如果在配置静态路由时只指定了下一跳而没有指定出接口,可以通过将静态路由与Track项相关联,利用Track项的状态来控制静态路由有效性。当Track项状态为positive时,静态路由的下一跳可达,配置的静态路由将生效;当Track项状态为negative时,静态路由的下一跳可不达,配置的静态路由无效。关于Track的详细介绍,请参考“Track”部分。
通过配置Track项检测静态路由下一跳是否可达,则需要创建Track项,具体配置过程请参考“Track”部分。
表1-2 配置静态路由与Track项相关联检测下一跳是否可达
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置静态路由与Track项相关联检测下一跳是否可达 |
ip route-static dest-address { mask | mask-length } next-hop-address track track-entry-number [ preference preference-value ] [ tag tag-value ] [ description description-text ] |
必选 缺省情况下,没有为静态路由下一跳指定Track项序号 |
& 说明:
l 配置静态路由支持Track监测功能,该条静态路由可以是已经创建的,也可以是未创建的。对于已经创建的静态路由,只是将静态路由与Track项关联,并根据Track项的状态来判断静态路由的有效性;对于未创建的静态路由,首先要生成该静态路由,然后将其与Track项关联。
l 需要注意在静态路由进行迭代时,Track项监测的应该是静态路由真正的下一跳,而不是配置的下一跳。否则,可能导致错误地将有效路由判断为无效路由。
在完成上述配置后,在任意视图下执行display命令查看静态路由配置的运行情况并检验配置结果。
在系统视图下执行delete命令可以删除配置的所有静态路由。
表1-3 静态路由显示和维护
操作 |
命令 |
查看当前的配置文件信息 |
display current-configuration |
查看IP路由表摘要信息 |
display ip routing-table |
查看IP路由表详细信息 |
display ip routing-table verbose |
查看静态路由表信息 |
display ip routing-table protocol static [ inactive | verbose ] |
删除所有静态路由 |
delete static-routes all |
交换机、AC各接口及主机的IP地址和掩码如下图所示。要求采用静态路由,使图中任意两台主机之间都能互通。
图1-1 静态路由配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置静态路由
# 在Switch A上配置缺省路由。
<Switch A> system-view
[Switch A] ip route-static 0.0.0.0 0.0.0.0 1.1.4.2
# 在AC上配置两条静态路由。
<AC> system-view
[AC] ip route-static 1.1.2.0 255.255.255.0 1.1.4.1
[AC] ip route-static 1.1.3.0 255.255.255.0 1.1.5.6
# 在Switch B上配置缺省路由。
<Switch B> system-view
[Switch B] ip route-static 0.0.0.0 0.0.0.0 1.1.5.5
(3) 配置主机
配置Host A的缺省网关为1.1.2.3,Host B的缺省网关为1.1.6.1,Host C的缺省网关为1.1.3.1,具体配置过程略。
(4) 查看配置结果
# 显示Switch A的IP路由表。
[Switch A] display ip routing-table
Routing Tables: Public
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 Static 60 0 1.1.4.2 Vlan500
1.1.2.0/24 Direct 0 0 1.1.2.3 Vlan300
1.1.2.3/32 Direct 0 0 127.0.0.1 InLoop0
1.1.4.0/30 Direct 0 0 1.1.4.1 Vlan500
1.1.4.1/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
# 显示AC的IP路由表。
[AC] display ip routing-table
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost NextHop Interface
1.1.2.0/24 Static 60 0 1.1.4.1 Vlan500
1.1.3.0/24 Static 60 0 1.1.5.6 Vlan600
1.1.4.0/30 Direct 0 0 1.1.4.2 Vlan500
1.1.4.2/32 Direct 0 0 127.0.0.1 InLoop0
1.1.5.0/30 Direct 0 0 1.1.5.5 Vlan600
1.1.5.5/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
1.1.6.0/24 Direct 0 0 1.1.6.1 Vlan100
1.1.6.1/32 Direct 0 0 127.0.0.1 InLoop0
# 在Host A使用ping命令验证Host A与Host B、Host C之间的网络层是否互通。
& 说明:
l 本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。为提高可读性,在手册的描述中将不另行说明。
l 该交换板仅支持RIP单进程。
RIP(Routing Information Protocol,路由信息协议)是一种较为简单的内部网关协议(Interior Gateway Protocol,IGP),主要用于规模较小的网络中,比如校园网以及结构较简单的地区性网络。对于更为复杂的环境和大型网络,一般不使用RIP。
由于RIP的实现较为简单,在配置和维护管理方面也远比OSPF和IS-IS容易,因此在实际组网中仍有广泛地应用。
RIP是一种基于距离矢量(Distance-Vector,D-V)算法的协议,它通过UDP报文进行路由信息的交换,使用的端口号为520。
RIP使用跳数来衡量到达目的地址的距离,跳数称为度量值。在RIP中,路由器到与它直接相连网络的跳数为0,通过一个路由器可达的网络的跳数为1,其余依此类推。为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。由于这个限制,使得RIP不适合应用于大型网络。
为提高性能,防止产生路由环路,RIP支持水平分割(Split Horizon)和毒性逆转(Poison Reverse)功能。
每个运行RIP的路由器管理一个路由数据库,该路由数据库包含了到所有可达目的地的路由项,这些路由项包含下列信息:
l 目的地址:主机或网络的地址。
l 下一跳地址:为到达目的地,需要经过的相邻路由器的接口IP地址。
l 出接口:本路由器转发报文的出接口。
l 度量值:本路由器到达目的地的开销。
l 路由时间:从路由项最后一次被更新到现在所经过的时间,路由项每次被更新时,路由时间重置为0。
l 路由标记(Route Tag):用于标识外部路由,在路由策略中可根据路由标记对路由信息进行灵活的控制。关于路由策略的详细信息,请参见“路由策略配置”。
RIP受四个定时器的控制,分别是Update、Timeout、Suppress和Garbage-Collect。
l Update定时器,定义了发送路由更新的时间间隔。
l Timeout定时器,定义了路由老化时间。如果在老化时间内没有收到关于某条路由的更新报文,则该条路由在路由表中的度量值将会被设置为16。
l Suppress定时器,定义了RIP路由处于抑制状态的时长。当一条路由的度量值变为16时,该路由将进入抑制状态。在被抑制状态,只有来自同一邻居且度量值小于16的路由更新才会被路由器接收,取代不可达路由。
l Garbage-Collect定时器,定义了一条路由从度量值变为16开始,直到它从路由表里被删除所经过的时间。在Garbage-Collect时间内,RIP以16作为度量值向外发送这条路由的更新,如果Garbage-Collect超时,该路由仍没有得到更新,则该路由将从路由表中被彻底删除。
RIP是一种基于D-V算法的路由协议,由于它向邻居通告的是自己的路由表,存在发生路由环路的可能性。
RIP通过以下机制来避免路由环路的产生:
l 计数到无穷(Counting to infinity):将度量值等于16的路由定义为不可达(infinity)。在路由环路发生时,某条路由的度量值将会增加到16,该路由被认为不可达。
l 水平分割(Split Horizon):RIP从某个接口学到的路由,不会从该接口再发回给邻居路由器。这样不但减少了带宽消耗,还可以防止路由环路。
l 毒性逆转(Poison Reverse):RIP从某个接口学到路由后,将该路由的度量值设置为16(不可达),并从原接口发回邻居路由器。利用这种方式,可以清除对方路由表中的无用信息。
l 触发更新(Triggered Updates):RIP通过触发更新来避免在多个路由器之间形成路由环路的可能,而且可以加速网络的收敛速度。一旦某条路由的度量值发生了变化,就立刻向邻居路由器发布更新报文,而不是等到更新周期的到来。
RIP启动和运行的整个过程可描述如下:
l 路由器启动RIP后,便会向相邻的路由器发送请求报文(Request message),相邻的RIP路由器收到请求报文后,响应该请求,回送包含本地路由表信息的响应报文(Response message)。
l 路由器收到响应报文后,更新本地路由表,同时向相邻路由器发送触发更新报文,通告路由更新信息。相邻路由器收到触发更新报文后,又向其各自的相邻路由器发送触发更新报文。在一连串的触发更新广播后,各路由器都能得到并保持最新的路由信息。
l RIP在缺省情况下每隔30秒向相邻路由器发送本地路由表,运行RIP协议的相邻路由器在收到报文后,对本地路由进行维护,选择一条最佳路由,再向其各自相邻网络发送更新信息,使更新的路由最终能达到全局有效。同时,RIP采用老化机制对超时的路由进行老化处理,以保证路由的实时性和有效性。
RIP有两个版本:RIP-1和RIP-2。
RIP-1是有类别路由协议(Classful Routing Protocol),它只支持以广播方式发布协议报文。RIP-1的协议报文无法携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1不支持不连续子网(Discontiguous Subnet)。
RIP-2是一种无类别路由协议(Classless Routing Protocol),与RIP-1相比,它有以下优势:
l 支持路由标记,在路由策略中可根据路由标记对路由进行灵活的控制。
l 报文中携带掩码信息,支持路由聚合和CIDR(Classless Inter-Domain Routing,无类域间路由)。
l 支持指定下一跳,在广播网上可以选择到最优下一跳地址。
l 支持组播路由发送更新报文,减少资源消耗。
l 支持对协议报文进行验证,并提供明文验证和MD5验证两种方式,增强安全性。
& 说明:
RIP-2有两种报文传送方式:广播方式和组播方式,缺省将采用组播方式发送报文,使用的组播地址为224.0.0.9。当接口运行RIP-2广播方式时,也可接收RIP-1的报文。
RIP报文由头部(Header)和多个路由表项(Route Entries)部分组成。在一个RIP报文中,最多可以有25个路由表项。
RIP-1的报文格式如图2-1所示。
图2-1 RIP-1的报文格式
各字段的解释如下:
l Command:标识报文的类型。值为1时表示Request报文,值为2表示Response报文。
l Version:RIP的版本号。对于RIP-1来说其值为0x01。
l AFI(Address Family Identifier):地址族标识,其值为2时表示IP协议。
l IP Address:该路由的目的IP地址,可以是自然网段地址、子网地址或主机地址。
l Metric:路由的度量值。
RIP-2的报文格式与RIP-1类似,如图2-2所示。
图2-2 RIP-2的报文格式
其中,与RIP-1不同的字段有:
l Version:RIP的版本号。对于RIP-2来说其值为0x02。
l Route Tag:路由标记。
l IP Address:该路由的目的IP地址,可以是自然网段地址、子网地址或主机地址。
l Subnet Mask:目的地址的掩码。
l Next Hop:如果为0.0.0.0,则表示发布此条路由信息的路由器地址就是最优下一跳地址,否则表示提供了一个比发布此条路由信息的路由器更优的下一条地址。
RIP-2为了支持报文验证,使用第一个路由表项(Route Entry)作为验证项,并将AFI字段的值设为0xFFFF标识报文携带认证信息,如图2-3所示。
图2-3 RIP-2的验证报文格式
各字段的解释如下:
l Authentication Type:验证类型。值为2时表示明文验证,值为3时表示MD5验证。
l Authentication:验证字,当使用明文验证时包含了密码信息;当使用MD5验证时包含了Key ID、MD5验证数据长度和序列号的信息。
& 说明:
l RFC1723中只定义了明文验证方式,关于MD5验证的详细信息,请参考RFC2082“RIP-2 MD5 Authentication”。
l 当RIP的版本为RIP-1时,虽然在接口视图下仍然可以配置验证方式,但由于RIP-1不支持认证,因此该配置不会生效。
目前设备支持以下RIP特性:
l 支持RIP-1。
l 支持RIP-2。
与RIP相关的协议规范有:
l RFC1058:Routing Information Protocol
l RFC1723:RIP Version 2 - Carrying Additional Information
l RFC1721:RIP Version 2 Protocol Analysis
l RFC1722:RIP Version 2 Protocol Applicability Statement
l RFC1724:RIP Version 2 MIB Extension
l RFC2082:RIP-2 MD5 Authentication
在配置RIP的基本功能之前,需配置接口的网络层地址,使相邻节点的网络层可达。
表2-1 启动RIP,配置指定的接口运行RIP
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
创建RIP进程并进入RIP视图 |
rip [ process-id ] |
必选 缺省情况下,RIP进程处于关闭状态 |
在指定网段接口上使能RIP |
network network-address |
必选 缺省情况下,接口上的RIP功能处于关闭状态 |
& 说明:
l 如果在启动RIP前在接口视图下配置了RIP相关命令,这些配置只有在RIP启动后才会生效。
l RIP只在指定网段的接口上运行;对于不在指定网段上的接口,RIP既不在它上面接收和发送路由,也不将它的接口路由转发出去。因此,RIP启动后必须指定其工作网段。
l network 0.0.0.0命令用来在所有接口上使能RIP。
用户可对接口的工作状态进行配置:
l 配置接口工作在抑制状态,即接口只接收路由更新报文而不发送路由更新报文。
l 配置接口接收RIP报文。
l 配置接口发送RIP报文。
表2-2 配置接口的工作状态
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置接口工作在抑制状态 |
silent-interface { all | interface-type interface-number } |
可选 缺省情况下,所有使能RIP的接口发送路由更新报文 |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
允许接口接收RIP报文 |
rip input |
可选 缺省情况下,所有使能RIP的接口接收RIP报文 |
允许接口发送RIP报文 |
rip output |
可选 缺省情况下,所有使能RIP的接口发送RIP报文 |
用户可以在RIP视图下配置RIP版本,也可在接口上配置RIP版本:
l 当全局和接口都没有进行RIP版本配置时,接口发送RIP-1广播报文,可以接收RIP-1广播报文、RIP-1单播报文、RIP-2广播报文、RIP-2组播报文、RIP-2单播报文。
l 只有在接口上没有进行RIP版本配置时,全局配置才会生效,否则将以接口配置的为准。
l 当接口运行的RIP版本为RIP-1时,发送RIP-1广播报文,可以接收RIP-1广播报文、RIP-1单播报文。
l 当接口运行的RIP版本为RIP-2且工作在组播方式时,发送RIP-2组播报文,可以接收RIP-2单播报文、RIP-2广播报文、RIP-2组播报文。
l 当接口运行的RIP版本为RIP-2且工作在广播方式时,发送RIP-2广播报文,可以接收RIP-1广播报文、RIP-1单播报文、RIP-2广播报文、RIP-2组播报文、RIP-2单播报文。
表2-3 配置RIP版本号
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置全局RIP版本 |
version { 1 | 2 } |
可选 缺省情况下,如果接口配置了RIP版本,以接口配置的为准;如果接口没有配置,接口只能发送RIP-1广播报文,可以接收RIP-1广播报文、RIP-1单播报文、RIP-2广播报文、RIP-2组播报文、RIP-2单播报文 |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口运行的RIP版本 |
rip version { 1 | 2 [ broadcast | multicast ] } |
可选 |
在实际应用中,有时候需要对RIP路由信息进行更为精确的控制以满足复杂网络环境的需要,在配置RIP路由特性之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达。
l 配置RIP基本功能。
附加度量值是在RIP路由原来度量值的基础上所增加的度量值,包括发送附加度量值和接收附加度量值。发送附加度量值不会改变路由表中的路由度量值,仅当接口发送RIP路由信息时才会添加到发送路由上;接收附加度量值会影响接收到的路由度量值,接口接收到一条合法的RIP路由时,在将其加入路由表前会把度量值附加到该路由上。
表2-4 配置接口附加度量值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口接收RIP路由时的附加度量值 |
rip metricinvalue |
可选 缺省情况下,接口接收RIP路由时的附加度量值为0 |
配置接口发送RIP路由时的附加度量值 |
rip metricoutvalue |
可选 缺省情况下,接口发送RIP路由时的附加路由度量值为1 |
路由聚合是指将同一自然网段内的不同子网的路由聚合成一条自然掩码的路由向外(其它网段)发送,目的是为了减小路由表的规模,从而减少网络上的流量。
RIP-2支持路由聚合。
需要注意的是,当需要将所有子网路由广播出去时,需要关闭RIP-2的自动路由聚合功能。
表2-5 配置RIP-2自动路由聚合功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
使能RIP-2自动路由聚合功能 |
summary |
可选 缺省情况下,RIP-2自动路由聚合功能处于使能状态 |
用户可在指定接口配置RIP-2发布一条聚合路由。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
关闭RIP-2自动路由聚合功能 |
undo summary |
必选 缺省情况下,RIP-2自动路由聚合功能处于使能状态 |
退至系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置发布一条聚合路由 |
rip summary-address ip-address { mask | mask-length } |
必选 |
& 说明:
在接口配置发布一条聚合路由时必须关闭RIP-2的自动路由聚合功能。
在某些特殊情况下,路由器会收到大量来自同一网段的主机路由。这些路由对于路由寻址没有多少作用,却占用了大量的资源;此时可配置RIP禁止接收主机路由,以节省网络资源。
表2-7 禁止RIP接收主机路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
禁止RIP接收主机路由 |
undo host-route |
必选 缺省情况下,允许RIP接收主机路由 |
& 说明:
禁止接收主机路由仅对RIPv2有效,对RIPv1无效。
用户可以用指定度量值向RIP邻居发布一条缺省路由。
表2-8 配置RIP发布缺省路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置RIP发布缺省路由 |
default-route originate cost value |
必选 缺省情况下,不向RIP邻居发送缺省路由 |
& 说明:
配置发布缺省路由的RIP路由器不接收来自RIP邻居的缺省路由。
路由器提供路由信息过滤功能,通过指定访问控制列表和地址前缀列表,可以配置入口或出口过滤策略,对接收和发布的路由进行过滤。在接收路由时,还可以指定只接收来自某个邻居的RIP报文。
表2-9 配置RIP对接收/发布的路由进行过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
对接收的路由信息进行过滤 |
filter-policy { acl-number | gateway ip-prefix-name | ip-prefix ip-prefix-name [ gateway ip-prefix-name ] } import [ interface-type interface-number ] |
必选 缺省情况下,RIP不对接收的路由信息进行过滤 |
对发布的路由信息进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ protocol [ process-id ] | interface-type interface-number ] |
必选 缺省情况下,RIP不对发布的路由信息进行过滤 |
& 说明:
l filter-policy import命令对从邻居收到的RIP路由进行过滤,没有通过过滤的路由将不被加入路由表,也不向邻居发布该路由。
l filter-policy export命令对本机所有路由的发布进行过滤,包括使用import-route引入的路由和从邻居学到的RIP路由。
在路由器中可能会运行多个IGP路由协议,如果想让RIP路由具有比从其它路由协议学来的路由更高的优先级,需要配置小的优先级值。优先级的高低将最后决定IP路由表中的路由是通过哪种路由算法获取的最佳路由。
表2-10 配置RIP协议优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置RIP路由的优先级 |
preference value |
可选 缺省情况下,RIP路由的优先级为100 |
表2-11 配置RIP引入外部路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置引入路由的缺省度量值 |
default cost value |
可选 缺省情况下,引入路由的缺省度量值为0 |
引入外部路由 |
import-route protocol [ cost cost | tag tag ] * |
必选 缺省情况下,RIP不引入其它路由 |
在某些特殊的网络环境中,需要对RIP网络的性能进行调整和优化,在调整RIP之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达。
l 配置RIP基本功能。
表2-12 配置RIP定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置RIP定时器的值 |
timers { garbage-collect garbage-collect-value | suppress suppress-value | timeout timeout-value | update update-value } * |
可选 缺省情况下: l Update定时器的值为30秒 l Timeout定时器的值为180秒 l Suppress定时器的值为120秒 l Garbage-collect定时器的值为120秒 |
& 说明:
在配置RIP定时器时需要注意,定时器值的调整应考虑网络的性能,并在所有运行RIP的路由器上进行统一配置,以免增加不必要的网络流量或引起网络路由震荡。
& 说明:
如果同时配置了水平分割和毒性逆转,则只有毒性逆转功能生效。
配置水平分割可以使得从一个接口学到的路由不能通过此接口向外发布,用于避免相邻路由器间的路由环路。
表2-13 配置水平分割
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能水平分割功能 |
rip split-horizon |
可选 缺省情况下,水平分割功能处于使能状态 |
& 说明:
在点到点链路上关闭水平分割功能是无效的。
配置毒性逆转可以使得从一个接口学到的路由还可以从这个接口向外发布,但这些路由的度量值已设置为16,即不可达。
表2-14 配置毒性逆转
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能毒性逆转功能 |
rip poison-reverse |
必选 缺省情况下,毒性逆转功能处于关闭状态 |
RIP-1报文中的有些字段必须为零,称之为零域。用户可配置RIP-1在接收报文时对零域进行检查,零域值不为零的RIP-1报文将不被处理。如果用户能确保所有报文都是可信任的,则可以不进行该项检查,以节省CPU处理时间。
表2-15 配置RIP-1报文的零域检查
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
使能对RIP-1报文的零域检查功能 |
checkzero |
可选 缺省情况下,对RIP-1报文的零域检查功能处于使能状态 |
通过配置对接收到的RIP路由更新报文进行源IP地址检查:
l 对于在接口上接收的报文,RIP将检查该报文源地址和接口的IP地址是否处于同一网段,如果不在同一网段则丢弃该报文。
l 对于串口上接收的报文,RIP检查该报文的源地址是否是对端接口的IP地址,如果不是则丢弃该报文。
表2-16 配置源地址检查
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
使能对接收到的RIP路由更新报文进行源IP地址检查功能 |
validate-source-address |
可选 缺省情况下,对接收到的RIP路由更新报文进行源IP地址检查功能处于使能状态 |
& 说明:
当存在RIP非直连的邻居时,应该取消源地址检查。
RIP-2支持两种认证方式:明文认证和MD5密文认证。
明文认证不能提供安全保障,未加密的认证字随报文一同传送,所以明文认证不能用于安全性要求较高的情况。
表2-17 配置RIP-2报文的认证方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置RIP-2报文的认证方式 |
rip authentication-mode { md5 { rfc2082 key-string key-id | rfc2453 key-string } | simple password } |
必选 |
通常情况下,RIP使用广播或组播地址发送报文,如果在不支持广播或组播报文的链路上运行RIP,则必须手工指定RIP的邻居;需要注意的是,当指定的邻居和本地路由器非直接连接,则必须取消对更新报文的源地址进行检查。
表2-18 配置RIP邻居
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置RIP邻居 |
peer ip-address |
必选 缺省情况下,RIP不向任何定点地址发送更新报文 |
取消对接收到的RIP路由更新报文进行源IP地址检查操作 |
undo validate-source-address |
必选 缺省情况下,对接收到的RIP路由更新报文进行源IP地址检查 |
& 说明:
需要注意的是,当RIP邻居与当前设备直连时不推荐使peer ip-address命令,因为这样可能会造成对端同时收到同一路由信息的组播(或广播)和单播两种形式的报文。
在完成上述配置后,在任意视图下执行display命令可以显示配置后RIP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除指定RIP进程维护的计数器的统计信息。
表2-19 RIP显示和维护
命令 |
|
显示RIP的当前运行状态及配置信息 |
display rip [ process-id ] |
显示RIP发布数据库的所有激活路由 |
display rip process-id database |
显示RIP的接口信息 |
display rip process-id interface [ interface-type interface-number ] |
显示指定RIP进程的路由信息 |
display rip process-id route [ statistics | ip-address { mask | mask-length } | peer ip-address ] |
清除指定RIP进程维护的计数器的统计信息 |
reset rip process-id statistics |
如图2-4所示,要求在AC和Switch的所有接口上使能RIP,并使用RIP-2进行网络互连。
图2-4 配置RIP的版本
(1) 配置各接口的IP地址(略)
(2) 配置RIP基本功能
# 配置AC。
<AC> system-view
[AC] rip
[AC-rip-1] network 192.168.1.0
[AC-rip-1] network 172.16.0.0
[AC-rip-1] network 172.17.0.0
[AC-rip-1] quit
# 配置Switch。
<Switch> system-view
[Switch] rip
[Switch-rip-1] network 192.168.1.0
[Switch-rip-1] network 10.0.0.0
[Switch-rip-1] quit
# 查看AC的RIP路由表。
[AC] display rip 1 route
Route Flags: R - RIP, T - TRIP
P - Permanent, A - Aging, S - Suppressed, G - Garbage-collect
--------------------------------------------------------------------------
Peer 192.168.1.2 on Vlan-interface100
Destination/Mask Nexthop Cost Tag Flags Sec
10.0.0.0/8 192.168.1.2 1 0 RA 11
从路由表中可以看出,RIP-1发布的路由信息使用的是自然掩码。
(3) 配置RIP的版本
# 在AC上配置RIP-2。
[AC] rip
[AC-rip-1] version 2
[AC-rip-1] undo summary
# 在Switch上配置RIP-2。
[Switch] rip
[Switch-rip-1] version 2
[Switch-rip-1] undo summary
# 查看AC的RIP路由表。
[AC] display rip 1 route
Route Flags: R - RIP, T - TRIP
P - Permanent, A - Aging, S - Suppressed, G - Garbage-collect
--------------------------------------------------------------------------
Peer 192.168.1.2 on Vlan-interface100
Destination/Mask Nexthop Cost Tag Flags Sec
10.2.1.0/24 192.168.1.2 1 0 RA 16
10.1.1.0/24 192.168.1.2 1 0 RA 16
从路由表中可以看出,RIP-2发布的路由中带有更为精确的子网掩码信息。
& 说明:
由于RIP路由信息的老化时间较长,所以在配置RIP-2版本后的一段时间里,路由表中可能还会存在RIP-1的路由信息。
在链路正常的情况下收不到邻居的RIP更新报文。
RIP启动后,必须使用network命令使能相应的接口。如果对接口的工作状态单独进行了配置,应确认没有抑制相关接口或禁止其收发RIP报文。
如果在对端路由器上配置的是组播方式发送RIP报文,在本地路由器上也应该配置为组播方式。
(1) 执行display current-configuration命令,检查RIP的配置。
(2) 执行display rip命令,检查是否抑制了相关RIP接口。
在链路正常的情况下,运行RIP的网络发生路由振荡,查看路由表时发现部分路由时有时无。
在RIP网络中,应确保全网定时器的配置一致,且各定时器之间的关系合理,如Timeout定时器的值应大于Update定时器的值。
(1) 使用display rip命令查看RIP定时器的配置。
(2) 使用timers命令将全网的定时器配置一致。
& 说明:
l 本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。为提高可读性,在手册的描述中将不另行说明;
l WX6103无线控制器交换板只支持静态路由、RIP和OSPF路由协议,不支持BGP和ISIS;
l WX6103无线控制器交换板只支持Ethernet链路层协议,因此OSPF接口网络类型只能为广播类型,其他类型均不支持。
OSPF(Open Shortest Path First,开放最短路径优先)是IETF组织开发的一个基于链路状态的内部网关协议。目前针对IPv4协议使用的是OSPF Version 2(RFC 2328)。
& 说明:
本章若没有特别说明,下文中所提到的OSPF均指OSPFv2。
OSPF具有如下特点:
l 适应范围广——支持各种规模的网络,最多可支持几百台路由器。
l 快速收敛——在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
l 无自环——由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
l 区域划分——允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。
l 等价路由——支持到同一目的地址的多条等价路由。
l 路由分级——使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
l 支持验证——支持基于接口的报文验证,以保证报文交互和路由计算的安全性。
l 组播发送——在某些类型的链路上以组播地址发送协议报文,减少对其他设备的干扰。
一组使用相同路由协议交换路由信息的路由器,缩写为AS。
OSPF协议路由的计算过程可简单描述如下:
l 每台OSPF路由器根据自己周围的网络拓扑结构生成LSA(Link State Advertisement,链路状态通告),并通过更新报文将LSA发送给网络中的其它OSPF路由器。
l 每台OSPF路由器都会收集其它路由器通告的LSA,所有的LSA放在一起便组成了LSDB(Link State Database,链路状态数据库)。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。
l OSPF路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。各个路由器得到的有向图是完全相同的。
l 每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。
一台路由器如果要运行OSPF协议,则必须存在RID(Router ID,路由器ID)。RID是一个32比特无符号整数,可以在一个自治系统中唯一的标识一台路由器。
RID可以手工配置,也可以自动生成;如果没有通过命令指定RID,将按照如下顺序自动生成一个RID:
l 如果当前设备配置了Loopback接口,将选取所有Loopback接口上数值最大的IP地址作为RID;
l 如果当前设备没有配置Loopback接口,将选取它所有已经配置IP地址且链路有效的接口上数值最大的IP地址作为RID。
OSPF有五种类型的协议报文:
l Hello报文:周期性发送,用来发现和维持OSPF邻居关系。内容包括一些定时器的数值、DR(Designated Router,指定路由器)、BDR(Backup Designated Router,备份指定路由器)以及自己已知的邻居。
l DD(Database Description,数据库描述)报文:描述了本地LSDB中每一条LSA的摘要信息,用于两台路由器进行数据库同步。
l LSR(Link State Request,链路状态请求)报文:向对方请求所需的LSA。两台路由器互相交换DD报文之后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。
l LSU(Link State Update,链路状态更新)报文:向对方发送其所需要的LSA。
l LSAck(Link State Acknowledgment,链路状态确认)报文:用来对收到的LSA进行确认。内容是需要确认的LSA的Header(一个报文可对多个LSA进行确认)。
OSPF中对链路状态信息的描述都是封装在LSA中发布出去,常用的LSA有以下几种类型:
l Router LSA(Type1):由每个路由器产生,描述路由器的链路状态和开销,在其始发的区域内传播。
l Network LSA(Type2):由DR产生,描述本网段所有路由器的链路状态,在其始发的区域内传播。
l Network Summary LSA(Type3):由ABR(Area Border Router,区域边界路由器)产生,描述区域内某个网段的路由,并通告给其他区域。
l ASBR Summary LSA(Type4):由ABR产生,描述到ASBR(Autonomous System Boundary Router,自治系统边界路由器)的路由,通告给相关区域。
l AS External LSA(Type5):由ASBR产生,描述到AS(Autonomous System,自治系统)外部的路由,通告到所有的区域(除了Stub区域和NSSA区域)。
l NSSA External LSA(Type7):由NSSA(Not-So-Stubby Area)区域内的ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。
l Opaque LSA:是一个被提议的LSA类别,由标准的LSA头部后面跟随特殊应用的信息组成,可以直接由OSPF协议使用,或者由其它应用分发信息到整个OSPF域间接使用。Opaque LSA分为Type 9、Type10、Type11三种类型,泛洪区域不同;其中,Type 9的Opaque LSA仅在本地链路范围进行泛洪,Type 10的Opaque LSA仅在本地区域范围进行泛洪,Type 11的LSA可以在一个自治系统范围进行泛洪。
在OSPF中,邻居(Neighbor)和邻接(Adjacency)是两个不同的概念。
OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文。收到Hello报文的OSPF路由器会检查报文中所定义的参数,如果双方一致就会形成邻居关系。
形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD报文,交换LSA并达到LSDB的同步之后,才形成真正意义上的邻接关系。
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,路由器数量的增多会导致LSDB非常庞大,占用大量的存储空间,并使得运行SPF算法的复杂度增加,导致CPU负担很重。
在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“振荡”之中,造成网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。
OSPF协议通过将自治系统划分成不同的区域(Area)来解决上述问题。区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。如图3-1所示。
图3-1 OSPF区域划分
区域的边界是路由器,而不是链路。一个路由器可以属于不同的区域,但是一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。划分区域后,可以在区域边界路由器上进行路由聚合,以减少通告到其他区域的LSA数量,还可以将网络拓扑变化带来的影响最小化。
OSPF路由器根据在AS中的不同位置,可以分为以下四类:
(1) 区域内路由器(Internal Router)
该类路由器的所有接口都属于同一个OSPF区域。
(2) 区域边界路由器ABR(Area Border Router)
该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域(骨干区域的介绍请参见下一小节)。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
(3) 骨干路由器(Backbone Router)
该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。
(4) 自治系统边界路由器ASBR
与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它有可能是区域内路由器,也有可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
图3-2 OSPF路由器的类型
(1) 骨干区域(Backbone Area)
OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号(Area ID)是0,通常被称为骨干区域。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此,OSPF有两个规定:
l 所有非骨干区域必须与骨干区域保持连通;
l 骨干区域自身也必须保持连通。
但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通过配置OSPF虚连接(Virtual Link)予以解决。
(2) 虚连接(Virtual Link)
虚连接是指在两台ABR之间通过一个非骨干区域而建立的一条逻辑上的连接通道。它的两端必须是ABR,而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区(Transit Area)。
在图3-3中,Area2与骨干区域之间没有直接相连的物理链路,但可以在ABR上配置虚连接,使Area2通过一条逻辑链路与骨干区域保持连通。
虚连接的另外一个应用是提供冗余的备份链路,当骨干区域因链路故障不能保持连通时,通过虚连接仍然可以保证骨干区域在逻辑上的连通性。如图3-4所示。
虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,在这个连接上,和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。
两台ABR之间直接传递OSPF报文信息,它们之间的OSPF路由器只是起到一个转发报文的作用。由于协议报文的目的地址不是中间这些路由器,所以这些报文对于它们而言是透明的,只是当作普通的IP报文来转发。
Stub区域是一些特定的区域,Stub区域的ABR不允许注入Type5 LSA,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。
为了进一步减少Stub区域中路由器的路由表规模以及路由信息传递的数量,可以将该区域配置为Totally Stub(完全Stub)区域,该区域的ABR不会将区域间的路由信息和外部路由信息传递到本区域。
(Totally) Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,(Totally) Stub区域位于自治系统的边界。
为保证到本自治系统的其他区域或者自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由,并发布给本区域中的其他非ABR路由器。
配置(Totally) Stub区域时需要注意下列几点:
l 骨干区域不能配置成(Totally) Stub区域。
l 如果要将一个区域配置成(Totally) Stub区域,则该区域中的所有路由器必须都要配置stub [ no-summary ]命令。
l (Totally) Stub区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
l 虚连接不能穿过(Totally) Stub区域。
NSSA(Not-So-Stubby Area)区域是Stub区域的变形,与Stub区域有许多相似的地方。NSSA区域也不允许Type5 LSA注入,但可以允许Type7 LSA注入。Type7 LSA由NSSA区域的ASBR产生,在NSSA区域内传播。当Type7 LSA到达NSSA的ABR时,由ABR将Type7 LSA转换成Type5 LSA,传播到其他区域。
如图3-5所示,运行OSPF协议的自治系统包括3个区域:区域1、区域2和区域0,另外两个自治系统运行RIP协议。区域1被定义为NSSA区域,区域1接收的RIP路由传播到NSSA ASBR后,由NSSA ASBR产生Type7 LSA在区域1内传播,当Type7 LSA到达NSSA ABR后,转换成Type5 LSA传播到区域0和区域2。
另一方面,运行RIP的自治系统的RIP路由通过区域2的ASBR产生Type5 LSA在OSPF自治系统中传播。但由于区域1是NSSA区域,所以Type5 LSA不会到达区域1。
与Stub区域一样,虚连接也不能穿过NSSA区域。
路由聚合是指ABR或ASBR将具有相同前缀的路由信息聚合,只发布一条路由到其它区域。
AS被划分成不同的区域后,每一个区域通过OSPF边界路由器(ABR)相连,区域间可以通过路由聚合来减少路由信息,减小路由表的规模,提高路由器的运算速度。
ABR在计算出一个区域的区域内路由之后,根据聚合相关设置,将其中多条OSPF路由聚合成一条发送到区域之外。
例如,图3-6中,Area 1内有三条区域内路由19.1.1.0/24,19.1.2.0/24,19.1.3.0/24,如果此时在Router A上配置了路由聚合,将三条路由聚合成一条19.1.0.0/16,则Router A就只生成一条聚合后的LSA,并发布给Area0中的其他路由器。
OSPF有两类聚合:
(1) ABR聚合
ABR向其它区域发送路由信息时,以网段为单位生成Type3 LSA。如果该区域中存在一些连续的网段,则可以将这些连续的网段聚合成一个网段。这样ABR只发送一条聚合后的LSA,所有属于聚合网段范围的LSA将不再会被单独发送出去,这样可减少其它区域中LSDB的规模。
(2) ASBR聚合
配置引入路由聚合后,如果本地路由器是自治系统边界路由器ASBR,将对引入的聚合地址范围内的Type5 LSA进行聚合。当配置了NSSA区域时,还要对引入的聚合地址范围内的Type7 LSA进行聚合。
如果本地路由器是ABR,则对由Type7 LSA转化成的Type5 LSA进行聚合处理。
OSPF将路由分为四类,按照优先级从高到低的顺序依次为:
l 区域内路由(Intra Area)
l 区域间路由(Inter Area)
l 第一类外部路由(Type1 External)
l 第二类外部路由(Type2 External)
区域内和区域间路由描述的是AS内部的网络结构,外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPF将引入的AS外部路由分为两类:Type1和Type2。
第一类外部路由是指接收的是IGP(Interior Gateway Protocol,内部网关协议)路由(例如静态路由和RIP路由)。由于这类路由的可信程度较高,并且和OSPF自身路由的开销具有可比性,所以到第一类外部路由的开销等于本路由器到相应的ASBR的开销与ASBR到该路由目的地址的开销之和。
第二类外部路由是指接收的是EGP(Exterior Gateway Protocol,外部网关协议)路由。由于这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以计算路由开销时将主要考虑前者,即到第二类外部路由的开销等于ASBR到该路由目的地址的开销。如果计算出开销值相等的两条路由,再考虑本路由器到相应的ASBR的开销。
OSPF根据链路层协议类型将网络分为下列四种类型:
l 广播(Broadcast)类型:当链路层协议是Ethernet、FDDI时,OSPF缺省认为网络类型是Broadcast。在该类型的网络中,通常以组播形式(224.0.0.5和224.0.0.6)发送协议报文。
l NBMA(Non-Broadcast Multi-Access,非广播多点可达网络)类型:当链路层协议是帧中继、ATM或X.25时,OSPF缺省认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文。
l P2MP(Point-to-MultiPoint,点到多点)类型:没有一种链路层协议会被缺省的认为是P2MP类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将NBMA改为点到多点的网络。在该类型的网络中,缺省情况下,以组播形式(224.0.0.5)发送协议报文。
l P2P(Point-to-Point,点到点)类型:当链路层协议是PPP、HDLC时,OSPF缺省认为网络类型是P2P。在该类型的网络中,以组播形式(224.0.0.5)发送协议报文。
NBMA网络是指非广播、多点可达的网络,比较典型的有ATM和帧中继网络。
对于接口的网络类型为NBMA的网络需要进行一些特殊的配置。由于无法通过广播Hello报文的形式发现相邻路由器,必须手工为该接口指定相邻路由器的IP地址,以及该相邻路由器是否有DR选举权等。
NBMA网络必须是全连通的,即网络中任意两台路由器之间都必须有一条虚电路直接可达。如果部分路由器之间没有直接可达的链路时,应将接口配置成P2MP类型。如果路由器在NBMA网络中只有一个对端,也可将接口类型配置为P2P类型。
NBMA与P2MP网络之间的区别如下:
l NBMA网络是指那些全连通的、非广播、多点可达网络。而P2MP网络,则并不需要一定是全连通的。
l 在NBMA网络中需要选举DR与BDR,而在P2MP网络中没有DR与BDR。
l NBMA是一种缺省的网络类型,而P2MP网络必须是由其它的网络强制更改的。最常见的做法是将NBMA网络改为P2MP网络。
l NBMA网络采用单播发送报文,需要手工配置邻居。P2MP网络采用组播方式发送报文。
在广播网和NBMA网络中,任意两台路由器之间都要交换路由信息。如果网络中有n台路由器,则需要建立n(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF协议定义了指定路由器DR(Designated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态发送出去。
如果DR由于某种故障而失效,则网络中的路由器必须重新选举DR,再与新的DR同步。这需要较长的时间,在这段时间内,路由的计算是不正确的。为了能够缩短这个过程,OSPF提出了BDR(Backup Designated Router,备份指定路由器)的概念。
BDR实际上是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR。由于不需要重新选举,并且邻接关系事先已建立,所以这个过程是非常短暂的。当然这时还需要再重新选举出一个新的BDR,虽然一样需要较长的时间,但并不会影响路由的计算。
运行OSPF进程的网络中,既不是DR也不是BDR的路由器为DR Other。DR Other
仅与DR和BDR之间建立邻接关系,DR Other之间不交换任何路由信息。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量,同时减少网络流量,节约了带宽资源。
如图3-7所示,用实线代表以太网物理连接,虚线代表建立的邻接关系。可以看到,采用DR/BDR机制后,5台路由器之间只需要建立7个邻接关系就可以了。
图3-7 DR和BDR示意图
DR和BDR是由同一网段中所有的路由器根据路由器优先级、Router ID通过HELLO报文选举出来的,只有优先级大于0的路由器才具有选举资格。
进行DR/BDR选举时每台路由器将自己选出的DR写入Hello报文中,发给网段上的每台运行OSPF协议的路由器。当处于同一网段的两台路由器同时宣布自己是DR时,路由器优先级高者胜出。如果优先级相等,则Router ID大者胜出。如果一台路由器的优先级为0,则它不会被选举为DR或BDR。
需要注意的是:
l 只有在广播或NBMA类型接口才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。
l DR是某个网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DR Other。
l 路由器的优先级可以影响DR/BDR的选举过程,但是当DR/BDR已经选举完毕,就算一台具有更高优先级的路由器变为有效,也不会替换该网段中已经存在的DR/BDR成为新的DR/BDR。
l DR并不一定就是路由器优先级最高的路由器接口;同理,BDR也并不一定就是路由器优先级次高的路由器接口。
OSPF报文直接封装为IP报文协议报文,协议号为89。一个比较完整的OSPF报文(以LSU报文为例)结构如图3-8所示。
图3-8 OSPF报文结构
OSPF有五种报文类型,它们有相同的报文头。如图3-9所示。
图3-9 OSPF报文头格式
主要字段的解释如下:
l Version:OSPF的版本号。对于OSPFv2来说,其值为2。
l Type:OSPF报文的类型。数值从1到5,分别对应Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。
l Packet length:OSPF报文的总长度,包括报文头在内,单位为字节。
l Router ID:始发该LSA的路由器的ID。
l Area ID:始发LSA的路由器所在的区域ID。
l Checksum:对整个报文的校验和。
l AuType:验证类型。可分为不验证、简单(明文)口令验证和MD5验证,其值分别为0、1、2。
l Authentication:其数值根据验证类型而定。当验证类型为0时未作定义,为1时此字段为密码信息,类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。
& 说明:
MD5验证数据添加在OSPF报文后面,不包含在Authenticaiton字段中。
最常用的一种报文,周期性的发送给邻居路由器用来维持邻居关系以及DR/BDR的选举,内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。Hello报文格式如图3-10所示。
图3-10 Hello报文格式
主要字段解释如下:
l Network Mask:发送Hello报文的接口所在网络的掩码,如果相邻两台路由器的网络掩码不同,则不能建立邻居关系。
l HelloInterval:发送Hello报文的时间间隔。如果相邻两台路由器的Hello间隔时间不同,则不能建立邻居关系。
l Rtr Pri:路由器优先级。如果设置为0,则该路由器接口不能成为DR/BDR。
l RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。如果相邻两台路由器的失效时间不同,则不能建立邻居关系。
l Designated Router:指定路由器的接口的IP地址。
l Backup Designated Router:备份指定路由器的接口的IP地址。
l Neighbor:邻居路由器的Router ID。
两台路由器进行数据库同步时,用DD报文来描述自己的LSDB,内容包括LSDB中每一条LSA的摘要(摘要是指LSA的Header,通过该Header可以唯一标识一条LSA)。这样做是为了减少路由器之间传递信息的量,因为LSA的Header只占一条LSA的整个数据量的一小部分,根据Header,对端路由器就可以判断出是否已有这条LSA。
DD报文格式如图3-11所示。
图3-11 DD报文格式
主要字段的解释如下:
l Interface MTU:在不分片的情况下,此接口最大可发出的IP报文长度。
l I(Initial):当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。
l M(More):当连续发送多个DD报文时,如果这是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。
l MS(Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主(Master)从(Slave)关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。
l DD Sequence Number:DD报文序列号,由Master方规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。主从双方利用序列号来保证DD报文传输的可靠性和完整性。
两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。LSR报文格式如图3-12所示。
图3-12 LSR报文格式
主要字段解释如下:
l LS type:LSA的类型号。例如Type1表示Router LSA。
l Link State ID:链路状态标识,根据LSA的类型而定。
l Advertising Router:产生此LSA的路由器的Router ID。
LSU报文用来向对端路由器发送其所需要的LSA,内容是多条LSA(全部内容)的集合。LSU报文格式如图3-13所示。
图3-13 LSU报文格式
主要字段解释如下:
Number of LSAs:该报文包含的LSA的数量。
LSAs:该报文包含的所有LSA。
LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header。一个LSAck报文可对多个LSA进行确认。报文格式如图3-14所示。
图3-14 LSAck报文格式
主要字段解释如下:
LSA Headers:该报文包含的LSA头部。
所有的LSA都有相同的报文头,其格式如图3-15所示。
图3-15 LSA的头格式
主要字段的解释如下:
l LS age:LSA产生后所经过的时间,以秒为单位。LSA在本路由器的链路状态数据库(LSDB)中会随时间老化(每秒钟加1),但在网络的传输过程中却不会。
l LS type:LSA的类型。
l Link State ID:具体数值根据LSA的类型而定。
l Advertising Router:始发LSA的路由器的ID。
l LS sequence number:LSA的序列号,其他路由器根据这个值可以判断哪个LSA是最新的。
l LS checksum:除了LS age字段外,关于LSA的全部信息的校验和。
l length:LSA的总长度,包括LSA Header,以字节为单位。
(1) Router LSA
主要字段的解释如下:
l Link State ID:产生此LSA的路由器的Router ID。
l V(Virtual Link):如果产生此LSA的路由器是虚连接的端点,则置为1。
l E(External):如果产生此LSA的路由器是ASBR,则置为1。
l B(Border):如果产生此LSA的路由器是ABR,则置为1。
l # links:LSA中所描述的链路信息的数量,包括路由器上处于某区域中的所有链路和接口。
l Link ID:链路标识,具体的数值根据链路类型而定。
l Link Data:链路数据,具体的数值根据链路类型而定。
l Type:链路类型,取值为1表示通过点对点链路与另一路由器相连,取值为2表示连接到传送网络,取值为3表示连接到Stub网络,取值为4表示虚连接。
l #TOS:描述链路的不同方式的数量。
l metric:链路的开销。
l TOS:服务类型。
l TOS metric:指定服务类型的链路的开销。
(2) Network LSA
Network LSA由广播网或NBMA网络中的DR发出,LSA中记录了这一网段上所有路由器的Router ID。
主要字段的解释如下:
l Link State ID:DR的IP地址。
l Network Mask:广播网或NBMA网络地址的掩码。
l Attached Router:连接在同一个网段上的所有与DR形成了完全邻接关系的路由器的Router ID,也包括DR自身的Router ID。
(3) Summary LSA
Network Summary LSA(Type3 LSA)和ASBR Summary LSA(Type4 LSA)除Link State ID字段有所不同外,有着相同的格式,它们都是由ABR产生。
主要字段的解释如下:
l Link State ID:对于Type3 LSA来说,它是所通告的区域外的网络地址;对于Type4来说,它是所通告区域外的ASBR的Router ID。
l Network Mask:Type3 LSA的网络地址掩码。对于Type4 LSA来说没有意义,设置为0.0.0.0。
l metric:到目的地址的路由开销。
& 说明:
Type3的LSA可以用来通告缺省路由,此时Link State ID和Network Mask都设置为0.0.0.0。
(4) AS External LSA
由ASBR产生,描述到AS外部的路由信息。
主要字段的解释如下:
l Link State ID:所要通告的其他外部AS的目的地址,如果通告的是一条缺省路由,那么链路状态ID(Link State ID)和网络掩码(Network Mask)字段都将设置为0.0.0.0。
l Network Mask:所通告的目的地址的掩码。
l E(External Metric):外部度量值的类型。如果是第2类外部路由就设置为1,如果是第1类外部路由则设置为0。关于外部路由类型的详细描述请参见3.1.2 7. 路由类型部分。
l metirc:路由开销。
l Forwarding Address:到所通告的目的地址的报文将被转发到的地址。
l External Route Tag:添加到外部路由上的标记。OSPF本身并不使用这个字段,它可以用来对外部路由进行管理。
(5) NSSA External LSA
由NSSA区域内的ASBR产生,且只能在NSSA区域内传播。其格式与AS External LSA相同,如图3-20所示。
OSPF支持多进程,在同一台路由器上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。支持多个OSPF进程公用一个RID。
路由器的一个接口只能属于某一个OSPF进程。
OSPF支持报文验证功能,只有通过验证的OSPF报文才能接收,否则将不能正常建立邻居关系。
一个区域中所有的接口的验证类型(不支持验证、支持明文验证或者支持MD5密文验证)必须一致。一个网段中所有接口的验证字口令必须一致。
& 说明:
有关GR(Graceful Restart,平滑重启)的原理介绍请参见 “路由-GR概述”。
基于OSPF的GR Restarter进行协议重启后,为了与其OSPF邻居重新同步链路状态数据库,它必须完成下列两项任务:
l 在不改变邻接关系的前提下,重新获取网络中的有效OSPF邻居信息;
l 重新获取网络链路状态数据库的内容。
在OSPF协议重启前,GR Restarter产生Grace-LSA协商GR能力。在重启过程中,GR Helper继续宣告与GR Restarter的邻接状态不变。
OSPF协议重启完毕后,GR Restarter会立即向其邻接的GR Helper发送一个OSPF GR信号。这样,OSPF邻居就不会复位与其的邻居关系。在收到其OSPF邻居的响应后,GR Restarter会重新恢复与其的邻居关系列表。
邻居关系重新建立后,GR Restarter与其所有具备GR感知能力的OSPF邻居之间同步数据库,并交换路由信息。交换完成后,GR Restarter根据新的路由转发信息更新路由表和转发表,删除失效的路由,完成OSPF协议收敛。
与OSPF相关的协议规范有:
l RFC 1765:OSPF Database Overflow
l RFC 2328:OSPF Version 2
l RFC 3101:OSPF Not-So-Stubby Area (NSSA) Option
l RFC 3137:OSPF Stub Router Advertisement
表3-1 OSPF配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置OSPF基本功能 |
必选 |
||
配置OSPF的区域特性 |
可选 |
||
配置OSPF的路由信息控制 |
配置OSPF路由聚合 |
可选 |
|
配置OSPF对接收的路由进行过滤 |
可选 |
||
配置对Type-3 LSA进行过滤 |
可选 |
||
配置OSPF的链路开销 |
可选 |
||
配置OSPF支持的路由最大数目 |
可选 |
||
配置OSPF最大等价路由条数 |
可选 |
||
配置OSPF的协议优先级 |
可选 |
||
配置OSPF引入外部路由 |
可选 |
||
配置OSPF网络调整优化 |
配置OSPF报文定时器 |
可选 |
|
配置接口传送LSA的延迟时间 |
可选 |
||
配置SPF计算时间间隔 |
可选 |
||
配置LSA重复到达的最小时间间隔 |
可选 |
||
配置LSA重新生成的时间间隔 |
可选 |
||
禁止接口发送OSPF报文 |
可选 |
||
配置Stub路由器 |
可选 |
||
配置OSPF验证 |
可选 |
||
配置DD报文中的MTU |
可选 |
||
配置LSDB中External LSA的最大数量 |
可选 |
||
配置兼容RFC1583的外部路由选择规则 |
可选 |
||
配置邻接状态输出 |
可选 |
||
配置OSPF网管功能 |
可选 |
||
使能不透明链路状态发布接收能力 |
可选 |
||
配置OSPF GR |
配置GR Restarter |
可选 |
|
配置GR Helper |
可选 |
||
重启OSPF GR进程 |
可选 |
在OSPF的各项配置任务中,必须先启动OSPF、指定接口和区域号后,才能配置其它的功能特性。
在配置OSPF之前,需配置接口的网络层地址,使各相邻节点网络层可达。
OSPF基本功能配置包括:
l 配置路由器的ID。
为保证OSPF运行的稳定性,在进行网络规划时应该确定路由器ID的划分并建议手工配置。手工配置路由器的ID时,必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个接口的IP地址一致。
l 创建OSPF进程。
目前,系统支持OSPF多进程,当在一台路由器上启动多个OSPF进程时,需要指定不同的进程号。OSPF进程号是本地概念,不影响与其它路由器之间的报文交换。因此,不同的路由器之间,即使进程号不同也可以进行报文交换。
l 配置区域和区域所包含的网段。用户需要首先对自治域内的区域做好规划,然后在路由器上进行相应的配置。
在配置同一区域内的路由器时,大多数的配置数据都应该以区域为基础来统一考虑。错误的配置可能会导致相邻路由器之间无法相互传递信息,甚至导致路由信息的阻塞或者产生路由环。
表3-2 配置OSPF基本功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动OSPF,进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
必选 缺省情况下,系统不运行OSPF |
配置OSPF进程描述 |
description description |
可选 缺省情况下,没有配置进程描述 |
配置OSPF区域,进入OSPF区域视图 |
area area-id |
必选 缺省情况下,没有配置OSPF区域 |
配置区域描述 |
description description |
可选 缺省情况下,没有配置区域描述 |
配置区域所包含的网段并在指定网段的接口上使能OSPF |
network ip-address wildcard-mask |
必选 缺省情况下,接口不属于任何区域且OSPF功能处于关闭状态 |
& 说明:
l OSPF的进程ID是唯一的。
l 一个网段只能属于一个区域,并且必须为每个运行OSPF协议的接口指明属于某一个特定的区域。
l 建议用户为每个OSPF进程配置进程描述信息,帮助识别进程的用途,以便于记忆和管理。
l 建议用户为每个区域配置区域描述信息,帮助识别区域的用途,以便于记忆和管理。
通过配置接口的路由器优先级可以影响网络中DR/BDR的选择。
表3-3 配置OSPF接口的路由器优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口的路由器优先级 |
ospf dr-priority priority |
可选 缺省情况下,接口的路由器优先级为1 |
OSPF划分区域后,可以减少网络中LSA的数量,OSPF的扩展性也得以增强。对于位于AS边缘的一些非骨干区域,为了更多的缩减其路由表规模和降低LSA的数量,可以将它们配置为Stub区域。
Stub区域不能引入外部路由,为此又产生了NSSA区域的概念。NSSA区域中允许Type7 LSA(NSSA External LSA)的传播。Type7 LSA由NSSA区域的ASBR产生,当它到达NSSA区域的ABR时,就会转换成Type5 LSA(AS External LSA),并通告到其他区域。
在划分区域之后,非骨干区域之间的OSPF路由更新是通过骨干区域来完成交换的。对此,OSPF要求所有非骨干区域必须与骨干区域保持连通,并且骨干区域自身也要保持连通。
但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通过配置OSPF虚连接予以解决。
在配置OSPF的区域特性之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达
l 配置OSPF基本功能
表3-4 配置OSPF的区域特性
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置当前区域为Stub区域 |
stub [ no-summary ] |
可选 缺省情况下,没有区域被设置为Stub区域 |
配置当前区域为NSSA区域 |
nssa [ default-route-advertise | no-import-route | no-summary ] * |
可选 缺省情况下,没有区域被设置为NSSA区域 |
配置发送到Stub区域或者NSSA区域缺省路由的开销 |
default-cost cost |
可选 缺省情况下,发送到Stub区域或者NSSA区域的缺省路由的开销为1 |
创建并配置虚连接 |
vlink-peer router-id [ hello seconds | retransmit seconds | trans-delay seconds | dead seconds | simple [ plain | cipher ] password | { md5 | hmac-md5 } key-id [ plain | cipher ] password ] * |
可选 为使虚连接生效,在虚连接的两端都需配置此命令,并且两端配置的hello、dead等参数必须一致 |
配置并发布一条主机路由 |
host-advertise ip-address cost |
可选 缺省情况下,OSPF不发布主机路由 |
& 说明:
l 所有连接到Stub区域的路由器必须使用stub命令将该区域配置成Stub属性。
l 所有连接到NSSA区域的路由器必须使用nssa命令将该区域配置成NSSA属性。
l default-cost命令只有在Stub区域的ABR或NSSA区域的ABR/ASBR上配置才能生效。
通过本节的配置,可以控制OSPF的路由信息的发布与接收,并引入其他协议的路由。
在配置OSPF路由信息控制之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点之间网络层可达
l 配置OSPF基本功能
l 如果对路由信息进行过滤,则需要配置对应的过滤列表
表3-5 配置ABR路由聚合
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置OSPF的ABR路由聚合 |
abr-summary ip-address { mask | mask-length } [ advertise | not-advertise ] [ cost cost ] |
必选 此命令只有在ABR上配置才会有效 缺省情况下,ABR不会对路由进行聚合 |
表3-6 配置ASBR路由聚合
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置OSPF的ASBR路由聚合 |
asbr-summary ip-address { mask | mask-length } [ tag tag | not-advertise | cost cost ] * |
必选 此命令只有在ASBR上配置才会有效 缺省情况下,ASBR不会对引入的路由进行聚合 |
表3-7 配置OSPF对接收的路由进行过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置对接收的路由进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name | gateway ip-prefix-name } import |
必选 缺省情况下,不对接收到的路由信息进行过滤 |
& 说明:
由于OSPF是基于链路状态的动态路由协议,路由信息隐藏在链路状态通告中,所以不能对发布和接收的LSA进行过滤。filter-policy import命令实际上是对OSPF计算出来的路由进行过滤,只有通过过滤的路由才被添加到路由表中。
表3-8 配置对Type-3 LSA进行过滤
操作 |
命令 |
|
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置对Type-3 LSA进行过滤 |
filter { acl-number | ip-prefix ip-prefix-name } { import | export } |
必选 缺省情况下,没有对Type-3 LSA进行过滤 |
表3-9 配置OSPF接口的开销值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置OSPF接口的开销值 |
ospf cost value |
可选 缺省情况下,接口按照当前的带宽自动计算开销。对于交换机的VLAN接口,该值缺省为1 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置带宽参考值 |
bandwidth-reference value |
可选 缺省情况下,带宽参考值为100Mbps |
& 说明:
如果没有在接口视图下显式的配置此接口的开销值,OSPF会根据该接口的带宽自动计算其开销值。计算公式为:接口开销=带宽参考值÷接口带宽,当计算出来的开销值大于65535,开销取最大值65535。
表3-11 配置OSPF支持的路由最大数目
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置OSPF支持的路由最大数目 |
maximum-routes { external | inter | intra } number |
可选 缺省情况下,路由的最大数目为12288条 |
如果到一个目的地有几条开销相同的路径,可以实现等价路由负载分担,IP报文在这几个链路上轮流发送,以提高链路利用率。该配置用以设置OSPF协议的最大等价路由条数。
表3-12 配置OSPF最大等价路由条数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置OSPF最大等价路由条数 |
maximum load-balancing maximum |
可选 缺省情况下,最大等价路由条数为4 |
由于路由器上可能同时运行多个动态路由协议,就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级,在不同协议发现同一条路由时,优先级高的路由将被优先选择。
表3-13 配置OSPF协议的优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置OSPF协议的路由优先级 |
preference [ ase ] [ route-policy route-policy-name ] value |
可选 缺省情况下,OSPF内部路由的优先级为10,OSPF外部路由的优先级为150 |
表3-14 配置OSPF引入外部路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置OSPF引入其它协议的路由 |
import-route protocol [ process-id ] [ cost cost | type type | tag tag | route-policy route-policy-name ] * |
必选 缺省情况下,没有引入其他协议的路由信息 |
配置对引入的路由进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ protocol [ process-id ] ] |
可选 缺省情况下,没有对引入的路由信息进行过滤 |
配置OSPF引入缺省路由 |
default-route-advertise [ always | cost cost | type type | route-policy route-policy-name ] * |
可选 缺省情况下,没有引入缺省路由 |
default-route-advertise summary cost cost |
||
配置引入外部路由时的参数缺省值(开销、路由数量、标记、类型) |
default { cost cost | limit limit | tag tag | type type } * |
可选 缺省情况下,OSPF引入外部路由的缺省值如下: 路由度量值为1 单位时间内引入外部路由数量的上限为1000 外部路由标记值为1 引入的外部路由类型为Type2 |
& 说明:
l import-route命令不能引入外部路由的缺省路由,如果要引入缺省路由,必须要使用default-route-advertise命令。
l default-route-advertise summary cost命令仅在VPN中应用,以Type-3 LSA引入缺省路由,PE路由器会将引入的缺省路由发布给CE路由器。目前无线控制器交换板不支持VPN特性,所以不支持该命令。
l OSPF对引入的路由进行过滤,是指OSPF只将满足条件的外部路由转换为Type5 LSA或Type7 LSA并发布出去。
l 当OSPF引入外部路由时,还可以配置一些额外参数的缺省值,如开销、路由数量、标记和类型。路由标记可以用来标识协议相关的信息,如OSPF引入BGP时可以将自治系统的编号作为路由标记。
用户可以从以下几个方面来调整和优化OSPF网络:
l 通过改变OSPF的报文定时器,可以调整OSPF网络的收敛速度以及协议报文带来的网络负荷。在一些低速链路上,需要考虑接口传送LSA的延迟时间。
l 通过调整SPF计算间隔时间,可以抑制由于网络频繁变化带来的资源消耗问题。
l 在安全性较高的网络中,可以通过配置OSPF验证特性,来提高OSPF网络的安全性。
l OSPF同时支持网管功能,可以配置OSPF MIB与某一进程绑定,以及发送Trap消息和日志功能。
在调整和优化OSPF网络之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点之间网络层可达
l 配置OSPF基本功能
用户可以在接口上配置下列OSPF报文定时器:
l Hello定时器:接口向邻居发送Hello报文的时间间隔,OSPF邻居之间的Hello定时器的值要保持一致,且应与路由收敛速度、网络负荷大小成反比。
l Poll定时器:在NBMA网络中,路由器向状态为Down的邻居路由器发送轮询Hello报文的时间间隔。
l 邻居失效时间:在邻居失效时间内,如果接口还没有收到邻居发送的Hello报文,路由器就会宣告该邻居无效。
l 接口重传LSA的时间间隔:路由器向它的邻居通告一条LSA后,需要对方进行确认。若在重传间隔时间内没有收到对方的确认报文,就会向邻居重传这条LSA。
表3-15 配置OSPF报文定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置Hello定时器 |
ospf timer hello seconds |
可选 缺省情况下,P2P、Broadcast类型接口发送Hello报文的时间间隔为10秒,P2MP、NBMA类型接口发送Hello报文的时间间隔为30秒 |
配置Poll定时器 |
ospf timer poll seconds |
可选 缺省情况下,发送轮询Hello报文的时间间隔为120秒 |
配置邻居失效时间 |
ospf timer dead seconds |
可选 缺省情况下,P2P、Broadcast类型接口的OSPF邻居失效时间为40秒,P2MP、NBMA类型接口的OSPF邻居失效时间为120秒 |
配置接口重传LSA的时间间隔 |
ospf timer retransmit interval |
可选 缺省情况下,时间间隔为5秒 |
& 说明:
l 修改了网络类型后,Hello定时器与邻居失效时间都将恢复缺省值。
l 在同一接口上邻居失效时间应至少为Hello时间间隔的4倍。
l 轮询Hello报文的时间间隔至少应为Hello时间间隔的4倍。
l 相邻路由器重传LSA时间间隔的值不要设置得太小,否则将会引起不必要的重传。通常应该大于一个报文在两台路由器之间传送一个来回的时间。
考虑到OSPF报文在链路上传送时也需要花费时间,所以LSA的老化时间(age)在传送之前要增加一定的延迟时间,在低速链路上需要对该项配置进行重点考虑。
表3-16 配置接口传送LSA的延迟时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口传送LSA的延迟时间 |
ospf trans-delay seconds |
可选 缺省情况下,接口传送LSA的延迟时间为1秒 |
当OSPF的链路状态数据库(LSDB)发生改变时,需要重新计算最短路径。如果网络频繁变化,且每次变化都立即计算最短路径,将会占用大量系统资源,并影响路由器的效率。通过调节连续两次SPF计算的最小间隔时间,可以抑制由于网络频繁变化带来的影响。
表3-17 配置SPF计算时间间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置SPF计算时间间隔 |
spf-schedule-interval maximum-interval [ minimum-interval [ incremental-interval ] ] |
可选 缺省情况下,SPF计算的时间间隔为5秒 |
& 说明:
本命令在网络变化不频繁的情况下将连续路由计算的时间间隔缩小到minimum-interval,而在网络变化频繁的情况下可以进行相应惩罚,增加incremental-interval·2n-2 (n为连续触发路由计算的次数),将等待时间按照配置的惩罚增量延长,最大不超过maximum-interval。
表3-18 配置LSA的重复接收最小间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置LSA重复到达的最小时间间隔 |
lsa-arrival-interval interval |
可选 缺省情况下,LSA重复到达的最小时间间隔为1000毫秒 |
& 说明:
建议lsa-arrival-interval命令配置的interval小于或等于lsa-generation-interval命令所配置的minimum-interval。
通过调节LSA重新生成的时间间隔,可以抑制网络频繁变化可能导致的占用过多带宽资源和路由器资源。
表3-19 配置LSA发送间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置LSA重新生成的时间间隔 |
lsa-generation-interval maximum-interval [ initial-interval [ incremental-interval ] ] |
可选 缺省情况下,最大时间间隔为5秒,最小时间间隔为0毫秒,惩罚增量为5000毫秒 |
& 说明:
本命令在网络变化不频繁的情况下将LSA重新生成时间间隔缩小到minimum-interval,而在网络变化频繁的情况下可以进行相应惩罚,增加incremental-interval×2n-2(n为连续触发路由计算的次数),将等待时间按照配置的惩罚增量延长,最大不超过maximum-interval。
如果要使OSPF路由信息不被某一网络中的路由器获得,可以禁止接口发送OSPF报文。
表3-20 禁止接口发送OSPF报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
禁止接口发送OSPF报文 |
silent-interface { all | interface-type interface-number } |
可选 缺省情况下,允许接口发送OSPF报文 |
& 说明:
l 不同的进程可以对同一接口禁止发送OSPF报文,但silent-interface命令只对本进程已经使能的OSPF接口起作用,对其它进程的接口不起作用。
l 将运行OSPF协议的接口指定为Silent状态后,该接口的直连路由仍可以由同一路由器的其它接口通过Router-LSA发布出去,但OSPF报文将被阻塞,接口上无法建立邻居关系。这样可以增强OSPF的组网适应能力,减少系统资源的消耗。
Stub路由器用来控制流量,它告知其他OSPF路由器不要使用这个Stub路由器来转发数据,但可以拥有一个到Stub路由器的路由。
通过将当前路由器配置为Stub路由器,在该路由器发布的Router-LSA中,当链路类型取值为3表示连接到Stub网络时,链路度量值不变;当链路类型为1、2、4分别表示通过点对点链路与另一路由器相连、连接到传送网络、虚连接时,链路度量值将设置为最大值65535。
这样其邻居计算出这条路由的开销就会很大,如果邻居上有到这个目的地址开销更小的路由,则数据不会通过这个Stub路由器转发。
表3-21 配置Stub路由器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置Stub路由器 |
stub-router |
必选 缺省情况下,没有路由器被配置为Stub路由器 |
& 说明:
Stub路由器与Stub区域无关。
OSPF支持报文验证功能,只有通过验证的报文才能接收,否则将不能正常建立邻居。
表3-22 配置OSPF验证
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置OSPF区域的验证模式 |
authentication-mode { simple | md5 } |
必选 缺省情况下,没有配置区域验证模式 |
退回OSPF视图 |
quit |
- |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口的验证模式(简单验证) |
ospf authentication-mode simple [ plain | cipher ] password |
可选 缺省情况下,接口不对OSPF报文进行验证 |
配置OSPF接口的验证模式(MD5验证) |
ospf authentication-mode { md5 | hmac-md5 } key-id [ plain | cipher ] password |
& 说明:
一个区域中所有的路由器的验证类型必须一致,一个网段中所有路由器的验证字口令也必须一致。
一般情况下,接口发送DD报文时不使用接口的实际MTU值,而是用0代替。进行此配置后,将使用接口的实际MTU值填写DD报文Interface MTU字段。
表3-23 配置DD报文中的MTU
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置DD报文中MTU域的值为发送该报文接口的MTU值 |
ospf mtu-enable |
可选 缺省情况下,接口发送的DD报文中MTU域的值为0 |
表3-24 配置LSDB中External LSA的最大数量
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置LSDB中External LSA的最大数量 |
lsdb-overflow-limit number |
可选 缺省情况下,LSDB中External LSA的最大条目数无限制 |
当通过多条LSA计算出同一条外部路由时,在RFC 2328中定义的选路规则与RFC 1583的有所不同,进行此配置可以兼容RFC 1583中定义的方式。
表3-25 配置兼容RFC1583的外部路由选择规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置兼容RFC 1583的外部路由选择规则 |
rfc1583 compatible |
可选 缺省情况下,使能兼容RFC 1583的选路规则 |
表3-26 配置邻接状态输出
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
使能OSPF日志记录功能,记录邻居关系连接以及断开事件的日志信息 |
log-peer-change |
可选 缺省情况下,使能OSPF日志记录功能 |
表3-27 配置OSPF网管功能
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
配置OSPF MIB绑定 |
ospf mib-binding process-id |
可选 缺省情况下,MIB绑定在第一个启动的OSPF进程上。 |
使能OSPF的TRAP功能 |
snmp-agent trap enable ospf [ process-id ] [ ifauthfail | ifcfgerror | ifrxbadpkt | ifstatechange | iftxretransmit | lsdbapproachoverflow | lsdboverflow | maxagelsa | nbrstatechange | originatelsa | vifcfgerror | virifauthfail | virifrxbadpkt | virifstatechange | viriftxretransmit | virnbrstatechange ] * |
可选 缺省情况下,OSPF的TRAP功能处于使能状态 |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
使能日志信息 |
enable log [ config | error | state ] |
可选 缺省情况下,关闭日志信息 |
通过使能Opaque LSA发布接收能力,OSPF可以接收和发布Type 9、Type 10和Type 11的Opaque LSA。
表3-28 使能不透明链路状态发布接收能力
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
使能Opaque LSA发布接收能力 |
opaque-capability enable |
可选 缺省情况下,Opaque LSA发布接收能力处于关闭状态 |
可以在GR Restarter上配置基于OSPF的IETF标准或非IETF标准的GR能力。
表3-29 配置IETF标准GR能力
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
使能Opaque LSA发布接收能力 |
opaque-capability enable |
必选 缺省情况下,Opaque LSA发布接收能力处于关闭状态 |
使能OSPF协议的IETF标准GR能力 |
graceful-restart ietf |
可选 缺省情况下,OSPF协议的IETF标准GR能力处于关闭状态 |
配置OSPF协议的GR重启间隔时间 |
graceful-restart interval timer |
可选 缺省情况下,OSPF协议的GR重启间隔时间为120秒 |
& 说明:
l 如果设备配置了graceful-restart ietf命令,则设备既可以作为GR Restarter,又可以作为GR Helper。
l 如果没有配置graceful-restart ietf命令,则设备仅作为GR Helper。
表3-30 配置非IETF标准GR能力
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
使能OSPF本地链路信令能力 |
enable link-local-signaling |
必选 缺省情况下,OSPF本地链路信令能力处于关闭状态 |
使能OSPF带外同步能力 |
enable out-of-band-resynchronization |
必选 缺省情况下,OSPF带外同步能力处于关闭状态 |
使能OSPF协议的非IETF标准GR能力 |
graceful-restart [ nonstandard ] |
可选 缺省情况下,OSPF协议的非IETF标准GR能力处于关闭状态 |
配置OSPF协议的GR重启间隔时间 |
graceful-restart interval timer |
可选 缺省情况下,OSPF协议的GR重启间隔时间为120秒 |
& 说明:
l 如果设备配置了graceful-restart命令,则设备既可以作为GR Restarter,又可以作为GR Helper。
l 如果没有配置graceful-restart命令,则设备仅作为GR Helper。
使能OSPF本地链路信令能力 |
enable link-local-signaling |
必选 缺省情况下,OSPF本地链路信令能力处于关闭状态 |
使能OSPF带外同步能力 |
enable out-of-band-resynchronization |
必选 缺省情况下,OSPF带外同步能力处于关闭状态 |
在路由器上进行如下操作均可以重新启动OSPF协议的GR进程,但是要求这些GR设备上必须预先使能以下四种能力:
l 本地链路信令能力;
l 带外同步能力;
l 不透明链路状态发布能力;
l IETF GR能力。
操作 |
命令 |
说明 |
重启OSPF协议的GR进程 |
reset ospf [ process-id ] process graceful-restart |
必选 请在用户视图下执行该命令 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后OSPF的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以复位OSPF计数器或连接。
表3-33 OSPF显示和维护
操作 |
命令 |
显示OSPF的概要信息 |
display ospf [ process-id ] brief |
显示OSPF的统计信息 |
display ospf [ process-id ] cumulative |
显示OSPF的LSDB信息 |
display ospf [ process-id ] lsdb [ brief | [ { ase | router | network | summary | asbr | nssa | opaque-link | opaque-area | opaque-as } [ link-state-id ] ] [ originate-router advertising-router-id | self-originate ] ] |
显示OSPF邻居的信息 |
display ospf [ process-id ] peer [ verbose | [ interface-type interface-number ] [ neighbor-id ] ] |
显示OSPF各区域邻居的统计信息 |
display ospf [ process-id ] peer statistics |
显示OSPF下一跳信息 |
display ospf [ process-id ] nexthop |
显示OSPF路由表的信息 |
display ospf [ process-id ] routing [ interface interface-type interface-number ] [ nexthop nexthop-address ] |
显示OSPF虚连接信息 |
display ospf [ process-id ] vlink |
显示OSPF请求列表 |
display ospf [ process-id ] request-queue [ interface-type interface-number ] [ neighbor-id ] |
显示OSPF重传列表 |
display ospf [ process-id ] retrans-queue [ interface-type interface-number ] [ neighbor-id ] |
显示OSPF ABR及ASBR信息 |
display ospf [ process-id ] abr-asbr |
显示OSPF接口信息 |
display ospf [ process-id ] interface [ all | interface-type interface-number ] |
显示OSPF错误信息 |
display ospf [ process-id ] error |
显示OSPF ASBR聚合信息 |
display ospf [ process-id ] asbr-summary [ ip-address { mask | mask-length } ] |
清除OSPF计数器 |
reset ospf [ process-id ] counters [ neighbor [ interface-type interface-number ] [ router-id ] ] |
重启OSPF进程 |
reset ospf [ process-id ] process [ graceful-restart ] |
清除OSPF引入的路由 |
reset ospf [ process-id ] redistribution |
& 说明:
在配置举例中,只列出了与OSPF配置相关的命令。
l 所有的交换机都运行OSPF,并将整个自治系统划分为3个区域。
l 其中AC和Switch A作为ABR来转发区域之间的路由。
l 配置完成后,每台设备都应学到AS内的到所有网段的路由。
图3-21 OSPF基本配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本配置
# 配置AC。
<AC> system-view
[AC] ospf
[AC-ospf-1] area 0
[AC-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[AC-ospf-1-area-0.0.0.0] quit
[AC-ospf-1] area 1
[AC-ospf-1-area-0.0.0.1] network 10.2.1.0 0.0.0.255
[AC-ospf-1-area-0.0.0.1] quit
[AC-ospf-1] quit
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] area 2
[SwitchA-ospf-1-area-0.0.0.2] network 10.3.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.2] quit
[SwitchA-ospf-1] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf
[SwitchB-ospf-1] area 1
[SwitchB-ospf-1-area-0.0.0.1] network 10.2.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.1] network 10.4.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.1] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf
[SwitchC-ospf-1] area 2
[SwitchC-ospf-1-area-0.0.0.2] network 10.3.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.2] network 10.5.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.2] quit
[SwitchC-ospf-1] quit
(3) 检验配置结果
# 查看AC的OSPF邻居。
[AC] display ospf peer verbose
OSPF Process 1 with Router ID 10.2.1.1
Neighbors
Area 0.0.0.0 interface 10.1.1.1(Vlan-interface100)'s neighbors
Router ID: 10.3.1.1 Address: 10.1.1.2 GR State: Normal
State: Full Mode: Nbr is Master Priority: 1
DR: 10.1.1.1 BDR: 10.1.1.2 MTU: 0
Dead timer due in 37 sec
Neighbor is up for 06:03:59
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
Neighbors
Area 0.0.0.1 interface 10.2.1.1(Vlan-interface200)'s neighbors
Router ID: 10.4.1.1 Address: 10.2.1.2 GR State: Normal
State: Full Mode: Nbr is Master Priority: 1
DR: 10.2.1.1 BDR: 10.2.1.2 MTU: 0
Dead timer due in 32 sec
Neighbor is up for 06:03:12
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
# 显示AC的OSPF路由信息。
[AC] display ospf routing
OSPF Process 1 with Router ID 10.2.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 10 Transit 10.2.1.1 10.2.1.1 0.0.0.1
10.3.1.0/24 4 Inter 10.1.1.2 10.3.1.1 0.0.0.0
10.4.1.0/24 13 Stub 10.2.1.2 10.4.1.1 0.0.0.1
10.5.1.0/24 14 Inter 10.1.1.2 10.3.1.1 0.0.0.0
10.1.1.0/24 2 Transit 10.1.1.1 10.2.1.1 0.0.0.0
Total Nets: 5
Intra Area: 3 Inter Area: 2 ASE: 0 NSSA: 0
# 显示AC的LSDB。
[AC] display ospf lsdb
OSPF Process 1 with Router ID 10.2.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.2.1.1 10.2.1.1 1069 36 80000012 0
Router 10.3.1.1 10.3.1.1 780 36 80000011 0
Network 10.1.1.1 10.2.1.1 1069 32 80000010 0
Sum-Net 10.5.1.0 10.3.1.1 780 28 80000003 12
Sum-Net 10.2.1.0 10.2.1.1 1069 28 8000000F 10
Sum-Net 10.3.1.0 10.3.1.1 780 28 80000014 2
Sum-Net 10.4.1.0 10.2.1.1 769 28 8000000F 13
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.2.1.1 10.2.1.1 769 36 80000012 0
Router 10.4.1.1 10.4.1.1 1663 48 80000012 0
Network 10.2.1.1 10.2.1.1 769 32 80000010 0
Sum-Net 10.5.1.0 10.2.1.1 769 28 80000003 14
Sum-Net 10.3.1.0 10.2.1.1 1069 28 8000000F 4
Sum-Net 10.1.1.0 10.2.1.1 1069 28 8000000F 2
Sum-Asbr 10.3.1.1 10.2.1.1 1069 28 8000000F 2
# 查看Switch C的路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 10.5.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 22 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.3.1.0/24 10 Transit 10.3.1.2 10.3.1.1 0.0.0.2
10.4.1.0/24 25 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.5.1.0/24 10 Stub 10.5.1.1 10.5.1.1 0.0.0.2
10.1.1.0/24 12 Inter 10.3.1.1 10.3.1.1 0.0.0.2
Total Nets: 5
Intra Area: 2 Inter Area: 3 ASE: 0 NSSA: 0
# 在Switch C上使用Ping进行测试连通性。
[SwitchC] ping 10.4.1.1
PING 10.4.1.1: 56 data bytes, press CTRL_C to break
Request time out
Reply from 10.4.1.1: bytes=56 Sequence=2 ttl=253 time=15 ms
Reply from 10.4.1.1: bytes=56 Sequence=3 ttl=253 time=1 ms
Reply from 10.4.1.1: bytes=56 Sequence=4 ttl=253 time=16 ms
Reply from 10.4.1.1: bytes=56 Sequence=5 ttl=253 time=1 ms
--- 10.4.1.1 ping statistics ---
5 packet(s) transmitted
4 packet(s) received
20.00% packet loss
round-trip min/avg/max = 1/8/16 ms
l 所有的交换机都运行OSPF,整个自治系统划分为3个区域。
l 其中AC和Switch A作为ABR来转发区域之间的路由,Switch C作为ASBR引入了外部路由(静态路由)。
l 要求将Area1配置为Stub区域,减少通告到此区域内的LSA数量,但不影响路由的可达性。
图3-22 配置OSPF Stub区域组网图
(1) 配置接口的IP地址(略)
(2) 配置OSPF(同前例3.9.1 )
(3) 配置Switch C引入静态路由
[SwitchC] ip route-static 3.1.2.1 24 10.5.1.2
[SwitchC] ospf
[SwitchC-ospf-1] import-route static
[SwitchC-ospf-1] quit
# 查看Switch B的ABR/ASBR信息。
[SwitchB] display ospf abr-asbr
OSPF Process 1 with Router ID 10.4.1.1
Routing Table to ABR and ASBR
Type Destination Area Cost Nexthop RtType
Intra 10.2.1.1 0.0.0.1 3 10.2.1.1 ABR
Inter 10.3.1.1 0.0.0.1 5 10.2.1.1 ABR
Inter 10.5.1.1 0.0.0.1 7 10.2.1.1 ASBR
# 查看Switch B的OSPF路由表。
[SwitchB] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 3 Transit 10.2.1.2 10.2.1.1 0.0.0.1
10.3.1.0/24 7 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1
10.5.1.0/24 17 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.1.1.0/24 5 Inter 10.2.1.1 10.2.1.1 0.0.0.1
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
3.1.2.0/24 1 Type2 1 10.2.1.1 10.5.1.1
Total Nets: 6
Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0
& 说明:
当Switch B所在区域为普通区域时,可以看到路由表中存在AS外部的路由。
(4) 配置Area1为Stub区域
# 配置AC。
[AC] ospf
[AC-ospf-1] area 1
[AC-ospf-1-area-0.0.0.1] stub
[AC-ospf-1-area-0.0.0.1] quit
[AC-ospf-1] quit
# 配置Switch B。
[SwitchB] ospf
[SwitchB-ospf-1] area 1
[SwitchB-ospf-1-area-0.0.0.1] stub
[SwitchB-ospf-1-area-0.0.0.1] quit
[SwitchB-ospf-1] quit
# 显示Switch B的OSPF路由表。
[SwitchB] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
0.0.0.0/0 4 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.2.1.0/24 3 Transit 10.2.1.2 10.2.1.1 0.0.0.1
10.3.1.0/24 7 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1
10.5.1.0/24 17 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.1.1.0/24 5 Inter 10.2.1.1 10.2.1.1 0.0.0.1
Total Nets: 6
Intra Area: 2 Inter Area: 4 ASE: 0 NSSA: 0
& 说明:
当把Switch B所在区域配置为Stub区域时,已经看不到AS外部的路由,取而代之的是一条缺省路由。
# 配置禁止向Stub区域通告Type3 LSA。
[AC] ospf
[AC-ospf-1] area 1
[AC-ospf-1-area-0.0.0.1] stub no-summary
[AC-ospf-1-area-0.0.0.1] quit
# 查看Switch B的OSPF路由表。
[SwitchB] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
0.0.0.0/0 4 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.2.1.0/24 3 Transit 10.2.1.2 10.4.1.1 0.0.0.1
10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1
Total Nets: 3
Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0
& 说明:
禁止向Stub区域通告Summary LSA后,Stub路由器的路由表项进一步减少,只保留了一条通往区域外部的缺省路由。
l 所有的交换机都运行OSPF,整个自治系统划分为3个区域。
l 其中AC和Switch A作为ABR来转发区域之间的路由。
l 要求将Area1配置为NSSA区域,同时将Switch B配置为ASBR引入外部路由(静态路由),且路由信息可正确的在AS内传播。
图3-23 配置OSPF NSSA区域组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF(同前例3.9.1 )
(3) 配置Area1区域为NSSA区域
# 配置AC。
[AC] ospf
[AC-ospf-1] area 1
[AC-ospf-1-area-0.0.0.1] nssa default-route-advertise no-summary
[AC-ospf-1-area-0.0.0.0] quit
[AC-ospf-1] quit
# 配置Switch B。
[SwitchB] ospf
[SwitchB-ospf-1] area 1
[SwitchB-ospf-1-area-0.0.0.1] nssa
[SwitchB-ospf-1-area-0.0.0.1] quit
[SwitchB-ospf-1] quit
& 说明:
建议在ABR(这里的AC)上配置default-route-advertise no-summary参数,这样可以减少NSSA路由器的路由表数量。其他NSSA路由器只需配置nssa命令就可以。
# 查看Switch B的OSPF路由表。
[SwitchB] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
0.0.0.0/0 65536 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.2.1.0/24 65535 Transit 10.2.1.2 10.4.1.1 0.0.0.1
10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1
Total Nets: 3
Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0
(4) 配置Switch B引入静态路由
[SwitchB] ip route-static 3.1.3.1 24 11.1.1.1
[SwitchB] ospf
[SwitchB-ospf-1] import-route static
[SwitchB-ospf-1] quit
# 查看Switch C的OSPF路由表。
[SwitchC-ospf-1] display ospf routing
OSPF Process 1 with Router ID 10.5.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 22 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.3.1.0/24 10 Transit 10.3.1.2 10.3.1.1 0.0.0.2
10.4.1.0/24 25 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.5.1.0/24 10 Stub 10.5.1.1 10.5.1.1 0.0.0.2
10.1.1.0/24 12 Inter 10.3.1.1 10.3.1.1 0.0.0.2
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
3.1.3.0/24 1 Type2 1 10.3.1.1 10.2.1.1
Total Nets: 6
Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0
& 说明:
在Switch C上可以看到NSSA区域引入的一条AS外部的路由。
l AC、Switch A、Switch B、Switch C在同一网段,运行OSPF协议;
l 配置AC为DR,Switch B为BDR。
图3-24 配置OSPF优先级的DR选择组网图
(1) 配置各接口的IP地址
(2) 配置OSPF基本功能
(3) 改变交换机接口的路由器优先级使AC成为DR,Switch B成为BDR。
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本功能
# 配置AC
<AC> system-view
[AC] router id 1.1.1.1
[AC] ospf
[AC-ospf-1] area 0
[AC-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
[AC-ospf-1-area-0.0.0.0] quit
[AC-ospf-1] quit
# 配置Switch A
<SwitchA> system-view
[SwitchA] router id 2.2.2.2
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] quit
# 配置Switch B
<SwitchB> system-view
[SwitchB] router id 3.3.3.3
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 配置Switch C
<SwitchC> system-view
[SwitchC] router id 4.4.4.4
[SwitchC] ospf
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
# 查看AC的邻居信息。
[AC] display ospf peer verbose
OSPF Process 1 with Router ID 1.1.1.1
Neighbors
Area 0.0.0.0 interface 192.168.1.1(Vlan-interface1)'s neighbors
Router ID: 2.2.2.2 Address: 192.168.1.2 GR State: Normal
State: 2-Way Mode: None Priority: 1
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 38 sec
Neighbor is up for 00:01:31
Authentication Sequence: [ 0 ]
Neighbor state change count: 2
Router ID: 3.3.3.3 Address: 192.168.1.3 GR State: Normal
State: Full Mode: Nbr is Master Priority: 1
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 31 sec
Neighbor is up for 00:01:28
Authentication Sequence: [ 0 ]
Neighbor state change count: 2
Router ID: 4.4.4.4 Address: 192.168.1.4 GR State: Normal
State: Full Mode: Nbr is Master Priority: 1
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 31 sec
Neighbor is up for 00:01:28
Authentication Sequence: [ 0 ]
Neighbor state change count: 2
可以看到Switch C为DR,Switch B为BDR。
(3) 配置接口上的路由器优先级
# 配置AC。
[AC] interface vlan-interface 1
[AC-Vlan-interface1] ospf dr-priority 100
[AC-Vlan-interface1] quit
# 配置Switch A。
[SwitchA] interface vlan-interface 1
[SwitchA-Vlan-interface1] ospf dr-priority 0
[SwitchA-Vlan-interface1] quit
# 配置Switch B。
[SwitchB] interface vlan-interface 1
[SwitchB-Vlan-interface1] ospf dr-priority 2
[SwitchB-Vlan-interface] quit
# 查看Switch C的邻居信息。
[SwitchC] display ospf peer verbose
OSPF Process 1 with Router ID 4.4.4.4
Neighbors
Area 0.0.0.0 interface 192.168.1.4(Vlan-interface1)'s neighbors
Router ID: 1.1.1.1 Address: 192.168.1.1 GR State: Normal
State: Full Mode:Nbr is Slave Priority: 100
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 31 sec
Neighbor is up for 00:11:17
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
Router ID: 2.2.2.2 Address: 192.168.1.2 GR State: Normal
State: Full Mode:Nbr is Slave Priority: 0
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 35 sec
Neighbor is up for 00:11:19
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
Router ID: 3.3.3.3 Address: 192.168.1.3 GR State: Normal
State: Full Mode:Nbr is Slave Priority: 2
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 33 sec
Neighbor is up for 00:11:15
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
可以看到,网络中DR/BDR并没有改变。
& 说明:
网络中DR/BDR已经存在的情况下,接口上的路由器优先级的配置并不会立即生效。
(4) 重启OSPF进程(略)
# 查看Switch C的邻居信息。
[SwitchC] display ospf peer verbose
OSPF Process 1 with Router ID 4.4.4.4
Neighbors
Area 0.0.0.0 interface 192.168.1.4(Vlan-interface1)'s neighbors
Router ID: 1.1.1.1 Address: 192.168.1.1 GR State: Normal
State: Full Mode: Nbr is Slave Priority: 100
DR: 192.168.1.1 BDR: 192.168.1.3 MTU: 0
Dead timer due in 39 sec
Neighbor is up for 00:01:40
Authentication Sequence: [ 0 ]
Neighbor state change count: 2
Router ID: 2.2.2.2 Address: 192.168.1.2 GR State: Normal
State: 2-Way Mode: None Priority: 0
DR: 192.168.1.1 BDR: 192.168.1.3 MTU: 0
Dead timer due in 35 sec
Neighbor is up for 00:01:44
Authentication Sequence: [ 0 ]
Neighbor state change count: 2
Router ID: 3.3.3.3 Address: 192.168.1.3 GR State: Normal
State: Full Mode: Nbr is Slave Priority: 2
DR: 192.168.1.1 BDR: 192.168.1.3 MTU: 0
Dead timer due in 39 sec
Neighbor is up for 00:01:41
Authentication Sequence: [ 0 ]
Neighbor state change count: 2
可以看到AC成为DR,Switch B为BDR。
& 说明:
l 如果邻居的状态是Full,这说明它和邻居之间形成了邻接关系;
l 如果邻居的状态是2-Way,则说明它们都不是DR或BDR,两者之间不需要交换LSA。
# 查看OSPF接口的状态。
[AC] display ospf interface
OSPF Process 1 with Router ID 1.1.1.1
Interfaces
Area: 0.0.0.0
IP Address Type State Cost Pri DR BDR
192.168.1.1 Broadcast DR 1 100 192.168.1.1 192.168.1.3
[SwitchA] display ospf interface
OSPF Process 1 with Router ID 2.2.2.2
Interfaces
Area: 0.0.0.0
IP Address Type State Cost Pri DR BDR
192.168.1.2 Broadcast DROther 1 0 192.168.1.1 192.168.1.3
& 说明:
如果OSPF接口的状态是DROther,则说明它既不是DR,也不是BDR。
l Area2与Area0没有直接相连。Area1被用作传输区域(Transit Area)来连接Area2和Area0。AC和Switch之间配置一条虚连接。
l 配置完成后,AC能够学到Area2中的路由。
图3-25 配置OSPF虚链路组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本功能
# 配置AC。
<AC> system-view
[AC] ospf 1 router-id 1.1.1.1
[AC-ospf-1] area 0
[AC-ospf-1-area-0.0.0.0] network 10.0.0.0 0.255.255.255
[AC-ospf-1-area-0.0.0.0] quit
[AC-ospf-1] area 1
[AC-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255
[AC-ospf-1-area-0.0.0.1] quit
# 配置Switch。
<Switch> system-view
[Switch] ospf 1 router-id 2.2.2.2
[Switch-ospf-1] area 1
[Switch-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255
[Switch-ospf-1-area-0.0.0.1] quit
[Switch-ospf-1] area 2
[Switch–ospf-1-area-0.0.0.2] network 172.16.0.0 0.0.255.255
[Switch–ospf-1-area-0.0.0.2] quit
# 查看AC的OSPF路由表。
[AC] display ospf routing
OSPF Process 1 with Router ID 1.1.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.0.0.0/8 1 Stub 10.1.1.1 1.1.1.1 0.0.0.0
192.168.1.0/24 1562 Stub 192.168.1.1 1.1.1.1 0.0.0.1
Total Nets: 2
Intra Area: 2 Inter Area: 0 ASE: 0 NSSA: 0
& 说明:
由于Area2没有与Area0直接相连,所以AC的路由表中没有Area2中的路由。
(3) 配置虚连接
# 配置AC。
[AC] ospf
[AC-ospf-1] area 1
[AC-ospf-1-area-0.0.0.1] vlink-peer 2.2.2.2
[AC-ospf-1-area-0.0.0.1] quit
[AC-ospf-1] quit
# 配置Switch。
[Switch] ospf 1
[Switch-ospf-1] area 1
[Switch-ospf-1-area-0.0.0.1] vlink-peer 1.1.1.1
[Switch-ospf-1-area-0.0.0.1] quit
# 查看AC的OSPF路由表。
[AC] display ospf routing
OSPF Process 1 with Router ID 1.1.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
172.16.1.1/16 1563 Inter 192.168.1.2 2.2.2.2 0.0.0.0
10.0.0.0/8 1 Stub 10.1.1.1 1.1.1.1 0.0.0.0
192.168.1.0/24 1562 Stub 192.168.1.1 1.1.1.1 0.0.0.1
Total Nets: 3
Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0
可以看到,AC已经学到了Area2的路由172.16.1.1/16。
l AC、Switch A和Switch B既属于同一自治系统,也属于同一OSPF域,通过OSPF协议实现网络互连,并提供GR机制。
l AC作为非IETF标准GR Restarter,Switch A和Switch B作为GR Helper并且通过GR机制与与AC保持带外同步。
图3-26 OSPF GR配置组网图
(1) 配置AC
<AC> system-view
[AC] interface vlan-interface 100
[AC-Vlan-interface100] ip address 192.1.1.1 255.255.255.0
[AC-Vlan-interface100] quit
[AC] router id 1.1.1.1
[AC] ospf 100
[AC-ospf-100] enable link-local-signaling
[AC-ospf-100] enable out-of-band-resynchronization
[AC-ospf-100] graceful-restart
[AC-ospf-100] area 0
[AC-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[AC-ospf-100-area-0.0.0.0] return
(2) 配置Switch A
<SwitchA> system-view
[SwitchA] acl number 2000
[SwitchA-acl-basic-2000] rule 10 permit source 192.1.1.1 0.0.0.0
[SwitchA-acl-basic-2000] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] ip address 192.1.1.2 255.255.255.0
[SwitchA-Vlan-interface100] ospf dr-priority 0
[SwitchA-Vlan-interface100] quit
[SwitchA] router id 2.2.2.2
[SwitchA] ospf 100
[SwitchA-ospf-100] enable link-local-signaling
[SwitchA-ospf-100] enable out-of-band-resynchronization
[SwitchA-ospf-100] graceful-restart help 2000
[SwitchA-ospf-100] area 0
[SwitchA-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[SwitchA-ospf-100-area-0.0.0.0] quit
(3) 配置Switch B
<SwitchB> system-view
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] ip address 192.1.1.3 255.255.255.0
[SwitchB-Vlan-interface100] ospf dr-priority 2
[SwitchB-Vlan-interface100] quit
[SwitchB] router id 3.3.3.3
[SwitchB] ospf 100
[SwitchB-ospf-100] enable link-local-signaling
[SwitchB-ospf-100] enable out-of-band-resynchronization
[SwitchB-ospf-100] area 0
[SwitchB-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[SwitchB-ospf-100-area-0.0.0.0] quit
(4) 检验配置效果
# 运行稳定后,在AC上重启OSPF协议的GR进程。
<AC> reset ospf 100 process graceful-restart
OSPF邻居无法建立
如果物理连接和下层协议正常,则检查接口上配置的OSPF参数,必须保证与相邻路由器的参数一致,区域号相同,网段与掩码也必须一致(点到点与虚连接的网段与掩码可以不同)。
相邻的两台路由器接口的网络类型必须一致。若网络类型为广播网或NBMA,则至少有一个接口的路由器优先级应大于零。
(1) 使用display ospf peer命令查看OSPF邻居状态。
(2) 使用display ospf interface命令查看OSPF接口的信息。
(3) 检查物理连接及下层协议是否正常运行,可通过Ping命令测试。若从本地路由器Ping对端路由器不通,则表明物理连接和下层协议有问题。
(4) 检查OSPF定时器,在同一接口上邻居失效时间应至少为Hello报文发送时间间隔的4倍。
(5) 如果是NBMA网络,则应该使用peer ip-address命令手工指定邻居。
(6) 如果网络类型为广播网或NBMA,则至少有一个接口的路由器优先级大于零。
OSPF不能发现其他区域的路由
应保证骨干区域与所有的区域相连接。若一台路由器配置了两个以上的区域,则至少有一个区域应与骨干区域相连。骨干区域也不能配置成Stub区域。
在Stub区域内的路由器不能接收外部AS的路由。如果一个区域配置成Stub区域,则与这个区域相连的所有路由器都应将此区域配置成Stub区域。
(1) 使用display ospf peer命令查看OSPF邻居状态。
(2) 使用display ospf interface命令查看OSPF接口的信息。
(3) 使用display ospf lsdb查看LSDB的信息是否完整。
(4) 使用display current-configuration configuration ospf命令查看区域是否配置正确。若配置了两个以上的区域,则至少有一个区域与骨干区域相连。
(5) 如果某区域是Stub区域,则该区域中的所有路由器都要配置stub命令;如果某区域是NSSA区域,则该区域中的所有路由器都要配置nssa命令。
(6) 如果配置了虚连接,使用display ospf vlink命令查看OSPF虚连接是否正常。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!