本章节下载(1.1 MB)
目 录
6.2.18 定义访问控制列表、AS路径列表和Route-policy
7.4.5 基于BGP next-hop/as-path/origin/ local-preference属性的路由策略配置举例
在因特网中进行路由选择要使用路由器,路由器根据所收到的报文的目的地址选择一条合适的路由(通过某一网络),将报文传送到下一个路由器,路由中最后的路由器负责将报文送交目的主机。
例如,在图1-1中,主机A到主机C共经过了3个网络和2个路由器,跳数为3。由此可见,若一节点通过一个网络与另一节点相连接,则此二节点相隔一个路由段,因而在因特网中他们被认为是相邻的。同理,两台连接在同一个网络上的路由器也叫做相邻的路由器。一个路由器到本网络中的某个主机的路由段数算作零。在图中用粗的箭头表示这些路由段。至于每一个路由段又由哪几条物理链路构成,路由器并不关心。

由于网络大小可能相差很大,每个路由段的实际长度可能并不相同,因此对不同的网络,可以将其路由段乘以一个加权系数,用加权后的路由段数来衡量通路的长短。
如果把网络中的路由器看成是网络中的节点,把因特网中的一个路由段看成是网络中的一条链路,那么因特网中的路由选择就与简单网络中的路由选择相似了。采用路由段数最小的路由有时也并不一定是最理想的。例如,经过三个高速局域网段的路由可能比经过两个低速广域网段的路由快得多。
路由器转发分组的关键是路由表。每个路由器中都保存着一张路由表,表中每条路由项都指明分组到某子网或某主机应通过路由器的哪个物理端口发送,然后就可到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。
路由表中包含了下列关键项:
l 目的地址:用来标识IP包的目的地址或目的网络。
l 网络掩码:与目的地址一起来标识目的主机或路由器所在的网段的地址。将目的地址和网络掩码“逻辑与”后可得到目的主机或路由器所在网段的地址。例如:目的地址为129.102.8.10,掩码为255.255.0.0的主机或路由器所在网段的地址为129.102.0.0。掩码由若干个连续“1”构成,既可以以点分十进制表示,也可以用掩码中连续“1”的个数来表示。
l 输出接口:说明IP包将从该路由器哪个接口转发。
l 下一跳IP地址:说明IP包所经由的下一个路由器。
l 本条路由加入IP路由表的优先级:针对同一目的地,可能存在不同下一跳的若干条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级最高(数值最小)的一条将成为当前的最优路由。
根据路由的目的地不同,可以划分为:
l 子网路由:目的地为子网
l 主机路由:目的地为主机
另外,根据目的地与该路由器是否直接相连,又可分为:
l 直接路由:目的地所在网络与路由器直接相连
l 间接路由:目的地所在网络与路由器不是直接相连
为了不使路由表过于庞大,可以设置一条缺省路由。凡遇到查找路由表失败后的数据包,就选择缺省路由转发。
在图1-2比较复杂的因特网中,各网络中的数字是该网络的网络地址。路由器8与三个网络相连,因此有三个IP地址和三个物理端口,其路由表如图所示。

路由器支持对静态路由的配置,同时支持RIP、OSPF、IS-IS和BGP等一系列动态路由协议,另外路由器在运行过程中根据接口状态和用户配置,会自动获得一些直接路由。
可以使用手工配置到某一特定目的地的静态路由,也可以配置动态路由协议与网络中其它路由器交互,并通过路由算法来发现路由。用户配置的静态路由和由路由协议发现的动态路由在路由器中是统一管理的。静态路由与各路由协议之间发现或者配置的路由也可以在路由协议间共享。
到相同的目的地,不同的路由协议(包括静态路由)可能会发现不同的路由,但并非这些路由都是最优的。事实上,在某一时刻,到某一目的地的当前路由仅能由唯一的路由协议来决定。这样,各路由协议(包括静态路由)都被赋予了一个优先级,这样当存在多个路由信息源时,具有较高优先级的路由协议发现的路由将成为当前路由。各种路由协议及其发现路由的缺省优先级(数值越小表明优先级越高)如表1-1所示。
其中:0表示直接连接的路由,255表示任何来自不可信源端的路由。
|
路由协议或路由种类 |
相应路由的优先级 |
|
DIRECT |
0 |
|
OSPF |
10 |
|
IS-IS |
15 |
|
STATIC |
60 |
|
RIP |
100 |
|
OSPF ASE |
150 |
|
OSPF NSSA |
150 |
|
IBGP |
256 |
|
EBGP |
256 |
|
UNKNOWN |
255 |
除了直连路由(DIRECT)、IBGP及EBGP外,各动态路由协议的优先级都可根据用户需求,手工进行配置。另外,每条静态路由的优先级都可以不相同。
支持多路由模式,即允许配置多条到同一目的地而且优先级相同的路由。到同一目的地而且优先级相同的路由指的是目的网络和掩码相同,优先级相同,但下一跳地址或者接口不相同。当没有比到此目的地优先级更高的路由时,这几条路由都被系统采纳,在转发报文时,依次通过各条路径发送,从而实现网络的负载分担。路由负载分担只能在同一个路由协议的等价路由(即路由的cost代价相等)之间进行,例如不能在所配置的静态路由和OSPF路由之间进行。
目前,支持负载分担的路由协议有四种:静态路由、OSPF、BGP和IS-IS。
负载分担的实现方式有以下几种:
l 基于流的负载分担。缺省情况下我们的路由器使能了快速转发功能,此时路由器只能基于流进行负载分担。例如,当前路由器上存在两条等价路由,如果此时只有一个数据流,那么将从一条路由上转发;如果有两个数据流,那么两条路由各转发一个。子接口也支持快转,实现基于流的负载分担。
l 基于报文的负载分担。当关闭了快转功能时,路由器将基于报文进行负载分担,即将待发送报文均匀分配到两条路由上。
l 基于带宽的非平衡负载分担。当关闭了快转功能时,路由按接口物理带宽进行负载分担(即基于报文的负载分担);当用户为接口配置了指定的负载带宽后,路由器将按用户指定的接口带宽进行负载分担,即根据接口间的带宽比例关系,给大带宽接口多发送数据,给小带宽接口少发送数据。
l 基于当前流量的负载分担——RCR(Resilient Controllable Routing ,弹性可控路由)。RCR本地模式应用于单一路由器设备,当该设备存在到达同一目的地址的多个等值路由时,路由器将按照这些等值路由对应的不同出接口链路的负载状况来分配流量,负载相对较轻的出接口被用于发送新的数据流。当这些出接口上的负载状况不符合预期状况时,可以按照用户配置启动针对数据流的动态调整功能,将可被调整的数据流按照策略调整至合适的出接口进行转发。
l 基于用户的负载分担。网关使用多条链路接入Internet的时候,由于要在网关上进行网络地址转换,就要求同一用户的所有流量都经过一条链路进行转发。基于用户的负载分担功能可保证将特定源地址的报文从一个固定的出接口发送出去,同时尽量保证合理分配流量。
& 说明:
等价路由负载分担依据的是对路由的处理,只有报文查找路由表进行转发或者按快速转发表进行转发,负载分担才有意义;而策略路由是按照策略转发报文,所以在配置了策略路由的情况下负载分担不生效。
支持路由备份,当主路由发生故障时,自动切换到备份路由,提高用户网络的可靠性。为了实现路由的备份,用户可根据实际情况,配置到同一目的地的多条路由,其中一条路由的优先级最高,称为主路由,其余的路由优先级依次递减,称为备份路由。这样,正常情况下,路由器采用主路由发送数据。当线路发生故障时,该路由自动隐藏,路由器会选择余下的优先级最高的备份路由作为数据发送的途径。这样,也就实现了主路由到备份路由的切换。当主路由恢复正常时,路由器恢复相应的路由,并重新选择路由。由于该路由的优先级最高,路由器选择主路由来发送数据。上述过程是备份路由到主路由的自动切换。
由于各路由协议的算法不同,不同的协议可能会发现不同的路由,因此各路由协议之间存在如何共享各自发现结果的问题。路由器支持将一种路由协议发现的路由引入(import-route)到另一种路由协议中,每种协议都有相应的路由引入机制,具体内容请参见各路由协议的配置指导中引入外部路由部分的描述。
一般情况下负载分担是采用负荷均担的方式,即把数据包均匀的发送给不同的接口;例如有两个相互负载分担的接口,3Mbps的数据流就会被平均发送给每个接口(即各1.5Mbps),这样就会导致大带宽接口的利用率不高,而小带宽的接口不断丢弃数据包的情况。为了有效利用大带宽接口的传输能力,需要IP层向相互负载分担的接口发送数据时能根据接口间的带宽比例关系,给大带宽接口多发送数据,给小带宽接口少发送数据,即实现基于等价路由各接口带宽的非平衡负载分担。当系统支持该特性后,缺省情况下按接口物理带宽进行负载分担;当用户配置了指定带宽时,按用户的指定带宽进行负载分担。
请在系统视图下进行下面配置。
|
操作 |
命令 |
|
使能基于带宽的非平衡负载分担 |
band-based-sharing |
|
禁止基于带宽的非平衡负载分担 |
undo band-based-sharing |
缺省情况下,禁止基于带宽的非平衡负载分担。
& 说明:
基于带宽的非平衡负载分担是不支持对流进行负载分担的,所以需要至少把入接口的入快转或出接口的出快转关掉,才能使等值路由基于带宽负载分担发挥它应有的作用。
请在接口视图下(除Loopback外的所有三层接口)进行下面配置。
|
操作 |
命令 |
|
配置接口的负载带宽 |
loadbandwidth bandwidth |
|
恢复接口的负载带宽缺省值 |
undo loadbandwidth |
当指定参数为0时关闭当前接口的路由功能,该接口将不会被选择,但不对物理接口的其它状态产生任何影响。负载带宽缺省值为该接口的物理带宽。
请在所有视图下执行display命令,在用户视图下执行reset命令。
|
操作 |
命令 |
|
显示基于接口带宽的非平衡负载分担的统计结果 |
display loadsharing ip address ip-address mask |
|
清除非平衡负载分担的统计结果 |
reset loadsharing { all | ip address ip-address mask } |
假设Route A上已经存在到目的网络地址10.2.1.0 /24的三条等价路由,分别是:
[H3C] display fib
Destination/Mask Nexthop Flag TimeStamp Interface
10.2.1.0/24 10.1.1.2 GSU t[0] Ethernet0/0/0
10.2.1.0/24 10.1.2.2 GSU t[0] Atm1/0/0
10.2.1.0/24 10.1.3.2 GSU t[0] Serial2/0/0
使用display loadsharing ip address命令观察目前的带宽比例关系:
[H3C]display loadsharing ip address 10.2.1.0 24
There are/is totally 3 route entry(s) to the same destination network.
Nexthop Packet(s) Bandwidth[KB] Flow(s) Interface
10.1.1.2 763851 100000 0 Ethernet0/0/0
10.1.2.2 1193501 155000 0 Atm1/0/0
10.1.3.2 15914 2048 0 Serial2/0/0
BandWidth:48:75:1
Packets:47:74:1
Flows:0:0:0
此时三个接口按缺省带宽进行负载分担。
在路由器A上配置基于带宽的负载分担后再观察负载分担的情况。

