04-路由协议操作
本章节下载 (955.56 KB)
目 录
5.2.18 定义访问控制列表、AS路径列表和Route-policy
6.4.5 基于BGP next-hop/as-path/origin/local-preference属性的路由策略配置举例
在因特网中进行路由选择要使用路由器,路由器根据所收到的报文的目的地址选择一条合适的路由(通过某一网络),将报文传送到下一个路由器,路由中最后的路由器负责将报文送交目的主机。
例如,在图1-1中,主机A到主机C共经过了3个网络和2个路由器,跳数为2。由此可见,若一节点通过一个网络与另一节点相连接,则此二节点相隔一个路由段,因而在因特网中是相邻的。同理,相邻的路由器是指这两个路由器都连接在同一个网络上。一个路由器到本网络中的某个主机的路由段数算作零。在图中用粗的箭头表示这些路由段。至于每一个路由段又由哪几条物理链路构成,路由器并不关心。
由于网络大小可能相差很大,而每个路由段的实际长度并不相同,因此对不同的网络,可以将其路由段乘以一个加权系数,用加权后的路由段数来衡量通路的长短。
如果把网络中的路由器看成是网络中的节点,把因特网中的一个路由段看成是网络中的一条链路,那么因特网中的路由选择就与简单网络中的路由选择相似了。采用路由段数最小的路由有时也并不一定是最理想的。例如,经过三个高速局域网段的路由可能比经过两个低速广域网段的路由快得多。
路由器转发分组的关键是路由表。每个路由器中都保存着一张路由表,表中每条路由项都指明分组到某子网或某主机应通过路由器的哪个物理端口发送,然后就可到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。
路由表中包含了下列关键项:
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和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)外,各动态路由协议的优先级都可根据用户需求,手工进行配置。另外,每条静态路由的优先级都可以不相同。
支持多路由模式,即允许配置多条到同一目的地而且优先级相同的路由。到同一目的地而且优先级相同的路由指的是目的网络和掩码相同,优先级相同,但下一跳地址或者出接口不相同。当没有比到此目的地优先级更高的路由时,这几条路由都被系统采纳,在转发报文时,依次通过各条路径发送,从而实现网络的负载分担。路由负载分担只能在同一个路由协议的等价路由(即路由的cost代价相等)之间进行,例如不能在所配置的静态路由和OSPF路由之间进行。
目前,支持负载分担的路由协议有:静态路由、RIP、OSPF、BGP和IS-IS。
负载分担的实现方式有两种:
l 基于流的负载分担。缺省情况下,路由器使能了快速转发功能,此时路由器只能基于流进行负载分担。例如,当前路由器上存在两条等价路由,如果此时只有一个数据流,那么将从一条路由上转发;如果有两个数据流,那么两条路由各转发一个。子接口也支持快转,实现基于流的负载分担。
l 基于报文的负载分担。当关闭了快转功能时,并且路由器拥有到同一目的地的多条等价路由时,路由器将基于报文进行负载分担,即将待发送报文均匀分配到两条路由上。
当主路由发生故障时,自动切换到备份路由,提高用户网络的可靠性。为了实现路由的备份,用户可根据实际情况,配置到同一目的地的多条路由,其中一条路由的优先级最高,称为主路由,其余的路由优先级依次递减,称为备份路由。这样,正常情况下,路由器采用主路由发送数据。当线路发生故障时,路由器会选择余下的优先级最高的备份路由作为数据发送的途径。这样,也就实现了主路由到备份路由的切换。当主路由恢复正常时,路由器恢复相应的路由,并重新选择路由。由于该路由的优先级最高,路由器选择主路由来发送数据。上述过程是备份路由到主路由的自动切换。
由于各路由协议的算法不同,不同的协议可能会发现不同的路由,因此各路由协议之间存在如何共享各自发现结果的问题。路由器支持将一种路由协议发现的路由引入(import-route)到另一种路由协议中,每种协议都有相应的路由引入机制,具体内容请参见各路由协议的配置指导中引入外部路由部分的描述。
静态路由是一种特殊的路由,它由管理员手工配置而成。通过静态路由的配置可建立一个互通的网络,但这种配置缺点在于:当一个网络故障发生后,静态路由不会自动发生改变,必须有管理员的介入。
在组网结构比较简单的网络中,只需配置静态路由就可以使路由器正常工作,仔细设置和使用静态路由可以改进网络的性能,并可为重要的应用保证带宽。
静态路由还有如下的属性:
l 可达路由,正常的路由都属于这种情况,即IP报文按照目的地标示的路由被送往下一跳,这是静态路由的一般用法。
l 目的地不可达的路由,当到某一目的地的静态路由具有“reject”属性时,任何去往该目的地的IP报文都将被丢弃,并且通知源主机目的地不可达。
l 目的地为黑洞的路由,当到某一目的地的静态路由具有“blackhole”属性时,任何去往该目的地的IP报文都将被丢弃,并且不通知源主机。
其中“reject”和“blackhole”属性一般用来控制本路由器可达目的地的范围,辅助网络故障的诊断。
缺省路由是一种特殊的路由,可以通过静态路由配置,某些动态路由协议也可以生成缺省路由,如OSPF等。
简单地说,缺省路由就是在没有找到匹配的路由时才使用的路由。即只有当没有合适的路由时,缺省路由才被使用。在路由表中,缺省路由以到网络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 ] |
删除一条静态路由 |
undo ip route-static ip-address {mask | mask-length } [ interfacce-name | nexthop-address ] [ preference value ] |
其中各参数的解释如下:
(1) IP地址和掩码
IP地址为点分十进制格式,由于要求掩码32位中‘1’必须是连续的,因此掩码可以用点分十进制表示,也可用掩码长度(即掩码中‘1’的位数)表示。
(2) 发送接口或下一跳地址
在配置静态路由时,可指定发送接口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),这都会导致出现多个下一跳,无法唯一确定下一跳。在某些特殊应用中,如果必须指定广播接口(如以太网接口)或NBMA接口做为发送接口,应同时指定通过该接口发送时对应的下一跳地址。
(3) 优先级
对优先级preference的不同配置,可以灵活应用路由管理策略。
(4) 其它参数
属性reject和blackhole分别指明不可达路由和黑洞路由。
请在系统视图下进行下列配置。
操作 |
命令 |
配置缺省路由 |
ip route-static 0.0.0.0 { 0.0.0.0 | 0 } {interface-type interface-number | nexthop-address } [ preference value ] |
删除缺省路由 |
undo ip route-static 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 ] |
查看树形式路由表 |
display ip routing-table radix |
查看路由表的统计信息 |
display ip routing-table statistics |
清除路由表信息 |
reset ip routing-table statistics protocol protocol-type |
如下图所示,要求配置静态路由,使任意两台主机或路由器之间都能互通。
# 配置RouterA静态路由:
[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命令查看该静态路由是否已经生效。
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时间内,不可达路由没有收到来自同一邻居的更新,则该路由被从路由表中删除。
RIPv1启动和运行的整个过程可描述如下:
l 某路由器刚启动RIP时,以广播的形式向相邻路由器发送请求报文,运行RIP协议的相邻路由器的RIP收到请求报文后,响应该请求,回送包含本地路由表信息的响应报文。
l 路由器收到响应报文后,更新本地路由表,同时向相邻路由器发送更新报文,广播路由更新信息。运行RIP协议的相邻路由器收到更新报文后,又向其各自的相邻路由器发送更新报文。在一连串的更新广播后,各路由器都能得到并保持最新的路由信息。
l 同时,RIP每隔Period update的时间向相邻路由器广播本地路由表,运行RIP协议的相邻路由器在收到报文后,对本地路由进行维护,选择一条最佳路由,再向其各自相邻网络广播更新信息,使更新的路由最终能达到全部网络。同时,RIP采用超时机制对过时的路由进行超时处理,以保证路由的实时性和有效性。
RIPv2的启动和运行过程与RIPv1基本相同,但缺省情况下其更新报文是发送到组播地址224.0.0.9。根据不同需求,也可以配置RIPv2发送广播更新报文以对RIPv1进行向后兼容。
RIP正被大多数IP路由器厂商广泛使用。它可用于大多数校园网及结构较简单的连续性强的地区性网络。对于更复杂环境及大型网络,一般不使用RIP。
H3C MSR 50-06路由器可以支持RIP-1和RIP-2协议。
配置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 配置接口的工作状态
启动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使用广播地址发送报文,如果需要在不支持广播报文的链路上运行RIP,就必须采用定点传送的方式,否则将不能正常地建立RIP邻居关系。
请在RIP视图下进行下列配置。
表3-3 配置RIP报文定点传送
操作 |
命令 |
配置RIP报文的定点传送 |
peer ip-address |
undo peer ip-address |
缺省情况下,RIP不向任何定点地址发送报文。
需要注意的是:peer在发送报文时受接口工作状态的限制,接口的工作状态由rip work、rip output、rip input和network等命令进行配置。
水平分割是指不从本接口发送从该接口学到的路由。它可以在一定程度上避免产生路由环。但在某些特殊情况下,却需要禁止水平分割,以保证路由的正确传播。禁止水平分割对点到点链路不起作用,但对以太网来说是可行的。
请在接口视图下进行下列配置。
操作 |
命令 |
启动水平分割 |
rip split-horizon |
禁止水平分割 |
undo rip split-horizon |
缺省情况下,接口允许水平分割。
附加路由权是对RIP路由添加的输入或输出路由权值,附加路由权并不直接改变路由表中的路由权值,而是在接收或发送路由时增加一个指定的权值。
请在接口视图下进行下列配置。
操作 |
命令 |
设置接口在接收RIP报文时给路由附加路由权值 |
rip metricin value |
禁止接口在接收RIP报文时给路由附加路由权值 |
undo rip metricin |
设置接口在发送RIP报文时给路由附加路由权值 |
rip metricout value |
禁止接口在发送RIP报文时给路由附加路由权值 |
undo rip metricout |
缺省情况下,RIP在发送报文时给路由增加的附加路由权值为1;在接收报文时给路由增加的附加路由权值为0。
RIP允许用户将其它路由协议的路由信息引入到RIP中,并可以设置引入时使用的缺省路由权。
可引入到RIP中的路由类型包括:Direct、Static、OSPF和BGP。
请在RIP视图下进行下列配置。
表3-6 配置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视图下进行下列配置。
表3-7 配置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 |
表3-8 配置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时,可用于过滤从指定路由协议引入的路由。
在某些特殊情况下,路由器会收到大量来自同一网段的主机路由,这些路由对于路由寻址没有多少作用,却占用了大量网络资源。配置了禁止主机路由功能后,路由器能够拒绝它所收到的主机路由。
请在RIP视图下进行下列配置。
表3-9 禁止RIP接收主机路由
操作 |
命令 |
允许接收主机路由 |
host-route |
禁止接收主机路由 |
undo host-route |
缺省情况下,路由器接收主机路由。
路由聚合是指:同一自然网段内的不同子网的路由在向外(其它网段)发送时聚合成一条自然掩码的路由发送。这一功能主要用于减小路由表的尺寸,进而减少网络上的流量。
路由聚合对RIP-1不起作用。RIP-2支持无类地址域间路由。当需要将所有子网路由广播出去时,可关闭RIP-2的路由聚合功能。
请在RIP视图下进行下列配置。
表3-10 配置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报文的源地址
l 配置静态路由,使RIP非直连邻居间的路由可达,以保证报文被正确发送到非直连邻居。
此时,路由器在发送单播报文时,就不会检查目的地址是否是直连地址,并会去掉导致RouterB不转发报文的标志信息;在收到RIP报文时,也不会检查报文的源地址,并能通过报文的源地址和目的地址找到入接口。
通常情况下,RIP使用广播或组播地址发送报文,如果需要在不支持广播报文的链路上运行RIP,就必须采用定点传送的方式,否则将不能正常地建立RIP邻居关系;在运行RIP协议的路由器为非直连邻居时,也必须配置RIP报文定点传送。
请在RIP视图下进行下列配置。
表3-11 配置RIP报文定点传送
操作 |
命令 |
配置RIP报文的定点传送 |
peer ip-address |
取消RIP报文的定点传送 |
undo peer ip-address |
缺省情况下,RIP不向任何定点地址发送报文。
需要注意的是:peer在发送报文时受接口工作状态的限制,接口的工作状态由rip work、rip output、rip input和network等命令进行配置。
请在RIP视图下进行下列配置。
表3-12 配置检查/不检查收到的RIP报文的源地址
操作 |
命令 |
配置检查RIP报文的源地址 |
validate-source-address |
取消检查RIP报文的源地址 |
undo validate-source-address |
缺省情况下,检查RIP报文的源地址。
当启动了RIP接口间的负载分担功能时,可以使流量通过等价路由均衡地在各个接口之间分配。
请在RIP视图下进行下列配置。
表3-13 配置RIP在接口间实现负载分担功能
操作 |
命令 |
配置RIP在接口间实现负载分担功能 |
traffic-share-across-interface |
关闭RIP在接口间的负载分担功能 |
undo traffic-share-across-interface |
缺省情况下,关闭RIP接口间流量负载分担功能。
每一种路由协议都有自己的优先级,协议的优先级将影响路由策略采用哪种路由协议获取的路由作为最优路由。优先级的数值越大,其实际的优先级越低。可以手工设定RIP的优先级。
请在RIP视图下进行下列配置。
表3-14 设置RIP的优先级
操作 |
命令 |
设置RIP协议的优先级 |
preference value |
将RIP协议的优先级恢复为缺省值 |
undo preference |
缺省情况下,RIP的优先级为100。
在本章开始已经介绍过,RIP有三个定时器:Period update、Timeout和Garbage-collection。改变这几个定时器的值,可以影响RIP的收敛速度。
请在RIP视图下进行下列配置。
表3-15 配置RIP定时器
操作 |
命令 |
配置RIP定时器的值 |
timers { update update-timer-length | timeout timeout-timer-length } * |
恢复RIP定时器的缺省值 |
undo timers { update | timeout } * |
RIP定时器的值在更改后立即生效。
缺省情况下,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-18 设置对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命令,则相应的接口路由不能被RIP传播出去,导致到该接口的报文不能被转发。
rip work从功能上等价于rip input与rip output两个命令。
缺省情况下,一个接口既接收RIP更新报文,也发送RIP更新报文。
当需要重新配置RIP协议参数时,可以使用该命令恢复RIP协议的缺省配置。
请在RIP视图下进行下列配置。
表3-20 复位RIP协议的系统配置参数。
操作 |
命令 |
复位RIP协议的系统配置参数 |
reset |
在完成上述配置后,在任意视图下执行display命令可以显示配置后RIP的运行情况,用户可以通过查看显示信息验证配置的效果。在用户视图下执行debugging命令可对RIP进行调试。
操作 |
命令 |
显示RIP的当前运行状态及配置信息 |
display rip |
显示RIP的接口信息 |
display rip interface |
显示RIP路由表 |
display rip routing |
打开RIP的报文调试信息开关 |
debugging rip packet [ interface type number ] |
关闭RIP的报文调试信息开关 |
undo debugging rip packet |
打开RIP的接收报文情况调试开关 |
debugging rip receive [ interface type number ] |
关闭RIP的接收报文情况调试开关 |
undo debugging rip receive |
打开RIP的发送报文情况调试开关 |
debugging rip send [ interface type number ] |
关闭RIP的发送报文情况调试开关 |
undo debugging rip send |
一个企业的内部网络通过RouterA连到Internet,内部网络的主机直接连接到RouterB或RouterC上。
要求三个网关上均运行RIP。RouterA只接收从外部网络发来的路由信息,但不对外发布内部网络的路由信息。RouterA、B、C之间能够交互RIP信息,以便于内部主机能够访问Internet。
(1) 配置RouterA:
# 配置接口GigabitEthernet2/0和GigabitEthernet1/0。
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.1 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 192.1.2.1 255.255.255.0
# 启动RIP,并配置在接口GigabitEthernet2/0和GigabitEthernet1/0上运行RIP。
[H3C] rip
[H3C-rip] network 192.1.1.0
[H3C-rip] network 192.1.2.0
#配置接口GigabitEthernet 1/0只接收RIP报文。
[H3C-GigabitEthernet1/0] undo rip output
[H3C-GigabitEthernet1/0] rip input
(2) 配置RouterB:
# 配置接口GigabitEthernet1/0和GigabitEthernet2/0
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.2 255.255.255.0
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 192.1.3.1 255.255.255.0
# 启动RIP,并配置在接口GigabitEthernet1/0和GigabitEthernet2/0上运行RIP。
[H3C] rip
[H3C-rip] network 192.1.1.0
[H3C-rip] network 192.1.3.0
(3) 配置RouterC:
# 配置接口GigabitEthernet1/0和GigabitEthernet2/0
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.3 255.255.255.0
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 192.1.4.1 255.255.255.0
# 启动RIP,并配置在接口GigabitEthernet1/0和GigabitEthernet2/0运行RIP。
[H3C] rip
[H3C-rip] network 192.1.4.0
RouterA、RouterB和RouterC上运行RIP,要求网络的收敛时间在30秒以内。
图3-3 RIP定时器配置组网图
& 说明:
接口的IP地址配置如图3-3所示,配置步骤中不再赘述。
(1) 配置RouterA:
# 启动RIP,并使能RouterA的接口GigabitEthernet2/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的接口GigabitEthernet2/0和GigabitEthernet1/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的接口GigabitEthernet1/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的GigabitEthernet2/0接口shutdown,30秒内,可以观察到RouterB和RouterC上的路由11.0.0.0/8变成不可达。
在调整定时器之前,RouterA的GigabitEthernet2/0接口shutdown后,RouterB和RouterC需要180秒的时间才能感知到路由不可达,可见,调整定时器后,RIP网络的收敛时间缩短了。
如下图所示,RouterB不支持RIP协议。RouterA在GigabitEthernet1/0口使能RIP,引入直连路由,并配置指向2.0.0.0/8的静态路由;RouterC上在GigabitEthernet1/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) 配置RouterA
# 配置接口IP地址。
[H3C] interface gigabitethernet1/0
[H3C-GigabitEthernet1/0] ip address 1.0.0.1 255.0.0.0
[H3C-GigabitEthernet1/0] rip version 2
[H3C-GigabitEthernet1/0] interface LoopBack0
[H3C-LoopBack0] ip address 100.0.0.1 255.0.0.0
# 配置启动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
# 配置到2.0.0.0网段的静态路由。
[H3C] ip route-static 2.0.0.0 255.0.0.0 1.0.0.2 preference 60
(2) 配置RouterB
# 配置接口IP地址。
[H3C] interface gigabitethernet1/0
[H3C-GigabitEthernet1/0] ip address 1.0.0.2 255.0.0.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 2.0.0.2 255.0.0.0
[H3C-GigabitEthernet2/0] quit
# 配置到200.0.0.0/24网段的静态路由。
[H3C] ip route-static 200.0.0.0 255.255.255.0 2.0.0.1
# 配置到100.0.0.0/8网段的静态路由。
[H3C] ip route-static 100.0.0.0 255.0.0.0 1.0.0.1
(3) 配置RouterC
# 配置接口IP地址。
[H3C] interface gigabitethernet1/0
[H3C-GigabitEthernet1/0] ip address 2.0.0.1 255.0.0.0
[H3C-GigabitEthernet1/0] rip version 2
[H3C-GigabitEthernet1/0] 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
# 配置到1.0.0.0网段的静态路由。
[H3C] ip route-static 1.0.0.0 255.0.0.0 2.0.0.2 preference 60
在RouterA,RouterC上必须配置到达对端的静态路由,保证路由可达,否则RIP报文无法发送给peer。
故障之一:在物理连接正常的情况下收不到更新报文。
相应的接口上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。如果没有配置Router ID,系统会选择所有loopback接口中最大的IP地址作为路由器的Router ID。如果没有loopback接口,系统会选择所有物理接口的最大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):
最常用的一种报文,周期性的发送给本路由器的邻居。HELLO报文的内容包括一些定时器的数值、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进程;
在各项配置中,必须先启动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
路由器的ID是一个32比特无符号整数,采用IP地址形式,是一台路由器在自治系统中的唯一标识。路由器的ID可以手工配置,如果没有配置ID号,系统会选择所有loopback接口中最大的IP地址作为路由器的Router ID。如果没有loopback接口,系统会选择所有物理接口的最大IP地址作为路由器的Router ID。手工配置路由器的ID时,必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个接口的IP地址一致。
请在系统视图下进行下列配置。
操作 |
命令 |
配置路由器的Router ID号 |
router id router-id |
取消路由器的Router ID号 |
undo router id |
为保证OSPF运行的稳定性,在进行网络规划时,应确定路由器的Router ID的划分并手工配置。
& 说明:
OSPF启动后修改的Router ID,需要重新启动OSPF进程之后,Router ID才能在OSPF中生效。
路由器支持OSPF多进程,一台路由器上启动的多个OSPF进程之间由不同的进程号区分。OSPF进程号在启动OSPF时进行设置,它只在本地有效,不影响与其它路由器之间的报文交换。
表4-2 启动/关闭OSPF
操作 |
命令 |
启动OSPF,进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
关闭OSPF路由协议进程 |
undo ospf [ process-id ] |
缺省情况下,不运行OSPF。
启用OSPF时,需要注意:
l 如果在启动OSPF时不指定进程号,将使用缺省的进程号1;关闭OSPF时不指定进程号,缺省关闭进程1。
l 在同一个区域中的进程号必须一致,否则会造成进程之间的隔离。
l 当在一台路由器上运行多个OSPF进程时,建议用户使用以上命令中的router-id为不同进程指定不同的Router ID。
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或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 } |
恢复接口缺省的网络类型 |
undo ospf network-type |
缺省情况下,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使用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与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上执行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 发布缺省路由的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 ] * |
取消生成的缺省路由 |
undo default-route-advertise [ always | cost | type | route-policy ] * |
缺省情况下,OSPF中没有缺省路由。
如果在生成缺省路由时使用了参数always,则不论路由表中是否存在缺省路由,OSPF都将生成一条Type-5或Type-7 LSA。这个参数只对ASBR有效,应谨慎使用。
由于OSPF在进行SPF运算时不计算自己生成的LSA,所以,本路由器上的OSPF路由中并不存在缺省路由。为保证路由信息的正确性,应只在那些与外部网络相连的路由器上配置引入缺省路由。
& 说明:
在OSPF路由器上配置default-route-advertise命令后,这台路由器就成为ASBR,这一点与在OSPF路由器上配置import-route命令的效果类似。
对于NSSA区域的ABR或ASBR,default-route-advertise命令的效果与nssa default-route-advertise相同。
请在OSPF视图下进行下列配置。
OSPF接收到LSAs后,可以根据一定的过滤条件来决定是否将计算后得到的路由信息加入路由表中。
表4-11 配置OSPF对引入路由的过滤
操作 |
命令 |
配置对接收路由信息进行过滤 |
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 |
注意:
此命令仅能阻止路由信息被加入到路由表中,但相关的LSAs仍然被通告到其它邻居。
filter-policy export配置ASBR路由器对引入到OSPF的外部路由进行过滤,实际上是对向外发布的引入路由的LSA进行过滤,该命令只对ASBR路由器有效。
表4-12 配置OSPF对发布路由的过滤
操作 |
命令 |
配置OSPF对向外发布的引入路由的LSA进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ routing-protocol ] |
取消OSPF对向外发布的引入路由的LSA进行过滤 |
undo filter-policy { acl-number | ip-prefix ip-prefix-name } export [ routing-protocol ] |
缺省情况下,OSPF不对引入或发布的路由信息进行过滤。
& 说明:
filter-policy import命令只对从邻居收到的本进程OSPF路由进行过滤,没有通过过滤的路由将不被加入路由表。
filter-policy export命令只对本机使用import-route引入的路由起作用。如果仅配置了filter-policy export,而没有配置import-route命令引入其它外部路由(包括不同进程的OSPF路由),filter-policy export不起作用,因为OSPF是通过LSA发布路由信息,不是通过路由表。
如果在filter-policy export命令中没有指定对哪种类型的路由过滤,则对本机使用import-route引入的所有类型的路由有效。
路由聚合是指:具有相同前缀的路由信息,ABR可以将它们聚合在一起,只发布一条路由到其它区域。一个区域可以配置多条聚合网段,这样OSPF可以对多个网段进行聚合。ABR向其它区域发送路由信息时,以网段为单位生成Type 3 LSA。如果该区域中存在一些连续的网段,则可以使用abr-summary命令将这些连续的网段聚合成一个网段。这样ABR只发送一条聚合后的LSA,所有落入本命令指定的聚合网段范围的LSA将不再会被单独发送出去,这样可减少其它区域中LSDB的规模。
如果该网段范围用关键字not-advertise限定,则到这一网段路由的摘要信息将不会被广播出去。这个网段由IP地址/掩码标识。
需要注意的是:路由聚合只有在ABR上配置才会有效。
请在OSPF区域视图下进行下列配置。
表4-13 配置OSPF区域路由聚合
操作 |
命令 |
配置OSPF区域路由聚合 |
abr-summary ip-address mask [ advertise | not-advertise ] |
取消OSPF区域路由聚合 |
undo abr-summary ip-address mask |
缺省情况下,区域边界路由器不对路由聚合。
OSPF支持对引入路由进行聚合。
请在OSPF视图下进行下列配置。
表4-14 配置OSPF引入路由聚合
操作 |
命令 |
配置OSPF对引入路由进行聚合 |
asbr-summary ip-address mask [ not-advertise | tag value ] |
取消OSPF对引入路由进行聚合 |
undo asbr-summary ip-address mask |
缺省情况下,不对引入路由进行聚合。当配置了路由聚合时,缺省情况下通告聚合路由,tag值为1。
配置引入路由聚合后,如果本地路由器是自治系统边界路由器ASBR,将对引入的聚合地址范围内的Type-5 LSA进行聚合,当配置了NSSA区域时,还要对引入的聚合地址范围内的Type-7 LSA进行聚合。
如果本地路由器是区域边界路由器ABR,且是NSSA区域的转换路由器,则对由Type-7 LSA转化成的Type-5 LSA进行聚合处理,对于不是NSSA区域转换路由器的则不进行聚合处理。
由于路由器上可能同时运行多个动态路由协议,就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级,在不同协议发现同一条路由时,优先级数值小的路由将被优选。
请在OSPF视图下进行下列配置。
表4-15 配置OSPF路由的优先级
操作 |
命令 |
配置OSPF协议在各路由协议之间的优先级 |
preference [ ase ] preference |
恢复协议缺省优先级 |
undo preference [ ase ] |
缺省情况下,OSPF协议的优先级为10;引入外部路由协议的优先级为150。
Hello报文是一种最常用的报文,它周期性地被发送至邻居路由器,用于发现与维持邻居关系、选举DR与BDR。用户可对发送Hello报文的时间间隔进行设置。
根据RFC2328的规定,要保持网络邻居间的hello 时钟的时间间隔的一致性。需要注意的是,Hello时钟的值与路由收敛速度、网络负荷大小成反比。
请在接口视图下进行下列配置。
表4-16 设置Hello报文发送时间间隔
操作 |
命令 |
配置接口发送hello报文的时间间隔 |
ospf timer hello seconds |
恢复接口发送hello报文时间间隔的缺省值 |
undo ospf timer hello |
在NBMA接口上配置发送轮询报文的时间间隔 |
ospf timer poll seconds |
恢复发送轮询报文间隔的缺省值 |
undo ospf timer poll |
缺省情况下,p2p、broadcast类型接口发送Hello报文的时间间隔的值为10秒;p2mp、nbma类型接口发送Hello报文的时间间隔的值为30秒。
缺省情况下,发送轮询Hello报文的时间间隔为120秒。轮询时间间隔至少应为Hello报文间隔的3倍。
在一定时间间隔内,如果路由器未收到对方的Hello报文,则认为对端路由器失效,这个时间间隔被称为相邻路由器间的失效时间。
请在接口视图下进行下列配置。
操作 |
命令 |
配置相邻路由器间失效时间 |
ospf timer dead seconds |
恢复相邻路由器间失效时间的缺省值 |
undo ospf timer dead |
缺省情况下,p2p、broadcast类型接口相邻路由器间失效时间的值为40秒;p2mp、nbma类型接口相邻路由器间失效时间的值为120秒。
需要注意的是:在用户修改了网络类型后,Hello报文间隔与失效时间都将恢复缺省值。
当一台路由器向它的邻居发送一条LSA后,需要等到对方的确认报文。若在retransmit时间内没有收到对方的确认报文,就会向邻居重传这条LSA。用户可对retransmit的值进行设置。
请在接口视图下进行下列配置。
操作 |
命令 |
配置相邻路由器重传LSA的时间间隔 |
ospf timer retransmit interval |
恢复相邻路由器重传LSA的时间间隔缺省值 |
undo ospf timer retransmit |
缺省情况下,相邻路由器重传LSA的时间间隔的值为5秒。
interval的值必须大于一个报文在两台路由器之间传送一个来回的时间。
需要注意的是:相邻路由器重传LSA时间间隔的值不要设置得太小,否则将会引起不必要的重传。
广播网络或NBMA类型的网络需要选举指定路由器DR(Designated Router)和备份指定路由器BDR(Backup Designated Router)。
路由器接口的优先级Priority将影响接口在选举DR时所具有的资格。优先级为0的路由器不会被选举为DR或BDR。
DR由本网段中所有路由器共同选举。Priority大于0的路由器都可作为“候选者”,选票就是Hello报文,OSPF路由器将自己选出的DR写入Hello报文中,发给网段上的其它路由器。当同一网段的两台路由器都宣布自己是DR时,Priority高的胜出。如果Priority相等,则Router ID大的胜出。
如果DR失效,则网络中的路由器必须重新选举DR,并与新的DR同步,为了缩短这个过程,OSPF提出了BDR(Backup Designated Router,备份指定路由器)的概念,与DR同时被选举出来。BDR也与本网段内的所有路由器建立邻接关系并交换路由信息。DR失效后,BDR立即成为DR,由于不需要重新选举,并且邻接关系已经建立,所以这个过程可以很快完成。这时,还需要选举出一个新的BDR,这时不会影响路由的计算。
需要说明的是:
l 当接口优先级为0时,无论什么情况下都不能成为DR/BDR,这可能造成网络上没有DR或BDR。
l DR并不一定是网段中Priority最大的路由器;同理,BDR也并不一定就是Priority第二大的路由器。若DR、BDR已经选举完毕,即使有一台Priority值更大的路由器加入,它也不会成为该网段中的DR。
l DR是网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上可能是BDR,或者是DROther。
l 只有在广播或NBMA类型的接口时才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。在广播网络或NBMA网络上,如果OSPF收到的hello报文中没有人宣称自己是DR,则将进入选举过程;如果多个OSPF宣称自己是DR/BDR,也将进入选举过程;如果已经有人宣称自己是DR/BDR,则新加入者接受已有的DR/BDR,无论它的优先级是多少;当DR失败时,BDR将变为DR,再选举出新的BDR。
请在接口视图下进行下列配置。
表4-19 设置接口在选举DR时的优先级
操作 |
命令 |
设置接口在选举DR时的优先级 |
ospf dr-priority priority_num |
恢复接口的缺省优先级 |
undo ospf dr-priority |
缺省情况下,接口在选举DR时的优先级为1,取值范围为0~255。
用户可以在不同接口上配置发送报文的开销,从而影响路由的计算。
请在接口视图下进行下列配置。
操作 |
命令 |
设置接口发送报文的开销 |
ospf cost value |
将接口发送报文的开销恢复为缺省值 |
undo ospf cost |
缺省情况下,OSPF根据接口的速率自动计算发送报文的开销。
当OSPF的链路状态数据库LSDB发生改变时,需要重新计算最短路径。如果每次改变都立即计算最短路径,将占用大量资源,并会影响路由器的效率。通过调节SPF(Shortest Path First)的计算间隔时间,可以抑制由于网络频繁变化导致占用过多资源。
请在OSPF视图下进行下列配置。
表4-21 设置SPF计算间隔
操作 |
命令 |
设置SPF计算间隔 |
spf-schedule-interval seconds |
恢复SPF计算间隔 |
undo spf-schedule-interval |
缺省情况下,SPF时间间隔为5秒钟。
链路状态更新报文(LSU)中的链路状态广播(LSA)的老化时间在传送之前要增加延迟时间。该参数的设置主要考虑到接口上发送报文所需的时间,在低速网络上,该项配置尤为重要。
请在接口视图下进行下列配置。
表4-22 配置发送LSU报文所需时间
操作 |
命令 |
配置LSU报文的传输延迟时间 |
ospf trans-delay seconds |
恢复LSU报文的传输延迟时间的缺省值 |
undo ospf trans-delay |
缺省情况下,传输延迟时间为1秒。
运行OSPF协议的路由器在进行数据库同步时,使用DD(Database Description)报文描述自己的LSDB。
用户可以使用本命令手工设定指定接口在发送时填写DD报文中的MTU值域,设定的MTU值是接口的实际MTU值。
请在接口视图下进行下列配置。
表4-23 配置接口发送DD报文时是否填MTU值
操作 |
命令 |
使能接口发送DD报文时填充MTU值 |
ospf mtu-enable |
禁止接口发送DD报文时填充MTU值 |
undo ospf mtu-enable |
缺省情况下,接口发送DD报文时不填充MTU值,即DD报文中的MTU值为0。
请在OSPF视图下进行下面配置。
表4-24 配置OSPF等价路由的最大个数
操作 |
命令 |
配置OSPF等价路由的最大个数 |
multi-path-number number |
恢复OSPF等价路由最大个数的缺省值。 |
undo multi-path-number |
缺省情况下,OSPF等价路由最大个数为3。
在OSPF中,一个区域中所有的路由器的验证类型必须一致(不要求验证、要求明文验证或者要求MD5密文验证),但每条链路上的密码可以是不同的。使用命令authentication-mode simple为该区域配置明文验证口令;使用命令authentication-mode md5为该区域配置MD5密文验证字口令。
请在OSPF区域视图下进行下列配置。
表4-25 配置OSPF区域要求报文验证
操作 |
命令 |
配置区域要求报文验证 |
authentication-mode { simple | md5 } |
配置区域不要求报文验证 |
undo authentication-mode |
缺省情况下,区域不要求报文验证。
OSPF支持在相邻路由器之间支持明文验证或MD5密文验证。
请在接口视图下进行下列配置。
表4-26 配置OSPF报文的认证
操作 |
命令 |
配置接口使用报文明文验证字 |
ospf authentication-mode simple password |
取消接口使用报文明文验证口令 |
undo ospf authentication-mode simple |
配置接口使用报文MD5密文验证字 |
ospf authentication-mode md5 key_id key |
取消接口使用报文MD5密文验证 |
undo ospf authentication-mode md5 |
缺省情况下,接口未配置任何明文或MD5验证字。
如果要使OSPF路由信息不被某一网络中的路由器获得,可禁止在相应接口上发送OSPF报文。
不同的进程可以对同一接口禁止发送OSPF报文,但silent-interface命令只对本进程已经使能的OSPF接口起作用,不对其它进程的接口起作用。
请在OSPF视图下进行下列配置。
表4-27 禁止/允许接口发送OSPF报文
操作 |
命令 |
禁止接口发送OSPF报文 |
silient-interface interface-type interface-number |
允许接口发送OSPF报文 |
undo silent-interface interface-type interface-number |
缺省情况下,允许所有接口收发OSPF报文。
将运行OSPF协议的接口指定为Silent状态后,该接口的直连路由仍可以发布出去,但接口的OSPF报文将被阻塞,接口上无法建立邻居关系。这样可以增强OSPF的组网适应能力,减少系统资源的消耗。
Stub区域是一类特殊的OSPF区域,这类区域不接收或扩散Type-5的LSA(AS-external-LSAs)。对于产生大量Type-5 LSA的网络,这种处理方式能够有效减小Stub区域内路由器的LSDB规模,并缓解SPF计算对路由器资源的占用。通常情况下,Stub区域位于自治系统边界。
为保证Stub区域去往自治系统外的报文能被正确转发,Stub区域的ABR将通过Summary-LSA向本区域内发布一条缺省路由,并且只在本区域扩散。
& 说明:
ABR通过Summary-LSA(Type-3 LSA)向区域内发布的缺省路由是区域间缺省路由。
配置Stub区域需要注意下列几点:
l 骨干区域不能配置成Stub区域。
l Stub区域不能用作传输区域,即,虚连接不能穿过Stub区域。
l 如果想将一个区域配置成Stub区域,则该区域中的所有路由器必须都要配置该属性。
l Stub区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
请在OSPF区域视图下进行下列配置。
表4-28 配置OSPF的Stub区域
操作 |
命令 |
配置一个区域为Stub区域 |
stub [ no-summary ] |
取消配置的Stub区域 |
undo stub |
配置发送到Stub区域的缺省路由的花费值 |
default-cost value |
恢复发送到Stub区域的缺省路由的缺省花费值 |
undo default-cost |
缺省情况下,无Stub区域;发送到Stub区域的缺省路由的花费值为1。
需要注意的是:参数no-summary只能在ABR上配置,如果在配置Stub区域的ABR时使用了这一参数,则此ABR只向区域内发布一条缺省路由的Summary-LSA,不生成任何其它Summary-LSAs。这种既没有AS-external-LSAs,也没有Summary-LSAs的Stub区域,又称为完全Stub区域。
命令default-cost用于Stub区域的ABR,配置ABR发送到Stub区域的缺省路由的花费值。
从前一节的描述中我们可以了解到,Stub区域中没有任何AS外部路由信息,通过缺省路由保证到外部目的地的可达性。为了在保持Stub区域优点的同时提高组网的灵活性,RFC1587(OSPF NSSA Option)定义了一种新的区域类型:NSSA区域(Not-So-Stubby Area),这种区域能够以受限方式引入AS外部路由。
NSSA实际是Stub区域的扩展,它与Stub区域有许多相似之处。配置NSSA区域时,也需要注意:
l 骨干区域不能配置成NSSA区域;
l NSSA区域不能用作传输区域,即,虚连接不能穿过NSSA区域;
l 如果要将一个区域配置成NSSA区域,则该区域中的所有路由器都必须配置此属性;
与Stub区域的一个不同是:NSSA区域内可以存在ASBR。
NSSA区域中的AS外部路由信息使用一类新的LSA:Type-7 LSA。Type-7 LSA与Type-5 LSA非常相似,它们的区别在本章“4.1.5 OSPF的LSA类型”已经介绍过。
下面以图4-3为例,介绍AS外部路由信息在NSSA区域的传播情况。图4-3中,运行OSPF进程100的自治系统包括3个区域:区域0是骨干区域,区域1是普通的OSPF非骨干区域,区域2是NSSA区域。
区域2的NSSA ASBR引入AS外部路由信息(OSPF进程200的路由信息)后,生成Type-7 LSA发布到区域2内传播,当Type-7 LSA到达NSSA ABR后,由ABR转换成Type-5 LSA传播到整个自治系统。区域1的ASBR引入AS外部路由信息(RIP路由信息)后,产生Type-5 LSA在OSPF自治系统中传播,但由于区域2是NSSA区域,所以RIP路由信息不会到达区域2。
请在OSPF区域视图下进行下列配置。
表4-29 配置OSPF的NSSA区域参数
操作 |
命令 |
配置一个区域为NSSA区域 |
nssa [ default-route-advertise | no-import-route | no-summary ] * |
取消配置的NSSA区域 |
undo nssa |
配置发送到NSSA区域的缺省路由的花费值 |
default-cost cost |
恢复发送到NSSA区域的缺省路由的花费缺省值 |
undo default-cost |
缺省情况下,不配置NSSA区域;发送到NSSA区域缺省路由的花费值为1。
对于OSPF自治系统的ASBR,如果它也是NSSA区域的ABR,通常不需要将同样的外部路由信息以Type-5和Type-7 LSAs引入两次,这种情况下,可以使用参数no-import-route,禁止将AS外部路由以Type-7 LSA的方式发布到NSSA区域。
由于NSSA区域获得的AS外部路由信息是受限的,因此,NSSA区域的ABR需要通过Type-7 LSA向本区域内发布一条缺省路由,保证去往自治系统外的报文能被正确转发,需要注意的是:NSSA区域的ABR发布的缺省路由信息不会转换成Type-5 LSA,而NSSA区域内的ASBR发布的缺省路由信息则可以转换成Type-5 LSA。
参数default-route-advertise用来产生发布缺省路由的Type-7 LSA,这个参数只能用于NSSA的ASBR或ABR:
l 在NSSA的ABR上配置时,不论系统的路由表中是否存在缺省路由0.0.0.0,都会产生Type-7 LSA缺省路由;
l 在NSSA的ASBR上配置时,只有当路由表中存在缺省路由0.0.0.0,才会产生Type-7 LSA缺省路由。
参数no-summary的用法与在Stub区域的配置相同,只能在NSSA区域的ABR配置。使用此参数后,NSSA ABR只通过Type-3的Summary-LSA向区域内发布一条缺省路由,不再向区域内发布任何其它Summary-LSAs,这种区域又称为NSSA 完全Stub区域。
& 说明:
参数default-route-advertise通过生成Type-7 LSA向NSSA区域内发布的缺省路由是自治系统外部缺省路由;
参数no-summary通过Type-3 LSA向NSSA完全Stub区域发布的缺省路由是区域间缺省路由。
命令default-cost用于NSSA区域的ABR,配置ABR发送到NSSA区域的缺省路由的花费值。
要实现OSPF TE,必须先使能OSPF的Opaque能力。
请在OSPF视图下进行下列配置。
表4-30 使能OSPF的Opaque能力
操作 |
命令 |
使能OSPF的Opaque能力 |
opaque-capability enable |
禁止OSPF的Opaque能力 |
undo opaque-capability |
注意:
若某个区域已经使能了OSPF TE,则“undo opaque-capability”命令会执行失败。
当启动了多个OSPF进程时,可以配置OSPF MIB对哪个进程进行处理,即绑定在哪个进程。
请在系统视图下进行下列配置。
操作 |
命令 |
配置OSPF MIB绑定 |
ospf mib-binding process-id |
取消缺省的OSPF MIB绑定 |
undo ospf mib-binding |
缺省情况下,MIB绑定在第一个启动的OSPF进程上。
可以配置OSPF发送多种SNMP Trap报文,并可以通过进程号指定某个OSPF进程发送SNMP Trap报文。
请在系统视图下进行下列配置。
操作 |
命令 |
使能OSPF的Trap功能 |
snmp-agent trap enable ospf [ process-id ] [ ifstatechange | virifstatechange | nbrstatechange | virnbrstatechange | ifcfgerror | virifcfgerror | ifauthfail | virifauthfail | ifrxbadpkt | virifrxbadpkt | txretransmit | viriftxretransmit | originatelsa | maxagelsa | lsdboverflow | lsdbapproachoverflow ] |
取消OSPF的Trap功能 |
undo snmp-agent trap enable ospf [ process-id ] [ ifstatechange | virifstatechange | nbrstatechange | virnbrstatechange | ifcfgerror | virifcfgerror | ifauthfail | virifauthfail | ifrxbadpkt | virifrxbadpkt | txretransmit | viriftxretransmit | originatelsa | maxagelsa | lsdboverflow | lsdbapproachoverflow ] |
缺省情况下,OSPF的Trap功能是禁止的,即OSPF进程不发送Trap报文。如果配置时不指定进程号,将对所有OSPF进程生效。
关于SNMP Trap的详细配置,请参考本手册的“基础配置”部分。
如果对路由器先执行undo ospf,再执行ospf来重启OSPF进程,路由器上原来的OSPF配置会丢失。而使用reset ospf all命令,可以在不丢失原有OSPF配置的前提下重启OSPF。
请在用户视图下进行下列配置。
操作 |
命令 |
重启OSPF进程 |
reset ospf [ statistics ] { all | process-id } |
重启路由器的OSPF进程,可以立即清除无效的LSA、使改变的Router ID立即生效、或者进行DR、BDR的重新选举。
如果不指定OSPF进程号,将重启所有OSPF进程。
在完成上述配置后,在任意视图下执行display命令可以显示配置后OSPF的运行情况,用户可以通过查看显示信息验证配置的效果。
在用户视图下执行debugging命令可对OSPF进行调试。
表4-34 OSPF显示和调试
操作 |
命令 |
查看OSPF路由进程的信息 |
display ospf [ process-id ] brief |
查看OSPF统计信息 |
display ospf [ process-id ] cumulative |
查看OSPF的LSDB信息 |
display ospf [ process-id ] lsdb [ brief | asbr | ase | network | nssa | opaque { area-local | as | link-local } | router | summary ] [ ip-address ] [ originate-router ip-address | self-originate ] |
查看OSPF邻接点信息 |
display ospf [ process-id ] peer [ brief | statistics ] |
查看OSPF下一跳信息 |
display ospf [ process-id ] nexthop |
查看OSPF路由表信息 |
display ospf [ process-id ] routing |
查看OSPF虚连接信息 |
display ospf [ process-id ] vlink |
查看OSPF请求列表 |
display ospf [ process-id ] request-queue |
查看OSPF重传列表 |
display ospf [ process-id ] retrans-queue |
查看OSPF 到ABR及ASBR的路由信息 |
display ospf [ process-id ] abr-asbr |
查看OSPF的引入路由聚合信息 |
display ospf [ process-id ] asbr-summary [ ip-address mask ] |
查看OSPF接口信息 |
display ospf [ process-id ] interface [ interface-type interface-number ] |
查看OSPF错误信息 |
display ospf [ process-id ] error |
查看OSPF的调试信息开关状态 |
display debugging ospf |
打开该OSPF进程下的邻接状态变化的输出开关(OSPF视图) |
log-peer-change |
关闭该OSPF进程下的邻接状态变化的输出开关(OSPF视图) |
undo log-peer-change |
打开OSPF报文调试信息开关 |
debugging ospf [ process-id ] packet [ ack | dd | hello | request I update ] [ interface interface-type interface-number ] |
关闭OSPF报文调试信息开关 |
undo debugging ospf [ process-id ] packet [ ack | dd | hello | request I update ] [ interface interface-type interface-number ] |
打开OSPF事件调试信息 |
debugging ospf [ process-id ] event |
关闭OSPF事件调试信息 |
undo debugging ospf [ process-id ] event |
打开OSPF LSA报文调试信息开关 |
debugging ospf [ process-id ] lsa-originate |
关闭OSPF LSA报文调试信息开关 |
undo debugging ospf [ process-id ] lsa-originate |
打开OSPF的SPF调试信息开关 |
debugging ospf [ process-id ] spf |
关闭OSPF的SPF调试信息开关 |
undo debugging ospf [ process-id ] spf |
注意:
在配置用例中,只列出了与OSPF配置相关的命令。
RouterA与RouterB通过以太网口相连,RouterB与RouterC通过以太网口相连;RouterA属于area0,RouterC属于area1,RouterB同时属于area0和area1。
图4-4 OSPF典型配置举例
(1) 配置RouterA
[H3C] router id 1.1.1.1
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 10.0.0.1 255.0.0.0
[H3C-GigabitEthernet2/0] quit
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 20.0.0.1 255.0.0.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 3/0
[H3C-GigabitEthernet1/1] ip address 30.0.0.1 255.0.0.0
[H3C-GigabitEthernet1/1] quit
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 10.0.0.1 0.255.255.255
[H3C-ospf-1-area-0.0.0.0] network 20.0.0.1 0.255.255.255
[H3C-ospf-1-area-0.0.0.0] network 30.0.0.1 0.255.255.255
(2) 配置RouterB
[H3C] router id 2.2.2.2
[H3C] internet gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 10.0.0.2 255.0.0.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 40.0.0.1 255.0.0.0
[H3C-GigabitEthernet2/0] quit
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 10.0.0.2 0.255.255.255
[H3C-ospf-1-area-0.0.0.0] area 1
[H3C-ospf-1-area-0.0.0.1] network 40.0.0.1 0.255.255.255
(3) 配置RouterC
[H3C] router id 3.3.3.3
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 40.0.0.2 255.0.0.0
[H3C-GigabitEthernet2/0] quit
[H3C] ospf
[H3C-ospf-1] area 1
[H3C-ospf-1-area-0.0.0.1] network 40.0.0.2 0.255.255.255
在RouterA与C上执行display ip routing-table,发现二者通过OSPF获得了到对方的路由(即都有10.0.0.0/8,20.0.0.0/8,30.0.0.0/8,40.0.0.0/8网段的路由)。
在RouterA的接口GigabitEthernet1/0上启动OSPF进程100,接口位于区域0。
在RouterB的接口GigabitEthernet1/0上启动OSPF进程100,接口GigabitEthernet2/0上启动OSPF进程200,分别处于相应进程的区域0。
在RouterC的接口GigabitEthernet2/0上启动OSPF进程200,处于区域0。
RouterA和RouterB之间可以建立邻居关系,RouterB和RouterC之间可以建立邻居关系。
图4-5 OSPF多进程组网图
# 配置RouterA:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 172.10.1.2 255.255.0.0
[H3C-GigabitEthernet1/0] quit
[H3C] router id 10.10.1.2
[H3C] ospf 100
[H3C-ospf-100] area 0
[H3C-ospf-100-area-0.0.0.0] network 172.10.0.0 0.0.255.255
# 配置RouterB:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 172.10.1.1 255.255.0.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 131.108.1.3 255.255.0.0
[H3C] ospf 100 router-id 10.10.2.2
[H3C-ospf-100] area 0
[H3C-ospf-100-area-0.0.0.0] network 172.10.0.0 0.0.255.255
[H3C] ospf 200 router-id 10.10.4.2
[H3C-ospf-200] area 0
[H3C-ospf-200-area-0.0.0.0] network 131.108.0.0 0.0.255.255
# 配置RouterC:
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 131.108.1.1 255.255.0.0
[H3C-GigabitEthernet2/0] quit
[H3C] router id 10.10.3.2
[H3C] ospf 200
[H3C-ospf-200] area 0
[H3C-ospf-200-area-0.0.0.0] network 131.108.0.0 0.0.255.255
在RouterB上使用display ospf peer命令查看邻居的建立情况,可以看到RouterB与RouterA在OSPF进程100中建立邻居关系,RouterB与RouterC在OSPF进程200中建立邻居关系,RouterA和RouterC不能通过OSPF学到对方的路由。
在下图中,RouterA的优先级为100,它是网络上的最高优先级,所以RouterA被选为DR;RouterC的优先级第二高,被选为BDR;RouterB的优先级为0,这意味着它将无法成为DR;RouterD没有配置优先级,取缺省值1。
图4-6 配置OSPF优先级的“DR”选择组网图
# 配置RouterA:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 192.1.1.1 255.255.255.0
[H3C-GigabitEthernet1/0] ospf dr-priority 100
[H3C-GigabitEthernet1/0] quit
[H3C] router id 1.1.1.1
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
# 配置RouterB:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 192.1.1.2 255.255.255.0
[H3C-GigabitEthernet1/0] ospf dr-priority 0
[H3C-GigabitEthernet1/0] quit
[H3C] router id 2.2.2.2
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
# 配置RouterC:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 192.1.1.3 255.255.255.0
[H3C-GigabitEthernet1/0] ospf dr-priority 2
[H3C-GigabitEthernet1/0] quit
[H3C] router id 3.3.3.3
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
# 配置RouterD:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 192.1.1.4 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] router id 4.4.4.4
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
在RouterA上运行display ospf peer来显示OSPF邻居,注意RouterA有三个邻居。
每个邻居的状态都是full,这意味着RouterA与它的每个邻居都形成了邻接(RouterA和C必须与网络中的所有路由器形成邻接,才能分别充当网络的DR和BDR)。RouterA是网络中的DR,而RouterC是BDR。其它所有的邻居都是DRother(这意味着它们既不是DR,也不是BDR)。
将RouterB的优先级改为200:
[H3C-GigabitEthernet1/0] ospf dr-priority 200
在RouterA上运行display ospf peer 来显示OSPF邻居,注意RouterB的优先级变为200;但它并不是DR。
只有当现在的DR不在网络上了后,DR才会改变。关掉RouterA,在RouterD上运行display ospf peer命令可显示邻居,注意本来是BDR的RouterC成为了DR,并且RouterB现在也是BDR。
关掉所有的路由器再重新启动,这个操作会带来一个新的DR/BDR选择。RouterB就被选为DR(优先级为200),RouterA成为了BDR(优先级为100)。
在下图中,区域2没有与区域0直接相连。区域1被用作运输区域(Transit Area)来连接区域2和区域0。RouterB和RouterC之间配置一条虚链路。
图4-7 配置OSPF虚链路的组网图
# 配置RouterA:
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.1 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] router id 1.1.1.1
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
# 配置RouterB:
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.2 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 193.1.1.2 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] router id 2.2.2.2
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] quit
[H3C-ospf-1] area 1
[H3C-ospf-1-area-0.0.0.1] network 193.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.1] vlink-peer 3.3.3.3
# 配置RouterC:
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 152.1.1.1 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 193.1.1.1 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] router id 3.3.3.3
[H3C] ospf
[H3C-ospf-1] area 1
[H3C-ospf-1-area-0.0.0.1] network 193.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.1] vlink-peer 2.2.2.2
[H3C-ospf-1-area-0.0.0.1] quit
[H3C-ospf-1] area 2
[H3C –ospf-1-area-0.0.0.2] network 152.1.1.0 0.0.0.255
在下图中,RouterA与RouterB交换路由更新信息时采用纯文本认证,而在与RouterC交换路由更新时使用MD5密文认证。
RouterA的以太网接口与RouterB的以太网接口在OSPF区域0内。RouterA的GigabitEthernet口与RouterC的GigabitEthernet口都在区域1内,它们都为区域1配置了MD5认证。
图4-8 配置OSPF邻居认证的组网图
# 配置RouterA:
配置接口GigabitEthernet1/0的网段193.1.1.0所在的区域1支持MD5密文验证,验证字标识符为1,验证字为password。
配置接口GigabitEthernet 2/0的网段192.1.1.0所在的区域0支持明文验证,验证字为password。
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.1 255.255.255.0
[H3C-GigabitEthernet2/0] ospf authentication-mode simple password
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 193.1.1.1 255.255.255.0
[H3C-GigabitEthernet1/0] ospf authentication-mode md5 1 password
[H3C] router id 1.1.1.1
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] authentication-mode simple
[H3C-ospf-1-area-0.0.0.0] quit
[H3C-ospf-1] area 1
[H3C-ospf-1-area-0.0.0.1] network 193.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.1] authentication-mode md5
# 配置RouterB:
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.2 255.255.255.0
[H3C-GigabitEthernet2/0] authentication-mode simple password
[H3C] router id 2.2.2.2
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] authentication-mode simple
# 配置RouterC:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 193.1.1.2 255.255.255.0
[H3C-GigabitEthernet1/0] ospf authentication-mode md5 1 password
[H3C] router id 3.3.3.3
[H3C] ospf
[H3C-ospf-1] area 1
[H3C-ospf-1-area-0.0.0.1] network 193.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.1] authentication-mode md5
RouterA与RouterB通过以太网口相连,RouterB与RouterC通过以太网口相连;RouterA属于area0,RouterC属于area1,RouterB同时属于area0和area1。将area1配置为STUB区。
图4-9 配置OSPF的STUB区
(1) 配置RouterA
[H3C] router id 1.1.1.1
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 10.0.0.1 255.0.0.0
[H3C-GigabitEthernet2/0] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 20.0.0.1 255.0.0.0
[H3C-GigabitEthernet1/0] interface gigabitethernet 3/0
[H3C-GigabitEthernet1/1] ip address 30.0.0.1 255.0.0.0
[H3C-GigabitEthernet1/1] quit
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 10.0.0.1 0.255.255.255
[H3C-ospf-1-area-0.0.0.0] network 20.0.0.1 0.255.255.255
[H3C-ospf-1-area-0.0.0.0] network 30.0.0.1 0.255.255.255
(2) 配置RouterB
[H3C] router id 2.2.2.2
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 10.0.0.2 255.0.0.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 40.0.0.1 255.0.0.0
[H3C-GigabitEthernet2/0] quit
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 10.0.0.2 0.255.255.255
[H3C-ospf-1-area-0.0.0.0] area 1
[H3C-ospf-1-area-0.0.0.1] network 40.0.0.1 0.255.255.255
[H3C-ospf-1-area-0.0.0.1] stub
(3) 配置RouterC
[H3C] router id 3.3.3.3
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 40.0.0.2 255.0.0.0
[H3C-GigabitEthernet2/0] quit
[H3C] ospf
[H3C-ospf-1] area 1
[H3C-ospf-1-area-0.0.0.1] network 40.0.0.2 0.255.255.255
[H3C-ospf-1-area-0.0.0.1] stub
此时RouterC上除了OSPF发现的区间路由外,还应有一条缺省路由0.0.0.0/0。
若将ABR 路由器B上的stub命令改为stub nosummary,则area1变为完全STUB区,RouterC上不再包含任何区间路由,只包含一条默认路由。
故障之一:如果按前述步骤配置了OSPF,但路由器OSPF却不能正常运行。
故障排除:可按如下步骤进行检查。
(1) 局部故障排除:首先检查两台直接相连的路由器之间协议运行是否正常,正常的标志是两台路由器之间peer状态机达到FULL状态。(注:在广播和NBMA网络上,两台接口状态是DROther的路由器之间peer状态机并不达到FULL状态,而是2 way状态。DR、BDR与其它所有路由器之间达到FULL状态)
l 使用display ospf peer命令查看区域邻居的信息。
l 查看接口上OSPF信息可用display ospf interface命令。
l 检查物理连接及下层协议是否正常运行。可通过Ping命令测试,若从本地路由器Ping对端路由器不通,则表明物理连接和下层协议有问题。
l 如果物理连接和下层协议正常,则检查在接口上配置的OSPF参数,必须保证与和该接口相邻的路由器的参数一致。区域(Area)号必须相同;网段与掩码也必须一致(点到点与虚连接的网段与掩码可以不同)。
l 检查在同一接口上dead-interval值应至少为hello-interval值的4倍,且与对端的配置保持一致。
l 若网络的类型为NBMA,则必须手工指定Peer。使用peer ip-address命令。
l 若网络类型为广播网或NBMA,至少有一个接口的priority应大于零。
l 如果一个Area配置成stub区域,则在与这个区域相连的所有路由器中都应将该区域配置成stub区域。
l 相邻的两台路由器接口类型必须一致。
l 若配置了两个以上的区域,则至少有一个区域应配成骨干区域(即Area号为0)。
l 应保证骨干区域与所有的区域相连接。
l 虚连接不能穿越Stub区域。
(2) 全局故障排除:如果上述步骤无误,但OSPF仍不能发现远端路由,则检查如下配置。
l 若一台路由器配置了两个以上的区域,则至少有一个区域应配成骨干区域。
如下图所示:RouterA和RTD上只配置了一个区域,RouterB(area0,area1)和RouterC(area1,area2)分别配置了两个区域,其中RouterB中有一个区域为0,符合要求,但RouterC中的两个区域都不为0,则必须在RouterC与RouterB之间配置一条虚连接。保证area 2与area 0(骨干区域)相连接。
图4-10 OSPF区域示意图
l 虚连接不能穿越stub区域,骨干区域(area 0)也不能配置成Stub区域。即如果RouterB与RouterC之间配置了一条虚连接,则area 1不能配置成stub区域,area 0也不能配置成stub区域,上图中只有area 2可以配置成stub区域。
l 在Stub区域内的路由器不能接收外部路由。
l 骨干区域必须保证各个节点的连接。
BGP(Border Gateway Protocol)是一种自治系统间的动态路由发现协议。
BGP协议早期发布的三个版本分别是BGP-1(请参阅RFC1105)、BGP-2(请参阅RFC1163)和BGP-3(请参阅RFC1267),当前使用的版本是BGP-4(请参阅RFC1771)。BGP-4适用于分布式结构,并支持无类域间路由CIDR(Classless Inter-Domain Routing)。利用BGP还可以实施用户配置的策略。BGP-4为Internet外部路由协议标准,广泛应用于ISP之间。
BGP特性描述如下:
l BGP是一种外部网关路由协议,与OSPF、RIP等内部网关路由协议不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最好的路由。
l 通过在BGP路由中携带AS路径信息,可以彻底解决路由循环问题。
l 使用TCP作为其传输层协议,提高了协议的可靠性。
l BGP-4支持无类域间路由CIDR。这是较BGP-3的一个重要改进。CIDR以一种全新的方法看待IP地址,不再区分A类网、B类网及C类网。例如一个非法的C类网络地址192.213.0.0(255.255.0.0)采用CIDR表示法192.213.0.0/16就成为一个合法的超级网络,其中/16表示子网掩码由从地址左端开始的16比特构成。CIDR的引入简化了路由聚合(Routes Aggregation),路由聚合实际上是合并几个不同路由的过程,这样从通告几条路由变为通告一条路由,减小了路由表规模。
l 路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。
l 出于管理和安全方面的考虑,每个自治系统都希望能够对进出自治系统的路由进行控制,BGP-4提供了丰富的路由策略,能够对路由实现灵活的过滤和选择,并且易于扩展以支持网络新的发展。
BGP系统作为高层协议运行在一个特定的路由器上。系统初启时BGP路由器通过发送整个BGP路由表与对等体交换路由信息,之后只交换更新消息(update message)。系统在运行过程中,是通过接收和发送keep-alive消息来检测相互之间的连接是否正常的。
发送BGP消息的路由器称为BGP发言人(speaker),它不断的接收或产生新路由信息,并将它广告(advertise)给其它的BGP发言人。当BGP发言人收到来自其它自治系统的新路由通告时,如果该路由比当前已知路由好、或者当前还没有该路由,它就把这个路由通告给自治系统内所有其它的BGP发言人。一个BGP发言人也将同它交换消息的其它的BGP发言人称为对等体(peer),若干相关的对等体可以构成对等体组(group)。
BGP在路由器上以下列两种方式运行:
l IBGP(Internal BGP)
l EBGP(External BGP)
当BGP运行于同一自治系统(AS)内部时,被称为IBGP;当BGP运行于不同自治系统之间时,称为EBGP。
BGP协议机的运行是通过消息驱动的,其消息共可分为四类:
l open message
l update message
l notification message
l keep-alive message
Open message是连接建立后发送的第一个消息,它用于建立BGP对等体间的连接关系。Notification message是错误通告消息。Keep-alive message是用于检测连接有效性的消息。Update message是BGP系统中最重要的信息,用于在对等体之间交换路由信息,它最多由三部分构成:不可达路由(unreachable)、路径属性(path attributes)、网络可达性信息NLRI(network layer reach/reachable information)。
BGP的配置包括:
l 启动BGP
l 指定BGP要通告的网络路由
l 配置BGP对等体组
l 配置BGP定时器
l 配置本地优先级
l 配置自治系统的MED值
l 比较来自于不同AS邻居的MED值
l 配置BGP团体属性
l 配置BGP路由聚合
l 配置BGP协议的优先级
l 配置BGP路由反射器
l 配置自治系统联盟属性
l 配置BGP路由衰减
l 配置BGP与IGP的交互
l 配置BGP路由过滤
l 配置BGP负载分担
l 复位BGP连接
启动BGP时应指定本地的自治系统号。启动BGP后,路由器监听相邻路由器的BGP连接请求。要使路由器主动向相邻路由器发出BGP连接请求,请参照peer命令的配置。关闭BGP时,BGP将切断所有已经建立的BGP连接。
请在系统视图下进行下列配置。
表5-1 启动/关闭BGP
操作 |
命令 |
启动BGP,进入BGP视图 |
bgp as-number |
关闭BGP |
undo bgp [ as-number ] |
缺省情况下,系统不运行BGP。
请在BGP视图下进行下列配置。
表5-2 指定BGP通告的网络
操作 |
命令 |
配置本地BGP通告的网络 |
network ip-address [ address-mask ] [ route-policy route-policy-name ] |
取消本地BGP通告的网络 |
undo network ip-address [ address-mask ] [ route-policy route-policy-name ] |
缺省情况下,本地BGP不通告任何网络。
使用network命令通告网络时,路由表中必须已经存在到此网络的精确匹配的路由。
例如,要将网络172.16.1.0/24通告到BGP对等体,必须使用命令network 172.16.1.0 255.255.255.0进行通告,且当前路由表中也必须已经存在到网络172.16.1.0/24的精确匹配的路由。
交换BGP报文的BGP发言者形成对等体。BGP对等体不能够脱离对等体组而独立存在,即对等体必须隶属于某一个特定的对等体组。在配置BGP对等体时,必须首先配置对等体组,然后再将对等体加入该对等体组中。
当对等体组的配置变化时,每个组员的配置也相应变化。对某些属性可以指定组员的IP地址进行配置,从而使指定组员在这些属性上不受对等体组配置的影响。
下列各项配置均在BGP视图下进行。
在配置BGP对等体之前,必须首先配置对等体所隶属的对等体组。
表5-3 配置对等体组
操作 |
命令 |
创建一个对等体组 |
group group-name [ internal | external ] |
删除指定的对等体组 |
undo group group-name |
在配置对等体组时需要指定对等体组的类型。internal类型的对等体组包含的都是IBGP对等体;external类型的对等体都是EBGP对等体或者联盟EBGP对等体。
配置时,如果不指定对等体组的类型,缺省为internal。
可以为类型为external的对等体组指定自治系统号,internal类型的对等体组无需配置自治系统号。如果为对等体组指定了自治系统号,那么,加入该对等体组的所有对等体都继承了该对等体组的自治系统号。
操作 |
命令 |
为对等体组指定自治系统号 |
peer group-name as-number as-number |
删除指定的对等体组的自治系统号 |
undo peer group-name as-number |
如果对等体组中已经加入了对等体,那么,不能够为该对等体组指定自治系统号;删除对等体组的自治系统号时,会删除对等体组中的所有对等体。
BGP的对等体不能够脱离对等体组而独立存在,在配置对等体的同时必须指定其所属的对等体组,同时可以指定对等体的自治系统号。
操作 |
命令 |
在对等体组中创建一个对等体 |
peer peer-address group group-name [ as-number as-number ] |
从对等体组中删除一个对等体 |
undo peer peer-address |
加入对等体组的配置类型为internal,则命令中不能够指定自治系统号参数。加入的对等体为IBGP对等体。
加入对等体组的配置类型为external,如果对等体组没有指定自治系统号,那么对等体加入对等体组的同时必须同时指定该对等体的自治系统号;如果对等体组已经配置了自治系统号,对等体将继承对等体组的自治系统号,无需再为对等体指定。
为便于了解对等体的特征,可以为BGP对等体(组)配置描述信息。
操作 |
命令 |
配置对等体(组)描述信息 |
peer { peer-address | group-name } description description-line |
删除对等体(组)描述信息 |
undo peer { peer-address | group-name } description |
缺省情况下,BGP对等体(组)无描述信息。
通常情况下,EBGP对等体之间必须是物理上直接相连的,如果无法满足,可使用以下命令进行配置。
表5-7 配置允许同不直接相连网络上的EBGP对等体组建立连接
操作 |
命令 |
配置允许同不直接相连网络上的EBGP对等体组建立连接 |
peer group-name ebgp-max-hop [ ttl ] |
配置只允许同直接相连网络上的EBGP对等体组建立连接 |
undo peer group-name ebgp-max-hop |
缺省情况下,只允许同直接相连网络上的对等体组建立连接。ttl为最大跳数,缺省值为64,范围为1~255。
使用peer timer命令可以对指定的BGP对等体(组)配置定时器,包括指定keepalive报文发送时间间隔和保持定时器,它的优先级高于对所有BGP邻居配置定时器使用的timer命令。
操作 |
命令 |
配置指定对等体(组)的keepalive时间间隔与保持定时器 |
peer { group-name | peer-address } timer keep-alive keepalive-interval hold holdtime-interval |
恢复指定对等体(组)的keepalive时间间隔与保持定时器的缺省值 |
undo peer { group-name | peer-address } timer |
缺省情况下,keepalive报文的发送时间间隔为60秒,保持定时器为180秒。
操作 |
命令 |
配置向对等体组发送路由更新报文的时间间隔 |
peer group-name route-update-interval seconds |
恢复向对等体组发送路由更新报文的缺省时间间隔 |
undo peer group-name route-update-interval |
缺省情况下,向IBGP对等体组发送路由更新报文的时间间隔为5秒,向EBGP对等体组发送路由更新报文的时间间隔为30秒。
操作 |
命令 |
配置将团体属性传给对等体组 |
peer group-name advertise-community |
不将团体属性传给对等体组 |
undo peer group-name advertise-community |
操作 |
命令 |
配置对等体组为路由反射器客户 |
peer group-name reflect-client |
取消对等体组作为路由反射器客户 |
undo peer group-name reflect-client |
只能将配置类型为internal的对等体组配置成反射器客户。
缺省情况下,自治系统中的所有IBGP必须是全连接的,且邻居间不通告学到的IBGP路由,以防止产生路由环。
关于路由反射器,请参考“配置BGP路由反射器”一节的内容。
操作 |
命令 |
配置向对等体组发送缺省路由 |
peer group-name default-route-advertise |
取消向对等体组发送缺省路由 |
undo peer group-name default-route-advertise |
缺省情况下,路由器不向对等体发送缺省路由。使用该命令时,不要求在BGP路由表中存在缺省路由,而是无条件地向对等体发送一个下一跳为自身的缺省路由。
BGP路由器向对等体组发布路由时,可使用自身地址作为下一跳。
操作 |
命令 |
配置发布路由时将自身地址作为下一跳 |
peer group-name next-hop-local |
取消发布路由时将自身地址作为下一跳 |
undo peer group-name next-hop-local |
缺省情况下,路由器向IBGP对等体发布从EBGP对等体学到的路由时不把自身地址作为下一跳。
一般情况下,BGP在发送更新报文时都携带该自治系统号(可能是公有的AS号,也可能是私有的AS号),为使某些出口路由器在发送更新报文时忽略掉私有AS号,可配置发送BGP更新报文时不携带私有自治系统号。
表5-14 配置发送BGP更新报文时不携带私有自治系统号
操作 |
命令 |
配置发送BGP更新报文时不携带私有自治系统号 |
peer group-name public-as-only |
配置发送BGP更新报文时携带私有自治系统号 |
undo peer group-name public-as-only |
缺省情况下,发送BGP更新报文时,携带私有自治系统号。
为使接口在出现问题时仍能发送更新报文,可配置允许内部BGP会话使用任何可与对端建立TCP连接的接口,通常使用Loopback接口。
操作 |
命令 |
配置路由更新报文的源接口 |
peer { peer-address | group-name } connect-interface interface-type interface-number |
取消路由更新报文源接口的设置 |
undo peer { peer-address | group-name } connect-interface |
缺省情况下,BGP使用最佳路由更新报文的源接口。
BGP发言者与被去激活的对等体或对等体组之间不交换路由信息。
表5-16 激活/去激活对等体(组)
操作 |
命令 |
激活对等体/对等体组 |
peer { group-name | peer-address } enable |
去激活对等体/对等体组 |
undo peer { group-name | peer-address } enable |
缺省情况下,对等体或对等体组是激活的。
BGP对等体/对等体组之间需要建立并保持TCP连接,为提高BGP的安全性,可以配置在建立TCP连接时进行MD5认证。如果认证失败,则不能建立TCP连接。BGP的MD5认证功能并不对BGP报文进行认证,它只是为TCP连接设置一个MD5认证密码,由TCP完成认证。
表5-17 配置BGP的MD5认证
操作 |
命令 |
配置对等体/对等体组的MD5认证 |
peer { group-name | peer-address } password { cipher | simple } password |
取消MD5认证 |
undo peer { group-name | peer-address } password |
缺省情况下,BGP在建立TCP连接时,不进行MD5认证。
表5-18 禁止BGP对等体/对等体组发起或接收BGP连接
操作 |
命令 |
禁止BGP对等体/对等体组发起或接收BGP连接 |
peer { group-name | peer-address } shutdown |
恢复缺省设置 |
undo peer { group-name | peer-address } shutdown |
缺省情况下,允许对等体/对等体组发起或接收BGP连接。
请在BGP视图下进行下面配置。
对等体组的成员必须与所在的组使用相同的出方向路由更新策略,但入方向的策略可以不同。即,对外发布路由时,一个对等体组遵循的策略是相同的,而在接收路由时,各对等体可以选择自己的策略。
表5-19 指定对等体/对等体组的路由策略
操作 |
命令 |
配置BGP对从对等体/对等体组接收到的路由应用路由策略 |
peer { group-name | peer-address } route-policy policy-name import |
取消该路由策略 |
undo peer { group-name | peer-address } route-policy policy-name import |
配置BGP对向对等体组发送的路由应用路由策略 |
peer group-name route-policy policy-name export |
取消该路由策略 |
undo peer group-name route-policy policy-name export |
缺省情况下,不对接收及发送的路由应用路由策略。
表5-20 配置对等体/对等体组的基于IP访问控制列表的路由过滤策略
操作 |
命令 |
配置BGP基于访问控制列表过滤从对等体/对等体组收到的路由 |
peer { group-name | peer-address } filter-policy acl-number import |
取消对接收路由的过滤 |
undo peer { group-name | peer-address } filter-policy acl-number import |
配置BGP基于访问控制列表过滤向对等体组发布的路由 |
peer group-name filter-policy acl-number export |
取消对发布路由的过滤 |
undo peer group-name filter-policy acl-number export |
缺省情况下,不对接收及发布的路由进行过滤。
表5-21 配置对等体/对等体组的基于AS路径列表的过滤策略
操作 |
命令 |
配置BGP基于AS路径列表过滤从对等体/对等体组收到的路由 |
peer { group-name | peer-address } as-path-acl number import |
取消对接收路由的过滤 |
undo peer { group-name | peer-address } as-path-acl number import |
配置BGP基于AS路径列表过滤向对等体组发布的路由 |
peer group-name as-path-acl number export |
取消对发布路由的过滤 |
undo peer group-name as-path-acl number export |
缺省情况下,不对接收及发布的路由进行过滤。
表5-22 配置对等体/对等体组的基于前缀列表的路由过滤策略
操作 |
命令 |
配置BGP基于地址前缀列表过滤从对等体/对等体组收到的路由 |
peer { group-name | peer-address } ip-prefix prefixname import |
取消对接收路由的过滤 |
undo peer { group-name | peer-address } ip-prefix prefixname import |
配置BGP基于地址前缀列表过滤向对等体组发布的路由 |
peer group-name ip-prefix prefixname export |
取消对发布路由的过滤 |
undo peer group-name ip-prefix prefixname export |
缺省情况下,不对接收及发布的路由进行过滤。
请在BGP视图下进行下面配置。
表5-23 配置取消IGP和IBGP路由同步
操作 |
命令 |
配置取消IGP和IBGP路由同步 |
undo synchronization |
当对等体间建立了BGP连接后,它们定时向对端发送Keepalive Message,以防止路由器认为BGP连接已中断。若路由器在设定的连接保持时间(Holdtime)内未收到对端的Keepalive Message或任何其它类型的报文,则认为此BGP连接已经被中断,从而断开此BGP连接,并对从此BGP连接收到的路由进行相应的处理。因此,发送Keepalive Message的间隔时间和BGP连接保持时间是BGP机制中两个非常重要的参数。
BGP路由器和它的对等体在建立BGP连接时,需要进行协商,协商得到的保持时间为该BGP路由器的保持时间和对等体的保持时间中时间较小的那个。如果保持时间协商结果为0,则不发送keepalive Message,且不再检测Holdtime是否超时。
请在BGP视图下进行下列配置。
表5-24 配置BGP定时器
操作 |
命令 |
配置BGP定时器 |
timer keep-alive keepalive-interval hold holdtime-interval |
恢复定时器的缺省值 |
undo timer |
合理的最大Hold-time为keepalive message发送间隔的三倍,且keepalive message发送间隔不能小于1秒。因此,如果配置Holdtime不为0,则至少为3秒。
缺省情况下,发送keepalive的时间间隔为60秒;保持定时器时间为180秒。
可通过配置不同的本地优先级来影响BGP的路由选择。当一个运行BGP的路由器通过不同的IBGP对等体得到目的地相同、下一跳不同的路由时,将选取本地优先级最高的路由。
请在BGP视图下进行下列配置。
操作 |
命令 |
配置本地优先级 |
default local-preference value |
恢复缺省的本地优先级 |
undo default local-preference |
本地优先级只在IBGP对等体之间交换Update报文时发送,不发送到本自治系统之外。
缺省情况下,本地优先级的值为100。
& 说明:
在配置完缺省的本地优先级后,只有在此之后接收和发送路由时才会触发BGP对路径的重新优选。若要立即或对已有的路由进行重新优选,需要使用refresh bgp all import或reset bgp all命令。
多出口区分MED(Multi-Exit Descriminators)属性是路由的外部路由权(Cost),它在自治系统之间交换,但进入自治系统的MED不会再发送到该自治系统以外。
自治系统使用本地优先级属性来进行出自治系统的路由选择;而MED属性用于判断进入自治系统的最佳路由,当一个运行BGP的路由器通过不同的EBGP对等体得到目的地相同、下一跳不同的多条路由时,在其它条件相同的情况下,将选择MED值较小者作为自治系统的优选路由。
请在BGP视图下进行下列配置。
操作 |
命令 |
配置系统的MED值 |
default med med-value |
恢复系统缺省的MED值 |
undo default med |
上述配置只比较来自同一AS中的不同EBGP对等体的路由的MED值,如果要比较来自不同自治系统的对等体的路由的MED值,需要配置compare-different-as-med命令。
缺省情况下,MED值为0。
该命令用于选择最佳路径。在其它条件相同的情况下,MED较小的路由被优选作为自治系统的外部路由。
请在BGP视图下进行下列配置。
表5-27 比较来自不同AS邻居路径的MED值
操作 |
命令 |
比较来自不同AS邻居路径的MED值 |
compare-different-as-med |
禁止比较来自不同AS邻居路径的MED值 |
undo compare-different-as-med |
缺省情况下,不允许比较来自不同AS邻居路径的MED属性值。
除非能够确认不同的自治系统采用了同样的IGP和路由选择方式,否则不要使用该配置。
团体属性是一个可选过渡属性,某些团体属性是公认的,具有全球意义,一般称为标准的团体属性,某些则是用于特殊用途,用户也可以定义扩展的团体属性。
团体属性列表是标识一个团体信息的列表,可分为标准团体访问列表(Standard-community-list)与扩展团体访问列表(Extended-community-list)两种。
此外,一条路由也可以有一个以上的团体属性。在一条路由中多个团体属性的发言者可以按照一个、几个或全部属性操作。路由器在传递路由到其它对等体之前可以选择是否改变团体属性。
请在系统视图下进行下列配置。
操作 |
命令 |
配置标准团体列表 |
ip community-list standard-community-list-number { permit | deny } [ aa:nn ] [ internet ] [ no-export-subconfed ] [ no-advertise ] [ no-export ] |
配置扩展团体列表 |
ip community-list extended-community-list-number { permit | deny } as-regular-expression |
取消配置的团体列表 |
undo ip community-list { standard-community-list-number | extended-community-list-number } |
缺省情况下,未配置BGP团体属性。
标准团体访问列表的取值范围为1~99,扩展团体访问列表的取值为100~199。
BGP支持CIDR路由,支持路由聚合。BGP路由聚合有两种方式:自动聚合summary与手动聚合aggregate。自动聚合summary是对BGP引入的IGP子网路由进行聚合。配置summary后,BGP将不能接收从IGP引入的子网路由。手动聚合aggregate是对BGP本地路由进行的聚合。在手动聚合方式下可配置一系列参数。通常情况下,手动聚合的优先级要比自动聚合的优先级高。
请在BGP视图下进行下列配置。
表5-29 配置BGP路由聚合
操作 |
命令 |
配置子网路由自动聚合功能 |
summary |
取消子网路由自动聚合功能 |
undo summary |
配置本地路由聚合功能 |
aggregate address mask [ as-set ] [ detail-suppressed ] [ suppress-policy route-policy-name ] [ origin-policy route-policy-name ] [ attribute-policy route-policy-name ] |
取消本地路由聚合功能 |
undo aggregate address mask [ as-set ] [ detail-suppressed ] [ suppress-policy route-policy-name ] [ origin-policy route-policy-name ] [ attribute-policy route-policy-name ] |
缺省情况下,BGP不对子网及本地路由进行聚合。
每一种路由协议都有自己的优先级(preference),协议的优先级将最后决定路由策略采用哪种路由协议获取的路由作为最佳路由。优先级的数值越大,其实际的优先级越低。BGP有三种路由:从外部对等体学到的路由,从内部对等体学到的路由及本地产生的路由。这三种路由的优先级可以是不同的,可以分别针对这三种路由手工设定BGP的优先级。
请在BGP视图下进行下列配置。
操作 |
命令 |
设定BGP协议的优先级 |
preference value1 value2 value3 |
恢复BGP协议优先级的缺省值 |
undo preference |
value1为从EBGP邻居收到的路由的优先级,value2为从IBGP邻居收到的路由的优先级,value3为本地产生的路由的优先级,取值范围均为1~256。缺省情况下,value1、value2、value3的值分别为256、256、130。
为保证IBGP对等体之间的连通性,IBGP对等体之间需要建立全闭合网。在某些网络中,IBGP对等体数目很多,内部BGP网络变得非常大,建立全闭合网开销很大。这就要求使用新的对等技术。路由反射器概念的基本思想是:指定一个集中路由器作为内部对话的焦点。多个BGP路由器可以与一个中心点对等化,然后多个路由反射器再进行对等化。
路由反射器作为其它路由器的集中点,其它路由器就称为客户机。客户机与路由反射器对等并与其交换选路信息。路由反射器会依次在客户机之间传递(或称反射)信息。
在下图中,RouterA从外部对等体收到一个更新信息并把它传递到RouterC。RouterC被配置成路由反射器,它有两个客户机:RouterA和RouterB。
RouterC把更新信息从客户机RouterA反射给客户机RouterB。在这种配置下,实际并不需要RouterA和RouterB之间的对等对话,因为路由反射器会把BGP信息转给RouterB。
反射器是可以完成路由反射功能的路由器。路由反射器的IBGP对等体分为两类:客户机和非客户机。一个路由反射器和它的客户机构成一个群(Cluster)。在自治系统中不属于这个群的其它所有对等体就是非客户机。路由反射器的指定和客户机的加入是由命令peer reflect-client实现的。
非客户机与路由反射器之间,以及非客户机互相之间必须组成闭合网,因为它们遵循IBGP闭合网的基本规则。客户机不应与其相关群之外的IBGP建立对等。路由反射功能只在路由反射器上完成,所有的客户机和非客户机都是常规的BGP对等体,与路由反射器的功能无关。客户机所以被看成是客户机仅仅是因为路由反射器把它们列为客户机。
请在BGP视图下进行下列配置。
操作 |
命令 |
允许客户到客户的路由反射 |
reflect between-clients |
禁止客户到客户的路由反射 |
undo reflect between-clients |
缺省情况下,允许客户到客户的路由反射。
通常一个群中有一个路由反射器,该群由路由反射器的路由器ID来识别。
请在BGP视图下进行下列配置。
操作 |
命令 |
配置路由反射器的群ID |
reflector cluster-id { cluster-id | address } |
取消路由反射器的群ID |
undo reflector cluster-id |
随着路由反射器的引入,就有自治系统内产生选路循环的可能性。离开一个群的选路更新报文可能会试图回到这个群中。传统的AS路径方法不能探测到AS内部的循环,因为选路更新报文尚未离开AS。BGP在配置路由反射器时,提供了下述两种在AS内部避免循环的措施:
(1) 配置路由反射器的始发者ID
始发者ID(Originator_ID)如果配置不当,更新报文回到始发者,始发者会放弃它。
此项参数无须配置,在启动BGP时自动配置。
(2) 配置路由反射器的群ID
联盟是处理AS内部的IBGP网络连接激增的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体全连接,并同联盟中其它的子自治系统建立连接。
联盟的缺陷是:从非联盟向联盟方案转变时,要求路由器重新进行配置,逻辑拓扑基本上也要改变;而且,若没有手工设置的BGP策略,通过联盟的选路有可能次优路径。
在不属于联盟的BGP发言者看来,属于同一个联盟的多个子自治系统是一个整体,外界不需要了解内部的子自治系统情况,联盟ID就是标识联盟这一整体的自治系统号。
请在BGP视图下进行下列配置。
操作 |
命令 |
配置联盟的ID |
confederation id as-number |
取消联盟的ID |
undo confederation id |
缺省情况下,未配置联盟的ID号。
在配置联盟的ID号时,不能够与已经存在的自治系统号相同。
请先配置联盟ID,再配置属于联盟的子自治系统。一个联盟最多可包括32个子自治系统。配置属于联盟的子自治系统时使用的as-number联盟内部有效。
请在BGP视图下进行下列配置。
操作 |
命令 |
配置属于联盟的子自治系统 |
confederation peer-as as-number-1 [ ... as-number-n ] |
删除属于联盟的子自治系统 |
undo confederation peer-as [ as-number-1 ] [ ...as-number-n ] |
缺省情况下,未配置属于联盟的子自治系统。
配置联盟子自治系统号时,所配置的子自治系统号不能够与没有配置对等体组自治系统号下的某个对等体的自治系统号相同。
如果需要与实现机制不同于RFC1965的设备互通,必须对联盟中所有的此类路由器进行配置。
请在BGP视图下进行下列配置。
操作 |
命令 |
配置可同非标准兼容的自治系统联盟属性 |
confederation nonstandard |
撤消同非标准兼容的自治系统联盟 |
undo confederation nonstandard |
缺省情况下,配置的联盟与RFC1965一致。
路由不稳定性的主要可能原因是以前存在于路由表的一条路由间歇性的消失和重现,这种情况称为摆动(flapping)。摆动发生时,update报文在网络上反复传播,会占用极大的带宽和路由器的处理时间,应尽力避免这种情况的发生。控制路由不稳定的技术是路由衰减。
衰减把路由分为稳定和不稳定两类,不稳定的路由应该被抑制(不被通告)。路由的历史表现是评估未来稳定性的基础。每当路由发生摆动,就给与惩罚,当惩罚达到一个预定的门限时,路由被抑制。随着时间推移,惩罚值按照幂函数递减,下降到一个门限时,路由解除抑制,被重新通告。
请在BGP视图下进行下列配置。
表5-36 配置BGP路由衰减
操作 |
命令 |
配置BGP路由衰减 |
dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling ] [ route-policy route-policy-name ] |
清除路由摆动衰减信息及解除对已抑制路由的抑制 |
reset dampening [ network-address [ mask ] ] |
取消BGP路由衰减 |
undo dampening |
缺省情况下,未配置BGP路由衰减。
需要注意的是:命令中各参数相互依存,若配置了任何一个,那么也必须指定其它参数。
dampening命令只对从EBGP邻居学到的路由进行衰减,对IBGP路由不进行衰减。
BGP可以向其它的自治系统发送本自治系统的内部网络的信息。为了达到此目的,可以将路由器通过IGP路由协议得到的关于本系统内部的网络信息通过BGP发送出去。
请在BGP视图下进行下列配置。
表5-37 引入IGP协议的路由信息
操作 |
命令 |
配置BGP引入IGP协议的路由 |
import-route protocol [ process-id ] [ med med ] [ route-policy route-policy-name ] |
取消BGP引入IGP协议的路由 |
undo import-route protocol [ process-id ] |
将本地的默认路由引入BGP中 |
default-route imported |
禁止将本地的默认路由引入BGP中 |
undo default-route imported |
缺省情况下,BGP将不引入其它协议的路由。
protocol指定可引入的源路由协议,目前可为direct、static、rip、ospf、ospf-ase和ospf-nssa。
该命令可配置本地AS号的重复次数。
请在BGP视图下进行下列配置。
表5-38 配置as-path的重复次数
操作 |
命令 |
配置本地AS号的重复次数 |
peer { group-name | peer-address } allow-as-loop [ number ] |
取消配置本地AS号的重复次数 |
undo peer { group-name | peer-address } allow-as-loop |
缺省情况下,number取值为3。
访问控制列表(ACL)、AS路径列表和Route-policy均可以作为BGP过滤的条件。
请参见本手册的“安全”部分。
BGP的路由信息中包含一个自治系统路径域,称为AS路径属性。可以使用as-path-acl匹配BGP路由信息的自治系统路径域,过滤掉不符合条件的路由信息。对于相同的列表号,用户可以定义多条as-path-acl,即一个列表号代表一组as-path访问列表。每个AS路径列表是用数字来标识的。
请在系统视图下进行下列配置。
表5-39 配置AS路径列表
操作 |
命令 |
配置AS路径列表 |
ip as-path-acl aspath-acl-number { permit | deny } as-regular-expression |
取消定义的AS路径列表 |
undo ip as-path-acl aspath-acl-number |
缺省情况下,未定义AS路径列表。
在匹配过程中,AS访问列表号aspath-acl-number之间是一种“或”的关系,即路由信息通过这组列表中的一条就意味着通过由该列表号标识的这组as-path列表的过滤。
第一步:定义Route-policy,请参见6.2.2 通过Route-policy实现路由策略。
第二步:定义匹配规则,请参见6.2.2 通过Route-policy实现路由策略。
第三步:定义赋值规则,请参见6.2.2 通过Route-policy实现路由策略。
请在BGP视图下进行下列配置。
可对BGP引入的路由进行过滤,只有满足某些条件的路由才能被BGP引入。
操作 |
命令 |
配置对引入的路由进行过滤 |
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 |
可对BGP发布的路由进行过滤,只有满足某些条件的路由才能被BGP发布。
请在BGP视图下进行下列配置。
表5-41 配置BGP对发布路由的过滤
操作 |
命令 |
配置对发布的路由进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ protocol ] |
取消对发布的路由进行过滤 |
undo filter-policy acl-number | ip-prefix ip-prefix-name } export [ protocol ] |
缺省情况下,BGP不对接收和发布的路由信息进行过滤。
当在此命令中指定protocol时,可用于过滤从指定路由协议引入的路由,目前可包括:direct、static、rip、ospf、ospf-ase和ospf-nssa。
用户改变BGP的策略或协议配置后,可以重置当前BGP连接,使新的配置生效。
请在用户视图下进行下列配置。
表5-42 复位BGP的连接
操作 |
命令 |
复位BGP与特定对等体间的连接 |
reset bgp peer-address |
复位所有的BGP连接 |
reset bgp all |
复位指定对等体组中的所有成员的BGP连接 |
reset bgp group group-name |
用户改变BGP的策略或协议配置后,可以使用BGP路由刷新功能,在无需重置BGP连接的情况下使新的配置生效。
请在用户视图下进行下列配置。
表5-43 配置BGP路由刷新
操作 |
命令 |
配置BGP路由刷新 |
refresh bgp { all | peer-address | group group-name } { import | export } |
在完成上述配置后,在任意视图下执行display命令可以显示配置后BGP的运行情况,用户可以通过查看显示信息验证配置的效果。在用户视图下执行debugging命令可对BGP进行调试。
表5-44 BGP显示和调试
操作 |
命令 |
查看BGP路由表中的信息 |
display bgp routing [ ip-address mask ] |
查看BGP路由表中的路由统计信息 |
display bgp routing statistic |
查看BGP中AS路径列表信息 |
display ip as-path-acl [ aspath-acl-number ] |
查看团体列表信息 |
display ip community-list [ stand-comm-list-number | ext-comm-list-number ] |
查看CIDR路由 |
display bgp routing cidr |
查看指定BGP团体的路由信息 |
display bgp routing community [ aa:nn ] [ no-export-subconfed ] [ no-advertise ] [ no-export ] [ whole-match ] |
查看指定BGP团体列表允许的路由 |
display bgp routing community-list community-list-number [ whole-match ] |
查看BGP衰减的路由 |
display bgp routing dampened |
显示BGP对等体通告或者收到的路由信息 |
display bgp routing peer peer-address { advertised | received } |
显示从peer收到的衰减路由信息 |
display bgp routing peer peer-address dampened [ statistic | ip-address ] |
显示从peer收到的匹配正则表达式的路由信息 |
display bgp routing peer peer-address regular-expression text |
查看与指定access-list相匹配的路由 |
display bgp routing as-path-acl aspath-acl-number |
查看路由摆动统计信息 |
display bgp routing flap-info [ regular-expression as-regular-rexpession | as-path-acl aspath-acl-number | address [ mask [ longer-prefix-list ] ] ] |
查看源AS不一致的路由 |
display bgp routing different-origin-as |
查看对等体信息 |
|
查看已经配置的路由信息 |
display bgp network |
查看AS路径信息 |
display bgp paths as-regular-expression |
查看对等体组信息 |
display bgp group [ group-name ] |
display bgp routing regular-expression as-regular-expression |
|
查看配置的Route-policy信息 |
display route-policy [ route-policy-name ] |
打开BGP邻接状态变化的输出开关(BGP视图) |
log-peer-change |
关闭BGP邻接状态变化的输出开关(BGP视图) |
undo log-peer-change |
打开/关闭BGP所有报文调试信息开关 |
[ undo ] debugging bgp all |
打开/关闭BGP事件调试信息开关 |
[ undo ] debugging bgp event |
打开/关闭BGP一般运行信息调试开关 |
[ undo ] debugging bgp normal |
打开/关闭BGP Keepalive调试信息开关 |
[ undo ] debugging bgp keepalive [ receive | send ] [ verbose ] |
打开/关闭BGP Open调试信息开关 |
[ undo ] debugging bgp open [ receive | send ] [ verbose ] |
打开/关闭BGP包调试信息开关 |
[ undo ] debugging bgp packet [ receive | send ] [ verbose ] |
打开/关闭BGP路由更新调试信息开关 |
[ undo ] debugging bgp route-refresh [ receive | send ] [ verbose ] |
打开/关闭BGP Update报文调试信息开关 |
[ undo ] debugging bgp update [ receive | send ] [ verbose ] |
reset bgp flap-info [ regular-expression as-regular-rexpession | as-path-acl aspath-acl-number | address [ mask ] ] |
|
清除指定目的地址的路由的摆动统计信息 |
reset bgp peer-address flap-info |
注意:
配置用例中,只列出了与BGP配置相关的命令。
下图将自治系统100划分为3个子自治系统1001,1002,1003,配置EBGP、联盟EBGP和IBGP。
# 配置RouterA:
[H3C] bgp 1001
[H3C-bgp] confederation id 100
[H3C-bgp] confederation peer-as 1002 1003
[H3C-bgp] group confed1002 external
[H3C-bgp] peer confed1002 as-number 1002
[H3C-bgp] group confed1003 external
[H3C-bgp] peer confed1003 as-number 1003
[H3C-bgp] peer 172.68.10.2 group confed1002
[H3C-bgp] peer 172.68.10.3 group confed1003
# 配置RouterB:
[H3C] bgp 1002
[H3C-bgp] confederation id 100
[H3C-bgp] confederation peer-as 1001 1003
[H3C-bgp] group confed1001 external
[H3C-bgp] peer confed1001 as-number 1001
[H3C-bgp] group confed1003 external
[H3C-bgp] peer confed1003 as-number 1003
[H3C-bgp] peer 172.68.10.1 group confed1001
[H3C-bgp] peer 172.68.10.3 group confed1003
# 配置RouterC:
[H3C] bgp 1003
[H3C-bgp] confederation id 100
[H3C-bgp] confederation peer-as 1001 1002
[H3C-bgp] group confed1001 external
[H3C-bgp] peer confed1001 as-number 1001
[H3C-bgp] group confed1002 external
[H3C-bgp] peer confed1002 as-number 1002
[H3C-bgp] peer 172.68.10.1 group confed1001
[H3C-bgp] peer 172.68.10.2 group confed1002
[H3C-bgp] group ebgp200 external
[H3C-bgp] peer 156.10.1.2 group ebgp200 as-number 200
[H3C-bgp] group ibgp1003 internal
[H3C-bgp] peer 172.68.1.2 group ibgp1003
RouterB接收了一个经过EBGP的更新报文并将之传给RouterC。RouterC被配置为路由反射器,它有两个客户:RouterB和RouterD。RouterB和RouterD间不需一个IBGP连接,当RouterC接收了来自RouterB的路由更新时,它将此信息反射给RouterD,反之亦然。
图5-3 配置BGP路由反射器组网图
# 配置RouterA:
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.1 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 1.1.1.1 255.0.0.0
[H3C-GigabitEthernet1/0] quit
[H3C] bgp 100
[H3C-bgp] group ex external
[H3C–bgp] peer 192.1.1.2 group ex as-number 200
[H3C –bgp] network 1.0.0.0 255.0.0.0
# 配置RouterB:
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.2 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 193.1.1.2 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] bgp 200
[H3C-bgp] group ex external
[H3C-bgp] peer 192.1.1.1 group ex as-number 100
[H3C-bgp] group in internal
[H3C-bgp] peer 193.1.1.1 group in
# 配置RouterC:
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 193.1.1.1 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 194.1.1.1 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] bgp 200
[H3C-bgp] group rr internal
[H3C-bgp] reflect between-clients
[H3C-bgp] peer rr reflect-client
[H3C-bgp] peer 193.1.1.2 group rr
[H3C-bgp] peer 194.1.1.2 group rr
# 配置RouterD:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 194.1.1.2 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] bgp 200
[H3C-bgp] group in internal
[H3C-bgp] peer 194.1.1.1 group in
在RouterB上用命令display bgp routing,可以看到RouterB已知道网络1.0.0.0的存在。
在RouterD上用命令display bgp routing,可以看到RouterD也知道网络1.0.0.0的存在。
本例说明怎样通过BGP属性的使用来管理路由选择。
所有路由器都配置BGP,AS200中的IGP使用OSPF。
RouterA在AS100中,RouterB、RouterC和RouterD在AS200中。RouterA与RouterB和RouterC之间运行EBGP。RouterB和RouterC与RouterD之间运行IBGP。
图5-4 配置BGP路径选择的组网图
# 配置RouterA:
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.1 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 193.1.1.1 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] bgp 100
[H3C-bgp] network 1.0.0.0
[H3C-bgp] group ex192 external
[H3C-bgp] peer 192.1.1.2 group ex192 as-number 200
[H3C-bgp] group ex193 external
[H3C-bgp] peer 193.1.1.2 group ex193 as-number 200
[H3C-bgp] quit
# 配置RouterA的MED属性
# 增加访问列表到RouterA上,允许网络1.0.0.0
[H3C] acl number 2001
[H3C-acl-basic-2001] rule permit source 1.0.0.0 0.255.255.255
# 定义两个Route-policy,一个名为apply_med_50,另一个名为apply_med_100,第一个Route-policy为网络1.0.0.0设置的MED属性为50,第二个Route-policy设置的MED属性为100。
[H3C] route-policy apply_med_50 permit node 10
[H3C-route-policy] if-match acl 2001
[H3C-route-policy] apply cost 50
[H3C-route-policy] quit
[H3C] route-policy apply_med_100 permit node 10
[H3C-route-policy] if-match acl 2001
[H3C-route-policy] apply cost 100
[H3C-route-policy] quit
# 应用apply_med_50到邻居RouterC(193.1.1.2)出口路由更新上,应用apply_med_100到邻居RouterB(192.1.1.2)的出口路由更新上。
[H3C] bgp 100
[H3C-bgp] peer ex193 route-policy apply_med_50 export
[H3C-bgp] peer ex192 route-policy apply_med_100 export
# 配置RouterB:
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.2 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 194.1.1.2 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[H3C] bgp 200
[H3C-bgp] undo synchronization
[H3C-bgp] group ex external
[H3C-bgp] peer 192.1.1.1 group ex as-number 100
[H3C-bgp] group in internal
[H3C-bgp] peer 194.1.1.1 group in
# 配置RouterC:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 193.1.1.2 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 195.1.1.2 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 193.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[H3C] bgp 200
[H3C-bgp] group ex external
[H3C-bgp] peer 193.1.1.1 group ex as-number 100
[H3C-bgp] group in internal
[H3C-bgp] peer 195.1.1.1 group in
# 配置RouterD:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 194.1.1.1 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 195.1.1.1 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[H3C-osp-1f-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 4.0.0.0 0.255.255.255
[H3C] bgp 200
[H3C-bgp] group ex external
[H3C-bgp] peer ex as-number 200
[H3C-bgp] peer 195.1.1.2 group ex
[H3C-bgp] peer 194.1.1.2 group ex
为使配置生效,需要使用reset bgp all命令复位所有的BGP邻居。
通过上述配置后,由于RouterC学到的路由1.0.0.0的MED属性比RouterB学到的更小,RouterD优选来自RouterC的路由1.0.0.0。
如果在配置RouterA时,不配置RouterA的MED属性,而在RouterC上配置本地优先级如下:
# 在RouterC上加上访问列表2001,允许网络1.0.0.0
[H3C] acl number 2001
[H3C-acl-basic-2001] rule permit source 1.0.0.0 0.255.255.255
# 定义名为localpref的路由策略,设置匹配access list 2001(访问列表2001)的路由的本地优先级为200,不匹配的为100。
[H3C] route-policy localpref permit node 10
[H3C-route-policy] if-match acl 2001
[H3C-route-policy] apply local-preference 200
[H3C-route-policy] quit
[H3C] route-policy localpref permit node 20
[H3C-route-policy] apply local-preference 100
[H3C] quit
# 应用此路由策略到来自BGP邻居193.1.1.1(RouterA)上。
[H3C] bgp 200
[H3C-bgp] peer 193.1.1.1 route-policy localpref import
此时,由于RouterC学到的路由1.0.0.0的Local preference属性值为200,比RouterB学到的路由1.0.0.0的Local preference属性值(RouterB没有配置Local preference属性,默认为100)更大,RouterD依然优选来自RouterC的路由1.0.0.0。
故障之一:邻居关系不能建立(无法进入Established状态)。
故障排除:BGP邻居的建立需要能够使用179端口建立TCP会话,以及能够正确交换Open报文。可按照以下步骤进行检查:
l 检查邻居的IP地址是否正确。
l 如果使用Loopback接口,检查是否配置了connect-interface loopback。缺省情况下,路由器使用最佳本地接口建立TCP连接,而不会用loopback接口。
l 如果是物理上非直连的EBGP邻居,检查是否配置了peer ebgp-max-hop。
l 使用ping命令检查TCP连接是否正常,由于一台路由器可能有多个接口能够到达对端,应使用扩展的ping -a ip-address命令指定发送ping包的源IP地址。
l 如果Ping不通,使用display ip routing-table命令检查路由表中是否存在到邻居的可用路由。
l 如果能Ping通,检查是否配置了禁止TCP端口179的ACL,如果有,取消对179端口的禁止。
路由器在发布与接收路由信息时,可能需要实施一些策略,以便对路由信息进行过滤,比如只接收或发布一部分满足给定条件的路由信息;一种路由协议(如RIP)可能需要引入(import)其它的路由协议(如OSPF)发现的路由信息,从而丰富自己的路由知识;路由器在引入其它路由协议的路由信息时,可能需要只引入一部分满足条件的路由信息,并对所引入的路由信息的某些属性进行设置,以使其满足本协议的要求。
为实现路由策略,首先要定义将要实施路由策略的路由信息的特征,即定义一组匹配规则,可以以路由信息中的不同属性作为匹配依据进行设置,如目的地址、发布路由信息的路由器地址等。匹配规则可以预先设置好,然后再将它们应用于路由的发布、接收和引入等过程的路由策略中。
在路由器中,提供了Route-policy、acl、as-path、community-list和ip-prefix五种过滤器供路由协议引用。下面对各种过滤器逐个进行介绍。
用于匹配给定路由信息的某些属性,并在条件满足后对该路由信息的某些属性进行设置。
一个Route-policy可以由多个节点(node)构成,每个节点是进行匹配测试的一个单元,节点间依据顺序号(node-number)进行匹配。每个节点可以由一组if-match和apply子句组成。if-match子句定义匹配规则,匹配对象是路由信息的一些属性。同一节点中的不同if-match子句是“与”的关系,只有满足节点内所有if-match子句指定的匹配条件,才能通过该节点的匹配测试。apply子句指定动作,也就是在通过节点的匹配测试后所执行的动作——对路由信息的一些属性进行设置。
一个Route-policy的不同节点间是“或”的关系,系统依次检查Route-policy的各个节点,如果通过了Route-policy的某一节点,就意味着通过该Route-policy的匹配测试(不进入下一个节点的测试)。
访问控制列表分为四类:高级访问控制列表、基本访问控制列表、基于接口的访问控制列表和MAC地址过滤列表。
在对路由信息过滤时,一般使用基本访问控制列表和高级访问控制列表。若使用基本访问控制列表,在定义访问列表时指定一个源IP地址或子网的范围,用于匹配路由信息的源地址。如使用高级访问列表,则可以使用协议类型、源/目的地址或端口号等多种参数匹配路由信息。
ACL的有关配置请参见本手册“安全”部分的防火墙配置。
前缀列表ip-prefix的作用类似于ACL,但比它更为灵活,且更易于为用户理解。ip-prefix在应用于路由信息的过滤时,其匹配对象为路由信息的目的地址信息域;另外在ip-prefix中,用户可以指定gateway选项,指明只接收某些路由器发布的路由信息。
一个ip-prefix由前缀列表名标识。每个前缀列表可以包含多个表项,每个表项可以独立指定一个网络前缀形式的匹配范围,并用一个index-number来标识,index-number指明了在ip-prefix中进行匹配检查的顺序。
在匹配的过程中,路由器按升序依次检查由index-number标识的各个表项,只要有某一表项满足条件,就意味着通过该ip-prefix的过滤(不会进入下一个表项的测试)。
自治系统路径信息访问列表as-path仅用于BGP。BGP的路由信息包中包含一个自治系统路径域(在BGP交换路由信息的过程中,路由信息经过的自治系统路径会记录在这个域中),as-path就是针对自治系统路径域指定匹配条件。
有关as-path的配置请用户参见“第5章 BGP配置”中的ip as-path-acl命令。
团体属性列表community-list仅用于BGP。在BGP的路由信息包中,包含一个community属性域,用来标识一个团体。community-list就是针对团体属性域指定匹配条件。
有关community-list的配置请用户参见“第5章 BGP配置”中的ip community-list命令。
路由策略可以通过两种方式来实现,一是通过过滤列表,如ACL、ip-prefix、as-path-acl、community-list等,直接实现路由或路由属性的过滤;另一种是通过配置Route-policy,对满足匹配条件的路由的属性进行设置。
本章中的配置包括:
(1) 配置路由过滤
l 定义地址前缀列表或ACL
l 配置对接收到的路由进行过滤
l 引入其它路由协议发现的路由(仅OSPF路由过滤需要配置)
l 配置对发布的路由(对OSPF指引入路由)进行过滤
(2) 通过Route-policy实现路由策略
l 定义Route-policy
l 定义Route-policy的if-match子句
l 定义Route-policy的apply子句
l 通过Route-policy对引入的路由进行过滤
有关BGP通过as-path-acl,community-list实现的路由过滤,请参见第5章 BGP配置。
(1) 定义地址前缀列表
一个ip-prefix由前缀列表名标识。每个前缀列表可以包含多个表项,每个表项可以独立指定一个网络前缀形式的匹配范围,并用一个index-number来标识,index-number指明了在ip-prefix中进行匹配检查的顺序。
请在系统视图下进行下列配置。
操作 |
命令 |
定义地址前缀列表 |
ip ip-prefix ip-prefix-name [ index index-number ] { permit | deny } network len [ greater-equal greater-equal | less-equal less-equal ] * |
取消地址前缀列表 |
undo ip ip-prefix ip-prefix-name [ index index-number | permit | deny ] |
在匹配的过程中,路由器按升序依次检查由index-number标识的各个表项,只要有某一表项满足条件,就意味着通过该ip-prefix的过滤(不会进入下一个表项的测试)。
需要注意的是:
l 如果定义了一个以上的前缀列表表项,那么至少应该有一个表项的匹配模式是permit模式。
l deny模式的表项可以先被定义以快速的过滤掉不符合条件的路由信息,但如果所有表项都是deny模式,则任何路由都不会通过该地址前缀列表的过滤。
l 可以在定义了多条deny模式的表项后定义一条permit 0.0.0.0/0 greater-equal 0 less-equal 32的表项以允许其它所有路由信息通过。
例如,按如下配置可以保证仅过滤掉10.1.0.0,10.2.0.0,10.3.0.0三个网段的路由,而其它网段的路由信息可以通过。
[H3C] ip ip-prefix 1 deny 10.1.0.0 16
[H3C] ip ip-prefix 2 deny 10.2.0.0 16
[H3C] ip ip-prefix 3 deny 10.3.0.0 16
[H3C] ip ip-prefix 4 permit 0.0.0.0 0 greater-equal 0 less-equal 32
(2) 定义访问控制列表
请参见本手册的“安全”部分。
请在路由协议视图下进行下列配置。
定义一条策略规则,通过对一个ACL或地址前缀列表的引用实现在接收路由过程中对不满足条件的路由信息进行过滤。gateway指定只接收来自特定邻居路由器的更新报文。
操作 |
命令 |
配置对接收的指定地址发布的路由信息进行过滤 |
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 ] } import |
取消对接收的全局路由信息进行过滤 |
undo filter-policy { acl-number | ip-prefix ip-prefix-name [ gateway ] } import |
filter-policy import是对接收到的本路由协议(由所在的协议视图决定)的路由进行过滤,并阻止其将路由信息加入到路由表中。当在一个进行路由导入的路由器上使用此命令时,它不能用来阻止从其它路由协议引入的路由,因为在这之前此路由条目已经出现在路由表中。
对于链路状态协议来说,它只能阻止将路由条目加入到路由表中,无法对LSA进行过滤,所以相关的LSA还会被通告到邻居。
RIP和BGP协议是对邻居发来的路由表直接过滤。
路由协议可以引入其它路由协议发现的路由来丰富自己的路由知识。在引入其它协议路由信息时,可以通过Route-policy来进行路由信息的过滤,实现有选择的引入。进行引入操作的目标路由协议如果不能直接引用原路由协议的路由权值,需要为引入的路由指定一个路由权以满足本协议的要求。
请在路由协议视图下进行下列配置。
操作 |
命令 |
设置引入其它协议的路由 |
import-route protocol [ med med | cost cost ] [ tag value ] [ type { 1 | 2 } ] |
取消引入其它协议的路由的设置 |
undo import-route protocol |
缺省情况下,不引入其它协议的路由信息。
& 说明:
在不同的路由协议视图下,可选的参数也有所区别,具体情况请分别参考手册中相应路由协议的import-route命令。
定义一条有关路由发布的策略规则,通过对一个ACL或地址前缀列表的引用实现在路由发布的过程中过滤不满足条件的路由信息,通过指定routing-process实现仅过滤发布的routing-process的路由信息。
请在路由协议视图下进行下列配置。
操作 |
命令 |
配置对发布路由的过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ routing-process ] |
取消对发布路由的过滤 |
undo filter-policy { acl-number | ip-prefix ip-prefix-name } export [ routing-process ] |
filter-policy export对于OSPF来说,是对引入的路由进行过滤,要与import-route命令结合使用,否则失效。当指定routing-process时,可以对特定类型的引入路由信息进行过滤。如果没有指定,则对所有引入的路由进行过滤。
对RIP和BGP来说,即使没有import-route命令,它也会对路由表过滤,可以看作是对发布的路由进行过滤。
目前,路由策略支持将如下协议发现的路由接收到路由表中:
l direct:本机接口直接相连的网段(或主机)路由。
l static:静态配置的路由。
l rip:RIP发现的路由。
l ospf:OSPF协议发现的路由。
l ospf-ase:OSPF协议发现的外部路由。
l ospf-nssa:OSPF协议发现的NSSA区域路由。
l bgp:BGP获得的路由。
缺省情况下,不对接收与发布的路由进行过滤。
一个Route-policy可由多个节点构成,每个节点是进行匹配检查的一个单元,节点间依据顺序号sequence-number标识检查顺序。
请在系统视图下进行下列配置。
操作 |
命令 |
进入路由策略视图 |
route-policy route-policy-name { permit | deny } node node-number |
删除指定的Route-policy |
undo route-policy route-policy-name [ permit | deny | node node-number ] |
permit指定所定义的Route-policy节点的匹配模式为允许模式。当路由项满足该节点的所有if-match子句时,认为通过该节点的过滤,并执行该节点的apply子句,不进入下一个节点的测试;如路由项不满足该节点的if-match子句,将进入下一个节点继续测试。
deny指定所定义的Route-policy节点的匹配模式为拒绝模式(此模式下apply子句不会被执行),当路由项满足该节点的所有if-match子句时被拒绝通过该节点,不进入下一个节点的测试;如路由项不满足该节点的if-match子句,将进入下一个节点继续测试。
不同节点间是“或”的关系,即路由器依次检查Route-policy的各个节点,通过Route-policy的某一节点,就意味着通过该Route-policy过滤。
缺省情况下,未定义Route-policy。
需要注意的是:如果定义了一个以上的Route-policy节点,Route-policy的各个节点中至少应该有一个节点的匹配模式是permit。当一个Route-policy用于路由信息过滤时,如果某路由信息没有通过任一节点,则认为该路由信息没有通过该Route-policy。当Route-policy的所有节点都是deny模式时,所有路由信息都不会通过该Route-policy。
if-match子句定义匹配准则,也就是路由信息通过当前Route-policy所需满足的过滤条件,匹配对象是路由信息的一些属性。
请在路由策略视图下进行下列配置。
操作 |
命令 |
匹配BGP路由信息的AS路径域 |
if-match as-path aspath-acl-number |
取消匹配BGP路由信息的AS路径域 |
undo if-match as-path |
匹配BGP路由信息的团体属性 |
if-match community { standard-community-number [ whole-match ] | extended-community-number } |
取消匹配BGP路由团体属性 |
undo if-match community |
匹配路由信息的目的地址 |
if-match { acl acl-number | ip-prefix ip-prefix-name } |
取消匹配路由信息的目的地址 |
undo if-match { acl | ip-prefix } |
匹配路由信息下一跳接口 |
|
取消匹配路由信息下一跳接口 |
undo if-match interface |
匹配路由信息的下一跳 |
if-match ip next-hop { acl acl-number | ip-prefix ip-prefix-name } |
取消匹配路由信息的下一跳 |
undo if-match ip next-hop [ ip-prefix ] |
匹配路由信息的路由权值 |
if-match cost value |
取消匹配路由信息的路由权值 |
undo if-match cost |
匹配OSPF路由信息的标记域 |
if-match tag value |
取消匹配OSPF路由的标记域 |
undo if-match tag |
缺省情况下,不进行任何匹配。
需要注意:
(1) 对于同一个Route-policy节点,在匹配的过程中,各个if-match子句间是“与”的关系,即路由信息必须同时满足所有match才算满足节点的匹配,可以执行apply子句的动作。
(2) 如不指定if-match子句,则所有路由信息都会通过该节点的过滤。
apply子句指定动作,也就是在满足由if-match子句指定的过滤条件后所执行的一些配置命令,对路由的一些属性进行修改。
请在路由策略视图下进行下列配置。
操作 |
命令 |
在BGP路由信息的as-path系列前加入指定的AS号 |
apply as-path as-number-1 [ as-number-2 [ as-number-3 ... ] ] |
取消在BGP路由信息的as-path系列前加入指定的AS号的设置 |
undo apply as-path |
在BGP路由信息中设置团体属性 |
apply community { { aa:nn | no-export-subconfed | no-advertise | no-export } [ additive ] | additive | none } |
取消所设置的BGP路由信息中的团体属性 |
undo apply community |
设置BGP路由信息的本地优先级 |
apply local-preference localpref |
取消BGP路由信息的本地优先级 |
undo apply local-preference |
设置路由信息的路由权值 |
|
取消路由信息的路由权值 |
undo apply cost |
设置路由信息的路由权类型 |
apply cost-type [ internal | external ] |
取消路由信息的路由权类型 |
undo apply cost-type |
设置BGP路由信息的路由源 |
apply origin { igp | egp as-number | incomplete } |
取消BGP路由信息的路由源 |
undo apply origin |
设置OSPF路由信息的标记域 |
apply tag value |
取消OSPF路由信息的标记域 |
undo apply tag |
缺省情况下,不进行任何设置。
请注意:如果满足Route-policy中指定的匹配条件,并且在向EBGP同伴通告IGP路由时通告了apply cost-type internal配置的MED值,那么该值将作为IGP路由的MED值。用apply cost-type internal所配置的优先级低于apply cost命令,高于default med命令。
请在路由协议视图下进行下列配置。
操作 |
命令 |
设置引入其它协议的路由 |
import-route protocol [ med med | cost cost ] [ tag value ] [ type { 1 | 2 } ] route-policy route-policy-name |
取消引入其它协议的路由的设置 |
undo import-route protocol |
缺省情况下,不引入其它协议的路由信息。
& 说明:
在不同的路由协议视图下,可选的参数也有所区别,具体情况请分别参考手册中相应路由协议的import-route命令。
对于BGP,还可以通过配置对等体组的Route-policy策略控制从对等体(组)收到的路由或向对等体组通告的路由。对等体组的成员不能配置不同于对等体组的出方向路由更新策略,但可以配置不同的入口策略。
操作 |
命令 |
配置对等体的Route-policy策略 |
peer { group-name | peer-address } route-policy route-policy-name import |
取消对等体的Route-policy策略 |
undo peer { group-name | peer-address } route-policy policy-name import |
在完成上述配置后,在任意视图下执行display命令可以显示路由策略的配置情况,用户可以通过查看显示信息验证配置的效果。
操作 |
命令 |
查看Route-policy |
display route-policy [ route-policy-name ] |
查看BGP中AS过滤的路径信息 |
display ip as-path-acl [ aspath-acl-number ] |
查看地址前缀列表信息 |
display ip ip-prefix [ ip-prefix-name ] |
本例说明了一种OSPF协议有选择地引入RIP协议路由的情况。
路由器连接了一所大学的校园网和一个地区性网络。校园网使用RIP作为其内部路由协议,地区性网络使用OSPF路由协议,路由器需要将校园网中的某些路由信息在地区性网络中发布。为实现这一功能,路由器上的OSPF协议在引入RIP协议路由信息时通过对一个路由策略的引用实现路由过滤的功能。该路由策略由两个节点组成,实现192.1.0.0/24和128.2.0.0/16的路由信息以不同的路由权值被OSPF协议发布。
图6-1 配置OSPF引入RIP协议路由的组网图
# 定义地址前缀列表
[H3C] ip ip-prefix p1 permit 192.1.0.0 24
[H3C] ip ip-prefix p2 permit 128.2.0.0 16
# 配置路由策略
[H3C] route-policy r1 permit node 10
[H3C-route-policy] if-match ip-prefix p1
[H3C-route-policy] apply cost 120
[H3C-route-policy] quit
[H3C] route-policy r1 permit node 20
[H3C-route-policy] if-match ip-prefix p2
[H3C-route-policy] apply cost 100
[H3C-route-policy] quit
# 配置OSPF协议
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 128.1.0.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] quit
[H3C-ospf-1] import-route rip route-policy r1
[H3C-ospf-1] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 128.1.0.1 255.255.255.0
本例说明了RIP协议有选择地发布路由信息的情况。
路由器连接了校园网A和校园网B,它们都使用RIP作为内部路由协议,路由器仅将校园网A中的192.1.1.0/24和192.1.2.0/24两个网段的路由发布到校园网B中去。为实现这一功能,路由器上的RIP协议使用一条filter-policy命令过滤发布的路由信息,通过对一个地址前缀列表的引用来实现对发布路由进行过滤的功能。
# 配置地址前缀列表
[H3C] ip ip-prefix p1 permit 192.1.1.0 24
[H3C] ip ip-prefix p1 permit 192.1.2.0 24
# 配置RIP协议
[H3C] rip
[H3C-rip] network 192.1.0.0
[H3C-rip] network 202.1.1.0
[H3C-rip] filter-policy ip-prefix p1 export
l RouterA与RouterB通信,都运行OSPF协议。
l 对RouterA上的OSPF路由进程进行配置,引入三条静态路由。
l 通过在RouterB上配置路由过滤规则,使接收到的三条静态路由部分可见,部分被屏蔽掉——20.0.0.0和40.0.0.0网段的路由是可见的,30.0.0.0网段的路由则被屏蔽。
(1) 配置RouterA:
# 配置接口GigabitEthernet1/0的IP地址。
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 10.0.0.1 255.0.0.0
[H3C-GigabitEthernet1/0] quit
# 配置三条静态路由。
[H3C] ip route-static 20.0.0.1 32 gigabitethernet 1/1
[H3C] ip route-static 30.0.0.1 32 gigabitethernet 1/1
[H3C] ip route-static 40.0.0.1 32 gigabitethernet 1/1
# 启动OSPF协议,指定该接口所属区域号。
[H3C] router id 1.1.1.1
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 10.0.0.0 0.0.0.255
# 引入静态路由。
[H3C-ospf-1] import-route static
(2) 配置RouterB:
# 配置接口GigabitEthernet1/0的IP地址。
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 10.0.0.2 255.0.0.0
[H3C-GigabitEthernet1/0] quit
# 配置访问控制列表。
[H3C] acl number 2001
[H3C-acl-basic-2001] rule deny source 30.0.0.0 0.255.255.255
[H3C-acl-basic-2001] rule permit source any
# 启动OSPF协议,指定该接口所属区域号。
[H3C] router id 2.2.2.2
[H3C] ospf
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 10.0.0.0 0.0.0.255
# 配置OSPF对接收的外部路由进行过滤。
[H3C-ospf-1] filter-policy 2001 import
本例说明怎样通过BGP属性的使用来管理路由选择。
所有路由器都配置BGP,AS200中的IGP使用OSPF。
RouterA在AS100中,RouterB、RouterC和RouterD在AS200中。RouterA与RouterB和RouterC之间运行EBGP。RouterB和RouterC与RouterD之间运行IBGP。
图6-4 配置BGP路径选择的组网图
# 配置RouterA:
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.1 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 193.1.1.1 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] bgp 100
[H3C-bgp] network 1.0.0.0
[H3C-bgp] group ex192 external
[H3C-bgp] peer 192.1.1.2 group ex192 as-number 200
[H3C-bgp] group ex193 external
[H3C-bgp] peer 193.1.1.2 group ex193 as-number 200
[H3C-bgp] quit
# 配置RouterA的MED属性
# 增加访问列表到RouterA上,允许网络1.0.0.0
[H3C] acl number 2001
[H3C-acl-basic-2001] rule permit source 1.0.0.0 0.255.255.255
# 定义两个Route-policy,一个名为apply_med_50,另一个名为apply_med_100,第一个Route-policy为网络1.0.0.0设置的MED属性为50,第二个Route-policy设置的MED属性为100。
[H3C] route-policy apply_med_50 permit node 10
[H3C-route-policy] if-match acl 2001
[H3C-route-policy] apply cost 50
[H3C-route-policy] quit
[H3C] route-policy apply_med_100 permit node 10
[H3C-route-policy] if-match acl 2001
[H3C-route-policy] apply cost 100
[H3C-route-policy] quit
# 应用apply_med_50到邻居RouterC(193.1.1.2)出口路由更新上,应用apply_med_100到邻居RouterB(192.1.1.2)的出口路由更新上。
[H3C] bgp 100
[H3C-bgp] peer ex193 route-policy apply_med_50 export
[H3C-bgp] peer ex192 route-policy apply_med_100 export
# 配置路由器RouterB:
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 192.1.1.2 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 194.1.1.2 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] ospf
[H3C-ospf-1] import-route bgp
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[H3C] bgp 200
[H3C-bgp] undo synchronization
[H3C-bgp] group ex external
[H3C-bgp] peer 192.1.1.1 group ex as-number 100
[H3C-bgp] group in internal
[H3C-bgp] peer 194.1.1.1 group in
[H3C-bgp] import-route ospf
# 配置RouterC:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 193.1.1.2 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 195.1.1.2 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] ospf
[H3C-ospf-1] import-route bgp
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 193.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[H3C] bgp 200
[H3C-bgp] group ex external
[H3C-bgp] peer 193.1.1.1 group ex as-number 100
[H3C-bgp] group in internal
[H3C-bgp] peer 195.1.1.1 group in
[H3C-bgp] import-route ospf
# 配置RouterD:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 194.1.1.1 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 195.1.1.1 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] ospf
[H3C-ospf-1] import-route bgp
[H3C-ospf-1] area 0
[H3C-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[H3C-osp-1f-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[H3C-ospf-1-area-0.0.0.0] network 4.0.0.0 0.255.255.255
[H3C] bgp 200
[H3C-bgp] group in internal
[H3C-bgp] peer 195.1.1.2 group in as-number 200
[H3C-bgp] peer 194.1.1.2 group in as-number 200
[H3C-bgp] import-route ospf
为使配置生效,需要使用reset bgp all命令复位所有的BGP邻居。
通过上述配置后,由于RouterC学到的路由1.0.0.0的MED属性比RouterB学到的更小,RouterD优选来自RouterC的路由1.0.0.0。
如果在配置RouterA时,不配置RouterA的MED属性,而在RouterC上配置本地优先级如下:
# 在RouterC上加上访问列表2001,允许网络1.0.0.0
[H3C] acl number 2001
[H3C-acl-basic-2001] rule permit source 1.0.0.0 0.255.255.255
# 定义名为localpref的路由策略,设置匹配acl 2001的路由的本地优先级为200,不匹配的为100。
[H3C] route-policy localpref permit node 10
[H3C-route-policy] if-match acl 2001
[H3C-route-policy] apply local-preference 200
[H3C-route-policy] route-policy localpref permit node 20
[H3C-route-policy] apply local-preference 100
[H3C] quit
# 应用此路由策略到来自BGP邻居193.1.1.1(RouterA)的路由信息上。
[H3C] bgp 200
[H3C-bgp] peer 193.1.1.1 route-policy localpref import
此时,由于RouterC学到的路由1.0.0.0的Local preference属性值为200,比RouterB学到的路由1.0.0.0的Local preference属性值(RouterB没有配置Local preference属性,默认为100)更大,RouterD依然优选来自RouterC的路由1.0.0.0。
RouterA和RouterB在AS300,RouterD在AS100,RouterC在AS200。配置RouterA与D、RouterB与C、RouterC与D均为EBGP peer。RouterA与B为IBGP peer;RouterA与B间的IGP协议为RIP。
图6-5 基于BGP next-hop/as-path/origin/local-preference属性的路由策略配置举例
(1) 配置RouterA:
# 配置接口IP地址。
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 172.16.1.1 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 129.102.1.6 255.255.0.0
[H3C-GigabitEthernet2/0] quit
# 配置RIP协议。
[H3C] rip
[H3C-rip] network 129.102.0.0
[H3C-rip] quit
# 配置BGP内部邻居和外部邻居。
[H3C] bgp 300
[H3C-bgp] undo synchronization
[H3C-bgp] import-route rip
[H3C-bgp] group ex100 external
[H3C-bgp] peer 172.16.1.2 group ex100 as-number 100
[H3C-bgp] group in300 internal
[H3C-bgp] peer 129.102.1.1 group in300
(2) 配置RouterB:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 10.0.0.1 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 129.102.1.1 255.255.0.0
[H3C-GigabitEthernet2/0] quit
[H3C] rip
[H3C-rip] network 129.102.0.0
[H3C-rip] quit
[H3C] bgp 300
[H3C-bgp] import-route rip
[H3C-bgp] undo synchronization
[H3C-bgp] group in300 internal
[H3C-bgp] peer 129.102.1.6 group in300
[H3C-bgp] group ex200 external
[H3C-bgp] peer 10.0.0.2 group ex200 as-number 200
(3) 配置RouterC:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 10.0.0.2 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 120.56.0.2 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] bgp 200
[H3C-bgp] group ex100 external
[H3C-bgp] peer 120.56.0.1 group ex100 as-number 100
[H3C-bgp] group ex300 external
[H3C-bgp] peer 10.0.0.1 group ex300 as-number 300
(4) 配置RouterD:
[H3C] interface gigabitethernet 1/0
[H3C-GigabitEthernet1/0] ip address 172.16.1.2 255.255.255.0
[H3C-GigabitEthernet1/0] quit
[H3C] interface gigabitethernet 2/0
[H3C-GigabitEthernet2/0] ip address 120.56.0.1 255.255.255.0
[H3C-GigabitEthernet2/0] quit
[H3C] interface gigabitethernet 3/0
[H3C-GigabitEthernet3/0] ip address 192.168.1.1 255.255.255.0
[H3C-GigabitEthernet3/0] quit
[H3C] bgp 100
[H3C-bgp] network 192.168.1.0
[H3C-bgp] group ex300 external
[H3C-bgp] peer 172.16.1.1 group ex300 as-number 300
[H3C-bgp] group ex200 external
[H3C-bgp] peer 120.56.0.2 group ex200 as-number 200
[H3C-bgp] quit
[H3C] quit
完成上面配置在RouterA和RouterB上执行display bgp routing,可以看到192.168.1.0的路由下一跳为172.16.1.2,Origin属性为igp。
l 如在RouterD上增加as-path
[H3C] bgp 100
[H3C-bgp] peer ex300 route-policy AS300 export
[H3C-bgp] quit
[H3C] route-policy AS300 permit node 10
[H3C-route-policy] if-match acl 2001
[H3C-route-policy] apply as-path 300
[H3C-route-policy] quit
[H3C] acl number 2001 match-order auto
[H3C-acl-basic-2001] rule permit source any
[H3C-acl-basic-2001] quit
[H3C] quit
观察到192.168.1.0的路由下一跳变为10.0.0.2,as-path为200,100,原来的到AS300的路由被过滤掉了。
l 如在RouterA上指定下一跳地址
[H3C] bgp 300
[H3C-bgp] peer ex100 route-policy AS100 import
[H3C-bgp] quit
[H3C] route-policy AS100 permit node 10
[H3C-route-policy] if-match acl 2001
[H3C-route-policy] apply ip-address next-hop 10.0.0.2
[H3C-route-policy] quit
[H3C] acl number 2001
[H3C-acl-basic-2001] rule permit source 192.168.1.0 0.0.0.255
[H3C-acl-basic-2001] quit
[H3C] quit
观察到192.168.1.0的路由下一跳变为10.0.0.2。
l 如在RouterD上设置Origin属性
[H3C] bgp 100
[H3C-bgp] peer ex300 route-policy AS300 export
[H3C] quit
[H3C] route-policy AS300 permit node10
[H3C-route-policy] if-match acl 2001
[H3C-route-policy] apply origin Incomplete
[H3C-route-policy] quit
[H3C] acl number 2001 match-order auto
[H3C-acl-2001] rule permit source 192.168.1.0
[H3C-acl-2001] quit
[H3C] quit
此时Origin属性变为Incomplete。
l 如在RouterB上配置local-preference属性
[H3C] bgp 200
[H3C-bgp] peer ex200 route-policy AS200 export
[H3C-bgp] quit
[H3C] route-policy AS200 permit node10
[H3C-route-policy] if-match acl 2001
[H3C-route-policy] apply local-preference 150
[H3C-route-policy] quit
[H3C] acl number 2001 match-order auto
[H3C-acl-2001] rule permit ip destination 192.168.1.0
[H3C-acl-2001] quit
[H3C] quit
观察到192.168.1.0的路由下一跳变为10.0.0.2。
故障一:路由协议运行正常的情况下无法实现路由信息过滤。
故障排除:检查如下几种错误:
l Route-policy的各个节点中至少应该有一个节点的匹配模式是permit模式。当一个Route-policy用于路由信息过滤时,如果某路由信息没有通过任一节点的过滤,则认为该路由信息没有通过该Route-policy的过滤。当Route-policy的所有节点都是deny模式时,所有路由信息都不会通过该Route-policy的过滤。
l 地址前缀列表的各个表项中至少应该有一个表项的匹配模式是permit模式。deny模式的表项可以先被定义以快速的过滤掉不符合条件的路由信息,但如果所有表项都是deny模式,则任何路由都不会通过该地址前缀列表的过滤。可以在定义了多条deny模式的表项后定义一条permit 0.0.0.0 0 less-equal 32的表项以允许其它所有路由信息通过(如果不指定less-equal 32将只匹配缺省路由)。
在大型组网应用中,路由表中的路由数量往往非常大,尤其是OSPF路由和BGP路由。路由信息通常是存储在路由器的内存中,当路由表规模不断增大时,路由器的内存使用量也将不断增加。但路由器总的内存大小并不会改变(除非进行硬件升级,而升级也不能保证解决所有问题)。当设备内存被耗尽时,设备将不能正常工作。
为了解决这种矛盾,Comware提供了一种对路由表规模进行控制的机制,通过监控系统当前空闲内存的大小,决定是否继续向路由表中增加新的路由以及是否保持路由协议的连接。
& 说明:
需要注意的是,通常情况下使用系统的默认值就可以满足要求,不建议用户自行改变配置,以避免配置不当导致系统的稳定性和可用性降低。
造成路由表规模过于庞大的通常是BGP路由项和OSPF路由项,因此,路由器的路由容量限制只对这两类路由有效,静态路由和其它动态路由协议不受影响。
当路由器的空闲内存大小降低到设定的内存下限时,BGP和OSPF连接将被断开,相应的路由项从路由表中删除,从而释放占用的内存。系统定期检查空闲内存的大小,当发现空闲内存恢复到安全值后,再重新恢复BGP和OSPF连接。
路由容量配置包括:
l 设置/恢复路由器内存的下限与安全值
l 禁止路由器自动恢复断开的路由协议
l 使能路由器自动恢复断开的路由协议
当路由器的空闲内存大小等于或低于下限值时,BGP和OSPF连接将被断开。
当路由器中的空闲内存大小降低到安全值,但还没有到达下限值时,通过dispaly memory limit命令可以看到路由器进入一种紧急状态(Exigent)。
如果使能了自动恢复功能,当路由器中的空闲内存大小恢复到超过安全值时,断开的BGP和OSPF连接将重新建立。
请在系统视图下进行下列配置。
操作 |
命令 |
设置路由器内存的下限与安全值 |
memory { safety safety-value | limit limit-value }* |
将路由器内存的下限与安全值恢复为缺省值 |
undo memory { safety | limit } |
safety-value和limit-value的缺省值由内存大小决定。
& 说明:
请注意,在配置时,safety-value必须大于limit-value。
如果禁止了自动恢复功能,则即使空闲内存已经超过了安全值,断开的BGP和OSPF连接也不会恢复,因此,请不要轻易使用该功能。
请在系统视图下进行下列配置。
操作 |
命令 |
禁止自动恢复功能 |
memory auto-establish disable |
缺省情况下,使能路由器的自动恢复功能。
请在系统视图下进行下列配置。
操作 |
命令 |
使能路由器的自动恢复功能 |
memory auto-establish enable |
缺省情况下,使能路由器的自动恢复功能。
在完成上述配置后,在任意视图下执行display命令可以显示配置后的路由容量信息,用户可以通过查看显示信息验证配置的效果。
操作 |
命令 |
查看路由容量相关的内存设置和状态信息 |
display memory [ limit ] |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!