12-IPV4路由操作
本章节下载 (2.09 MB)
目 录
1.3.1 配置静态路由与Track相关联检测下一跳是否可达
3.7.11 配置LSDB中External LSA的最大数量
4.5.11 配置接口发送不加入填充字段的小型Hello报文
& 说明:
本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。为提高可读性,在手册的描述中将不另行说明。
静态路由是一种特殊的路由,由管理员手工配置。在组网结构比较简单的网络中,只需配置静态路由就可以实现网络互通。恰当地设置和使用静态路由可以改善网络的性能,并可为重要的网络应用保证带宽。
静态路由的缺点在于:不能自动适应网络拓扑结构的变化,当网络发生故障或者拓扑发生变化后,可能会出现路由不可达,导致网络中断,此时必须由网络管理员手工修改静态路由的配置。
缺省路由是在路由器没有找到匹配的路由表入口项时才使用的路由:
l 如果报文的目的地址不能与路由表的任何入口项相匹配,那么该报文将选取缺省路由;
l 如果没有缺省路由且报文的目的地不在路由表中,那么该报文将被丢弃,将向源端返回一个ICMP报文报告该目的地址或网络不可达。
缺省路由可以通过静态路由配置,以到网络0.0.0.0(掩码也为0.0.0.0)的形式在路由表中出现,也可以由某些动态路由协议生成,如OSPF、IS-IS和RIP。
配置静态路由时,需要了解以下内容:
(1) 目的地址与掩码
在ip route-static命令中,IPv4地址为点分十进制格式,掩码可以用点分十进制表示,也可用掩码长度(即掩码中连续‘1’的位数)表示。
(2) 出接口和下一跳地址
在配置静态路由时,可指定出接口interface-type interface-number,也可指定下一跳地址。指定出接口还是指定下一跳地址要视具体情况而定,下一跳地址不能为本地接口IP地址,否则路由不会生效。
实际上,所有的路由项都必须明确下一跳地址。在发送报文时,首先根据报文的目的地址寻找路由表中与之匹配的路由。只有指定了下一跳地址,链路层才能找到对应的链路层地址,并转发报文。
指定出接口时需要注意:
l 对于NULL0接口,配置了出接口就不再配置下一跳地址。
l 在配置静态路由时,建议不要直接指定广播类型接口作出接口(如VLAN接口等)。因为广播类型的接口,会导致出现多个下一跳,无法唯一确定下一跳。在某些特殊应用中,如果必须配置广播接口(如VLAN接口等)为出接口,则必须同时指定其对应的下一跳地址。
(3) 其它属性
对于不同的静态路由,可以为它们配置不同的优先级,从而更灵活地应用路由管理策略。例如:配置到达相同目的地的多条路由,如果指定相同优先级,则可实现负载分担,如果指定不同优先级,则可实现路由备份。
在配置静态路由之前,需配置相关接口的IP地址。
表1-1 配置静态路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置静态路由 |
ip route-static dest-address { mask | mask-length } { next-hop-address | interface-type interface-number [ next-hop-address ] } [ preference preference-value ] [ tag tag-value ] [ description description-text ] |
必选 缺省情况下,静态路由的优先级preference为60,静态路由tag值为0,未配置描述信息 |
配置静态路由的缺省优先级 |
ip route-static default-preference default-preference-value |
可选 缺省情况下,静态路由的缺省优先级为60 |
& 说明:
l 在配置静态路由时,如果先指定下一跳地址,然后将该地址配置为本地接口(如VLAN接口等)的IP地址,静态路由不会生效。
l 如果在配置静态路由时没有指定优先级,就会使用缺省优先级。重新设置缺省优先级后,新设置的缺省优先级仅对新增的静态路由有效。
l 设置静态路由的Tag值,可以在路由策略中根据Tag值对路由进行灵活的控制。
l 在使用ip route-static配置静态路由时,如果将目的地址与掩码配置为全零(0.0.0.0 0.0.0.0),则表示配置的是缺省路由。
当网络发生故障或者拓扑发生变化后,可能会出现路由不可达,导致网络中断,因此为了提升现有网络的稳定性,需要对静态路由下一跳的可达性进行快速检测,当下一跳不可达时可以快速切换到备份路由。
如果在配置静态路由时只指定了下一跳而没有指定出接口,可以通过将静态路由与Track项相关联,利用Track项的状态来控制静态路由有效性。当Track项状态为positive时,静态路由的下一跳可达,配置的静态路由将生效;当Track项状态为negative时,静态路由的下一跳可不达,配置的静态路由无效。关于Track的详细介绍,请参考“Track”部分。
通过配置Track项检测静态路由下一跳是否可达,则需要创建Track项,具体配置过程请参考“Track”部分。
表1-2 配置静态路由与Track项相关联检测下一跳是否可达
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置静态路由与Track项相关联检测下一跳是否可达 |
ip route-static dest-address { mask | mask-length } next-hop-address track track-entry-number [ preference preference-value ] [ tag tag-value ] [ description description-text ] |
必选 缺省情况下,没有为静态路由下一跳指定指定Track项序号 |
& 说明:
l 配置静态路由支持Track监测功能,该条静态路由可以是已经创建的,也可以是未创建的。对于已经创建的静态路由,只是将静态路由与Track项关联,并根据Track项的状态来判断静态路由的有效性;对于未创建的静态路由,首先要生成该静态路由,然后将其与Track项关联。
l 需要注意在静态路由进行迭代时,Track项监测的应该是静态路由真正的下一跳,而不是配置的下一跳。否则,可能导致错误地将有效路由判断为无效路由。
在完成上述配置后,在任意视图下执行display命令查看静态路由配置的运行情况并检验配置结果。
在系统视图下执行delete命令可以删除配置的所有静态路由。
表1-3 静态路由显示和维护
操作 |
命令 |
查看当前的配置文件信息 |
display current-configuration |
查看IP路由表摘要信息 |
display ip routing-table |
查看IP路由表详细信息 |
display ip routing-table verbose |
查看静态路由表信息 |
display ip routing-table protocol static [ inactive | verbose ] |
删除所有静态路由 |
delete static-routes all |
路由器各接口及主机的IP地址和掩码如下图所示。要求采用静态路由,使图中任意两台主机之间都能互通。
图1-1 静态路由配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置静态路由
# 在Switch A上配置缺省路由。
<SwitchA> system-view
[SwitchA] ip route-static 0.0.0.0 0.0.0.0 1.1.4.2
# 在Switch B上配置两条静态路由。
<SwitchB> system-view
[SwitchB] ip route-static 1.1.2.0 255.255.255.0 1.1.4.1
[SwitchB] ip route-static 1.1.3.0 255.255.255.0 1.1.5.6
# 在Switch C上配置缺省路由。
<SwitchC> system-view
[SwitchC] ip route-static 0.0.0.0 0.0.0.0 1.1.5.5
(3) 配置主机
配置Host A的缺省网关为1.1.2.3,Host B的缺省网关为1.1.6.1,Host C的缺省网关为1.1.3.1,具体配置过程略。
(4) 查看配置结果
# 显示Switch A的IP路由表。
[SwitchA] display ip routing-table
Routing Tables: Public
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 Static 60 0 1.1.4.2 Vlan500
1.1.2.0/24 Direct 0 0 1.1.2.3 Vlan300
1.1.2.3/32 Direct 0 0 127.0.0.1 InLoop0
1.1.4.0/30 Direct 0 0 1.1.4.1 Vlan500
1.1.4.1/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
# 显示Switch B的IP路由表。
[SwitchB] display ip routing-table
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost NextHop Interface
1.1.2.0/24 Static 60 0 1.1.4.1 Vlan500
1.1.3.0/24 Static 60 0 1.1.5.6 Vlan600
1.1.4.0/30 Direct 0 0 1.1.4.2 Vlan500
1.1.4.2/32 Direct 0 0 127.0.0.1 InLoop0
1.1.5.0/30 Direct 0 0 1.1.5.5 Vlan600
1.1.5.5/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
1.1.6.0/24 Direct 0 0 1.1.6.1 Vlan100
1.1.6.1/32 Direct 0 0 127.0.0.1 InLoop0
# 在Host A使用ping命令验证Host A与Host B、Host C之间的网络层是否互通。
& 说明:
l 本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。为提高可读性,在手册的描述中将不另行说明。
l 该系列交换机仅支持RIP单进程。
RIP(Routing Information Protocol,路由信息协议)是一种较为简单的内部网关协议(Interior Gateway Protocol,IGP),主要用于规模较小的网络中,比如校园网以及结构较简单的地区性网络。对于更为复杂的环境和大型网络,一般不使用RIP。
由于RIP的实现较为简单,在配置和维护管理方面也远比OSPF和IS-IS容易,因此在实际组网中仍有广泛地应用。
RIP是一种基于距离矢量(Distance-Vector,D-V)算法的协议,它通过UDP报文进行路由信息的交换,使用的端口号为520。
RIP使用跳数来衡量到达目的地址的距离,跳数称为度量值。在RIP中,路由器到与它直接相连网络的跳数为0,通过一个路由器可达的网络的跳数为1,其余依此类推。为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。由于这个限制,使得RIP不适合应用于大型网络。
为提高性能,防止产生路由环路,RIP支持水平分割(Split Horizon)和毒性逆转(Poison Reverse)功能。
每个运行RIP的路由器管理一个路由数据库,该路由数据库包含了到所有可达目的地的路由项,这些路由项包含下列信息:
l 目的地址:主机或网络的地址。
l 下一跳地址:为到达目的地,需要经过的相邻路由器的接口IP地址。
l 出接口:本路由器转发报文的出接口。
l 度量值:本路由器到达目的地的开销。
l 路由时间:从路由项最后一次被更新到现在所经过的时间,路由项每次被更新时,路由时间重置为0。
l 路由标记(Route Tag):用于标识外部路由,在路由策略中可根据路由标记对路由信息进行灵活的控制。关于路由策略的详细信息,请参见“路由策略配置”。
RIP受四个定时器的控制,分别是Update、Timeout、Suppress和Garbage-Collect。
l Update定时器,定义了发送路由更新的时间间隔。
l Timeout定时器,定义了路由老化时间。如果在老化时间内没有收到关于某条路由的更新报文,则该条路由在路由表中的度量值将会被设置为16。
l Suppress定时器,定义了RIP路由处于抑制状态的时长。当一条路由的度量值变为16时,该路由将进入抑制状态。在被抑制状态,只有来自同一邻居且度量值小于16的路由更新才会被路由器接收,取代不可达路由。
l Garbage-Collect定时器,定义了一条路由从度量值变为16开始,直到它从路由表里被删除所经过的时间。在Garbage-Collect时间内,RIP以16作为度量值向外发送这条路由的更新,如果Garbage-Collect超时,该路由仍没有得到更新,则该路由将从路由表中被彻底删除。
RIP是一种基于D-V算法的路由协议,由于它向邻居通告的是自己的路由表,存在发生路由环路的可能性。
RIP通过以下机制来避免路由环路的产生:
l 计数到无穷(Counting to infinity):将度量值等于16的路由定义为不可达(infinity)。在路由环路发生时,某条路由的度量值将会增加到16,该路由被认为不可达。
l 水平分割(Split Horizon):RIP从某个接口学到的路由,不会从该接口再发回给邻居路由器。这样不但减少了带宽消耗,还可以防止路由环路。
l 毒性逆转(Poison Reverse):RIP从某个接口学到路由后,将该路由的度量值设置为16(不可达),并从原接口发回邻居路由器。利用这种方式,可以清除对方路由表中的无用信息。
l 触发更新(Triggered Updates):RIP通过触发更新来避免在多个路由器之间形成路由环路的可能,而且可以加速网络的收敛速度。一旦某条路由的度量值发生了变化,就立刻向邻居路由器发布更新报文,而不是等到更新周期的到来。
RIP启动和运行的整个过程可描述如下:
l 路由器启动RIP后,便会向相邻的路由器发送请求报文(Request message),相邻的RIP路由器收到请求报文后,响应该请求,回送包含本地路由表信息的响应报文(Response message)。
l 路由器收到响应报文后,更新本地路由表,同时向相邻路由器发送触发更新报文,通告路由更新信息。相邻路由器收到触发更新报文后,又向其各自的相邻路由器发送触发更新报文。在一连串的触发更新广播后,各路由器都能得到并保持最新的路由信息。
l RIP在缺省情况下每隔30秒向相邻路由器发送本地路由表,运行RIP协议的相邻路由器在收到报文后,对本地路由进行维护,选择一条最佳路由,再向其各自相邻网络发送更新信息,使更新的路由最终能达到全局有效。同时,RIP采用老化机制对超时的路由进行老化处理,以保证路由的实时性和有效性。
RIP有两个版本:RIP-1和RIP-2。
RIP-1是有类别路由协议(Classful Routing Protocol),它只支持以广播方式发布协议报文。RIP-1的协议报文无法携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1不支持不连续子网(Discontiguous Subnet)。
RIP-2是一种无类别路由协议(Classless Routing Protocol),与RIP-1相比,它有以下优势:
l 支持路由标记,在路由策略中可根据路由标记对路由进行灵活的控制。
l 报文中携带掩码信息,支持路由聚合和CIDR(Classless Inter-Domain Routing,无类域间路由)。
l 支持指定下一跳,在广播网上可以选择到最优下一跳地址。
l 支持组播路由发送更新报文,减少资源消耗。
l 支持对协议报文进行验证,并提供明文验证和MD5验证两种方式,增强安全性。
& 说明:
RIP-2有两种报文传送方式:广播方式和组播方式,缺省将采用组播方式发送报文,使用的组播地址为224.0.0.9。当接口运行RIP-2广播方式时,也可接收RIP-1的报文。
RIP报文由头部(Header)和多个路由表项(Route Entries)部分组成。在一个RIP报文中,最多可以有25个路由表项。
RIP-1的报文格式如图2-1所示。
各字段的解释如下:
l Command:标识报文的类型。值为1时表示Request报文,值为2表示Response报文。
l Version:RIP的版本号。对于RIP-1来说其值为0x01。
l AFI(Address Family Identifier):地址族标识,其值为2时表示IP协议。
l IP Address:该路由的目的IP地址,可以是自然网段地址、子网地址或主机地址。
l Metric:路由的度量值。
RIP-2的报文格式与RIP-1类似,如图2-2所示。
其中,与RIP-1不同的字段有:
l Version:RIP的版本号。对于RIP-2来说其值为0x02。
l Route Tag:路由标记。
l IP Address:该路由的目的IP地址,可以是自然网段地址、子网地址或主机地址。
l Subnet Mask:目的地址的掩码。
l Next Hop:如果为0.0.0.0,则表示发布此条路由信息的路由器地址就是最优下一跳地址,否则表示提供了一个比发布此条路由信息的路由器更优的下一条地址。
RIP-2为了支持报文验证,使用第一个路由表项(Route Entry)作为验证项,并将AFI字段的值设为0xFFFF标识报文携带认证信息,如图2-3所示。
各字段的解释如下:
l Authentication Type:验证类型。值为2时表示明文验证,值为3时表示MD5验证。
l Authentication:验证字,当使用明文验证时包含了密码信息;当使用MD5验证时包含了Key ID、MD5验证数据长度和序列号的信息。
& 说明:
l RFC1723中只定义了明文验证方式,关于MD5验证的详细信息,请参考RFC2082“RIP-2 MD5 Authentication”。
l 当RIP的版本为RIP-1时,虽然在接口视图下仍然可以配置验证方式,但由于RIP-1不支持认证,因此该配置不会生效。
目前设备支持以下RIP特性:
l 支持RIP-1。
l 支持RIP-2。
与RIP相关的协议规范有:
l RFC1058:Routing Information Protocol
l RFC1723:RIP Version 2 - Carrying Additional Information
l RFC1721:RIP Version 2 Protocol Analysis
l RFC1722:RIP Version 2 Protocol Applicability Statement
l RFC1724:RIP Version 2 MIB Extension
l RFC2082:RIP-2 MD5 Authentication
在配置RIP的基本功能之前,需配置接口的网络层地址,使相邻节点的网络层可达。
表2-1 启动RIP,配置指定的接口运行RIP
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
创建RIP进程并进入RIP视图 |
rip [ process-id ] |
必选 缺省情况下,RIP进程处于关闭状态 |
在指定网段接口上使能RIP |
network network-address |
必选 缺省情况下,接口上的RIP功能处于关闭状态 |
& 说明:
l 如果在启动RIP前在接口视图下配置了RIP相关命令,这些配置只有在RIP启动后才会生效。
l RIP只在指定网段的接口上运行;对于不在指定网段上的接口,RIP既不在它上面接收和发送路由,也不将它的接口路由转发出去。因此,RIP启动后必须指定其工作网段。
l network 0.0.0.0命令用来在所有接口上使能RIP。
用户可对接口的工作状态进行配置:
l 配置接口工作在抑制状态,即接口只接收路由更新报文而不发送路由更新报文;
l 配置接口接收RIP报文;
l 配置接口发送RIP报文。
表2-2 配置接口的工作状态
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置接口工作在抑制状态 |
silent-interface { all | interface-type interface-number } |
可选 缺省情况下,所有使能RIP的接口发送路由更新报文 |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
允许接口接收RIP报文 |
rip input |
可选 缺省情况下,所有使能RIP的接口接收RIP报文 |
允许接口发送RIP报文 |
rip output |
可选 缺省情况下,所有使能RIP的接口发送RIP报文 |
用户可以在RIP视图下配置RIP版本,也可在接口上配置RIP版本:
l 当全局和接口都没有进行RIP版本配置时,接口发送RIP-1广播报文,可以接收RIP-1广播报文、RIP-1单播报文、RIP-2广播报文、RIP-2组播报文、RIP-2单播报文。
l 只有在接口上没有进行RIP版本配置时,全局配置才会生效,否则将以接口配置的为准。
l 当接口运行的RIP版本为RIP-1时,发送RIP-1广播报文,可以接收RIP-1广播报文、RIP-1单播报文。
l 当接口运行的RIP版本为RIP-2且工作在组播方式时,发送RIP-2组播报文,可以接收RIP-2单播报文、RIP-2广播报文、RIP-2组播报文。
l 当接口运行的RIP版本为RIP-2且工作在广播方式时,发送RIP-2广播报文,可以接收RIP-1广播报文、RIP-1单播报文、RIP-2广播报文、RIP-2组播报文、RIP-2单播报文。
表2-3 配置RIP版本号
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置全局RIP版本 |
version { 1 | 2 } |
可选 缺省情况下,如果接口配置了RIP版本,以接口配置的为准;如果接口没有配置,接口只能发送RIP-1广播报文,可以接收RIP-1广播报文、RIP-1单播报文、RIP-2广播报文、RIP-2组播报文、RIP-2单播报文 |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口运行的RIP版本 |
rip version { 1 | 2 [ broadcast | multicast ] } |
可选 |
在实际应用中,有时候需要对RIP路由信息进行更为精确的控制以满足复杂网络环境的需要,在配置RIP路由特性之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达
l 配置RIP基本功能
附加度量值是在RIP路由原来度量值的基础上所增加的度量值,包括发送附加度量值和接收附加度量值。发送附加度量值不会改变路由表中的路由度量值,仅当接口发送RIP路由信息时才会添加到发送路由上;接收附加度量值会影响接收到的路由度量值,接口接收到一条合法的RIP路由时,在将其加入路由表前会把度量值附加到该路由上。
表2-4 配置接口附加度量值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口接收RIP路由时的附加度量值 |
rip metricin [ route-policy route-policy-name ] value |
可选 缺省情况下,接口接收RIP路由时的附加度量值为0 |
配置接口发送RIP路由时的附加度量值 |
rip metricout [ route-policy route-policy-name ] value |
可选 缺省情况下,接口发送RIP路由时的附加路由度量值为1 |
路由聚合是指将同一自然网段内的不同子网的路由聚合成一条自然掩码的路由向外(其它网段)发送,目的是为了减小路由表的规模,从而减少网络上的流量。
RIP-2支持路由聚合。
需要注意的是,当需要将所有子网路由广播出去时,需要关闭RIP-2的自动路由聚合功能。
表2-5 配置RIP-2自动路由聚合功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
使能RIP-2自动路由聚合功能 |
summary |
可选 缺省情况下,RIP-2自动路由聚合功能处于使能状态 |
用户可在指定接口配置RIP-2发布一条聚合路由。
表2-6 配置发布一条聚合路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
关闭RIP-2自动路由聚合功能 |
undo summary |
必选 缺省情况下,RIP-2自动路由聚合功能处于使能状态 |
退至系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置发布一条聚合路由 |
rip summary-address ip-address { mask | mask-length } |
必选 |
& 说明:
在接口配置发布一条聚合路由时必须关闭RIP-2的自动路由聚合功能。
在某些特殊情况下,路由器会收到大量来自同一网段的主机路由。这些路由对于路由寻址没有多少作用,却占用了大量的资源;此时可配置RIP禁止接收主机路由,以节省网络资源。
表2-7 禁止RIP接收主机路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
禁止RIP接收主机路由 |
undo host-route |
必选 缺省情况下,允许RIP接收主机路由 |
& 说明:
禁止接收主机路由仅对RIPv2有效,对RIPv1无效。
用户可以用指定度量值向RIP邻居发布一条缺省路由。
表2-8 配置RIP发布缺省路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置RIP发布缺省路由 |
default-route originate cost value |
必选 缺省情况下,不向RIP邻居发送缺省路由 |
& 说明:
配置发布缺省路由的RIP路由器不接收来自RIP邻居的缺省路由。
路由器提供路由信息过滤功能,通过指定访问控制列表和地址前缀列表,可以配置入口或出口过滤策略,对接收和发布的路由进行过滤。在接收路由时,还可以指定只接收来自某个邻居的RIP报文。
表2-9 配置RIP对接收/发布的路由进行过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
对接收的路由信息进行过滤 |
filter-policy { acl-number | gateway ip-prefix-name | ip-prefix ip-prefix-name [ gateway ip-prefix-name ] } import [ interface-type interface-number ] |
必选 缺省情况下,RIP不对接收的路由信息进行过滤 |
对发布的路由信息进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ protocol [ process-id ] | interface-type interface-number ] |
必选 缺省情况下,RIP不对发布的路由信息进行过滤 |
& 说明:
l filter-policy import命令对从邻居收到的RIP路由进行过滤,没有通过过滤的路由将不被加入路由表,也不向邻居发布该路由。
l filter-policy export命令对本机所有路由的发布进行过滤,包括使用import-route引入的路由和从邻居学到的RIP路由。
在路由器中可能会运行多个IGP路由协议,如果想让RIP路由具有比从其它路由协议学来的路由更高的优先级,需要配置小的优先级值。优先级的高低将最后决定IP路由表中的路由是通过哪种路由算法获取的最佳路由。
表2-10 配置RIP协议优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置RIP路由的优先级 |
preference [ route-policy route-policy-name ] value |
可选 缺省情况下,RIP路由的优先级为100 |
表2-11 配置RIP引入外部路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置引入路由的缺省度量值 |
default cost value |
可选 缺省情况下,引入路由的缺省度量值为0 |
引入外部路由 |
import-route protocol [ process-id ] [ allow-ibgp ] [ cost cost | route-policy route-policy-name | tag tag ] * |
必选 缺省情况下,RIP不引入其它路由 |
在某些特殊的网络环境中,需要对RIP网络的性能进行调整和优化,在调整RIP之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达
l 配置RIP基本功能
表2-12 配置RIP定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置RIP定时器的值 |
timers { garbage-collect garbage-collect-value | suppress suppress-value | timeout timeout-value | update update-value } * |
可选 缺省情况下: l Update定时器的值为30秒 l Timeout定时器的值为180秒 l Suppress定时器的值为120秒 l Garbage-collect定时器的值为120秒 |
& 说明:
在配置RIP定时器时需要注意,定时器值的调整应考虑网络的性能,并在所有运行RIP的路由器上进行统一配置,以免增加不必要的网络流量或引起网络路由震荡。
& 说明:
如果同时配置了水平分割和毒性逆转,则只有毒性逆转功能生效。
配置水平分割可以使得从一个接口学到的路由不能通过此接口向外发布,用于避免相邻路由器间的路由环路。
表2-13 配置水平分割
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能水平分割功能 |
rip split-horizon |
可选 缺省情况下,水平分割功能处于使能状态 |
& 说明:
在点到点链路上关闭水平分割功能是无效的。
配置毒性逆转可以使得从一个接口学到的路由还可以从这个接口向外发布,但这些路由的度量值已设置为16,即不可达。
表2-14 配置毒性逆转
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能毒性逆转功能 |
rip poison-reverse |
必选 缺省情况下,毒性逆转功能处于关闭状态 |
表2-15 配置最大等价路由条数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置RIP最大等价路由条数 |
maximum load-balancing number |
可选 缺省情况下,最大等价路由条数为4 |
RIP-1报文中的有些字段必须为零,称之为零域。用户可配置RIP-1在接收报文时对零域进行检查,零域值不为零的RIP-1报文将不被处理。如果用户能确保所有报文都是可信任的,则可以不进行该项检查,以节省CPU处理时间。
表2-16 配置RIP-1报文的零域检查
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
使能对RIP-1报文的零域检查功能 |
checkzero |
可选 缺省情况下,对RIP-1报文的零域检查功能处于使能状态 |
通过配置对接收到的RIP路由更新报文进行源IP地址检查:
l 对于在接口上接收的报文,RIP将检查该报文源地址和接口的IP地址是否处于同一网段,如果不在同一网段则丢弃该报文。
l 对于串口上接收的报文,RIP检查该报文的源地址是否是对端接口的IP地址,如果不是则丢弃该报文。
表2-17 配置源地址检查
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
使能对接收到的RIP路由更新报文进行源IP地址检查功能 |
validate-source-address |
可选 缺省情况下,对接收到的RIP路由更新报文进行源IP地址检查功能处于使能状态 |
& 说明:
当存在RIP非直连的邻居时,应该取消源地址检查。
RIP-2支持两种认证方式:明文认证和MD5密文认证。
明文认证不能提供安全保障,未加密的认证字随报文一同传送,所以明文认证不能用于安全性要求较高的情况。
表2-18 配置RIP-2报文的认证方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置RIP-2报文的认证方式 |
rip authentication-mode { md5 { rfc2082 key-string key-id | rfc2453 key-string } | simple password } |
必选 |
通常情况下,RIP使用广播或组播地址发送报文,如果在不支持广播或组播报文的链路上运行RIP,则必须手工指定RIP的邻居;需要注意的是,当指定的邻居和本地路由器非直接连接,则必须取消对更新报文的源地址进行检查。
表2-19 配置RIP邻居
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置RIP邻居 |
peer ip-address |
必选 缺省情况下,RIP不向任何定点地址发送更新报文 |
取消对接收到的RIP路由更新报文进行源IP地址检查操作 |
undo validate-source-address |
必选 缺省情况下,对接收到的RIP路由更新报文进行源IP地址检查 |
& 说明:
需要注意的是,当RIP邻居与当前设备直连时不推荐使peer ip-address命令,因为这样可能会造成对端同时收到同一路由信息的组播(或广播)和单播两种形式的报文。
在完成上述配置后,在任意视图下执行display命令可以显示配置后RIP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除指定RIP进程维护的计数器的统计信息。
表2-20 RIP显示和维护
命令 |
|
显示RIP的当前运行状态及配置信息 |
display rip [ process-id ] |
显示RIP发布数据库的所有激活路由 |
display rip process-id database |
显示RIP的接口信息 |
display rip process-id interface [ interface-type interface-number ] |
显示指定RIP进程的路由信息 |
display rip process-id route [ statistics | ip-address { mask | mask-length } | peer ip-address ] |
清除指定RIP进程维护的计数器的统计信息 |
reset rip process-id statistics |
如图2-4所示,要求在Switch A和Switch B的所有接口上使能RIP,并使用RIP-2进行网络互连。
图2-4 配置RIP的版本
(1) 配置各接口的IP地址(略)
(2) 配置RIP基本功能
# 配置Switch A。
<SwitchA> system-view
[SwitchA] rip
[SwitchA-rip-1] network 192.168.1.0
[SwitchA-rip-1] network 172.16.0.0
[SwitchA-rip-1] network 172.17.0.0
[SwitchA-rip-1] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] rip
[SwitchB-rip-1] network 192.168.1.0
[SwitchB-rip-1] network 10.0.0.0
[SwitchB-rip-1] quit
# 查看Switch A的RIP路由表。
[SwitchA] display rip 1 route
Route Flags: R - RIP, T - TRIP
P - Permanent, A - Aging, S - Suppressed, G - Garbage-collect
--------------------------------------------------------------------------
Peer 192.168.1.2 on Vlan-interface100
Destination/Mask Nexthop Cost Tag Flags Sec
10.0.0.0/8 192.168.1.2 1 0 RA 11
从路由表中可以看出,RIP-1发布的路由信息使用的是自然掩码。
(3) 配置RIP的版本
# 在Switch A上配置RIP-2。
[SwitchA] rip
[SwitchA-rip-1] version 2
[SwitchA-rip-1] undo summary
# 在Switch B上配置RIP-2。
[SwitchB] rip
[SwitchB-rip-1] version 2
[SwitchB-rip-1] undo summary
# 查看Switch A的RIP路由表。
[SwitchA] display rip 1 route
Route Flags: R - RIP, T - TRIP
P - Permanent, A - Aging, S - Suppressed, G - Garbage-collect
--------------------------------------------------------------------------
Peer 192.168.1.2 on Vlan-interface100
Destination/Mask Nexthop Cost Tag Flags Sec
10.2.1.0/24 192.168.1.2 1 0 RA 16
10.1.1.0/24 192.168.1.2 1 0 RA 16
从路由表中可以看出,RIP-2发布的路由中带有更为精确的子网掩码信息。
& 说明:
由于RIP路由信息的老化时间较长,所以在配置RIP-2版本后的一段时间里,路由表中可能还会存在RIP-1的路由信息。
在链路正常的情况下收不到邻居的RIP更新报文。
RIP启动后,必须使用network命令使能相应的接口。如果对接口的工作状态单独进行了配置,应确认没有抑制相关接口或禁止其收发RIP报文。
如果在对端路由器上配置的是组播方式发送RIP报文,在本地路由器上也应该配置为组播方式。
(1) 执行display current-configuration命令,检查RIP的配置。
(2) 执行display rip命令,检查是否抑制了相关RIP接口。
在链路正常的情况下,运行RIP的网络发生路由振荡,查看路由表时发现部分路由时有时无。
在RIP网络中,应确保全网定时器的配置一致,且各定时器之间的关系合理,如Timeout定时器的值应大于Update定时器的值。
(1) 使用display rip命令查看RIP定时器的配置
(2) 使用timers命令将全网的定时器配置一致
& 说明:
本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。为提高可读性,在手册的描述中将不另行说明。
OSPF(Open Shortest Path First,开放最短路径优先)是IETF组织开发的一个基于链路状态的内部网关协议。目前针对IPv4协议使用的是OSPF Version 2(RFC 2328)。
& 说明:
本章若没有特别说明,下文中所提到的OSPF均指OSPFv2。
OSPF具有如下特点:
l 适应范围广——支持各种规模的网络,最多可支持几百台路由器。
l 快速收敛——在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
l 无自环——由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
l 区域划分——允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。
l 等价路由——支持到同一目的地址的多条等价路由。
l 路由分级——使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
l 支持验证——支持基于接口的报文验证,以保证报文交互和路由计算的安全性。
l 组播发送——在某些类型的链路上以组播地址发送协议报文,减少对其他设备的干扰。
一组使用相同路由协议交换路由信息的路由器,缩写为AS。
OSPF协议路由的计算过程可简单描述如下:
l 每台OSPF路由器根据自己周围的网络拓扑结构生成LSA(Link State Advertisement,链路状态通告),并通过更新报文将LSA发送给网络中的其它OSPF路由器。
l 每台OSPF路由器都会收集其它路由器通告的LSA,所有的LSA放在一起便组成了LSDB(Link State Database,链路状态数据库)。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。
l OSPF路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。各个路由器得到的有向图是完全相同的。
l 每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。
一台路由器如果要运行OSPF协议,则必须存在RID(Router ID,路由器ID)。RID是一个32比特无符号整数,可以在一个自治系统中唯一的标识一台路由器。
RID可以手工配置,也可以自动生成;如果没有通过命令指定RID,将按照如下顺序自动生成一个RID:
l 如果当前设备配置了Loopback接口,将选取所有Loopback接口上数值最大的IP地址作为RID;
l 如果当前设备没有配置Loopback接口,将选取它所有已经配置IP地址且链路有效的接口上数值最大的IP地址作为RID。
OSPF有五种类型的协议报文:
l Hello报文:周期性发送,用来发现和维持OSPF邻居关系。内容包括一些定时器的数值、DR(Designated Router,指定路由器)、BDR(Backup Designated Router,备份指定路由器)以及自己已知的邻居。
l DD(Database Description,数据库描述)报文:描述了本地LSDB中每一条LSA的摘要信息,用于两台路由器进行数据库同步。
l LSR(Link State Request,链路状态请求)报文:向对方请求所需的LSA。两台路由器互相交换DD报文之后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。
l LSU(Link State Update,链路状态更新)报文:向对方发送其所需要的LSA。
l LSAck(Link State Acknowledgment,链路状态确认)报文:用来对收到的LSA进行确认。内容是需要确认的LSA的Header(一个报文可对多个LSA进行确认)。
OSPF中对链路状态信息的描述都是封装在LSA中发布出去,常用的LSA有以下几种类型:
l Router LSA(Type1):由每个路由器产生,描述路由器的链路状态和开销,在其始发的区域内传播。
l Network LSA(Type2):由DR产生,描述本网段所有路由器的链路状态,在其始发的区域内传播。
l Network Summary LSA(Type3):由ABR(Area Border Router,区域边界路由器)产生,描述区域内某个网段的路由,并通告给其他区域。
l ASBR Summary LSA(Type4):由ABR产生,描述到ASBR(Autonomous System Boundary Router,自治系统边界路由器)的路由,通告给相关区域。
l AS External LSA(Type5):由ASBR产生,描述到AS(Autonomous System,自治系统)外部的路由,通告到所有的区域(除了Stub区域和NSSA区域)。
l NSSA External LSA(Type7):由NSSA(Not-So-Stubby Area)区域内的ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。
l Opaque LSA:是一个被提议的LSA类别,由标准的LSA头部后面跟随特殊应用的信息组成,可以直接由OSPF协议使用,或者由其它应用分发信息到整个OSPF域间接使用。Opaque LSA分为Type 9、Type10、Type11三种类型,泛洪区域不同;其中,Type 9的Opaque LSA仅在本地链路范围进行泛洪,Type 10的Opaque LSA仅在本地区域范围进行泛洪,Type 11的LSA可以在一个自治系统范围进行泛洪。
在OSPF中,邻居(Neighbor)和邻接(Adjacency)是两个不同的概念。
OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文。收到Hello报文的OSPF路由器会检查报文中所定义的参数,如果双方一致就会形成邻居关系。
形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD报文,交换LSA并达到LSDB的同步之后,才形成真正意义上的邻接关系。
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,路由器数量的增多会导致LSDB非常庞大,占用大量的存储空间,并使得运行SPF算法的复杂度增加,导致CPU负担很重。
在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“振荡”之中,造成网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。
OSPF协议通过将自治系统划分成不同的区域(Area)来解决上述问题。区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。如图3-1所示。
区域的边界是路由器,而不是链路。一个路由器可以属于不同的区域,但是一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。划分区域后,可以在区域边界路由器上进行路由聚合,以减少通告到其他区域的LSA数量,还可以将网络拓扑变化带来的影响最小化。
OSPF路由器根据在AS中的不同位置,可以分为以下四类:
(1) 区域内路由器(Internal Router)
该类路由器的所有接口都属于同一个OSPF区域。
(2) 区域边界路由器ABR(Area Border Router)
该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域(骨干区域的介绍请参见下一小节)。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
(3) 骨干路由器(Backbone Router)
该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。
(4) 自治系统边界路由器ASBR
与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它有可能是区域内路由器,也有可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
图3-2 OSPF路由器的类型
(1) 骨干区域(Backbone Area)
OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号(Area ID)是0,通常被称为骨干区域。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此,OSPF有两个规定:
l 所有非骨干区域必须与骨干区域保持连通;
l 骨干区域自身也必须保持连通。
但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通过配置OSPF虚连接(Virtual Link)予以解决。
(2) 虚连接(Virtual Link)
虚连接是指在两台ABR之间通过一个非骨干区域而建立的一条逻辑上的连接通道。它的两端必须是ABR,而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区(Transit Area)。
在图3-3中,Area2与骨干区域之间没有直接相连的物理链路,但可以在ABR上配置虚连接,使Area2通过一条逻辑链路与骨干区域保持连通。
虚连接的另外一个应用是提供冗余的备份链路,当骨干区域因链路故障不能保持连通时,通过虚连接仍然可以保证骨干区域在逻辑上的连通性。如图3-4所示。
虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,在这个连接上,和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。
两台ABR之间直接传递OSPF报文信息,它们之间的OSPF路由器只是起到一个转发报文的作用。由于协议报文的目的地址不是中间这些路由器,所以这些报文对于它们而言是透明的,只是当作普通的IP报文来转发。
Stub区域是一些特定的区域,Stub区域的ABR不允许注入Type5 LSA,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。
为了进一步减少Stub区域中路由器的路由表规模以及路由信息传递的数量,可以将该区域配置为Totally Stub(完全Stub)区域,该区域的ABR不会将区域间的路由信息和外部路由信息传递到本区域。
(Totally) Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,(Totally) Stub区域位于自治系统的边界。
为保证到本自治系统的其他区域或者自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由,并发布给本区域中的其他非ABR路由器。
配置(Totally) Stub区域时需要注意下列几点:
l 骨干区域不能配置成(Totally) Stub区域。
l 如果要将一个区域配置成(Totally) Stub区域,则该区域中的所有路由器必须都要配置stub [ no-summary ]命令。
l (Totally) Stub区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
l 虚连接不能穿过(Totally) Stub区域。
NSSA(Not-So-Stubby Area)区域是Stub区域的变形,与Stub区域有许多相似的地方。NSSA区域也不允许Type5 LSA注入,但可以允许Type7 LSA注入。Type7 LSA由NSSA区域的ASBR产生,在NSSA区域内传播。当Type7 LSA到达NSSA的ABR时,由ABR将Type7 LSA转换成Type5 LSA,传播到其他区域。
如图3-5所示,运行OSPF协议的自治系统包括3个区域:区域1、区域2和区域0,另外两个自治系统运行RIP协议。区域1被定义为NSSA区域,区域1接收的RIP路由传播到NSSA ASBR后,由NSSA ASBR产生Type7 LSA在区域1内传播,当Type7 LSA到达NSSA ABR后,转换成Type5 LSA传播到区域0和区域2。
另一方面,运行RIP的自治系统的RIP路由通过区域2的ASBR产生Type5 LSA在OSPF自治系统中传播。但由于区域1是NSSA区域,所以Type5 LSA不会到达区域1。
与Stub区域一样,虚连接也不能穿过NSSA区域。
路由聚合是指ABR或ASBR将具有相同前缀的路由信息聚合,只发布一条路由到其它区域。
AS被划分成不同的区域后,每一个区域通过OSPF边界路由器(ABR)相连,区域间可以通过路由聚合来减少路由信息,减小路由表的规模,提高路由器的运算速度。
ABR在计算出一个区域的区域内路由之后,根据聚合相关设置,将其中多条OSPF路由聚合成一条发送到区域之外。
例如,图3-6中,Area 1内有三条区域内路由19.1.1.0/24,19.1.2.0/24,19.1.3.0/24,如果此时在Router A上配置了路由聚合,将三条路由聚合成一条19.1.0.0/16,则Router A就只生成一条聚合后的LSA,并发布给Area0中的其他路由器。
OSPF有两类聚合:
(1) ABR聚合
ABR向其它区域发送路由信息时,以网段为单位生成Type3 LSA。如果该区域中存在一些连续的网段,则可以将这些连续的网段聚合成一个网段。这样ABR只发送一条聚合后的LSA,所有属于聚合网段范围的LSA将不再会被单独发送出去,这样可减少其它区域中LSDB的规模。
(2) ASBR聚合
配置引入路由聚合后,如果本地路由器是自治系统边界路由器ASBR,将对引入的聚合地址范围内的Type5 LSA进行聚合。当配置了NSSA区域时,还要对引入的聚合地址范围内的Type7 LSA进行聚合。
如果本地路由器是ABR,则对由Type7 LSA转化成的Type5 LSA进行聚合处理。
OSPF将路由分为四类,按照优先级从高到低的顺序依次为:
l 区域内路由(Intra Area)
l 区域间路由(Inter Area)
l 第一类外部路由(Type1 External)
l 第二类外部路由(Type2 External)
区域内和区域间路由描述的是AS内部的网络结构,外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPF将引入的AS外部路由分为两类:Type1和Type2。
第一类外部路由是指接收的是IGP(Interior Gateway Protocol,内部网关协议)路由(例如静态路由和RIP路由)。由于这类路由的可信程度较高,并且和OSPF自身路由的开销具有可比性,所以到第一类外部路由的开销等于本路由器到相应的ASBR的开销与ASBR到该路由目的地址的开销之和。
第二类外部路由是指接收的是EGP(Exterior Gateway Protocol,外部网关协议)路由。由于这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以计算路由开销时将主要考虑前者,即到第二类外部路由的开销等于ASBR到该路由目的地址的开销。如果计算出开销值相等的两条路由,再考虑本路由器到相应的ASBR的开销。
OSPF根据链路层协议类型将网络分为下列四种类型:
l 广播(Broadcast)类型:当链路层协议是Ethernet、FDDI时,OSPF缺省认为网络类型是Broadcast。在该类型的网络中,通常以组播形式(224.0.0.5和224.0.0.6)发送协议报文。
l NBMA(Non-Broadcast Multi-Access,非广播多点可达网络)类型:当链路层协议是帧中继、ATM或X.25时,OSPF缺省认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文。
l P2MP(Point-to-MultiPoint,点到多点)类型:没有一种链路层协议会被缺省的认为是P2MP类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将NBMA改为点到多点的网络。在该类型的网络中,缺省情况下,以组播形式(224.0.0.5)发送协议报文。
l P2P(Point-to-Point,点到点)类型:当链路层协议是PPP、HDLC时,OSPF缺省认为网络类型是P2P。在该类型的网络中,以组播形式(224.0.0.5)发送协议报文。
NBMA网络是指非广播、多点可达的网络,比较典型的有ATM和帧中继网络。
对于接口的网络类型为NBMA的网络需要进行一些特殊的配置。由于无法通过广播Hello报文的形式发现相邻路由器,必须手工为该接口指定相邻路由器的IP地址,以及该相邻路由器是否有DR选举权等。
NBMA网络必须是全连通的,即网络中任意两台路由器之间都必须有一条虚电路直接可达。如果部分路由器之间没有直接可达的链路时,应将接口配置成P2MP类型。如果路由器在NBMA网络中只有一个对端,也可将接口类型配置为P2P类型。
NBMA与P2MP网络之间的区别如下:
l NBMA网络是指那些全连通的、非广播、多点可达网络。而P2MP网络,则并不需要一定是全连通的。
l 在NBMA网络中需要选举DR与BDR,而在P2MP网络中没有DR与BDR。
l NBMA是一种缺省的网络类型,而P2MP网络必须是由其它的网络强制更改的。最常见的做法是将NBMA网络改为P2MP网络。
l NBMA网络采用单播发送报文,需要手工配置邻居。P2MP网络采用组播方式发送报文。
在广播网和NBMA网络中,任意两台路由器之间都要交换路由信息。如果网络中有n台路由器,则需要建立n(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF协议定义了指定路由器DR(Designated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态发送出去。
如果DR由于某种故障而失效,则网络中的路由器必须重新选举DR,再与新的DR同步。这需要较长的时间,在这段时间内,路由的计算是不正确的。为了能够缩短这个过程,OSPF提出了BDR(Backup Designated Router,备份指定路由器)的概念。
BDR实际上是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR。由于不需要重新选举,并且邻接关系事先已建立,所以这个过程是非常短暂的。当然这时还需要再重新选举出一个新的BDR,虽然一样需要较长的时间,但并不会影响路由的计算。
运行OSPF进程的网络中,既不是DR也不是BDR的路由器为DR Other。DR Other
仅与DR和BDR之间建立邻接关系,DR Other之间不交换任何路由信息。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量,同时减少网络流量,节约了带宽资源。
如图3-7所示,用实线代表以太网物理连接,虚线代表建立的邻接关系。可以看到,采用DR/BDR机制后,5台路由器之间只需要建立7个邻接关系就可以了。
图3-7 DR和BDR示意图
DR和BDR是由同一网段中所有的路由器根据路由器优先级、Router ID通过HELLO报文选举出来的,只有优先级大于0的路由器才具有选举资格。
进行DR/BDR选举时每台路由器将自己选出的DR写入Hello报文中,发给网段上的每台运行OSPF协议的路由器。当处于同一网段的两台路由器同时宣布自己是DR时,路由器优先级高者胜出。如果优先级相等,则Router ID大者胜出。如果一台路由器的优先级为0,则它不会被选举为DR或BDR。
需要注意的是:
l 只有在广播或NBMA类型接口才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。
l DR是某个网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DR Other。
l 路由器的优先级可以影响DR/BDR的选举过程,但是当DR/BDR已经选举完毕,就算一台具有更高优先级的路由器变为有效,也不会替换该网段中已经存在的DR/BDR成为新的DR/BDR。
l DR并不一定就是路由器优先级最高的路由器接口;同理,BDR也并不一定就是路由器优先级次高的路由器接口。
OSPF报文直接封装为IP报文协议报文,协议号为89。一个比较完整的OSPF报文(以LSU报文为例)结构如图3-8所示。
OSPF有五种报文类型,它们有相同的报文头。如图3-9所示。
主要字段的解释如下:
l Version:OSPF的版本号。对于OSPFv2来说,其值为2。
l Type:OSPF报文的类型。数值从1到5,分别对应Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。
l Packet length:OSPF报文的总长度,包括报文头在内,单位为字节。
l Router ID:始发该LSA的路由器的ID。
l Area ID:始发LSA的路由器所在的区域ID。
l Checksum:对整个报文的校验和。
l AuType:验证类型。可分为不验证、简单(明文)口令验证和MD5验证,其值分别为0、1、2。
l Authentication:其数值根据验证类型而定。当验证类型为0时未作定义,为1时此字段为密码信息,类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。
& 说明:
MD5验证数据添加在OSPF报文后面,不包含在Authenticaiton字段中。
最常用的一种报文,周期性的发送给邻居路由器用来维持邻居关系以及DR/BDR的选举,内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。Hello报文格式如图3-10所示。
主要字段解释如下:
l Network Mask:发送Hello报文的接口所在网络的掩码,如果相邻两台路由器的网络掩码不同,则不能建立邻居关系。
l HelloInterval:发送Hello报文的时间间隔。如果相邻两台路由器的Hello间隔时间不同,则不能建立邻居关系。
l Rtr Pri:路由器优先级。如果设置为0,则该路由器接口不能成为DR/BDR。
l RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。如果相邻两台路由器的失效时间不同,则不能建立邻居关系。
l Designated Router:指定路由器的接口的IP地址。
l Backup Designated Router:备份指定路由器的接口的IP地址。
l Neighbor:邻居路由器的Router ID。
两台路由器进行数据库同步时,用DD报文来描述自己的LSDB,内容包括LSDB中每一条LSA的摘要(摘要是指LSA的Header,通过该Header可以唯一标识一条LSA)。这样做是为了减少路由器之间传递信息的量,因为LSA的Header只占一条LSA的整个数据量的一小部分,根据Header,对端路由器就可以判断出是否已有这条LSA。
DD报文格式如图3-11所示。
主要字段的解释如下:
l Interface MTU:在不分片的情况下,此接口最大可发出的IP报文长度。
l I(Initial):当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。
l M(More):当连续发送多个DD报文时,如果这是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。
l MS(Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主(Master)从(Slave)关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。
l DD Sequence Number:DD报文序列号,由Master方规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。主从双方利用序列号来保证DD报文传输的可靠性和完整性。
两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。LSR报文格式如图3-12所示。
主要字段解释如下:
l LS type:LSA的类型号。例如Type1表示Router LSA。
l Link State ID:链路状态标识,根据LSA的类型而定。
l Advertising Router:产生此LSA的路由器的Router ID。
LSU报文用来向对端路由器发送其所需要的LSA,内容是多条LSA(全部内容)的集合。LSU报文格式如图3-13所示。
主要字段解释如下:
Number of LSAs:该报文包含的LSA的数量。
LSAs:该报文包含的所有LSA。
LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header。一个LSAck报文可对多个LSA进行确认。报文格式如图3-14所示。
主要字段解释如下:
LSA Headers:该报文包含的LSA头部。
所有的LSA都有相同的报文头,其格式如图3-15所示。
主要字段的解释如下:
l LS age:LSA产生后所经过的时间,以秒为单位。LSA在本路由器的链路状态数据库(LSDB)中会随时间老化(每秒钟加1),但在网络的传输过程中却不会。
l LS type:LSA的类型。
l Link State ID:具体数值根据LSA的类型而定。
l Advertising Router:始发LSA的路由器的ID。
l LS sequence number:LSA的序列号,其他路由器根据这个值可以判断哪个LSA是最新的。
l LS checksum:除了LS age字段外,关于LSA的全部信息的校验和。
l length:LSA的总长度,包括LSA Header,以字节为单位。
(1) Router LSA
主要字段的解释如下:
l Link State ID:产生此LSA的路由器的Router ID。
l V(Virtual Link):如果产生此LSA的路由器是虚连接的端点,则置为1。
l E(External):如果产生此LSA的路由器是ASBR,则置为1。
l B(Border):如果产生此LSA的路由器是ABR,则置为1。
l # links:LSA中所描述的链路信息的数量,包括路由器上处于某区域中的所有链路和接口。
l Link ID:链路标识,具体的数值根据链路类型而定。
l Link Data:链路数据,具体的数值根据链路类型而定。
l Type:链路类型,取值为1表示通过点对点链路与另一路由器相连,取值为2表示连接到传送网络,取值为3表示连接到Stub网络,取值为4表示虚连接。
l #TOS:描述链路的不同方式的数量。
l metric:链路的开销。
l TOS:服务类型。
l TOS metric:指定服务类型的链路的开销。
(2) Network LSA
Network LSA由广播网或NBMA网络中的DR发出,LSA中记录了这一网段上所有路由器的Router ID。
主要字段的解释如下:
l Link State ID:DR的IP地址。
l Network Mask:广播网或NBMA网络地址的掩码。
l Attached Router:连接在同一个网段上的所有与DR形成了完全邻接关系的路由器的Router ID,也包括DR自身的Router ID。
(3) Summary LSA
Network Summary LSA(Type3 LSA)和ASBR Summary LSA(Type4 LSA)除Link State ID字段有所不同外,有着相同的格式,它们都是由ABR产生。
主要字段的解释如下:
l Link State ID:对于Type3 LSA来说,它是所通告的区域外的网络地址;对于Type4来说,它是所通告区域外的ASBR的Router ID。
l Network Mask:Type3 LSA的网络地址掩码。对于Type4 LSA来说没有意义,设置为0.0.0.0。
l metric:到目的地址的路由开销。
& 说明:
Type3的LSA可以用来通告缺省路由,此时Link State ID和Network Mask都设置为0.0.0.0。
(4) AS External LSA
由ASBR产生,描述到AS外部的路由信息。
主要字段的解释如下:
l Link State ID:所要通告的其他外部AS的目的地址,如果通告的是一条缺省路由,那么链路状态ID(Link State ID)和网络掩码(Network Mask)字段都将设置为0.0.0.0。
l Network Mask:所通告的目的地址的掩码。
l E(External Metric):外部度量值的类型。如果是第2类外部路由就设置为1,如果是第1类外部路由则设置为0。关于外部路由类型的详细描述请参见3.1.2 7. 路由类型部分。
l metirc:路由开销。
l Forwarding Address:到所通告的目的地址的报文将被转发到的地址。
l External Route Tag:添加到外部路由上的标记。OSPF本身并不使用这个字段,它可以用来对外部路由进行管理。
(5) NSSA External LSA
由NSSA区域内的ASBR产生,且只能在NSSA区域内传播。其格式与AS External LSA相同,如图3-20所示。
OSPF支持多进程,在同一台路由器上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。支持多个OSPF进程公用一个RID。
路由器的一个接口只能属于某一个OSPF进程。
OSPF支持报文验证功能,只有通过验证的OSPF报文才能接收,否则将不能正常建立邻居关系。
一个区域中所有的接口的验证类型(不支持验证、支持明文验证或者支持MD5密文验证)必须一致。一个网段中所有接口的验证字口令必须一致。
& 说明:
有关GR(Graceful Restart,平滑重启)的原理介绍请参见 “路由-GR概述”。
基于OSPF的GR Restarter进行协议重启后,为了与其OSPF邻居重新同步链路状态数据库,它必须完成下列两项任务:
l 在不改变邻接关系的前提下,重新获取网络中的有效OSPF邻居信息;
l 重新获取网络链路状态数据库的内容。
在OSPF协议重启前,GR Restarter产生Grace-LSA协商GR能力。在重启过程中,GR Helper继续宣告与GR Restarter的邻接状态不变。
OSPF协议重启完毕后,GR Restarter会立即向其邻接的GR Helper发送一个OSPF GR信号。这样,OSPF邻居就不会复位与其的邻居关系。在收到其OSPF邻居的响应后,GR Restarter会重新恢复与其的邻居关系列表。
邻居关系重新建立后,GR Restarter与其所有具备GR感知能力的OSPF邻居之间同步数据库,并交换路由信息。交换完成后,GR Restarter根据新的路由转发信息更新路由表和转发表,删除失效的路由,完成OSPF协议收敛。
与OSPF相关的协议规范有:
l RFC 1765:OSPF Database Overflow
l RFC 2328:OSPF Version 2
l RFC 3101:OSPF Not-So-Stubby Area (NSSA) Option
l RFC 3137:OSPF Stub Router Advertisement
表3-1 OSPF配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置OSPF基本功能 |
必选 |
||
配置OSPF的区域特性 |
可选 |
||
配置OSPF的网络类型 |
配置OSPF接口的网络类型 |
可选 |
|
配置NBMA网络的邻居 |
可选 |
||
配置OSPF接口的路由器优先级 |
可选 |
||
配置OSPF的路由信息控制 |
配置OSPF路由聚合 |
可选 |
|
配置OSPF对接收的路由进行过滤 |
可选 |
||
配置对Type-3 LSA进行过滤 |
可选 |
||
配置OSPF的链路开销 |
可选 |
||
配置OSPF支持的路由最大数目 |
可选 |
||
配置OSPF最大等价路由条数 |
可选 |
||
配置OSPF的协议优先级 |
可选 |
||
配置OSPF引入外部路由 |
可选 |
||
配置OSPF网络调整优化 |
配置OSPF报文定时器 |
可选 |
|
配置接口传送LSA的延迟时间 |
可选 |
||
配置SPF计算时间间隔 |
可选 |
||
配置LSA重复到达的最小时间间隔 |
可选 |
||
配置LSA重新生成的时间间隔 |
可选 |
||
禁止接口发送OSPF报文 |
可选 |
||
配置Stub路由器 |
可选 |
||
配置OSPF验证 |
可选 |
||
配置DD报文中的MTU |
可选 |
||
配置LSDB中External LSA的最大数量 |
可选 |
||
配置兼容RFC1583的外部路由选择规则 |
可选 |
||
配置邻接状态输出 |
可选 |
||
配置OSPF网管功能 |
可选 |
||
使能不透明链路状态发布接收能力 |
可选 |
||
配置OSPF GR |
配置GR Restarter |
可选 |
|
配置GR Helper |
可选 |
||
重启OSPF GR进程 |
可选 |
在OSPF的各项配置任务中,必须先启动OSPF、指定接口和区域号后,才能配置其它的功能特性。
在配置OSPF之前,需配置接口的网络层地址,使各相邻节点网络层可达。
OSPF基本功能配置包括:
l 配置路由器的ID。
为保证OSPF运行的稳定性,在进行网络规划时应该确定路由器ID的划分并建议手工配置。手工配置路由器的ID时,必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个接口的IP地址一致。
l 创建OSPF进程。
目前,系统支持OSPF多进程,当在一台路由器上启动多个OSPF进程时,需要指定不同的进程号。OSPF进程号是本地概念,不影响与其它路由器之间的报文交换。因此,不同的路由器之间,即使进程号不同也可以进行报文交换。
l 配置区域和区域所包含的网段。用户需要首先对自治域内的区域做好规划,然后在路由器上进行相应的配置。
在配置同一区域内的路由器时,大多数的配置数据都应该以区域为基础来统一考虑。错误的配置可能会导致相邻路由器之间无法相互传递信息,甚至导致路由信息的阻塞或者产生路由环。
表3-2 配置OSPF基本功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动OSPF,进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
必选 缺省情况下,系统不运行OSPF |
配置OSPF进程描述 |
description description |
可选 缺省情况下,没有配置进程描述 |
配置OSPF区域,进入OSPF区域视图 |
area area-id |
必选 缺省情况下,没有配置OSPF区域 |
配置区域描述 |
description description |
可选 缺省情况下,没有配置区域描述 |
配置区域所包含的网段并在指定网段的接口上使能OSPF |
network ip-address wildcard-mask |
必选 缺省情况下,接口不属于任何区域且OSPF功能处于关闭状态 |
& 说明:
l OSPF的进程ID是唯一的。
l 一个网段只能属于一个区域,并且必须为每个运行OSPF协议的接口指明属于某一个特定的区域。
l 建议用户为每个OSPF进程配置进程描述信息,帮助识别进程的用途,以便于记忆和管理。
l 建议用户为每个区域配置区域描述信息,帮助识别区域的用途,以便于记忆和管理。
OSPF划分区域后,可以减少网络中LSA的数量,OSPF的扩展性也得以增强。对于位于AS边缘的一些非骨干区域,为了更多的缩减其路由表规模和降低LSA的数量,可以将它们配置为Stub区域。
Stub区域不能引入外部路由,为此又产生了NSSA区域的概念。NSSA区域中允许Type7 LSA(NSSA External LSA)的传播。Type7 LSA由NSSA区域的ASBR产生,当它到达NSSA区域的ABR时,就会转换成Type5 LSA(AS External LSA),并通告到其他区域。
在划分区域之后,非骨干区域之间的OSPF路由更新是通过骨干区域来完成交换的。对此,OSPF要求所有非骨干区域必须与骨干区域保持连通,并且骨干区域自身也要保持连通。
但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通过配置OSPF虚连接予以解决。
在配置OSPF的区域特性之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达
l 配置OSPF基本功能
表3-3 配置OSPF的区域特性
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置当前区域为Stub区域 |
stub [ no-summary ] |
可选 缺省情况下,没有区域被设置为Stub区域 |
配置当前区域为NSSA区域 |
nssa [ default-route-advertise | no-import-route | no-summary ] * |
可选 缺省情况下,没有区域被设置为NSSA区域 |
配置发送到Stub区域或者NSSA区域缺省路由的开销 |
default-cost cost |
可选 缺省情况下,发送到Stub区域或者NSSA区域的缺省路由的开销为1 |
创建并配置虚连接 |
vlink-peer router-id [ hello seconds | retransmit seconds | trans-delay seconds | dead seconds | simple [ plain | cipher ] password | { md5 | hmac-md5 } key-id [ plain | cipher ] password ] * |
可选 为使虚连接生效,在虚连接的两端都需配置此命令,并且两端配置的hello、dead等参数必须一致 |
配置并发布一条主机路由 |
host-advertise ip-address cost |
可选 缺省情况下,OSPF不发布主机路由 |
& 说明:
l 所有连接到Stub区域的路由器必须使用stub命令将该区域配置成Stub属性。
l 所有连接到NSSA区域的路由器必须使用nssa命令将该区域配置成NSSA属性。
l default-cost命令只有在Stub区域的ABR或NSSA区域的ABR/ASBR上配置才能生效。
OSPF根据链路层协议类型将网络分为四种不同的类型。由于NBMA网络必须是全连通的,即网络中任意两台路由器之间都必须有一条虚电路直接可达。但在很多情况下,这个要求无法满足,这时就需要通过命令强制改变网络的类型。
对于NBMA网络,如果部分路由器之间没有直接可达的链路时,应将接口的网络类型配置为P2MP。如果路由器在NBMA网络中只有一个对端,也可将接口类型配置为P2P。
另外,在配置广播网和NBMA网络时,还可以指定各接口的路由器优先级,以此来影响网络中的DR/BDR选择。一般情况下,应该选择性能和可靠性较高的路由器来作为DR和BDR。
在配置OSPF的网络类型之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点之间网络层可达
l 配置OSPF基本功能
表3-4 配置OSPF接口的网络类型
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口的网络类型 |
ospf network-type { broadcast | nbma | p2mp | p2p } |
可选 缺省情况下,接口的网络类型根据物理接口而定 |
& 说明:
l 当用户为接口配置了新的网络类型后,原接口的网络类型自动取消。
l 如果接口配置为广播、NBMA或者P2MP网络类型,只有双方接口在同一网段才能建立邻居关系。
对于接口类型为NBMA的网络需要进行一些特殊的配置。由于无法通过广播Hello报文的形式发现相邻路由器,必须手工指定相邻路由器的IP地址,以及该相邻路由器是否有选举权等。
表3-5 配置NBMA网络的邻居
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置NBMA网络的邻居 |
peer ip-address [ dr-priority dr-priority ] |
必选 |
当网络类型为广播网或NBMA类型时,可以通过配置接口的路由器优先级来影响网络中DR/BDR的选择。
表3-6 配置OSPF接口的路由器优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口的路由器优先级 |
ospf dr-priority priority |
可选 缺省情况下,接口的路由器优先级为1 |
& 说明:
使用ospf dr-priority命令和使用peer命令设置的优先级具有不同的用途:
l ospf dr-priority命令设置的优先级用于实际的DR选举。
l peer命令设置的优先级用于表示邻居是否具有选举权。如果在配置邻居时将优先级指定为0,则本地路由器认为该邻居不具备选举权,不向该邻居发送Hello报文,这种配置可以减少在DR和BDR选举过程中网络上的Hello报文数量。但如果本地路由器是DR或BDR,它也会向优先级为0的邻居发送Hello报文,以建立邻接关系。
通过本节的配置,可以控制OSPF的路由信息的发布与接收,并引入其他协议的路由。
在配置OSPF路由信息控制之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点之间网络层可达
l 配置OSPF基本功能
l 如果对路由信息进行过滤,则需要配置对应的过滤列表
表3-7 配置ABR路由聚合
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置OSPF的ABR路由聚合 |
abr-summary ip-address { mask | mask-length } [ advertise | not-advertise ] [ cost cost ] |
必选 此命令只有在ABR上配置才会有效 缺省情况下,ABR不会对路由进行聚合 |
表3-8 配置ASBR路由聚合
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置OSPF的ASBR路由聚合 |
asbr-summary ip-address { mask | mask-length } [ tag tag | not-advertise | cost cost ] * |
必选 此命令只有在ASBR上配置才会有效 缺省情况下,ASBR不会对引入的路由进行聚合 |
表3-9 配置OSPF对接收的路由进行过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置对接收的路由进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name | gateway ip-prefix-name } import |
必选 缺省情况下,不对接收到的路由信息进行过滤 |
& 说明:
由于OSPF是基于链路状态的动态路由协议,路由信息隐藏在链路状态通告中,所以不能对发布和接收的LSA进行过滤。filter-policy import命令实际上是对OSPF计算出来的路由进行过滤,只有通过过滤的路由才被添加到路由表中。
表3-10 配置对Type-3 LSA进行过滤
操作 |
命令 |
|
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置对Type-3 LSA进行过滤 |
filter { acl-number | ip-prefix ip-prefix-name } { import | export } |
必选 缺省情况下,没有对Type-3 LSA进行过滤 |
表3-11 配置OSPF接口的开销值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置OSPF接口的开销值 |
ospf cost value |
可选 缺省情况下,接口按照当前的带宽自动计算开销。对于交换机的VLAN接口,该值缺省为1 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置带宽参考值 |
bandwidth-reference value |
可选 缺省情况下,带宽参考值为100Mbps |
& 说明:
如果没有在接口视图下显式的配置此接口的开销值,OSPF会根据该接口的带宽自动计算其开销值。计算公式为:接口开销=带宽参考值÷接口带宽,当计算出来的开销值大于65535,开销取最大值65535。
表3-13 配置OSPF支持的路由最大数目
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置OSPF支持的路由最大数目 |
maximum-routes { external | inter | intra } number |
可选 缺省情况下,路由的最大数目为12288条 |
如果到一个目的地有几条开销相同的路径,可以实现等价路由负载分担,IP报文在这几个链路上轮流发送,以提高链路利用率。该配置用以设置OSPF协议的最大等价路由条数。
表3-14 配置OSPF最大等价路由条数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置OSPF最大等价路由条数 |
maximum load-balancing maximum |
可选 缺省情况下,最大等价路由条数为4 |
由于路由器上可能同时运行多个动态路由协议,就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级,在不同协议发现同一条路由时,优先级高的路由将被优先选择。
表3-15 配置OSPF协议的优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置OSPF协议的路由优先级 |
preference [ ase ] [ route-policy route-policy-name ] value |
可选 缺省情况下,OSPF内部路由的优先级为10,OSPF外部路由的优先级为150 |
表3-16 配置OSPF引入外部路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置OSPF引入其它协议的路由 |
import-route protocol [ process-id | allow-ibgp ] [ cost cost | type type | tag tag | route-policy route-policy-name ] * |
必选 缺省情况下,没有引入其他协议的路由信息 |
配置对引入的路由进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ protocol [ process-id ] ] |
可选 缺省情况下,没有对引入的路由信息进行过滤 |
配置OSPF引入缺省路由 |
default-route-advertise [ always | cost cost | type type | route-policy route-policy-name ] * |
可选 缺省情况下,没有引入缺省路由 |
default-route-advertise summary cost cost |
||
配置引入外部路由时的参数缺省值(开销、路由数量、标记、类型) |
default { cost cost | limit limit | tag tag | type type } * |
可选 缺省情况下,OSPF引入外部路由的缺省值如下: l 路由度量值为1 l 单位时间内引入外部路由数量的上限为1000 l 外部路由标记值为1 l 引入的外部路由类型为Type2 |
& 说明:
l import-route命令不能引入外部路由的缺省路由,如果要引入缺省路由,必须要使用default-route-advertise命令。
l default-route-advertise summary cost命令仅在VPN中应用,以Type-3 LSA引入缺省路由,PE路由器会将引入的缺省路由发布给CE路由器。目前交换机不支持VPN特性,所以不支持该命令。
l OSPF对引入的路由进行过滤,是指OSPF只将满足条件的外部路由转换为Type5 LSA或Type7 LSA并发布出去。
l 当OSPF引入外部路由时,还可以配置一些额外参数的缺省值,如开销、路由数量、标记和类型。路由标记可以用来标识协议相关的信息,如OSPF引入BGP时可以将自治系统的编号作为路由标记。
用户可以从以下几个方面来调整和优化OSPF网络:
l 通过改变OSPF的报文定时器,可以调整OSPF网络的收敛速度以及协议报文带来的网络负荷。在一些低速链路上,需要考虑接口传送LSA的延迟时间。
l 通过调整SPF计算间隔时间,可以抑制由于网络频繁变化带来的资源消耗问题。
l 在安全性较高的网络中,可以通过配置OSPF验证特性,来提高OSPF网络的安全性。
l OSPF同时支持网管功能,可以配置OSPF MIB与某一进程绑定,以及发送Trap消息和日志功能。
在调整和优化OSPF网络之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点之间网络层可达
l 配置OSPF基本功能
用户可以在接口上配置下列OSPF报文定时器:
l Hello定时器:接口向邻居发送Hello报文的时间间隔,OSPF邻居之间的Hello定时器的值要保持一致,且应与路由收敛速度、网络负荷大小成反比。
l Poll定时器:在NBMA网络中,路由器向状态为Down的邻居路由器发送轮询Hello报文的时间间隔。
l 邻居失效时间:在邻居失效时间内,如果接口还没有收到邻居发送的Hello报文,路由器就会宣告该邻居无效。
l 接口重传LSA的时间间隔:路由器向它的邻居通告一条LSA后,需要对方进行确认。若在重传间隔时间内没有收到对方的确认报文,就会向邻居重传这条LSA。
表3-17 配置OSPF报文定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置Hello定时器 |
ospf timer hello seconds |
可选 缺省情况下,P2P、Broadcast类型接口发送Hello报文的时间间隔为10秒,P2MP、NBMA类型接口发送Hello报文的时间间隔为30秒 |
配置Poll定时器 |
ospf timer poll seconds |
可选 缺省情况下,发送轮询Hello报文的时间间隔为120秒 |
配置邻居失效时间 |
ospf timer dead seconds |
可选 缺省情况下,P2P、Broadcast类型接口的OSPF邻居失效时间为40秒,P2MP、NBMA类型接口的OSPF邻居失效时间为120秒 |
配置接口重传LSA的时间间隔 |
ospf timer retransmit interval |
可选 缺省情况下,时间间隔为5秒 |
& 说明:
l 修改了网络类型后,Hello定时器与邻居失效时间都将恢复缺省值。
l 在同一接口上邻居失效时间应至少为Hello时间间隔的4倍。
l 轮询Hello报文的时间间隔至少应为Hello时间间隔的4倍。
l 相邻路由器重传LSA时间间隔的值不要设置得太小,否则将会引起不必要的重传。通常应该大于一个报文在两台路由器之间传送一个来回的时间。
考虑到OSPF报文在链路上传送时也需要花费时间,所以LSA的老化时间(age)在传送之前要增加一定的延迟时间,在低速链路上需要对该项配置进行重点考虑。
表3-18 配置接口传送LSA的延迟时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口传送LSA的延迟时间 |
ospf trans-delay seconds |
可选 缺省情况下,接口传送LSA的延迟时间为1秒 |
当OSPF的链路状态数据库(LSDB)发生改变时,需要重新计算最短路径。如果网络频繁变化,且每次变化都立即计算最短路径,将会占用大量系统资源,并影响路由器的效率。通过调节连续两次SPF计算的最小间隔时间,可以抑制由于网络频繁变化带来的影响。
表3-19 配置SPF计算时间间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置SPF计算时间间隔 |
spf-schedule-interval maximum-interval [ minimum-interval [ incremental-interval ] ] |
可选 缺省情况下,SPF计算的时间间隔为5秒 |
& 说明:
本命令在网络变化不频繁的情况下将连续路由计算的时间间隔缩小到minimum-interval,而在网络变化频繁的情况下可以进行相应惩罚,增加incremental-interval·2n-2 (n为连续触发路由计算的次数),将等待时间按照配置的惩罚增量延长,最大不超过maximum-interval。
表3-20 配置LSA的重复接收最小间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置LSA重复到达的最小时间间隔 |
lsa-arrival-interval interval |
可选 缺省情况下,LSA重复到达的最小时间间隔为1000毫秒 |
& 说明:
建议lsa-arrival-interval命令配置的interval小于或等于lsa-generation-interval命令所配置的minimum-interval。
通过调节LSA重新生成的时间间隔,可以抑制网络频繁变化可能导致的占用过多带宽资源和路由器资源。
表3-21 配置LSA发送间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置LSA重新生成的时间间隔 |
lsa-generation-interval maximum-interval [ initial-interval [ incremental-interval ] ] |
可选 缺省情况下,最大时间间隔为5秒,最小时间间隔为0毫秒,惩罚增量为5000毫秒 |
& 说明:
本命令在网络变化不频繁的情况下将LSA重新生成时间间隔缩小到minimum-interval,而在网络变化频繁的情况下可以进行相应惩罚,增加incremental-interval×2n-2(n为连续触发路由计算的次数),将等待时间按照配置的惩罚增量延长,最大不超过maximum-interval。
如果要使OSPF路由信息不被某一网络中的路由器获得,可以禁止接口发送OSPF报文。
表3-22 禁止接口发送OSPF报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
禁止接口发送OSPF报文 |
silent-interface { all | interface-type interface-number } |
可选 缺省情况下,允许接口发送OSPF报文 |
& 说明:
l 不同的进程可以对同一接口禁止发送OSPF报文,但silent-interface命令只对本进程已经使能的OSPF接口起作用,对其它进程的接口不起作用。
l 将运行OSPF协议的接口指定为Silent状态后,该接口的直连路由仍可以由同一路由器的其它接口通过Router-LSA发布出去,但OSPF报文将被阻塞,接口上无法建立邻居关系。这样可以增强OSPF的组网适应能力,减少系统资源的消耗。
Stub路由器用来控制流量,它告知其他OSPF路由器不要使用这个Stub路由器来转发数据,但可以拥有一个到Stub路由器的路由。
通过将当前路由器配置为Stub路由器,在该路由器发布的Router-LSA中,当链路类型取值为3表示连接到Stub网络时,链路度量值不变;当链路类型为1、2、4分别表示通过点对点链路与另一路由器相连、连接到传送网络、虚连接时,链路度量值将设置为最大值65535。
这样其邻居计算出这条路由的开销就会很大,如果邻居上有到这个目的地址开销更小的路由,则数据不会通过这个Stub路由器转发。
表3-23 配置Stub路由器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置Stub路由器 |
stub-router |
必选 缺省情况下,没有路由器被配置为Stub路由器 |
& 说明:
Stub路由器与Stub区域无关。
OSPF支持报文验证功能,只有通过验证的报文才能接收,否则将不能正常建立邻居。
表3-24 配置OSPF验证
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
进入OSPF区域视图 |
area area-id |
- |
配置OSPF区域的验证模式 |
authentication-mode { simple | md5 } |
必选 缺省情况下,没有配置区域验证模式 |
退回OSPF视图 |
quit |
- |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口的验证模式(简单验证) |
ospf authentication-mode simple [ plain | cipher ] password |
可选 缺省情况下,接口不对OSPF报文进行验证 |
配置OSPF接口的验证模式(MD5验证) |
ospf authentication-mode { md5 | hmac-md5 } key-id [ plain | cipher ] password |
& 说明:
一个区域中所有的路由器的验证类型必须一致,一个网段中所有路由器的验证字口令也必须一致。
一般情况下,接口发送DD报文时不使用接口的实际MTU值,而是用0代替。进行此配置后,将使用接口的实际MTU值填写DD报文Interface MTU字段。
表3-25 配置DD报文中的MTU
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置DD报文中MTU域的值为发送该报文接口的MTU值 |
ospf mtu-enable |
可选 缺省情况下,接口发送的DD报文中MTU域的值为0 |
表3-26 配置LSDB中External LSA的最大数量
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置LSDB中External LSA的最大数量 |
lsdb-overflow-limit number |
可选 缺省情况下,LSDB中External LSA的最大条目数无限制 |
当通过多条LSA计算出同一条外部路由时,在RFC 2328中定义的选路规则与RFC 1583的有所不同,进行此配置可以兼容RFC 1583中定义的方式。
表3-27 配置兼容RFC1583的外部路由选择规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
配置兼容RFC 1583的外部路由选择规则 |
rfc1583 compatible |
可选 缺省情况下,使能兼容RFC 1583的选路规则 |
表3-28 配置邻接状态输出
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
使能OSPF日志记录功能,记录邻居关系连接以及断开事件的日志信息 |
log-peer-change |
可选 缺省情况下,使能OSPF日志记录功能 |
表3-29 配置OSPF网管功能
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
配置OSPF MIB绑定 |
ospf mib-binding process-id |
可选 缺省情况下,MIB绑定在第一个启动的OSPF进程上。 |
使能OSPF的TRAP功能 |
snmp-agent trap enable ospf [ process-id ] [ ifauthfail | ifcfgerror | ifrxbadpkt | ifstatechange | iftxretransmit | lsdbapproachoverflow | lsdboverflow | maxagelsa | nbrstatechange | originatelsa | vifcfgerror | virifauthfail | virifrxbadpkt | virifstatechange | viriftxretransmit | virnbrstatechange ] * |
可选 缺省情况下,OSPF的TRAP功能处于使能状态 |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
使能日志信息 |
enable log [ config | error | state ] |
可选 缺省情况下,关闭日志信息 |
通过使能Opaque LSA发布接收能力,OSPF可以接收和发布Type 9、Type 10和Type 11的Opaque LSA。
表3-30 使能不透明链路状态发布接收能力
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
使能Opaque LSA发布接收能力 |
opaque-capability enable |
可选 缺省情况下,Opaque LSA发布接收能力处于关闭状态 |
可以在GR Restarter上配置基于OSPF的IETF标准或非IETF标准的GR能力。
表3-31 配置IETF标准GR能力
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
使能Opaque LSA发布接收能力 |
opaque-capability enable |
必选 缺省情况下,Opaque LSA发布接收能力处于关闭状态 |
使能OSPF协议的IETF标准GR能力 |
graceful-restart ietf |
可选 缺省情况下,OSPF协议的IETF标准GR能力处于关闭状态 |
配置OSPF协议的GR重启间隔时间 |
graceful-restart interval timer |
可选 缺省情况下,OSPF协议的GR重启间隔时间为120秒 |
& 说明:
l 如果设备配置了graceful-restart ietf命令,则设备既可以作为GR Restarter,又可以作为GR Helper。
l 如果没有配置graceful-restart ietf命令,则设备仅作为GR Helper。
表3-32 配置非IETF标准GR能力
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
- |
使能OSPF本地链路信令能力 |
enable link-local-signaling |
必选 缺省情况下,OSPF本地链路信令能力处于关闭状态 |
使能OSPF带外同步能力 |
enable out-of-band-resynchronization |
必选 缺省情况下,OSPF带外同步能力处于关闭状态 |
使能OSPF协议的非IETF标准GR能力 |
graceful-restart [ nonstandard ] |
可选 缺省情况下,OSPF协议的非IETF标准GR能力处于关闭状态 |
配置OSPF协议的GR重启间隔时间 |
graceful-restart interval timer |
可选 缺省情况下,OSPF协议的GR重启间隔时间为120秒 |
& 说明:
l 如果设备配置了graceful-restart命令,则设备既可以作为GR Restarter,又可以作为GR Helper。
l 如果没有配置graceful-restart命令,则设备仅作为GR Helper。
表3-33 配置GR Helper
使能OSPF本地链路信令能力 |
enable link-local-signaling |
必选 缺省情况下,OSPF本地链路信令能力处于关闭状态 |
使能OSPF带外同步能力 |
enable out-of-band-resynchronization |
必选 缺省情况下,OSPF带外同步能力处于关闭状态 |
在路由器上进行如下操作均可以重新启动OSPF协议的GR进程,但是要求这些GR设备上必须预先使能以下四种能力:
l 本地链路信令能力;
l 带外同步能力;
l 不透明链路状态发布能力;
l IETF GR能力。
操作 |
命令 |
说明 |
重启OSPF协议的GR进程 |
reset ospf [ process-id ] process graceful-restart |
必选 请在用户视图下执行该命令 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后OSPF的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以复位OSPF计数器或连接。
操作 |
命令 |
显示OSPF的概要信息 |
display ospf [ process-id ] brief |
显示OSPF的统计信息 |
display ospf [ process-id ] cumulative |
显示OSPF的LSDB信息 |
display ospf [ process-id ] lsdb [ brief | [ { ase | router | network | summary | asbr | nssa | opaque-link | opaque-area | opaque-as } [ link-state-id ] ] [ originate-router advertising-router-id | self-originate ] ] |
显示OSPF邻居的信息 |
display ospf [ process-id ] peer [ verbose | [ interface-type interface-number ] [ neighbor-id ] ] |
显示OSPF各区域邻居的统计信息 |
display ospf [ process-id ] peer statistics |
显示OSPF下一跳信息 |
display ospf [ process-id ] nexthop |
显示OSPF路由表的信息 |
display ospf [ process-id ] routing [ interface interface-type interface-number ] [ nexthop nexthop-address ] |
显示OSPF虚连接信息 |
display ospf [ process-id ] vlink |
显示OSPF请求列表 |
display ospf [ process-id ] request-queue [ interface-type interface-number ] [ neighbor-id ] |
显示OSPF重传列表 |
display ospf [ process-id ] retrans-queue [ interface-type interface-number ] [ neighbor-id ] |
显示OSPF ABR及ASBR信息 |
display ospf [ process-id ] abr-asbr |
显示OSPF接口信息 |
display ospf [ process-id ] interface [ all | interface-type interface-number ] |
显示OSPF错误信息 |
display ospf [ process-id ] error |
显示OSPF ASBR聚合信息 |
display ospf [ process-id ] asbr-summary [ ip-address { mask | mask-length } ] |
清除OSPF计数器 |
reset ospf [ process-id ] counters [ neighbor [ interface-type interface-number ] [ router-id ] ] |
重启OSPF进程 |
reset ospf [ process-id ] process [ graceful-restart ] |
清除OSPF引入的路由 |
reset ospf [ process-id ] redistribution |
& 说明:
在配置举例中,只列出了与OSPF配置相关的命令。
l 所有的交换机都运行OSPF,并将整个自治系统划分为3个区域。
l 其中Switch A和Switch B作为ABR来转发区域之间的路由。
l 配置完成后,每台交换机都应学到AS内的到所有网段的路由。
图3-21 OSPF基本配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本配置
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] area 1
[SwitchA-ospf-1-area-0.0.0.1] network 10.2.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.1] quit
[SwitchA-ospf-1] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] area 2
[SwitchB-ospf-1-area-0.0.0.2] network 10.3.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.2] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf
[SwitchC-ospf-1] area 1
[SwitchC-ospf-1-area-0.0.0.1] network 10.2.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.1] network 10.4.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.1] quit
[SwitchC-ospf-1] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] ospf
[SwitchD-ospf-1] area 2
[SwitchD-ospf-1-area-0.0.0.2] network 10.3.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.2] network 10.5.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.2] quit
[SwitchD-ospf-1] quit
(3) 检验配置结果
# 查看Switch A的OSPF邻居。
[SwitchA] display ospf peer verbose
OSPF Process 1 with Router ID 10.2.1.1
Neighbors
Area 0.0.0.0 interface 10.1.1.1(Vlan-interface100)'s neighbors
Router ID: 10.3.1.1 Address: 10.1.1.2 GR State: Normal
State: Full Mode: Nbr is Master Priority: 1
DR: 10.1.1.1 BDR: 10.1.1.2 MTU: 0
Dead timer due in 37 sec
Neighbor is up for 06:03:59
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
Neighbors
Area 0.0.0.1 interface 10.2.1.1(Vlan-interface200)'s neighbors
Router ID: 10.4.1.1 Address: 10.2.1.2 GR State: Normal
State: Full Mode: Nbr is Master Priority: 1
DR: 10.2.1.1 BDR: 10.2.1.2 MTU: 0
Dead timer due in 32 sec
Neighbor is up for 06:03:12
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
# 显示Switch A的OSPF路由信息。
[SwitchA] display ospf routing
OSPF Process 1 with Router ID 10.2.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 10 Transit 10.2.1.1 10.2.1.1 0.0.0.1
10.3.1.0/24 4 Inter 10.1.1.2 10.3.1.1 0.0.0.0
10.4.1.0/24 13 Stub 10.2.1.2 10.4.1.1 0.0.0.1
10.5.1.0/24 14 Inter 10.1.1.2 10.3.1.1 0.0.0.0
10.1.1.0/24 2 Transit 10.1.1.1 10.2.1.1 0.0.0.0
Total Nets: 5
Intra Area: 3 Inter Area: 2 ASE: 0 NSSA: 0
# 显示Switch A的LSDB。
[SwitchA] display ospf lsdb
OSPF Process 1 with Router ID 10.2.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.2.1.1 10.2.1.1 1069 36 80000012 0
Router 10.3.1.1 10.3.1.1 780 36 80000011 0
Network 10.1.1.1 10.2.1.1 1069 32 80000010 0
Sum-Net 10.5.1.0 10.3.1.1 780 28 80000003 12
Sum-Net 10.2.1.0 10.2.1.1 1069 28 8000000F 10
Sum-Net 10.3.1.0 10.3.1.1 780 28 80000014 2
Sum-Net 10.4.1.0 10.2.1.1 769 28 8000000F 13
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.2.1.1 10.2.1.1 769 36 80000012 0
Router 10.4.1.1 10.4.1.1 1663 48 80000012 0
Network 10.2.1.1 10.2.1.1 769 32 80000010 0
Sum-Net 10.5.1.0 10.2.1.1 769 28 80000003 14
Sum-Net 10.3.1.0 10.2.1.1 1069 28 8000000F 4
Sum-Net 10.1.1.0 10.2.1.1 1069 28 8000000F 2
Sum-Asbr 10.3.1.1 10.2.1.1 1069 28 8000000F 2
# 查看Switch D的路由表。
[SwitchD] display ospf routing
OSPF Process 1 with Router ID 10.5.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 22 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.3.1.0/24 10 Transit 10.3.1.2 10.3.1.1 0.0.0.2
10.4.1.0/24 25 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.5.1.0/24 10 Stub 10.5.1.1 10.5.1.1 0.0.0.2
10.1.1.0/24 12 Inter 10.3.1.1 10.3.1.1 0.0.0.2
Total Nets: 5
Intra Area: 2 Inter Area: 3 ASE: 0 NSSA: 0
# 在Switch D上使用Ping进行测试连通性。
[SwitchD] ping 10.4.1.1
PING 10.4.1.1: 56 data bytes, press CTRL_C to break
Request time out
Reply from 10.4.1.1: bytes=56 Sequence=2 ttl=253 time=15 ms
Reply from 10.4.1.1: bytes=56 Sequence=3 ttl=253 time=1 ms
Reply from 10.4.1.1: bytes=56 Sequence=4 ttl=253 time=16 ms
Reply from 10.4.1.1: bytes=56 Sequence=5 ttl=253 time=1 ms
--- 10.4.1.1 ping statistics ---
5 packet(s) transmitted
4 packet(s) received
20.00% packet loss
round-trip min/avg/max = 1/8/16 ms
l 所有的交换机都运行OSPF,整个自治系统划分为3个区域。
l 其中Switch A和Switch B作为ABR来转发区域之间的路由,Switch D作为ASBR引入了外部路由(静态路由)。
l 要求将Area1配置为Stub区域,减少通告到此区域内的LSA数量,但不影响路由的可达性。
图3-22 配置OSPF Stub区域组网图
(1) 配置接口的IP地址(略)
(2) 配置OSPF(同前例3.10.1 )
(3) 配置Switch D引入静态路由
[SwitchD] ip route-static 3.1.2.1 24 10.5.1.2
[SwitchD] ospf
[SwitchD-ospf-1] import-route static
[SwitchD-ospf-1] quit
# 查看Switch C的ABR/ASBR信息。
[SwitchC] display ospf abr-asbr
OSPF Process 1 with Router ID 10.4.1.1
Routing Table to ABR and ASBR
Type Destination Area Cost Nexthop RtType
Intra 10.2.1.1 0.0.0.1 3 10.2.1.1 ABR
Inter 10.3.1.1 0.0.0.1 5 10.2.1.1 ABR
Inter 10.5.1.1 0.0.0.1 7 10.2.1.1 ASBR
# 查看Switch C的OSPF路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 3 Transit 10.2.1.2 10.2.1.1 0.0.0.1
10.3.1.0/24 7 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1
10.5.1.0/24 17 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.1.1.0/24 5 Inter 10.2.1.1 10.2.1.1 0.0.0.1
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
3.1.2.0/24 1 Type2 1 10.2.1.1 10.5.1.1
Total Nets: 6
Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0
& 说明:
当Switch C所在区域为普通区域时,可以看到路由表中存在AS外部的路由。
(4) 配置Area1为Stub区域
# 配置Switch A。
[SwitchA] ospf
[SwitchA-ospf-1] area 1
[SwitchA-ospf-1-area-0.0.0.1] stub
[SwitchA-ospf-1-area-0.0.0.1] quit
[SwitchA-ospf-1] quit
# 配置Switch C。
[SwitchC] ospf
[SwitchC-ospf-1] area 1
[SwitchC-ospf-1-area-0.0.0.1] stub
[SwitchC-ospf-1-area-0.0.0.1] quit
[SwitchC-ospf-1] quit
# 显示Switch C的OSPF路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
0.0.0.0/0 4 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.2.1.0/24 3 Transit 10.2.1.2 10.2.1.1 0.0.0.1
10.3.1.0/24 7 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1
10.5.1.0/24 17 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.1.1.0/24 5 Inter 10.2.1.1 10.2.1.1 0.0.0.1
Total Nets: 6
Intra Area: 2 Inter Area: 4 ASE: 0 NSSA: 0
& 说明:
当把Switch C所在区域配置为Stub区域时,已经看不到AS外部的路由,取而代之的是一条缺省路由。
# 配置禁止向Stub区域通告Type3 LSA。
[SwitchA] ospf
[SwitchA-ospf-1] area 1
[SwitchA-ospf-1-area-0.0.0.1] stub no-summary
[SwitchA-ospf-1-area-0.0.0.1] quit
# 查看Switch C的OSPF路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
0.0.0.0/0 4 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.2.1.0/24 3 Transit 10.2.1.2 10.4.1.1 0.0.0.1
10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1
Total Nets: 3
Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0
& 说明:
禁止向Stub区域通告Summary LSA后,Stub路由器的路由表项进一步减少,只保留了一条通往区域外部的缺省路由。
l 所有的交换机都运行OSPF,整个自治系统划分为3个区域。
l 其中Switch A和Switch B作为ABR来转发区域之间的路由。
l 要求将Area1配置为NSSA区域,同时将Switch C配置为ASBR引入外部路由(静态路由),且路由信息可正确的在AS内传播。
图3-23 配置OSPF NSSA区域组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF(同前例3.10.1 )
(3) 配置Area1区域为NSSA区域
# 配置Switch A。
[SwitchA] ospf
[SwitchA-ospf-1] area 1
[SwitchA-ospf-1-area-0.0.0.1] nssa default-route-advertise no-summary
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] quit
# 配置Switch C。
[SwitchC] ospf
[SwitchC-ospf-1] area 1
[SwitchC-ospf-1-area-0.0.0.1] nssa
[SwitchC-ospf-1-area-0.0.0.1] quit
[SwitchC-ospf-1] quit
& 说明:
建议在ABR(这里的Switch A)上配置default-route-advertise no-summary参数,这样可以减少NSSA路由器的路由表数量。其他NSSA路由器只需配置nssa命令就可以。
# 查看Switch C的OSPF路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 10.4.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
0.0.0.0/0 65536 Inter 10.2.1.1 10.2.1.1 0.0.0.1
10.2.1.0/24 65535 Transit 10.2.1.2 10.4.1.1 0.0.0.1
10.4.1.0/24 3 Stub 10.4.1.1 10.4.1.1 0.0.0.1
Total Nets: 3
Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0
(4) 配置Switch C引入静态路由
[SwitchC] ip route-static 3.1.3.1 24 11.1.1.1
[SwitchC] ospf
[SwitchC-ospf-1] import-route static
[SwitchC-ospf-1] quit
# 查看Switch D的OSPF路由表。
[SwitchD-ospf-1] display ospf routing
OSPF Process 1 with Router ID 10.5.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.2.1.0/24 22 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.3.1.0/24 10 Transit 10.3.1.2 10.3.1.1 0.0.0.2
10.4.1.0/24 25 Inter 10.3.1.1 10.3.1.1 0.0.0.2
10.5.1.0/24 10 Stub 10.5.1.1 10.5.1.1 0.0.0.2
10.1.1.0/24 12 Inter 10.3.1.1 10.3.1.1 0.0.0.2
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
3.1.3.0/24 1 Type2 1 10.3.1.1 10.2.1.1
Total Nets: 6
Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0
& 说明:
在Switch D上可以看到NSSA区域引入的一条AS外部的路由。
l Switch A、Switch B、Switch C、Switch D在同一网段,运行OSPF协议;
l 配置Switch A为DR,Switch C为BDR。
(1) 配置各接口的IP地址
(2) 配置OSPF基本功能
(3) 改变交换机接口的路由器优先级使Switch A成为DR,Switch C成为BDR。
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本功能
# 配置Switch A
<SwitchA> system-view
[SwitchA] router id 1.1.1.1
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] quit
# 配置Switch B
<SwitchB> system-view
[SwitchB] router id 2.2.2.2
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 配置Switch C
<SwitchC> system-view
[SwitchC] router id 3.3.3.3
[SwitchC] ospf
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
# 配置Switch D
<SwitchD> system-view
[SwitchD] router id 4.4.4.4
[SwitchD] ospf
[SwitchD-ospf-1] area 0
[SwitchD-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.0] quit
[SwitchD-ospf-1] quit
# 查看Switch A的邻居信息。
[SwitchA] display ospf peer verbose
OSPF Process 1 with Router ID 1.1.1.1
Neighbors
Area 0.0.0.0 interface 192.168.1.1(Vlan-interface1)'s neighbors
Router ID: 2.2.2.2 Address: 192.168.1.2 GR State: Normal
State: 2-Way Mode: None Priority: 1
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 38 sec
Neighbor is up for 00:01:31
Authentication Sequence: [ 0 ]
Neighbor state change count: 2
Router ID: 3.3.3.3 Address: 192.168.1.3 GR State: Normal
State: Full Mode: Nbr is Master Priority: 1
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 31 sec
Neighbor is up for 00:01:28
Authentication Sequence: [ 0 ]
Neighbor state change count: 2
Router ID: 4.4.4.4 Address: 192.168.1.4 GR State: Normal
State: Full Mode: Nbr is Master Priority: 1
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 31 sec
Neighbor is up for 00:01:28
Authentication Sequence: [ 0 ]
Neighbor state change count: 2
可以看到Switch D为DR,Switch C为BDR。
(3) 配置接口上的路由器优先级
# 配置Switch A。
[SwitchA] interface vlan-interface 1
[RouterA-Vlan-interface1] ospf dr-priority 100
[RouterA-Vlan-interface1] quit
# 配置Switch B。
[SwitchB] interface vlan-interface 1
[SwitchB-Vlan-interface1] ospf dr-priority 0
[SwitchB-Vlan-interface1] quit
# 配置Switch C。
[SwitchC] interface vlan-interface 1
[SwitchC-Vlan-interface1] ospf dr-priority 2
[SwitchC-Vlan-interface] quit
# 查看Switch D的邻居信息。
[SwitchD] display ospf peer verbose
OSPF Process 1 with Router ID 4.4.4.4
Neighbors
Area 0.0.0.0 interface 192.168.1.4(Vlan-interface1)'s neighbors
Router ID: 1.1.1.1 Address: 192.168.1.1 GR State: Normal
State: Full Mode:Nbr is Slave Priority: 100
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 31 sec
Neighbor is up for 00:11:17
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
Router ID: 2.2.2.2 Address: 192.168.1.2 GR State: Normal
State: Full Mode:Nbr is Slave Priority: 0
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 35 sec
Neighbor is up for 00:11:19
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
Router ID: 3.3.3.3 Address: 192.168.1.3 GR State: Normal
State: Full Mode:Nbr is Slave Priority: 2
DR: 192.168.1.4 BDR: 192.168.1.3 MTU: 0
Dead timer due in 33 sec
Neighbor is up for 00:11:15
Authentication Sequence: [ 0 ]
Neighbor state change count: 5
可以看到,网络中DR/BDR并没有改变。
& 说明:
网络中DR/BDR已经存在的情况下,接口上的路由器优先级的配置并不会立即生效。
(4) 重启OSPF进程(略)
# 查看Switch D的邻居信息。
[SwitchD] display ospf peer verbose
OSPF Process 1 with Router ID 4.4.4.4
Neighbors
Area 0.0.0.0 interface 192.168.1.4(Vlan-interface1)'s neighbors
Router ID: 1.1.1.1 Address: 192.168.1.1 GR State: Normal
State: Full Mode: Nbr is Slave Priority: 100
DR: 192.168.1.1 BDR: 192.168.1.3 MTU: 0
Dead timer due in 39 sec
Neighbor is up for 00:01:40
Authentication Sequence: [ 0 ]
Neighbor state change count: 2
Router ID: 2.2.2.2 Address: 192.168.1.2 GR State: Normal
State: 2-Way Mode: None Priority: 0
DR: 192.168.1.1 BDR: 192.168.1.3 MTU: 0
Dead timer due in 35 sec
Neighbor is up for 00:01:44
Authentication Sequence: [ 0 ]
Neighbor state change count: 2
Router ID: 3.3.3.3 Address: 192.168.1.3 GR State: Normal
State: Full Mode: Nbr is Slave Priority: 2
DR: 192.168.1.1 BDR: 192.168.1.3 MTU: 0
Dead timer due in 39 sec
Neighbor is up for 00:01:41
Authentication Sequence: [ 0 ]
Neighbor state change count: 2
可以看到Switch A成为DR,Switch C为BDR。
& 说明:
l 如果邻居的状态是Full,这说明它和邻居之间形成了邻接关系;
l 如果邻居的状态是2-Way,则说明它们都不是DR或BDR,两者之间不需要交换LSA。
# 查看OSPF接口的状态。
[SwitchA] display ospf interface
OSPF Process 1 with Router ID 1.1.1.1
Interfaces
Area: 0.0.0.0
IP Address Type State Cost Pri DR BDR
192.168.1.1 Broadcast DR 1 100 192.168.1.1 192.168.1.3
[SwitchB] display ospf interface
OSPF Process 1 with Router ID 2.2.2.2
Interfaces
Area: 0.0.0.0
IP Address Type State Cost Pri DR BDR
192.168.1.2 Broadcast DROther 1 0 192.168.1.1 192.168.1.3
& 说明:
如果OSPF接口的状态是DROther,则说明它既不是DR,也不是BDR。
l Area2与Area0没有直接相连。Area1被用作传输区域(Transit Area)来连接Area2和Area0。Switch A和Switch B之间配置一条虚连接。
l 配置完成后,Switch A能够学到Area2中的路由。
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本功能
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ospf 1 router-id 1.1.1.1
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 10.0.0.0 0.255.255.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] area 1
[SwitchA-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.1] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf 1 router-id 2.2.2.2
[SwitchB-ospf-1] area 1
[SwitchB-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.1] quit
[SwitchB-ospf-1] area 2
[SwitchB–ospf-1-area-0.0.0.2] network 172.16.0.0 0.0.255.255
[SwitchB–ospf-1-area-0.0.0.2] quit
# 查看Switch A的OSPF路由表。
[SwitchA] display ospf routing
OSPF Process 1 with Router ID 1.1.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.0.0.0/8 1 Stub 10.1.1.1 1.1.1.1 0.0.0.0
192.168.1.0/24 1562 Stub 192.168.1.1 1.1.1.1 0.0.0.1
Total Nets: 2
Intra Area: 2 Inter Area: 0 ASE: 0 NSSA: 0
& 说明:
由于Area2没有与Area0直接相连,所以Switch A的路由表中没有Area2中的路由。
(3) 配置虚连接
# 配置Switch A。
[SwitchA] ospf
[SwitchA-ospf-1] area 1
[SwitchA-ospf-1-area-0.0.0.1] vlink-peer 2.2.2.2
[SwitchA-ospf-1-area-0.0.0.1] quit
[SwitchA-ospf-1] quit
# 配置Switch B。
[SwitchB] ospf 1
[SwitchB-ospf-1] area 1
[SwitchB-ospf-1-area-0.0.0.1] vlink-peer 1.1.1.1
[SwitchB-ospf-1-area-0.0.0.1] quit
# 查看Switch A的OSPF路由表。
[SwitchA] display ospf routing
OSPF Process 1 with Router ID 1.1.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
172.16.1.1/16 1563 Inter 192.168.1.2 2.2.2.2 0.0.0.0
10.0.0.0/8 1 Stub 10.1.1.1 1.1.1.1 0.0.0.0
192.168.1.0/24 1562 Stub 192.168.1.1 1.1.1.1 0.0.0.1
Total Nets: 3
Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0
可以看到,Switch A已经学到了Area2的路由172.16.1.1/16。
l Switch A、Switch B和Switch C既属于同一自治系统,也属于同一OSPF域,通过OSPF协议实现网络互连,并提供GR机制。
l Switch A作为非IETF标准GR Restarter,Switch B和Switch C作为GR Helper并且通过GR机制与与Switch A保持带外同步。
(1) 配置Switch A
<SwitchA> system-view
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] ip address 192.1.1.1 255.255.255.0
[SwitchA-Vlan-interface100] quit
[SwitchA] router id 1.1.1.1
[SwitchA] ospf 100
[SwitchA-ospf-100] enable link-local-signaling
[SwitchA-ospf-100] enable out-of-band-resynchronization
[RouterA-ospf-100] graceful-restart
[SwitchA-ospf-100] area 0
[SwitchA-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[SwitchA-ospf-100-area-0.0.0.0] return
(2) 配置Switch B
<SwitchB> system-view
[SwitchB] acl number 2000
[SwitchB-acl-basic-2000] rule 10 permit source 192.1.1.1 0.0.0.0
[SwitchB-acl-basic-2000] quit
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] ip address 192.1.1.2 255.255.255.0
[SwitchB-Vlan-interface100] ospf dr-priority 0
[SwitchB-Vlan-interface100] quit
[SwitchB] router id 2.2.2.2
[SwitchB] ospf 100
[SwitchB-ospf-100] enable link-local-signaling
[SwitchB-ospf-100] enable out-of-band-resynchronization
[SwitchB-ospf-100] graceful-restart help 2000
[SwitchB-ospf-100] area 0
[SwitchB-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[SwitchB-ospf-100-area-0.0.0.0] quit
(3) 配置Switch C
<SwitchC> system-view
[SwitchC] interface vlan-interface 100
[SwitchC-Vlan-interface100] ip address 192.1.1.3 255.255.255.0
[SwitchC-Vlan-interface100] ospf dr-priority 2
[SwitchC-Vlan-interface100] quit
[SwitchC] router id 3.3.3.3
[SwitchC] ospf 100
[SwitchC-ospf-100] enable link-local-signaling
[SwitchC-ospf-100] enable out-of-band-resynchronization
[SwitchC-ospf-100] area 0
[SwitchC-ospf-100-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[SwitchC-ospf-100-area-0.0.0.0] quit
(4) 检验配置效果
# 运行稳定后,在Switch A上重启OSPF协议的GR进程。
<SwitchA> reset ospf 100 process graceful-restart
OSPF邻居无法建立
如果物理连接和下层协议正常,则检查接口上配置的OSPF参数,必须保证与相邻路由器的参数一致,区域号相同,网段与掩码也必须一致(点到点与虚连接的网段与掩码可以不同)。
相邻的两台路由器接口的网络类型必须一致。若网络类型为广播网或NBMA,则至少有一个接口的路由器优先级应大于零。
(1) 使用display ospf peer命令查看OSPF邻居状态。
(2) 使用display ospf interface命令查看OSPF接口的信息。
(3) 检查物理连接及下层协议是否正常运行,可通过Ping命令测试。若从本地路由器Ping对端路由器不通,则表明物理连接和下层协议有问题。
(4) 检查OSPF定时器,在同一接口上邻居失效时间应至少为Hello报文发送时间间隔的4倍。
(5) 如果是NBMA网络,则应该使用peer ip-address命令手工指定邻居。
(6) 如果网络类型为广播网或NBMA,则至少有一个接口的路由器优先级大于零。
OSPF不能发现其他区域的路由
应保证骨干区域与所有的区域相连接。若一台路由器配置了两个以上的区域,则至少有一个区域应与骨干区域相连。骨干区域也不能配置成Stub区域。
在Stub区域内的路由器不能接收外部AS的路由。如果一个区域配置成Stub区域,则与这个区域相连的所有路由器都应将此区域配置成Stub区域。
(1) 使用display ospf peer命令查看OSPF邻居状态。
(2) 使用display ospf interface命令查看OSPF接口的信息。
(3) 使用display ospf lsdb查看LSDB的信息是否完整。
(4) 使用display current-configuration configuration ospf命令查看区域是否配置正确。若配置了两个以上的区域,则至少有一个区域与骨干区域相连。
(5) 如果某区域是Stub区域,则该区域中的所有路由器都要配置stub命令;如果某区域是NSSA区域,则该区域中的所有路由器都要配置nssa命令。
(6) 如果配置了虚连接,使用display ospf vlink命令查看OSPF虚连接是否正常。
& 说明:
本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。为提高可读性,在手册的描述中将不另行说明。
IS-IS(Intermediate System-to-Intermediate System intra-domain routing information exchange protocol,中间系统到中间系统的域内路由信息交换协议)最初是国际标准化组织(the International Organization for Standardization,ISO)为它的无连接网络协议(ConnectionLess Network Protocol,CLNP)设计的一种动态路由协议。
为了提供对IP的路由支持,IETF在RFC 1195中对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI环境中,称为集成化IS-IS(Integrated IS-IS或Dual IS-IS)。
IS-IS属于内部网关协议(Interior Gateway Protocol,IGP),用于自治系统内部。IS-IS是一种链路状态协议,使用最短路径优先(Shortest Path First,SPF)算法进行路由计算。
l IS(Intermediate System):中间系统。相当于TCP/IP中的路由器,是IS-IS协议中生成路由和传播路由信息的基本单元。在下文中IS和路由器具有相同的含义。
l ES(End System):终端系统。相当于TCP/IP中的主机系统。ES不参与IS-IS路由协议的处理,ISO使用专门的ES-IS协议定义终端系统与中间系统间的通信。
l RD(Routing Domain):路由域。在一个路由域中多个IS通过相同的路由协议来交换路由信息。
l Area:区域,路由域的细分单元,IS-IS允许将整个路由域分为多个区域。
l LSDB(Link State DataBase):链路状态数据库。网络内所有链路的状态组成了链路状态数据库,在每一个IS中都至少有一个LSDB。IS使用SPF算法,利用LSDB来生成自己的路由。
l LSPDU(Link State Protocol Data Unit):链路状态协议数据单元,简称LSP。在IS-IS中,每一个IS都会生成LSP,此LSP包含了本IS的所有链路状态信息。每个IS收集本区域内所有的LSP生成自己的LSDB。
l NPDU(Network Protocol Data Unit):网络协议数据单元,是ISO中的网络层协议报文,相当于TCP/IP中的IP报文。
l DIS(Designated IS):广播网络上选举的指定中间系统,也可以称为指定IS或伪节点。
l NSAP(Network Service Access Point):网络服务接入点,即ISO中网络层的地址,用来标识一个抽象的网络服务访问点,描述ISO模型的网络地址结构。
(1) NSAP
如图4-1所示,NSAP由IDP(Initial Domain Part)和DSP(Domain Specific Part)组成。IDP相当于IP地址中的主网络号,DSP相当于IP地址中的子网号和主机地址。
IDP部分是ISO规定的,它由AFI(Authority and Format Identifier)与IDI(Initial Domain Identifier)组成,AFI表示地址分配机构和地址格式,IDI用来标识域。
DSP由HODSP(High Order DSP)、SystemID和SEL三个部分组成。HODSP用来分割区域,SystemID用来区分主机,SEL指示服务类型。
IDP和DSP的长度都是可变的,NSAP总长最多是20个字节,最少8个字节。
(2) 区域地址
IDP和DSP中的HODSP(High Order DSP)一起,既能够标识路由域,也能够标识路由域中的区域,因此,它们一起被称为区域地址(Area Address)。两个不同的路由域中不允许有相同的区域地址。
一般情况下,一台路由器只需要配置一个区域地址,且同一区域中所有节点的区域地址都要相同。为了支持区域的平滑合并、分割及转换,一台路由器最多可配置3个区域地址。
(3) System ID
System ID用来在区域内唯一标识主机或路由器。它的长度固定为48bit(6字节)。
在实际应用中,一般使用Router ID与System ID进行对应。假设一台路由器使用接口Loopback0的IP地址168.10.1.1作为Router ID,则它在IS-IS使用的System ID可通过如下方法转换得到:
l 将IP地址168.10.1.1的每一部分都扩展为3位,不足3位的在前面补0;
l 将扩展后的地址168.010.001.001重新划分为3部分,每部分由4位数字组成,得到的1680.1000.1001就是System ID。
实际System ID的指定可以有不同的方法,但要保证能够唯一标识主机或路由器。
(4) SEL
SEL(NSAP Selector,有时也写成N-SEL)的作用类似IP中的“协议标识符”,不同的传输协议对应不同的SEL。在IP中,SEL均为00。
(5) 路由方式
由于这种地址结构明确地定义了区域,Level-1路由器很容易识别出发往它所在的区域之外的报文,这些报文需要转交给具有Level-2功能的路由器去处理。
Level-1路由器利用System ID进行区域内的路由,如果发现报文的目的地址不属于自己所在的区域,就将报文转发给最近的Level-1-2路由器。
Level-2路由器根据区域地址进行区域间的路由。
NET(Network Entity Title,网络实体名称)指示的是IS本身的网络层信息,不包括传输层信息(SEL=0),可以看作是一类特殊的NSAP,即SEL为0的NSAP地址。因此,NET的长度与NSAP的相同,最多为20个字节,最少为8个字节。
通常情况下,一台路由器配置一个NET即可,当区域需要重新划分时,例如将多个区域合并,或者将一个区域划分为多个区域,这种情况下配置多个NET可以在重新配置时仍然能够保证路由的正确性。由于一台路由器最多可配置3个区域地址,所以最多也只能配置3个NET。在配置多个NET时,必须保证它们的System ID都相同。
例如NET为:ab.cdef.1234.5678.9abc.00,则其中Area为ab.cdef,System ID为1234.5678.9abc,SEL为00。
为了支持大规模的路由网络,IS-IS在路由域内采用两级的分层结构。一个大的路由域被分成一个或多个区域(Areas)。区域内的路由通过Level-1路由器管理,区域间的路由通过Level-2路由器管理。
(1) Level-1路由器
Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,维护一个Level-1的LSDB,该LSDB包含本区域的路由信息,到区域外的报文转发给最近的Level-1-2路由器。
(2) Level-2路由器
Level-2路由器负责区域间的路由,可以与同一区域或者其它区域的Level-2和Level-1-2路由器形成邻居关系,维护一个Level-2的LSDB,该LSDB包含区域间的路由信息。所有Level-2路由器和Level-1-2路由器组成路由域的骨干网,负责在不同区域间通信,骨干网必须是物理连续的。只有Level-2路由器才能直接与路由域外的路由器交换数据报文或路由信息。
(3) Level-1-2路由器
同时属于Level-1和Level-2的路由器称为Level-1-2路由器,可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻居关系,也可以与同一区域或者其他区域的Level-2和Level-1-2路由器形成Level-2的邻居关系。Level-1路由器必须通过Level-1-2路由器才能连接至其他区域。Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由。
& 说明:
l 属于不同区域的Level-1路由器不能形成邻居关系。
l Level-2路由器是否形成邻居关系则与区域无关。
图4-2为一个运行IS-IS协议的网络,其中Area1是骨干区域,该区域中的所有路由器均是Level-2路由器。另外4个区域为非骨干区域,它们都通过Level-1-2路由器与骨干路由器相连。
图4-3是IS-IS的另外一种拓扑结构图。其中Level-1-2路由器不仅仅用来连接Level-1和Level-2路由器,而且还与其他Level-2路由器一起构成了IS-IS的骨干网。在这个拓扑中,并没有规定哪个区域是骨干区域。所有Level-2路由器和Level-1-2路由器构成了IS-IS的骨干网,他们可以属于不同的区域,但必须是物理连续的。
& 说明:
IS-IS的骨干网(Backbone)指的不是一个特定的区域。
IS-IS不论是Level-1还是Level-2路由,都采用SPF算法,分别生成最短路径树(Shortest Path Tree,SPT)。
对于类型是Level-1-2的路由器,可能需要与某个对端只建立Level-1的邻接关系,与另一个对端只建立Level-2的邻接关系。可以通过设置相应接口的路由层次类型来限制接口上所能建立的邻接关系,如Level-1的接口只能建立Level-1的邻接关系,Level-2的接口只能建立Level-2的邻接关系。
对于Level-1-2的路由器,通过将某些接口配置为Level-2,还可以防止将Level-1的Hello报文发送到Level-2骨干网上,从而节省带宽。
通常情况下,IS-IS的区域也称为Level-1区域,区域内的路由通过Level-1的路由器进行管理。所有的Level-2路由器构成一个Level-2区域。因此,一个IS-IS的路由域可以包含多个Level-1区域,但只有一个Level-2区域。
Level-1区域必须且只能与Level-2区域相连,不同的Level-1区域之间并不相连。
Level-1区域内的路由信息通过Level-1-2路由器发布到Level-2区域,因此,Level-2路由器知道整个IS-IS路由域的路由信息。但是,在缺省情况下,Level-2路由器并不将自己知道的其他Level-1区域以及Level-2区域的路由信息发布到Level-1区域。这样,Level-1路由器将不了解本区域以外的路由信息,Level-1路由器只将去往其它区域的报文发送到最近的Level-1-2路由器,所以可能导致对本区域之外的目的地址无法选择最佳的路由。
为解决上述问题,IS-IS提供了路由渗透功能,使Level-1-2路由器可以将己知的其他Level-1区域以及Level-2区域的路由信息发布到指定的Level-1区域。
IS-IS只支持两种类型的网络,根据物理链路不同可分为:
l 广播链路:如Ethernet、Token-Ring等。
l 点到点链路:如PPP、HDLC等。
& 说明:
对于NBMA(Non-Broadcast Multi-Access)网络,如ATM,需对其配置子接口,并将子接口类型配置为点到点网络或广播网络。IS-IS不能在点到多点(Point to MultiPoint,P2MP)链路上运行。
在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS(Designated Intermediate System)。
Level-1和Level-2的DIS是分别选举的,用户可以为不同级别的DIS选举设置不同的优先级。DIS优先级数值越高,被选中的可能性就越大。如果优先级最高的路由器有多台,则其中SNPA(Subnetwork Point of Attachment,子网连接点)地址(广播网络中的SNPA地址是MAC地址)最大的路由器会被选中。不同级别的DIS可以是同一台路由器,也可以是不同的路由器。
在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。如图4-4所示。
DIS用来创建和更新伪节点(Pseudonodes),并负责生成伪节点的LSP,用来描述这个网络上有哪些路由器。
伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和一个字节的Circuit ID(非0值)标识。
使用伪节点可以简化网络拓扑,使产生的LSP数量较少,减少SPF的资源消耗。
& 说明:
IS-IS广播网络上所有的路由器之间都形成邻接关系,但LSDB的同步仍然依靠DIS来保证。
IS-IS报文是直接封装在数据链路层的帧结构中的。PDU(Protocol Data Unit,协议数据单元)可以分为两个部分,报文头和变长字段部分。其中报文头又可分为通用报头和专用报头。对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别,如图4-5所示。
所有的PDU都有相同的通用报头格式,如图4-6所示。
主要字段的解释如下:
l Intradomain Routeing Protocol Discriminator(域内路由协议鉴别符):设置为0x83。
l Length Indicator(长度标识符):PDU头部的长度(包括通用报头和专用报头),以字节为单位。
l Version/Protocol ID Extension(版本/协议标识扩展):设置为1(0x01)。
l ID Length(标识长度):NSAP地址和NET的ID长度。
l R(Reserved,保留):设置为0。
l PDU Type(PDU类型):详细信息请参考表4-1。
l Version(版本):设置为1(0x01)。
l Maximum Area Address(最大区域地址数):支持的最大区域个数。
类型值 |
PDU类型 |
简称 |
15 |
Level-1 LAN IS-IS Hello PDU |
L1 LAN IIH |
16 |
Level-2 LAN IS-IS Hello PDU |
L2 LAN IIH |
17 |
Point-to-Point IS-IS Hello PDU |
P2P IIH |
18 |
Level-1 Link State PDU |
L1 LSP |
20 |
Level-2 Link State PDU |
L2 LSP |
24 |
Level-1 Complete Sequence Numbers PDU |
L1 CSNP |
25 |
Level-2 Complete Sequence Numbers PDU |
L2 CSNP |
26 |
Level-1 Partial Sequence Numbers PDU |
L1 PSNP |
27 |
Level-2 Partial Sequence Numbers PDU |
L2 PSNP |
Hello报文用于建立和维持邻居关系,也称为IIH(IS-to-IS Hello PDUs)。其中,广播网中的Level-1路由器使用Level-1 LAN IIH,广播网中的Level-2路由器使用Level-2 LAN IIH,点到点网络中的路由器则使用P2P IIH。
它们的报文格式有所不同。广播网中的Hello报文格式如图4-7所示(浅蓝色部分是通用报文头)。
主要字段的解释如下:
l Reserved/Circuit Type:高位的6比特保留,值为0。低位的2比特表示路由器的类型(00保留,01表示L1,10表示L2,11表示L1/2)。
l Source ID:发送Hello报文的路由器的System ID。
l Holding Time:保持时间。在此时间内如果没有收到邻居发来的Hello报文,则中止已建立的邻居关系。
l PDU Length:PDU的总长度,以字节为单位。
l Priority:选举DIS的优先级。
l LAN ID:包括System ID和一字节的伪节点ID。
点到点网络中的Hello报文格式如图4-8所示(浅蓝色部分是通用报文头)。
从图中可以看出,P2P IIH中的多数字段与LAN IIH相同。不同的是没有Priority和LAN ID字段,而多了一个Local Circuit ID字段,表示本地链路ID。
LSP用于交换链路状态信息。LSP分为两种:Level-1 LSP和Level-2 LSP。Level-1路由器传送Level-1 LSP,Level-2路由器传送Level-2 LSP,Level-1-2路由器则可传送以上两种LSP。
两类LSP有相同的报文格式,如图4-9所示(浅蓝色部分是通用报文头)。
主要字段的解释如下:
l PDU Length:PDU的总长度,以字节为单位。
l Remaining Lifetime:LSP的存活时间,以秒为单位。
l LSP ID:由三部分组成,System ID、伪节点ID(一字节)和LSP的分片号(一字节)。
l Sequence Numer:LSP的序列号。
l Checksum:LSP的校验和。
l P(Partition Repair):仅与L2 LSP有关,表示路由器是否支持自动修复区域分割。
l ATT(Attachment):由L1/L2路由器产生,但仅与L1 LSP有关,表示产生此LSP的路由器(L1/L2路由器)与多个区域相连接。
l OL(LSDB Overload):表示本路由器因内存不足而导致LSDB不完整。其他路由器在得知这一信息后,就不会把需要此路由器转发的报文发给它,但到此路由器直连地址的报文仍然可以被转发。如图4-10所示,假设正常情况下Router A到Router C的报文都是经过Router B转发,但如果Router B的OL位置1,则Router A会认为Router B的路由不完整,从而将报文通过Router D、Router E转发给Router C,但到Router B直连地址的报文不受影响。
l IS Type:生成LSP的路由器的类型。
时序报文SNP(Sequence Number PDUs)用于确认邻居之间最新接收的LSP,作用类似于确认(Acknowledge)报文,但更有效。
SNP包括CSNP(Complete SNP,全时序报文)和PSNP(Partial SNP,部分时序报文),进一步又可分为Level-1 CSNP、Level-2 CSNP、Level-1 PSNP和Level-2 PSNP。
CSNP包括LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒);在点到点链路上,CSNP只在第一次建立邻接关系时发送。
CSNP的报文格式如图4-11所示(浅蓝色部分是通用报文头)。
PSNP只列举最近收到的一个或多个LSP的序号,它能够一次对多个LSP进行确认。当发现LSDB不同步时,也用PSNP来请求邻居发送新的LSP。
PSNP的报文格式如图4-12所示:
PDU中的变长字段部分是多个CLV(Code-Length-Value)三元组。其格式如图4-13所示:
不同PDU类型所包含的CLV是不同的,如表4-2所示。
CLV Code |
名称 |
所应用的PDU类型 |
1 |
Area Addresses |
IIH、LSP |
2 |
IS Neighbors(LSP) |
LSP |
4 |
Partition Designated Level-2 IS |
L2 LSP |
6 |
IS Neighbors(MAC Address) |
LAN IIH |
7 |
IS Neighbors(SNPA Address) |
LAN IIH |
8 |
Padding |
IIH |
9 |
LSP Entries |
SNP |
10 |
Authentication Information |
IIH、LSP、SNP |
128 |
IP Internal Reachability Information |
LSP |
129 |
Protocols Supported |
IIH、LSP |
130 |
IP External Reachability Information |
L2 LSP |
131 |
Inter-Domain Routing Protocol Information |
L2 LSP |
132 |
IP Interface Address |
IIH、LSP |
其中,Code值从1到10的CLV在ISO 10589中定义(有2类未在上表中列出),其他几种CLV在RFC 1195中定义。
为了方便管理,提高控制效率,IS-IS支持多进程特性。多进程允许为一个指定的IS-IS进程关联一组接口,从而保证该进程进行的所有协议操作都仅限于这一组接口。这样,就可以实现一台路由器有多个IS-IS协议进程,每个进程负责唯一的一组接口。
& 说明:
有关GR(Graceful Restart,平滑重启)的原理介绍请参见“路由-GR概述”。
基于IS-IS的GR Restarter进行协议重启后,为了与其IS-IS邻居重新同步链路状态数据库,它必须完成下列两项任务:
l 在不改变邻接关系的前提下,重新获取网络中的有效IS-IS邻居信息;
l 重新获取网络链路状态数据库的内容。
IS-IS协议重启完毕后,GR Restarter会立即向邻接的GR Helper发送一个IS-IS GR信号。这样,IS-IS邻居就不会复位与其的邻居关系。在收到其IS-IS邻居的响应后,GR Restarter会重新恢复与其的邻居关系列表。
邻居关系重新建立后,GR Restarter与其所有具备GR感知能力的IS-IS邻居之间同步数据库,并交换路由信息。交换完成后,GR Restarter根据新的路由转发信息更新路由表和转发表,删除失效的路由,完成IS-IS协议收敛。
管理标记简化了对路由信息的管理,该标记用来携带关于IP地址前缀的管理信息,利用它可以控制对各种外部路由协议的引入,以及承载BGP的标准或扩展团体属性。
IS-IS通过泛洪LSP来宣告链路状态信息,由于一个LSP能够承载的信息量有限,IS-IS将对LSP进行分片。每个LSP分片由产生该LSP的结点或伪结点的SystemID、PseudnodeID(普通LSP为0,Pseudonode LSP为非0)、LSPNumber(LSP分片号)组合起来唯一标识,由于LSPNumber字段的长度是1字节,因此,IS-IS路由器可产生的分片数最大为256,限制了IS-IS路由器可以发布的链路信息量。
IS-IS LSP分片扩展特性可使IS-IS路由器生成更多的LSP分片,通过为路由器配置附加的虚拟系统、每个虚拟系统都可生成256个LSP分片。
(1) 常用术语
l 初始系统(Originating System):实际运行IS-IS协议的路由器。使能IS-IS LSP分片扩展功能后,可以为路由器配置附加的虚拟系统,“Originating System”指的是原来运行的、“真正”的IS-IS进程。
l 系统ID(System ID):初始系统的系统ID。
l 附加系统ID(Additional System ID):使能IS-IS LSP分片扩展功能后,为IS-IS路由器配置的附加的虚拟SystemID。每个附加系统ID都可以生成256个额外扩展的LSP分片。附加系统ID和系统ID一样,在整个路由域中必须唯一。
l 虚拟系统(Virtual System):由附加系统ID标识的系统,用来生成扩展LSP分片。
l 原始LSP(Original LSP):由初始系统生成的LSP,在其LSP ID中指定的System ID为初始系统的系统ID。
l 扩展LSP(Extended LSP):由虚拟系统生成的LSP,在其LSP ID中指定的System ID为附加系统ID。
通过配置附加系统ID,IS-IS路由器可以在扩展分片LSP中宣告更多的链路状态信息,可以把虚拟系统看作一个虚拟的路由器,扩展分片LSP就是由附加系统ID标识的虚拟系统发布的。
(2) 操作模式
IS-IS路由器运行LSP分片扩展特性的操作模式有两种:
l Mode-1:当网络中的部分路由器不支持LSP分片扩展特性时,使用工作模式1。在该模式下,初始系统与每个虚拟系统都建立邻居关系,且初始系统到虚拟系统的链路开销为0,因此,虚拟系统就好象网络中与初始系统相连的路由器,但只能通过初始系统才能到达虚拟系统,因此,不支持分片扩展特性的IS-IS路由器收到扩展分片LSP时无需做任何修改也能够正常工作,但是对通过虚拟系统发布的扩展LSP分片中的链路状态信息有所限制。
l Mode-2:当网络中所有路由器都支持LSP分片扩展特性时,推荐使用工作模式2。在该模式下,网络中所有IS-IS路由器都知道虚拟系统生成的LSP属于的初始系统,因此对虚拟系统发布的LSP扩展分片的链路状态信息没有限制。
LSP分片扩展特性的操作模式基于区域和路由层次配置,mode-1的优点是向前兼容,能够与不支持分片扩展特性的路由器协同工作,但是对扩展分片发布的链路状态信息有所限制;mode-2对扩展分片发布的链路状态信息没有限制,当处在同一区域且Level相同的路由器都支持分片扩展特性时,推荐使用mode-2。
动态主机名交换机制是为了方便对IS-IS网络的维护和管理而引入的,它为IS-IS路由器提供了一种从主机名到System ID映射的服务。这个动态的主机名信息在LSP中以一个动态主机名CLV的形式发布。
这个机制同时还提供将主机名与广播网中的DIS相关联的服务,并将此信息通过伪节点的LSP以动态主机名CLV的形式发布出去。
在维护和管理中,使用主机名比使用System ID会更直观,也更容易记忆。配置此功能后,当在路由器上使用display命令显示IS-IS相关信息时,看到的是路由器的主机名,而不再是System ID。
l ISO 10589:ISO IS-IS Routing Protocol
l ISO 9542:ES-IS Routing Protocol
l ISO 8348:Ad2 Network Services Access Points
l RFC 1195:Use of OSI IS-IS for Routing in TCP/IP and Dual Environments
l RFC 2763:Dynamic Hostname Exchange Mechanism for IS-IS
l RFC 2966:Domain-wide Prefix Distribution with Two-Level IS-IS
l RFC 2973:IS-IS Mesh Groups
l RFC 3277:IS-IS Transient Blackhole Avoidance
l RFC 3358:Optional Checksums in ISIS
l RFC 3373:Three-Way Handshake for IS-IS Point-to-Point Adjacencies
l RFC 3567:Intermediate System to Intermediate System (IS-IS) Cryptographic Authentication
l RFC 3719:Recommendations for Interoperable Networks using IS-IS
l RFC 3786:Extending the Number of IS-IS LSP Fragments Beyond the 256 Limit
l RFC 3787:Recommendations for Interoperable IP Networks using IS-IS
l RFC 3847:Restart signaling for IS-IS
配置任务 |
说明 |
详细配置 |
|
配置IS-IS的基本功能 |
必选 |
||
配置IS-IS路由信息控制 |
配置IS-IS的链路开销 |
可选 |
|
配置IS-IS的链路开销 |
可选 |
||
配置IS-IS最大等价路由条数 |
可选 |
||
配置IS-IS路由聚合 |
可选 |
||
配置IS-IS生成缺省路由 |
可选 |
||
配置IS-IS对接收的路由信息进行过滤 |
可选 |
||
配置IS-IS引入外部路由 |
可选 |
||
配置IS-IS路由渗透 |
可选 |
||
配置IS-IS的调整和优化 |
配置接口的DIS优先级 |
可选 |
|
配置IS-IS报文定时器 |
可选 |
||
禁止接口发送和接收IS-IS Hello报文 |
可选 |
||
配置LSP的参数 |
可选 |
||
配置SPF的参数 |
可选 |
||
配置IS-IS动态主机名映射 |
可选 |
||
配置IS-IS的验证功能 |
可选 |
||
配置LSDB过载标志位 |
可选 |
||
配置邻接状态输出 |
可选 |
||
配置接口发送不加入填充字段的小型Hello报文 |
可选 |
||
配置使能IS-IS的TRAP功能 |
可选 |
||
配置IS-IS GR |
可选 |
在配置IS-IS之前,需配置接口的网络层地址,使相邻节点网络层可达。
表4-4 配置IS-IS的基本功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动IS-IS路由进程,进入IS-IS视图 |
isis [ process-id ] |
必选 缺省情况下,系统没有运行IS-IS |
配置网络实体名称 |
network-entity net |
必选 缺省情况下,没有配置NET |
配置路由器的类型 |
is-level { level-1 | level-1-2 | level-2 } |
可选 缺省情况下,路由器的类型为level-1-2 |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置指定接口上使能IS-IS路由进程 |
isis enable [ process-id ] |
必选 缺省情况下,接口上没有使能IS-IS路由进程 |
配置接口的网络类型为P2P |
isis circuit-type p2p |
可选 缺省情况下,路由器接口网络类型根据物理接口决定,交换机VLAN接口网络类型为Broadcast |
配置接口的链路邻接关系 |
isis circuit-level [ level-1 | level-1-2 | level-2 ] |
可选 缺省情况下,接口可以建立Level-1-2邻接关系 |
& 说明:
当路由器是Level-1或者Level-2类型时,接口的路由层次类型只能由路由器的类型决定,不能通过isis circuit-level命令改变;当路由器是Level-1-2类型时,接口的路由层次类型可以通过isis circuit-level命令改变,以建立不同层次的邻接关系。
在配置IS-IS路由信息之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达
l 配置IS-IS基本功能
一台路由器可同时运行多个路由协议,当多个路由协议都发现到同一目的地的路由时,将选用高优先级路由协议所发现的路由。以下配置用来为IS-IS路由设置优先级,使用路由策略可以为特定的路由设置特定的优先级,路由策略的相关知识请参考“路由策略配置”。
表4-5 配置IS-IS协议优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
配置IS-IS协议优先级 |
preference { route-policy route-policy-name | preference } * |
可选 缺省情况下,IS-IS协议的优先级为15 |
IS-IS有三种方式来确定接口的链路开销,按照接口开销值的选择次序由高到低分别是:
l 接口开销:为单个接口设置链路开销
l 全局开销:为所有接口设置链路开销
l 自动计算开销:根据接口带宽自动计算链路开销
缺省情况下,接口的开销值为系统设置的缺省值10。
表4-6 配置IS-IS的接口开销
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
设置IS-IS开销的类型 |
cost-style { narrow | wide | wide-compatible | { compatible | narrow-compatible } [ relax-spf-limit ] } |
可选 缺省情况下,IS-IS的开销类型为narrow |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置IS-IS接口的开销 |
isis cost value [ level-1 | level-2 ] |
必选 缺省情况下,没有配置IS-IS接口开销 |
表4-7 配置IS-IS的全局开销
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
配置IS-IS开销的类型 |
cost-style { narrow | wide | wide-compatible | { compatible | narrow-compatible } [ relax-spf-limit ] } |
可选 缺省情况下,IS-IS的开销类型为narrow |
配置IS-IS的全局开销值 |
circuit-cost value [ level-1 | level-2 ] |
必选 缺省情况下,没有配置IS-IS的全局开销值 |
该配置用于激活对应的IS-IS进程下的接口进行自动计算接口开销特性。
表4-8 配置IS-IS的自动计算开销
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
配置IS-IS开销的类型 |
cost-style { narrow | wide | wide-compatible | { compatible | narrow-compatible } [ relax-spf-limit ] } |
可选 缺省情况下,IS-IS的开销类型为narrow |
配置IS-IS自动计算开销时所依据的带宽参考值 |
bandwidth-reference value |
可选 缺省情况下,带宽参考值为100Mbps |
使能自动计算接口开销功能 |
auto-cost enable |
必选 缺省情况下,自动计算接口开销功能处于关闭状态 |
& 说明:
如果没有在接口视图或全局视图下配置接口开销值且使能了自动计算接口开销功能时:
l 当开销值类型为wide和wide-compatible时,IS-IS会根据该接口的带宽自动计算其开销值,计算公式为:接口开销=带宽参考值÷接口带宽,计算出来的开销值最大值为16777214。
l 当开销值类型为narrow、narrow-compatible和compatible时,如果接口是Loopback口,开销值取0,否则将按照如下条件自动计算,接口带宽为1M~10M时,接口开销值为60,接口带宽为11M~100M时,接口开销值为50,接口带宽为101M~155M时,接口开销值为40,接口带宽为156M~622M时,接口开销值为30,接口带宽为623M~2500M时,接口开销值为20,其它情况接口开销值为10。
如果到一个目的地有几条开销相同的路径,可以实现等价路由负载分担,以提高链路利用率。该配置用以设置IS-IS协议的最大等价路由条数。
表4-9 配置IS-IS最大等价路由条数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
配置在负载分担方式下IS-IS等价路由的最大数量 |
maximum load-balancing number |
可选 缺省情况下,负载分担方式下等价路由的最大数量为4 |
通过配置路由聚合,可以减小路由表规模,还可以减少本路由器生成的LSP报文大小和LSDB的规模。其中,被聚合的路由可以是IS-IS协议发现的路由,也可以是引入的外部路由。
表4-10 配置IS-IS路由聚合
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
配置IS-IS路由聚合 |
summary ip-address { mask | mask-length } [ avoid-feedback | generate_null0_route | tag tag | [ level-1 | level-1-2 | level-2 ] ] * |
必选 缺省情况下,没有对路由进行聚合 |
& 说明:
聚合后路由的开销值取所有被聚合路由中最小的开销值。
表4-11 配置IS-IS生成缺省路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
配置IS-IS生成缺省路由 |
default-route-advertise [ route-policy route-policy-name | [ level-1 | level-2 | level-1-2 ] ] * |
可选 缺省情况下,Level-2路由器生成缺省路由 |
& 说明:
该配置产生的缺省路由只被发布到同级别的路由器。通过使用路由策略,可以强制IS-IS只在路由表中有匹配的路由项时才生成缺省路由。
表4-12 配置IS-IS对接收的路由信息进行过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
配置IS-IS对接收的路由信息进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name | route-policy route-policy-name } import |
必选 缺省情况下,IS-IS不对接收的路由信息进行过滤 |
IS-IS将其它路由协议发现的路由当作外部路由处理。在引入其它协议路由时,可指定引入路由的缺省开销。还可以通过配置对引入路由进行过滤。
表4-13 配置IS-IS引入外部路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
引入其它协议的路由 |
import-route { isis [ process-id ] | ospf [ process-id ] | rip [ process-id ] | bgp [ allow-ibgp ] | direct | static } [ cost cost | cost-type { external | internal } | [ level-1 | level-1-2 | level-2 ] | route-policy route-policy-name | tag tag ] * |
必选 缺省情况下,IS-IS不引入其它协议的路由信息 如果import-route命令中不指定引入的级别,则默认为引入路由到Level-2路由表中 |
对引入的路由进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name | route-policy route-policy-name } export [ isis process-id | ospf process-id | rip process-id | bgp | direct | static ] |
可选 缺省情况下,IS-IS不对引入的路由信息进行过滤 |
通过IS-IS路由渗透功能,Level-1-2路由器可以将它所知道的Level-1区域路由信息和Level-2区域路由信息发布到Level-1路由器。
表4-14 配置IS-IS路由渗透
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
使能IS-IS路由渗透 |
import-route isis level-2 into level-1 [ filter-policy { acl-number | ip-prefix ip-prefix-name | route-policy route-policy-name } | tag tag ] * |
必选 缺省情况下,Level-2区域的路由信息不向Level-1区域发布 |
& 说明:
将Level-2区域的路由信息引入到Level-1区域时,需要注意:
l 如果指定了过滤策略,则只有通过过滤的路由才能够被发布到Level-1区域中。
l 如果要通过路由策略对从Level-2区域引入到Level-1区域的路由信息进行过滤,必须在import-route isis level-2 into level-1命令中同时指定要应用的路由策略,否则路由过滤将不会生效;其它路由策略,如在接收或引入路由时指定的路由策略对路由渗透无效。
在调整和优化IS-IS之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达
l 配置IS-IS基本功能
在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS。
对于IS-IS,Level-1和Level-2的DIS是分别选举的,可以为不同级别的DIS选举设置不同的优先级。优先级数值越高,被选中的可能性就越大。
表4-15 配置接口的DIS优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口的DIS优先级 |
isis dis-priority value [ level-1 | level-2 ] |
可选 缺省情况下,接口的DIS优先级为64 |
& 说明:
当广播网络中优先级最高的路由器有多台时,则其中MAC地址最大的路由器会被选中。如果所有路由器的DIS优先级都是0,仍然会选择其中MAC地址最大的路由器作为DIS。
表4-16 配置IS-IS报文定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置接口上Hello报文的发送间隔时间 |
isis timer hello seconds [ level-1 | level-2 ] |
可选 缺省情况下,Hello报文的发送间隔时间为10秒 |
设置Hello报文失效数目 |
isis timer holding-multiplier value [ level-1 | level-2 ] |
可选 缺省情况下,Hello报文失效数目为3 |
设置接口上CSNP报文的发送间隔时间 |
isis timer csnp seconds [ level-1 | level-2 ] |
可选 缺省情况下,CSNP报文发送间隔时间为10秒 |
设置接口上LSP报文的发送间隔时间 |
isis timer lsp time [ count count ] |
可选 缺省情况下,LSP报文的发送间隔为33毫秒 |
设置LSP报文在在点到点链路上的重传间隔 |
isis timer retransmit seconds |
可选 缺省情况下,LSP报文在在点到点链路上的重传间隔为5秒。 |
& 说明:
l 广播链路上存在Level-1和Level-2两种Hello报文,不同类型的报文可以设置不同的Hello报文发送间隔时间;如果配置时没有指定级别,将同时设置Level-1和Level-2的Hello报文的发送间隔时间,但只对IS-IS进程当前的级别生效;否则,将设置指定级别的Hello报文的发送间隔时间。在点到点链路上,Hello报文没有Level-1和Level-2之分,这时也无需设定报文类型。
l IS-IS协议通过Hello报文的收发来维护与相邻路由器的邻居关系,当本端路由器在一段时间内没有收到对端发送的Hello报文时,即连续没有收到指定数目的Hello报文后,将认为邻居路由器已经失效。在IS-IS中,邻居关系保持时间是通过设置Hello报文失效数目来调整的。
l CSNP报文是DIS(Designated IS)在广播型网络上同步LSDB所发送的,如果配置时没有指定级别,将同时设置Level-1和Level-2的CSNP报文的发送间隔时间,但只对IS-IS进程当前的级别生效;否则,将设置指定级别的CSNP报文的发送间隔时间。
l 在点到点的链路中,如果路由器在一段时间内没有收到本端发送的LSP的应答报文,则认为原先发送的LSP丢失或被丢弃,为保证发送的可靠性,本端路由器会将原先的LSP重新发送一次。在广播链路上发送的LSP报文不需要应答。
l DIS发送Hello报文的时间间隔是isis timer hello设置的时间的1/3。
表4-17 禁止接口发送和接收IS-IS Hello报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
禁止接口发送和接收IS-IS Hello报文 |
isis silent |
必选 缺省情况下,接口既发送也接收IS-IS Hello报文 |
为了保证整个区域中的LSP能够保持同步,IS-IS周期性发送当前全部LSP。
路由器生成系统LSP时,会在LSP中填写此LSP的存活时间。当此LSP被其它路由器接收后,它的存活时间会随着时间的变化不断减小,如果路由器一直没有收到更新的LSP,而此LSP的存活时间已减少到0,那么此LSP将被从LSDB中删除。
当IS-IS收到LSP时,要对它的校验和进行检验,如果发现报文中的校验和与计算出来的校验和不一致,则将此LSP丢弃,不作处理。可以设置忽略检验错误,即使检验出LSP的校验和错误,也将此报文按正常报文处理。
在NBMA网络上,路由器的一个接口收到一个新的LSP,会将该LSP扩散(Flooding)到路由器的其它接口。在连通程度比较高的、有多条点到点链路的网络中,这种处理方式会造成LSP重复扩散,导致带宽的浪费。为了避免这种情况的发生,可以将一些接口组成mesh group,一个组中的接口不把从本组接口接收的LSP扩散到同组中的其它接口,而只扩散到其它组的接口以及没有配置mesh group的接口。
表4-18 配置LSP的参数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
设置LSP刷新周期 |
timer lsp-refresh seconds |
可选 缺省情况下,LSP刷新周期为900秒 |
设置LSP最大有效时间 |
timer lsp-max-age seconds |
可选 缺省情况下,LSP最大有效时间为1200秒 |
设置LSP生成的时间间隔 |
timer lsp-generation maximum-interval [ initial-interval [ incremental-interval ] ] [ level-1 | level-2 ] |
可选 缺省情况下,LSP生成的时间间隔为2秒 |
使能LSP快速扩散功能 |
flash-flood [ flood-count flooding-count | max-timer-interval flooding-interval | [ level-1 | level-2 ] ] * |
可选 缺省情况下,禁止LSP快速扩散功能 |
设置生成的Level-1 LSP和Level-2 LSP报文的最大长度 |
lsp-length originate size [ level-1 | level-2 ] |
可选 缺省情况下,生成的Level-1 LSP和Level-2 LSP的最大长度为1497字节 |
设置接收LSP报文的最大长度 |
lsp-length receive size |
可选 缺省情况下,接收的LSP报文的最大长度为1497字节 |
使能IS-IS进程的LSP分片扩展功能 |
lsp-fragments-extend [ [ level-1 | level-2 | level-1-2 ] | [ mode-1 | mode-2 ] ] * |
可选 缺省情况下,关闭LSP分片扩展功能 |
配置IS-IS进程的虚拟系统ID |
virtual-system virtual-system-id |
可选 缺省情况下,没有配置IS-IS进程的虚拟系统ID |
退回到系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置接口加入mesh group |
isis mesh-group { mesh-group-number | mesh-blocked } |
可选 缺省情况下,接口不属于任何mesh group 当对接口设置了mesh-blocked参数后,将不再从该接口泛洪LSP,只有在收到请求的情况下才发送LSP报文。 |
& 说明:
使能LSP分片扩展功能时需要注意:
l IS-IS进程使能分片扩展功能后,使能该IS-IS进程的所有接口的MTU不能小于512,否则LSP分片扩展功能将不会生效。
l 为了使路由器生成扩展LSP分片,应至少配置一个虚拟System ID。
IS-IS协议中,当LSDB发生变化时需要进行路由计算。频繁的路由计算会占用大量的系统资源,导致系统性能下降,而周期性地计算SPF可以在一定程度上提高效率,计算SPF的时间间隔可以由用户根据需要进行配置。
当路由表中的路由数目很多时,IS-IS的SPF计算可能会长时间占用CPU资源,为防止这种情况的发生,可以设置每次SPF计算的持续时间。设置SPF分段计算后,一次运行未处理完的路由,等待10秒后继续计算。
表4-19 配置SPF参数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
设置IS-IS路由计算时间间隔 |
timer spf maximum-interval [ minimum-interval [ incremental-interval ] ] |
可选 缺省情况下,IS-IS路由计算的时间间隔为10秒 |
设置每次SPF计算的持续时间 |
spf-slice-size duration-time |
可选 缺省情况下,每次进行SPF计算所持续的时间为10毫秒 |
表4-20 配置IS-IS动态主机名映射
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
为本地IS配置主机名称 |
is-name sys-name |
必选 缺省情况下,没有为本地IS配置主机名 为本地IS-IS进程配置一个名称,并且使能系统ID到主机名的映射 |
为远端IS配置主机名称 |
is-name map sys-id map-sys-name |
可选 缺省情况下,不为远端的IS-IS路由器配置名称 在本地为远端的IS-IS路由器配置一个名称,每个System ID只能对应一个名称 |
退回到系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置本地局域网名称 |
isis dis-name symbolic-name |
可选 缺省情况下,没有配置本地局域网名称 该命令只有在使能了动态主机名进程的路由器上有效。该命令在点到点链路的接口上无效 |
& 说明:
本地IS配置的主机名称将覆盖远端IS为其配置的主机名称。
如果需要区域验证,区域验证密码就会按照设定的方式封装到Level-1的LSP、CSNP、PSNP报文中。如果同一区域内的其他路由器也启动了区域验证,那么这些路由器的验证方式和密码必须和最先设置区域验证的路由器的相符才能正常工作。
同样,对于路由域验证的情况,域验证密码也会按照设定的方式封装到Level-2的LSP、CSNP、PSNP报文。如果骨干层(Level-2)的其他路由器也需要路由域验证,验证方式和密码必须和最先设置路由域验证的路由器的相符才行。
在接口上配置的验证用在Hello报文中,以确认邻居的有效性和正确性。配置时,应保证同一网络所有接口的相同级别的验证密码一致。
表4-21 配置IS-IS的验证功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
设置区域验证模式 |
area-authentication-mode { simple | md5 } password [ ip | osi ] |
必选 缺省情况下,系统不验证收到的Level-1路由信息报文,也没有密码 |
设置路由域验证模式 |
domain-authentication-mode { simple | md5 } password [ ip | osi ] |
必选 缺省情况下,系统不验证收到的Level-2路由信息报文,也没有密码 |
退回到系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置接口的IS-IS验证模式和密码 |
isis authentication-mode { simple | md5 } password [ level-1 | level-2 ] [ ip | osi ] |
可选 缺省情况下,不设置密码,也不做验证 |
& 说明:
isis authentication-mode命令的参数level-1和level-2仅在交换机的VLAN接口上是可见的,而且必须先使用isis enable命令使能该接口。
当设置了过载标志位后,其他路由器就不会再将需要该路由器转发的报文转发给该路由器,但目的地址是该路由器直连地址的报文仍然会转发给它。
如果IS-IS域中的某台路由器发生问题,会导致整个区域路由的计算错误。在故障排除过程中,通过给怀疑有问题的路由器设置过载标志位,可以将其从IS-IS网络中暂时隔离,以便于进行故障定位。
表4-22 配置LSDB过载标志位
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
设置过载标志位 |
set-overload [ on-startup [ [ start-from-nbr system-id [ timeout1 [ nbr-timeout ] ] ] | timeout2 ] [ allow { interlevel | external } * ] |
必选 缺省情况下,不设置过载标志位 |
表4-23 配置邻接状态输出
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
打开邻接状态输出开关 |
log-peer-change |
必选 缺省情况下,输出开关打开 |
& 说明:
当打开邻接状态输出开关后,IS-IS邻接状态的变化会输出到配置终端上,直至邻接状态输出开关被关闭。
表4-24 配置接口发送不加入填充字段的小型Hello报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置接口发送不加入填充字段的小型Hello报文 |
isis small-hello |
必选 缺省情况下,接口发送标准Hello报文 |
表4-25 配置使能IS-IS的TRAP功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
使能IS-IS的TRAP功能 |
is-snmp-traps enable |
必选 缺省情况下,使能IS-IS的TRAP功能 |
在普通的路由协议重启的情况下,路由器与其它邻居的邻接关系被拆除。此时会引起网络暂时的中断。
基于IS-IS的GR可以解决这个问题:重启路由器将重启状态通知给邻居,允许邻居重新建立邻接关系而不终止连接。
基于IS-IS的GR特性有以下几个优点:
l 发生了协议重启时,应用了GR特性的设备可重新向邻居发送连接请求,而不会终止邻接关系。
l GR最大限度地减轻了生成LSP报文前因等待数据库同步而导致的网络干扰。
l 对于第一次启动的路由器,在LSP报文中设置过载标记位直到数据库同步,可以保证网络不产生路由环路。
重启间隔时间用来指定路由器的重启时间。重启间隔时间在IS-IS的Hello PDU中设置为保持时间,这样在该路由器重启的时间内邻居不会断掉与其的邻接关系。
配置重启时抑制SA(Suppress-Advertisement)位,即在重启路由器的Hello PDU中设置抑制发布SA位。这时,重启路由器的邻居在设置的时间段内不发布邻接关系,直到重启路由器的数据库与邻居路由器完成同步。使能该特性,可有效避免GR重启过程中,因发送/接收LSP引起的黑洞效应。
分别在作为GR Restarter和GR Helper的设备上进行以下配置。
& 说明:
一台设备可以同时充当GR Restarter和GR Helper。
表4-26 配置IS-IS GR
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IS-IS路由进程,进入IS-IS视图 |
isis [ process-id ] |
必选 缺省情况下,系统没有运行IS-IS |
使能IS-IS协议的GR能力 |
graceful-restart |
必选 缺省情况下,IS-IS协议的GR能力处于关闭状态 |
配置IS-IS协议的GR重启间隔时间 |
graceful-restart interval timer |
可选 缺省情况下,IS-IS协议的GR重启间隔时间为300秒 |
配置重启时抑制SA位 |
graceful-restart suppress-sa |
可选 缺省情况下,重启时不抑制SA位 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后IS-IS的运行情况,用户可以通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除IS-IS的数据库信息,或者复位特定邻居的数据信息。
表4-27 IS-IS显示和维护
操作 |
命令 |
显示IS-IS的摘要信息 |
display isis brief [ process-id ] |
显示使能IS-IS的接口信息 |
display isis interface [ verbose ] [ process-id ] |
显示IS-IS的许可证信息 |
display isis license |
显示IS-IS的链路状态数据库 |
display isis lsdb [ [ l1 | l2 | level-1 | level-2 ] | [ lsp-id LSPID | lsp-name lspname ] | local | verbose ] * [ process-id ] |
显示IS-IS的mesh-group |
display isis mesh-group [ process-id ] |
显示本地路由器名称到系统ID的映射关系表 |
display isis name-table [ process-id ] |
显示IS-IS的邻居信息 |
display isis peer [ verbose ] [ process-id ] |
显示IS-IS路由信息 |
display isis route [ ipv4 ] [ [ level-1 | level-2 ] | verbose ] * [ process-id ] |
显示IS-IS的SPF计算日志记录 |
display isis spf-log [ process-id ] |
显示IS-IS进程的统计信息 |
display isis statistics [ level-1 | level-2 | level-1-2 ] [ process-id ] |
显示IS-IS协议的GR状态 |
display isis graceful-restart status [ level-1 | level-2 ] [ process-id ] |
清除所有IS-IS的数据结构信息 |
reset isis all [ process-id ] |
清除IS-IS特定邻居的数据信息 |
reset isis peer system-id [ process-id ] |
如下图所示,Switch A、Switch B、Switch C和Switch D属于同一自治系统,要求他们之间通过IS-IS协议达到IP网络互连的目的。
其中,Switch A和Switch B为Level-1交换机,Switch D为Level-2交换机,Switch C作为Level-1-2交换机将两个区域相连。Switch A、Switch B和Switch C的区域号为10,Switch D的区域号为20。
(1) 配置各接口的IPv4地址(略)
(2) 配置IS-IS
# 配置Switch A。
<SwitchA> system-view
[SwitchA] isis 1
[SwitchA-isis-1] is-level level-1
[SwitchA-isis-1] network-entity 10.0000.0000.0001.00
[SwitchA-isis-1] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] isis enable 1
[SwitchA-Vlan-interface100] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] isis 1
[SwitchB-isis-1] is-level level-1
[SwitchB-isis-1] network-entity 10.0000.0000.0002.00
[SwitchB-isis-1] quit
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] isis enable 1
[SwitchB-Vlan-interface200] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] isis 1
[SwitchC-isis-1] network-entity 10.0000.0000.0003.00
[SwitchC-isis-1] quit
[SwitchC] interface vlan-interface 100
[SwitchC-Vlan-interface100] isis enable 1
[SwitchC-Vlan-interface100] quit
[SwitchC] interface vlan-interface 200
[SwitchC-Vlan-interface200] isis enable 1
[SwitchC-Vlan-interface200] quit
[SwitchC] interface vlan-interface 300
[SwitchC-Vlan-interface300] isis enable 1
[SwitchC-Vlan-interface300] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] isis 1
[SwitchD-isis-1] is-level level-2
[SwitchD-isis-1] network-entity 20.0000.0000.0004.00
[SwitchD-isis-1] quit
[SwitchD] interface vlan-interface 100
[SwitchD-Vlan-interface100] isis enable 1
[SwitchD-Vlan-interface100] quit
[SwitchD] interface vlan-interface 300
[SwitchD-Vlan-interface300] isis enable 1
[SwitchD-Vlan-interface300] quit
(3) 验证配置结果
# 显示各交换机的IS-IS LSDB信息,查看LSP是否完整。
[SwitchA] display isis lsdb
Database information for ISIS(1)
--------------------------------
Level-1 Link State Database
LSPID Seq Num Checksum Holdtime Length ATT/P/OL
--------------------------------------------------------------------------
0000.0000.0001.00-00* 0x00000004 0xdf5e 1096 68 0/0/0
0000.0000.0002.00-00 0x00000004 0xee4d 1102 68 0/0/0
0000.0000.0002.01-00 0x00000001 0xdaaf 1102 55 0/0/0
0000.0000.0003.00-00 0x00000009 0xcaa3 1161 111 1/0/0
0000.0000.0003.01-00 0x00000001 0xadda 1112 55 0/0/0
*-Self LSP, +-Self LSP(Extended), ATT-Attached, P-Partition, OL-Overload
[SwitchB] display isis lsdb
Database information for ISIS(1)
--------------------------------
Level-1 Link State Database
LSPID Seq Num Checksum Holdtime Length ATT/P/OL
--------------------------------------------------------------------------
0000.0000.0001.00-00 0x00000006 0xdb60 988 68 0/0/0
0000.0000.0002.00-00* 0x00000008 0xe651 1189 68 0/0/0
0000.0000.0002.01-00* 0x00000005 0xd2b3 1188 55 0/0/0
0000.0000.0003.00-00 0x00000014 0x194a 1190 111 1/0/0
0000.0000.0003.01-00 0x00000002 0xabdb 995 55 0/0/0
*-Self LSP, +-Self LSP(Extended), ATT-Attached, P-Partition, OL-Overload
[SwitchC] display isis lsdb
Database information for ISIS(1)
--------------------------------
Level-1 Link State Database
LSPID Seq Num Checksum Holdtime Length ATT/P/OL
--------------------------------------------------------------------------
0000.0000.0001.00-00 0x00000006 0xdb60 847 68 0/0/0
0000.0000.0002.00-00 0x00000008 0xe651 1053 68 0/0/0
0000.0000.0002.01-00 0x00000005 0xd2b3 1052 55 0/0/0
0000.0000.0003.00-00* 0x00000014 0x194a 1051 111 1/0/0
0000.0000.0003.01-00* 0x00000002 0xabdb 854 55 0/0/0
*-Self LSP, +-Self LSP(Extended), ATT-Attached, P-Partition, OL-Overload
Level-2 Link State Database
LSPID Seq Num Checksum Holdtime Length ATT/P/OL
--------------------------------------------------------------------------
0000.0000.0003.00-00* 0x00000012 0xc93c 842 100 0/0/0
0000.0000.0004.00-00 0x00000026 0x331 1173 84 0/0/0
0000.0000.0004.01-00 0x00000001 0xee95 668 55 0/0/0
*-Self LSP, +-Self LSP(Extended), ATT-Attached, P-Partition, OL-Overload
[SwitchD] display isis lsdb
Database information for ISIS(1)
--------------------------------
Level-2 Link State Database
LSPID Seq Num Checksum Holdtime Length ATT/P/OL
--------------------------------------------------------------------------
0000.0000.0003.00-00 0x00000013 0xc73d 1003 100 0/0/0
0000.0000.0004.00-00* 0x0000003c 0xd647 1194 84 0/0/0
0000.0000.0004.01-00* 0x00000002 0xec96 1007 55 0/0/0
*-Self LSP, +-Self LSP(Extended), ATT-Attached, P-Partition, OL-Overload
# 显示各交换机的IS-IS路由信息。Level-1交换机的路由表中应该有一条缺省路由,且下一跳为Level-1-2交换机,Level-2交换机的路由表中应该有所有Level-1和Level-2的路由。
[SwitchA] display isis route
Route information for ISIS(1)
-----------------------------
ISIS(1) IPv4 Level-1 Forwarding Table
-------------------------------------
IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags
--------------------------------------------------------------------------
10.1.1.0/24 10 NULL Vlan100 Direct D/L/-
10.1.2.0/24 20 NULL Vlan100 10.1.1.1 R/-/-
192.168.0.0/24 20 NULL Vlan100 10.1.1.1 R/-/-
0.0.0.0/0 10 NULL Vlan100 10.1.1.1 R/-/-
Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set
[SwitchC] display isis route
Route information for ISIS(1)
-----------------------------
ISIS(1) IPv4 Level-1 Forwarding Table
-------------------------------------
IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags
--------------------------------------------------------------------------
192.168.0.0/24 10 NULL Vlan300 Direct D/L/-
10.1.1.0/24 10 NULL Vlan100 Direct D/L/-
10.1.2.0/24 10 NULL Vlan200 Direct D/L/-
Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set
ISIS(1) IPv4 Level-2 Forwarding Table
-------------------------------------
IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags
--------------------------------------------------------------------------
192.168.0.0/24 10 NULL Vlan300 Direct D/L/-
10.1.1.0/24 10 NULL Vlan100 Direct D/L/-
10.1.2.0/24 10 NULL Vlan200 Direct D/L/-
172.16.0.0/16 20 NULL Vlan300 192.168.0.2 R/-/-
Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set
[SwitchD] display isis route
Route information for ISIS(1)
-----------------------------
ISIS(1) IPv4 Level-2 Forwarding Table
-------------------------------------
IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags
--------------------------------------------------------------------------
192.168.0.0/24 10 NULL Vlan300 Direct D/L/-
10.1.1.0/24 20 NULL Vlan300 192.168.0.1 R/-/-
10.1.2.0/24 20 NULL Vlan300 192.168.0.1 R/-/-
172.16.0.0/16 10 NULL Vlan100 Direct D/L/-
Flags: D-Direct, R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set
如下图所示,Switch A、Switch B、Switch C和Switch D都运行IS-IS路由协议以实现互连,它们属于同一区域10,网络类型为广播网(以太网)。其中Switch A和Switch B是Level-1-2交换机,Switch C为Level-1交换机,Switch D为Level-2交换机。
要求通过改变接口的DIS优先级,将Switch A配置为Level-1-2的DIS。
图4-15 配置IS-IS的DIS选择组网图
(1) 配置各接口的IPv4地址(略)
(2) 配置IS-IS
# 配置Switch A。
<SwitchA> system-view
[SwitchA] isis 1
[SwitchA-isis-1] network-entity 10.0000.0000.0001.00
[SwitchA-isis-1] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] isis enable 1
[SwitchA-Vlan-interface100] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] isis 1
[SwitchB-isis-1] network-entity 10.0000.0000.0002.00
[SwitchB-isis-1] quit
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] isis enable 1
[SwitchB-Vlan-interface100] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] isis 1
[SwitchC-isis-1] network-entity 10.0000.0000.0003.00
[SwitchC-isis-1] is-level level-1
[SwitchC-isis-1] quit
[SwitchC] interface vlan-interface 100
[SwitchC-Vlan-interface100] isis enable 1
[SwitchC-Vlan-interface100] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] isis 1
[SwitchD-isis-1] network-entity 10.0000.0000.0004.00
[SwitchD-isis-1] is-level level-2
[SwitchD-isis-1] quit
[SwitchD] interface vlan-interface 100
[SwitchD-Vlan-interface100] isis enable 1
[SwitchD-Vlan-interface100] quit
# 查看Switch A的IS-IS邻居信息。
[SwitchA] display isis peer
Peer information for ISIS(1)
----------------------------
System Id: 0000.0000.0002
Interface: Vlan-interface100 Circuit Id: 0000.0000.0003.01
State: Up HoldTime: 21s Type: L1(L1L2) PRI: 64
System Id: 0000.0000.0003
Interface: Vlan-interface100 Circuit Id: 0000.0000.0003.01
State: Up HoldTime: 27s Type: L1 PRI: 64
System Id: 0000.0000.0002
Interface: Vlan-interface100 Circuit Id: 0000.0000.0004.01
State: Up HoldTime: 28s Type: L2(L1L2) PRI: 64
System Id: 0000.0000.0004
Interface: Vlan-interface100 Circuit Id: 0000.0000.0004.01
State: Up HoldTime: 30s Type: L2 PRI: 64
# 显示Switch A的IS-IS接口信息。
[SwitchA] display isis interface
Interface information for ISIS(1)
---------------------------------
Interface: Vlan-interface100
Id IPV4.State IPV6.State MTU Type DIS
001 Up Down 1497 L1/L2 No/No
# 显示Switch C的IS-IS接口信息。
[SwitchC] display isis interface
Interface information for ISIS(1)
---------------------------------
Interface: Vlan-interface100
Id IPV4.State IPV6.State MTU Type DIS
001 Up Down 1497 L1/L2 Yes/No
# 显示Switch D的IS-IS接口信息。
[SwitchD] display isis interface
Interface information for ISIS(1)
---------------------------------
Interface: Vlan-interface100
Id IPV4.State IPV6.State MTU Type DIS
001 Up Down 1497 L1/L2 No/Yes
& 说明:
从接口信息中可以看到,在使用缺省DIS优先级的情况下,Switch C为Level-1的DIS,Switch D为Level-2的DIS。Level-1和Level-2的伪节点分别是0000.0000.0003.01和0000.0000.0004.01。
(3) 配置Switch A的DIS优先级
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] isis dis-priority 100
[SwitchA-Vlan-interface100] quit
# 查看Switch A的IS-IS邻居信息。
[SwitchA] display isis peer
Peer information for ISIS(1)
----------------------------
System Id: 0000.0000.0002
Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01
State: Up HoldTime: 21s Type: L1(L1L2) PRI: 64
System Id: 0000.0000.0003
Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01
State: Up HoldTime: 27s Type: L1 PRI: 64
System Id: 0000.0000.0002
Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01
State: Up HoldTime: 28s Type: L2(L1L2) PRI: 64
System Id: 0000.0000.0004
Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01
State: Up HoldTime: 30s Type: L2 PRI: 64
# 查看Switch A的IS-IS接口信息。
[SwitchA] display isis interface
Interface information for ISIS(1)
---------------------------------
Interface: Vlan-interface100
Id IPV4.State IPV6.State MTU Type DIS
001 Up Down 1497 L1/L2 Yes/Yes
& 说明:
从上述信息中可以看到,在改变IS-IS接口的DIS优先级后,Switch A立即成为Level-1-2的DR(DIS),且伪节点是0000.0000.0001.01。
# 显示Switch C的IS-IS邻居和接口信息。
[SwitchC] display isis peer
Peer information for ISIS(1)
----------------------------
System Id: 0000.0000.0002
Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01
State: Up HoldTime: 25s Type: L1 PRI: 64
System Id: 0000.0000.0001
Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01
State: Up HoldTime: 7s Type: L1 PRI: 100
[SwitchC] display isis interface
Interface information for ISIS(1)
---------------------------------
Interface: Vlan-interface100
Id IPV4.State IPV6.State MTU Type DIS
001 Up Down 1497 L1/L2 No/No
# 显示Switch D的IS-IS邻居和接口信息。
[SwitchD] display isis peer
Peer information for ISIS(1)
----------------------------
System Id: 0000.0000.0001
Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01
State: Up HoldTime: 9s Type: L2 PRI: 100
System Id: 0000.0000.0002
Interface: Vlan-interface100 Circuit Id: 0000.0000.0001.01
State: Up HoldTime: 28s Type: L2 PRI: 64
[SwitchD] display isis interface
Interface information for ISIS(1)
---------------------------------
Interface: Vlan-interface100
Id IPV4.State IPV6.State MTU Type DIS
001 Up Down 1497 L1/L2 No/No
如图4-16所示,Switch A、Switch B和Switch C属于同一域,交换机运行IS-IS路由协议实现网络互通。
(1) 配置各交换机接口的IP地址和IS-IS协议
请按照图4-16配置各接口的IP地址和子网掩码,具体配置过程略。
配置各交换机之间采用IS-IS协议进行互连,确保Switch A、Switch B和Switch C之间能够在网络层互通,并且各交换机之间能够借助IS-IS协议实现动态路由更新,具体配置过程略。
(2) 配置IS-IS GR
# 使能Switch A的IS-IS协议的GR能力,并配置重启间隔时间。
<SwitchA> system-view
[SwitchA] isis 1
[SwitchA-isis-1] graceful-restart
[SwitchA-isis-1] graceful-restart interval 150
[SwitchA-isis-1] return
Switch B和Switch C的配置与Switch A相似,配置过程略。
(3) 检验配置效果
Switch A分别与Switch B和Switch C建立邻接关系后,三台交换机开始交换路由信息。Switch A的IS-IS协议重启,进入重启模式后,通过GR机制向邻居重新发送连接请求,同步数据库。使用display isis graceful-restart status命令,可查看Switch A上IS-IS协议的GR状态。
# 重启Switch A。
<SwitchA> reset isis all 1
Warning : Reset ISIS process? [Y/N]:y
# 查看Switch A上IS-IS协议的GR状态。
<SwitchA> display isis graceful-restart status
Restart information for ISIS(1)
-------------------------------
IS-IS(1) Level-1 Restart Status
Restart Interval: 150
SA Bit Supported
Total Number of Interfaces = 1
Restart Status: RESTARTING
T3 Timer Status:
Remaining Time: 65535
T2 Timer Status:
Remaining Time: 59
Interface Vlan1
T1 Timer Status:
Remaining Time: 1
RA Not Received
Complete CSNP Not Received
Number of T1 Pre Expiry: 0
IS-IS(1) Level-2 Restart Status
Restart Interval: 150
SA Bit Supported
Total Number of Interfaces = 1
Restart Status: RESTARTING
T3 Timer Status:
Remaining Time: 65535
T2 Timer Status:
Remaining Time: 59
Interface Vlan1
T1 Timer Status:
Remaining Time: 1
RA Not Received
Complete CSNP Not Received
Number of T1 Pre Expiry: 0
& 说明:
本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。为提高可读性,在手册的描述中将不另行说明。
BGP(Border Gateway Protocol,边界网关协议)是一种用于AS(Autonomous System,自治系统)之间的动态路由协议。AS是拥有同一选路策略,在同一技术管理部门下运行的一组路由器。
早期发布的三个版本分别是BGP-1(RFC 1105)、BGP-2(RFC 1163)和BGP-3(RFC 1267),当前使用的版本是BGP-4(RFC 1771)。BGP-4做为事实上的Internet外部路由协议标准,被广泛应用于ISP(Internet Service Provider,因特网服务提供商)之间。
& 说明:
下文中若不做特殊说明,所指的BGP均为BGP-4。
BGP特性描述如下:
l BGP是一种外部网关协议(Exterior Gateway Protocol,EGP),与OSPF、RIP等内部网关协议(Interior Gateway Protocol,IGP)不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。
l BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性。
l BGP支持CIDR(Classless Inter-Domain Routing,无类别域间路由)。
l 路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。
l BGP路由通过携带AS路径信息彻底解决路由环路问题。
l BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。
l BGP易于扩展,能够适应网络新的发展。
发送BGP消息的路由器称为BGP发言者(BGP Speaker),它接收或产生新的路由信息,并发布(Advertise)给其它BGP发言者。当BGP发言者收到来自其它自治系统的新路由时,如果该路由比当前已知路由更优、或者当前还没有该路由,它就把这条路由发布给自治系统内所有其它BGP发言者。
相互交换消息的BGP发言者之间互称对等体(Peer),若干相关的对等体可以构成对等体组(Peer group)。
BGP在路由器上以下列两种方式运行:
l IBGP(Internal BGP):当BGP运行于同一自治系统内部时,被称为IBGP;
l EBGP(External BGP):当BGP运行于不同自治系统之间时,称为EBGP。
BGP有5种消息类型:Open、Update、Notification、Keepalive和Route-refresh。这些消息有相同的报文头,其格式如图5-1所示。
主要字段的解释如下:
l Marker:16字节,用于BGP验证的计算,不使用验证时所有比特均为“1”。
l Length:2字节,BGP消息总长度(包括报文头在内),以字节为单位。
l Type:1字节,BGP消息的类型。其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh消息。其中,前四种消息是在RFC 1771中定义,而Type为5的消息则是在RFC 2918中定义的。
Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。其消息格式如图5-2所示。
主要字段的解释如下:
l Version:BGP的版本号。对于BGP-4来说,其值为4。
l My Autonomous System:本地AS号。通过比较两端的AS号可以确定是EBGP连接还是IBGP连接。
l Hold Time:保持时间。在建立对等体关系时两端要协商Hold Time,并保持一致。如果在这个时间内未收到对端发来的Keepalive消息或Update消息,则认为BGP连接中断。
l BGP Identifier:BGP标识符。以IP地址的形式表示,用来识别BGP路由器。
l Opt Parm Len(Optional Parameters Length):可选参数的长度。如果为0则没有可选参数。
l Optional Parameters:可选参数。用于BGP验证或多协议扩展(Multiprotocol Extensions)等功能。
Update消息用于在对等体之间交换路由信息。它可以发布一条可达路由信息,也可以撤销多条不可达路由信息。其消息格式如图5-3所示。
一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI(Network Layer Reachable Information,网络层可达信息)字段中,Path Attributes字段携带了这些路由的属性,BGP根据这些属性进行路由的选择,同时还可以携带多条不可达路由,被撤销的路由放在Withdrawn Routes字段中。
主要字段的解释如下:
l Unfeasible Routes Length:不可达路由字段的长度,以字节为单位。如果为0则说明没有Withdrawn Routes字段。
l Withdrawn Routes:不可达路由的列表。
l Total Path Attribute Length:路径属性字段的长度,以字节为单位。如果为0则说明没有Path Attributes字段。
l Path Attributes:与NLRI相关的所有路径属性列表,每个路径属性由一个TLV(Type-Length-Value)三元组构成。BGP正是根据这些属性值来避免环路,进行选路,协议扩展等。
l NLRI(Network Layer Reachability Information):可达路由的前缀和前缀长度二元组。
当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。其消息格式如图5-4所示。
主要字段的解释如下:
l Error Code:差错码,指定错误类型。
l Error Subcode:差错子码,错误类型的详细信息。
l Data:用于辅助发现错误的原因,它的内容依赖于具体的差错码和差错子码,记录的是出错部分的数据,长度不固定。
BGP会周期性地向对等体发出Keepalive消息,用来保持连接的有效性。其消息格式中只包含报文头,没有附加其他任何字段。
Route-refresh消息用来要求对等体重新发送指定地址族的路由信息。其消息格式如图5-5所示。
主要的字段解释如下:
l AFI:Address Family Identifier,地址族标识。
l Res.:保留,必须置0。
l SAFI:Subsequent Address Family Identifier,子地址族标识。
BGP路由属性是一组参数,它对特定的路由进行了进一步的描述,使得BGP能够对路由进行过滤和选择。
事实上,所有的BGP路由属性都可以分为以下四类:
l 公认必须遵循(Well-known mandatory):所有BGP路由器都必须能够识别这种属性,且必须存在于Update消息中。如果缺少这种属性,路由信息就会出错。
l 公认可选(Well-known discretionary):所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来选择。
l 可选过渡(Optional transitive):在AS之间具有可传递性的属性。BGP路由器可以不支持此属性,但它仍然会接收带有此属性的路由,并通告给其他对等体。
l 可选非过渡(Optional non-trasitive):如果BGP路由器不支持此属性,该属性被忽略,且不会通告给其他对等体。
BGP路由几种基本属性和对应的类别如表5-1所示。
属性名称 |
类别 |
ORIGIN |
公认必须遵循 |
AS_PATH |
公认必须遵循 |
NEXT_HOP |
公认必须遵循 |
LOCAL_PREF |
公认可选 |
ATOMIC_AGGREGATE |
公认可选 |
AGGREGATOR |
可选过渡 |
COMMUNITY |
可选过渡 |
MULTI_EXIT_DISC (MED) |
可选非过渡 |
ORIGINATOR_ID |
可选非过渡 |
CLUSTER_LIST |
可选非过渡 |
(1) 源(ORIGIN)属性
ORIGIN属性定义路由信息的来源,标记一条路由是怎么成为BGP路由的。它有以下三种类型:
l IGP:优先级最高,说明路由产生于本AS内。
l EGP:优先级次之,说明路由通过EGP学到。
l incomplete:优先级最低,它并不是说明路由不可达,而是表示路由的来源无法确定。例如,引入的其它路由协议的路由信息。
(2) AS路径(AS_PATH)属性
AS_PATH属性按一定次序记录了某条路由从本地到目的地址所要经过的所有AS号。当BGP将一条路由通告到其他AS时,便会把本地AS号添加在AS_PATH列表的最前面。收到此路由的BGP路由器根据AS_PATH属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。如图5-6所示。
通常情况下,BGP不会接受AS_PATH中已包含本地AS号的路由,从而避免了形成路由环路的可能。
& 说明:
根据某些特殊的具体应用需求,可以通过配置peer allow-as-loop命令允许AS号重复。
同时,AS_PATH属性也可用于路由的选择和过滤。在其他因素相同的情况下,BGP会优先选择路径较短的路由。比如在上图中,AS 50中的BGP路由器会选择经过AS 40的路径作为到目的地址8.0.0.0的最优路由。
在某些应用中,可以使用路由策略来人为的增加AS路径的长度,以便更为灵活地控制BGP路径的选择。
通过配置AS路径过滤列表,还可以针对AS_PATH属性中所包含的AS号来对路由进行过滤。
(3) 下一跳(NEXT_HOP)属性
BGP的下一跳属性和IGP的有所不同,不一定就是邻居路由器的IP地址。
下一跳属性取值情况分为三种,如图5-7所示。
l BGP发言者把自己产生的路由发给所有邻居时,将把该路由信息的下一跳属性设置为自己与对端连接的接口地址;
l BGP发言者把接收到的路由发送给EBGP对等体时,将把该路由信息的下一跳属性设置为本地与对端连接的接口地址;
l BGP发言者把从EBGP邻居得到的路由发给IBGP邻居时,并不改变该路由信息的下一跳属性。如果配置了负载分担,路由被发给IBGP邻居时则会修改下一跳属性。关于“负载分担”的概念请参见“5.1.3 BGP的选路规则”。
(4) MED(MULTI_EXIT_DISC)
MED属性仅在相邻两个AS之间交换,收到此属性的AS一方不会再将其通告给任何其他第三方AS。
MED属性相当于IGP使用的度量值(metrics),它用于判断流量进入AS时的最佳路由。当一个运行BGP的路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。如图5-8所示,从AS 10到AS 20的流量将选择Router B作为入口。
通常情况下,BGP只比较来自同一个AS的路由的MED属性值。
& 说明:
通过配置compare-different-as-med命令,可以强制BGP比较来自不同AS的路由的MED属性值。
(5) 本地优先(LOCAL_PREF)属性
LOCAL_PREF属性仅在IBGP对等体之间交换,不通告给其他AS。它表明BGP路由器的优先级。
LOCAL_PREF属性用于判断流量离开AS时的最佳路由。当BGP的路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。如图5-9所示,从AS 20到AS 10的流量将选择Router C作为出口。
(6) 团体(COMMUNITY)属性
团体属性用来简化路由策略的应用和降低维护管理的难度。它是一组有 相同特征的目的地址的集合,没有物理上的边界,与其所在的AS无关。公认的团体属性有:
l INTERNET:缺省情况下,所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。
l NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS(关于联盟的定义请参见“5.1.5 大规模BGP网络所遇到的问题”)。
l NO_ADVERTISE:具有此属性的路由被接收后,不能被通告给任何其他的BGP对等体。
l NO_EXPORT_SUBCONFED:具有此属性的路由被接收后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。
BGP选择路由时采取如下策略:
l 首先丢弃下一跳(NEXT_HOP)不可达的路由;
l 优选Preferred-value值最大的路由;
l 优选本地优先级(LOCAL_PREF)最高的路由;
l 优选本路由器始发的路由;
l 优选AS路径(AS_PATH)最短的路由;
l 依次选择ORIGIN类型为IGP、EGP、Incomplete的路由;
l 优选MED值最低的路由;
l 依次选择从EBGP、联盟、IBGP学来的路由;
l 优选下一跳Cost值最低的路由;
l 优选CLUSTER_LIST长度最短的路由;
l 优选ORIGINATOR_ID最小的路由;
& 说明:
l CLUSTER_ID为路由反射器的集群ID,CLUSTER_LIST由CLUSTER_ID序列组成,反射器将自己的CLUSTER_ID加入CLUSTER_LIST中,若反射器收到路由中CLUSTER_LIST中包含有自己的CLUSTER_ID,则丢弃该路由,从而避免群内环路的发生。
l 如果配置了负载分担,并且有多条到达同一目的地的路由,则根据配置的路由条数选择多条路由进行负载分担。
在BGP中,由于协议本身的特殊性,它产生的路由的下一跳地址可能不是当前路由器直接相连的邻居。常见的一个原因是:IBGP之间发布路由信息时不改变下一跳。这种情况下,为了能够将报文正确转发出去,路由器必须先找到一个直接可达的地址(查找IGP建立的路由表项),通过这个地址到达路由表中指示的下一跳。在上述过程中,去往直接可达地址的路由被称为依赖路由,BGP路由依赖于这些路由指导报文转发。根据下一跳地址找到依赖路由的过程就是路由迭代(recursion)。
基于迭代的BGP负载分担,即如果依赖路由本身是负载分担的(假设有三个下一跳地址),则BGP也会生成相同数量的下一跳地址来指导报文转发。需要说明的是,基于迭代的BGP负载分担并不需要命令配置,这一特性在交换机上始终启用。
在实现方法上,BGP的负载分担与IGP的负载分担有所不同:
l IGP是通过协议定义的路由算法,对到达同一目的地址的不同路由,根据计算结果,将度量值(metric)相等的(如RIP、OSPF)路由进行负载分担,选择的标准很明确(按metric)。
l BGP本身并没有路由计算的算法,它只是一个选路的路由协议,因此,不能根据一个明确的度量值决定是否对路由进行负载分担,但BGP有丰富的选路规则,可以在对路由进行一定的选择后,有条件地进行负载分担,也就是将负载分担加入到BGP的选路规则中去。
& 说明:
l BGP只对AS_PATH属性、ORIGIN属性、LOCAL_PREF和MED值完全相同的路由进行负载分担。
l BGP负载分担特性适用于EBGP、IBGP以及联盟之间。
l 如果有多条到达同一目的地的路由,则根据配置的路由条数选择多条路由进行负载分担。
图5-10 BGP负载分担示意图
在图5-10中,Router D和Router E是Router C的IBGP对等体。当Router A和Router B同时向Router C通告到达同一目的地的路由时,如果用户在Router C配置了负载分担(如balance 2),则当满足一定的选路规则后,并且两条路由具有相同的AS_PATH属性、ORIGIN属性、LOCAL_PREF和MED值时,Router C就把接收的两条路由同时加入到转发表中,实现BGP路由的负载分担。Router C只向Router D和Router E转发一次该路由,AS_PATH不变,但NEXT_HOP属性改变为Router C的地址,而不是原来的EBGP对等体地址。其它的BGP过渡属性将按最佳路由的属性传递。
BGP发布路由时采用如下策略:
l 存在多条有效路由时,BGP发言者只将最优路由发布给对等体;
l BGP发言者只把自己使用的路由发布给对等体;
l BGP发言者从EBGP获得的路由会向它所有BGP对等体发布(包括EBGP对等体和IBGP对等体);
l BGP发言者从IBGP获得的路由不向它的IBGP对等体发布;
l BGP发言者从IBGP获得的路由发布给它的EBGP对等体(关闭BGP与IGP同步的情况下,IBGP路由被直接发布;开启BGP与IGP同步的情况下,该IBGP路由只有在IGP也发布了这条路由时才会被同步并发布给EBGP对等体);
l 连接一旦建立,BGP发言者将把自己所有的BGP路由发布给新对等体。
同步是指IBGP和IGP之间的同步,其目的是为了避免出现误导外部AS路由器的现象发生。
如果一个AS中有非BGP路由器提供转发服务,经该AS转发的IP报文将可能因为目的地址不可达而被丢弃。如图5-11所示,Router E通过BGP从Router D可以学到Router A的一条路由8.0.0.0/8,于是将到这个目的地址的报文转发给Router D,Router D查询路由表,发现下一跳是Router B(通过peer next-hop-local命令手动设置)。由于Router D从IGP学到了到Router B的路由,所以通过路由迭代,Router D将报文转发给Router C。但Router C并不知道去8.0.0.0/8的路由,于是将报文丢弃。
如果设置了同步特性,在IBGP路由加入路由表并发布给EBGP对等体之前,会先检查IGP路由表。只有在IGP也知道这条IBGP路由时,它才会被加入到路由表,并发布给EBGP对等体。
在下面的情况中,可以关闭同步特性。
l 本AS不是过渡AS(上图中的AS20就属于一个过渡AS)
l 本AS内所有路由器建立IBGP全连接
在大规模的网络中,BGP路由表十分庞大,使用路由聚合(Routes Aggregation)可以大大减小路由表的规模。
路由聚合实际上是将多条路由合并的过程。这样BGP在向对等体通告路由时,可以只通告聚合后的路由,而不是将所有的具体路由都通告出去。
路由聚合包括自动聚合和手动聚合方式。使用后者还可以控制聚合路由的属性,以及决定是否发布具体路由。
BGP路由衰减(Route Dampening)用来解决路由不稳定的问题。路由不稳定的主要表现形式是路由振荡(Route flaps),即路由表中的某条路由反复消失和重现。
发生路由振荡时,路由协议就会向邻居发布路由更新,收到更新报文的路由器需要重新计算路由并修改路由表。所以频繁的路由振荡会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正常工作。
在多数情况下,BGP协议都应用于复杂的网络环境中,路由变化十分频繁。为了防止持续的路由振荡带来的不利影响,BGP使用衰减来抑制不稳定的路由。
BGP衰减使用惩罚值来衡量一条路由的稳定性,惩罚值越高则说明路由越不稳定。路由每发生一次振荡(路由从激活状态变为未激活状态,称为一次路由振荡),BGP便会给此路由增加一定的惩罚值(1000,此数值为系统固定,不可修改)。当惩罚值超过抑制阈值时,此路由被抑制,不加入到路由表中,也不再向其他BGP对等体发布更新报文。
被抑制的路由每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(Half-life)。当惩罚值降到再使用阈值时,此路由变为可用并被加入到路由表中,同时向其他BGP对等体发布更新报文。
图5-12 BGP衰减示意图
对等体组(Peer Group)是一些具有某些相同属性的对等体的集合。当一个对等体加入对等体组中时,此对等体将获得与所在对等体组相同的配置。当对等体组的配置改变时,组内成员的配置也相应改变。
在大型BGP网络中,对等体的数量会很多,其中很多对等体具有相同的策略,在配置时会重复使用一些命令,利用对等体组在很多情况下可以简化配置。
将对等体加入对等体组中,对等体与对等体组具有相同的路由更新策略,提高了路由发布效率。
注意:
如果对等体和对等体组都对某个选项做了配置,配置以最后一次的修改为准。
对等体组可以使一组对等体共享相同的策略,而利用团体可以使多个AS中的一组BGP路由器共享相同的策略。团体是一个路由属性,在BGP对等体之间传播,它并不受到AS范围的限制。
BGP路由器在将带有团体属性的路由发布给其它对等体之前,可以改变此路由原有的团体属性。
除了使用公认的团体属性外,用户还可以使用团体属性列表自定义扩展团体属性,以便更为灵活地控制路由策略。
为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。
利用路由反射可以解决这一问题。在一个AS内,其中一台路由器作为路由反射器RR(Router Reflector),其它路由器做为客户机(Client)与路由反射器之间建立IBGP连接。路由反射器在客户机之间传递(反射)路由信息,而客户机之间不需要建立BGP连接。
既不是反射器也不是客户机的BGP路由器被称为非客户机(Non-Client)。非客户机与路由反射器之间,以及所有的非客户机之间仍然必须建立全连接关系。其示意图如图5-13所示。
路由反射器和它的客户机组成了一个集群(Cluster)。某些情况下,为了增加网络的可靠性和防止单点故障,可以在一个集群中配置一个以上的路由反射器。这时,位于相同集群中的每个路由反射器都要配置相同的Cluster_ID,以避免路由环路。如图5-14所示。
在某些网络中,路由反射器的客户机之间已经建立了全连接,它们可以直接交换路由信息,此时客户机到客户机之间的路由反射是没有必要的,而且还占用带宽资源。可以配置相关命令来禁止在客户机之间反射路由。
& 说明:
禁止客户机之间的路由反射后,客户机到非客户机之间的路由仍然可以被反射。
联盟(Confederation)是处理AS内部的IBGP网络连接激增的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立EBGP连接关系。其示意图如图5-15所示。
在不属于联盟的BGP发言者看来,属于同一个联盟的多个子自治系统是一个整体,外界不需要了解内部的子自治系统情况,联盟ID就是标识联盟这一整体的自治系统号,如上图中的AS 200就是联盟ID。
联盟的缺陷是:从非联盟方案向联盟方案转变时,要求路由器重新进行配置,逻辑拓扑也要改变。
在大型BGP网络中,路由反射器和联盟可以被同时使用。
& 说明:
有关GR(Graceful Restart,平滑重启)的原理介绍请参见“路由-GR概述”。
基于BGP的GR Restarter为了与BGP对等体建立一个BGP会话连接,首先要发送一个包含了GR能力的OPEN消息到对端,BGP对等体收到该消息后,得知发送方已具有GR能力。这样,通过OPEN消息交互GR能力,GR Restarter与其BGP对等体之间协商建立起GR Session连接。如果双方都没有交换GR能力的信息,建立起的会话也就不具备GR能力。
BGP协议重启时,会话项将丢失,此时具备GR感知能力的BGP对等体会将所有与该GR Restarter有关的路由进行失效标记。但在GR Time内仍按照这些路由进行报文转发,这样确保了在从BGP对等体重新收集路由信息的过程中没有报文丢失。
BGP协议重启完毕后,GR Restarter会重新与BGP对等体建立GR Session连接,同时发送新的GR消息以宣告其重启完毕。此时两个BGP对等体间进行路由信息交换。交换完成后,GR Restarter根据新的路由转发信息更新路由表和转发表,删除失效的路由,完成BGP协议收敛。
传统的BGP-4只能管理IPv4的路由信息,对于使用其它网络层协议(如IPv6等)的应用,在跨自治系统传播时就受到一定限制。
为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,形成MP-BGP,目前的MP-BGP标准是RFC 2858(Multiprotocol Extensions for BGP-4,BGP-4的多协议扩展)。
支持BGP扩展的路由器与不支持BGP扩展的路由器可以互通。
BGP-4使用的报文中,与IPv4相关的三条信息都由Update报文携带,这三条信息分别是:NLRI、路径属性中的NEXT_HOP、路径属性中的AGGREGATOR(该属性中包含形成聚合路由的BGP发言者的IP地址)。
为实现对多种网络层协议的支持,BGP-4需要将网络层协议的信息反映到NLRI及NEXT_HOP。MP-BGP中引入了两个新的路径属性:
l MP_REACH_NLRI:Multiprotocol Reachable NLRI,多协议可达NLRI。用于发布可达路由及下一跳信息。
l MP_UNREACH_NLRI:Multiprotocol Unreachable NLRI,多协议不可达NLRI。用于撤销不可达路由。
这两种属性都是可选非过渡(Optional non-transitive)的,因此,不提供多协议能力的BGP发言者将忽略这两个属性的信息,不把它们传递给其它邻居。
MP-BGP采用地址族(Address Family)来区分不同的网络层协议,关于地址族的一些取值可以参考RFC 1700(Assigned Numbers)。目前,系统实现了多种MP-BGP扩展应用,包括对IPv6的扩展等,不同的扩展应用在各自的地址族视图下配置。
& 说明:
l 有关IPv6的扩展应用,请参见“IPv6路由”中的“IPv6 BGP配置”。
l 本章不对MP-BGP地址族视图下的、与特定应用相关的命令作详细介绍。
与BGP相关的协议规范有:
l RFC1771:A Border Gateway Protocol 4 (BGP-4)
l RFC2858:Multiprotocol Extensions for BGP-4
l RFC3392:Capabilities Advertisement with BGP-4
l RFC2918:Route Refresh Capability for BGP-4
l RFC2439:BGP Route Flap Damping
l RFC1997:BGP Communities Attribute
l RFC2796:BGP Route Reflection
l RFC3065:Autonomous System Confederations for BGP
l draft-ietf-idr-restart-08:Graceful Restart Mechanism for BGP
表5-2 BGP配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置BGP基本功能 |
必选 |
||
控制路由信息的发布与接收 |
配置BGP引入其他路由 |
可选 |
|
配置BGP路由聚合 |
可选 |
||
配置向对等体/对等体组发送缺省路由 |
可选 |
||
配置BGP路由信息的发布策略 |
可选 |
||
配置BGP路由信息的接收策略 |
可选 |
||
配置BGP与IGP路由同步 |
可选 |
||
配置BGP路由衰减 |
可选 |
||
配置BGP的路由属性 |
必选 |
||
调整和优化BGP网络 |
必选 |
||
配置BGP大型网络 |
配置BGP对等体组 |
可选 |
|
配置BGP团体 |
可选 |
||
配置BGP路由反射器 |
可选 |
||
配置BGP联盟 |
可选 |
本节讲述最基本的BGP网络配置过程。
& 说明:
l 在本节中,不对BGP和MP-BGP进行严格的区分,命令的适用情况请参考所在的视图。
l 由于BGP使用TCP连接,所以在配置BGP时需要指定对等体的IP地址。BGP对等体不一定就是相邻的路由器,利用逻辑链路也可以建立BGP对等体关系。有时为了增强BGP连接的稳定性,通常使用Loopback接口地址建立连接。
在配置BGP基本功能之前,需完成以下任务:相邻节点的网络层互通。
表5-3 配置BGP的基本功能
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
启动BGP,进入BGP视图 |
bgp as-number |
必选 缺省情况下,系统没有运行BGP |
|
指定路由器的Router ID |
router-id router-id |
可选 如果Loopback接口或者其它接口没有配置IP地址,则该命令为必选 |
|
指定对等体/对等体组的AS号 |
peer { group-name | ip-address } as-number as-number |
必选 缺省情况下,对等体/对等体组无AS号 |
|
配置对等体/对等体组的描述信息 |
peer { group-name | ip-address } description description-text |
可选 |
|
使能所有邻居的IPv4单播地址族 |
default ipv4-unicast |
可选 缺省情况下,使能IPv4单播地址族 |
|
激活指定对等体 |
peer ip-address enable |
可选 缺省情况下,BGP对等体是激活的 |
|
禁止与对等体/对等体组建立会话 |
peer { group-name | ip-address } ignore |
可选 缺省情况下,允许与BGP对等体/对等体组建立会话 |
|
使能BGP日志记录功能 |
全局使能BGP日志记录功能 |
log-peer-change |
可选 缺省情况下,使能BGP日志记录功能 |
记录指定对等体/对等体组的会话状态和事件信息 |
peer { group-name | ip-address } log-change |
可选 缺省情况下,记录对等体/对等体组的会话状态和事件信息 |
|
为从对等体/对等体组接收的路由分配首选值 |
peer { group-name | ip-address } preferred-value value |
可选 缺省情况下,从对等体/对等体组接收的路由的首选值为0 |
|
指定与对等体/对等体组创建BGP会话时建立TCP连接使用的源接口 |
peer { group-name | ip-address } connect-interface interface-type interface-number |
可选 缺省情况下,BGP使用到达BGP对等体的最佳路由的出接口作为与对等体/对等体组创建BGP会话时建立TCP连接的源接口 |
|
配置允许同非直接相连网络上的邻居建立EBGP连接 |
peer { group-name | ip-address } ebgp-max-hop [ hop-count ] |
可选 缺省情况下,不允许同非直接相连网络上的邻居建立EBGP连接。设置参数hop-count,可以同时配置EBGP连接的最大路由器跳数 |
& 说明:
l 一台路由器如果要运行BGP协议,则必须存在Router ID。Router ID是一个32比特无符号整数,是一台路由器在自治系统中的唯一标识。
l 路由器的Router ID可以手工配置,如果没有通过命令指定Router ID,系统会从当前接口的IP地址中自动选取一个作为路由器的Router ID。其选择顺序是:优先从Loopback接口中选择最大的IP地址作为路由器的Router ID,如果没有配置Loopback接口,则选取接口中最大的IP地址作为路由器的Router ID。只有在路由器的Router ID所在接口被删除或去除手工配置的Router ID的情况下才会重新选择路由器的Router ID。为了增加网络的可靠性,建议将Router ID手工配置为Loopback接口的IP地址。
l 必须首先创建对等体组,才能配置对等体组的基本功能。关于对等体组的创建可以参见“5.7.2 配置BGP对等体组”。
l 当两个设备之间建立多条BGP连接时,如果没有明确指定建立TCP连接的源接口,可能会由于无法根据到达BGP对等体的最优路由确定TCP连接源接口从而导致无法建立TCP连接,因此建议用户在此情况下配置BGP对等体时明确配置BGP会话建立TCP连接的源接口为指定接口。
l 通常情况下,EBGP对等体之间必须具有直连的物理链路,如果不满足这一要求,则必须使用peer ebgp-max-hop命令允许它们之间经过多跳建立TCP连接。但是,对于直连EBGP使用LoopBack接口建立邻居关系,不需要peer ebgp-max-hop命令的配置。
l 如果同时通过路由策略和peer { group-name | ip-address } preferred-value value命令为从对等体组接收的路由设置首选值,通过路由策略过滤的路由信息的首选值将取路由策略中设置的首选值而不是peer { group-name | ip-address } preferred-value value命令里设置的首选值,只有当路由策略里设置的首选值为0时,路由信息的首选值才会取peer { group-name | ip-address } preferred-value value命令里设置的值;没有通过路由策略过滤的路由信息的首选值仍取peer { group-name | ip-address } preferred-value value命令里设置的首选值。通过路由策略配置BGP路由信息首选值的相关配置可参考命令peer { group-name | ip-address } route-policy route-policy-name { export | import }和apply preferred-value preferred-value。
在控制BGP路由信息的发布与接收之前,需完成以下任务:配置BGP基本功能。
BGP可以向邻居AS发送本地AS内部网络的路由信息,但BGP不是自己去发现AS内部的路由信息,而是引入IGP的路由信息到BGP路由表中,并发布给对等体。在引入IGP路由时,还可以针对不同的路由协议来对路由信息进行过滤。
表5-4 配置BGP引入其他路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
允许将缺省路由引入到BGP路由表中 |
default-route imported |
可选 缺省情况下,BGP不允许将缺省路由引入到BGP路由表中 |
引入其它协议路由信息并通告 |
import-route protocol [ process-id [ med med-value | route-policy route-policy-name ] * ] |
必选 缺省情况下,BGP未引入且不通告其它协议的路由 |
将网段路由发布到BGP路由表中 |
network ip-address [ mask | mask-length ] [ short-cut | route-policy route-policy-name ] |
可选 缺省情况下,BGP不发布任何网段路由 |
& 说明:
l 通过import-route命令引入到BGP路由表中的路由的ORIGIN属性为Incomplete。
l 使用network命令发布到BGP路由表中的网段路由的ORIGIN属性为IGP。
l 要发布的网段路由必须存在于本地的IP路由表中,使用路由策略可以更为灵活的控制所发布的路由。
在中型或大型BGP网络中,在向对等体发布路由信息时,需要配置路由聚合,减小对等体路由表中的路由数量。BGP支持两种聚合方式:自动聚合和手动聚合。
l 自动聚合:对BGP引入的IGP子网路由进行聚合。配置自动聚合后,BGP将不再发布从IGP引入的子网路由,而是发布聚合后的自然网段的路由。缺省路由和用network命令引入的路由不能进行自动聚合。
l 手动聚合:对BGP本地路由进行聚合。手动聚合的优先级高于自动聚合的优先级。
表5-5 配置BGP路由聚合
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图 |
bgp as-number |
- |
|
配置BGP路由聚合 |
配置对引入的子网路由进行自动聚合 |
summary automatic |
必选 缺省情况下,不进行路由聚合 可以根据需求选择路由聚合方式;当二者同时配置时,手动路由聚合生效 |
配置手动路由聚合 |
aggregate ip-address { mask | mask-length } [ as-set | attribute-policy route-policy-name | detail-suppressed | origin-policy route-policy-name | suppress-policy route-policy-name ]* |
表5-6 配置向对等体/对等体组发送缺省路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
向对等体/对等体组发送缺省路由 |
peer { group-name | ip-address } default-route-advertise [ route-policy route-policy-name ] |
必选 缺省情况下,不向对等体/对等体组发送缺省路由 |
& 说明:
执行peer default-route-advertise命令后,不论本地路由表中是否存在缺省路由,都将向指定对等体/对等体组发布一条下一跳地址为本地地址的缺省路由。
表5-7 配置BGP路由信息的发布策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置引入的路由在发布时进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ direct | isis process-id | ospf process-id | rip process-id | | static ] |
任选其一 缺省情况下,不对引入的路由在发布时进行过滤 可以根据需求选择过滤策略 同时配置几种过滤策略时,按照如下顺序执行: l filter-policy export l peer filter-policy export l peer as-path-acl export l peer ip-prefix export l peer route-policy export 只有通过前面的过滤策略,才能继续执行后面的过滤策略;只有通过所有配置的过滤策略后,路由信息才能被发布 |
对发布给对等体/对等体组的路由指定路由策略 |
peer { group-name | ip-address } route-policy route-policy-name export |
|
为对等体/对等体组设置基于ACL的过滤策略 |
peer { group-name | ip-address } filter-policy acl-number export |
|
为对等体/对等体组设置基于AS路径过滤列表的BGP路由过滤策略 |
peer { group-name | ip-address } as-path-acl as-path-acl-number export |
|
为对等体/对等体组设置基于IP前缀列表的路由过滤策略 |
peer { group-name | ip-address } ip-prefix ip-prefix-name export |
表5-8 配置BGP路由信息的接收策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
对接收的路由信息进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } import |
任选其一 缺省情况下,不对接收的路由信息进行过滤 可以根据需求选择过滤策略 同时配置几种过滤策略时,按照如下顺序执行: l filter-policy import l peer filter-policy import l peer as-path-acl import l peer ip-prefix import l peer route-policy import 只有通过前面的过滤策略,才能继续执行后面的过滤策略;只有通过所有配置的过滤策略后,路由信息才能被接收 |
对来自对等体/对等体组的路由指定路由策略 |
peer { group-name | ip-address } route-policy policy-name import |
|
为对等体/对等体组设置基于ACL的过滤策略 |
peer { group-name | ip-address } filter-policy acl-number import |
|
为对等体/对等体组设置基于AS路径过滤列表的BGP路由过滤策略 |
peer { group-name | ip-address } as-path-acl as-path-acl-number import |
|
为对等体/对等体组设置基于IP前缀列表的路由过滤策略 |
peer { group-name | ip-address } ip-prefix ip-prefix-name import |
|
设置允许从对等体/对等体组接收的最大路由数 |
peer { group-name | ip-address } route-limit limit [ percentage ] |
可选 缺省情况下,允许从对等体/对等体组接收的最大路由数无限制 |
& 说明:
l 对BGP接收的路由进行过滤,只有满足某些条件的路由才能被BGP接收,并加到路由表中。
l 对等体组的成员可以与所在的组使用不同的入方向路由策略,即接收路由时,各对等体可以选择自己的策略。
BGP路由器收到一条IBGP路由,缺省只检查该路由的下一跳是否可达。使能同步特性后,当BGP路由器收到一条IBGP 路由时,如果在其IGP路由表中没有同样的路由信息(即IGP没有与BGP同步),那么它将不会再把此路由信息发送给它的EBGP对等体。
表5-9 配置BGP与IGP路由同步
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置BGP与IGP路由同步 |
synchronization |
必选 缺省情况下,BGP和IGP路由不同步 |
通过配置BGP衰减,可以抑制不稳定的路由信息,不将这类路由加入到路由表中,也不将这类路由向其他BGP对等体发布。
表5-10 配置BGP路由衰减
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置BGP路由衰减 |
dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling | route-policy route-policy-name ] * |
可选 缺省情况下,没有配置BGP路由衰减 |
在配置BGP的路由属性之前,需完成以下任务:配置BGP基本功能。
BGP具有很多路由属性,利用这些属性可以改变BGP的选路策略。
表5-11 配置BGP的路由属性
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图 |
bgp as-number |
- |
|
配置BGP路由的管理优先级 |
preference { external-preference internal-preference local-preference | route-policy route-policy-name } |
可选 缺省情况下,EBGP路由的管理优先级为255,IBGP路由的管理优先级为255,本地产生的BGP路由的管理优先级为130 |
|
配置本地优先级的缺省值 |
default local-preference value |
可选 缺省情况下,本地优先级的缺省值为100 |
|
配置MED属性 |
配置系统MED的缺省值 |
default med med-value |
可选 缺省情况下,MED的缺省值为0 |
配置允许比较来自不同AS邻居的路由路径的MED属性值 |
compare-different-as-med |
可选 缺省情况下,不允许比较来自不同AS邻居的路由路径的MED属性值 |
|
配置根据路由来自的AS进行分组对MED排序优选 |
bestroute compare-med |
可选 缺省情况下,不根据路由来自的AS进行分组对MED排序优选 |
|
配置允许比较联盟对等体的路由按MED值进行优选 |
bestroute med-confederation |
可选 缺省情况下,比较联盟对等体的路由时不考虑MED值 |
|
配置发布路由时将自身地址作为下一跳 |
peer { group-name | ip-address } next-hop-local |
可选 缺省情况下,向EBGP对等体/对等体组发布路由时,将自身地址作为下一跳;向IBGP对等体/对等体组发布路由时,不将自身地址作为下一跳 |
|
配置AS_PATH属性 |
配置允许本地AS号重复出现的次数 |
peer { group-name | ip-address } allow-as-loop [ number ] |
可选 缺省情况下,不允许本地AS重复 |
禁止路由器将AS_PATH当作选路算法中的一个因素 |
bestroute as-path-neglect |
可选 缺省情况下,路由器可以将AS_PATH当作选路算法中的一个因素 |
|
为对等体/对等体组定制一个虚拟的自治系统号 |
peer { group-name | ip-address } fake-as as-nmber |
可选 缺省情况下,没有为对等体/对等体组配置虚拟的本地自治系统号 该命令只适用于EBGP对等体或对等体组 |
|
配置用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号 |
peer { group-name | ip-address } substitute-as |
可选 缺省情况下,没有用本地AS号替换AS_PATH属性中指定对等体/对等体组的AS号 |
|
配置发送BGP更新报文时AS_PATH属性中不携带私有AS号 |
peer { group-name | ip-address } public-as-only |
可选 缺省情况下,发送BGP更新报文时,携带私有自治系统号 |
& 说明:
l 应用路由策略,可以为匹配过滤条件的特定路由配置优先级。对于那些没有匹配的路由,使用缺省优先级。
l 在其它条件相同的情况下,MED较小的路由被优选作为自治系统的外部路由。
l 在某些组网环境中,本地路由器向IBGP对等体/对等体组发布路由时,为保证IBGP邻居能够找到正确的下一跳,可以配置peer next-hop-local命令将自身地址作为下一跳地址。如果配置了BGP负载分担,则不论是否配置了peer next-hop-local命令,本地路由器向IBGP对等体/对等体组发布路由时都先将下一跳地址改变为自身地址。
l 在第三方下一跳(即两个BGP连接在同一网段的广播网)这种特殊的组网环境中,缺省情况下,向EBGP对等体/对等体组发布路由时,不将自身地址作为下一跳;只有配置了peer next-hop-local命令,才将自身地址作为下一跳。
l 通常情况下,BGP会检查对等体发来的路由的AS_PATH属性,如果其中已存在本地AS号,则BGP会忽略此路由,以免形成路由环路。
l 根据具体应用要求,可以配置虚拟AS号。配置虚拟AS号只能应用于EBGP对等体,可以将本地真实的AS号隐藏,位于其他AS内的EBGP对等体只能看到这个虚拟AS号。
l 替换AS_PATH属性中的AS号命令仅在特定组网环境下使用,错误的配置会引起路由环路。
BGP网络的调整和优化主要包括以下几个方面。
(1) BGP时钟
当对等体间建立了BGP连接后,它们定时向对端发送Keepalive消息,以防止路由器认为BGP连接已中断。若路由器在设定的连接保持时间(Holdtime)内未收到对端的Keepalive消息或任何其它类型的报文,则认为此BGP连接已中断,从而断开此BGP连接。
路由器在与对等体建立BGP连接时,将比较双方保持时间,以数值较小者做为协商后的保持时间。
(2) 复位BGP连接
BGP的选路策略改变后,为了使新的策略生效,必须复位BGP连接,但这样会造成短暂的BGP连接中断。在目前的实现中,BGP支持Route-refresh功能。在所有BGP路由器使能路由刷新的情况下,如果BGP的路由策略发生了变化,本地路由器会向对等体发布路由刷新消息,收到此消息的对等体会将其路由信息重新发给本地BGP路由器。这样,在不中断BGP连接的情况下,就可以对BGP路由表进行动态更新,并应用新的策略。
如果网络中存在有不支持Route-refresh的路由器,则需要配置peer keep-all-routes命令,将其所有路由更新保存在本地,并通过执行refresh bgp命令手工对BGP连接进行软复位。BGP软复位可以在不中断BGP连接的情况下重新刷新BGP路由表,并应用新的策略。
(3) BGP验证
BGP使用TCP做为传输层协议,为提高BGP的安全性,可以在建立TCP连接时进行MD5认证。但BGP的MD5认证并不能对BGP报文认证,它只是为TCP连接设置MD5认证密码,由TCP完成认证。如果认证失败,则不建立TCP连接。
在调整和优化BGP网络之前,需完成以下任务:配置BGP基本功能。
表5-12 调整和优化BGP网络
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图 |
bgp as-number |
- |
|
配置BGP定时器 |
配置BGP的存活时间间隔与保持时间 |
timer keepalive keepalive hold holdtime |
可选 缺省情况下,存活时间间隔为60秒,保持时间为180秒 |
peer { group-name | ip-address } timer keepalive keepalive hold holdtime |
|||
配置对等体/对等体组的发送同一路由更新报文的时间间隔 |
peer { group-name | ip-address } route-update-interval seconds |
可选 缺省情况下,向IBGP对等体发送同一路由更新的时间间隔为15秒,向EBGP对等体发送同一路由更新的时间间隔为30秒 |
|
配置BGP软复位 |
禁止BGP路由刷新和多协议扩展功能 |
peer { group-name | ip-address } capability-advertise conventional |
可选 缺省情况下,使能BGP路由刷新和多协议扩展功能 |
使能BGP路由刷新功能 |
peer { group-name | ip-address } capability-advertise route-refresh |
可选 缺省情况下,使能BGP路由刷新功能 |
|
保存所有来自对等体/对等体组的原始路由信息,即使这些路由没有通过已配置的入口策略 |
peer { group-name | ip-address } keep-all-routes |
可选 缺省情况下,不保存对等体的原始路由信息 |
|
退回用户视图 |
return |
- |
|
手工对BGP连接进行软复位 |
refresh bgp { all | ip-address | group group-name | external | internal } { export | import } |
必选 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图 |
bgp as-number |
- |
|
如果某个接口状态变为down,立即清除建立在该接口上的直连外部邻居的BGP会话 |
ebgp-interface-sensitive |
可选 缺省情况下,使能该功能 |
|
配置BGP建立TCP连接时进行MD5认证 |
peer { group-name | ip-address } password { cipher | simple } password |
可选 缺省情况下,BGP在建立TCP连接时不进行MD5认证 |
|
配置进行BGP负载分担的路由条数 |
balance number |
可选 缺省情况下,不进行路由负载分担 |
& 说明:
l 合理的最大Keepalive消息发送间隔为保持时间的三分之一,且该发送间隔不能小于1秒,因此,保持时间如果不为0,则最小为3秒。
l 使用timer命令配置的定时器比使用peer timer命令配置的定时器优先级要低。
l 配置peer keep-all-routes命令后,不论是否使用了过滤策略,都将保存指定对等体/对等体组发来的所有路由更新。当软复位BGP连接时,这些信息可以用来重新生成BGP路由。
l BGP软复位可以在不中断BGP连接的情况下重新刷新BGP路由表,并应用新的策略。
l BGP软复位要求网络中的所有BGP路由器支持路由刷新能力。如果有的路由器不支持此特性,则需要配置peer keep-all-routes命令,以便保留对等体的所有原始路由信息,供BGP软复位时使用。
在大型BGP网络中,对等体的数目众多,配置和维护极为不便。使用对等体组可以降低管理的难度,还可以提高路由发布效率。根据对等体所在的AS是否相同,对等体组可分为IBGP对等体组和EBGP对等体组。对于EBGP对等体组,根据所包括的对等体是否属于同一个外部AS,又可分为纯EBGP对等体组和混合EBGP对等体组。
团体同样也可以简化路由策略的管理。但它比对等体组的管理范围要大得多,它是对多个BGP路由器的路由策略进行控制。
在AS内部,为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。当IBGP对等体数目很多时,建立全连接网的开销很大。使用路由反射器或者联盟,可以解决这个问题。在大规模的AS中,它们可以被同时使用。
在配置大型BGP网络之前,需完成以下任务:相邻节点的网络层互通。
表5-13 配置BGP对等体组
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图 |
bgp as-number |
- |
|
创建IBGP对等体组 |
创建IBGP对等体组 |
group group-name [ internal ] |
可选 可向组中加入多个对等体。系统会自动在BGP视图下创建该对等体,并设置其AS号为本地AS号 |
向对等体组中加入对等体 |
peer ip-address group group-name [ as-number as-number ] |
||
创建纯EBGP对等体组 |
创建EBGP对等体组 |
group group-name external |
可选 可向组中加入多个对等体。系统会自动在BGP视图下创建该对等体,并设置其AS号为对等体组的AS号 |
设置对等体组的AS号 |
peer group-name as-number as-number |
||
向对等体组中加入对等体 |
peer ip-address group group-name [ as-number as-number ] |
||
创建混合EBGP对等体组 |
创建EBGP对等体组 |
group group-name external |
可选 可向组中加入多个对等体 |
分别创建对等体,设置对等体的AS号 |
peer ip-address as-number as-number |
||
向对等体组中加入对等体 |
peer ip-address group group-name [ as-number as-number ] |
& 说明:
l 创建IBGP对等体组不需要指定AS号。
l 如果对等体组中已经存在对等体,则不能改变该对等体组的AS号,也不能使用undo命令删除已指定的自治系统号。
l 在混合EBGP对等体组中,需要单独指定各对等体的AS号。
表5-14 配置BGP团体
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图 |
bgp as-number |
- |
|
配置向对等体/对等体组发布团体属性 |
配置向对等体/对等体组发布团体属性 |
peer { group-name | ip-address } advertise-community |
必选 缺省情况下,不将团体属性和扩展团体属性发布给任何对等体/对等体组 |
配置向对等体/对等体组发布扩展团体属性 |
peer { group-name | ip-address } advertise-ext-community |
||
对发布给对等体/对等体组的路由指定路由策略 |
peer { group-name | ip-address } route-policy route-policy-name export |
必选 缺省情况下,不指定对等体/对等体组的路由策略 |
& 说明:
l 配置BGP团体时,必须使用路由策略来定义具体的团体属性,然后在发布路由信息时应用此路由策略。
l 关于路由策略的配置,请参见“路由策略配置”部分。
表5-15 配置BGP路由反射器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置将本机作为路由反射器,并将对等体/对等体组作为路由反射器的客户 |
peer { group-name | ip-address } reflect-client |
必选 缺省情况下,没有配置路由反射器及其客户 |
配置允许客户到客户的路由反射 |
reflect between-clients |
可选 缺省情况下,允许客户到客户的路由反射 |
配置路由反射器的集群ID |
reflector cluster-id cluster-id |
可选 缺省情况下,每个路由反射器是使用自己的Router ID作为集群ID |
& 说明:
l 通常情况下,路由反射器的客户之间不要求是全连接的,路由缺省通过反射器从一个客户反射到其它客户;如果客户之间是全连接的,可以禁止客户间的反射,以便减少开销。
l 通常,一个集群里只有一个路由反射器。此时是由反射器的路由器ID来识别该集群的。设置多个路由反射器可提高网络的稳定性。如果一个集群中配有多个路由反射器,请使用相关命令为所有的路由反射器配置同样的集群ID,以避免路由环路。
表5-16 配置BGP联盟
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图 |
bgp as-number |
- |
|
BGP联盟的基本配置 |
配置联盟ID |
confederation id as-number |
必选 缺省情况下,未配置联盟的ID,未配置属于联盟的子自治系统 |
指定一个联盟体中包含了哪些子自治系统 |
confederation peer-as as-number-list |
||
配置与未采用RFC 3065配置的AS联盟兼容 |
confederation nonstandard |
可选 缺省情况下,配置的联盟与RFC 3065一致 |
& 说明:
l 一个联盟最多可包括32个子自治系统。配置属于联盟的子自治系统时使用的as-number在联盟内部有效。
l 如果其他路由器的联盟实现机制不同于RFC标准,可以配置相关命令,以便和非标准的设备兼容。
& 说明:
一台设备可以同时充当GR Restarter和GR Helper。
表5-17 配置BGP GR
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
使能BGP协议的GR能力 |
graceful-restart |
必选 缺省情况下,BGP协议的GR能力处于关闭状态 |
配置对端重建BGP会话连接的最大时间 |
graceful-restart timer restart timer |
可选 缺省情况下,对端重建BGP会话连接的最大时间为150秒 |
配置等待End-Of-RIB标记的时间 |
graceful-restart timer wait-for-rib timer |
可选 缺省情况下,等待End-Of-RIB标记的时间为180秒 |
& 说明:
l 通常情况下,对端重建会话连接的最大时间应小于OPEN消息中的Holdtime时间。接收侧(Receiving Speaker)检测到会话中断后,将等待指定时间以便重新建立会话连接。
l End-Of-RIB(End of Router-Information-Base,路由信息库结束)标记用来标定路由更新发送的结束。
在完成上述配置后,在任意视图下执行display命令可以显示配置后BGP的运行情况,通过查看显示信息验证配置的效果。
表5-18 BGP配置显示
操作 |
命令 |
显示对等体组信息 |
display bgp group [ group-name ] |
显示BGP发布的路由信息 |
display bgp network |
显示AS路径信息 |
display bgp paths [ as-regular-expression ] |
显示BGP对等体/对等体组的信息 |
display bgp peer [ ip-address { log-info | verbose } | group-name log-info | verbose ] |
显示BGP路由信息 |
display bgp routing-table [ ip-address [ { mask | mask-length } [ longer-prefixes ] ] ] |
显示匹配指定AS路径过滤列表的BGP路由信息 |
display bgp routing-table as-path-acl as-path-acl-number |
显示CIDR的BGP路由信息 |
display bgp routing-table cidr |
显示指定BGP团体的BGP路由信息 |
display bgp routing-table community [ aa:nn&<1-13> ] [ no-advertise | no-export | no-export-subconfed ]* [ whole-match ] |
显示匹配指定BGP团体列表的BGP路由 |
display bgp routing-table community-list { basic-community-list-number [ whole-match ] | adv-community-list-number }&<1-16> |
显示BGP衰减的BGP路由信息 |
|
显示BGP衰减的配置参数 |
display bgp routing-table dampening parameter |
显示源AS不一致的路由 |
display bgp routing-table different-origin-as |
显示BGP路由振荡统计信息 |
display bgp routing-table flap-info [ regular-expression as-regular-expression | as-path-acl as-path-acl-number | ip-address [ { mask | mask-length } [ longer-match ] ] ] |
显示向指定的BGP对等体发送或者从BGP对等体收到的路由信息 |
display bgp routing-table peer ip-address { advertised-routes | received-routes } [ network-address [ mask | mask-length ] | statistic ] |
显示匹配AS正则表达式的路由信息 |
display bgp routing-table regular-expression as-regular-expression |
显示BGP的路由统计信息 |
display bgp routing-table statistic |
当BGP路由策略或协议发生变化后,如果需要通过复位BGP连接使新的配置生效,请在用户视图下进行下列配置。
表5-19 复位BGP连接
操作 |
命令 |
复位所有BGP连接 |
reset bgp all |
复位与指定AS之间的BGP连接 |
reset bgp as-number |
复位与指定对等体的BGP连接 |
reset bgp ip-address [ flap-info ] |
复位所有EBGP连接 |
reset bgp external |
复位与指定对等体组的BGP连接 |
reset bgp group group-name |
复位所有IBGP连接 |
reset bgp internal |
复位IPv4单播地址族下的所有BGP连接 |
reset bgp ipv4 all |
在用户视图下,执行reset命令可以清除BGP相关统计信息。
表5-20 清除BGP信息
操作 |
命令 |
清除路由的衰减信息并释放被抑制的路由 |
reset bgp dampening [ ip-address [ mask | mask-length ] ] |
清除路由的振荡统计信息 |
reset bgp flap-info [ regexp as-path-regexp | as-path-acl as-path-acl-number | ip-address [ mask | mask-length ] ] |
如图5-16所示,所有交换机均运行BGP协议,Switch A和Switch B之间建立EBGP连接,Switch B、Switch C和Switch D之间建立IBGP全连接。
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
|
Switch A |
Vlan-int100 |
8.1.1.1/8 |
Switch D |
Vlan-int400 |
9.1.1.2/24 |
|
Vlan-int200 |
200.1.1.2/24 |
|
Vlan-int500 |
9.1.2.2/24 |
Switch B |
Vlan-int400 |
9.1.1.1/24 |
Switch C |
Vlan-int500 |
9.1.2.1/24 |
|
Vlan-int200 |
200.1.1.1/24 |
|
Vlan-int300 |
9.1.3.2/24 |
|
Vlan-int300 |
9.1.3.1/24 |
|
|
|
图5-16 BGP基本配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置IBGP连接
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 65009
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 9.1.1.2 as-number 65009
[SwitchB-bgp] peer 9.1.3.2 as-number 65009
[SwitchB-bgp] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 65009
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 9.1.3.1 as-number 65009
[SwitchC-bgp] peer 9.1.2.2 as-number 65009
[SwitchC-bgp] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] bgp 65009
[SwitchD-bgp] router-id 4.4.4.4
[SwitchD-bgp] peer 9.1.1.1 as-number 65009
[SwitchD-bgp] peer 9.1.2.1 as-number 65009
[SwitchD-bgp] quit
(3) 配置EBGP连接
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 65008
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 200.1.1.1 as-number 65009
# 将8.0.0.0/8网段路由通告到BGP路由表中。
[SwitchA-bgp] network 8.0.0.0
[SwitchA-bgp] quit
# 配置Switch B。
[SwitchB] bgp 65009
[SwitchB-bgp] peer 200.1.1.2 as-number 65008
[SwitchB-bgp] quit
# 查看Switch B的BGP对等体的连接状态。
[SwitchB] display bgp peer
BGP local router ID : 2.2.2.2
Local AS number : 65009
Total number of peers : 3 Peers in established state : 3
Peer V AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
9.1.1.2 4 65009 56 56 0 0 00:40:54 Established
9.1.3.2 4 65009 49 62 0 0 00:44:58 Established
200.1.1.2 4 65008 49 65 0 1 00:44:03 Established
可以看出,Switch B到其他交换机的BGP连接均已建立。
# 查看Switch A路由表信息。
[SwitchA] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.0.0.0 0.0.0.0 0 0 i
# 查看Switch B的路由表。
[SwitchB] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.0.0.0 200.1.1.2 0 0 65008i
# 查看Switch C的路由表。
[SwitchC] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 8.0.0.0 200.1.1.2 0 100 0 65008i
& 说明:
从路由表可以看出,Switch A没有学到AS 65009内部的任何路由,Switch C虽然学到了AS 65008中的8.0.0.0的路由,但因为下一跳200.1.1.2不可达,所以也不是有效路由。
(4) 配置BGP引入直连路由
# 配置Switch B。
[SwitchB] bgp 65009
[SwitchB-bgp] import-route direct
# 显示Switch A的BGP路由表。
[SwitchA] display bgp routing-table
Total Number of Routes: 4
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.0.0.0 0.0.0.0 0 0 i
*> 9.1.1.0/24 200.1.1.1 0 0 65009?
*> 9.1.3.0/24 200.1.1.1 0 0 65009?
* 200.1.1.0 200.1.1.1 0 0 65009?
# 显示Switch C的路由表。
[SwitchC] display bgp routing-table
Total Number of Routes: 4
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 8.0.0.0 200.1.1.2 0 100 0 65008i
*>i 9.1.1.0/24 9.1.3.1 0 100 0 ?
* i 9.1.3.0/24 9.1.3.1 0 100 0 ?
*>i 200.1.1.0 9.1.3.1 0 100 0 ?
可以看出,到8.0.0.0的路由变为有效路由,下一跳为Switch A的地址。
# 使用Ping进行验证。
[SwitchC] ping 8.1.1.1
PING 8.1.1.1: 56 data bytes, press CTRL_C to break
Reply from 8.1.1.1: bytes=56 Sequence=1 ttl=254 time=31 ms
Reply from 8.1.1.1: bytes=56 Sequence=2 ttl=254 time=47 ms
Reply from 8.1.1.1: bytes=56 Sequence=3 ttl=254 time=31 ms
Reply from 8.1.1.1: bytes=56 Sequence=4 ttl=254 time=16 ms
Reply from 8.1.1.1: bytes=56 Sequence=5 ttl=254 time=31 ms
--- 8.1.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 16/31/47 ms
l 在AS 65009内使用OSPF作为IGP协议;
l Switch A和Switch B建立EBGP连接,Switch C为AS内部的一台非BGP交换机。
图5-17 BGP与IGP交互配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF(略)
(3) 配置EBGP连接
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 65008
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 3.1.1.1 as-number 65009
# 将8.1.1.0/24网段通告到BGP路由表中。
[SwitchA-bgp] network 8.1.1.0 24
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 65009
[SwitchB-bgp] peer 3.1.1.2 as-number 65008
[SwitchB-bgp] quit
(4) 配置BGP与IGP交互
# 在Switch B上配置BGP引入OSPF路由。
[SwitchB] bgp 65009
[SwitchB-bgp] import-route ospf 1
[SwitchB-bgp] quit
# 查看Switch A的路由表。
[SwitchA] display bgp routing-table
Total Number of Routes: 3
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.1.1.0/24 0.0.0.0 0 0 i
*> 9.1.1.0/24 3.1.1.1 0 0 65009?
*> 9.1.2.0/24 3.1.1.1 2 0 65009?
# 在Switch B上配置OSPF引入BGP路由。
[SwitchB] ospf
[SwitchB-ospf-1] import-route bgp
[SwitchB-ospf-1] quit
# 显示Switch C的路由表。
<SwitchC> display ip routing-table
Routing Tables: Public
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost NextHop Interface
8.1.1.0/24 O_ASE 150 1 9.1.1.1 Vlan300
9.1.1.0/24 Direct 0 0 9.1.1.2 Vlan300
9.1.1.2/32 Direct 0 0 127.0.0.1 InLoop0
9.1.2.0/24 Direct 0 0 9.1.2.1 Vlan400
9.1.2.1/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
(5) 配置路由自动聚合
# 配置Switch B。
[SwitchB] bgp 65009
[SwitchB-bgp] summary automatic
# 显示Switch A的BGP路由表。
[SwitchA] display bgp routing-table
Total Number of Routes: 2
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.1.1.0/24 0.0.0.0 0 0 i
*> 9.0.0.0 3.1.1.1 0 65009?
# 使用Ping进行验证。
[SwitchA] ping -a 8.1.1.1 9.1.2.1
PING 9.1.2.1: 56 data bytes, press CTRL_C to break
Reply from 9.1.2.1: bytes=56 Sequence=1 ttl=254 time=15 ms
Reply from 9.1.2.1: bytes=56 Sequence=2 ttl=254 time=31 ms
Reply from 9.1.2.1: bytes=56 Sequence=3 ttl=254 time=47 ms
Reply from 9.1.2.1: bytes=56 Sequence=4 ttl=254 time=46 ms
Reply from 9.1.2.1: bytes=56 Sequence=5 ttl=254 time=47 ms
--- 9.1.2.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 15/37/47 ms
l 所有交换机都配置BGP,Switch A在AS 65008中,Switch B和Switch C在AS 65009中。
l Switch A与Switch B、Switch C之间运行EBGP,Switch B和Switch C之间运行IBGP。
图5-18 配置BGP路径选择的组网图
(1) 配置各接口的IP地址(略)
(2) 配置BGP连接
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 65008
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 200.1.1.1 as-number 65009
[SwitchA-bgp] peer 200.1.2.1 as-number 65009
# 将8.0.0.0/8网段路由通告到BGP路由表中。
[SwitchA-bgp] network 8.0.0.0 255.0.0.0
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 65009
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 200.1.1.2 as-number 65008
[SwitchB-bgp] peer 9.1.1.2 as-number 65009
[SwitchB-bgp] network 9.1.1.0 255.255.255.0
[SwitchB-bgp] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 65009
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 200.1.2.2 as-number 65008
[SwitchC-bgp] peer 9.1.1.1 as-number 65009
[SwitchC-bgp] network 9.1.1.0 255.255.255.0
[SwitchC-bgp] quit
# 查看Switch A的路由表。
[SwitchA] display bgp routing-table
Total Number of Routes: 3
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.0.0.0 0.0.0.0 0 0 i
*> 9.1.1.0/24 200.1.1.1 0 0 65009i
* 200.1.2.1 0 0 65009i
从路由表中可以看出,到目的地址9.1.1.0/24有两条有效路由,其中下一跳为200.1.1.1的路由是最优路由(因为Switch B的路由器ID要小一些)。
(3) 配置负载分担
# 配置Switch A。
[SwitchA] bgp 65008
[SwitchA-bgp] balance 2
[SwitchA-bgp] quit
# 查看Switch A的路由表。
[SwitchA] display bgp routing-table
Total Number of Routes: 3
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.0.0.0 0.0.0.0 0 0 i
*> 9.1.1.0/24 200.1.1.1 0 0 65009i
*> 200.1.2.1 0 0 65009i
从路由表中可以看到,BGP路由9.1.1.0/24存在两个下一跳,分别是200.1.1.1和200.1.2.1,且都是最优路由。
(4) 配置MED属性
# 配置Switch B的缺省MED值。
[SwitchB] bgp 65009
[SwitchB-bgp] default med 100
# 查看Switch A的路由表。
[SwitchA] display bgp routing-table
Total Number of Routes: 3
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.0.0.0 0.0.0.0 0 0 i
*> 9.1.1.0/24 200.1.2.1 0 0 65009i
* 200.1.1.1 100 0 65009i
从路由表中可以看出,由于下一跳为200.1.1.1(Switch B)的路由MED值为100,而下一跳为200.1.2.1的MED值为0,所以BGP优先选择MED值较小的路由。
l Switch B分别与Switch A、Switch C之间建立EBGP连接。
l 通过在Switch A上配置NO_EXPORT团体属性,使得AS 10发布到AS 20中的路由,不再被AS 20向其他AS发布。
图5-19 BGP团体组网图
(1) 配置各接口的IP地址(略)
(2) 配置EBGP
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 10
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 200.1.2.2 as-number 20
[SwitchA-bgp] network 9.1.1.0 255.255.255.0
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 20
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 200.1.2.1 as-number 10
[SwitchB-bgp] peer 200.1.3.2 as-number 30
[SwitchB-bgp] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 30
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 200.1.3.1 as-number 20
[SwitchC-bgp] quit
# 查看Switch B的路由表。
[SwitchB] display bgp routing-table 9.1.1.0
BGP local router ID : 2.2.2.2
Local AS number : 20
Paths: 1 available, 1 best
BGP routing table entry information of 9.1.1.0/24:
From : 200.1.2.1 (1.1.1.1)
Original nexthop: 200.1.2.1
AS-path : 10
Origin : igp
Attribute value : MED 0, pref-val 0, pre 255
State : valid, external, best,
Advertised to such 1 peers:
200.1.3.2
可以看出,Switch B把收到的路由发布给了位于AS 30内的Switch C。
# 查看Switch C的路由表。
[SwitchC] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 9.1.1.0/24 200.1.3.1 0 20 10i
从路由表可以确认,Switch C从Switch B那里学到了目的地址为9.1.1.0/24的路由。
(3) 配置BGP团体属性
# 配置路由策略。
[SwitchA] route-policy comm_policy permit node 0
[SwitchA-route-policy] apply community no-export
[SwitchA-route-policy] quit
# 应用路由策略。
[SwitchA] bgp 10
[SwitchA-bgp] peer 200.1.2.2 route-policy comm_policy export
[SwitchA-bgp] peer 200.1.2.2 advertise-community
# 查看Switch B的路由表。
[SwitchB] display bgp routing-table 9.1.1.0
BGP local router ID : 2.2.2.2
Local AS number : 20
Paths: 1 available, 1 best
BGP routing table entry information of 9.1.1.0/24:
From : 200.1.2.1 (1.1.1.1)
Original nexthop: 200.1.2.1
Community : No-Export
AS-path : 10
Origin : igp
Attribute value : MED 0, pref-val 0, pre 255
State : valid, external, best,
Not advertised to any peers yet
在Switch B的BGP路由表中可以看到配置的团体属性。此时在Switch C的BGP路由表中已经没有到目的地址9.1.1.0/24的路由。
l 所有交换机运行BGP协议,Switch A与Switch B建立EBGP连接,Switch C与Switch B和Switch D之间建立IBGP连接。
l Switch C作为路由反射器,Switch B和Switch D为Switch C的客户机。
l Switch D能够通过Switch C学到路由1.0.0.0/8。
(1) 配置各接口的IP地址(略)
(2) 配置BGP连接
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 100
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 192.1.1.2 as-number 200
# 通告1.0.0.0/8网段路由到BGP路由表中。
[SwitchA-bgp] network 1.0.0.0
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 200
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] peer 192.1.1.1 as-number 100
[SwitchB-bgp] peer 193.1.1.1 as-number 200
[SwitchB-bgp] peer 193.1.1.1 next-hop-local
[SwitchB-bgp] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 200
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] peer 193.1.1.2 as-number 200
[SwitchC-bgp] peer 194.1.1.2 as-number 200
[SwitchC-bgp] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp] router-id 4.4.4.4
[SwitchD-bgp] peer 194.1.1.1 as-number 200
[SwitchD-bgp] quit
(3) 配置路由反射器
# 配置Switch C。
[SwitchC] bgp 200
[SwitchC-bgp] peer 193.1.1.2 reflect-client
[SwitchC-bgp] peer 194.1.1.2 reflect-client
[SwitchC-bgp] quit
(4) 验证配置效果
# 查看Switch B的BGP路由表。
[SwitchB] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.0.0.0 192.1.1.1 0 0 100i
# 查看Switch D的BGP路由表。
[SwitchD] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 1.0.0.0 193.1.1.2 0 100 0 100i
可以看出,Switch D从Switch C已经学到了1.0.0.0/8路由。
AS 200中有多台BGP交换机,为了减少IBGP的连接数,现将他们划分为3个子自治系统:AS 65001、AS 65002和AS 65003。其中AS 65001内的三台交换机建立IBGP全连接。
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
200.1.1.1/24 |
Switch D |
Vlan-int400 |
10.1.3.2/24 |
|
Vlan-int200 |
10.1.1.1/24 |
|
Vlan-int200 |
10.1.5.1/24 |
|
Vlan-int300 |
10.1.2.1/24 |
Switch E |
Vlan-int500 |
10.1.4.2/24 |
|
Vlan-int400 |
10.1.3.1/24 |
|
Vlan-int200 |
10.1.5.2/24 |
|
Vlan-int500 |
10.1.4.1/24 |
Switch F |
Vlan-int200 |
9.1.1.1/24 |
Switch B |
Vlan-int200 |
10.1.1.2/24 |
|
Vlan-int100 |
200.1.1.2/24 |
Switch C |
Vlan-int300 |
10.1.2.2/24 |
|
|
|
图5-21 配置联盟组网图
(1) 配置各接口的IP地址(略)
(2) 配置BGP联盟
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 65001
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] confederation id 200
[SwitchA-bgp] confederation peer-as 65002 65003
[SwitchA-bgp] peer 10.1.1.2 as-number 65002
[SwitchA-bgp] peer 10.1.1.2 next-hop-local
[SwitchA-bgp] peer 10.1.2.2 as-number 65003
[SwitchA-bgp] peer 10.1.2.2 next-hop-local
[SwitchA-bgp] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 65002
[SwitchB-bgp] router-id 2.2.2.2
[SwitchB-bgp] confederation id 200
[SwitchB-bgp] confederation peer-as 65001 65003
[SwitchB-bgp] peer 10.1.1.1 as-number 65001
[SwitchB-bgp] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 65003
[SwitchC-bgp] router-id 3.3.3.3
[SwitchC-bgp] confederation id 200
[SwitchC-bgp] confederation peer-as 65001 65002
[SwitchC-bgp] peer 10.1.2.1 as-number 65001
[SwitchC-bgp] quit
(3) 配置AS 65001内的IBGP连接
# 配置Switch A。
[SwitchA] bgp 65001
[SwitchA-bgp] peer 10.1.3.2 as-number 65001
[SwitchA-bgp] peer 10.1.3.2 next-hop-local
[SwitchA-bgp] peer 10.1.4.2 as-number 65001
[SwitchA-bgp] peer 10.1.4.2 next-hop-local
[SwitchA-bgp] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] bgp 65001
[SwitchD-bgp] router-id 4.4.4.4
[SwitchD-bgp] confederation id 200
[SwitchD-bgp] peer 10.1.3.1 as-number 65001
[SwitchD-bgp] peer 10.1.5.2 as-number 65001
[SwitchD-bgp] quit
# 配置Switch E。
<SwitchE> system-view
[SwitchE] bgp 65001
[SwitchE-bgp] router-id 5.5.5.5
[SwitchE-bgp] confederation id 200
[SwitchE-bgp] peer 10.1.4.1 as-number 65001
[SwitchE-bgp] peer 10.1.5.1 as-number 65001
[SwitchE-bgp] quit
(4) 配置AS 100和AS 200之间的EBGP连接
# 配置Switch A。
[SwitchA] bgp 65001
[SwitchA-bgp] peer 200.1.1.2 as-number 100
[SwitchA-bgp] quit
# 配置Switch F。
<SwitchF> system-view
[SwitchF] bgp 100
[SwitchF-bgp] router-id 6.6.6.6
[SwitchF-bgp] peer 200.1.1.1 as-number 200
[SwitchF-bgp] network 9.1.1.0 255.255.255.0
[SwitchF-bgp] quit
(5) 验证配置结果
# 查看Switch B的BGP路由表。
[SwitchB] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 9.1.1.0/24 10.1.1.1 0 100 0 (65001) 100i
[SwitchB] display bgp routing-table 9.1.1.0
BGP local router ID : 2.2.2.2
Local AS number : 65002
Paths: 1 available, 1 best
BGP routing table entry information of 9.1.1.0/24:
From : 10.1.1.1 (1.1.1.1)
Relay Nexthop : 0.0.0.0
Original nexthop: 10.1.1.1
AS-path : (65001) 100
Origin : igp
Attribute value : MED 0, localpref 100, pref-val 0, pre 255
State : valid, external-confed, best,
Not advertised to any peers yet
# 查看Switch D的BGP路由表。
[SwitchD] display bgp routing-table
Total Number of Routes: 1
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 9.1.1.0/24 10.1.3.1 0 100 0 100i
[SwitchD] display bgp routing-table 9.1.1.0
BGP local router ID : 4.4.4.4
Local AS number : 65001
Paths: 1 available, 1 best
BGP routing table entry information of 9.1.1.0/24:
From : 10.1.3.1 (1.1.1.1)
Relay Nexthop : 0.0.0.0
Original nexthop: 10.1.3.1
AS-path : 100
Origin : igp
Attribute value : MED 0, localpref 100, pref-val 0, pre 255
State : valid, internal, best,
Not advertised to any peers yet
l 所有交换机都运行BGP协议。Switch A与Switch B和Switch C之间运行EBGP;Switch D与Switch B和Switch C之间运行IBGP。
l AS 200中运行OSPF协议。
l 配置不同的路由策略,使得Switch D优选Switch C学到的1.0.0.0/8路由。
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
|
Switch A |
Vlan-int101 |
1.0.0.1/8 |
Switch D |
Vlan-int400 |
195.1.1.1/24 |
|
Vlan-int100 |
192.1.1.1/24 |
|
Vlan-int300 |
194.1.1.1/24 |
|
Vlan-int200 |
193.1.1.1/24 |
Switch C |
Vlan-int400 |
195.1.1.2/24 |
Switch B |
Vlan-int100 |
192.1.1.2/24 |
|
Vlan-int200 |
193.1.1.2/24 |
|
Vlan-int300 |
194.1.1.2/24 |
|
|
|
图5-22 配置BGP路径选择的组网图
(1) 配置各接口的IP地址(略)
(2) 配置Switch B、Switch C和Switch D之间运行OSPF协议
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ospf
[SwitchB-ospf] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ospf
[SwitchC-ospf] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 193.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
# 配置Switch D。
<SwitchD> system-view
[SwitchD] ospf
[SwitchD-ospf] area 0
[SwitchD-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.0] quit
[SwitchD-ospf-1] quit
(3) 配置BGP连接
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 100
[SwitchA-bgp] peer 192.1.1.2 as-number 200
[SwitchA-bgp] peer 193.1.1.2 as-number 200
# 将1.0.0.0/8网段通告到Switch A的BGP路由表中。
[SwitchA-bgp] network 1.0.0.0 8
[SwitchA-bgp] quit
# 配置Switch B。
[SwitchB] bgp 200
[SwitchB-bgp] peer 192.1.1.1 as-number 100
[SwitchB-bgp] peer 194.1.1.1 as-number 200
[SwitchB-bgp] quit
# 配置Switch C。
[SwitchC] bgp 200
[SwitchC-bgp] peer 193.1.1.1 as-number 100
[SwitchC-bgp] peer 195.1.1.1 as-number 200
[SwitchC-bgp] quit
# 配置Switch D。
[SwitchD] bgp 200
[SwitchD-bgp] peer 194.1.1.2 as-number 200
[SwitchD-bgp] peer 195.1.1.2 as-number 200
[SwitchD-bgp] quit
(4) 通过配置1.0.0.0/8路由的不同属性值,使得Switch D优选Switch C学到的路由。
l 在Switch A上对发布给对等体192.1.1.2的1.0.0.0/8路由配置较高的MED属性值,使得Switch D优选Switch C学到的路由。
# 定义编号为2000的ACL,允许路由1.0.0.0/8通过。
[SwitchA] acl number 2000
[SwitchA-acl-basic-2000] rule permit source 1.0.0.0 0.255.255.255
[SwitchA-acl-basic-2000] quit
# 定义两个Route-policy,一个名为apply_med_50,为路由1.0.0.0/8设置MED属性值为50;另一个名为apply_med_100,为路由1.0.0.0/8设置MED属性值为100。
[SwitchA] route-policy apply_med_50 permit node 10
[SwitchA-route-policy] if-match acl 2000
[SwitchA-route-policy] apply cost 50
[SwitchA-route-policy] quit
[SwitchA] route-policy apply_med_100 permit node 10
[SwitchA-route-policy] if-match acl 2000
[SwitchA-route-policy] apply cost 100
[SwitchA-route-policy] quit
# 对发布给对等体193.1.1.2(SwitchC)的路由应用名为apply_med_50的Route-policy,对发布给对等体192.1.1.2(SwitchB)的路由应用名为apply_med_100的Route-policy。
[SwitchA] bgp 100
[SwitchA-bgp] peer 193.1.1.2 route-policy apply_med_50 export
[SwitchA-bgp] peer 192.1.1.2 route-policy apply_med_100 export
[SwitchA-bgp] quit
# 查看Switch D的BGP路由表。
[SwitchD] display bgp routing-table
Total Number of Routes: 2
BGP Local router ID is 194.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.0.0.0 193.1.1.1 50 100 0 100i
* i 192.1.1.1 100 100 0 100i
可以看到,Switch D从Switch C学到1.0.0.0/8的路由是最优的。
l 在Switch B和Switch C上分别对1.0.0.0/8路由配置不同的本地优先级,使得Switch D优选Switch C学到的路由。
# 在Switch C上定义编号为2000的ACL,允许1.0.0.0/8路由通过。
[SwitchC] acl number 2000
[SwitchC-acl-basic-2000] rule permit source 1.0.0.0 0.255.255.255
[SwitchC-acl-basic-2000] quit
# 在Switch C上定义名为localpref的Route-policy,设置路由1.0.0.0/8的本地优先级为200(缺省的本地优先级为100)。
[SwitchC] route-policy localpref permit node 10
[SwitchC-route-policy] if-match acl 2000
[SwitchC-route-policy] apply local-preference 200
[SwitchC-route-policy] quit
# 为从BGP对等体193.1.1.1的路由应用名为localpref的Router-policy。
[SwitchC] bgp 200
[SwitchC-bgp] peer 193.1.1.1 route-policy localpref import
[SwitchC-bgp] quit
# 查看Switch D的BGP路由表。
[SwitchD] display bgp routing-table
Total Number of Routes: 2
BGP Local router ID is 194.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.0.0.0 193.1.1.1 0 200 0 100i
* i 192.1.1.1 0 100 0 100i
可以看到,Switch D从Switch C学到1.0.0.0/8的路由是最优的。
使用display bgp peer命令查看BGP对等体的信息,发现与对端的连接无法进入Established状态。
BGP邻居的建立需要能够使用179端口建立TCP会话,以及能够正确交换Open消息。
(1) 用display current-configuration命令检查邻居的AS号配置是否正确。
(2) 用display bgp peer命令检查邻居的IP地址是否正确。
(3) 如果使用Loopback接口,检查是否配置了peer connect-interface命令。
(4) 如果是物理上非直连的EBGP邻居,检查是否配置了peer ebgp-max-hop命令。
(5) 检查路由表中是否存在到邻居的可用路由。
(6) 使用ping命令检查链路是否畅通。
(7) 使用display tcp status命令检查TCP连接是否正常。
(8) 检查是否配置了禁止TCP端口179的ACL。
本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。为提高可读性,在手册的描述中将不另行说明。
路由策略(Routing Policy)是为了改变网络流量所经过的途径而修改路由信息的技术,主要通过改变路由属性(包括可达性)来实现。
路由器在发布与接收路由信息时,可能需要实施一些策略,以便对路由信息进行过滤,例如只接收或发布满足一定条件的路由信息。一种路由协议可能需要引入其它的路由协议发现的路由信息,路由器在引入其它路由协议的路由信息时,可能只需要引入一部分满足条件的路由信息,并控制所引入的路由信息的某些属性,以使其满足本协议的要求。
为实现路由策略,首先要定义将要实施路由策略的路由信息的特征,即定义一组匹配规则。可以以路由信息中的不同属性作为匹配依据进行设置,如目的地址、发布路由信息的路由器地址等。匹配规则可以预先设置好,然后再将它们应用于路由的发布、接收和引入等过程的路由策略中。
路由协议可以引用访问控制列表、地址前缀列表、AS路径访问列表、团体属性列表、扩展团体属性列表和Route-policy几种过滤器。下面对各种过滤器逐一进行介绍。
访问控制列表针对IPv4报文的ACL。用户在定义ACL时可以指定IP(v6)地址和子网范围,用于匹配路由信息的目的网段地址或下一跳地址。ACL的有关配置请参见“ACL”部分。
地址前缀列表的作用类似于ACL,但比它更为灵活,且更易于用户理解。使用地址前缀列表过滤路由信息时,其匹配对象为路由信息的目的地址信息域;另外,用户可以指定gateway选项,指明只接收某些路由器发布的路由信息。
一个地址前缀列表由前缀列表名标识。每个前缀列表可以包含多个表项,每个表项可以独立指定一个网络前缀形式的匹配范围,并用一个索引号来标识,索引号指明了在地址前缀列表中进行匹配检查的顺序。
每个表项之间是“或”的关系,在匹配的过程中,路由器按升序依次检查由索引号标识的各个表项,只要有某一表项满足条件,就意味着通过该地址前缀列表的过滤(不再进入下一个表项的测试)。
as-path仅用于BGP。BGP的路由信息中,包含有自治系统路径域。as-path就是针对自治系统路径域指定匹配条件。
community-list仅用于BGP。BGP的路由信息包中,包含一个community属性域,用来标识一个团体。community-list就是针对团体属性域指定匹配条件。
extcommunity-list仅用于BGP。BGP扩展团体属性有两种,一种是用于VPN的Route-Target(路由目标)扩展团体,另一种则是Source of Origin(源节点)扩展团体。扩展团体属性列表就是针对这两种属性指定匹配条件。
路由策略是一种比较复杂的过滤器,它不仅可以匹配路由信息的某些属性,还可以在条件满足时改变路由信息的属性。路由策略可以使用前面几种过滤器定义自己的匹配规则。
一个路由策略可以由多个节点(node)构成,每个节点是匹配检查的一个单元,在匹配过程中,系统按节点序号升序依次检查各个节点。
每个节点可以由一组if-match和apply子句组成。if-match子句定义匹配规则,匹配对象是路由信息的一些属性。同一节点中的不同if-match子句是“与”的关系,只有满足节点内所有if-match子句指定的匹配条件,才能通过该节点的匹配测试。apply子句指定动作,也就是在通过节点的匹配后,对路由信息的一些属性进行设置。
一个路由策略的不同节点间是“或”的关系,如果通过了其中一节点,就意味着通过该路由策略,不再对其他节点进行匹配测试。
路由策略主要有两种应用方式:
l 路由协议在引入其它路由协议发现的路由时,通过路由策略只引入满足条件的路由信息。
l 路由协议在发布或接收路由信息时,通过路由策略对路由信息进行过滤,只接收或发布满足给定条件的路由信息。
在配置过滤列表之前,需要准备以下数据:
l 前缀列表名称
l 匹配的地址范围
l 扩展团体属性列表序号
IPv4地址前缀列表由列表名标识,每个前缀列表可以包含多个表项。各表项以网络前缀的形式,独立指定一个匹配范围,并使用索引号标识。
在匹配过程中,系统按索引号升序依次检查各个表项,只要路由信息满足一个表项,就认为通过该过滤列表,不再去匹配其他表项。
表6-1 配置IPv4地址前缀列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置IPv4地址前缀列表 |
ip ip-prefix ip-prefix-name [ index index-number ] { permit | deny } ip-address mask-length [ greater-equal min-mask-length ] [ less-equal max-mask-length ] |
必选 缺省情况下,没有配置IPv4地址前缀列表 |
& 说明:
如果所有表项都是deny模式,则任何路由都不能通过该过滤列表。这种情况下,建议在多条deny模式的表项后定义一条permit 0.0.0.0 0 less-equal 32表项,允许其它所有IPv4路由信息通过。
例如,按如下配置可以保证仅过滤掉10.1.0.0/16、10.2.0.0/16、10.3.0.0/16三个网段的路由,而其它网段的路由信息可以通过。
<Sysname> system-view
[Sysname] ip ip-prefix abc index 10 deny 10.1.0.0 16
[Sysname] ip ip-prefix abc index 20 deny 10.2.0.0 16
[Sysname] ip ip-prefix abc index 30 deny 10.3.0.0 16
[Sysname] ip ip-prefix abc index 40 permit 0.0.0.0 0 less-equal 32
一个AS过滤列表可以包含多个表项。在匹配过程中,各表项之间是“或”的关系,即只要路由信息通过该列表中的一条表项,就认为通过该AS路径过滤列表。
表6-2 配置AS路径过滤列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置AS路径过滤列表 |
ip as-path as-path-number { deny | permit } regular-expression |
必选 缺省情况下,没有配置AS路径过滤列表 |
一个团体属性列表可以定义多个表项。在匹配过程中,各表项之间是“或”的关系,即只要路由信息通过该列表中的一条表项,就认为通过该团体属性列表。
表6-3 配置团体属性列表
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
配置团体属性列表 |
配置基本团体属性列表 |
ip community-list basic-comm-list-num { deny | permit } [ community-number-list ] [ internet | no-advertise | no-export | no-export-subconfed ] * |
二者必选其一 缺省情况下,没有配置团体属性列表 |
配置高级团体属性列表 |
ip community-list adv-comm-list-num { deny | permit } regular-expression |
一个扩展团体属性列表可以定义多个表项。在匹配过程中,各表项之间是“或”的关系,即只要路由信息通过该列表中的一条表项,就认为通过该扩展团体属性列表。
表6-4 配置扩展团体属性列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置扩展团体属性列表 |
ip extcommunity-list ext-comm-list-number { deny | permit } { rt route-target }&<1-16> |
必选 缺省情况下,没有配置扩展团体属性列表 |
路由策略用来根据路由信息的某些属性过滤路由信息,并改变与路由策略规则匹配的路由信息的属性。匹配条件可以使用前面几种过滤列表。
一个路由策略可由多个节点构成,每个节点又分为:
l if-match子句:定义匹配规则,即路由信息通过当前Route-policy所需满足的条件,匹配对象是路由信息的某些属性。
l apply子句:指定动作,也就是在满足由if-match子句指定的过滤条件后所执行的一些配置命令,对路由的某些属性进行修改。
在配置路由策略之前,需完成以下任务:
l 配置过滤列表
l 配置路由协议
在配置之前,需要准备以下数据:
l 路由策略的名称、节点序号
l 匹配条件
l 要修改的路由属性值
表6-5 创建一个路由策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建路由策略并进入该路由策略视图 |
route-policy route-policy-name { permit | deny } node node-number |
必选 缺省情况下,没有创建路由策略 |
& 说明:
l permit指定节点的匹配模式为允许模式。当路由信息通过该节点的过滤后,将执行该节点的apply子句,不进入下一个节点的测试;如果路由信息没有通过该节点过滤,将进入下一个节点继续测试。
l deny指定节点的匹配模式为拒绝模式(此模式下apply子句不会被执行)。当路由项满足该节点的所有if-match子句时,将不执行apply子句,不进入下一个节点的测试;如果路由项不满足该节点的if-match子句,将进入下一个节点继续测试。
l 如果路由策略中定义了一个以上的节点,则各节点中至少应该有一个节点的匹配模式是permit。当路由策略用于路由信息过滤时,如果某路由信息没有通过任一节点,则认为该路由信息没有通过该路由策略。如果路由策略的所有节点都是deny模式,则没有路由信息能通过该路由策略。
表6-6 配置if-match子句
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入路由策略视图 |
route-policy route-policy-name { permit | deny } node node-number |
- |
|
配置IPv4的路由信息的匹配条件 |
配置IPv4路由信息的目的地址范围的匹配条件 |
if-match acl acl-number |
可选 缺省情况下,没有配置IPv4路由信息的目的地址范围的匹配条件 |
if-match ip-prefix ip-prefix-name |
|||
配置IPv4的路由信息的下一跳地址或源地址的匹配条件 |
if-match ip { next-hop | route-source } { acl acl-number | ip-prefix ip-prefix-name } |
可选 缺省情况下,没有配置IPv4的路由信息的下一跳地址或源地址的匹配条件 |
|
配置BGP路由信息的AS路径域的匹配条件 |
if-match as-path as-path-number&<1-16> |
可选 缺省情况下,没有配置BGP路由信息的AS路径域的匹配条件 |
|
匹配BGP路由信息的团体属性 |
if-match community { basic-community-list-number [ whole-match ] | adv-community-list-number }&<1-16> |
可选 缺省情况下,不匹配BGP路由信息的团体属性。 |
|
配置路由信息的路由开销的匹配条件 |
if-match cost value |
可选 缺省情况下,没有配置路由信息的路由开销的匹配条件 |
|
配置BGP扩展团体属性的匹配条件 |
if-match extcommunity ext-comm-list-number&<1-16> |
可选 缺省情况下,没有配置BGP扩展团体属性的匹配条件 |
|
配置路由信息的出接口的匹配条件 |
if-match interface { interface-type interface-number }&<1-16> |
可选 缺省情况下,没有配置路由信息的出接口的匹配条件 |
|
配置路由信息的类型的匹配条件 |
if-match route-type { internal | external-type1 | external-type2 | external-type1or2 | is-is-level-1 | is-is-level-2 | nssa-external-type1 | nssa-external-type2 | nssa-external-type1or2 } * |
可选 缺省情况下,没有配置路由信息的类型的匹配条件 |
|
配置RIP、OSPF、IS-IS路由信息的标记域的匹配条件 |
if-match tag value |
可选 缺省情况下,没有配置RIP、OSPF、IS-IS路由信息的标记域的匹配条件 |
& 说明:
l 对于同一个Route-policy节点,在匹配的过程中,各个if-match子句间是“与”的关系,即路由信息必须同时满足所有匹配条件,才可以执行apply子句的动作。
l 在一个节点中,可以没有if-math子句,也可以有多个if-match子句。当不指定if-match子句时,如果该节点的匹配模式为允许模式,则所有路由信息都会通过该节点的过滤;如果该节点的匹配模式为拒绝模式,则所有路由信息都会被拒绝。
表6-7 配置apply子句
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建路由策略并进入该路由策略视图 |
route-policy route-policy-name { permit | deny } node node-number |
必选 缺省情况下,不创建路由策略 |
配置BGP路由信息的AS_PATH属性 |
可选 缺省情况下,没有配置BGP路由信息的AS_PATH属性 |
|
删除指定的BGP团体属性 |
apply comm-list comm-list-number delete |
可选 缺省情况下,不删除路由团体属性 |
配置BGP路由信息的团体属性 |
apply community { none | additive | { community-number&<1-16> | aa:nn&<1-16> | internet | no-export-subconfed | no-export | no-advertise }* [ additive ] } |
可选 缺省情况下,没有配置BGP路由信息的团体属性 |
配置路由信息的路由开销 |
apply cost [ + | - ] value |
可选 缺省情况下,没有配置路由信息的路由开销 |
配置路由信息的开销类型 |
apply cost-type { external | internal | type-1 | type-2 } |
可选 缺省情况下,没有配置路由开销类型 |
配置BGP扩展团体属性 |
apply extcommunity { rt { as-number:nn | ip-address:nn } }&<1-16> [ additive ] |
可选 缺省情况下,没有配置BGP扩展团体属性。 |
配置IPv4路由信息的下一跳地址 |
apply ip-address next-hop ip-address |
可选 缺省情况下,没有配置IPv4路由信息的下一跳地址 |
配置引入路由到IS-IS某个级别的区域 |
apply isis { level-1 | level-1-2 | level-2 } |
可选 缺省情况下,没有配置引入路由到IS-IS某个级别的区域 |
配置BGP路由信息的本地优先级 |
apply local-preference preference |
可选 缺省情况下,没有配置BGP路由信息的本地优先级 |
配置BGP路由信息的ORIGIN属性 |
apply origin { igp | egp as-number | incomplete } |
可选 缺省情况下,没有配置BGP路由信息的ORIGIN属性 |
配置路由协议的优先级 |
apply preference preference |
可选 缺省情况下,没有配置路由协议的优先级 |
配置BGP路由信息的首选值 |
apply preferred-value preferred-value |
可选 缺省情况下,没有配置BGP路由信息的首选值 |
配置RIP、OSPF、IS-IS路由信息的标记域 |
apply tag value |
可选 缺省情况下,没有配置RIP、OSPF、IS-IS路由信息的标记域 |
& 说明:
对于引入的IPv4路由,使用apply ip-address next-hop命令设置下一跳地址无效。
在完成上述配置后,在任意视图下执行display命令可以显示配置后路由策略的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除路由策略的统计信息。
操作 |
命令 |
显示BGP AS路径过滤列表信息 |
display ip as-path [ as-path-number ] |
显示BGP团体属性列表信息 |
display ip community-list [ basic-community-list-number | adv-community-list-number ] |
显示BGP扩展团体属性列表信息 |
display ip extcommunity-list [ ext-comm-list-number ] |
显示IPv4地址前缀列表的统计信息 |
display ip ip-prefix [ ip-prefix-name ] |
显示路由策略信息 |
display route-policy [ route-policy-name ] |
清除IPv4地址前缀列表的统计信息 |
reset ip ip-prefix [ ip-prefix-name ] |
如下图所示,Switch B与Switch A之间通过OSPF协议交换路由信息,与Switch C之间通过IS-IS协议交换路由信息。
要求在Switch B上配置路由引入,将IS-IS路由引入到OSPF中去,并同时使用路由策略设置路由的属性。其中,设置172.17.1.0/24的路由的开销为100,设置172.17.2.0/24的路由的Tag属性为20。
(1) 配置各接口的IP地址(略)
(2) 配置IS-IS路由协议
# 配置Switch C。
<SwitchC> system-view
[SwitchC] isis
[SwitchC-isis-1] is-level level-2
[SwitchC-isis-1] network-entity 10.0000.0000.0001.00
[SwitchC-isis-1] quit
[SwitchC] interface vlan-interface 200
[SwitchC-Vlan-interface200] isis enable
[SwitchC-Vlan-interface200] quit
[SwitchC] interface vlan-interface 201
[SwitchC-Vlan-interface201] isis enable
[SwitchC-Vlan-interface201] quit
[SwitchC] interface vlan-interface 202
[SwitchC-Vlan-interface202] isis enable
[SwitchC-Vlan-interface202] quit
[SwitchC] interface vlan-interface 203
[SwitchC-Vlan-interface203] isis enable
[SwitchC-Vlan-interface203] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] isis
[SwitchB-isis-1] is-level level-2
[SwitchB-isis-1] network-entity 10.0000.0000.0002.00
[SwitchB-isis-1] quit
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] isis enable
[SwitchB-Vlan-interface200] quit
(3) 配置OSPF路由协议及路由引入
# 配置Switch A,启动OSPF。
<SwitchA> system-view
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] quit
# 配置Switch B,启动OSPF,并引入IS-IS路由。
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] import-route isis 1
[SwitchB-ospf-1] quit
# 查看SwitchA的OSPF路由表,可以看到引入的路由。
[SwitchA] display ospf routing
OSPF Process 1 with Router ID 192.168.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
192.168.1.0/24 1562 Stub 192.168.1.1 192.168.1.1 0.0.0.0
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
172.17.1.0/24 1 Type2 1 192.168.1.2 192.168.2.2
172.17.2.0/24 1 Type2 1 192.168.1.2 192.168.2.2
172.17.3.0/24 1 Type2 1 192.168.1.2 192.168.2.2
192.168.2.0/24 1 Type2 1 192.168.1.2 192.168.2.2
Total Nets: 5
Intra Area: 1 Inter Area: 0 ASE: 4 NSSA: 0
(4) 配置过滤列表
# 配置编号为2002的ACL,允许172.17.2.0/24的路由通过。
[SwitchB] acl number 2002
[SwitchB-acl-basic-2002] rule permit source 172.17.2.0 0.0.0.255
[SwitchB-acl-basic-2002] quit
# 配置名为prefix-a的地址前缀列表,允许172.17.1.0/24的路由通过。
[SwitchB] ip ip-prefix prefix-a index 10 permit 172.17.1.0 24
(5) 配置路由策略
[SwitchB] route-policy isis2ospf permit node 10
[SwitchB-route-policy] if-match ip-prefix prefix-a
[SwitchB-route-policy] apply cost 100
[SwitchB-route-policy] quit
[SwitchB] route-policy isis2ospf permit node 20
[SwitchB-route-policy] if-match acl 2002
[SwitchB-route-policy] apply tag 20
[SwitchB-route-policy] quit
[SwitchB] route-policy isis2ospf permit node 30
[SwitchB-route-policy] quit
(6) 在路由引入时应用路由策略
# 配置Switch B,设置在路由引入时应用路由策略。
[SwitchB] ospf
[SwitchB-ospf-1] import-route isis 1 route-policy isis2ospf
[SwitchB-ospf-1] quit
# 查看Switch A的OSPF路由表,可以看到目的地址为172.17.1.0/24的路由的开销为100,目的地址为172.17.2.0/24的路由的标记域(Tag)为20,而其他外部路由没有变化。
[SwitchA] display ospf routing
OSPF Process 1 with Router ID 192.168.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
192.168.1.0/24 1 Transit 192.168.1.1 192.168.1.1 0.0.0.0
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
172.17.1.0/24 100 Type2 1 192.168.1.2 192.168.2.2
172.17.2.0/24 1 Type2 20 192.168.1.2 192.168.2.2
172.17.3.0/24 1 Type2 1 192.168.1.2 192.168.2.2
192.168.2.0/24 1 Type2 1 192.168.1.2 192.168.2.2
Total Nets: 5
Intra Area: 1 Inter Area: 0 ASE: 4 NSSA: 0
路由协议运行正常的情况下无法实现路由信息过滤。
地址前缀列表的各个表项中至少应该有一个表项的匹配模式是permit模式。Route-policy的各个节点中至少应该有一个节点的匹配模式是permit模式。
(1) 使用display ip ip-prefix命令查看前缀列表的配置。
(2) 使用display route-policy命令查看路由策略的配置。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!