(1) 配置RouterA
# 配置三个接口的负载分担带宽。
[H3C] interface ethernet 0/0/0
[H3C-Ethernet0/0/0] loadbandwidth 200
[H3C-Ethernet0/0/0] quit
[H3C] interface Atm 1/0/0
[H3C-Atm 1/0/0] loadbandwidth 100
[H3C-Atm 1/0/0] quit
[H3C] interface serial 2/0/0
[H3C-serial 2/0/0] loadbandwidth 300
[H3C-serial 2/0/0] quit
# 显示三个接口的负载分担比例。
[H3C] display loadsharing ip ad 10.2.1.0 24
There are/is totally 3 route entry(s) to the same destination network.
Nexthop Packet(s) Bandwidth[KB] Flow(s) Interface
10.1.2.2 142824 100 0 Atm1/0/0
10.1.1.2 285648 200 0 Ethernet0/0/0
10.1.3.2 428472 300 0 Serial2/0/0
BandWidth:1:2:3
Packets:1:2:3
Flows:0:0:0
显示结果表明此时报文按用户指定带宽进行负载分担。
请在系统视图下进行下列配置。
表1-5 使能/关闭基于用户的负载分担
|
命令 |
说明 |
|
|
使能基于用户的负载分担 |
ip user-based-sharing enable |
必选 |
|
关闭基于用户的负载分担 |
undo ip user-based-sharing enable |
- |
缺省情况下,关闭基于用户的负载分担功能。
指定需要进行负载分担处理的路由。在使能基于用户的负载分担之后,必须配置进行负载分担的路由,功能才能生效。
请在系统视图下进行下列配置。
表1-6 配置基于用户的负载分担的路由
|
配置步骤 |
命令 |
说明 |
|
配置某条路由进行负载分担 |
ip user-based-sharing route ip-address net-mask |
必选 |
|
删除进行负载分担的路由 |
undo user-based-sharing route ip-address net-mask |
- |
缺省情况下,没有指定需要进行负载分担处理的路由。
通过关联ACL,可以对报文进行过滤,只有匹配该ACL规则的报文才会进行负载分担的处理。如果没有关联ACL,则匹配路由的所有报文都会进行负载分担。
请在系统视图下进行下列配置。
表1-7 配置ACL规则编号
|
配置步骤 |
命令 |
说明 |
|
关联ACL |
ip user-based-sharing acl acl-number |
必选 |
|
取消关联的ACL |
undo ip user-based-sharing acl |
- |
缺省情况下,没有关联ACL。
某一用户长期没有流量时,其对应的表项与统计数据会进行老化处理,下面的命令可以配置无流量老化的时间。
请在系统视图下进行下列配置。
表1-8 配置表项老化时间
|
配置步骤 |
命令 |
说明 |
|
配置老化时间 |
ip user-based-sharing aging-time seconds |
必选 |
|
恢复默认老化时间 |
undo ip user-based-sharing aging-time |
- |
缺省情况下,老化时间为300秒。
流量统计的结果是每个统计周期内用户的平均流量,下面的命令可配置流量统计的周期时长。
请在系统视图下进行下列配置。
表1-9 配置流量统计周期
|
配置步骤 |
命令 |
说明 |
|
配置流量统计周期 |
ip user-based-sharing stat-interval seconds |
必选 |
|
恢复默认流量统计周期 |
undo ip user-based-sharing stat-interval |
- |
缺省情况下,流量统计周期为10秒。
在完成上述配置后,在任意视图下执行display命令可以显示基于用户的负载分担当前使用情况,在用户视图下执行reset命令可以清除用户表项。
表1-10 基于用户的负载分担表项的现实和维护
|
配置步骤 |
命令 |
|
显示用户当前的接口分配情况 |
display ip user-based-sharing interface-assignment |
|
显示用户当前的流量 |
display ip user-based-sharing statistic |
|
清除基于用户的负载分担表项 |
reset ip user-based-sharing cache |
如,Router有两条链路连接Internet,局域网内的PC通过Router接入Internet,要求实现基于用户的负载分担。

# 使能基于用户的负载分担。
[H3C] ip user-based-sharing enable
# 对于默认路由的报文进行基于用户的负载分担。
[H3C] ip user-based-sharing route 0.0.0.0 0
& 说明:
本章中有关VPN实例的具体参数解释,请参见本手册的“MPLS”模块。
静态路由是一种特殊的路由,它由管理员手工配置而成。通过静态路由的配置可建立一个互通的网络,但这种配置缺点在于:当一个网络故障发生后,静态路由不会自动发生改变,必须有管理员的介入。
在组网结构比较简单的网络中,只需配置静态路由就可以使路由器正常工作,适当设置和使用静态路由可以改进网络的性能,并可为重要的应用保证带宽。
静态路由还有如下的属性:
l 可达路由,正常的路由都属于这种情况,即IP报文按照目的地标示的路由被送往下一跳,这是静态路由的一般用法。
l 目的地不可达的路由,当到某一目的地的静态路由具有“reject”属性时,任何去往该目的地的IP报文都将被丢弃,并且通知源主机目的地不可达。
l 目的地为黑洞的路由,当到某一目的地的静态路由具有“blackhole”属性时,任何去往该目的地的IP报文都将被丢弃,并且不通知源主机。
其中“reject”和“blackhole”属性一般用来控制本路由器可达目的地的范围,辅助网络故障的诊断。
缺省路由是一种特殊的路由,可以通过静态路由配置,某些动态路由协议也可以生成缺省路由,如OSPF和IS-IS。
简单地说,缺省路由就是在没有找到匹配的路由时才使用的路由。即只有当没有合适的路由时,缺省路由才被使用。在路由表中,缺省路由以到网络0.0.0.0(掩码为0.0.0.0)的路由形式出现。可通过命令display ip routing-table的输出看它是否被设置。如果报文的目的地址不能与任何路由相匹配,那么系统将使用缺省路由转发该报文。如果没有缺省路由且报文的目的地不在路由表中,那么该报文被丢弃,同时,向源端返回一个ICMP报文报告该目的地址或网络不可达。
静态路由的配置包括:
l 配置静态路由
l 配置缺省路由
l 配置静态路由优先级
l 删除静态路由
请在系统视图下进行下列配置。
|
操作 |
命令 |
|
增加一条静态路由 |
ip route-static ip-address { mask | mask-length } [ interface-type interface-number ] [ nexthop-address ] [ preference value ] [ reject | blackhole ] ip route-static vpn-instance { vpn-instance-name1 vpn-instance-name2 … ip-address } { mask | mask-length } [ interface-type interface-number [ nexthop-address ] | vpn-instance vpn-nexthop-name nexthop-address | nexthop-address [ public ] ] [ preference preference-value ] [ reject | blackhole ] [ tag tag-value ] [ description string ] |
|
删除一条静态路由 |
undo ip route-static ip-address {mask | mask-length } [ interface-name ] [ nexthop-address ] [ preference value ] undo ip route-static vpn-instance { vpn-instance-name1 vpn-instance-name2 … ip-address } { mask | mask-length } [ interface-type interface-number | vpn-instance vpn-nexthop-name nexthop-address | nexthop-address [ public ] ] [ preference preference-value ] |
其中各参数的解释如下:
(1) VPN实例的名字
(2) IP地址和掩码
IP地址为点分十进制格式,由于要求掩码32位中‘1’必须是连续的,因此掩码可以用点分十进制表示,也可用掩码长度(即掩码中‘1’的位数)表示。
(3) 发送接口或下一跳地址
在配置静态路由时,可指定发送接口interface-type interface-number,也可指定下一跳地址 nexthop-address,是指定发送接口还是指定下一跳地址要视具体情况而定。
实际上,所有的路由项都必须明确下一跳地址。在发送报文时,首先根据报文的目的地址寻找路由表中与之匹配的路由。只有路由指定了下一跳地址,链路层才能通过下一跳IP地址找到对应的链路层地址,然后按照该地址将报文转发。
在以下几种情况下可以指定发送接口:
l 对于点到点接口,指定发送接口即隐含指定了下一跳地址,这时认为与该接口相连的对端接口地址就是路由的下一跳地址。如Serial封装PPP协议,通过PPP协商获取对端的IP地址,这时可以不用指定下一跳地址,只需指定发送接口即可。
l 对于NBMA接口(如ATM接口),支持点到多点,这时除了配置IP路由外,还需在链路层建立二次路由,即IP地址到链路层地址的映射。这种情况下应配置下一跳IP地址。
l 在配置静态路由时,建议不要指定为以太网接口或Virtual-template接口作发送接口。因为以太网接口是广播类型的接口,而Virtual-template接口下可以关联多个虚拟访问接口(Virtual Access Interface),这都会导致出现多个下一跳,无法唯一确定下一跳。在某些特殊应用中,如果必须指定广播接口(如以太网接口)、VT接口或NBMA接口作为发送接口,应同时指定通过该接口发送时对应的下一跳地址。
(4) 优先级
对优先级preference的不同配置,可以灵活应用路由管理策略。
(5) 其它参数
属性reject和blackhole分别指明不可达路由和黑洞路由。public指公网。tag指静态路由tag值,用于路由策略。description为静态路由描述信息,提供给用户使用。
请在系统视图下进行下列配置。
|
操作 |
命令 |
|
配置缺省路由 |
ip route-static 0.0.0.0 { 0.0.0.0 | 0 } {interface-type interface-number | nexthop-address } [ preference value ] [ tag tag-value ] [ description string ] ip route-static vpn-instance vpn-instance-name 0.0.0.0 { 0.0.0.0 | 0 } {interface-type interface-number | nexthop-address } [ preference value ] [ tag tag-value ] [ description string ] |
|
删除缺省路由 |
undo ip route-static 0.0.0.0 { 0.0.0.0 | 0 } {interface-type interface-number | nexthop-address} [ preference value ] undo ip route-static vpn-instance vpn-instance-name 0.0.0.0 { 0.0.0.0 | 0 } {interface-type interface-number | nexthop-address } [ preference value ] |
命令中各参数意义与静态路由相同。
请在系统视图下进行下列配置。
|
操作 |
命令 |
|
删除全部静态路由 |
delete static-routes all |
使用此命令可以删除配置的全部静态路由,包括缺省路由。
在完成上述配置后,在所有视图下执行display命令可以显示配置后静态路由信息,用户可以通过查看显示信息验证配置的效果。
|
操作 |
命令 |
|
查看路由表摘要信息 |
display ip routing-table |
|
查看路由表详细信息 |
display ip routing-table verbose |
|
查看指定目的地址的路由 |
display ip routing-table ip-address [ mask ] [ longer-match ] [ verbose ] |
|
查看指定目的地址范围内的路由 |
display ip routing-table ip-address1 mask1 ip-address2 mask2 [ verbose ] |
|
查看通过指定标准访问控制列表过滤的路由 |
display ip routing-table acl acl-number [ verbose ] |
|
查看通过指定前缀列表过滤的路由 |
display ip routing-table ip-prefix ip-prefix-number [ verbose ] |
|
查看指定协议发现的路由 |
display ip routing-table protocol protocol [ inactive | verbose| vpn-instance vpn-instance-name ] |
|
查看树形式路由表 |
display ip routing-table radix |
|
查看路由表的统计信息 |
display ip routing-table [ vpn-instance vpn-instance-name ] statistics |
|
查看私网路由表摘要信息 |
display ip routing-table vpn-instance vpn-instance-name [ ip-address ] |
|
查看私网路由表详细信息 |
display ip routing-table vpn-instance vpn-instance-name [ ip-address ] verbose |
|
清除路由表信息。 |
reset ip routing-table [ vpn-instance vpn-instance-name ] statistics protocol protocol-type |
如下图所示,要求配置静态路由,使任意两台主机或路由器之间都能互通。

