12-IPv6路由操作
本章节下载 (350.68 KB)
目 录
& 说明:
本章所指的路由器代表了运行路由协议的三层交换机。为提高可读性,在手册的描述中将不另行说明。
静态路由是一种特殊的路由,它由管理员手工配置。当网络结构比较简单时,只需配置静态路由就可以使网络正常工作。恰当地设置和使用静态路由可以改进网络的性能,并可为重要的应用保证带宽。
静态路由的缺点在于:当网络发生故障或者拓扑发生变化后,可能会出现路由不可达,导致网络中断,此时必须由网络管理员手工修改静态路由的配置。
IPv6静态路由与IPv4静态路由类似,适合于一些结构比较简单的IPv6网络。
它们之间的主要区别是目的地址和下一跳地址有所不同,IPv6静态路由使用的是IPv6地址,而IPv4静态路由使用IPv4地址。
在配置IPv6静态路由时,如果指定的目的地址为::/0(前缀长度为0),则表示配置了一条IPv6缺省路由。如果报文的目的地址无法匹配路由表中的任何一项,路由器将选择IPv6缺省路由来转发IPv6报文。
在小型IPv6网络中,可以通过配置IPv6静态路由达到网络互连的目的。相对使用动态路由来说,可以节省带宽。
在配置IPv6静态路由之前,需完成以下任务:
l 使能IPv6报文转发能力
l 相邻节点网络层(IPv6)可达
表1-1 配置IPv6静态路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置IPv6静态路由 |
ipv6 route-static ipv6-address prefix-length [ interface-type interface-number ] nexthop-address [ preference preference-value ] |
必选 缺省情况下,IPv6静态路由的优先级为60 |
在完成上述配置后,在任意视图下执行display命令查看IPv6静态路由配置的运行情况并检验配置结果。
在系统视图下执行delete命令可以删除所有静态路由。
表1-2 IPv6静态路由显示和维护
操作 |
命令 |
查看IPv6静态路由表信息 |
display ipv6 routing-table protocol static [ inactive | verbose ] |
删除所有IPv6静态路由 |
delete ipv6 static-routes all |
& 说明:
使用undo ipv6 route-static命令可以删除一条IPv6静态路由,而使用delete ipv6 static-routes all命令可以删除包括缺省路由在内的所有IPv6静态路由。
要求各交换机之间配置IPv6静态路由协议后,可以使所有主机和交换机之间互通。
图1-1 静态路由配置示例的组网图
(1) 配置各VLAN虚接口的IPv6地址(略)
(2) 配置IPv6静态路由
# 在Switch A上配置IPv6缺省路由。
<SwitchA> system-view
[SwitchA] ipv6
[SwitchA] ipv6 route-static :: 0 4::2
# 在Switch B上配置两条IPv6静态路由。
<SwitchB> system-view
[SwitchB] ipv6
[SwitchB] ipv6 route-static 1:: 64 4::1
[SwitchB] ipv6 route-static 3:: 64 5::1
# 在Switch C上配置IPv6缺省路由。
<SwitchC> system-view
[SwitchC] ipv6
[SwitchC] ipv6 route-static :: 0 5::2
(3) 配置主机地址和网关
根据组网图配置好各主机的IPv6地址,并将Host A的缺省网关配置为1::1,Host B的缺省网关配置为2::1,Host C的缺省网关配置为3::1。
(4) 查看配置结果
# 查看Switch A的IPv6路由表。
[SwitchA] display ipv6 routing-table
Routing Table :
Destinations : 7 Routes : 7
Destination: ::/0 Protocol : Static
NextHop : 4::2 Preference: 60
Interface : Vlan200 Cost : 0
Destination: ::1/128 Protocol : Direct
NextHop : ::1 Preference: 0
Interface : InLoop0 Cost : 0
Destination: 1::/64 Protocol : Direct
NextHop : 1::1 Preference: 0
Interface : Vlan100 Cost : 0
Destination: 1::1/128 Protocol : Direct
NextHop : ::1 Preference: 0
Interface : InLoop0 Cost : 0
Destination: 4::/64 Protocol : Direct
NextHop : 4::1 Preference: 0
Interface : Vlan200 Cost : 0
Destination: 4::1/128 Protocol : Direct
NextHop : ::1 Preference: 0
Interface : InLoop0 Cost : 0
Destination: FE80::/10 Protocol : Direct
NextHop : :: Preference: 0
Interface : NULL0 Cost : 0
# 使用Ping进行验证。
[SwitchA] ping ipv6 3::1
PING 3::1 : 56 data bytes, press CTRL_C to break
Reply from 3::1
bytes=56 Sequence=1 hop limit=254 time = 63 ms
Reply from 3::1
bytes=56 Sequence=2 hop limit=254 time = 62 ms
Reply from 3::1
bytes=56 Sequence=3 hop limit=254 time = 62 ms
Reply from 3::1
bytes=56 Sequence=4 hop limit=254 time = 63 ms
Reply from 3::1
bytes=56 Sequence=5 hop limit=254 time = 63 ms
--- 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
& 说明:
l 在以下路由协议的介绍中所指的路由器及路由器图标,代表了运行路由协议的三层交换机。为提高可读性,在手册的描述中将不另行说明。
l 该系列交换机仅支持RIPng单进程。
RIPng又称为下一代RIP协议(RIP next generation),它是对原来的IPv4网络中RIP-2协议的扩展。大多数RIP的概念都可以用于RIPng。
为了在IPv6网络中应用,RIPng对原有的RIP协议进行了如下修改:
l UDP端口号:使用UDP的521端口发送和接收路由信息。
l 组播地址:使用FF02::9作为链路本地范围内的RIPng路由器组播地址。
l 前缀长度:目的地址使用128比特的前缀长度。
l 下一跳地址:使用128比特的IPv6地址。
l 源地址:使用链路本地地址FE80::/10作为源地址发送RIPng路由信息更新报文。
RIPng协议是基于距离矢量(Distance-Vector)算法的协议。它通过UDP报文交换路由信息,使用的端口号为521。
RIPng使用跳数来衡量到达目的地址的距离(也称为度量值或开销)。在RIPng中,从一个路由器到其直连网络的跳数为0,通过与其相连的路由器到达另一个网络的跳数为1,其余以此类推。当跳数大于或等于16时,目的网络或主机就被定义为不可达。
RIPng每30秒发送一次路由更新报文。如果在180秒内没有收到网络邻居的路由更新报文,RIPng将从邻居学到的所有路由标识为不可达。如果再过120秒内仍没有收到邻居的路由更新报文,RIPng将从路由表中删除这些路由。
为了提高性能并避免形成路由环路,RIPng既支持水平分割也支持毒性逆转。此外,RIPng还可以从其它的路由协议引入路由。
每个运行RIPng的路由器都管理一个路由数据库,该路由数据库包含了到所有可达目的地的路由项,这些路由项包含下列信息:
l 目的地址:主机或网络的IPv6地址。
l 下一跳地址:为到达目的地,需要经过的相邻路由器的接口IPv6地址。
l 出接口:转发IPv6报文通过的出接口。
l 度量值:本路由器到达目的地的开销。
l 路由时间:从路由项最后一次被更新到现在所经过的时间,路由项每次被更新时,路由时间重置为0。
l 路由标记(Route Tag):用于标识外部路由,以便在路由策略中根据Tag对路由进行灵活的控制。
RIPng报文由头部(Header)和多个路由表项(RTEs)组成。在同一个RIPng报文中,RTE的最大条数与发送接口MTU有关。
RIPng报文基本格式如下图所示。
图2-1 RIPng报文基本格式
各字段的含义如下:
l Command:定义报文的类型。0x01表示Request报文,0x02表示Response报文。
l Version:RIPng的版本,目前其值只能为0x01。
l RTE(Route Table Entry):路由表项,每项的长度为20字节。
在RIPng里有两类RTE,分别是:
l 下一跳RTE:位于一组具有相同下一跳的“IPv6前缀RTE”的前面,它定义了下一跳的IPv6地址。
l IPv6前缀RTE:位于某个“下一跳RTE”的后面。同一个“下一跳RTE”的后面可以有多个不同的“IPv6前缀RTE”。它描述了RIPng路由表中的目的IPv6地址、路由标记、前缀长度以及度量值。
下一跳RTE的格式如下图所示。
其中,IPv6 next hop address表示下一跳的IPv6地址。
IPv6前缀RTE的格式如下图所示。
图2-3 IPv6前缀RTE格式
各字段的解释如下:
l IPv6 prefix:目的IPv6地址的前缀。
l route tag:路由标记。
l prefix len:IPv6地址的前缀长度。
l metric:路由的度量值。
当RIPng路由器启动后或者需要更新部分路由表项时,便会发出Request报文,向邻居请求需要的路由信息。通常情况下以组播方式发送Request报文。
收到Request报文的RIPng路由器会对其中的RTE进行处理。如果Request报文中只有一项RTE,且IPv6前缀和前缀长度都为0,度量值为16,则表示请求邻居发送全部路由信息,被请求路由器收到后会把当前路由表中的全部路由信息,以Response报文形式发回给请求路由器。如果Request报文中有多项RTE,被请求路由器将对RTE逐项处理,更新每条路由的度量值,最后以Response报文形式返回给请求路由器。
Response报文包含本地路由表的信息,一般在下列情况下产生:
l 对某个Request报文进行响应
l 作为更新报文周期性地发出
l 在路由发生变化时触发更新
收到Response报文的路由器会更新自己的RIPng路由表。为了保证路由的准确性,RIPng路由器会对收到的Response报文进行有效性检查,比如源IPv6地址是否是链路本地地址,端口号是否正确等,没有通过检查的报文会被忽略。
与RIPng相关的规范有:
l RFC 2080:RIPng for IPv6
l RFC 2081:RIPng Protocol Applicability Statement
l RFC 2453:RIP Version 2
RIPng基本功能的配置任务包括RIPng特性配置中涉及的基本配置,完成本节的配置就可以使用RIPng特性。
在RIPng的配置中,应该最先使能RIPng。但是与RIPng功能特性相关的接口配置不受是否启动了RIPng的限制,比如说给接口配置一个IPv6地址。
在配置RIPng基本功能之前,需完成以下任务:
l 启动IPv6报文转发功能
l 配置接口的网络层地址,使相邻节点的网络层可达
表2-1 配置RIPng的基本功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建RIPng进程并进入RIPng视图 |
ripng [ process-id ] |
必选 缺省情况下,没有RIPng进程在运行 |
退回系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
在指定的网络接口上使能RIPng |
ripng process-id enable |
必选 缺省情况下,接口禁用RIPng |
& 说明:
如果接口没有使能RIPng,那么RIPng进程在该接口上既不发送也不接收RIPng报文。
在配置RIPng的路由特性之前,需完成以下任务:
l 配置接口的网络层地址
l 配置RIPng基本功能
l 如果使用IPv6 ACL进行路由过滤,需要定义IPv6 ACL,相关配置请参见“ACL操作”。
l 如果使用IPv6地址前缀列表进行路由过滤,需要定义IPv6地址前缀列表,相关配置请参见“3.2.2 配置IPv6地址前缀列表”。
附加度量值是附加在RIPng路由上的输入输出度量值,包括发送附加度量值和接收附加度量值。发送附加度量值不会改变路由表中的路由度量值,仅当接口发送RIPng路由信息时才会添加到发送路由上;接收附加度量值会影响接收到的路由度量值,接口接收到一条合法的RIPng路由时,在将其加入路由表前会把附加度量值加到该路由上。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置接口接收RIPng路由时的附加度量值 |
ripng metricin value |
可选 缺省情况下,接口接收RIPng路由时的附加度量值为0 |
设置接口发送RIPng路由时的附加度量值 |
ripng metricout value |
可选 缺省情况下,接口发送RIPng路由时的附加度量值为1 |
表2-3 配置RIPng路由聚合
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置RIPng在接口发布聚合的IPv6前缀 |
ripng summary-address ipv6-address prefix-length |
必选 |
表2-4 配置RIPng发布缺省路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置RIPng发布缺省路由 |
ripng default-route { only | originate } [ cost cost ] |
必选 缺省情况下,RIPng进程不发布缺省路由 |
& 说明:
缺省路由将被强制通过指定接口的路由更新报文发布出去,该路由的发布不考虑其是否已经存在于本设备的IPv6路由表中。
用户可通过使用IPv6 ACL和IPv6前缀列表对接收到的路由信息进行过滤,只有通过过滤的路由才能被加入到RIPng路由表;此外,还可对本机所有要发布的路由进行过滤,包括从其它路由协议引入的路由和从邻居学到的RIPng路由,只有通过过滤的路由才能被发布给RIPng邻居。
表2-5 配置RIPng对接收/发布的路由进行过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIPng视图 |
ripng [ process-id ] |
- |
对接收的路由信息进行过滤 |
filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name } import |
必选 缺省情况下,RIPng不对接收的路由信息进行过滤 |
对发布的路由信息进行过滤 |
filter-policy { acl6-number | ipv6-prefix ipv6-prefix-name } export [ protocol [ process-id ] ] |
必选 缺省情况下,RIPng不对发布的路由信息进行过滤 |
任何路由协议都具备特有的协议优先级,在设备进行路由选择时能够在不同的协议中选择最佳路由。可以手工设置RIPng协议的优先级,设置的值越小,其优先级越高。
表2-6 配置RIPng协议优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIPng视图 |
ripng [ process-id ] |
- |
配置RIPng路由的优先级 |
preference [ route-policy route-policy-name ] preference |
可选 缺省情况下,RIPng路由的优先级为100 |
表2-7 配置RIPng引入外部路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIPng视图 |
ripng [ process-id ] |
- |
配置引入路由的缺省度量值 |
default cost cost |
可选 缺省情况下,引入路由的缺省度量值为0 |
引入外部路由 |
import-route protocol [ cost cost | route-policy route-policy-name ] * |
必选 缺省情况下,RIPng不引入其它路由 |
本节将介绍如何调整和优化RIPng网络的性能,以及在特殊网络环境中某些RIPng特性的应用,在调整和优化RIPng网络之前,需完成以下任务:
l 配置接口的网络层地址
l 配置RIPng基本功能
用户可通过调节RIPng定时器来调整RIPng路由协议的性能,以满足网络需要
表2-8 配置RIPng定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIPng视图 |
ripng [ process-id ] |
- |
配置RIPng定时器的值 |
timers { garbage-collect garbage-collect-value | suppress suppress-value | timeout timeout-value | update update-value } * |
可选 缺省情况下,Update定时器的值为30秒,Timeout定时器的值为180秒,Suppress定时器的值为120秒,Garbage-collect定时器的值为120秒 |
& 说明:
在配置RIPng定时器时需要注意,定时器值的调整应考虑网络的性能,并在所有运行RIPng的路由器上进行统一配置,避免增加不必要的网络流量。
& 说明:
如果同时配置了水平分割和毒性逆转,则只有毒性逆转功能生效。
配置水平分割可以使得从一个接口学到的路由不能通过此接口向外发布,用于避免相邻路由器间的路由环路。
表2-9 配置水平分割
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能水平分割功能 |
ripng split-horizon |
可选 缺省情况下,水平分割功能处于使能状态 |
& 说明:
通常情况下,为了防止路由环路的出现,水平分割都是必要的,因此,建议不要关闭水平分割。
配置毒性逆转可以使得从一个接口学到的路由还可以从这个接口向外发布,但此时这些路由的度量值已设置为16,即不可达。
表2-10 配置毒性逆转
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能毒性逆转功能 |
ripng poison-reverse |
必选 缺省情况下,毒性逆转功能处于关闭状态 |
RIPng报文头部中的一些字段必须配置为0,也称为零域。使能RIPng报文的零域检查功能后,如果报文头部零域中的值不为零,这些报文将被丢弃,不做处理。如果能确保所有报文都是可信任的,则不需要进行该项检查,以节省CPU处理时间。
表2-11 配置RIPng报文的零域检查
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIPng视图 |
ripng [ process-id ] |
- |
使能对RIPng报文头部的零域检查操作 |
checkzero |
可选 缺省情况下,RIPng进行零域检查操作 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后RIPng的运行情况,通过查看显示信息验证配置的效果。
表2-12 RIPng显示和维护
操作 |
命令 |
显示RIPng进程的配置信息 |
display ripng [ process-id ] |
显示RIPng发布数据库中的路由 |
display ripng process-id database |
显示指定RIPng进程的路由信息 |
display ripng process-id route |
显示RIPng的接口信息 |
display ripng process-id interface [ interface-type interface-number ] |
l Switch A、Switch B和Switch C相连并通过RIPng来学习网络中的IPv6路由信息;
l 在Switch B上对接收的Switch C的路由(3::/64)进行过滤,使其不加入到Switch B的RIPng进程的路由表中,也不发布给Switch A。
图2-4 RIPng配置举例组网图
(1) 配置各接口的IPv6地址(略)
(2) 配置RIPng的基本功能
# 配置Switch A。
<SwitchA> system-view
[SwitchA] ipv6
[SwitchA] ripng 1
[SwitchA-ripng-1] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] ripng 1 enable
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 400
[SwitchA-Vlan-interface400] ripng 1 enable
[SwitchA-Vlan-interface400] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] ipv6
[SwitchB] ripng 1
[SwitchB-ripng-1] quit
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] ripng 1 enable
[SwitchB-Vlan-interface200] quit
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] ripng 1 enable
[SwitchB-Vlan-interface100] quit
# 配置Switch C。
<SwitchC> system-view
[SwitchC] ipv6
[SwitchC] ripng 1
[SwitchC-ripng-1] quit
[SwitchC] interface vlan-interface 200
[SwitchC-Vlan-interface200] ripng 1 enable
[SwitchC-Vlan-interface200] quit
[SwitchC] interface vlan-interface 500
[SwitchC-Vlan-interface500] ripng 1 enable
[SwitchC-Vlan-interface500] quit
[SwitchC] interface vlan-interface 600
[SwitchC-Vlan-interface600] ripng 1 enable
[SwitchC-Vlan-interface600] quit
# 查看Switch B的RIPng路由表。
[SwitchB] display ripng 1 route
Route Flags: A - Aging, S - Suppressed, G - Garbage-collect
----------------------------------------------------------------
Peer FE80::20F:E2FF:FE23:82F5 on Vlan-interface100
Dest 1::/64,
via FE80::20F:E2FF:FE23:82F5, cost 1, tag 0, A, 6 Sec
Dest 2::/64,
via FE80::20F:E2FF:FE23:82F5, cost 1, tag 0, A, 6 Sec
Peer FE80::20F:E2FF:FE00:100 on Vlan-interface200
Dest 3::/64,
via FE80::20F:E2FF:FE00:100, cost 1, tag 0, A, 11 Sec
Dest 4::/64,
via FE80::20F:E2FF:FE00:100, cost 1, tag 0, A, 11 Sec
Dest 5::/64,
via FE80::20F:E2FF:FE00:100, cost 1, tag 0, A, 11 Sec
# 查看Switch A的RIPng路由表。
[SwitchA] display ripng 1 route
Route Flags: A - Aging, S - Suppressed, G - Garbage-collect
----------------------------------------------------------------
Peer FE80::200:2FF:FE64:8904 on Vlan-interface100
Dest 1::/64,
via FE80::200:2FF:FE64:8904, cost 1, tag 0, A, 31 Sec
Dest 4::/64,
via FE80::200:2FF:FE64:8904, cost 2, tag 0, A, 31 Sec
Dest 5::/64,
via FE80::200:2FF:FE64:8904, cost 2, tag 0, A, 31 Sec
Dest 3::/64,
via FE80::200:2FF:FE64:8904, cost 1, tag 0, A, 31 Sec
(3) 配置Switch B对接收和发布的路由进行过滤
[SwitchB] acl ipv6 number 2000
[SwitchB-acl6-basic-2000] rule deny source 3::/64
[SwitchB-acl6-basic-2000] rule permit
[SwitchB-acl6-basic-2000] quit
[SwitchB] ripng 1
[SwitchB-ripng-1] filter-policy 2000 import
[SwitchB-ripng-1] filter-policy 2000 export
[SwitchB-ripng-1] quit
# 查看Switch B和Switch A的RIPng路由表。
[SwitchB] display ripng 1 route
Route Flags: A - Aging, S - Suppressed, G - Garbage-collect
----------------------------------------------------------------
Peer FE80::20F:E2FF:FE23:82F5 on Vlan-interface100
Dest 1::/64,
via FE80::20F:E2FF:FE23:82F5, cost 1, tag 0, A, 2 Sec
Dest 2::/64,
via FE80::20F:E2FF:FE23:82F5, cost 1, tag 0, A, 2 Sec
Peer FE80::20F:E2FF:FE00:100 on Vlan-interface200
Dest 4::/64,
via FE80::20F:E2FF:FE00:100, cost 1, tag 0, A, 5 Sec
Dest 5::/64,
via FE80::20F:E2FF:FE00:100, cost 1, tag 0, A, 5 Sec
[SwitchA] display ripng 1 route
Route Flags: A - Aging, S - Suppressed, G - Garbage-collect
----------------------------------------------------------------
Peer FE80::20F:E2FF:FE00:1235 on Vlan-interface100
Dest 1::/64,
via FE80::20F:E2FF:FE00:1235, cost 1, tag 0, A, 2 Sec
Dest 4::/64,
via FE80::20F:E2FF:FE00:1235, cost 2, tag 0, A, 2 Sec
Dest 5::/64,
via FE80::20F:E2FF:FE00:1235, cost 2, tag 0, A, 2 Sec
路由策略(Routing Policy)是为了改变网络流量所经过的途径而修改路由信息的技术,主要通过改变路由属性(包括可达性)来实现。
路由器在发布与接收路由信息时,可能需要实施一些策略,以便对路由信息进行过滤,例如只接收或发布满足一定条件的路由信息。一种路由协议可能需要引入其它的路由协议发现的路由信息,路由器在引入其它路由协议的路由信息时,可能只需要引入一部分满足条件的路由信息,并控制所引入的路由信息的某些属性,以使其满足本协议的要求。
为实现路由策略,首先要定义将要实施路由策略的路由信息的特征,即定义一组匹配规则。可以以路由信息中的不同属性作为匹配依据进行设置,如目的地址、发布路由信息的路由器地址等。匹配规则可以预先设置好,然后再将它们应用于路由的发布、接收和引入等过程的路由策略中。
路由协议可以引用访问控制列表、地址前缀列表和Route-policy几种过滤器。下面对各种过滤器逐一进行介绍。
用户在定义ACL时可以指定IP(v6)地址和子网范围,用于匹配路由信息的目的网段地址或下一跳地址。ACL的有关配置请参见“ACL操作”。
地址前缀列表的作用类似于ACL,但比它更为灵活,且更易于用户理解。使用地址前缀列表过滤路由信息时,其匹配对象为路由信息的目的地址信息域。
一个地址前缀列表由前缀列表名标识。每个前缀列表可以包含多个表项,每个表项可以独立指定一个网络前缀形式的匹配范围,并用一个索引号来标识,索引号指明了在地址前缀列表中进行匹配检查的顺序。
每个表项之间是“或”的关系,在匹配的过程中,路由器按升序依次检查由索引号标识的各个表项,只要有某一表项满足条件,就意味着通过该地址前缀列表的过滤(不再进入下一个表项的测试)。
路由策略是一种比较复杂的过滤器,它不仅可以匹配路由信息的某些属性,还可以在条件满足时改变路由信息的属性。路由策略可以使用前面几种过滤器定义自己的匹配规则。
一个路由策略可以由多个节点(node)构成,每个节点是匹配检查的一个单元,在匹配过程中,系统按节点序号升序依次检查各个节点。
每个节点可以由一组if-match和apply子句组成。if-match子句定义匹配规则,匹配对象是路由信息的一些属性。同一节点中的不同if-match子句是“与”的关系,只有满足节点内所有if-match子句指定的匹配条件,才能通过该节点的匹配测试。apply子句指定动作,也就是在通过节点的匹配后,对路由信息的一些属性进行设置。
一个路由策略的不同节点间是“或”的关系,如果通过了其中一节点,就意味着通过该路由策略,不再对其他节点进行匹配测试。
路由策略主要有两种应用方式:
l 路由协议在引入其它路由协议发现的路由时,通过路由策略只引入满足条件的路由信息。
l 路由协议在发布或接收路由信息时,通过路由策略对路由信息进行过滤,只接收或发布满足给定条件的路由信息。
在配置过滤列表之前,需要准备以下数据:
l 前缀列表名称
l 匹配的地址范围
IPv6地址前缀列表由列表名标识,每个前缀列表可以包含多个表项。各表项可以独立指定一个网络前缀形式的匹配范围,并使用索引号标识。
在匹配的过程中,系统按索引号升序依次检查各个表项,只要路由信息满足一个表项,就认为通过该过滤列表,不再去匹配其他表项。
表3-1 配置IPv6地址前缀列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置IPv6地址前缀列表 |
ip ipv6-prefix ipv6-prefix-name [ index index-number ] { deny | permit } ipv6-address prefix-length [ greater-equal min-prefix-length ] [ less-equal max-prefix-length ] |
必选 缺省情况下,没有配置IPv6地址前缀列表 |
& 说明:
如果所有表项都是deny模式,则任何路由都不能通过该过滤列表。这种情况下,需要在多条deny模式的表项后定义一条permit :: 0 less-equal 128的表项,以允许其它所有IPv6路由信息通过
例如,按如下配置可以保证仅过滤掉2000:1::/48、2000:2::/48、2000:3::/48三个网段的路由,而其它网段的路由信息可以通过。
<Sysname> system-view
[Sysname] ip ipv6-prefix abc index 10 deny 2000:1:: 48
[Sysname] ip ipv6-prefix abc index 20 deny 2000:2:: 48
[Sysname] ip ipv6-prefix abc index 30 deny 2000:3:: 48
[Sysname] ip ipv6-prefix abc index 40 permit :: 0 less-equal 128
路由策略用来根据路由信息的某些属性过滤路由信息,并改变与路由策略规则匹配的路由信息的属性。匹配条件可以使用前面几种过滤列表。
一个路由策略可由多个节点构成,每个节点又分为:
l if-match子句:定义匹配规则,即路由信息通过当前Route-policy所需满足的条件,匹配对象是路由信息的某些属性。
l apply子句:指定动作,也就是在满足由if-match子句指定的过滤条件后所执行的一些配置命令,对路由的某些属性进行修改。
在配置路由策略之前,需完成以下任务:
l 配置过滤列表
l 配置路由协议
在配置之前,需要准备以下数据:
l 路由策略的名称、节点序号
l 匹配条件
l 要修改的路由属性值
表3-2 创建一个路由策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建路由策略并进入该路由策略视图 |
route-policy route-policy-name { permit | deny } node node-number |
必选 缺省情况下,没有创建路由策略 |
& 说明:
l permit指定节点的匹配模式为允许模式。当路由信息通过该节点的过滤后,将执行该节点的apply子句,不进入下一个节点的测试;如果路由信息没有通过该节点过滤,将进入下一个节点继续测试。
l deny指定节点的匹配模式为拒绝模式(此模式下apply子句不会被执行)。当路由项满足该节点的所有if-match子句时,将被拒绝通过该节点,不进入下一个节点的测试;如果路由项不满足该节点的if-match子句,将进入下一个节点继续测试。
l 如果路由策略中定义了一个以上的节点,则各节点中至少应该有一个节点的匹配模式是permit。当路由策略用于路由信息过滤时,如果某路由信息没有通过任一节点,则认为该路由信息没有通过该路由策略。如果路由策略的所有节点都是deny模式,则没有路由信息能通过该路由策略。
表3-3 配置if-match子句
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入路由策略视图 |
route-policy route-policy-name { permit | deny } node node-number |
必选 |
配置IPv6的路由信息的匹配条件 |
if-match ipv6 { address | next-hop | route-source } { acl acl-number | prefix-list ipv6-prefix-name } |
可选 缺省情况下,没有配置IPv6的路由信息的匹配条件 |
配置路由信息的路由开销的匹配条件 |
if-match cost value |
可选 缺省情况下,没有配置路由信息的路由开销的匹配条件 |
配置路由信息的出接口的匹配条件 |
if-match interface { interface-type interface-number }&<1-16> |
可选 缺省情况下,没有配置路由信息的出接口的匹配条件 |
配置路由信息的标记域的匹配条件 |
if-match tag value |
可选 缺省情况下,没有配置路由信息的标记域的匹配条件 |
& 说明:
l 对于同一个Route-policy节点,在匹配的过程中,各个if-match子句间是“与”的关系,即路由信息必须同时满足所有匹配条件,才可以执行apply子句的动作。
l 在一个节点中,可以没有if-math子句,也可以有多个if-match子句。当不指定if-match子句时,如果该节点的匹配模式为允许模式,则所有路由信息都会通过该节点的过滤;如果该节点的匹配模式为拒绝模式,则所有路由信息都会被拒绝。
表3-4 配置apply子句
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建路由策略并进入该路由策略视图 |
route-policy route-policy-name { permit | deny } node node-number |
必选 缺省情况下,不创建路由策略 |
配置路由信息的路由开销 |
apply cost [ + | - ] value |
可选 缺省情况下,没有配置路由信息的路由开销 |
配置IPv6路由信息的下一跳地址 |
apply ipv6 next-hop ipv6-address |
可选 缺省情况下,没有配置IPv6路由信息的下一跳地址 |
配置路由协议的优先级 |
apply preference preference |
可选 缺省情况下,没有配置路由协议的优先级 |
配置路由信息的标记域 |
apply tag value |
可选 缺省情况下,没有配置路由信息的标记域 |
& 说明:
对于引入的IPv6路由,使用apply ipv6 next-hop命令设置下一跳地址无效。
在完成上述配置后,在任意视图下执行display命令可以显示配置后路由策略的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除路由策略的统计信息。
操作 |
命令 |
显示IPv6地址前缀列表的统计信息 |
display ip ipv6-prefix [ ipv6-prefix-name ] |
显示路由策略信息 |
display route-policy [ route-policy-name ] |
清除IPv6地址前缀列表的统计信息 |
reset ip ipv6-prefix [ ipv6-prefix-name ] |
l 在Switch A和Switch B上使能RIPng协议。
l 在Switch A上配置三条静态路由,并设置在引入静态路由时应用路由策略,使三条静态路由部分引入、部分被屏蔽掉——20::/32和40::/32网段的路由是可见的,30::/32网段的路由则被屏蔽。
l 通过在Switch B上查看RIPng路由表,验证路由策略是否生效。
图3-1 在IPv6路由引入中应用路由策略组网图
(1) 配置Switch A
# 配置接口Vlan-interface100和Vlan-interface200的IPv6地址。
<SwitchA> system-view
[SwitchA] ipv6
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] ipv6 address 10::1 32
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 200
[SwitchA-Vlan-interface200] ipv6 address 11::1 32
[SwitchA-Vlan-interface200] quit
# 在接口下使能RIPng。
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] ripng 1 enable
[SwitchA-Vlan-interface100] quit
# 配置三条静态路由。
[SwitchA] ipv6 route-static 20:: 32 11::2
[SwitchA] ipv6 route-static 30:: 32 11::2
[SwitchA] ipv6 route-static 40:: 32 11::2
# 配置路由策略。
[SwitchA] ip ipv6-prefix a index 10 permit 30:: 32
[SwitchA] route-policy static2ripng deny node 0
[SwitchA-route-policy] if-match ipv6 address prefix-list a
[SwitchA-route-policy] quit
[SwitchA] route-policy static2ripng permit node 10
[SwitchA-route-policy] quit
# 启动RIPng协议并引入静态路由。
[SwitchA] ripng
[SwitchA-ripng-1] import-route static route-policy static2ripng
(2) 配置Switch B
# 配置接口Vlan-interface100的IPv6地址。
[SwitchB] ipv6
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] ipv6 address 10::2 32
# 在接口下使能RIPng。
[SwitchB-Vlan-interface100] ripng 1 enable
[SwitchB-Vlan-interface100] quit
# 启动RIPng协议。
[SwitchB] ripng
# 查看RIPng路由表。
[SwitchB-ripng-1] display ripng 1 route
Route Flags: A - Aging, S - Suppressed, G - Garbage-collect
----------------------------------------------------------------
Peer FE80::7D58:0:CA03:1 on Vlan-interface 100
Dest 10::/32,
via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 18 Sec
Dest 20::/32,
via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 8 Sec
Dest 40::/32,
via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 3 Sec
路由协议运行正常的情况下无法实现路由信息过滤。
地址前缀列表的各个表项中至少应该有一个表项的匹配模式是permit模式。Route-policy的各个节点中至少应该有一个节点的匹配模式是permit模式。
(1) 使用display ip ipv6-prefix命令查看前缀列表的配置。
(2) 使用display route-policy命令查看路由策略的配置。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!