10-IPv4路由操作
本章节下载 (3.49 MB)
目 录
2.1.4 H3C S3610&S5510系列以太网交换机支持的RIP特性
3.1.5 H3C S3610&S5510以太网交换机支持的OSPF特性
3.7.11 配置LSDB中External LSA的最大数量
4.5.10 配置接口发送不加入填充字段的小型Hello报文
& 说明:
本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。
静态路由是一种特殊的路由,它由管理员手工配置。当网络结构比较简单时,只需配置静态路由就可以使网络正常工作。恰当地设置和使用静态路由可以改进网络的性能,并可为重要的网络应用保证带宽。
静态路由的缺点在于:当网络发生故障或者拓扑发生变化后,可能会出现路由不可达,导致网络中断,此时必须由网络管理员手工修改静态路由的配置。
缺省路由是一种特殊的静态路由。
简单来说,缺省路由是在路由器没有找到匹配的路由表入口项时才使用的路由。在路由表中,缺省路由的目的地址是0.0.0.0,目的地址掩码是0.0.0.0。可通过命令display ip routing-table查看当前是否设置了缺省路由。
当报文的目的地址不能与路由表的任何入口项相匹配时,如果路由表中有缺省路由表项(Route Entries),那么该报文将选取缺省路由;如果路由表中没有缺省路由,那么该报文将被丢弃,并向源端返回一个目标网络不可达的ICMP报文。
(1) 目的地址与掩码
在ip route-static命令中,IPv4地址为点分十进制格式,掩码可以用点分十进制表示,也可用掩码长度(即掩码中连续‘1’的位数)表示。
(2) 出接口和下一跳地址
在配置静态路由时,可指定出接口,也可指定下一跳地址。如果指定出接口,必须指定下一跳地址。对于NULL0接口,配置了出接口就不再配置下一跳地址。下一跳地址不能为本地接口IP地址,否则路由不会生效。
实际上,所有的路由项都必须明确下一跳地址。在发送报文时,首先根据报文的目的地址寻找路由表中与之匹配的路由。只有指定了下一跳地址,链路层才能找到对应的链路层地址,并转发报文。
(3) 其它属性
对于不同的静态路由,可以为它们配置不同的优先级,从而更灵活地应用路由管理策略。例如:配置到达相同目的地的多条路由,如果指定相同优先级,则可实现负载分担,如果指定不同优先级,则可实现路由备份。
在配置静态路由之前,需完成以下任务:
l 配置相关接口的物理参数
l 配置相关接口的链路层属性
l 配置相关接口的IP地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置静态路由 |
ip route-static ip-address { mask | mask-length } { [ Vlan-interface vlan-id ] nexthop-address | NULL interface-number } [ preference preference ] [ tag tag-value ] [ description description-info ] |
必选 缺省情况下 静态路由的优先级preference为60; 静态路由tag值为0 |
配置静态路由的缺省优先级 |
ip route-static default-preference default-preference-value |
可选 缺省情况下,静态路由的缺省优先级为60 |
& 说明:
l 在配置静态路由时,如果先指定下一跳地址,然后将该地址配置为本地接口(如VLAN接口等)的IP地址,则该静态路由不会生效。
l 在配置静态路由时,如果没有指定优先级,就会使用缺省优先级。重新设置缺省优先级后,仅对新增的静态路由有效。
l 配置静态路由的描述信息可以描述某条特定路由的作用、功能、用途等等,方便用户更好地分类、管理以及配置不同的静态路由。
l 设置静态路由的Tag值,可以在路由策略中根据Tag值对路由进行灵活的控制。
l 在使用ip route-static配置静态路由时,如果将目的地址与掩码配置为全零(0.0.0.0 0.0.0.0),则表示配置的是缺省路由。
在完成上述配置后,在任意视图下执行display命令查看静态路由配置的运行情况并检验配置结果。
在系统视图下执行delete命令可以删除配置的所有静态路由。
操作 |
命令 |
查看IP路由表摘要信息 |
display ip routing-table |
查看IP路由表详细信息 |
display ip routing-table verbose |
查看静态路由表信息 |
display ip routing-table protocol static [ inactive | verbose ] |
删除所有静态路由 |
delete static-routes all |
& 说明:
在系统视图下执行undo ip route-static命令可以删除一条静态路由,而执行delete static-routes all命令可以一次性删除所有已配置的静态路由,包括IPv4缺省路由。
交换机各接口及主机的IP地址和掩码如所示。要求采用静态路由,使图中任意两台主机之间都能互通。
(1) 配置各接口的IP地址(略)
(2) 配置静态路由
# 在SwitchA上配置缺省路由。
<SwitchA> system-view
[SwitchA] ip route-static 0.0.0.0 0.0.0.0 1.1.4.2
# 在SwitchB上配置两条静态路由。
<SwitchB> system-view
[SwitchB] ip route-static 1.1.1.0 255.255.255.0 1.1.4.1
[SwitchB] ip route-static 1.1.3.0 255.255.255.0 1.1.4.6
# 在SwitchC上配置缺省路由。
<SwitchC> system-view
[SwitchC] ip route-static 0.0.0.0 0.0.0.0 1.1.4.5
(3) 配置主机
配置主机PC1的缺省网关为1.1.1.1,主机PC2的缺省网关为1.1.2.1,主机PC3的缺省网关为1.1.3.1。
(4) 查看配置结果
# 显示SwitchA的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 Vlan100
1.1.1.0/24 Direct 0 0 1.1.1.1 Vlan200
1.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
1.1.4.0/30 Direct 0 0 1.1.4.1 Vlan100
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
# 使用Ping命令验证连通性。
[SwitchA] ping 1.1.3.1
PING 1.1.3.1: 56 data bytes, press CTRL_C to break
Reply from 1.1.3.1: bytes=56 Sequence=1 ttl=254 time=62 ms
Reply from 1.1.3.1: bytes=56 Sequence=2 ttl=254 time=63 ms
Reply from 1.1.3.1: bytes=56 Sequence=3 ttl=254 time=63 ms
Reply from 1.1.3.1: bytes=56 Sequence=4 ttl=254 time=62 ms
Reply from 1.1.3.1: bytes=56 Sequence=5 ttl=254 time=62 ms
--- 1.1.3.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 62/62/63 ms
# 使用tracert命令验证连通性。
[SwitchA] tracert 1.1.3.1
traceroute to 1.1.3.1(1.1.3.1) 30 hops max,40 bytes packet, press CTRL_C to break
1 1.1.4.2 31 ms 32 ms 31 ms
2 1.1.4.6 62 ms 63 ms 62 ms
& 说明:
本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。
RIP(Routing Information Protocol,路由信息协议)是一种较为简单的IGP(Interior Gateway Protocol,内部网关协议),主要用于规模较小的网络中,比如校园网以及结构较简单的地区性网络。对于更为复杂的环境和大型网络,一般不使用RIP。
由于RIP的实现较为简单,在配置和维护管理方面也远比OSPF和IS-IS容易,因此在实际组网中仍有广泛地应用。
RIP是一种基于距离矢量(Distance-Vector)算法的协议,它通过UDP报文进行路由信息的交换,使用的端口号为520。
RIP使用跳数(Hop Count)来衡量到达目的地址的距离,跳数称为度量值。在RIP中,路由器到与它直接相连网络的跳数为0,通过一个路由器可达的网络的跳数为1,其余依此类推。为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,.表示目的网络或主机不可达。由于这个限制,使得RIP不适合在大型网络中应用。
为提高性能,防止产生路由环路,RIP支持水平分割(Split Horizon)和毒性逆转(Poison Reverse)功能。
每个运行RIP的路由器管理一个路由数据库,该路由数据库包含了到所有可达目的地的路由项,这些路由项包含下列信息:
l 目的地址:主机或网络的地址。
l 下一跳地址:为到达目的地,需要经过的相邻路由器的接口IP地址。
l 出接口:转发报文的出接口。
l 度量值(Metric):本路由器到达目的地的开销。
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启动和运行的整个过程可描述如下:
l 路由器启动RIP后,便会向相邻的路由器发送请求报文(Request message),相邻的RIP路由器收到请求报文后,响应该请求,回送包含本地路由表信息的响应报文(Response message)。
l 路由器收到响应报文后,更新本地路由表,同时向相邻路由器发送触发更新报文,广播路由更新信息。相邻路由器收到触发更新报文后,又向其各自的相邻路由器发送触发更新报文。在一连串的触发更新广播后,各路由器都能得到并保持最新的路由信息。
l RIP采用老化机制对超时的路由进行老化处理,以保证路由的实时性和有效性。
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有两个版本:RIP-1和RIP-2。
RIP-1是有类别路由协议(Classful Routing Protocol),它只支持以广播方式发布协议报文。RIP-1的协议报文中没有携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1不支持不连续子网(Discontiguous Subnet)。
RIP-2是一种无类路由协议(Classless Routing Protocol),与RIP-1相比,它有以下优势:
l 支持路由标记(Route Tag),在路由策略中可根据路由标记对路由进行灵活的控制。
l 报文中携带掩码信息,支持路由聚合和CIDR(Classless Inter-Domain Routing,无类域间路由)。
l 支持指定下一跳,在广播网上可以选择到最优下一跳地址。
l 支持以组播方式发送路由更新报文,减少资源消耗。
l 支持对协议报文进行验证,并提供明文验证和MD5验证两种方式,增强安全性。
& 说明:
RIP-2有两种报文传送方式:广播方式和组播方式,缺省将采用组播方式发送报文,使用的组播地址为224.0.0.9。当接口运行RIP-2广播方式时,也可接收RIP-1的报文。
RIP报文由头部(Header)和多个路由表项(Route Entries)部分组成。在一个RIP报文中,最多可以有25个路由表项。
RIP-1的报文格式如图2-1所示。
图2-1 RIP-1的报文格式
各字段的解释如下:
l Command:标识报文的类型。值为1时表示Request报文,值为2表示Response报文。
l Version:RIP的版本号。对于RIP-1来说其值为0x01。
l AFI(Address Family Identifier):地址族标识,其值为2时表示IP协议。
l IP Address:该路由的目的IP地址,可以是自然网段地址、子网地址或主机地址。
l Metric:路由的度量值。
RIP-2的报文格式与RIP-1类似,如图2-2所示。
图2-2 RIP-2的报文格式
其中,与RIP-1不同的字段有:
l Version:RIP的版本号。对于RIP-2来说其值为0x02。
l Route Tag:路由标记。
l IP Address:该路由的目的IP地址,可以是自然网段地址、子网地址或主机地址。
l Subnet Mask:目的地址的掩码。
l Next Hop:提供一个更好的下一跳地址。如果为0.0.0.0,则表示发布此路由的路由器地址就是最优下一跳地址。
RIP-2为了支持报文验证,使用第一个路由表项作为验证项,并将AFI字段的值设为0xFFFF作为标识,如图2-3所示。
图2-3 RIP-2的验证报文格式
各字段的解释如下:
l Authentication Type:验证类型。值为2时表示明文验证,值为3时表示MD5验证。
l Authentication:验证字,当使用明文验证时包含了密码信息;当使用MD5验证时包含了Key ID、MD5验证数据长度和序列号的信息。
& 说明:
RFC1723中只定义了明文验证方式,关于MD5验证的详细信息,请参考RFC2082“RIP-2 MD5 Authentication”。
H3C S3610&S5510系列以太网交换机支持以下RIP特性:
l 支持RIP-1
与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的基本功能之前,需完成以下任务:
l 配置链路层协议
l 配置接口的网络层地址,使相邻节点的网络层可达
表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。
用户可通过下列操作来配置接口的工作状态,即接口是否发送或接收RIP报文。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
禁止接口发送路由更新报文 |
silent-interface { all | interface-type interface-number } |
可选 缺省情况下,允许所有接口发送路由更新报文 |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
– |
允许接口接收RIP报文 |
rip input |
可选 缺省情况下,允许接口接收或发送RIP报文 |
允许接口发送RIP报文 |
rip output |
用户可以在RIP视图下配置RIP版本,也可在接口上配置RIP版本:
l 当在接口上没有进行RIP版本配置,而在全局配置的RIP版本号为RIP-1时,接口上运行RIP的版本号为RIP-1。
l 当在接口上没有进行RIP版本配置,而在全局配置的RIP版本号为RIP-2时,接口上运行RIP的版本号为RIP-2,且RIP-2报文的发送方式为组播方式。
l 当在接口上进行了RIP版本配置,但是接口上的版本与全局配置的RIP版本不一致时,以接口配置的版本为准;只有当接口上没有配置RIP版本的时候,全局配置才会在这个接口上生效。
表2-3 配置RIP版本号
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
指定全局RIP版本 |
version { 1 | 2 } |
可选 缺省情况下,RIP版本为RIP-1 |
退回到系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
指定接口运行的RIP版本 |
rip version { 1 | 2 [ broadcast | multicast ] } |
可选 缺省情况下,接口运行的RIP版本为RIP-1 |
在实际应用中,有时候需要对RIP路由信息进行更为精确的控制,以满足复杂网络环境中的需要。在配置RIP路由信息控制之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达
l 配置RIP基本功能
附加度量值是附加在RIP路由上的输入输出度量值,包括发送附加度量值和接收附加度量值。发送附加度量值不会改变路由表中的路由度量值,仅当接口发送RIP路由信息时才会添加到发送路由上;接收附加度量值会影响接收到的路由度量值,接口接收到一条合法的RIP路由时,在将其加入路由表前会把度量值附加到该路由上。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口接收RIP路由时的附加度量值 |
rip metricin value |
可选 缺省情况下,接口接收RIP路由时的附加度量值为0 |
配置接口发送RIP路由时的附加度量值 |
rip metricout value |
可选 缺省情况下,接口发送RIP路由时的附加路由度量值为1 |
路由聚合是指:同一自然网段内的不同子网的路由在向外(其它网段)发送时聚合成一条自然掩码的路由发送。这一功能主要用于减小路由表的规模,进而减少网络上的流量。
用户可配置RIP-2自动路由聚合功能。需要注意的是,当需要将所有子网路由广播出去时,必需关闭RIP-2的自动路由聚合功能。在配置RIP-2在指定接口发布一个聚合的本地IP地址时,也必需关闭RIP-2的自动路由聚合功能。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
开启RIP-2自动路由聚合功能 |
summary |
必选 缺省情况下,RIP-2自动路由聚合功能处于开启状态 |
用户可在指定接口配置RIP-2发布一条聚合路由。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
关闭RIP-2自动路由聚合功能 |
undo summary |
必选 缺省情况下,RIP-2启用有类聚合功能自动路由聚合功能处于开启状态 |
退回到系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置发布一条聚合路由 |
rip summary-address ip-address { mask | mask-length } |
必选 |
在某些特殊情况下,路由器会收到大量来自同一网段的主机路由。这些路由对于路由寻址没有多少作用,却占用了大量的资源;此时可配置RIP禁止接收主机路由,以节省网络资源。
表2-7 禁止RIP接收主机路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
禁止RIP接收主机路由 |
undo host-route |
必选 缺省情况下,允许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 | ip-prefix ip-prefix-name [ gateway 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不对发布的路由信息进行过滤 |
在路由器中可能会运行多个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-value | route-policy route-policy-name | tag tag-value ] * |
必选 缺省情况下,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定时器的值为240秒 |
& 说明:
在配置RIP定时器时需要注意,定时器值的调整应考虑网络的性能,并在所有运行RIP的路由器上进行统一配置,以免增加不必要的网络流量或引起网络路由震荡。
& 说明:
如果同时配置了水平分割和毒性逆转,则只有毒性逆转功能生效。
配置水平分割可以使得从一个接口学到的路由不能通过此接口向外发布,用于避免相邻路由器间的路由环路。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能水平分割功能 |
rip split-horizon |
必选 缺省情况下,水平分割功能处于开启状态 |
配置毒性逆转可以使得从一个接口学到的路由还可以从这个接口向外发布,但这些路由的度量值已设置为16,即不可达。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能毒性逆转功能 |
rip poison-reverse |
必选 缺省情况下,毒性逆转功能处于关闭状态 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置RIP最大等价路由条数 |
maximum load-balancing number |
可选 缺省情况下,最大等价路由条数为4 |
RIP-1报文中的有些字段必须为零,称之为零域。用户可配置RIP-1在接收报文时对零域进行检查,零域值不为零的RIP-1报文将不被处理。如果用户能确保所有报文都是可信任的,则可以不进行该项检查,以节省CPU处理时间。
此外,还可配置对接收到的报文进行源地址检查,对于在接口上接收的报文,RIP将检查该报文源地址和接口的IP地址是否处于同一网段,如果不在同一网段则丢弃该报文。
表2-16 配置RIP对更新报文进行有效性检查
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
开启对RIP-1报文的零域进行检查的功能 |
checkzero |
可选 缺省情况下,对RIP-1报文的零域进行检查的功能处于开启状态 |
开启对接收到的RIP路由更新报文进行源IP地址检查功能 |
validate-source-address |
可选 缺省情况下,对接收到的RIP路由更新报文进行源IP地址检查的功能处于开启状态 |
& 说明:
l 配置零域检查对RIP-2无效;
l 当存在RIP非直连的邻居时,应该取消源地址检查。
RIP-2支持两种认证方式:明文认证和MD5密文认证。
明文认证不能提供安全保障,未加密的认证字随报文一同传送,所以明文认证不能用于安全性要求较高的情况。
表2-17 配置RIP-2报文的认证方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置RIP-2报文的认证方式 |
rip authentication-mode { simple password | md5 { rfc2453 key-string | rfc2082 key-string key-id } } |
必选 |
通常情况下,RIP使用广播或组播地址发送报文,如果在不支持广播或组播报文的链路上运行RIP,则必须手工指定RIP的邻居;需要注意的是,当指定的邻居和本地路由器非直接连接,则必须取消对更新报文的源地址进行检查。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip [ process-id ] |
- |
配置RIP邻居 |
peer ip-address |
必选 缺省情况下,RIP不向任何定点地址发送更新报文 |
取消对接收到的RIP路由更新报文进行源IP地址检查操作 |
undo validate-source-address |
必选 缺省情况下,对接收到的RIP路由更新报文进行源IP地址检查 |
表2-19 配置RIP和MIB绑定
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置RIP和MIB绑定 |
rip mib-binding process-id |
可选 缺省情况下,MIB操作绑定在进程号最小的RIP进程上 |
在完成上述配置后,在任意视图下执行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 |
显示RIP的路由表信息 |
display rip process-id route [ statistics | ip-address { mask | mask-length } | peer ip-address ] |
清除由特定RIP进程维护的计数器的统计数据 |
reset rip process-id statistics |
如图2-4所示,要求在SwitchA和SwitchB的所有接口上使能RIP,并使用RIP-2进行网络互连。
图2-4 配置RIP的版本
(1) 配置各接口的IP地址(略)
(2) 配置RIP基本功能
# 配置SwitchA。
<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
# 配置SwitchB。
<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
# 查看SwitchA的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 27
从路由表中可以看出,RIP-1发布的路由信息使用的是自然掩码。
(3) 配置RIP的版本
# 在SwitchA上配置RIP-2。
<SwitchA> system-view
[SwitchA] rip
[SwitchA-rip-1] version 2
[SwitchA-rip-1] undo summary
[SwitchA-rip-1] quit
# 在SwitchB上配置RIP-2。
<SwitchB> system-view
[SwitchB] rip
[SwitchB-rip-1] version 2
[SwitchB-rip-1] undo summary
[SwitchB-rip-1] quit
# 查看SwitchA的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 15
10.1.1.0/24 192.168.1.2 1 0 RA 15
从路由表中可以看出,RIP-2发布的路由中带有更为精确的子网掩码信息。
& 说明:
由于RIP路由信息的老化时间较长,所以在配置RIP-2版本后的一段时间里,路由表中可能还会存在RIP-1的路由信息。
如图2-5所示,SwitchB上运行两个RIP进程:RIP100和RIP200。SwitchB通过RIP100和SwitchA交换路由信息,通过RIP200和SwitchC交换路由信息。
要求在SwitchB上配置路由引入,将两个不同进程的RIP路由相互引入到对方的RIP进程中,将引入的RIP200的路由缺省度量值设为3。并且需要在SwitchB配置过滤策略,对引入的RIP200的一条路由(192.168.4.0/24)进行过滤,使其不发布给SwitchA。
图2-5 配置RIP引入外部路由组网图
(1) 配置各接口的IP地址(略)
(2) 配置RIP基本功能
# 在SwitchA上启动RIP进程100。
<SwitchA> system-view
[SwitchA] rip 100
[SwitchA-rip-100] network 192.168.0.0
[SwitchA-rip-100] network 192.168.1.0
[SwitchA-rip-100] quit
# 在SwitchB上启动两个RIP进程,进程号分别为100和200。
<SwitchB> system-view
[SwitchB] rip 100
[SwitchB-rip-100] network 192.168.1.0
[SwitchB-rip-100] quit
[SwitchB] rip 200
[SwitchB-rip-200] network 192.168.2.0
[SwitchB-rip-200] quit
# 在SwitchC上启动RIP进程200。
<SwitchC> system-view
[SwitchC] rip 200
[SwitchC-rip-200] network 192.168.2.0
[SwitchC-rip-200] network 192.168.3.0
[SwitchC-rip-200] network 192.168.4.0
[SwitchC-rip-200] quit
# 查看SwitchA的路由表信息。
[SwitchA] display ip routing-table
Routing Tables: Public
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost NextHop Interface
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoopBack0
192.168.0.0/24 Direct 0 0 192.168.0.1 vlan-interface101
192.168.0.1/32 Direct 0 0 127.0.0.1 InLoopBack0
192.168.1.0/24 Direct 0 0 192.168.1.1 Vlan-interface100
192.168.1.1/32 Direct 0 0 127.0.0.1 InLoopBack0
192.168.1.2/32 Direct 0 0 192.168.1.2 Vlan-interface100
(3) 配置RIP引入外部路由
# 在SwitchB上将两个不同RIP进程的路由相互引入到对方的路由表中。
[SwitchB] rip 100
[SwitchB-rip-100] default cost 3
[SwitchB-rip-100] import-route rip 200
[SwitchB-rip-100] quit
[SwitchB] rip 200
[SwitchB-rip-200] import-route rip 100
[SwitchB-rip-200] quit
# 查看路由引入后SwitchA的路由表信息。
[SwitchA] display ip routing-table
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost NextHop Interface
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoopBack0
192.168.0.0/24 Direct 0 0 192.168.0.1 Vlan-interface101
192.168.0.1/32 Direct 0 0 127.0.0.1 InLoopBack0
192.168.1.0/24 Direct 0 0 192.168.1.1 Vlan-interface100
192.168.1.1/32 Direct 0 0 127.0.0.1 InLoopBack0
192.168.1.2/32 Direct 0 0 192.168.1.2 Vlan-interface100
192.168.2.0/24 RIP 100 4 192.168.1.2 Vlan-interface100
192.168.3.0/24 RIP 100 4 192.168.1.2 Vlan-interface100
192.168.4.0/24 RIP 100 4 192.168.1.2 Vlan-interface100
(4) 配置RIP对引入的路由进行过滤
# 在SwitchB上配置ACL,并对引入的RIP进程200的路由进行过滤。
[SwitchB] acl 2000
[SwitchB-acl-basic-2000] rule deny souce 192.168.4.0 0.0.0.255
[SwitchB-acl-basic-2000] rule permit
[SwitchB-acl-basic-2000] quit
[SwitchB] rip 100
[SwitchB-rip-100] filter-policy 2000 export rip 200
[SwitchB-rip-100] quit
# 查看过滤后SwitchA的路由表。
[SwitchA] display ip routing-table
Routing Tables: Public
Destinations : 9 Routes : 9
Destination/Mask Proto Pre Cost NextHop Interface
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoopBack0
192.168.0.0/24 Direct 0 0 192.168.0.1 Vlan-interface101
192.168.0.1/32 Direct 0 0 127.0.0.1 InLoopBack0
192.168.1.0/24 Direct 0 0 192.168.1.1 Vlan-interface100
192.168.1.1/32 Direct 0 0 127.0.0.1 InLoopBack0
192.168.1.2/32 Direct 0 0 192.168.1.2 Vlan-interface100
192.168.2.0/24 RIP 100 4 192.168.1.2 Vlan-interface100
192.168.3.0/24 RIP 100 4 192.168.1.2 Vlan-interface100
在链路正常的情况下收不到邻居的RIP更新报文。
RIP启动后,必须使用network命令使能相应的接口。如果对接口的工作状态单独进行了配置,应确认没有抑制相关接口或禁止其收发RIP报文。
如果在对端路由器上配置的是组播方式发送RIP报文,在本地路由器上也应该配置为组播方式。
(1) 执行display current-configuration命令,检查RIP的配置。
(2) 执行display rip命令,检查是否抑制了相关RIP接口。
在链路正常的情况下,运行RIP的网络发生路由振荡,查看路由表时发现部分路由时有时无。
在RIP网络中,应确保全网定时器的配置一致,且各定时器之间的关系合理,如Timeout定时器的值应大于Update定时器的值。
(1) 使用display rip命令查看RIP定时器的配置
(2) 使用timers命令将全网的定时器配置一致
& 说明:
l 本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。
l 本章若没有特别说明,下文中所提到的OSPF均指OSPFv2。
OSPF是Open Shortest Path First(开放最短路径优先协议)的缩写。它是IETF组织开发的一个基于链路状态的内部网关协议。目前针对IPv4协议使用的是OSPF Version 2(RFC2328)。
OSPF具有如下特点:
l 适应范围广——支持各种规模的网络,最多可支持几百台路由器。
l 快速收敛——在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
l 无自环——由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
l 区域划分——允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。
l 等价路由——支持到同一目的地址的多条等价路由。
l 路由分级——使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
l 支持验证——支持基于接口的报文验证,以保证报文交互的安全性。
l 组播发送——在某些类型的链路上以组播地址发送协议报文,减少对其他设备的干扰。
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协议,则必须存在路由器ID(Router ID,简称RID)。RID是一个32比特无符号整数,是一台路由器在自治系统中的唯一标识。
RID可以手工配置,如果没有通过命令指定RID,系统会从当前接口的IP地址中自动选取一个作为RID。
RID的选择顺序是:
l 如果当前配置了Loopback接口,则选择Loopback接口中数值最大的IP地址作为RID。
l 如果当前没有配置Loopback接口,则选取VLAN接口中数值最大的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区域内传播。
在OSPF中,邻居(Neighbor)和邻接(Adjacency)是两个不同的概念。
OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文。收到Hello报文的OSPF路由器会检查报文中所定义的参数,如果双方一致就会形成邻居关系。
形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD报文,交换LSA并达到LSDB的同步之后,才形成真正意义上的邻接关系。
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,路由器数量的增多会导致LSDB非常庞大,占用大量的存储空间,并使得运行SPF算法的复杂度增加,导致CPU负担很重。
在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“振荡”之中,造成网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。
OSPF协议通过将自治系统划分成不同的区域(Area)来解决上述问题。区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。区域的边界是路由器,而不是链路。一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。如图3-1所示。
图3-1 OSPF区域划分
划分区域后,可以在区域边界路由器上进行路由聚合,以减少通告到其他区域的LSA数量,还可以将网络拓扑变化带来的影响最小化。
OSPF路由器根据在AS中的不同位置,可以分为以下四类:
(1) 区域内路由器(Internal Router)
该类路由器的所有接口都属于同一个OSPF区域。
(2) 区域边界路由器ABR(Area Border Router)
该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
(3) 骨干路由器(Backbone Router)
该类路由器至少有一个接口属于骨干区域(骨干区域的介绍请参见下一小节)。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。
(4) 自治系统边界路由器ASBR(AS Boundary Router)
与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它有可能是区域内路由器,也有可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
图3-2 OSPF路由器的类型
OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号(Area ID)是0,通常被称为骨干区域。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此,OSPF有两个规定:
l 所有非骨干区域必须与骨干区域保持连通。
l 骨干区域自身也必须保持连通。
但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通过配置OSPF虚连接予以解决。
虚连接是指在两台ABR之间通过一个非骨干区域而建立的一条逻辑上的连接通道。它的两端必须是ABR,而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区(Transit Area)。
如图3-3所示,Area2与骨干区域之间没有直接相连的物理链路,但可以在ABR上配置虚连接,使Area2通过一条逻辑链路与骨干区域保持连通。
虚连接的另外一个应用是提供冗余的备份链路,当骨干区域因链路故障不能保持连通时,通过虚连接仍然可以保证骨干区域在逻辑上的连通性。如图3-4所示。
虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,在这个连接上,和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。
两台ABR之间直接传递OSPF报文信息,它们之间的OSPF路由器只是起到一个转发报文的作用。由于协议报文的目的地址不是中间这些路由器,所以这些报文对于它们而言是透明的,只是当作普通的IP报文来转发。
Stub区域是一些特定的区域,Stub区域的ABR不传播它们接收到的自治系统外部路由,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。
Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,Stub区域位于自治系统的边界,是只有一个ABR的非骨干区域。
为保证到自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由,并发布给Stub区域中的其他非ABR路由器。
配置Stub区域的需要注意下列几点:
l 骨干区域不能配置成Stub区域。
l 如果要将一个区域配置成Stub区域,则该区域中的所有路由器必须都要配置stub命令。
l Stub区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
l 虚连接不能穿过Stub区域。
NSSA(Not-So-Stubby Area)区域是Stub区域的变形,与Stub区域有许多相似的地方。与Stub区域一样,NSSA区域也不允许Type5 LSA注入,但NSSA区域可以允许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被划分成不同的区域后,区域间可以通过路由聚合来减少路由信息,减小路由表的规模,提高路由器的运算速度。
例如,图3-6中,Area 19内有三条区域内路由19.1.1.0/24,19.1.2.0/24,19.1.3.0/24,如果此时在R1上配置了路由聚合,将三条路由聚合成一条19.1.0.0/16,则R1就只生成一条聚合后的LSA,并发布给Area0中的其他路由器。
OSPF有两类聚合:
(1) ABR聚合
ABR向其它区域发送路由信息时,以网段为单位生成Type3 LSA。如果该区域中存在一些连续的网段,则可以使用abr-summary命令将这些连续的网段聚合成一个网段。这样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,虽然一样需要较长的时间,但并不会影响路由的计算。
DR和BDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量。
如图3-7所示,用实线代表以太网物理连接,虚线代表建立的邻接关系。可以看到,采用DR/BDR机制后,5台路由器之间只需要建立7个邻接关系就可以了。
图3-7 DR和BDR示意图
DR和BDR不是人为指定的,而是由本网段中所有的路由器共同选举出来的。路由器接口的DR优先级决定了该接口在选举DR/BDR时所具有的资格。本网段内DR优先级大于0的路由器都可作为“候选人”。
选举中使用的“选票”就是Hello报文。每台路由器将自己选出的DR写入Hello报文中,发给网段上的每台运行OSPF协议的路由器。当处于同一网段的两台路由器同时宣布自己是DR时,DR优先级高者胜出。如果优先级相等,则Router ID大者胜出。如果一台路由器的优先级为0,则它不会被选举为DR或BDR。
需要注意的是:
l 只有在广播或NBMA类型接口才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。
l DR是指某个网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DR Other。
l 若DR/BDR已经选择完毕,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR。
l DR并不一定就是DR优先级最高的路由器接口;同理,BDR也并不一定就是DR优先级次高的路由器接口。
OSPF报文直接封装为IP报文协议报文,协议号为89。一个比较完整的OSPF报文(以LSU报文为例)结构如图3-8所示。
图3-8 OSPF报文结构
OSPF有五种报文类型,它们有相同的报文头。如图3-9所示。
图3-9 OSPF报文头格式
主要字段的解释如下:
l Version:OSPF的版本号。对于OSPFv2来说,其值为2。
l Type:OSPF报文的类型。数值从1到5,分别对应Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。
l Packet length:OSPF报文的总长度,包括报文头在内,单位为字节。
l AuType:验证类型。可分为不验证、简单(明文)口令验证和MD5验证,其值分别为0、1、2。
l Authentication:其数值根据验证类型而定。当验证类型为0时未作定义,为1时此字段为密码信息,类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。
& 说明:
MD5验证数据添加在OSPF报文后面,不包含在Authenticaiton字段中。
最常用的一种报文,周期性的发送给邻居路由器。内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。Hello报文格式如图3-10所示。
图3-10 Hello报文格式
主要字段解释如下:
l Network Mask:发送Hello报文的接口所在网络的掩码,如果相邻两台路由器的网络掩码不同,则不能建立邻居关系。
l HelloInterval:发送Hello报文的时间间隔。如果相邻两台路由器的Hello间隔时间不同,则不能建立邻居关系。
l Rtr Pri:DR优先级。如果设置为0,则该路由器接口不能成为DR/BDR。
l RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。如果相邻两台路由器的失效时间不同,则不能建立邻居关系。
l Neighbor:邻居路由器的Router ID。
两台路由器进行数据库同步时,用DD报文来描述自己的LSDB,内容包括LSDB中每一条LSA的Header(LSA的Header可以唯一标识一条LSA)。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量,对端路由器根据LSA Header就可以判断出是否已有这条LSA。
DD报文格式如图3-11所示。
图3-11 DD报文格式
主要字段的解释如下:
l Interface MTU:在不分片的情况下,此接口最大可发出的IP报文长度。
l I(Initial):当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。
l M(More):当连续发送多个DD报文时,如果这是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。
l MS(Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主(Master)从(Slave)关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。
l DD Sequence Number:DD报文序列号,由Master方规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。主从双方利用序列号来保证DD报文传输的可靠性和完整性。
两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。LSR报文格式如图3-12所示。
图3-12 LSR报文格式
主要字段解释如下:
l LS type:LSA的类型号。例如Type1表示Router LSA。
l Link State ID:链路状态标识,根据LSA的类型而定。
l Advertising Router:产生此LSA的路由器的Router ID。
LSU报文用来向对端路由器发送所需要的LSA,内容是多条LSA(全部内容)的集合。LSU报文格式如图3-13所示。
图3-13 LSU报文格式
LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header。一个LSAck报文可对多个LSA进行确认。报文格式如图3-14所示。
图3-14 LSAck报文格式
所有的LSA都有相同的报文头,其格式如图3-15所示。
图3-15 LSA的头格式
主要字段的解释如下:
l LS age:LSA产生后所经过的时间,以秒为单位。LSA在本路由器的链路状态数据库(LSDB)中会随时间老化(每秒钟加1),但在网络的传输过程中却不会。
l LS type:LSA的类型。
l Link State ID:具体数值根据LSA的类型而定。
l LS sequence number:LSA的序列号,其他路由器根据这个值可以判断哪个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:链路类型。
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密文验证)必须一致。一个网段中所有路由器的验证字口令必须一致。
与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
l RFC 3630:Traffic Engineering Extensions to OSPF Version 2
表3-1 OSPF配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置OSPF基本功能 |
必选 |
||
配置OSPF的区域特性 |
可选 |
||
配置OSPF的网络类型 |
配置OSPF接口的网络类型 |
可选 |
|
配置NBMA网络的邻居 |
可选 |
||
配置OSPF接口的DR优先级 |
可选 |
||
配置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的各项配置任务中,必须先启动OSPF、区域号和指定接口后,才能配置其它的功能特性。
在配置OSPF之前,需完成以下任务:
l 配置链路层协议。
l 配置接口的网络层地址,使各相邻节点网络层可达。
为保证OSPF运行的稳定性,在进行网络规划时应该确定路由器ID的划分并建议手工配置。手工配置路由器的ID时,必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个接口的IP地址一致。
H3C S3610&S5510系列以太网交换机支持OSPF多进程,当在一台设备上启动多个OSPF进程时,需要指定不同的进程号。OSPF进程号是本地概念,不影响与其它路由器之间的报文交换。因此,不同的路由器之间,即使进程号不同也可以进行报文交换。
在配置同一区域内的路由器时,大多数的配置数据都应该以区域为基础来统一考虑。错误的配置可能会导致相邻路由器之间无法相互传递信息,甚至导致路由信息的阻塞或者自环。
表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 |
可选 仅在ABR上进行配置。 缺省情况下,发送到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 |
可选 缺省情况下,无主机路由 |
& 说明:
l 所有连接到Stub区域的路由器必须使用stub命令将该区域配置成Stub属性。
l 所有连接到NSSA区域的路由器必须使用nssa命令将该区域配置成NSSA属性。
OSPF根据链路层协议类型将网络分为四种不同的类型。由于NBMA网络必须是全连通的,即网络中任意两台路由器之间都必须有一条虚电路直接可达。但在很多情况下,这个要求无法满足,这时就需要通过命令强制改变网络的类型。
对于NBMA网络,如果部分路由器之间没有直接可达的链路时,应将接口配置成P2MP方式。如果路由器在NBMA网络中只有一个对端,也可将接口类型改为P2P方式。
另外,在配置广播网和NBMA网络时,还可以指定各接口的DR优先级,以此来影响网络中的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接口的邻接点优先级的取值为1 |
当网络类型为广播网或NBMA类型时,可以通过配置接口的DR优先级来影响网络中DR/BDR的选择。
表3-6 配置OSPF接口的DR优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口的DR优先级 |
ospf dr-priority priority |
必选 缺省情况下,接口的DR优先级为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 如果对路由信息进行过滤,则需要配置对应的过滤列表
配置OSPF路由聚合分为:
l 配置区域边界路由器(ABR)路由聚合。
l 配置自治系统边界路由器(ASBR)对引入的路由进行聚合。
表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 ] |
必选 缺省情况下,区域边界路由器没有对路由进行聚合 |
表3-8 配置ASBR路由聚合
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ]* |
- |
配置OSPF的ASBR路由聚合 |
asbr-summary ip-address { mask | mask-length } [ not-advertise | tag tag-value | cost cost ] * |
必选 缺省情况下,没有对引入的路由进行聚合 |
表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计算出来的路由进行过滤,只有通过过滤的路由才被添加到路由表中。
操作 |
命令 |
说明 |
进入系统视图 |
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 |
必选 缺省情况下,带宽参考值为100 Mbit/s |
& 说明:
如果没有在接口视图下显式的配置此接口的开销值,OSPF会根据该接口的带宽自动计算其开销值。计算公式为:接口开销=带宽参考值/接口带宽。通过改变带宽参考值可以间接改变接口的开销值。
表3-13 配置OSPF支持的路由最大数目
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ]* |
- |
配置OSPF支持的路由最大数目 |
maximum-routes { external | inter | intra } number |
必选 缺省情况下,路由的最大数目为16384条 |
如果到一个目的地有几条开销相同的路径,可以实现等价路由负载分担,IP报文在这几个链路上轮流发送,以提高链路利用率。该配置用以设置OSPF协议的最大等价路由条数。
表3-14 配置OSPF最大等价路由条数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ]* |
- |
配置最大等价路由条数 |
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-route-advertise summary会发布指定缺省路由的Type-3 LSA |
配置引入外部路由时的参数缺省值(开销、路由数量、标记、类型) |
default { cost cost | limit limit | tag tag | type type } * |
可选 缺省情况下,OSPF引入的外部路由的度量值为1,单位时间内引入外部路由的上限为1000条,引入的外部路由的标记为1,引入的外部路由类型为Type2。 |
& 说明:
l import-route命令不能引入外部路由的缺省路由,如果要引入缺省路由,必须要使用default-route-advertise命令。
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邻居之间的Hello定时器的时间间隔要保持一致。Hello定时器的值与路由收敛速度、网络负荷大小成反比。
在同一接口上的OSPF邻居失效时间应至少为Hello间隔时间的4倍。
当一台路由器向它的邻居发送一条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秒 |
在NBMA接口上配置发送轮询报文的时间间隔 |
ospf timer poll seconds |
可选 缺省情况下,发送轮询报文的时间间隔为120秒 |
配置邻居的失效时间 |
ospf timer dead seconds |
可选 缺省情况下,P2P、Broadcast类型接口的OSPF邻居失效时间为40秒,P2MP、NBMA类型接口的OSPF邻居失效时间为120秒 |
配置接口重传LSA的时间间隔 |
ospf timer retransmit interval |
可选 缺省情况下,时间间隔为5秒 |
& 说明:
l 修改了网络类型后,Hello与Dead定时器都将恢复缺省值。
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 [ minimum-interval [incremental-interval ] ] |
必选 缺省情况下,最大时间间隔为5秒,最小时间间隔为0毫秒,惩罚增量为5000毫秒 |
& 说明:
本命令在网络变化不频繁的情况下将LSA重新生成时间间隔缩小到minimum-interval,而在网络变化频繁的情况下可以进行相应惩罚,增加incremental-interval·2n-2(n为连续触发路由计算的次数),将等待时间按照配置的惩罚增量延长,最大不超过maximum-interval。
如果要使OSPF路由信息不被某一网络中的路由器获得,可以禁止在此接口上发送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中,所有链路的度量值都设置为最大值65535。
表3-23 配置Stub路由器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ]* |
- |
配置Stub路由器 |
stub-router |
必选 缺省情况下,没有路由器被配置为Stub路由器 |
& 说明:
Stub路由器与Stub区域无关。
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计算出同一条外部路由时,在RFC2328中定义的选路规则与RFC1583的有所不同,进行此配置可以兼容RFC1583中定义的方式。
表3-27 配置兼容RFC1583的外部路由选择规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id | router-id router-id ]* |
- |
配置兼容RFC1583的外部路由选择规则 |
rfc1583 compatible |
必选 缺省情况下,使能兼容RFC1583的选路规则 |
表3-28 配置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 | lsdbapproachoverflow | lsdboverflow | maxagelsa | nbrstatechange | originatelsa | txretransmit | vifauthfail | vifcfgerror | virifrxbadpkt | virifstatechange | viriftxretransmit | virnbrstatechange ] * |
可选 缺省情况下,OSPF的TRAP功能是禁止的 |
进入OSPF视图 |
ospf [ process-id | router-id router-id ]* |
- |
使能日志信息 |
enable log [ config | error | state ] |
可选 缺省情况下,关闭日志信息 |
使能OSPF日志记录功能,记录邻居关系连接以及断开事件的日志信息 |
log-peer-change |
可选 缺省情况下,使能OSPF日志记录功能 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后OSPF的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以复位OSPF计数器或连接。
表3-29 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 [ 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 其中SwitchA和SwitchB作为ABR来转发区域之间的路由。
l 配置完成后,每台交换机都应学到AS内的到所有网段的路由。
图3-21 OSPF基本配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF
# 配置SwitchA。
<SwitchA> system-view
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 192.168.0.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 192.168.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.1] quit
[SwitchA-ospf-1] quit
# 配置SwitchB。
<SwitchB> system-view
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 192.168.0.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 192.168.2.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.2] quit
[SwitchB-ospf-1] quit
# 配置SwitchC。
<SwitchC> system-view
[SwitchC] ospf
[SwitchC-ospf-1] area 1
[SwitchC-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.1] network 172.16.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.1] quit
[SwitchC-ospf-1] quit
# 配置SwitchD。
<SwitchD> system-view
[SwitchD] ospf
[SwitchD-ospf-1] area 2
[SwitchD-ospf-1-area-0.0.0.2] network 192.168.2.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.2] network 172.17.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.2] quit
[SwitchD-ospf-1] quit
(3) 检验配置结果
# 查看SwitchA的OSPF邻居。
[SwitchA] display ospf peer
OSPF Process 1 with Router ID 192.168.0.1
Neighbors
Area 0.0.0.0 interface 192.168.0.1(Vlan-interface 100)'s neighbors
Router ID: 192.168.0.2 Address: 192.168.0.2 GR State: Normal
State: Full Mode:Nbr is Master Priority: 1
DR: 192.168.0.2 BDR: 192.168.0.1 MTU: 0
Dead timer due in 36 sec
Neighbor is up for 00:15:04
Authentication Sequence: [ 0 ]
Neighbors
Area 0.0.0.1 interface 192.168.1.1(Vlan-interface 200)'s neighbors
Router ID: 172.16.1.1 Address: 192.168.1.2 GR State: Normal
State: Full Mode:Nbr is Slave Priority: 1
DR: 192.168.0.1 BDR: 172.16.1.1 MTU: 0
Dead timer due in 39 sec
Neighbor is up for 00:07:32
Authentication Sequence: [ 0 ]
# 显示SwitchA的OSPF路由信息。
[SwitchA] display ospf routing
OSPF Process 1 with Router ID 192.168.0.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
172.16.1.0/24 1563 Stub 192.168.1.2 172.16.1.1 0.0.0.1
172.17.1.0/24 3125 Inter-area 192.168.0.2 192.168.2.1 0.0.0.0
192.168.1.0/24 1562 Stub 192.168.1.1 192.168.0.1 0.0.0.1
192.168.2.0/24 3124 Inter-area 192.168.0.2 192.168.2.1 0.0.0.0
192.168.0.0/24 1562 Stub 192.168.0.1 192.168.0.1 0.0.0.0
Total Nets: 5
Intra Area: 3 Inter Area: 2 ASE: 0 NSSA: 0
# 显示SwitchA的LSDB。
[SwitchA] display ospf lsdb
OSPF Process 1 with Router ID 192.168.0.1
Link State Data Base
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 192.168.2.1 192.168.2.1 874 48 80000006 1562
Router 192.168.0.1 192.168.0.1 976 48 80000005 1562
Sum-Net 192.168.1.0 192.168.0.1 630 28 80000001 1562
Sum-Net 172.17.1.0 192.168.2.1 411 28 80000001 1563
Sum-Net 192.168.2.0 192.168.2.1 429 28 80000001 1562
Sum-Net 172.16.1.0 192.168.0.1 565 28 80000001 1563
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 192.168.1.2 192.168.1.2 964 48 80000003 1562
Router 192.168.0.1 192.168.0.1 590 48 80000002 1562
Router 172.16.1.1 172.16.1.1 526 60 80000005 1562
Sum-Net 172.17.1.0 192.168.0.1 410 28 80000001 3125
Sum-Net 192.168.2.0 192.168.0.1 428 28 80000001 3124
Sum-Net 192.168.0.0 192.168.0.1 630 28 80000001 1562
# 查看SwitchD的路由表,并使用Ping进行测试连通性。
[SwitchD] display ospf routing
OSPF Process 1 with Router ID 192.168.2.2
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
172.16.1.0/24 4687 Inter-area 192.168.2.1 192.168.2.1 0.0.0.2
172.17.1.0/24 1 Stub 172.17.1.1 192.168.2.2 0.0.0.2
192.168.1.0/24 4686 Inter-area 192.168.2.1 192.168.2.1 0.0.0.2
192.168.2.0/24 1562 Stub 192.168.2.2 192.168.2.2 0.0.0.2
192.168.0.0/24 3124 Inter-area 192.168.2.1 192.168.2.1 0.0.0.2
Total Nets: 5
Intra Area: 2 Inter Area: 3 ASE: 0 NSSA: 0
[SwitchD] ping 172.16.1.1
PING 172.16.1.1: 56 data bytes, press CTRL_C to break
Reply from 172.16.1.1: bytes=56 Sequence=1 ttl=253 time=62 ms
Reply from 172.16.1.1: bytes=56 Sequence=2 ttl=253 time=16 ms
Reply from 172.16.1.1: bytes=56 Sequence=3 ttl=253 time=62 ms
Reply from 172.16.1.1: bytes=56 Sequence=4 ttl=253 time=94 ms
Reply from 172.16.1.1: bytes=56 Sequence=5 ttl=253 time=63 ms
--- 172.16.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 16/59/94 ms
l 所有的交换机都运行OSPF,整个自治系统划分为3个区域。
l 其中SwitchA和SwitchB作为ABR来转发区域之间的路由,SwitchD作为ASBR引入了外部路由(静态路由)。
l 要求将Area1配置为Stub区域,减少通告到此区域内的LSA数量,但不影响路由的可达性。
图3-22 配置OSPF Stub区域组网图
(1) 配置接口的IP地址(略)
(2) 配置OSPF(同前例)
(3) 配置SwitchD引入静态路由
[SwitchD] ip route-static 200.0.0.0 8 null 0
[SwitchD] ospf
[SwitchD-ospf-1] import-route static
[SwitchD-ospf-1] quit
# 查看SwitchC的ABR/ASBR信息。
[SwitchC] display ospf abr-asbr
OSPF Process 1 with Router ID 172.16.1.1
Routing Table to ABR and ASBR
Type Destination Area Cost Nexthop RtType
Intra-area 192.168.0.1 0.0.0.1 1562 192.168.1.1 ABR
Inter-area 172.17.1.1 0.0.0.1 4686 192.168.1.1 ASBR
# 查看SwitchC的OSPF路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 172.16.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
172.16.1.0/24 1 Stub 172.16.1.1 172.16.1.1 0.0.0.1
172.17.1.0/24 4687 Inter-area 192.168.1.1 192.168.0.1 0.0.0.1
192.168.1.0/24 1562 Stub 192.168.1.2 172.16.1.1 0.0.0.1
192.168.2.0/24 4686 Inter-area 192.168.1.1 192.168.0.1 0.0.0.1
192.168.0.0/24 3124 Inter-area 192.168.1.1 192.168.0.1 0.0.0.1
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
200.0.0.0/8 10 Type2 1 192.168.1.1 172.17.1.1
Routing for NSSAs
Destination Cost Type Tag NextHop AdvRouter
Total Nets: 6
Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0
& 说明:
当SwitchC所在区域为普通区域时,可以看到路由表中存在AS外部的路由。
(4) 配置Area1为Stub区域
# 配置SwitchA。
[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
# 配置SwitchC。
[SwitchC] ospf
[SwitchC-ospf-1] stub-router
[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
# 显示SwitchC的路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 172.16.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
0.0.0.0/0 65536 Inter-area 192.168.1.1 192.168.0.1 0.0.0.1
172.16.1.0/24 1 Stub 172.16.1.1 172.16.1.1 0.0.0.1
172.17.1.0/24 68660 Inter-area 192.168.1.1 192.168.0.1 0.0.0.1
192.168.1.0/24 1562 Stub 192.168.1.2 172.16.1.1 0.0.0.1
192.168.2.0/24 68659 Inter-area 192.168.1.1 192.168.0.1 0.0.0.1
192.168.0.0/24 67097 Inter-area 192.168.1.1 192.168.0.1 0.0.0.1
Total Nets: 6
Intra Area: 2 Inter Area: 4 ASE: 0 NSSA: 0
& 说明:
当把SwitchC所在区域配置为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
# 查看SwitchC的OSPF路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 172.16.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
0.0.0.0/0 1563 Inter-area 192.168.1.1 192.168.0.1 0.0.0.1
172.16.1.0/24 1 Stub 172.16.1.1 172.16.1.1 0.0.0.1
192.168.1.0/24 1562 Stub 192.168.1.2 172.16.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 其中SwitchA和SwitchB作为ABR来转发区域之间的路由,SwitchD作为ASBR引入了外部路由(静态路由)。
l 要求将Area1配置为NSSA区域,同时将SwitchC配置为ASBR引入外部路由(静态路由),且路由信息可正确的在AS内传播。
图3-23 配置OSPF NSSA区域组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF(同前例)
(3) 配置SwitchD引入静态路由(同前例)
(4) 配置Area1区域为NSSA区域
# 配置SwitchA。
[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
# 配置SwitchC。
[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(这里的SwitchA)上配置default-route-advertise no-summary参数,这样可以减少NSSA路由器的路由表数量。其他NSSA路由器只需配置nssa命令就可以。
# 查看SwitchC的OSPF路由表。
[SwitchC] display ospf routing
OSPF Process 1 with Router ID 172.16.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
0.0.0.0/0 1563 Inter-area 192.168.1.1 192.168.0.1 0.0.0.1
172.16.1.0/24 1 Stub 172.16.1.1 172.16.1.1 0.0.0.1
192.168.1.0/24 1562 Stub 192.168.1.2 172.16.1.1 0.0.0.1
Total Nets: 3
Intra Area: 2 Inter Area: 1 ASE: 0 NSSA: 0
(5) 配置SwitchC引入静态路由
[SwitchC] ip route-static 100.0.0.0 8 null 0
[SwitchC] ospf
[SwitchC-ospf-1] import-route static
[SwitchC-ospf-1] quit
# 查看SwitchD的OSPF路由表。
[SwitchD] display ospf routing
OSPF Process 1 with Router ID 172.17.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
172.16.1.0/24 4687 Inter-area 192.168.2.1 192.168.0.2 0.0.0.2
172.17.1.0/24 1 Stub 172.17.1.1 172.17.1.1 0.0.0.2
192.168.1.0/24 4686 Inter-area 192.168.2.1 192.168.0.2 0.0.0.2
192.168.2.0/24 1562 Stub 192.168.2.2 172.17.1.1 0.0.0.2
192.168.0.0/24 3124 Inter-area 192.168.2.1 192.168.0.2 0.0.0.2
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
100.0.0.0/8 10 Type2 1 192.168.2.1 192.168.0.1
Routing for NSSAs
Destination Cost Type Tag NextHop AdvRouter
Total Nets: 6
Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0
& 说明:
在SwitchD上可以看到NSSA区域引入的一条AS外部的路由。
l 以太网交换机SwitchA、SwitchB、SwitchC、SwitchD在同一网段,运行OSPF协议;
l 配置SwitchA为DR,SwitchC为BDR。
图3-24 配置OSPF优先级的DR选择组网图
(1) 配置各接口的IP地址;
(2) 配置OSPF基本功能
(3) 改变交换机接口的DR优先级使SwitchA成为DR,SwitchC成为BDR。
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本功能
# 配置SwitchA
<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
# 配置SwitchB
<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
# 配置SwitchC
<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
# 配置SwitchD
<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
# 查看SwitchA的邻居信息。
[SwitchA] display ospf peer
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 ]
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 ]
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 ]
可以看到SwitchD为DR,SwitchC为BDR。
(3) 配置接口上的DR优先级
# 配置SwitchA。
[SwitchA] interface vlan-interface 1
[RouterA-Vlan-interface1] ospf dr-priority 100
[RouterA-Vlan-interface1] quit
# 配置SwitchB。
[SwitchB] interface vlan-interface 1
[SwitchB-Vlan-interface1] ospf dr-priority 0
[SwitchB-Vlan-interface1] quit
# 配置SwitchC。
[SwitchC] interface vlan-interface 1
[SwitchC-Vlan-interface1] ospf dr-priority 2
[SwitchC-Vlan-interface] quit
# 查看SwtichD的邻居信息。
[SwitchD] display ospf peer
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 ]
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 ]
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 ]
可以看到,网络中DR/BDR并没有改变。
& 说明:
网络中DR/BDR已经存在的情况下,接口上的DR优先级的配置并不会立即生效。
(4) 重启OSPF进程(略)
# 查看SwitchD的邻居信息。
[SwitchD] display ospf peer
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 ]
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 ]
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 ]
可以看到SwitchA成为DR,SwitchC为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 B和Switch C之间配置一条虚连接。
l 配置完成后,SwitchA能够学到Area2中的路由。
图3-25 配置OSPF虚链路组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF基本功能
# 配置SwitchA。
<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
# 配置SwitchB。
<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
# 查看SwitchA的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直接相连,所以SwitchA的路由表中没有Area2中的路由。
(3) 配置虚连接
# 配置SwitchA。
[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
# 配置SwitchB。
[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
# 查看SwitchA的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
可以看到,SwitchA已经学到了Area2的路由172.16.1.1/16。
OSPF邻居无法建立
如果物理连接和下层协议正常,则检查接口上配置的OSPF参数,必须保证与相邻路由器的参数一致,区域号相同,网段与掩码也必须一致(点到点与虚连接的网段与掩码可以不同)。
相邻的两台路由器接口的网络类型必须一致。若网络类型为广播网或NBMA,则至少有一个接口的DR优先级应大于零。
(1) 使用display ospf peer命令查看OSPF邻居状态。
(2) 使用display ospf interface命令查看OSPF接口的信息。
(3) 检查物理连接及下层协议是否正常运行,可通过Ping命令测试。若从本地路由器Ping对端路由器不通,则表明物理连接和下层协议有问题。
(4) 检查OSPF定时器,在同一接口上失效时间应至少为Hello间隔时间的4倍。
(5) 如果是NBMA网络,则应该使用peer ip-address命令手工指定邻居。
(6) 如果网络类型为广播网或NBMA,则至少有一个接口的DR优先级大于零。
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命令查看区域是否配置正确。若配置了两个以上的区域,则至少有一个区域是骨干区域。
(5) 如果某区域是Stub区域,则该区域中的所有路由器都要配置stub命令;如果某区域是NSSA区域,则该区域中的所有路由器都要配置nssa命令。
(6) 如果配置了虚连接,使用display ospf vlink命令查看邻居状态是否正常。
& 说明:
本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。
IS-IS(Intermediate System-to-Intermediate System intra-domain routing information exchange protocol,IS-IS路由协议)最初是国际标准化组织ISO(the International Organization for Standardization)为它的无连接网络协议CLNP(ConnectionLess Network Protocol)设计的一种动态路由协议。
为了提供对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 LSP(Link State Protocol Data Unit或Link State Packet):链路状态协议数据单元或链路状态报文。在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个字节。
图4-1 IS-IS协议的地址结构示意图
(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路由器必须是连续的,以保证骨干网的连续性。只有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-2 IS-IS拓扑结构图之一
如图4-3所示是IS-IS的另外一种拓扑结构图。其中Level-1-2路由器不仅仅用来连接Level-1和Level-2路由器,而且还与其他Level-2路由器一起构成了IS-IS的骨干网。在这个拓扑中,并没有规定哪个区域是骨干区域。所有Level-2路由器和Level-1-2路由器构成了IS-IS的骨干网,他们可以属于不同的区域,但必须是连续的。
图4-3 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所示。
图4-4 IS-IS广播网的DIS和邻接关系
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所示。
图4-5 PDU格式
所有的PDU都有相同的通用报头格式,如图4-6所示。
图4-6 PDU通用报头格式
主要字段的解释如下:
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:支持的最大区域个数。
表4-1 PDU类型对应关系表
类型值 |
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(Link State PDUs,链路状态报文)用于交换链路状态信息。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所示,假设正常情况下RouterA到RouterC的报文都是经过RouterB转发,但如果RouterB的OL位置1,则RouterA会认为RouterB的路由不完整,从而将报文通过RouterD、RouterE转发给RouterC,但到RouterB直连地址的报文不受影响。
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中的变长字段部分是多个TLV(Type-Length-Value)三元组。其格式如图4-13所示:
不同PDU类型所包含的TLV是不同的。如表4-2所示。
表4-2 PDU类型和包含的TLV名称
TLV 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的TLV在ISO 10589中定义(有2类未在上表中列出),其他几种TLV在RFC 1195中定义。
为了方便管理,提高控制效率,IS-IS支持多进程特性。多进程允许为一个指定的IS-IS进程关联一组接口,从而保证该进程进行的所有协议操作都仅限于这一组接口。这样,就可以实现一台路由器有多个IS-IS协议进程,每个进程负责唯一的一组接口。
管理标记简化了对路由信息的管理,该标记用来携带关于IP地址前缀的管理信息,利用它可以控制对各种外部路由协议的引入,以及承载BGP的团体属性。
当IS-IS要发布的PDU中的信息量变大时,以同一系统的多个LSP分片的形式发布。LSP分片由LSP的LSP标识符字段进行标识,这个字段的长度是1字节,因此,IS-IS路由器可产生的分片数最大为256。
IS-IS LSP分片扩展特性可使IS-IS路由器生成更多的LSP分片。该特性可通过使能网络管理器,为路由器配置附加的系统ID实现。每个系统ID都代表一个虚拟系统,每个虚拟系统都可生成256个LSP分片。通过增加附加的系统ID,IS-IS路由器可以生成更多的LSP分片。
(1) 相关术语
l 初始系统(Originating System)
初始系统是实际运行IS-IS协议的路由器。允许一个单独的IS-IS进程像多个虚拟路由器一样发布LSP,而“Originating System”指的是那个“真正”的IS-IS进程。
l 系统ID(System ID)
初始系统的系统ID。
l 附加系统ID(Additional System ID)
附加系统ID由网络管理器分配。每个附加系统ID都允许生成256个额外的或扩展的LSP分片。附加系统ID和普通系统ID一样,在整个路由域中必须唯一。
l 虚拟系统(Virtual System)
由附加系统ID标识的系统,用来生成扩展LSP分片。这些分片在其LSP ID中携带附加系统ID。
(2) 操作模式
根据网络中路由器的类型,IS-IS路由器可以在两种模式下运行LSP分片扩展特性:
l mode-1:用于网络中的部分路由器不支持LSP分片扩展特性的情况。在该模式下,初始系统向LSP中的每个虚拟系统发布一条链路,然后每个虚拟系统也向初始系统发布一条链路。这些虚拟系统就好象网络中与初始系统相连的路由器。这种模式有一个局限就是虚拟系统的LSP报文只能发布叶子信息。
l mode-2:用于网络中所有路由器都支持LSP分片扩展特性的情况。在该模式下,网络中所有路由器都知道虚拟系统生成的LSP实际属于哪个初始系统,而且对虚拟系统发布的LSP报文的链路状态信息没有限制。
动态主机名交换机制是为了方便对IS-IS网络的维护和管理而引入的,它为IS-IS路由器提供了一种从主机名到System ID映射的服务。这个动态的主机名信息在LSP中以一个动态主机名TLV的形式发布。
这个机制同时还提供将主机名与广播网中的DIS相关联的服务,并将此信息通过伪节点的LSP以动态主机名TLV的形式发布出去。
在维护和管理中,使用主机名比使用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 3784:IS-IS extensions for Traffic Engineering
l RFC 3847:Restart signaling for IS-IS
表4-3 IS-IS配置任务简介
配置任务 |
说明 |
详细配置 |
|
必选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
|||
可选 |
在配置IS-IS之前,需完成以下任务:
l 配置链路层协议
l 配置接口的网络层地址,使相邻节点网络层可达
表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 ] [ silent ] |
必选 缺省情况下,接口上没有使能IS-IS路由进程 |
配置接口的网络类型为P2P |
isis circuit-type p2p |
可选 缺省情况下,交换机VLAN接口网络类型为Broadcast |
配置level-1-2路由器的链路相邻关系 |
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 自动计算开销:根据接口带宽自动计算链路开销
表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 |
必选 缺省情况下,自动计算接口开销功能处于关闭状态 |
& 说明:
接口开销值的选择次序为:接口配置的开销值(isis cost)、全局开销值(circuit-cost)、自动计算接口开销值(auto-cost)、缺省值。缺省情况下,接口的开销值为系统设置的缺省值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 ] ] * |
可选 缺省情况下,此功能关闭 |
& 说明:
该配置产生的缺省路由只被发布给同级别的路由器。通过使用路由策略,可以强制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 value | cost-type { external | internal } | [ level-1 | level-1-2 | level-2 ] | route-policy route-policy-name | tag tag-value ] * |
必选 缺省情况下,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 ] |
- |
配置将Level-2区域的路由信息引入到Level-1区域 |
import-route isis level-2 into level-1 [ filter-policy { acl-number | ip-prefix ip-prefix-name | route-policy route-policy-name } | tag tag-value ] * |
必选 缺省情况下,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选举设置不同的优先级。优先级数值越高,被选中的可能性就越大。
操作 |
命令 |
说明 |
进入系统视图 |
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报文发送间隔时间。在点到点链路上,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报文广播间隔。
l 在点到点的链路中,如果路由器在一段时间内没有收到本端发送的LSP的应答报文,则认为原先发送的LSP丢失或被丢弃,为保证发送的可靠性,本端路由器会将原先的LSP重新发送一次。在广播链路上发送的LSP报文不需要应答。
l DIS发送Hello报文的时间间隔是isis timer hello设置的时间的1/3。
为了保证整个区域中的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-17 配置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 max-interval [ min-interval [ inc-interval ] ] [ level-1 | level-2 ] |
可选 缺省情况下,LSP生成的最大时间间隔为2秒 |
使能LSP快速扩散功能 |
flash-flood [ flood-count flooding-count | max-timer-interval flooding-interval | [ level-1 | level-2 ] ] * |
可选 缺省情况下,禁止LSP快速扩散功能 |
设置忽略LSP的校验和校验错误 |
ignore-lsp-checksum-error |
可选 缺省情况下,当LSP校验和检验错误时丢弃该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 |
& 说明:
为了使路由器生成扩展LSP分片,应至少配置一个虚拟System ID。
IS-IS协议中,当LSDB发生变化时需要进行路由计算。频繁的路由计算会占用大量的系统资源,导致系统性能下降,而周期性地计算SPF可以在一定程度上提高效率,计算SPF的时间间隔可以由用户根据需要进行配置。
当路由表中的路由数目很多时,IS-IS的SPF计算可能会长时间占用CPU资源,为防止这种情况的发生,可以设置每次SPF计算的持续时间,对SPF计算进行分段。对SPF计算进行分段后,一次运行未处理完的路由,等待10秒后继续计算。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
设置IS-IS路由计算时间间隔 |
timer spf max-interval [ min-interval [ inc-interval ] ] |
可选 缺省情况下,缺省值按顺序为10秒,0毫秒,0毫秒 |
设置每次SPF计算的持续时间 |
spf-slice-size duration-time |
可选 缺省情况下,SPF计算不分段,缺省值为0 |
表4-19 配置IS-IS动态主机名映射
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
为本地IS配置主机名称 |
is-name sys-name |
必选 缺省情况下,没有为本地IS配置主机名称 |
在本地为远端的IS-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-20 配置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-21 配置LSDB过载标志位
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
设置过载标志位 |
set-overload [ on-startup start-from-nbr system-id [ timeout [ nbr-timeout ] ] ] [ allow { interlevel | external } * ] set-overload [ on-startup [ wait-for-bgp ] [ timeout ] ] [ allow { interlevel | external } * ] |
必选 缺省情况下,不设置过载标志位 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
打开IS-IS邻接状态变化的输出开关 |
log-peer-change |
必选 缺省情况下,输出开关打开 |
& 说明:
当打开邻接状态输出开关后,IS-IS邻接状态的变化会输出到配置终端上,直至邻接状态输出开关被关闭。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置接口发送不加入填充字段的小型Hello报文 |
isis small-hello |
必选 缺省情况下,接口发送标准Hello报文 |
表4-24 配置使能IS-IS的TRAP功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IS-IS视图 |
isis [ process-id ] |
- |
使能IS-IS的TRAP功能 |
is-snmp-traps enable |
必选 缺省情况下,使能IS-IS的TRAP功能 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后IS-IS的运行情况,用户可以通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除IS-IS的数据库信息,或者复位特定邻居的数据信息。
表4-25 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的IPv4路由信息 |
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的数据结构信息 |
reset isis all [ process-id ] |
清除IS-IS特定邻居的数据信息 |
reset isis peer system-id [ process-id ] |
如图4-14所示,交换机SwitchA、SwitchB、SwitchC和SwitchD属于同一自治系统,要求他们之间通过IS-IS协议达到IP网络互连的目的。
其中,SwitchA和SwitchB为Level-1交换机,SwitchD为Level-2交换机,SwitchC作为Level-1-2交换机将两个区域相连。SwitchA、SwitchB和SwitchC的区域号为10,SwitchD的区域号为20。
图4-14 IS-IS基本配置组网图
(1) 配置各接口的IPv4地址(略)
(2) 配置IS-IS
# 配置SwitchA。
<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
# 配置SwitchB。
<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
# 配置SwitchC。
<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
# 配置SwitchD。
<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 R/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: 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 R/L/-
10.1.1.0/24 10 NULL Vlan100 Direct R/L/-
10.1.2.0/24 10 NULL Vlan200 Direct R/L/-
Flags: 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 R/L/-
10.1.1.0/24 10 NULL Vlan100 Direct R/L/-
10.1.2.0/24 10 NULL Vlan200 Direct R/L/-
172.16.0.0/16 20 NULL Vlan300 192.168.0.2 R/-/-
Flags: 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 R/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 R/L/-
Flags: R-Added to RM, L-Advertised in LSPs, U-Up/Down Bit Set
如图4-15所示,SwitchA、SwitchB、SwitchC和SwitchD都运行IS-IS路由协议以实现互连,它们属于同一区域10,网络类型为广播网(以太网)。其中SwitchA和SwitchB是Level-1-2路由器,SwitchC为Level-1路由器,SwitchD为Level-2路由器。
要求通过改变接口的DIS优先级,将SwitchA配置为Level-1-2的DIS路由器。
图4-15 配置IS-IS的DIS选择组网图
(1) 配置各接口的IPv4地址(略)
(2) 配置IS-IS
# 配置SwitchA。
<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
# 配置SwitchB。
<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
# 配置SwitchC。
<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
# 配置SwitchD。
<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
# 查看SwitchA的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
# 显示SwitchA的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
# 显示SwitchC的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
# 显示SwitchD的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优先级的情况下,SwitchC为Level-1的DIS,SwitchD为Level-2的DIS。Level-1和Level-2的伪节点分别是0000.0000.0003.01和0000.0000.0004.01。
(3) 配置SwitchA的DIS优先级
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] isis dis-priority 100
[SwitchA-Vlan-interface100] quit
# 查看SwitchA的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
# 查看SwitchA的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优先级后,SwitchA立即成为Level-1-2的DIS,且伪节点是0000.0000.0001.01。
# 显示SwitchC的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
# 显示SwitchD的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
& 说明:
l 本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。
l 本章若不做特殊说明,所指的BGP均为BGP-4。
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特性描述如下:
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所示。
图5-1 BGP消息的报文头格式
主要字段的解释如下:
l Marker:16字节,用于BGP验证的计算,不使用验证时所有比特均为“1”。
l Length:2字节,BGP消息总长度(包括报文头在内),以字节为单位。
l Type:1字节,BGP消息的类型。其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh消息。其中,前四种消息是在RFC 1771中定义,而Type5的消息则是在RFC 2918中定义的。
Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。其消息格式如图5-2所示。
图5-2 BGP Open消息格式
主要字段的解释如下:
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所示。
图5-3 BGP Update消息格式
一条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所示。
表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会优先选择路径较短的路由。比如在上图中,AS50中的BGP路由器会选择经过AS40的路径作为到目的地址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所示,从AS10到AS20的流量将选择RouterB作为入口。
图5-8 MED属性
通常情况下,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所示,从AS20到AS10的流量将选择RouterC作为出口。
(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负载分担并不需要命令配置,这一特性在H3C S3610&S5510以太网交换机上始终启用。
在实现方法上,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中,RouterD和RouterE是RouterC的IBGP对等体。当RouterA和RouterB同时向RouterC通告到达同一目的地的路由时,如果用户在RouterC配置了负载分担(如balance 2),则当满足一定的选路规则后,并且两条路由具有相同的AS_PATH属性长度、ORIGIN属性、LOCAL_PREF和MED值时,RouterC就把接收的两条路由同时加入到转发表中,实现BGP路由的负载分担。RouterC只向RouterD和RouterE转发一次该路由,AS_PATH不变,但NEXT_HOP属性改变为RouterC的地址,而不是原来的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所示,RouterE通过BGP从RouterD可以学到RouterA的一条路由8.0.0.0/8,于是将到这个目的地址的报文转发给RouterD,RouterD查询路由表,发现下一跳是RouterB(通过peer next-hop-local命令手动设置)。由于RouterD从IGP学到了到RouterB的路由,所以通过路由迭代,RouterD将报文转发给RouterC。但RouterC并不知道去8.0.0.0/8的路由,于是将报文丢弃。
图5-11 IBGP和IGP同步
如果设置了同步特性,在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就是标识联盟这一整体的自治系统号,如上图中的AS200就是联盟ID。
联盟的缺陷是:从非联盟方案向联盟方案转变时,要求路由器重新进行配置,逻辑拓扑也要改变。
在大型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路由”中的BGP4+配置部分。
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
其他仍处在草案(Draft)阶段的特性还有Graceful Restart特性和扩展团体属性。
配置任务 |
说明 |
详细配置 |
|
配置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基本功能之前,需完成以下任务:
l 相邻节点的网络层互通
在配置BGP的基本功能之前,需要准备以下数据:
l 本地AS号和Router ID
l 对等体的IPv4地址和AS号
l 更新报文的源接口
表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 |
|
指定路由更新报文的源接口 |
peer { group-name | ip-address } connect-interface interface-type interface-number |
可选 缺省情况下,BGP使用最佳路由更新报文的源接口 |
|
配置允许同非直接相连网络上的邻居建立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 为了使接口在出现问题时,仍能发送路由更新报文,可将发送路由更新报文的源接口配置成Loopback接口。
l 通常情况下,EBGP对等体之间必须具有直连的物理链路,如果不满足这一要求,则必须使用peer ebgp-max-hop命令允许它们之间经过多跳建立TCP连接。但是,对于直连EBGP使用LoopBack接口建立邻居关系,不需要peer ebgp-max-hop命令的配置。
在控制BGP路由信息的发布与接收之前,需完成以下任务:
l 配置BGP基本功能
在控制BGP路由信息的发布与接收之前,需要准备以下数据:
l 聚合方式和聚合后的路由
l 访问控制列表编号
l 过滤方向(发布/接收)和所使用的路由策略名称
l 衰减的各项参数:半衰期、阈值
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视图 |
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 [ isis process-id | ospf process-id | rip process-id | direct | 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路径过滤列表的路由过滤策略 |
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路径过滤列表的路由过滤策略 |
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的路由属性之前,需完成以下任务:
l 配置BGP基本功能
在配置BGP路由属性之前,需要准备以下数据:
l BGP协议优先级的值
l LOCAL_PREF值
l MED值
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 |
可选 缺省情况下,没有为对等体/对等体组配置虚拟的本地自治系统号 |
||
配置用本地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会检查对等体发来的路由的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连接中断。
在H3C S3610&S5510以太网交换机的实现中,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网络之前,需完成以下任务:
l 配置BGP基本功能
在调整和优化BGP网络之前,需要准备以下数据:
l BGP定时器的值
l 发送更新报文的时间间隔
l MD5验证密码
操作 |
命令 |
说明 |
|
进入系统视图 |
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 route-refresh |
可选 缺省情况下,使能BGP路由刷新功能 |
禁止BGP路由刷新功能和多协议功能 |
peer { group-name | ip-address } capability-advertise conventional |
可选 缺省情况下,使能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会话功能 |
|
配置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网络之前,需完成以下任务:
l 相邻节点的网络层互通
在配置大型BGP网络之前,需要准备以下数据:
l 对等体组的类型、名称、所包括的对等体
l 如果使用团体,需要所应用的路由策略名称
l 如果使用路由反射器,需要确定各路由器的角色(客户机、非客户机)
l 如果使用联盟,需要确定联盟ID和子AS号
表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号。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置将团体属性传给对等体/对等体组 |
peer { group-name | ip-address } advertise-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,以避免路由环路。
操作 |
命令 |
说明 |
|
进入系统视图 |
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标准,可以配置相关命令,以便和非标准的设备兼容。
在完成上述配置后,在任意视图下执行display命令可以显示配置后BGP的运行情况,通过查看显示信息验证配置的效果。
表5-17 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路径过滤列表的路由 |
display bgp routing-table as-path-acl as-path-acl-number |
显示CIDR的路由信息 |
display bgp routing-table cidr |
显示指定BGP团体的路由信息 |
display bgp routing-table community [ aa:nn&<1-13> ] [ no-advertise | no-export | no-export-subconfed ]* [ whole-match ] |
显示匹配指定BGP团体列表的路由 |
display bgp routing-table community-list { basic-community-list-number [ whole-match ] | adv-community-list-number }&<1-16> |
显示BGP衰减的路由信息 |
|
显示BGP衰减的配置参数 |
display bgp routing-table dampening parameter |
显示源AS不一致的路由 |
display bgp routing-table different-origin-as |
显示路由振荡统计信息 |
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-tabel statistic |
当BGP路由策略或协议发生变化后,如果需要通过复位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相关统计信息。
操作 |
命令 |
清除路由的衰减信息并释放被抑制的路由 |
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协议,SwitchA和SwitchB之间建立EBGP连接,SwitchB、SwitchC和SwitchD之间建立IBGP全连接。
图5-16 BGP基本配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置IBGP连接
# 配置SwitchB。
<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
# 配置SwitchC。
<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
# 配置SwitchD。
<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连接
# 配置SwitchA。
<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
# 配置SwitchB。
[SwitchB] bgp 65009
[SwitchB-bgp] peer 200.1.1.2 as-number 65008
[SwitchB-bgp] quit
# 查看SwitchB的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.3.2 4 65009 7 9 0 0 00:05:13 Established
9.1.1.2 4 65009 6 6 0 0 00:03:00 Established
200.1.1.2 4 65008 3 2 0 1 00:00:39 Established
可以看出,SwitchB到其他交换机的BGP连接均已建立。
# 查看SwitchA路由表信息。
<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
# 查看SwitchB的路由表。
<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
# 查看SwitchC的路由表。
<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
& 说明:
从路由表可以看出,SwitchA没有学到AS65009内部的任何路由,SwitchC虽然学到了AS65008中的8.0.0.0的路由,但因为下一跳200.1.1.2不可达,所以也不是有效路由。
(4) 配置BGP引入直连路由
# 配置SwitchB。
[SwitchB] bgp 65009
[SwitchB-bgp] import-route direct
# 显示SwitchA的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?
# 显示SwitchC的路由表。
<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的路由变为有效路由,下一跳为SwitchA的地址。
# 使用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=4 ms
Reply from 8.1.1.1: bytes=56 Sequence=2 ttl=254 time=3 ms
Reply from 8.1.1.1: bytes=56 Sequence=3 ttl=254 time=7 ms
Reply from 8.1.1.1: bytes=56 Sequence=4 ttl=254 time=3 ms
Reply from 8.1.1.1: bytes=56 Sequence=5 ttl=254 time=3 ms
--- 8.1.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 3/4/7 ms
l 在AS65009内使用OSPF作为IGP协议;
l SwitchA和SwitchB建立EBGP连接,SwitchC为AS内部的一台非BGP交换机。
图5-17 BGP与IGP交互配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置OSPF(略)
(3) 配置EBGP连接
# 配置SwitchA。
<SwitchA> system-view
[SwitchA] bgp 65008
[SwitchA-bgp] router-id 1.1.1.1
[SwitchA-bgp] peer 3.1.1.1 as-number 65009
[SwitchA-bgp] network 8.1.1.0 255.255.255.0
[SwitchA-bgp] quit
# 配置SwitchB。
<SwitchB> system-view
[SwitchB] bgp 65009
[SwitchB-bgp] peer 3.1.1.2 as-number 65008
[SwitchB-bgp] quit
(4) 配置BGP与IGP交互
# 在SwitchB上配置BGP引入OSPF路由。
[SwitchB] bgp 65009
[SwitchB-bgp] import-route ospf 1
[SwitchB-bgp] quit
# 查看SwitchA的路由表。
<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?
# 在SwitchB上配置OSPF引入BGP路由。
[SwitchB] ospf
[SwitchB-ospf-1] import-route bgp
[SwitchB-ospf-1] quit
# 显示SwitchC的路由表。
<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) 配置路由自动聚合
# 配置SwitchB。
[SwitchB] bgp 65009
[SwitchB-bgp] summary automatic
# 显示SwitchA的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=4 ms
Reply from 9.1.2.1: bytes=56 Sequence=2 ttl=254 time=3 ms
Reply from 9.1.2.1: bytes=56 Sequence=3 ttl=254 time=3 ms
Reply from 9.1.2.1: bytes=56 Sequence=4 ttl=254 time=3 ms
Reply from 9.1.2.1: bytes=56 Sequence=5 ttl=254 time=3 ms
--- 9.1.2.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 3/3/4 ms
l 所有交换机都配置BGP,SwitchA在AS65008中,SwitchB和SwitchC在AS65009中。
l SwitchA与SwitchB、SwitchC之间运行EBGP,SwitchB和SwitchC之间运行IBGP。
图5-18 配置BGP路径选择的组网图
(1) 配置各接口的IP地址(略)
(2) 配置BGP连接
# 配置SwitchA。
<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
# 配置SwitchB。
<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
# 配置SwitchC。
<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
# 查看SwitchA的路由表。
<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 65009i
从路由表中可以看出,到目的地址9.1.1.0/24有两条有效路由,其中下一跳为200.1.1.1的路由是最优路由(因为SwitchB的路由器ID要小一些)。
(3) 配置负载分担
# 配置SwitchA。
[SwitchA] bgp 65008
[SwitchA-bgp] balance 2
[SwitchA-bgp] quit
# 查看SwitchA的路由表。
<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 65009i
从路由表中可以看到,BGP路由9.1.1.0/24存在两个下一跳,分别是200.1.1.1和200.1.2.1,且都是最优路由。
(4) 配置MED属性
# 配置SwitchB的缺省MED值。
[SwitchB] bgp 65009
[SwitchB-bgp] default med 100
# 查看SwitchA的路由表。
<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(SwitchB)的路由MED值为100,而下一跳为200.1.2.1的MED值为0,所以BGP优先选择MED值较小的路由。
l SwitchB分别与SwitchA、SwitchC之间建立EBGP连接。
l 通过在SwitchA上配置NO_EXPORT团体属性,使得AS10发布到AS20中的路由,不再被AS20向其他AS发布。
图5-19 BGP团体组网图
(1) 配置各接口的IP地址(略)
(2) 配置EBGP
# 配置SwitchA。
<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
# 配置SwitchB。
<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
# 配置SwitchC。
<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
# 查看SwitchB的路由表。
<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
可以看出,SwitchB把收到的路由发布给了位于AS30内的SwitchC。
# 查看SwitchC的路由表。
<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
从路由表可以确认,SwitchC从SwitchB那里学到了目的地址为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
# 查看SwitchB的路由表。
<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
在SwitchB的BGP路由表中可以看到配置的团体属性。此时在SwitchC的BGP路由表中已经没有到目的地址9.1.1.0/24的路由。
l 所有交换机运行BGP协议,SwitchA与SwitchB建立EBGP连接,SwitchC与SwitchB和SwitchD之间建立IBGP连接。
l SwitchC作为路由反射器,SwitchB和SwitchD为SwitchC的客户机。
l SwitchD能够通过SwitchC学到路由1.0.0.0/8。
图5-20 配置BGP路由反射器的组网图
(1) 配置各接口的IP地址(略)
(2) 配置BGP连接
# 配置SwitchA。
<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
# 配置SwitchB。
<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
# 配置SwitchC。
<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
# 配置SwitchD。
<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) 配置路由反射器
# 配置SwitchC。
[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) 验证配置效果
# 查看SwitchB的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 100i
# 查看SwitchD的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 100 0 100i
可以看出,SwitchD从SwitchC已经学到了1.0.0.0/8路由。
AS200中有多台BGP交换机,为了减少IBGP的连接数,现将他们划分为3个子自治系统:AS65001、AS65002和AS65003。其中AS65001内的三台交换机建立IBGP全连接。
(1) 配置各接口的IP地址(略)
(2) 配置BGP联盟
# 配置SwitchA。
<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
# 配置SwitchB。
<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
# 配置SwitchC。
<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) 配置AS65001内的IBGP连接
# 配置SwitchA。
[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
# 配置SwitchD。
<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
# 配置SwitchE。
<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) 配置AS100和AS200之间的EBGP连接
# 配置SwitchA。
[SwitchA] bgp 65001
[SwitchA-bgp] peer 200.1.1.2 as-number 100
[SwitchA-bgp] quit
# 配置SwitchF。
<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) 验证配置结果
# 查看SwitchB的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 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 : localpref 100, pref-val 0, pre 255
State : valid, external-confed, best,
Not advertised to any peers yet
# 查看SwitchD的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 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 : localpref 100, pref-val 0, pre 255
State : valid, internal, best,
Not advertised to any peers yet
l 所有交换机都运行BGP协议。SwitchA与SwitchB和SwitchC之间运行EBGP;SwitchD与SwitchB和SwitchC之间运行IBGP。
l AS200中运行OSPF协议。
l 配置不同的路由策略,使得SwitchD优选SwitchC学到的1.0.0.0/8路由。
图5-22 配置BGP路径选择的组网图
(1) 配置各接口的IP地址(略)
(2) 配置SwitchB、SwitchC和SwitchD之间运行OSPF协议
# 配置SwitchB。
<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
# 配置SwitchC。
<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
# 配置SwitchD。
<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连接
# 配置SwitchA。
<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网段通告到SwitchA的BGP路由表中。
[SwitchA-bgp] network 1.0.0.0 8
[SwitchA-bgp] quit
# 配置SwitchB。
[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
# 配置SwitchC。
[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
# 配置SwitchD。
[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路由的不同属性值,使得SwitchD优选SwitchC学到的路由。
l 在SwitchA上对发布给对等体192.1.1.2的1.0.0.0/8路由配置较高的MED属性值,使得SwitchD优选SwitchC学到的路由。
# 定义编号为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
# 查看SwitchD的BGP路由表。
<SwitchD> display bgp routing-table
Total Number of Routes: 2
BGP Local router ID is 195.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
可以看到,SwitchD从SwitchC学到1.0.0.0/8的路由是最优的。
l 在SwitchB和SwitchC上分别对1.0.0.0/8路由配置不同的本地优先级,使得SwitchD优选SwitchC学到的路由。
# 在SwitchC上定义编号为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
# 在SwitchC上定义名为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
# 查看SwitchD的BGP路由表。
<SwitchD> display bgp routing-table
Total Number of Routes: 2
BGP Local router ID is 195.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
可以看到,SwitchD从SwitchC学到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地址和前缀范围,用于匹配路由信息的目的网段地址或下一跳地址。ACL的有关配置请参见“ACL操作”中的配置部分。
地址前缀列表的作用类似于ACL,但比它更为灵活,且更易于用户理解。地址前缀列表在应用于路由信息的过滤时,其匹配对象为路由信息的目的地址信息域;另外,用户可以指定gateway选项,指明只接收某些路由器发布的路由信息。
一个地址前缀列表由前缀列表名标识。每个前缀列表可以包含多个表项,每个表项可以独立指定一个网络前缀形式的匹配范围,并用一个索引号来标识,索引号指明了进行匹配检查的顺序。
在匹配的过程中,路由器按升序依次检查由索引号标识的各个表项,只要有某一表项满足条件,就意味着通过该地址前缀列表的过滤(不再进入下一个表项的测试)。
as-path-acl仅用于BGP。BGP的路由信息包中,包含有自治系统路径域。as-path-acl就是针对自治系统路径域指定匹配条件。
community-list仅用于BGP。BGP的路由信息包中,包含一个community属性域,用来标识一个团体。community-list就是针对团体属性域指定匹配条件。
Route-policy是一种比较复杂的过滤器,它不仅可以匹配路由信息的某些属性,并在条件满足时改变路由信息的属性。Route-policy可以使用前面几种过滤器定义自己的匹配规则。
一个Route-policy可以由多个节点(node)构成,不同节点之间是“或”的关系。系统按节点序号依次检查各个节点,如果通过了其中一节点,就意味着通过该Route-policy,不再对其他节点进行匹配测试。
每个节点可以由一组if-match和apply子句组成。if-match子句定义匹配规则,匹配对象是路由信息的一些属性。同一节点中的不同if-match子句是“与”的关系,只有满足节点内所有if-match子句指定的匹配条件,才能通过该节点的匹配测试。apply子句指定动作,也就是在通过节点的匹配后,对路由信息的一些属性进行设置。
路由策略主要有两种应用方式:
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-acl as-path-acl-number { deny | permit } regular-expression |
必选 缺省情况下,没有配置AS路径过滤列表 |
一个团体属性列表可以定义多个表项。在匹配过程中,各表项之间是“或”的关系,即只要路由信息通过该列表中的一条表项,就认为通过该团体属性列表。
表6-3 配置基本团体属性列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置基本团体属性列表 |
ip community-list basic-comm-list-num { deny | permit } [ community-number-list ] [ internet | no-export-subconfed | no-advertise | no-export ] * |
必选 缺省情况下,没有配置基本团体属性列表 |
表6-4 配置高级团体属性列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置高级团体属性列表 |
ip community-list adv-comm-list-num { deny | permit } regular-expression |
必选 缺省情况下,没有配置高级团体属性列表 |
路由策略用来根据路由信息的某些属性过滤路由信息,并改变与路由策略规则匹配的路由信息的属性。匹配条件可以使用前面几种过滤列表。
一个路由策略可由多个节点构成,每个节点又分为:
l if-match子句:定义匹配规则,即路由信息通过当前Route-policy所需满足的条件,匹配对象是路由信息的某些属性。
l apply子句:指定动作,也就是在满足由if-match子句指定的过滤条件后所执行的一些配置命令,对路由的某些属性进行修改。
在配置路由策略之前,需完成以下任务:
l 配置过滤列表
l 配置路由协议
在配置之前,需要准备以下数据:
l 路由策略的名称、节点序号
l 匹配条件
l 要修改的路由属性值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建路由策略并进入该路由策略视图 |
route-policy route-policy-name { permit | deny } node node-number |
必选 缺省情况下,没有创建路由策略 |
& 说明:
l permit指定节点的匹配模式为允许模式。当路由信息通过该节点的过滤后,将执行该节点的apply子句,不进入下一个节点的测试;如果路由信息没有通过该节点过滤,将进入下一个节点继续测试。
l deny指定节点的匹配模式为拒绝模式(此模式下apply子句不会被执行)。当路由项满足该节点的所有if-match子句时,将被拒绝通过该节点,不进入下一个节点的测试;如果路由项不满足该节点的if-match子句,将进入下一个节点继续测试。
l 如果路由策略中定义了一个以上的节点,则各节点中至少应该有一个节点的匹配模式是permit。当Route-policy用于路由信息过滤时,如果某路由信息没有通过任一节点,则认为该路由信息没有通过该Route-policy。如果Route-policy的所有节点都是deny模式,则没有路由信息能通过该Route-policy。
操作 |
命令 |
说明 |
|
进入系统视图 |
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-acl-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 |
可选 缺省情况下,没有配置路由信息的路由开销的匹配条件 |
|
配置路由信息的出接口的匹配条件 |
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子句时,如果该节点的匹配模式为允许模式,则所有路由信息都会通过该节点的过滤;如果该节点的匹配模式为拒绝模式,则所有路由信息都会被拒绝。
操作 |
命令 |
说明 |
进入系统视图 |
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> | no-export-subconfed | no-export | no-advertise } * [ additive ] } |
可选 缺省情况下,没有配置BGP路由信息的团体属性 |
配置路由信息的路由开销 |
apply cost [ + | - ] value |
可选 缺省情况下,没有配置路由信息的路由开销 |
配置路由信息的开销类型 |
apply cost-type { external | internal | type-1 | type-2 } |
可选 缺省情况下,没有配置路由开销类型 |
配置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命令可以显示配置后路由策略的运行情况,通过查看显示信息验证配置的效果。
操作 |
命令 |
显示BGP AS路径过滤列表信息 |
display ip as-path-acl [ as-path-acl-number ] |
显示BGP团体属性列表信息 |
display ip community-list [ basic-community-list-number | adv-community-list-number ] |
显示IPv4地址前缀列表的统计信息 |
display ip ip-prefix [ ip-prefix-name ] |
显示路由策略信息 |
display route-policy [ route-policy-name ] |
清除IPv4地址前缀列表的统计信息 |
reset ip ip-prefix [ ip-prefix-name ] |
如下图所示,SwitchB与SwitchA之间通过OSPF协议交换路由信息,与SwitchC之间通过IS-IS协议交换路由信息。
要求在SwitchB上配置路由引入,将IS-IS路由引入到OSPF中去,并同时使用路由策略设置路由的属性。其中,设置172.17.1.0/24的路由的开销为100,设置172.17.2.0/24的路由的Tag属性为20。
(1) 配置各接口的IP地址(略)
(2) 配置IS-IS路由协议
# 配置SwitchC。
<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
# 配置SwitchB。
<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路由协议及路由引入
# 配置SwitchA,启动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
# 配置SwitchB,启动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 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 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) 在路由引入时应用路由策略
# 配置SwitchB,设置在路由引入时应用路由策略。
[SwitchB] ospf
[SwitchB-ospf-1] import-route isis 1 route-policy isis2ospf
[SwitchB-ospf-1] quit
# 查看SwitchA的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命令查看路由策略的配置。
本章所指的路由器代表了一般意义下的路由器,以及运行了路由协议的三层交换机。
GR是Graceful Restart(完美重启)的简称,它表示当路由协议重启时保证转发业务不中断。
GR机制的核心在于:当某设备的路由协议重启时,能够通知周边设备在一定时间内将到该设备的邻居关系和路由保持稳定。在路由协议重启完毕后,周边设备协助其进行路由信息同步,在尽量短的时间内使该设备的各种路由信息恢复到重启前的状态。在整个协议重启过程中,网络路由和转发保持高度稳定,报文转发路径也没有任何改变,整个系统可以不间断地转发IP报文。这个过程即称为完美重启。
配置了GR属性的设备,我们称之为“具备GR能力”。即该设备在路由协议重启时,能实现GR。不具备GR能力的设备,在路由协议重启的情况下,只能遵循普通的重启过程。
l GR Restarter:GR重启路由器,指由管理员或由于故障触发进行协议重启的路由器,必须具备GR能力。
l GR Helper:即GR Restarter的邻居,能协助重启的GR Restarter保持路由关系的稳定,也必须具备GR能力。
l GR Session:GR会话,是GR Restarter和GR Helper之间的协商过程。包括协议重启通告,协议重启过程中的信息交互等。通过该会话,GR Restarter和GR Helper可以掌握彼此的GR能力。
l GR Time:GR时间,是GR Restarter和GR Helper协商建立一个会话所用的时间。当某GR路由器发现邻居路由器处于down状态时,将在该时间内仍保留其发出的拓扑信息或路由。
在网络中配置一个设备为GR Restarter,该设备与其GR Helper必须支持GR或具备GR能力。这样当GR Restarter重启时,其GR Helper就可以感知它的重启进程。
& 说明:
l GR Restarter与GR Helper的作用是相互的。在某些情况下,GR Restarter与GR Helper的位置和作用可以互换。
l GR Restarter在协议重启过程中不能删除路由表或转发表中的路由信息。假如某设备不具备这样的能力,则其只能作为GR Helper而不能作为GR Restarter。
GR Restarter和GR Helper之间的具体通讯过程如下:
(1) GR Restarter和GR Helper之间建立GR Session
图7-1 在GR Restarter与GR Helper间建立GR Session
如图7-1所示,RouterA承担GR Restarter角色,RouterB、RouterC和RouterD分别是RouterA的GR Helper,在GR Restarter和GR Helper之间建立起GR Session。
(2) GR Restarter重新启动
图7-2 GR Restarter的重启过程
如图7-2所示,当各GR Helper发现其对端GR Restarter处于协议重启状态时,不仅继续保持GR Session,而且在GR Time内仍保留来自GR Restarter的路由。
(3) GR Restarter向GR Helper发送信号
图7-3 GR Restarter重启完毕后向GR Helper发送信号
如图7-3所示,GR Restarter的重新启动完成后,会向其每个GR Helper发送信号,从而重新建立GR Session。
(4) GR Restarter从GR Helper获取拓扑或路由信息
图7-4 GR Restarter从GR Helper获取拓扑或路由信息
如图7-4所示,GR Restarter通过与所有GR Helper建立GR Session,可获得拓扑或路由信息,并以此重新计算自己的路由表。
基于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协议收敛。
基于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协议收敛。
基于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协议收敛。
H3C S3610&S5510系列以太网交换机支持GR功能。当使能GR功能后(配置为OSPF协议的GR Helper除外),设备是作为GR Restarter,还是作为GR Helper,系统根据情况动态确定。
例如:用户重启路由进程(OSPF/IS-IS),此时该设备作为GR Restarter,对端设备作为GR Helper。如果对端设备的用户重启路由进程(OSPF/IS-IS),此时该设备作为GR Helper,对端设备作为GR Restarter。
一般情况下,只需使能基于各协议的GR即可完成GR的配置。还可根据需要调整GR的参数,但在通常情况下建议使用缺省值。
需要注意的是,基于BGP的GR功能,H3C S3610&S5510系列以太网交换机仅作为GR Helper。
表7-1 配置基于BGP的GR Helper
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动BGP,进入BGP视图 |
bgp as-number |
必选 缺省情况下,系统不运行BGP |
使能BGP GR Helper能力 |
graceful-restart |
必选 缺省情况下,BGP GR Helper能力处于关闭状态 |
配置对端重建连接会话的最大时间 |
graceful-restart timer restart timer |
可选 缺省情况下,对端重建BGP会话的最大时间为360秒 |
配置等待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,路由信息库结束)标记用来标定路由更新发送的结束。
表7-2 配置基于OSPF的GR Restarter
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动OSPF,进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
必选 缺省情况下,不运行OSPF |
使能OSPF本地链路信令能力 |
enable link-local-signaling |
必选 缺省情况下,OSPF本地链路信令能力处于关闭状态 |
使能OSPF带外同步能力 |
enable out-of-band-resynchronization |
必选 缺省情况下,OSPF带外同步能力处于关闭状态 |
使能OSPF GR能力 |
graceful-restart |
必选 缺省情况下,OSPF GR能力处于关闭状态 |
& 说明:
设备配置了graceful-restart命令,则设备既可以作为GR Restarter,又可以作为GR Helper。
表7-3 配置基于OSPF的GR Helper
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动OSPF,进入OSPF视图 |
ospf [ process-id | router-id router-id ] * |
必选 缺省情况下,不运行OSPF |
使能OSPF本地链路信令能力 |
enable link-local-signaling |
必选 缺省情况下,OSPF本地链路信令能力处于关闭状态 |
使能OSPF带外同步能力 |
enable out-of-band-resynchronization |
必选 缺省情况下,OSPF带外同步能力处于关闭状态 |
配置本路由器可以作为哪些路由器的GR Helper |
graceful-restart help { acl-number | prefix prefix-list } |
可选 缺省情况下,本路由器可以作为任何具有GR功能路由器的GR Helper |
在普通的路由协议重启的情况下,路由器与其它邻居的邻接关系被拆除。此时会引起网络暂时的中断。
基于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的设备上进行以下配置。
表7-4 配置基于IS-IS的GR
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IS-IS路由进程,进入IS-IS视图 |
isis [ process-id ] |
必选 缺省情况下,不使能IS-IS路由进程 |
使能IS-IS GR能力 |
graceful-restart |
必选 缺省情况下,IS-IS GR能力处于关闭状态 |
配置重启间隔时间 |
graceful-restart interval timer |
可选 缺省情况下,重启间隔时间为300秒 |
配置重启时抑制SA位 |
graceful-restart suppress-sa |
可选 缺省情况下,重启时不抑制SA位 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后IS-IS GR的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以重启OSPF GR进程。
表7-5 GR显示和维护
操作 |
命令 |
查看IS-IS GR状态 |
display isis graceful-restart status [ level-1 | level-2 ] [ process-id ] |
重启OSPF GR进程 |
reset ospf [ process-id ] process graceful-restart |
& 说明:
reset ospf process graceful-restart命令可以重新启动路由器的OSPF GR进程,但是要求这些GR路由器必须预先启动了LLS(Link Local Signaling,本地链路信令)和OOB(Out of Band resynchronization,带外同步)能力。
如图7-5所示,交换机SwitchA、SwitchB、SwitchC属于同一域。这三台交换机都运行IS-IS路由协议以实现路由互连。将SwitchA配置为GR Restarter,SwitchB、SwitchC配置为GR Helper。
图7-5 基于IS-IS的GR配置组网图
如下以SwitchA的配置为例进行介绍,SwitchB和SwitchC的配置类似。
(1) 使能SwitchA的IS-IS GR能力,并配置重启间隔时间
<SwitchA> system-view
[SwitchA] isis 1
[SwitchA-isis-1] graceful-restart
[SwitchA-isis-1] graceful-restart interval 150
SwitchA与SwitchB和SwitchC建立邻接关系后,三台交换机开始交换路由信息。SwitchA的IS-IS协议重启,进入重启模式后,通过GR机制向邻居重新发送连接请求,同步数据库。使用display isis graceful-restart status命令,可查看SwitchA的重启状态。
(2) 重启SwitchA,检查重启状态
<SwitchA> reset isis all 1
Warning : Reset ISIS process? [Y/N]:y
<SwitchA> display isis graceful-restart status
Restart information for ISIS(1)
-------------------------------
IS-IS(1) Level-1 Restart Status
Restart Interval: 150
SA Bit Not Supported
Total Number of Interfaces = 1
Restart Status: RESTART COMPLETE
IS-IS(1) Level-2 Restart Status
Restart Interval: 150
SA Bit Not Supported
Total Number of Interfaces = 1
Restart Status: RESTART COMPLETE
如图7-6所示,网络中包含三台交换机SwitchA、SwitchB和SwitchC。这三台交换机都运行OSPF路由协议以实现路由互连。将SwitchA配置为GR Restarter,SwitchB、SwitchC配置为GR Helper。配置访问控制列表,使SwitchB仅作为SwitchA的GR Helper。SwitchC可以作为任何GR设备的GR Helper。
图7-6 基于OSPF 的GR配置组网图
(1) 配置SwitchA
<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
[SwitchA-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] quit
(2) 配置SwitchB
<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] 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) 配置SwitchC
<SwitchC> system-view
[SwitchC] interface vlan-interface 100
[SwitchC-Vlan-interface100] ip address 192.1.1.3 255.255.255.0
[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) 在SwitchA、SwitchB和SwitchC都配置完成,并运行稳定后,在SwitchA执行重启。
<SwitchA> reset ospf 100 process graceful-restart
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!