# 配置路由器RouterA静态路由:
<H3C> system-view
[H3C] ip route-static 1.1.3.0 255.255.255.0 1.1.2.2
[H3C] ip route-static 1.1.4.0 255.255.255.0 1.1.2.2
[H3C] ip route-static 1.1.5.0 255.255.255.0 1.1.2.2
或只配缺省路由:
[H3C] ip route-static 0.0.0.0 0.0.0.0 1.1.2.2
# 配置路由器RouterB静态路由:
[H3C] ip route-static 1.1.2.0 255.255.255.0 1.1.3.1
[H3C] ip route-static 1.1.5.0 255.255.255.0 1.1.3.1
[H3C] ip route-static 1.1.1.0 255.255.255.0 1.1.3.1
或只配缺省路由:
[H3C] ip route-static 0.0.0.0 0.0.0.0 1.1.3.1
# 配置路由器RouterC静态路由:
[H3C] ip route-static 1.1.1.0 255.255.255.0 1.1.2.1
[H3C] ip route-static 1.1.4.0 255.255.255.0 1.1.3.2
主机Host 2上配缺省网关为1.1.4.1
主机Host 3上配缺省网关为1.1.5.2
至此图2-1中所有主机或路由器之间能两两互通。
故障之一:路由器没有配置动态路由协议,接口的物理状态和链路层协议状态均已处于UP,但IP报文不能正常转发。
故障排除:
l 用display ip routing-table protocol static命令查看是否正确配置相应静态路由。
l 用display ip routing-table命令查看该静态路由是否已经生效。
l 查看是否在NBMA接口上未指定下一跳地址或指定的下一跳地址不正确。并查看NBMA接口的链路层二次路由表是否配置正确。
& 说明:
本章中有关VPN实例的具体参数解释,请参见本手册的“MPLS”模块,这里没有列出。
RIP是Routing Information Protocol(路由信息协议)的简称。它是一种较为简单的内部网关协议(Interior Gateway Protocol,IGP),主要用于规模较小的网络中。
由于RIP的实现较为简单,协议本身的开销对网络的性能影响比较小,并且在配置和维护管理方面也比OSPF或IS-IS容易,因此在实际组网中仍有广泛的应用。
RIP是一种基于距离矢量(Distance-Vector)算法的协议,它通过UDP报文进行路由信息的交换。
RIP使用跳数(Hop Count)来衡量到达目的网络的距离,称为路由权(Routing Cost)。在RIP中,路由器到与它直接相连网络的跳数为0,通过一个路由器可达的网络的跳数为1,其余依此类推。为限制收敛时间,RIP规定cost取值0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。
为提高性能,防止产生路由环,RIP支持水平分割(Split Horizon),即不从某接口发送从该接口学到的路由。RIP还可引入其它路由协议所得到的路由。
每个运行RIP的路由器管理一个路由数据库,该路由数据库包含了到网络中所有可达目的网络的路由项,这些路由项包含下列信息:
l 目的地址:指主机或网络的地址。
l 下一跳地址:指为到达目的地,本路由器要经过的下一个路由器地址。
l 接口:指转发报文的接口。
l 路由权值:指本路由器到达目的地的跳数,是一个0~15之间的整数。
l 路由时间:从路由项最后一次被修改到现在所经过的时间,路由项每次被修改时,路由时间重置为0。
l 路由标记:区分路由为内部路由协议的路由还是引入外部路由协议的路由的标记。
在RFC1058中规定,RIP受三个定时器的控制,分别是Period update、Timeout和Garbage-Collection:
l Period update定时触发,向所有邻居发送全部RIP路由;
l RIP路由如果在Timeout时间内没有被更新(收到邻居发来的路由刷新报文),则认为该路由不可达;
l 如果在Garbage-Collection时间内,不可达路由没有收到来自同一邻居的更新,则该路由被从路由表中删除。
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 支持外部路由标记(Route Tag),可以在路由策略中根据Tag对路由进行灵活的控制。
l 报文中携带掩码信息,支持路由聚合和CIDR(Classless Inter-Domain Routing)。
l 支持指定下一跳,在广播网上可以选择到最优下一跳地址。
l 支持组播路由发送更新报文,减少资源消耗。
l 支持对协议报文进行验证,并提供明文验证和MD5验证两种方式,增强安全性。
& 说明:
RIP-2有两种报文传送方式:广播方式和组播方式,缺省将采用组播方式发送报文,使用的组播地址为224.0.0.9。当接口运行RIP-2广播方式时,也可接收RIP-1的报文。
触发路由信息协议TRIP(Trigger RIP)是RIP协议在WAN上的扩展,主要应用于拨号网络。
TRIP的主要特点是取消了RIP的定时更新,增加了重传、备选路由,并采用了新的算法判断链路是否连通,即使拨号链路被挂断仍然能保证路由不被删除。这样,当路由稳定且不需要传送数据的时候,就可以将拨号链路断开,节省开支;而一旦路由发生变化或需要传送数据,可以立刻触发拨号重新建立拨号链路。
TRIP协议中把路由信息当作触发更新发送到WAN上(而不是定期广播),且在得到确认后更新才被转发,这样大大降低了路由管理开销所占用的带宽,该协议尤其适用于拨号网络或按流量进行计费的网络。
该特性支持的协议规范有RFC2091、RFC2082,RFC2453中的simple、md5认证。
该特性支持路由聚合,但不支持等价路由。
RIP V1启动和运行的整个过程可描述如下:
l 某路由器刚启动RIP时,以广播的形式向相邻路由器发送请求报文,运行RIP协议的相邻路由器的RIP收到请求报文后,响应该请求,回送包含本地路由表信息的响应报文。
l 路由器收到响应报文后,更新本地路由表,同时向相邻路由器发送触发更新报文,广播路由更新信息。运行RIP协议的相邻路由器收到触发更新报文后,又向其各自的相邻路由器发送触发更新报文。在一连串的触发更新广播后,各路由器都能得到并保持最新的路由信息。
l 同时,RIP每隔Period update的时间向相邻路由器广播本地路由表,运行RIP协议的相邻路由器在收到报文后,对本地路由进行维护,选择一条最佳路由,再向其各自相邻网络广播更新信息,使更新的路由最终能达到全局有效。同时,RIP采用超时机制对过时的路由进行超时处理,以保证路由的实时性和有效性。
RIP V2的启动和运行过程基本相同,但其更新报文是发送到组播地址224.0.0.9,而非广播报文。
RIP正被大多数IP路由器厂商广泛使用。它可用于大多数校园网及结构较简单的连续性强的地区性网络。对于更复杂环境及大型网络,一般不使用RIP。
在Comware目前的实现中,支持以下RIP特性:
l 支持RIP-1和RIP-2;
l 支持RIP多实例,可以作为VPN内部路由协议,在MPLS VPN解决方案的CE-PE之间运行;
l 支持RIP等价路由。
l 支持RIP触发更新。
l 在提供IPX特性的集中式设备中,还支持IPX RIP(IPX及IPX RIP的详细介绍,请参考本手册的“网络协议”部分)。
配置RIP时,必须先启动RIP,才能配置其它特性。而配置与接口相关的特性不受RIP是否使能的限制。需要注意的是,在关闭RIP后,与RIP相关的接口参数也同时失效。
(1) 基本的RIP配置
对于基本的RIP配置,需要进行的操作包括:
l 启动RIP
l 在指定网段使能RIP
如果在不支持广播或组播报文的链路上运行RIP,需要配置RIP报文定点传送,以正确建立RIP邻居。
对于采用Frame Relay子接口等NBMA链路组网的情况,为保证路由信息的正确传播,可能还需要禁止水平分割特性。
(2) RIP路由管理
在对路由信息的发布和接收上,可以对RIP进行以下配置:
l 配置附加路由权
l 配置RIP的路由引入
l 配置RIP的路由过滤
l 禁止RIP接收主机路由
l 配置RIP的路由聚合
l 配置RIP非直连邻居的路由交互
l 配置RIP在接口间实现负载分担功能
(3) RIP协议本身的参数配置
l 配置RIP优先级
l 配置RIP定时器
l 配置RIP的零域检查
l 配置接口的RIP版本
为提高RIP在交换路由信息时的安全性,或控制RIP报文的扩散范围,可以选择以下配置:
l 配置RIP报文认证
l 配置接口的工作状态
(5) RIP对MPLS VPN的支持
l 配置RIP多实例
(6) 配置Trigger RIP
启动RIP后,将进入RIP视图。
请在系统视图下进行下列配置。
|
操作 |
命令 |
|
启动RIP,进入RIP视图 |
rip |
|
停止RIP协议的运行 |
undo rip |
缺省情况下,不运行RIP。
RIP的大部分特性都需要在RIP视图下配置,接口视图下也有部分RIP相关属性的配置。如果启动RIP前先在接口视图下进行了RIP相关的配置,这些配置只有在RIP启动后才会生效。需要注意的是,在执行undo rip命令关闭RIP后,接口上与RIP相关的配置也将被删除。
为了灵活地控制RIP工作,可以指定某些接口,将其所在的相应网段配置成RIP网络,使这些接口可收发RIP报文。
请在RIP视图下进行下列配置。
|
操作 |
命令 |
|
在指定的网络接口上应用RIP |
network network-address |
|
在指定的网络接口上取消应用RIP |
undo network network-address |
RIP只在指定网段上的接口运行;对于不在指定网段上的接口,RIP既不在它上面接收和发送路由,也不将它的接口路由转发出去。因此,RIP启动后必须指定其工作网段。network-address为使能或不使能的网络的地址,也可配置为各个接口IP网络的地址。
当对某一地址使用命令network时,效果是使能该地址的网段的接口。例如:network 129.102.1.1,用display current-configuration和display rip命令看到的均是network 129.102.0.0。
对于RIP v1,路由协议在发布路由信息时有如下情况需要注意:
l 如果当前路由的目的地址和发送接口的地址不在同一主网(指自然网段),那么对于超网路由则不发送给邻居;对于子网路由则按自然网段聚合后发送给邻居。
l 如果当前的路由的目的地址和发送接口地址在同一主网,那么如果路由的目的地址的掩码和接口掩码不相等,就不发送给邻居;否则直接发送给邻居。
水平分割是指不从本接口发送从该接口学到的路由。它可以在一定程度上避免产生路由环。但在某些特殊情况下,却需要禁止水平分割,以保证路由的正确传播。禁止水平分割对点到点链路不起作用,但对以太网来说是可行的。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
启动水平分割 |
rip split-horizon |
|
禁止水平分割 |
undo rip split-horizon |
缺省情况下,接口允许水平分割。
附加路由权是对RIP路由添加的输入或输出路由权值,附加路由权并不直接改变路由表中的路由权值,而是在接收或发送路由时增加一个指定的权值。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
设置接口在接收RIP报文时给路由附加路由权值 |
rip metricin value |
|
禁止接口在接收RIP报文时给路由附加路由权值 |
undo rip metricin |
|
设置接口在发送RIP报文时给路由附加路由权值 |
rip metricout value [ all-route ] |
|
禁止接口在发送RIP报文时给路由附加路由权值 |
undo rip metricout |
缺省情况下,RIP在发送报文时给路由增加的附加路由权值为1;在接收报文时给路由增加的附加路由权值为0。
RIP允许用户将其它路由协议的路由信息引入到RIP路由表中,并可以设置引入时使用的缺省路由权。
可引入到RIP中的路由类型包括:Direct、Static、OSPF、BGP和IS-IS。
请在RIP视图下进行下列配置。
表3-5 配置RIP的路由引入
|
操作 |
命令 |
|
引入其它协议的路由 |
import-route protocol [ allow-ibgp ] [ cost value ] [ route-policy route-policy-name ] |
|
取消对其它协议路由的引入 |
undo import-route protocol |
|
设定缺省路由权值 |
default cost value |
|
恢复缺省路由权值 |
undo default cost |
缺省情况下,RIP不引入其它协议的路由。
当protocol为BGP时,allow-ibgp为可选关键字。import-route bgp表示只引入EBGP路由,import-route bgp allow-ibgp表示将IBGP路由也引入,该配置危险,请慎用!
如果在引入路由时没有指定路由权,则使用缺省路由权,其缺省值为1。
路由器提供路由过滤功能,通过指定访问控制列表、地址前缀列表及路由策略,对路由的接收、发布、引入进行过滤。
请在RIP视图下进行下列配置。
RIP协议中的filter-policy import是对从邻居发来的路由表直接进行过滤,是对接收到的本路由协议的路由进行过滤,被过滤掉的路由不会出现在本地路由表中。
表3-6 配置RIP对接收路由的过滤
|
操作 |
命令 |
|
对接收的由指定地址发布的路由信息进行过滤 |
filter-policy gateway ip-prefix-name import |
|
取消对接收的由指定地址发布的路由信息的过滤 |
undo filter-policy gateway ip-prefix-name import |
|
对接收的全局路由信息进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name [ gateway ip-prefix-name ] } import |
|
取消对接收的全局路由信息过滤 |
undo filter-policy { acl-number | ip-prefix ip-prefix-name [ gateway ip-prefix-name ] } import |
|
对接收的全局路由信息按路由策略进行过滤 |
filter-policy route-policy route-policy-name import |
|
取消对接收的全局路由信息按路由策略进行过滤 |
undo filter-policy route-policy route-policy-name import |
filter-policy命令用于对向邻居发布的路由表进行过滤,即满足过滤条件的路由不向邻居通告。
表3-7 配置RIP对发布路由的过滤
|
操作 |
命令 |
|
对其他路由协议发布到RIP的路由进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name| route-policy route-policy-name } export [ routing-protocol ] |
|
对发布的路由信息取消过滤 |
undo filter-policy { acl-number | ip-prefix ip-prefix-name | route-policy route-policy-name } export [ routing-protocol ] |
缺省情况下,RIP不对接收与发布的任何路由信息进行过滤。
当在此命令中指定routing-protocol时,可用于过滤从指定路由协议引入的路由。
更详细的描述请参见“IP路由策略配置”的“配置路由过滤”部分。
在某些特殊情况下,路由器会收到大量来自同一网段的主机路由,这些路由对于路由寻址没有多少作用,却占用了大量网络资源。配置了禁止主机路由功能后,路由器能够拒绝它所收到的主机路由。
请在RIP视图下进行下列配置。
表3-8 禁止RIP接收主机路由
|
操作 |
命令 |
|
允许接收主机路由 |
host-route |
|
禁止接收主机路由 |
undo host-route |
缺省情况下,路由器接收主机路由。
路由聚合是指:同一自然网段内的不同子网的路由在向外(其它网段)发送时聚合成一条自然掩码的路由发送。这一功能主要用于减小路由表的尺寸,进而减少网络上的流量。
路由聚合对RIP-1不起作用。RIP-2支持无类地址域间路由。当需要将所有子网路由广播出去时,可关闭RIP-2的路由聚合功能。
请在RIP视图下进行下列配置。
表3-9 配置RIP路由聚合
|
操作 |
命令 |
|
启动RIP-2的路由聚合功能 |
summary |
|
关闭RIP-2的路由聚合功能 |
undo summary |
缺省情况下,RIP-2启用路由聚合功能。
缺省情况下RIP只往直连的网段发送RIP报文,在发送单播报文时,会检查目的地址是否是直连地址;在收到RIP报文时,会检查报文的源地址,通过报文的源地址来找到入接口。基于这种原理,当两个路由器为RIP非直连邻居时,无法实现RIP路由信息的交互。

