12-路由策略配置
本章节下载: 12-路由策略配置 (404.07 KB)
本章所介绍的路由策略包括IPv4路由策略和IPv6路由策略,二者的配置基本一致,不同的部分在各节中另行说明。
路由策略是为了改变网络流量所经过的途径而修改路由信息的技术,主要通过改变路由属性(包括可达性)来实现。
路由策略的应用灵活广泛,主要有下面几种方式:
· 控制路由的发布
路由协议在发布路由信息时,通过路由策略对路由信息进行过滤,只发布满足条件的路由信息。
· 控制路由的接收
路由协议在接收路由信息时,通过路由策略对路由信息进行过滤,只接收满足条件的路由信息,可以控制路由表项的数量,提高网络的安全性。
· 管理引入的路由
路由协议在引入其它路由协议发现的路由时,通过路由策略只引入满足条件的路由信息,并控制所引入的路由信息的某些属性,以使其满足本协议的要求。
· 设置路由的属性
对通过路由策略的路由设置相应的属性。
路由策略的实现步骤如下:
(1) 首先要定义将要实施路由策略的路由信息的特征,即定义一组匹配规则。可以用路由信息中的不同属性作为匹配依据进行设置,如目的地址、发布路由信息的路由器地址等。
(2) 然后再将匹配规则应用于路由的发布、接收和引入等过程的路由策略中。
可以灵活使用过滤器来定义各种匹配规则,过滤器的相关内容见下一节介绍。
过滤器可以看作是路由策略过滤路由的工具,单独配置的过滤器没有任何过滤效果,只有在路由协议的相关命令中应用这些过滤器,才能够达到预期的过滤效果。
路由协议可以引用访问控制列表、地址前缀列表、AS路径访问列表、团体属性列表、扩展团体属性列表、路由策略几种过滤器。下面对各种过滤器逐一进行介绍。
访问控制列表包括针对IPv4报文的ACL和针对IPv6报文的ACL。用户在定义ACL时可以指定IP(v6)地址和子网范围,用于匹配路由信息的目的网段地址或下一跳地址。
ACL的相关内容请参见“ACL和QoS配置指导”中的“ACL”。
地址前缀列表包括IPv4地址前缀列表和IPv6地址前缀列表。
地址前缀列表的作用类似于ACL,但比它更为灵活,且更易于用户理解。使用地址前缀列表过滤路由信息时,其匹配对象为路由信息的目的地址信息域;另外,用户可以指定gateway选项,指明只接收某些路由器发布的路由信息。关于gateway选项的设置请参见“三层技术-IP路由命令参考”中的“RIP”和“OSPF”。
一个地址前缀列表由前缀列表名标识。每个前缀列表可以包含多个表项,每个表项可以独立指定一个网络前缀形式的匹配范围,并用一个索引号来标识,索引号指明了在地址前缀列表中进行匹配检查的顺序。
每个表项之间是“或”的关系,在匹配的过程中,路由器按升序依次检查由索引号标识的各个表项,只要有某一表项满足条件,就意味着通过该地址前缀列表的过滤(不再对下一个表项进行匹配)。
as-path仅用于BGP路由的过滤。BGP的路由信息中,包含有自治系统路径域。as-path就是针对自治系统路径域指定匹配条件。
as-path的相关内容请参见“三层技术-IP路由配置指导”中的“BGP”。
community-list仅用于BGP路由的过滤。BGP的路由信息包中,包含一个community属性域,用来标识一个团体。community-list就是针对团体属性域指定匹配条件。
团体属性列表的相关内容请参见“三层技术-IP路由配置指导”中的“BGP”。
extcommunity-list仅用于BGP路由的过滤。BGP扩展团体属性有两种,一种是用于VPN的RT(Route Target,路由目标)扩展团体,另一种则是SoO(Site of Origin,源站点)扩展团体。扩展团体属性列表就是针对这两种属性指定匹配条件。
扩展团体属性列表的相关内容请参见“MPLS配置指导”中的“MPLS L3VPN”。
RD属性列表是针对RD属性信息的匹配条件,仅用于VPN路由的过滤。每个RD属性列表可以包含多个表项,每一个表项会指定一个RD号的范围,并用一个index-number来标识,index-number指明了在RD属性列表中进行匹配检查的顺序。
路由策略是一种比较复杂的过滤器,它不仅可以匹配路由信息的某些属性,还可以在条件满足时改变路由信息的属性。路由策略可以使用前面几种过滤器定义自己的匹配规则。
一个路由策略可以由多个节点构成,每个节点是匹配检查的一个单元,在匹配过程中,系统按节点序号升序依次检查各个节点。不同节点间是“或”的关系,如果通过了其中一个节点,就意味着通过该路由策略,不再对其他节点进行匹配(配置了continue子句的情况除外)。
每个节点对路由信息的处理方式由匹配模式决定。匹配模式分为permit和deny两种。
· permit:指定节点的匹配模式为允许模式。当路由信息通过该节点的过滤后,将执行该节点的apply子句,不进入下一个节点的匹配(配置了continue子句的情况除外);如果路由信息没有通过该节点过滤,将进入下一个节点继续匹配。
· deny:指定节点的匹配模式为拒绝模式(此模式下apply子句和continue子句不会被执行)。当路由信息通过该节点的过滤后,将被拒绝通过该节点,不进入下一个节点的匹配;如果路由信息没有通过该节点的过滤,将进入下一个节点继续匹配。
每个节点可以由一组if-match、apply和continue子句组成。
· if-match子句:定义匹配规则,匹配对象是路由信息的一些属性。同一节点中不同类型的if-match子句是“与”的关系,相同类型的if-match子句是“或”的关系,只有满足节点内所有类型if-match子句指定的匹配条件,才能通过该节点的匹配。
· apply子句:指定动作,也就是在通过节点的匹配后,对路由信息的一些属性进行设置。
· continue子句:用来配置下一个执行节点。当路由成功匹配当前路由策略节点(必须是permit节点)时,可以指定路由继续匹配同一路由策略内的下一个节点,这样可以组合路由策略各个节点的if-match子句和apply子句,增强路由策略的灵活性。
if-match、apply和continue子句可以根据应用进行设置,都是可选的。
· 如果只过滤路由,不设置路由的属性,则不需要使用apply子句。
· 如果某个permit节点未配置任何if-match子句,则该节点匹配所有的路由。
· 通常在多个deny节点后设置一个不含if-match子句和apply子句的permit节点,用于允许其它的路由通过。
在配置过滤列表之前,需要准备以下数据:
· 前缀列表名称
· 匹配的地址范围
· 扩展团体属性列表序号
如果所有表项都是deny模式,则任何路由都不能通过该过滤列表。这种情况下,需要在多条deny模式的表项后定义一条permit 0.0.0.0 0 less-equal 32表项,允许其它所有IPv4路由信息通过。
IPv4地址前缀列表由列表名标识,每个前缀列表可以包含多个表项。各表项以网络前缀的形式,独立指定一个匹配范围,并使用索引号标识。
在匹配过程中,系统按索引号升序依次检查各个表项,只要路由信息满足一个表项,就认为通过该过滤列表,不再去匹配其他表项。
表1-1 配置IPv4地址前缀列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置IPv4地址前缀列表 |
ip prefix-list prefix-list-name [ index index-number ] { deny | permit } ip-address mask-length [ greater-equal min-mask-length ] [ less-equal max-mask-length ] |
缺省情况下,不存在IPv4地址前缀列表 |
如果所有表项都是deny模式,则任何路由都不能通过该过滤列表。这种情况下,需要在多条deny模式的表项后定义一条permit :: 0 less-equal 128表项,允许其它所有IPv6路由信息通过。
IPv6地址前缀列表由列表名标识,每个前缀列表可以包含多个表项。各表项可以独立指定一个网络前缀形式的匹配范围,并使用索引号标识。
在匹配的过程中,系统按索引号升序依次检查各个表项,只要路由信息满足一个表项,就认为通过该过滤列表,不再去匹配其他表项。
表1-2 配置IPv6地址前缀列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置IPv6地址前缀列表 |
ipv6 prefix-list prefix-list-name [ index index-number ] { deny | permit } ipv6-address { inverse inverse-prefix-length | prefix-length [ greater-equal min-prefix-length ] [ less-equal max-prefix-length ] } |
缺省情况下,不存在IPv6地址前缀列表 |
AS路径是BGP的路由属性之一,记录了某条路由从本地到目的地址所要经过的所有AS号。AS_PATH属性在BGP路由表中的显示格式如图所示:
图1-1 AS_PATH的显示格式
从图中可以得知AS_PATH可以看作是一个由数字0~9、“()”、“[]”、“{}”和空格组成的字符串,各部分表示的含义如下:
· AS_CONFED_SEQUENCE:联盟内子AS号按照一定的顺序排列。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。
· AS_CONFED_SET:联盟内经过的子AS号的简单罗列,没有顺序要求。
· AS_SEQUENCE:AS号按照一定的顺序排列。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。
· AS_SET:AS号只是经过的AS的简单罗列,没有顺序要求。
需要注意的是,BGP路由的AS_PATH属性不一定完整包含上述四个部分,请以实际情况为准。
AS路径过滤列表根据正则表达式来匹配BGP路由中的AS_PATH属性,从而达到过滤路由信息的目的。
表1-3 正则表达式在AS路径过滤列表中的应用举例
特殊字符 |
含义 |
举例 |
^ |
匹配以指定字符开始的行 |
匹配AS_PATH为空的路由(本地路由): ip as-path { as-path-number| as-path-name } { deny | permit } ^$ |
$ |
匹配以指定字符结束的行 |
匹配从AS100始发的路由: ip as-path { as-path-number| as-path-name } { deny | permit } 100$ |
. |
通配符,可代表任何一个字符 |
匹配经过了AS100的路由(非始发或最后一个AS): ip as-path { as-path-number| as-path-name } { deny | permit } ._100_. |
* |
匹配星号前面的字符或字符串零次或多次 |
匹配任意AS_PATH的路由: ip as-path { as-path-number| as-path-name } { deny | permit } .* |
+ |
匹配+前面的字符或字符串一次或多次 |
匹配AS路径中包含“5”的路由: ip as-path { as-path-number| as-path-name } { deny | permit } 5+ |
x|y |
匹配|左边或右边的整个字符串 |
匹配从AS100或AS200始发的路由: ip as-path { as-path-number| as-path-name } { deny | permit } 100$|200$ |
( ) |
表示字符串,一般与“+”或“*”等符号一起使用 |
匹配AS路径中包含“123”的路由: ip as-path { as-path-number| as-path-name } { deny | permit } (123)+ |
[xyz] |
表示字符选择范围,将以选择范围内的单个字符为条件进行匹配,只要字符串里包含该范围的某个字符就能匹配到 |
匹配从单一路径AS10~AS19收到的路由: ip as-path { as-path-number| as-path-name } { deny | permit } ^1[0-9]$ |
[^xyz] |
表示选择范围外的字符,将以单个字符为条件进行匹配,只要字符串里包含该范围外的某个字符就能匹配到 |
匹配始发AS的末位不为“2”或“4”的路由: ip as-path { as-path-number| as-path-name } { deny | permit } [^24]$ |
{n} |
n是一个非负整数,匹配n次 |
匹配AS路径中包含“55”的路由: ip as-path { as-path-number | as-path-name } { deny | permit } 5{2} |
{n,} |
n是一个非负整数,至少匹配n次 |
匹配AS路径中至少包含两个连续“5”的路由: ip as-path { as-path-number | as-path-name } { deny | permit } 5{2,} |
{n,m} |
m和n均为非负整数,其中n小于等于m。只要字符串里包含n到m个某字符就能匹配到 |
匹配AS路径中至少包含一个“5”或两个连续“5”的路由: ip as-path { as-path-number | as-path-name } { deny | permit } 5{1,2} |
[a-z] |
匹配指定字符范围内的任意字符。不可同时匹配多个字符,也不可匹配同一个字符多次 |
匹配AS路径中包含“0”、“1”或“2”的路由: ip as-path { as-path-number | as-path-name } { deny | permit }[0-2] |
[^a-z] |
匹配任何不在指定范围的任意字符。只要字符串里有指定范围外的字符就能匹配到 |
匹配单一AS路径中不包含“0”、“1”和“2”的路由: ip as-path { as-path-number | as-path-name } { deny | permit }^ [^0-2]$ |
_ |
匹配一个符号,如逗号、左大括号、右大括号、左括号、右括号和空格等符号,在表达式的开头或结尾时还可作起始符、结束符(同^,$) |
匹配经过AS101 100的路由: ip as-path { as-path-number | as-path-name } { deny | permit } 101_100_ |
\b |
匹配一个单词边界,也就是指单词和空格间的位置 |
匹配从AS100始发的路由: ip as-path { as-path-number| as-path-name } { deny | permit } \b100$ |
\B |
匹配非单词边界 |
匹配从AS号以1开头的AS收到的路由: ip as-path { as-path-number| as-path-name } { deny | permit } ^1\B |
\ |
转义操作符,\后紧跟本表中罗列的单个特殊字符时,将去除特殊字符的特定含义 |
无 |
\w |
\w等效于[A-Za-z0-9_],是数字、字母或下划线 |
匹配AS路径中包含两位数AS的路由: ip as-path { as-path-number | as-path-name } \w{2} |
\W |
\W等效于[^A-Za-z0-9_],是除了数字、字母和下划线之外的任意字符 |
无 |
\index |
表示重复一次指定字符串,字符串是指\前用()括起来的字符串,index对应\前字符串的顺序号按从左至右的顺序从1开始编号:如果\前面只有一个字符串,则index只能为1;如果\前面有n个字符串,则index可以为1到n中的任意整数 |
匹配AS路径中包含两个连续的“1”的路由: ip as-path { as-path-number | as-path-name } (1)\1 |
匹配相同条件AS路径过滤列表的正则表达式并不唯一,表1-3中的正则表达式仅为示例。
一个AS路径过滤列表可以包含多个表项。在匹配过程中,各表项之间是“或”的关系,即只要路由信息通过该列表中的一条表项,就认为通过该AS路径过滤列表。
表1-4 配置AS路径过滤列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置AS路径过滤列表 |
ip as-path { as-path-number| as-path-name } { deny | permit } regular-expression |
缺省情况下,不存在AS路径过滤列表 |
一个团体属性列表可以定义多个表项。在匹配过程中,各表项之间是“或”的关系,即只要路由信息通过该列表中的一条表项,就认为通过该团体属性列表。
高级团体属性列表根据正则表达式来匹配BGP路由中的团体属性,从而达到过滤路由信息的目的。有关正则表达式的详细介绍,请参见“1.2.3 配置AS路径过滤列表”。
表1-5 配置团体属性列表
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
配置团体属性列表 |
配置基本团体属性列表 |
ip community-list { basic-comm-list-num | basic basic-comm-list-name } { deny | permit } [ community-number&<1-32> | aa:nn&<1-32> ] [ internet | no-advertise | no-export | no-export-subconfed ] * |
二者选其一 缺省情况下,不存在团体属性列表 |
配置高级团体属性列表 |
ip community-list { adv-comm-list-num | advanced adv-comm-list-name } { deny | permit } regular-expression |
一个扩展团体属性列表可以定义多个表项。在匹配过程中,各表项之间是“或”的关系,即只要路由信息通过该列表中的一条表项,就认为通过该扩展团体属性列表。
表1-6 配置扩展团体属性列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置扩展团体属性列表 |
ip extcommunity-list ext-comm-list-number [ index index-number ] { deny | permit } { rt route-target | soo site-of-origin }&<1-32> |
缺省情况下,不存在扩展团体属性列表 |
一个RD属性列表可以定义多个表项。在匹配过程中,路由器按升序依次检查由index-number标识的各个表项,各表项之间是“或”的关系,即只要路由信息通过该列表中的一条表项,就认为通过该RD属性列表。
表1-7 配置RD属性列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置RD属性列表 |
ip rd-list rd-list-number [ index index-number ] { deny | permit } route-distinguisher&<1-10> |
- |
路由策略用来根据路由信息的某些属性过滤路由信息,并改变与路由策略规则匹配的路由信息的属性。匹配条件可以使用前面几种过滤列表。
一个路由策略可由多个节点构成,每个节点又分为:
· if-match子句:定义匹配规则,即路由信息通过当前路由策略所需满足的条件,匹配对象是路由信息的某些属性。
· apply子句:指定动作,也就是在满足由if-match子句指定的过滤条件后所执行的一些配置命令,对路由的某些属性进行修改。
· continue子句:用来配置下一个执行节点,当路由成功匹配当前路由策略节点时,可以指定路由继续匹配同一路由策略内的下一个节点。
在配置路由策略之前,需完成以下任务:
· 配置过滤列表
· 配置路由协议
在配置之前,需要准备以下数据:
· 路由策略的名称、节点序号
· 匹配条件
· 要修改的路由属性值
如果路由策略中定义了一个以上的节点,则各节点中至少应该有一个节点的匹配模式是permit。如果路由策略的所有节点都是deny模式,则没有路由信息能通过该路由策略。
当路由策略用于路由信息过滤时,如果某路由信息没有通过任一节点,则认为该路由信息没有通过该路由策略。
表1-8 创建一个路由策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建路由策略,并进入该路由策略视图 |
route-policy route-policy-name { deny | permit } node node-number |
缺省情况下,不存在路由策略 |
在一个节点中,可以没有if-match子句,也可以有多个if-match子句。当不指定if-match子句时,如果该节点的匹配模式为允许模式,则所有路由信息都会通过该节点的过滤;如果该节点的匹配模式为拒绝模式,则所有路由信息都会被拒绝。
表1-9 配置if-match子句
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入路由策略视图 |
route-policy route-policy-name { deny | permit } node node-number |
- |
|
配置路由的匹配条件 |
配置IPv4的路由信息的匹配条件 |
if-match ip { address | next-hop | route-source } { acl ipv4-acl-number | prefix-list prefix-list-name } |
缺省情况下,未配置IPv4的路由信息的匹配条件 如果if-match子句对应的ACL不存在,则默认满足该匹配条件;如果if-match子句对应的ACL中没有匹配的ACL规则或者ACL规则处于非激活状态,则默认不满足该匹配条件 路由策略使用非VPN的ACL进行路由过滤 |
配置IPv6的路由信息的匹配条件 |
if-match ipv6 { address | next-hop | route-source } { acl ipv6-acl-number | prefix-list prefix-list-name } |
缺省情况下,未配置IPv6的路由信息的匹配条件 如果if-match子句对应的ACL不存在,则默认满足该匹配条件;如果if-match子句对应的ACL中没有匹配的ACL规则或者ACL规则处于非激活状态,则默认不满足该匹配条件 路由策略使用非VPN的ACL进行路由过滤 |
|
配置BGP路由信息的AS路径域的匹配条件 |
if-match as-path { as-path-number&<1-32> | as-path-name } |
缺省情况下,未配置BGP路由信息的AS路径域的匹配条件 |
|
匹配BGP路由信息的团体属性的匹配条件 |
if-match community { { basic-community-list-number | name comm-list-name } [ whole-match ] | adv-community-list-number }&<1-32> |
缺省情况下,未配置BGP路由信息的团体属性的匹配条件 |
|
配置路由信息的路由开销的匹配条件 |
if-match cost cost-value |
缺省情况下,未配置路由信息的路由开销的匹配条件 |
|
配置BGP扩展团体属性的匹配条件 |
if-match extcommunity ext-comm-list-number&<1-32> |
缺省情况下,未配置BGP路由信息的扩展团体属性的匹配条件 |
|
配置路由信息的出接口的匹配条件 |
if-match interface { interface-type interface-number }&<1-16> |
缺省情况下,未配置路由信息的出接口的匹配条件 将路由策略应用到BGP时,BGP协议不支持配置路由信息的出接口的匹配条件 |
|
配置BGP路由信息的本地优先级的匹配条件 |
if-match local-preference preference |
缺省情况下,未配置BGP路由信息的本地优先级的匹配条件 |
|
配置BGP RPKI验证结果的匹配条件 |
If-match rpki { invalid | not-found | valid } |
缺省情况下,未配置BGP路由信息匹配条件 |
|
配置路由信息的类型的匹配条件 |
if-match route-type { external-type1 | external-type1or2 | external-type2 | internal | is-is-level-1 | is-is-level-2 | nssa-external-type1 | nssa-external-type1or2 | nssa-external-type2 } * |
缺省情况下,未配置路由信息的类型的匹配条件 |
|
配置IGP路由信息标记的匹配条件 |
if-match tag tag-value |
缺省情况下,未配置IGP路由信息标记的匹配条件 |
|
配置VPN路由RD(Route Distinguisher,路由标识符)属性的匹配条件 |
if-match rd-list rd-list-number |
缺省情况下,未配置VPN路由RD属性的匹配条件 |
|
配置符合指定前缀长度且前缀最后一位为奇数的IPv6路由匹配条件 |
if-match ipv6 odd-prefix-length prefix-length-number |
缺省情况下,未配置符合指定前缀长度且前缀最后一位为奇数的IPv6路由匹配条件 |
|
配置符合指定前缀长度且前缀最后一位为偶数的IPv6路由匹配条件 |
if-match ipv6 even-prefix-length prefix-length-number |
缺省情况下,未配置符合指定前缀长度且前缀最后一位为偶数的IPv6路由匹配条件 |
· 如果有if-match子句因超过命令行最大长度而出现多条相同类型的if-match子句时,这几条子句之间是“或”的关系,即满足一个匹配条件,就认为匹配该if-match语句,例如出现多条if-match community子句时,各个子句的团体属性之间是“或”的关系,即满足其中一个团体属性,就认为匹配if-match community子句。
· 如果一个节点中if-match子句只指定了IPv6 ACL,没有指定IPv4 ACL,所有的IPv4路由信息都会匹配这个节点。如果一个节点中if-match子句只指定IPv4 ACL,没有指定IPv6 ACL,所有的IPv6路由信息都会匹配这个节点。
IPv4路由策略和IPv6路由策略在配置apply子句时,不同之处在于设置路由信息的下一跳地址的命令不同。
表1-10 配置apply子句
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入路由策略视图 |
route-policy route-policy-name { deny | permit } node node-number |
- |
|
配置BGP路由信息的AS_PATH属性 |
缺省情况下,未配置BGP路由信息的AS_PATH属性 |
||
删除BGP路由信息的团体属性 |
apply comm-list { comm-list-number | comm-list-name } delete |
缺省情况下,没有删除BGP路由信息的团体属性 |
|
配置BGP路由信息的团体属性 |
apply community { none | additive | { community-number&<1-32> | aa:nn&<1-32> | internet | no-advertise | no-export | no-export-subconfed } * [ additive ] } |
缺省情况下,未配置BGP路由信息的团体属性 |
|
配置路由信息的路由开销 |
apply cost [ + | - ] cost-value |
缺省情况下,未配置路由信息的路由开销 |
|
配置路由信息的开销类型 |
apply cost-type { external | inherit-link-cost | internal | type-1 | type-2 } |
缺省情况下,未配置路由开销类型 |
|
配置BGP路由的RT扩展团体属性 |
apply extcommunity { rt route-target }&<1-32> [ additive ] |
缺省情况下,未配置BGP路由的RT扩展团体属性 |
|
配置BGP路由的SoO扩展团体属性 |
apply extcommunity soo site-of-origin&<1-32> [ additive ] |
缺省情况下,未配置BGP路由的SoO扩展团体属性 |
|
配置路由信息的下一跳地址 |
配置IPv4路由信息的下一跳地址 |
apply ip-address next-hop ip-address [ public | vpn-instance vpn-instance-name ] |
缺省情况下,未配置IPv4路由信息的下一跳地址 对于引入的IPv4路由,使用本命令设置下一跳地址无效 |
配置IPv6路由信息的下一跳地址 |
apply ipv6 next-hop ipv6-address |
缺省情况下,未配置IPv6路由信息的下一跳地址 对于引入的IPv6路由,使用本命令设置下一跳地址无效 |
|
配置路由的IP优先级 |
apply ip-precedence { value | clear } |
缺省情况下,未配置路由的IP优先级 |
|
配置引入路由到IS-IS某个级别的区域 |
apply isis { level-1 | level-1-2 | level-2 } |
缺省情况下,未配置引入路由到IS-IS某个级别的区域 |
|
配置BGP路由信息的本地优先级 |
apply local-preference preference |
缺省情况下,未配置BGP路由信息的本地优先级 |
|
配置标签索引值 |
apply label-index |
未配置路由的标签索引值 |
|
配置SID值 |
apply label-value |
未配置SID值 |
|
配置BGP路由信息的ORIGIN属性 |
apply origin { egp as-number | igp | incomplete } |
缺省情况下,未配置BGP路由信息的ORIGIN属性 |
|
配置路由协议的优先级 |
apply preference preference |
缺省情况下,未配置路由协议的优先级 |
|
配置BGP路由信息的首选值 |
apply preferred-value preferred-value |
缺省情况下,未配置BGP路由信息的首选值 |
|
配置路由收敛优先级 |
apply prefix-priority { critical | high | medium } |
缺省情况下,未配置路由收敛优先级 未配置时,路由的收敛优先级为低(Low) |
|
配置路由的QoS本地ID值 |
apply qos-local-id { local-id-value | clear } |
缺省情况下,未配置路由的QoS本地ID值 |
|
配置IGP路由信息的标记 |
apply tag tag-value |
缺省情况下,未配置IGP路由信息的标记 |
|
配置BGP路由的流量索引 |
apply traffic-index { value | clear } |
缺省情况下,未配置BGP路由的流量索引 |
|
配置快速重路由备份 |
apply fast-reroute { backup-interface interface-type interface-number [ backup-nexthop ip-address ] | backup-nexthop ip-address } |
缺省情况下,未配置快速重路由备份 |
|
apply ipv6 fast-reroute { backup-interface interface-type interface-number [ backup-nexthop ipv6-address ] | backup-nexthop ipv6-address } |
表1-11 配置continue子句
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入路由策略视图 |
route-policy route-policy-name { deny | permit } node node-number |
- |
配置下一个执行节点 |
缺省情况下,未配置下一个执行节点 需要注意的是,下一个执行节点序列号必须大于当前节点序列号 |
· 当配置continue子句的多个节点配置相同的apply子句(没有叠加属性)只是子句的值不相同时,以最后一个节点的apply子句为准;如果配置的是有叠加属性的apply子句(命令apply as-path不指定参数replace/命令apply cost指定参数+或-/命令apply community指定参数additive/命令apply extcommunity指定参数additive),属性会全部叠加到路由上。
· 当配置continue子句的多个节点配置apply community子句时,使用命令行apply comm-list delete不能删除前面节点中配置的团体属性。
当路由策略配置内容较多(如节点、if-match子句、apply子句)时,为了防止尚未配置完成的路由策略提前生效导致路由被错误的发布,可配置本功能使得路由策略延迟生效。
路由策略的变化包括:
· 创建路由策略。
· 新增、修改或删除已经存在的路由策略的节点、if-match子句、apply子句等。
· 新增、修改或删除IPv4地址前缀列表、IPv6地址前缀列表、AS路径过滤列表、团体属性列表、扩展团体属性列表、MAC地址列表。
· if-match子句中使用的ACL发生变化。
设置路由策略的生效延迟时间后,当路由策略发生变化时,将触发系统启动定时器,在定时器超时前,路由策略发生的所有变化均不会生效。
表1-12 配置路由策略的生效延迟时间
操作 |
命令 |
说明 |
进入系统试图 |
system-view |
- |
在路由策略变化后控制路由策略的生效延迟时间 |
route-policy-change delay-time { time-value | unlimited } |
缺省情况下,变化后的路由策略立即生效 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后路由策略的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除路由策略的统计信息。
操作 |
命令 |
显示BGP AS路径过滤列表信息 |
display ip as-path [ as-path-number | as-path-name ] |
显示BGP团体属性列表信息 |
display ip community-list [ basic-community-list-number | adv-community-list-number | name comm-list-name ] |
显示BGP扩展团体属性列表信息 |
display ip extcommunity-list [ ext-comm-list-number ] |
显示IPv4地址前缀列表的统计信息 |
display ip prefix-list [ name prefix-list-name ] |
显示RD列表信息 |
display ip rd-list [ rd-list-number ] |
显示IPv6地址前缀列表的统计信息 |
display ipv6 prefix-list [ name prefix-list-name ] |
显示路由策略信息 |
display route-policy [ name route-policy-name ] |
清除BGP AS路径过滤列表统计信息 |
reset ip as-path [ as-path-number | as-path-name ] |
清除IPv4地址前缀列表的统计信息 |
reset ip prefix-list [ prefix-list-name ] |
清除IPv6地址前缀列表的统计信息 |
reset ipv6 prefix-list [ prefix-list-name ] |
· Switch A与Switch B通信,都运行RIP协议。
· 使能Switch A上的RIP协议,配置三条静态路由。
· 设置在引入静态路由时应用路由策略,使三条静态路由部分引入、部分被屏蔽掉——20.1.1.1/32和40.1.1.1/32网段的路由是可见的,30.1.1.1/32网段的路由则被屏蔽。
· 通过在Switch B上查看RIP路由表,验证路由策略是否生效。
图1-2 在RIP中引入静态路由时应用路由策略配置举例
(1) 配置Switch A
# 配置接口vlan-interface 100和vlan-interface 200的IP地址。
<SwitchA> system-view
[SwitchA] interface vlan-interface 100
[SwitchA-vlan-interface100] ip address 10.1.1.1 30
[SwitchA-vlan-interface100] quit
[SwitchA] interface vlan-interface 200
[SwitchA-vlan-interface200] ip address 11.1.1.1 30
[SwitchA-vlan-interface200] quit
# 在接口vlan-interface 100下使能RIP。
[SwitchA] interface vlan-interface 100
[SwitchA-vlan-interface100] rip 1 enable
[SwitchA-vlan-interface100] quit
# 配置三条静态路由,其下一跳为11.1.1.2,保证静态路由为active状态。
[SwitchA] ip route-static 20.1.1.1 32 11.1.1.2
[SwitchA] ip route-static 30.1.1.1 32 11.1.1.2
[SwitchA] ip route-static 40.1.1.1 32 11.1.1.2
# 配置路由策略。
[SwitchA] ip prefix-list a index 10 permit 30.1.1.1 32
[SwitchA] route-policy static2rip deny node 0
[SwitchA-route-policy-static2rip-0] if-match ip address prefix-list a
[SwitchA-route-policy-static2rip-0] quit
[SwitchA] route-policy static2rip permit node 10
[SwitchA-route-policy-static2rip-10] quit
# 启动RIP协议,同时应用路由策略static2rip对引入的静态路由进行过滤。
[SwitchA] rip
[SwitchA-rip-1] import-route static route-policy static2rip
(2) 配置Switch B
# 配置接口vlan-interface 100的IP地址。
<SwitchB> system-view
[SwitchB] interface vlan-interface 100
[SwitchB-vlan-interface100] ip address 10.1.1.2 30
# 启动RIP协议。
[SwitchB] rip
[SwitchB-rip-1] quit
# 在接口下使能RIP。
[SwitchB] interface vlan-interface 100
[SwitchB-vlan-interface100] rip 1 enable
[SwitchB-vlan-interface100] quit
# 查看Switch B的RIP路由表。
<SwitchB>display ip routing-table
Destinations : 14 Routes : 14
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
10.1.1.0/30 Direct 0 0 10.1.1.2 Vlan100
10.1.1.0/32 Direct 0 0 10.1.1.2 Vlan100
10.1.1.2/32 Direct 0 0 127.0.0.1 InLoop0
10.1.1.3/32 Direct 0 0 10.1.1.2 Vlan100
20.0.0.0/8 RIP 100 1 10.1.1.1 Vlan100
40.0.0.0/8 RIP 100 1 10.1.1.1 Vlan100
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0
224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0
255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
· Switch B与Switch A之间通过OSPF协议交换路由信息,与Switch C之间通过IS-IS协议交换路由信息。
· 要求在Switch B上配置路由引入,将IS-IS路由引入到OSPF中去,并同时使用路由策略设置路由的属性。其中,设置172.17.1.0/24的路由的开销为100,设置172.17.2.0/24的路由的Tag属性为20。
图1-3 在OSPF中引入IS-IS路由时应用路由策略配置组网图
(1) 配置各接口的IP地址(略)
(2) 配置IS-IS路由协议
# 配置Switch C。
<SwitchC> system-view
[SwitchC] isis
[SwitchC-isis-1] is-level level-2
[SwitchC-isis-1] network-entity 10.0000.0000.0001.00
[SwitchC-isis-1] quit
[SwitchC] interface vlan-interface 200
[SwitchC-Vlan-interface200] isis enable
[SwitchC-Vlan-interface200] quit
[SwitchC] interface vlan-interface 201
[SwitchC-Vlan-interface201] isis enable
[SwitchC-Vlan-interface201] quit
[SwitchC] interface vlan-interface 202
[SwitchC-Vlan-interface202] isis enable
[SwitchC-Vlan-interface202] quit
[SwitchC] interface vlan-interface 203
[SwitchC-Vlan-interface203] isis enable
[SwitchC-Vlan-interface203] quit
# 配置Switch B。
<SwitchB> system-view
[SwitchB] isis
[SwitchB-isis-1] is-level level-2
[SwitchB-isis-1] network-entity 10.0000.0000.0002.00
[SwitchB-isis-1] quit
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] isis enable
[SwitchB-Vlan-interface200] quit
(3) 配置OSPF路由协议及路由引入
# 配置Switch A,启动OSPF。
<SwitchA> system-view
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] quit
# 配置Switch B,启动OSPF,并引入IS-IS路由。
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] import-route isis 1
[SwitchB-ospf-1] quit
# 查看SwitchA的OSPF路由表,可以看到引入的路由。
[SwitchA] display ospf routing
OSPF Process 1 with Router ID 192.168.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
192.168.1.0/24 1 Stub 192.168.1.1 192.168.1.1 0.0.0.0
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
172.17.1.0/24 1 Type2 1 192.168.1.2 192.168.2.2
172.17.2.0/24 1 Type2 1 192.168.1.2 192.168.2.2
172.17.3.0/24 1 Type2 1 192.168.1.2 192.168.2.2
Total Nets: 4
Intra Area: 1 Inter Area: 0 ASE: 3 NSSA: 0
(4) 配置过滤列表
# 配置编号为2002的基本ACL,允许172.17.2.0/24的路由通过。
[SwitchB] acl basic 2002
[SwitchB-acl-ipv4-basic-2002] rule permit source 172.17.2.0 0.0.0.255
[SwitchB-acl-ipv4-basic-2002] quit
# 配置名为prefix-a的地址前缀列表,允许172.17.1.0/24的路由通过。
[SwitchB] ip prefix-list prefix-a index 10 permit 172.17.1.0 24
(5) 配置路由策略
[SwitchB] route-policy isis2ospf permit node 10
[SwitchB-route-policy-isis2ospf-10] if-match ip address prefix-list prefix-a
[SwitchB-route-policy-isis2ospf-10] apply cost 100
[SwitchB-route-policy-isis2ospf-10] quit
[SwitchB] route-policy isis2ospf permit node 20
[SwitchB-route-policy-isis2ospf-20] if-match ip address acl 2002
[SwitchB-route-policy-isis2ospf-20] apply tag 20
[SwitchB-route-policy-isis2ospf-20] quit
[SwitchB] route-policy isis2ospf permit node 30
[SwitchB-route-policy-isis2ospf-30] quit
(6) 在路由引入时应用路由策略
# 配置Switch B,设置在路由引入时应用路由策略。
[SwitchB] ospf
[SwitchB-ospf-1] import-route isis 1 route-policy isis2ospf
[SwitchB-ospf-1] quit
# 查看Switch A的OSPF路由表,可以看到目的地址为172.17.1.0/24的路由的开销为100,目的地址为172.17.2.0/24的路由的标记域(Tag)为20,而其他外部路由没有变化。
[SwitchA] display ospf routing
OSPF Process 1 with Router ID 192.168.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
192.168.1.0/24 1 Transit 192.168.1.1 192.168.1.1 0.0.0.0
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
172.17.1.0/24 100 Type2 1 192.168.1.2 192.168.2.2
172.17.2.0/24 1 Type2 20 192.168.1.2 192.168.2.2
172.17.3.0/24 1 Type2 1 192.168.1.2 192.168.2.2
Total Nets: 4
Intra Area: 1 Inter Area: 0 ASE: 3 NSSA: 0
· 在Switch A和Switch B上使能RIPng。
· 在Switch A上配置三条静态路由,并设置在引入静态路由时应用路由策略,使三条静态路由部分引入、部分被屏蔽掉——20::/32和40::/32网段的路由是可见的,30::/32网段的路由则被屏蔽。
· 通过在Switch B上查看RIPng路由表,验证路由策略是否生效。
图1-4 在IPv6路由引入中应用路由策略配置组网图
(1) 配置Switch A
# 配置接口Vlan-interface100和Vlan-interface200的IPv6地址。
<SwitchA> system-view
[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
# 配置三条静态路由,其下一跳为11::2,保证静态路由为active状态。
[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] ipv6 prefix-list a index 10 permit 30:: 32
[SwitchA] route-policy static2ripng deny node 0
[SwitchA-route-policy-static2ripng-0] if-match ipv6 address prefix-list a
[SwitchA-route-policy-static2ripng-0] quit
[SwitchA] route-policy static2ripng permit node 10
[SwitchA-route-policy-static2ripng-10] quit
# 启动RIPng协议并引入静态路由。
[SwitchA] ripng
[SwitchA-ripng-1] import-route static route-policy static2ripng
(2) 配置Switch B
# 配置接口Vlan-interface100的IPv6地址。
<SwitchB> system-view
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] ipv6 address 10::2 32
# 启动RIPng协议。
[SwitchB] ripng
[SwitchB-ripng-1] quit
# 在接口下使能RIPng。
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] ripng 1 enable
[SwitchB-Vlan-interface100] quit
# 查看Switch B的RIPng路由表。
[SwitchB] display ripng 1 route
Route Flags: A - Aging, S - Suppressed, G - Garbage-collect, D – Direct
O - Optimal, F - Flush to RIB
----------------------------------------------------------------
Peer FE80::7D58:0:CA03:1 on Vlan-interface 100
Destination 10::/32,
via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 18 secs
Destination 20::/32,
via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 8 secs
Destination 40::/32,
via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 3 secs
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!