图3-1 RIP非直连邻居的路由交互应用示意图
如上图所示,当在RouterA和RouterC为非直连邻居(仅RouterA的1.0.0.0/8,RouterC的2.0.0.0/8网段使能RIP,RouterB没有使能RIP),此时如要实现RouterA和RouterC上的RIP路由交互,需要进行如下配置:
l 配置RouterA和RouterC互为RIP peer
l 取消检查收到的RIP报文的源地址
此时,路由器在发送单播报文时,就不会检查目的地址是否是直连地址,并会去掉导致RouterB不转发报文的标志信息;在收到RIP报文时,也不会检查报文的源地址,并能通过报文的源地址和目的地址找到入接口。
通常情况下,RIP使用广播或组播地址发送报文,如果需要在不支持广播报文的链路上运行RIP,就必须采用定点传送的方式,否则将不能正常地建立RIP邻居关系;在运行RIP协议的路由器为非直连邻居时,也必须配置RIP报文定点传送。
请在RIP视图下进行下列配置。
表3-10 配置RIP报文定点传送
|
操作 |
命令 |
|
配置RIP报文的定点传送 |
peer ip-address |
|
取消RIP报文的定点传送 |
undo peer ip-address |
缺省情况下,RIP不向任何定点地址发送报文。
需要注意的是:peer在发送报文时受接口工作状态的限制,接口的工作状态由rip work、rip output、rip input和network等命令进行配置。
请在RIP视图(或RIP的MBGP地址族视图)下进行下列配置。
表3-11 配置检查/不检查收到的RIP报文的源地址
|
操作 |
命令 |
|
配置检查RIP报文的源地址 |
validate-source-address |
|
取消检查RIP报文的源地址 |
undo validate-source-address |
该命令对公网RIP协议及MPLS VPN下的私网RIP协议均有效。
缺省情况下,检查RIP报文的源地址。
当启动了RIP接口间的负载分担功能时,可以使流量通过等价路由均衡地在各个接口之间分配。
请在RIP视图或RIP的MBGP地址族视图下进行下列配置。
表3-12 配置RIP在接口间实现负载分担功能
|
操作 |
命令 |
|
配置RIP在接口间实现负载分担功能 |
traffic-share-across-interface |
|
关闭RIP在接口间的负载分担功能 |
undo traffic-share-across-interface |
该命令对公网RIP协议及MPLS VPN下的私网RIP协议均有效。
缺省情况下,关闭RIP接口间流量负载分担功能,即仅支持简单的负载分担,并不考虑在接口上均衡分配流量。
每一种路由协议都有自己的优先级,协议的优先级将影响路由策略采用哪种路由协议获取的路由作为最优路由。优先级的数值越大,其实际的优先级越低。可以手工设定RIP的优先级。
请在RIP视图下进行下列配置。
表3-13 设置RIP的优先级
|
操作 |
命令 |
|
设置RIP协议的优先级 |
preference value |
|
将RIP协议的优先级恢复为缺省值 |
undo preference |
缺省情况下,RIP的优先级为100。
在本章开始已经介绍过,RIP有三个定时器:Period update、Timeout和Garbage-collection。改变这几个定时器的值,可以影响RIP的收敛速度。
请在RIP视图下进行下列配置。
表3-14 配置RIP定时器
|
操作 |
命令 |
|
配置RIP定时器的值 |
timers { update update-timer-length | timeout timeout-timer-length } * |
|
恢复RIP定时器的缺省值 |
undo timers { update | timeout } * |
缺省情况下,Period update定时器是30秒,Timeout定时器是180秒,Garbage-collection定时器则是Period update定时器的4倍,即120秒。
在实际应用中,用户可能会发现Garbage-collection定时器的超时时间并不固定,当Period update定时器设为30秒时,Garbage-collection定时器可能在90到120秒之间。这是因为:不可达路由在被从路由表中彻底删除前,需要等待4个来自同一邻居的更新报文,但路由变为不可达状态并不总是恰好在一个更新周期的开始,因此,Garbage-collection定时器的实际时长是Period update定时器的3~4倍。
& 说明:
在配置RIP定时器时需要注意,定时器值的调整应考虑网络的性能,并在所有运行RIP的路由器上进行统一配置,以免增加不必要的网络流量或引起网络路由震荡。
RFC1058规定,RIP-1报文中的有些区域必须为零,称之为零域(zero field)。RIP-1在接收报文时将对零域进行检查,值不为零的RIP-1报文将不被处理。由于RIP-2的报文没有零域,此项配置对RIP-2无效。
请在RIP视图下进行下列配置。
|
操作 |
命令 |
|
设置对RIP-1报文进行零域检查 |
checkzero |
|
禁止对RIP-1报文进行零域检查 |
undo checkzero |
缺省情况下,RIP-1对报文进行零域检查。
RIP有RIP-1和RIP-2两个版本,可以指定接口所处理的RIP报文版本。
RIP-1的报文传送方式为广播方式。RIP-2有两种报文传送方式:广播方式和组播方式,缺省将采用组播方式发送报文。RIP-2中组播地址为224.0.0.9。组播发送报文的好处是在同一网络中那些没有运行RIP的主机可以避免接收RIP的广播报文;另外,以组播方式发送报文还可以使运行RIP-1的主机避免错误地接收和处理RIP-2中带有子网掩码的路由。当接口运行RIP-2时,也可接收RIP-1的报文。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
指定接口的RIP版本为RIP-1 |
rip version 1 |
|
指定接口的RIP版本为RIP-2 |
rip version 2 [ broadcast | multicast ] |
|
将接口运行的RIP版本恢复为缺省值 |
undo rip version |
缺省情况下,接口接收和发送RIP-1报文;指定接口RIP版本为RIP-2时,缺省使用组播形式传送报文。
RIP-1不支持报文认证。但当接口运行RIP-2时,可以配置报文的认证方式。
RIP-2支持两种认证方式:明文认证和MD5密文认证。MD5密文认证的报文格式有两种:一种遵循RFC2453,另一种遵循RFC2082。
明文认证不能提供安全保障。未加密的认证字随报文一同传送,所以明文认证不能用于安全性要求较高的情况。
请在接口视图下进行下列配置。
表3-17 设置对RIP报文认证
|
操作 |
命令 |
|
对RIP-2进行明文认证 |
rip authentication-mode simple password |
|
对RIP-2进行通用的MD5认证 |
rip authentication-mode md5 rfc2453 key-string |
|
对RIP-2进行非标准兼容的MD5认证 |
rip authentication-mode md5 rfc2082 key-string key-id |
|
取消对RIP-2的认证 |
undo rip authentication-mode |
如果配置MD5认证,则必须配置MD5的类型,其中rfc2453类型支持RFC2453规定的报文格式,rfc2082类型支持RFC2082规定的报文格式。
在接口视图中可指定RIP在接口上的工作状态,如接口上是否运行RIP,即是否在接口发送和接收RIP更新报文;还可单独指定发送(或接收)RIP更新报文。
请在接口视图下进行下列配置。
|
操作 |
命令 |
|
指示接口运行RIP |
rip work |
|
禁止接口运行RIP |
undo rip work |
|
允许接口接收RIP更新报文 |
rip input |
|
禁止接口接收RIP更新报文 |
undo rip input |
|
允许接口发送RIP更新报文 |
rip output |
|
禁止接口发送RIP更新报文 |
undo rip output |
undo rip work命令的功能与undo network命令功能相近,但它们并不完全相同。相同点在于,两命令都可使相应接口不再收发RIP路由;区别在于:执行了undo rip work命令的情况下,其它接口对使用该命令的接口的路由仍然转发;而执行undo network命令,则相当于在接口执行undo rip work,而且相应的接口路由不能被RIP传播出去,导致到该接口的报文不能被转发。
rip work从功能上等价于rip input与rip output两个命令。
缺省情况下,一个接口既接收RIP更新报文,也发送RIP更新报文。
路由器具有RIP多实例功能,能够提供对MPLS VPN的支持。
请在RIP视图下进行下列配置。
表3-19 配置RIP多实例
|
操作 |
命令 |
|
进入RIP的MBGP地址族视图 |
|
|
删除RIP的MBGP地址族配置 |
执行undo ipv4-family命令后,将删除所有在MBGP地址族视图下进行的配置。
MBGP地址族视图用于BGP/MPLS VPN,相关内容请参见本手册的“MPLS”之“MPLS VPN配置”。
请在接口视图(以太网、ATM、Loopback、Tunnel、Bridge-template等接口除外)下进行下列配置。
|
操作 |
命令 |
|
配置Trigger RIP |
rip triggered |
|
关闭Trigger RIP |
undo rip triggered |
缺省情况下,关闭Trigger RIP。
该功能支持RIP v1、RIPv2扩展,可以和RIP v1、RIPv2一起运行。
在完成上述配置后,在所有视图下执行display命令可以显示配置后RIP的运行情况,用户可以通过查看显示信息验证配置的效果。在用户视图下执行debugging命令可对RIP进行调试。
|
操作 |
命令 |
|
显示RIP的当前运行状态及配置信息 |
display rip |
|
显示RIP的接口信息 |
display rip interface [ vpn-instance vpn-instance-name ] |
|
显示RIP的MBGP地址族相关配置 |
display rip vpn-instance vpn-instance-name |
|
显示RIP路由表 |
display rip routing [ vpn-instance vpn-instance-name ] |
|
打开RIP的报文调试信息开关 |
debugging rip packets [ interface type number ] |
|
关闭RIP的报文调试信息开关 |
undo debugging rip packets |
|
打开RIP的接收报文情况调试开关 |
debugging rip receive |
|
关闭RIP的接收报文情况调试开关 |
undo debugging rip receive |
|
打开RIP的发送报文情况调试开关 |
debugging rip send |
|
关闭RIP的发送报文情况调试开关 |
undo debugging rip send |
一个企业的内部网络通过路由器RouterA连到Internet,内部网络的主机直接连接到RouterB或RouterC上。
要求三个路由器上均运行RIP。RouterA只接收从外部网络发来的路由信息,但不对外发布内部网络的路由信息。RouterA、B、C之间能够交互RIP信息,以便于内部主机能够访问Internet。

(1) 配置RouterA
# 配置接口Ethernet2/0/0和Ethernet6/0/0。
[H3C] interface ethernet 2/0/0
[H3C-Ethernet2/0/0] ip address 192.1.1.1 255.255.255.0
[H3C-Ethernet2/0/0] quit
[H3C] interface ethernet 6/0/0
[H3C-Ethernet6/0/0] ip address 192.1.2.1 255.255.255.0
# 启动RIP,并配置在接口Ethernet2/0/0和Ethernet6/0/0上运行RIP。
[H3C] rip
[H3C-rip] network 192.1.1.0
[H3C-rip] network 192.1.2.0
# 配置接口Ethernet 6/0/0只接收RIP报文。
[H3C] interface ethernet 6/0/0
[H3C-Ethernet6/0/0] undo rip output
[H3C-Ethernet6/0/0] rip input
(2) 配置RouterB
# 配置接口Ethernet2/0/0
[H3C] interface Ethernet 2/0/0
[H3C-Ethernet2/0/0] ip address 192.1.1.2 255.255.255.0
# 启动RIP,并配置在接口Ethernet2/0/0上运行RIP。
[H3C] rip
[H3C-rip] network 192.1.1.0
[H3C-rip] import direct
(3) 配置RouterC
# 配置接口Ethernet 2/0/0
[H3C] interface Ethernet 2/0/0
[H3C-Ethernet2/0/0] ip address 192.1.1.3 255.255.255.0
# 启动RIP,并配置在接口Ethernet2/0/0运行RIP。
[H3C] rip
[H3C-rip] import direct
路由器RouterA、RouterB和RouterC上运行RIP,要求网络的收敛时间在30秒以内。

图3-3 RIP定时器配置组网图
& 说明:
接口的IP地址配置如图3-3所示,配置步骤中不再赘述。
(1) 配置RouterA:
# 启动RIP,并使能RouterA的接口Ethernet2/0/0和LoopBack0运行RIP。
[H3C] rip
[H3C-rip] network 10.0.0.0
[H3C-rip] network 11.0.0.0
[H3C-rip] timers update 10 timeout 30
(2) 配置RouterB:
# 启动RIP,并使能RouterB的接口Ethernet2/0/0和Serial1/0/0运行RIP。
[H3C] rip
[H3C-rip] network 10.0.0.0
[H3C-rip] network 12.0.0.0
[H3C-rip] timers update 10 timeout 30
(3) 配置RouterC:
# 启动RIP,并使能RouterC的接口Serial1/0/0运行RIP。
[H3C] rip
[H3C-rip] network 12.0.0.0
[H3C-rip] timers update 10 timeout 30
配置结束后,在RouterB和RouterC执行display ip routing-table命令能看到11.0.0.0/8的路由。将RouterA的Ethernet2/0/0接口shutdown,30秒内,可以观察到RTB和RTC上的路由11.0.0.0/8变成不可达。
在调整定时器之前,RouterA的Ethernet2/0/0接口shutdown后,RouterB和RouterC需要180秒的时间才能感知到路由不可达,可见,调整定时器后,RIP网络的收敛时间缩短了。
如下图所示,路由器B不支持RIP协议。RouterA在Serial1/0/0口使能RIP,引入直连路由,并配置指向2.0.0.0/8的静态路由;C上在Serial1/0/0口使能RIP,引入直连路由,并配置指向1.0.0.0/8的静态路由。RouterA和RouterC上配置互为RIP peer,取消检查收到的RIP报文的源地址。最终实现在RouterA上获得到RouterC的200.0.0.1/24 RIP路由,RouterC上也能获得到RouterA的100.0.0.1/8 RIP路由。

图3-4 RIP非直连邻居的路由交互配置举例
(1) 配置路由器A
# 配置接口IP地址。
[H3C] interface serial1/0/0
[H3C-Serial1/0/0] ip address 1.0.0.1 255.0.0.0
[H3C-Serial1/0/0] rip version 2
[H3C-Serial1/0/0] quit
[H3C] interface LoopBack0
[H3C-LoopBack0] ip address 100.0.0.1 255.0.0.0
[H3C-LoopBack0] quit
# 配置启动RIP协议。
[H3C] rip
[H3C-rip] undo summary
[H3C-rip] network 1.0.0.0
# 配置启动RIP peer,并配置不检查RIP报文源地址。
[H3C-rip] peer 2.0.0.1
[H3C-rip] undo validate-source-address
# 配置RIP协议引入直连路由。
[H3C-rip] import-route direct
[H3C-rip] quit
# 配置到2.0.0.0网段的静态路由。
[H3C] ip route-static 2.0.0.0 255.0.0.0 1.0.0.2 preference 60
(2) 配置路由器B
# 配置接口IP地址。
[H3C] interface serial1/0/0
[H3C-Serial1/0/0] ip address 1.0.0.2 255.0.0.0
[H3C-Serial1/0/0] interface serial1/0/1
[H3C-Serial1/0/1] ip address 2.0.0.2 255.0.0.0
[H3C-Serial1/0/1] quit
# 配置到200.0.0.0网段的静态路由。
[H3C] ip route-static 200.0.0.0 255.255.255.0 2.0.0.1
# 配置到100.0.0.0网段的静态路由。
[H3C] ip route-static 100.0.0.0 255.255.255.0 1.0.0.1
(3) 配置路由器C
# 配置接口IP地址。
[H3C] interface serial1/0/1
[H3C-Serial1/0/1] ip address 2.0.0.1 255.0.0.0
[H3C-Serial1/0/1] rip version 2
[H3C-Serial1/0/1] quit
[H3C] interface LoopBack0
[H3C-LoopBack0] ip address 200.0.0.1 255.255.255.0
# 启动RIP协议。
[H3C] rip
[H3C-rip] undo summary
[H3C-rip] network 2.0.0.0
# 配置RIP peer,并配置不检查收到的RIP报文。
[H3C-rip] peer 1.0.0.1
[H3C-rip] undo validate-source-address
# 配置进入直连路由。
[H3C-rip] import-route direct
[H3C-rip] quit
# 配置到1.0.0.0网段的静态路由器。
[H3C] ip route-static 1.0.0.0 255.0.0.0 2.0.0.2 preference 60
RouterA,C上必须配置到达对端的静态路由,保证路由可达,否则RIP报文无法发送给peer。
另外,若RouterC为PE,则需要配置RIP多实例,并在RIP的MBGP地址族视图下配置取消检查RIP接收报文:
# 配置vpn-instance。
[H3C] ip vpn-instance in
[H3C-vpn-in] route-distinguisher 100:1
[H3C-vpn-in] vpn-target 100:1 export-extcommunity
[H3C-vpn-in] vpn-target 100:1 import-extcommunity
[H3C-vpn-in] quit
# 配置RIP多实例。
[H3C] rip
[H3C-rip] ipv4-family vpn-instance in
[H3C-rip-af-vpn-instance] undo validate-source-address
RouterA与RouterB通过拨号线路互连,在拨号接口上启动TRIP。

图3-5 TRIP典型配置组网图
(1) 配置RouterA
<H3C> system-view
[H3C] dialer-rule 1 ip permit
# 配置AM接口,并在接口上使能TRIP。
[H3C] interface Analogmodem1/0/0
[H3C-Analogmodem1/0/0] async mode protocol
[H3C-Analogmodem1/0/0] link-protocol ppp
[H3C-Analogmodem1/0/0] ip address 13.0.0.1 255.0.0.0
[H3C-Analogmodem1/0/0] rip triggered
# 配置共享DCC。
[H3C-Analogmodem1/0/0] dialer enable-circular
[H3C-Analogmodem1/0/0] dialer-group 1
[H3C-Analogmodem1/0/0] dialer number 6688012
[H3C-Analogmodem1/0/0] quit
# 在13.0.0.0/8网段上使能RIP。
[H3C] rip
[H3C-rip] network 13.0.0.0
[H3C-rip] quit
# 配置AM接口对应的TTY接口。
[H3C] user-interface tty 33 44
[H3C-ui-tty 33 44] modem both
(2) 配置RouterB
<H3C> system-view
# 配置AM接口,并在接口商使能TRIP。
[H3C] interface Analogmodem3/0/0
[H3C-Analogmodem1/0/0] async mode protocol
[H3C-Analogmodem1/0/0] link-protocol ppp
[H3C-Analogmodem1/0/0] ip address 13.0.0.2 255.0.0.0
# 配置共享DCC。
[H3C-Analogmodem1/0/0] rip triggered
[H3C-Analogmodem1/0/0] dialer enable-circular
[H3C-Analogmodem1/0/0] dialer-group 1
[H3C-Analogmodem1/0/0] dialer number 6688003
[H3C-Analogmodem1/0/0] quit
# 配置共享DCC。
[H3C] rip
[H3C-rip] network 13.0.0.0
[H3C-rip] quit
# 配置AM接口对应的TTY接口。
[H3C] user-interface tty 49
[H3C-ui-tty 49] modem both
故障之一:在物理连接正常的情况下收不到更新报文。
相应的接口上RIP没有运行(如执行了undo rip work 命令)或该接口未通过network命令使能。对端路由器上配置的是组播方式(如执行了rip version 2 multicast命令),但在本地路由器上没有配置组播方式。
故障之二:运行RIP的网络发生路由震荡。
故障排除:在各运行RIP的路由器上使用display rip命令查看RIP定时器的配置,如果不同路由器的Period Update定时器和Timeout定时器值不同,重新将全网的定时器配置一致,并确保Timeout定时器时间长度大于Period Update定时器的时间长度。
OSPF是Open Shortest Path First(开放最短路由优先协议)的缩写。它是IETF组织开发的一个基于链路状态的内部网关协议。目前使用的是版本2(RFC2328),其特性如下:
l 适应范围——支持各种规模的网络,最多可支持几百台路由器。
l 快速收敛——在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
l 无自环——由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
l 区域划分——允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。
l 等值路由——支持到同一目的地址的多条等值路由。
l 路由分级——使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
l 支持验证——支持基于接口的报文验证以保证路由计算的安全性。
l 组播发送——支持组播地址。
OSPF协议的路由计算过程可简单描述如下:
l 每个支持OSPF协议的路由器都维护着一份描述整个自治系统拓扑结构的链路状态数据库(Link State Database,简称为LSDB)。每台路由器根据自己周围的网络拓扑结构生成链路状态广播(Link State Advertisement,简称为LSA),通过相互之间发送协议报文将LSA发送给网络中其它路由器。这样每台路由器都收到了其它路由器的LSA,所有的LSA一起组成链路状态数据库。
l 由于LSA是对路由器周围网络拓扑结构的描述,那么LSDB则是对整个网络的拓扑结构的描述。路由器很容易将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。显然,各个路由器得到的是一张完全相同的图。
l 每台路由器都使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由,外部路由信息为叶子节点,外部路由可由广播它的路由器进行标记以记录关于自治系统的额外信息。显然,各个路由器各自得到的路由表是不同的。
此外,为使每台路由器能将本地状态信息(如可用接口信息、可达邻居信息等)广播到整个自治系统中,在路由器之间要建立多个邻接关系,这使得任何一台路由器的路由变化都会导致多次传递,既没有必要,也浪费了宝贵的带宽资源。为解决这一问题,OSPF协议定义了“指定路由器”(DR),所有路由器都只将信息发送给DR,由DR将网络链路状态广播出去。这样就减少了多址访问网络上各路由器之间邻接关系的数量。
OSPF协议支持基于接口的报文验证以保证路由计算的安全性;并使用IP多播方式发送和接收报文。
一台路由器如果要运行OSPF协议,必须存在Router ID。如果没有配置ID号,
l 若系统当前配置了Loopback接口IP地址,则选择最后配置的Loopback接口的IP地址作为router id;
l 若系统当前没有配置Loopback接口,则选取第一个配置并UP的物理接口的IP地址作为router id。
一般建议选择loopback接口的IP地址作为本机ID号,因为该接口永远UP(除非手工shutdown)。
l DR(Designated Router,指定路由器)
在广播网络或者多点访问网络中,为使每台路由器能将本地状态信息广播到整个自治系统中,在路由器之间要建立多个邻居关系,但这使得任何一台路由器的路由变化都会导致多次传递,浪费了宝贵的带宽资源。为解决这一问题,OSPF协议定义了DR,所有路由器都只将信息发送给DR,由DR将网络链路状态广播出去,除DR/BDR外的路由器(称为DR Other)之间将不再建立邻居关系,也不再交换任何路由信息。
哪一台路由器会成为本网段内的DR并不是人为指定的,而是由本网段中所有的路由器共同选举出来的。
l BDR(Backup Designated Router,备份指定路由器)
如果DR由于某种故障而失效,这时必须重新选举DR,并与之同步。这需要较长的时间,在这段时间内,路由计算是不正确的。为了能够缩短这个过程,OSPF提出了BDR的概念。BDR实际上是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR,并重新选举BDR。
随着网络规模日益扩大,当一个网络中的OSPF路由器数量非常多时,会导致LSDB变得很庞大,占用大量存储空间,并消耗很多CPU资源来进行SPF计算。并且,网络规模增大后,拓扑结构发生变化的概率也会增大,导致大量的OSPF协议报文在网络中传递,降低网络的带宽利用率。
OSPF协议将自治系统划分成多个区域(Area)来解决上述问题。区域在逻辑上将路由器划分为不同的组。不同的区域以区域号(Area ID)标识,其中一个最重要的区域是区域0,也称为骨干区域(backbone area)。
骨干区域完成非骨干区域之间的路由信息交换,它必须是连续的,对于物理上不连续的区域,需要配置虚连接(virtual links)来保持骨干区域在逻辑上的连续性。
连接骨干区域和非骨干区域的路由器称作区域边界路由器(Area Border Router,简称为ABR)。
OSPF中还有一类自治系统边界路由器(Autonomous System Boundary Router,简称为ASBR),实际上,这里的AS并不是严格意义的自治系统,连接OSPF路由域(routing domain)和其它路由协议域的路由器都是ASBR,可以认为ASBR是引入OSPF外部路由信息的路由器。
AS被划分成不同的区域,每一个区域通过OSPF边界路由器(ABR)相连,区域间可以通过路由汇聚来减少路由信息,减小路由表的规模,提高路由器的运算速度。
ABR在计算出一个区域的区域内路由之后,查询路由表,将其中每一条OSPF路由封装成一条LSA发送到区域之外。
例如,图4-1中,Area 19内有三条区域内路由19.1.1.0/24,19.1.2.0/24,19.1.3.0/24,如果此时配置了路由聚合,将三条路由聚合成一条19.1.0.0/16,在RTA上就只生成一条描述聚合后路由的LSA。

OSPF有五种报文类型:
l HELLO报文(Hello Packet):
最常用的一种报文,周期性的发送给本路由器的邻居。内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。
l DD报文(Database Description Packet):
两台路由器进行数据库同步时,用DD报文来描述自己的LSDB,内容包括LSDB中每一条LSA的摘要(摘要是指LSA的HEAD,通过该HEAD可以唯一标识一条LSA)。这样做是为了减少路由器之间传递信息的量,因为LSA的HEAD只占一条LSA的整个数据量的一小部分,根据HEAD,对端路由器就可以判断出是否已有这条LSA。
l LSR报文(Link State Request Packet):
两台路由器互相交换DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。
l LSU报文(Link State Update Packet):
用来向对端路由器发送所需要的LSA,内容是多条LSA(全部内容)的集合。
l LSAck报文(Link State Acknowledgment Packet)
用来对接收到的LSU报文进行确认。内容是需要确认的LSA的HEAD(一个报文可对多个LSA进行确认)。
根据前面几节的介绍可以了解到,链路状态广播报文LSA是OSPF协议计算和维护路由信息的主要来源。在RFC2328中定义了五类LSA,描述如下:
l Router-LSAs:第一类LSA(Type-1),由每个路由器生成,描述本路由器的链路状态和花费,只在路由器所处区域内传播。
l Network-LSAs:第二类LSA(Type-2),由广播网络和NBMA网络的DR生成,描述本网段的链路状态,只在DR所处区域内传播。
l Summary-LSAs:包含第三类LSA和第四类LSA(Type-3,Type-4),由区域边界路由器ABR生成,在与该LSA相关的区域内传播。每一条Summary-LSA描述一条到达本自治系统的、其它区域的某一目的地的路由(即区域间路由:inter-area route)。Type-3 Summary-LSAs描述去往网络的路由(目的地为网段),Type-4 Summary-LSAs描述去往自治系统边界路由器ASBR的路由。
l AS-external-LSAs:第五类LSA(Type-5),由自治系统边界路由器ASBR生成,描述到达其它AS的路由,传播到整个AS(Stub区域除外)。AS的缺省路由也可以用AS-external-LSAs来描述。
在RFC1587(OSPF NSSA Option)中增加了一类新的LSA:NSSA LSAs,也称为Type-7 LSAs。
根据RFC1587的描述,Type-7 LSAs与Type-5 LSAs主要有以下两点区别:
l Type-7 LSAs在NSSA区域(Not-So-Stubby Area)内产生和发布;但NSSA区域内不会产生或发布Type-5 LSAs。
l Type-7 LSAs只能在一个NSSA内发布,当到达区域边界路由器ABR时,由ABR将Type-7 LSAs转换成Type-5 LSAs再发布,不直接发布到其它区域或骨干区域。
为了使OSPF能够支持更多新的业务应用,在RFC2370(The OSPF Opaque LSA)中定义了用于对OSPF进行扩展的Opaque LSAs。
Opaque LSAs包含三种类型的LSA,不同类型的LSA扩散范围不同:
l Type-9:扩散范围为link-local,可以认为只在某一个接口所在的网段扩散,不会发布到本地网段或本地子网以外。
l Type-10:扩散范围为area-local,即,只在本区域以内扩散。
l Type-11:与Type-5 LSAs具有相同的扩散范围,可以在除STUB区域和NSSA区域之外的整个自治系统内部扩散。
Opaque LSAs包括一个标准的20字节LSA头和一个应用信息相关的域,其报文结构如下图所示:

图4-2 Opaque LSAs结构示意图
其中,Opaque Type字节用来标识此LSA的应用类型,Opaque ID则对同一应用类型的LSA做进一步的区分。
Opaque Information字段中是LSA携带的信息,具体的信息格式可由不同的应用根据自己的需求来定义。
在Comware目前的实现中,支持以下OSPF特性:
l 支持OSPF STUB区域;
l 支持OSPF NSSA区域;
l 支持OSPF多进程(Multi-Process),可以在一台路由器上运行多个OSPF进程;
l 支持OSPF多实例(Multi-VPN-Instance),可以作为VPN内部路由协议,在MPLS VPN解决方案的CE-PE之间运行;
l 支持MPLS流量工程(Traffic Engineering,简称TE),使用Type-10的Opaque LSAs,应用类型(Opaque type)为1。
OSPF在MPLS VPN中的应用请参考本手册“MPLS”部分。
l 实现了不同区域(并不一定是两个非骨干区)相同种类的冲突路由(指通过相同LSA计算出来的路由)的优选和备份。

上图中A、B、C设备作为网络边缘设备,连接到两个非骨干区,通过两个非骨干区备份上行路由。这两个非骨干区通常是STUB区域或者是NSSA区域。当一个区域中的路由变化、删除的时候,会触发另外一个区域内的路由计算,进而使得路由能够动态更新、优选及动态备份。
本特性会造成多个非骨干区域之间的路由计算相互关联,即如果从多个区域学习到多条相同且同类的冲突路由,当冲突路由变化的时候就会造成多个区域都进行路由计算,会造成一定的计算负担,因此组网的时候应该尽量避免使用多个非骨干区域相互备份路由这种设计。
在各项配置中,必须先启动OSPF、指定接口与区域号后,才能配置其它的功能特性。
而配置与接口相关的功能特性不受OSPF是否使能的限制。需要注意的是,在关闭OSPF后,原来与OSPF相关的接口参数也同时失效。
对于基本的OSPF配置,需要进行的操作包括:
l 配置Router ID
l 启动OSPF
l 进入OSPF区域视图
l 在指定网段使能OSPF
如果OSPF的骨干区域不连续,则需要:
l 配置OSPF虚连接
根据OSPF的网络类型不同,可能还需要进行以下配置:
l 配置OSPF网络类型
l 配置邻接点
(2) OSPF路由的管理
l 配置OSPF的路由引入
l 配置OSPF的路由过滤
l 配置OSPF的路由聚合
(3) OSPF协议本身的参数配置
l 配置OSPF优先级
l 配置OSPF定时器
l 配置选举DR时的优先级
l 配置接口发送报文的开销
l 配置OSPF的SPF计算间隔
l 配置发送链路状态更新报文所需时间
l 配置接口发送DD报文时是否填MTU值
l 配置OSPF等值路由的最大个数
(4) 安全性考虑
为提高OSPF在交换路由信息时的安全性,或控制OSPF报文的扩散范围,可以选择以下配置:
l 配置OSPF认证
l 配置接口的工作状态
(5) OSPF高级特性的配置
l 配置OSPF的STUB区域
l 配置OSPF的NSSA区域
l 使能OSPF的Opaque能力
l 配置OSPF与网管系统的配合
l 重启OSPF
& 说明:
OSPF多实例的具体应用和在MPLS VPN中的配置,请参考本手册的“VPN”部分;OSPF在MPLS TE中的具体应用和配置,请参考本手册的“MPLS”部分。
路由器的ID是一个32比特无符号整数,采用IP地址形式,是一台路由器在自治系统中的唯一标识。路由器的ID可以手工配置,如果没有配置ID号,系统会从当前接口的IP地址中自动选一个较小的IP地址作为路由器的ID号。手工配置路由器的ID时,必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个接口的IP地址一致。
请在系统视图下进行下列配置。
|
操作 |
命令 |
|
配置路由器的ID号 |
router id router-id |
|
取消路由器的ID号 |
undo router id |
为保证OSPF运行的稳定性,在进行网络规划时,应确定路由器ID的划分并手工配置。
& 说明:
OSPF启动后修改的Router ID,需要重新启动OSPF进程之后,Router ID才能在OSPF中生效。
OSPF支持多进程,一台路由器上启动的多个OSPF进程之间由不同的进程号区分。OSPF进程号在启动OSPF时进行设置,它只在本地有效,不影响与其它路由器之间的报文交换。
表4-2 启动/关闭OSPF
|
操作 |
命令 |
|
启动OSPF,进入OSPF视图 |
ospf [ process-id [ [ router-id router-id ] vpn-instance vpn-instance-name ] ] |
|
关闭OSPF路由协议进程 |
undo ospf [ process-id ] |
缺省情况下,不运行OSPF。
启用OSPF时,需要注意:
l 如果在启动OSPF时不指定进程号,将使用缺省的进程号1;关闭OSPF时不指定进程号,缺省关闭进程1。
l 在同一个区域中的进程号必须一致,否则会造成进程之间的隔离。
l 当在一台路由器上运行多个OSPF进程时,建议用户使用以上命令中的router-id为不同进程指定不同的Router ID。
l 以上命令中的vpn-instance用于将OSPF进程与VPN实例进行绑定,用于MPLS VPN解决方案,详细介绍请参考本手册的“VPN”部分。
OSPF协议将自治系统划分成不同的区域(Area),在逻辑上将路由器分为不同的组。在区域视图下可以进行区域相关配置。
请在OSPF视图下进行下列配置。
表4-3 进入OSPF区域视图
|
操作 |
命令 |
|
进入OSPF区域视图 |
area area-id |
|
删除指定的OSPF区域 |
undo area area-id |
区域ID可以采用十进制整数或IP地址形式输入,但显示时使用IP地址形式。
在配置同一区域内的OSPF路由器时,应注意:大多数配置数据都应该对区域统一考虑,否则可能会导致相邻路由器之间无法交换信息,甚至导致路由信息的阻塞或者产生路由环。
在系统视图下使用ospf命令启动OSPF后,还必须指定在哪个网段上应用OSPF。
请在OSPF区域视图下进行下列配置。
表4-4 在指定网段使能OSPF
|
操作 |
命令 |
|
指定网段运行OSPF协议 |
network ip-address wildcard-mask |
|
取消网段运行OSPF协议 |
undo network ip-address wildcard-mask |
一台路由器可能同时属于不同的区域(这样的路由器称作ABR),但一个网段只能属于一个区域。
OSPF协议规定:所有非骨干区域必须与骨干区域保持连通,即ABR上至少有一个端口应在区域0.0.0.0中。如果一个区域与骨干区域0.0.0.0没有直接的物理连接,就必须建立虚连接来保持逻辑上的连通。
虚连接是在两台ABR之间,通过一个非骨干区域内部路由的区域而建立的一条逻辑上的连接通道。它的两端必须都是ABR,并且必须在两端同时配置。虚连接由对端路由器的Router ID来标识。为虚连接提供非骨干区域内部路由的区域称为运输区域(Transit Area)。
虚连接在穿过转换区域的路由计算出来后被激活,相当于在两个端点之间形成一个点到点连接,这个连接与物理接口类似,可以配置接口的各参数,如Hello报文的发送间隔等。
虚连接的配置是在Transit区域进行的。
请在OSPF区域视图下进行下列配置。
表4-5 配置OSPF虚连接
|
操作 |
命令 |
|
创建并配置虚连接 |
vlink-peer router-id [ hello seconds] [ retransmit seconds ] [ trans-delay seconds ] [ dead seconds] [ simple password | md5 keyid key ] |
|
取消创建的虚连接 |
undo vlink-peer router-id |
缺省情况下,hello的值为10秒;retransmit的值为5秒;trans-delay的值为1秒;dead的值为40秒。
将虚连接看做“逻辑通道”是因为:两个ABR之间的OSPF路由器只对报文进行透明转发(由于协议报文的目的地址不是这些路由器,所以这些报文对于他们而言是透明的,只是当作普通的IP报文转发),两台ABR之间直接传递路由信息。这里的路由信息是指由ABR生成的Type3 LSAs,区域内的路由器同步方式没有因此改变。
OSPF以本路由器邻接网络的拓扑结构为基础计算路由。每台路由器将自己邻接的网络拓扑描述出来,传递给所有其它的路由器。
根据链路层协议类型,OSPF将网络分为四种类型:
l 广播类型:链路层协议是Ethernet、FDDI。
l 非广播多路访问Non Broadcast MultiAccess(NBMA)类型:链路层协议是帧中继、ATM、HDLC或X.25时。
l 点到多点Point-to-Multipoint(p2mp)类型:没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必然是由其他网络类型强制更改的。常见的做法是将非全连通的NBMA改为点到多点的网络。
l 点到点Point-to-point(p2p)类型:链路层协议是PPP或LAPB。
NBMA网络是指非广播、多点可达的网络,典型的有ATM。可通过配置轮询间隔来指定路由器在与相邻路由器构成邻接关系之前发送轮询Hello报文的时间周期。
在没有多址访问能力的广播网上,可将接口配置成nbma方式。
若在NBMA网络中并非所有路由器之间都直接可达时,可将接口配置成p2mp方式。
若该路由器在NBMA网络中只有一个对端,则也可将接口类型改为p2p方式。
NBMA与p2mp之间的区别:
l 在OSPF协议中NBMA是指那些全连通的、非广播、多点可达网络。而点到多点的网络,则并不需要一定是全连通的。
l 在NBMA上需要选举DR与BDR,而在点到多点网络中没有DR与BDR。
l NBMA是一种缺省的网络类型,例如:如果链路层协议是ATM,OSPF会缺省的认为该接口的网络类型是NBMA(不论该网络是否全连通)。点到多点不是缺省的网络类型,没有哪种链路层协议会被认为是点到多点,点到多点一定是由其它的网络类型强制更改的。最常见的做法是将非全连通的NBMA改为点到多点的网络。
l NBMA用单播发送报文,需要手工配置邻居。点到多点采用多播方式发送报文。
请在接口视图下进行下列配置。
表4-6 配置OSPF接口的网络类型
|
操作 |
命令 |
|
配置接口的网络类型 |
ospf network-type { broadcast | nbma | p2mp | p2p } |
缺省情况下,OSPF根据链路层类型得出网络类型。如果用户为接口配置了新的网络类型,原接口的网络类型自动取消。
对于接口类型为NBMA的网络,由于无法通过广播Hello报文的形式发现相邻路由器,必须手工为其指定相邻路由器的IP地址,并说明该相邻路由器是否有选举权。
请在OSPF视图下进行下列配置。
|
操作 |
命令 |
|
配置NBMA接口的邻接点 |
peer ip-address [ dr-priority dr-priority-number ] |
|
取消配置NBMA接口的邻接点 |
undo peer ip-address |
缺省情况下,NBMA接口的邻接点优先级的取值为1。
使用ospf dr-priority命令和使用peer命令设置的优先级具有不同的用途:
l ospf dr-priority命令设置的优先级用于实际的DR选举;
l peer命令设置的优先级用于表示邻居是否具有选举权。如果在配置邻居时将优先级指定为0,则本地路由器认为该邻居不具备选举权,不向该邻居发送Hello报文,这种配置可以减少在DR和BDR选举过程中网络上的Hello报文数量。但如果本地路由器是DR或BDR,它也会向优先级为0的邻居发送Hello报文,以建立邻接关系。
路由器上各动态路由协议之间可以互相共享路由信息,由于OSPF的特性,其它的路由协议发现的路由总被当作自治系统外部的路由信息处理。在接收命令中,可以指定路由的花费类型、花费值和标记以覆盖缺省的路由接收参数(见“配置OSPF接收外部路由的默认选项”的配置部分)。
OSPF使用4类不同的路由,按优先顺序排列如下:
l 区域内路由
l 区域间路由
l 第一类外部路由
l 第二类外部路由
区域内和区域间路由描述自治系统内部的网络结构;外部路由则描述了如何选择到自治系统以外目的地的路由。
第一类外部路由是指接收的是IGP路由(例如RIP,STATIC),由于这类路由的可信程度较高,所以,计算出的外部路由的花费与自治系统内部的路由花费的数量级相同,并且与OSPF自身路由的花费具有可比性,即:到第一类外部路由的花费值=本路由器到相应的ASBR的花费值+ASBR到该路由目的地址的花费值。
第二类外部路由是指接收的是EGP路由,由于这类路由的可信度比较低,所以OSPF协议认为,从ASBR到自治系统之外的花费远远大于在自治系统之内到达ASBR的花费,计算路由花费时主要考虑前者。即,到第二类外部路由的花费值=ASBR到该路由目的地址的花费值。如果该值相等,再考虑本路由器到相应的ASBR的花费值。
请在OSPF视图下进行下列配置。
|
操作 |
命令 |
|
引入其它协议的路由信息 |
import-route protocol [ allow-ibgp] [ cost value ] [ type { 1 | 2 } ] [ tag value ] [ route-policy route-policy-name ] |
|
取消引入其它协议路由信息 |
undo import-route protocol |
缺省情况下,OSPF将不引入其它协议的路由信息。当配置引入其他协议的路由信息时,缺省情况下,cost为 1,type为2,tag为1。
当protocol为BGP时,allow-ibgp为可选关键字。import-route bgp表示只引入EBGP路由,import-route bgp allow-ibgp表示将IBGP路由也引入,该配置危险,请慎用!
可引入的路由包括direct、static、RIP、IS-IS与BGP,也可以引入其它进程的OSPF路由。
当OSPF将其它路由协议发现的路由信息引入到本自治系统中时,还需要配置一些额外的参数,如引入路由的缺省花费和缺省标记等。路由标记可以用来标识协议相关的信息,如OSPF接收BGP时用来区分自治系统的编号。
请在OSPF视图下进行下列配置。
表4-9 配置OSPF引入外部路由的参数
|
操作 |
命令 |
|
配置OSPF引入外部路由的最小时间间隔 |
default interval seconds |
|
恢复引入外部路由最小时间间隔的缺省值 |
undo default interval |
|
配置OSPF每次引入路由的数量上限 |
default limit routes |
|
恢复每次引入外部路由数量上限的缺省值 |
undo default limit |
|
配置OSPF在接收外部路由时缺省的花费值 |
default cost value |
|
恢复OSPF在接收外部路由时花费的缺省值 |
undo default cost |
|
配置OSPF在接收外部路由时缺省的标记值 |
default tag tag |
|
恢复OSPF在接收外部路由时标记的缺省值 |
undo default tag |
|
配置OSPF在接收外部路由时缺省的类型 |
default type { 1 | 2 } |
|
恢复OSPF接收外部路由类型的缺省值 |
undo default type |
缺省情况下,引入外部路由时的cost为1,tag为1,路由的类型为Type 2;引入外部路由的时间间隔为1秒;每次可引入的外部路由上限为1000条。
缺省情况下,普通的OSPF区域(骨干区域和非骨干区域)中是没有缺省路由的,import-route命令也无法向OSPF路由域中引入缺省路由。
命令default-route-advertise可以在OSPF路由域中生成并发布缺省路由,使用这条命令时,需要了解以下几点:
l 在普通OSPF区域的ASBR或ABR上执行default-route-advertise命令,将生成一条Type-5 LSA向OSPF路由域内发布缺省路由;
l 在NSSA区域的ASBR或ABR上执行此命令,将生成一条Type-7 LSA向NSSA区域内发布缺省路由;
l 此命令对于Stub区域或完全 stub区域无效;
l 对于ASBR,只有当路由表中已经存在一条缺省路由时,OSPF才会生成相应的Type-5 LSA或Type-7 LSA;
l 对于ABR,不论路由表中是否已经存在缺省路由,都会生成Type-5 LSA或Type-7 LSA。
l 发布缺省路由的Type-5 LSA或Type-7 LSA的扩散范围与普通的Type-5 LSA或Type-7 LSA相同。
请在OSPF视图下进行下列配置。
表4-10 在OSPF中生成缺省路由
|
操作 |
命令 |
|
在OSPF中生成缺省路由 |
default-route-advertise [ always ] [ cost value ] [ type value ] [ route-policy route-policy-name ] |