目标
   

了解 IP 路由策略的作用和工作原理 理解和掌握路由策略的配置 了解策略路由的作用 理解和掌握策略路由配置
 

   参考资料:
     ZXR10 GAR(V2.6)通用接入路由器用户手册 ZXR10 路由器/交换机命令手册
       
   路由策略和策略路由
     现实中的网络环境十分复杂,比如说网络可能由多个自治系统组成,即使在单个 自治系统中也经常会运行多个 IGP 协议,甚至在一个路由器中也可能运行多个路 由协议。多个自治系统之间或路由器不同路由协议之间在进行路由信息的发布、 交换的时候,由于安全、网络设计等原因,可能需要对发布、接收、引入的路由 信息进行筛选或者对路由信息的属性进行修改。 路由策略就可以满足这样的需求。 策略路由的作用是使用策略来控制数据包的转发。单从作用来看,路由策略和策 略路由是两个完全不同的概念,当然两者还是有一定的关联的。策略路由不是一 种新的路由协议,而是特殊的路由方法。本章中我们将主要以操作示例来帮助读 者理解这两个概念。
     1 路由策略
     1.1 路由策略的作用
     路由策略的作用
   
     路由策略是针对路由信息的策略,是对路由信 息进行控制的一种方法 过滤路由信息的手段 发布路由信息时只发送部分信息 接收路由信息时只接收满足条件的部分信息 设置路由协议引入的路由属性
     路由策略是提供给路由协议实现路由信息过滤的手段。路由协议在与对端路由器 进行路由信息交换时,可能需要只接收或发布一部分满足给定条件的路由信息; 路由协议在引入其它路由协议路由信息时,可能需要只引入一部分满足条件的路由信息,并对所引入的路由信息的某些属性进行设置和修改以使其满足本网的要 求。 路由策略常被称为路由过滤,这是因为路由策略的主要功能是过滤发布和接收的 路由信息。当然路由策略不仅仅起到过滤的作用,还可以灵活地控制路由属性。 如我们常用 route-map 的方法来调整 BGP 的众多属性,以控制路由表信息。
   

1.2 定义路由策略的方法
     定义路由策略的方法
     路由映像(route-map)
     – 根据匹配条件进行设置,主要由match和set语句组成
     访问控制列表(access-list)
     – 用于配置匹配条件
     前缀列表( prefix -list )
     – 作用类似ACL,用于配置匹配条件
     自治系统路径访问列表(as-path access-list )
     – 仅针对BGP协议,用于匹配BGP路由信息的自治系统路径域
     团体属性列表(community-list)
     – 仅针对BGP协议,用于匹配BGP路由信息的自治系统团体域
     ZXR10 的路由策略提供了五种定义路由策略的方法 route-map、access-list、 prefix-list、as-path access-list、community-list。

(1)路由映像(route-map) 路由映象是定义路由策略的方法中功能最强的一种,用于匹配给定路由信息的属 性,并在这些条件匹配后对该路由信息的某些属性进行设置,或者做为过滤路由 信息的方法。route-map 由 match 和 set 语句组成,match 语句用来定义匹配的条 件,匹配对象是路由信息的一些属性,set 语句定义匹配条件后的动作。

(2)访问控制列表(access-list) 访问控制列表是最常用的用于设置匹配条件的方法。 access-list 分为标准访问控制 列表和扩展访问控制列表两种,扩展访问控制列表定义匹配条件更加精确。

(3)前缀列表(prefix-list) 前缀列表 prefix-list 的作用和 access-list 类似。 access-list 的命令采用的是包过滤的 格式,在作为路由信息的判别条件时,可能会使读者难以理解。prefix-list 的匹配 对象为路由信息的目的地址信息域, 因此 prefix-list 作为路由信息的判别条件比较 合乎大多数人的习惯。 acl 和 prefix-list 在作为路由信息的匹配条件时,功能是相同的。读者可以使用两 者的任意一种作为路由信息的匹配条件。

(4)自治系统路径信息访问列表(as-path access-list) 使用 as-path access-list 作为定义路由策略的方法仅适用于 BGP 协议。在定义 as-path access-list 时会使用到用于匹配路由信息的 AS 路径的正则表达式。AS 路 径的正则表达式用来定义匹配 BGP 路由信息的 AS 路径条件,然后再根据满足匹 配条件与否,选择发布或接收相关的路由信息。

(5)团体属性列表(community-list) 团体属性列表 community-list 仅用于 BGP 协议。团体属性列表是一种基于 community 信息的访问列表,其匹配对象是 BGP 路由信息的团体属性域,根据满 足匹配条件与否,选择对该团体的路由信息进行发布、接收或修改属性等操作。 1.1.2.1 路由映象 route-map
     Route-map
     route-map  [permit|deny] [] match 匹配条件 set 动作 – Route-map由一系列的Match子句和Set子句组成 – – – – 序列号小的先执行 匹配AS-path时使用AS-path list 匹配Community时使用Community list 匹配IP address时使用Access list
    
     在 ZXR10 GAR 路由器上,route-map 是在全局配置模式下配置的,其语法如下: route-map  [permit|deny] [] match 匹配条件 set 动作 如果需要删除 route-map 的话,全局配置模式下在 route-map 前加“NO” ,命令如 下:no route-map  [permit|deny] []。 语法中的 Map-tag 表示路由映象的名称, 可以任取。 我们建议取能够标识 route-map 作用的名字,如 lower-pref,这个名字可以帮助我们一目了然的看出 route-map 的 用途。 语法中的 permit 表示路由映像部分的匹配模式为允许模式。当路由项满足路由映 像的某部分的 match 语句时将执行该部分的 set 语句,如不满足该部分的 match 语句,将执行该路由映像的下一个部分的匹配测试。 Deny 表示路由映像部分的匹配模式为拒绝模式, 当路由项满足该部分的 match 语 句被拒绝的条件时,将不再进行下一个部分的匹配测试。 一个 route-map 由若干部分组成,每一个部分都可以由自己的 match 和 set 语句, 每一个部分用 sequence-number 来表示。Route-map 执行时,序列号小的将优先执 行。如: route-map test permit 2 match ×××× set ×××× route-map test permit 3 match ×××× set ×××× 该示例中,route-map 由 2 个部分组成,sequence-number 为 2 的部分将优先执行。 Route-map 由一系列 Match 语句和 set 语句组成,match 用于定义匹配的条件,set 用于指定满足 match 匹配的条件后的动作――控制发布或接收的路由,修改路由 属性。 Route-map 常用的 match 语句如下: //sequence-number 为 3 //sequence-number 为 2
   
     命令 match ip address |prefix-list< prefix-list name> match metric <metric-value> match tag <tag-value> match as-path
    用途 用于匹配 ip address
     用于匹配 metric 用于匹配路由标志值 用于匹配 BGP 协议的 AS 路径字段
     match community-list <community-list-number>
     用于匹配 BGP 协议的团 体字段
     match
     route-type
     {<route-type>
     |
     external
     用于匹配路由类型
     [<external-type>]} Route-map 常用的 set 语句如下: 命令 set as-path prepend  用途 修改 BGP 路由自治系统 路径 set community { no-advertise|no-export|no-export-subconfed} set dampening <half-life> <reuse>  设置 BGP COMMUNITY 属性 设置 BGP 路由阻尼参数
     <max-suppress-time> set local-preference <value> 为自治系统路径指定优先 权值 set metric [+|-]<metric-value> 设置路由选择协议的尺度 值 set metric-type { internal | external | type-1 | type-2 } 设置路由选择协议的尺度
    
     类型 set origin {igp|egp|incomplete} set tag <tag-value> 设置 BGP 的 origin 设置目的路由选择协议的 标记值

 

1.3 访问控制列表 access-list
     访问控制列表ACL
     最常用的用于设置匹配条件的方法
     – 标准ACL,只能以源地址作为过滤条件 access-list  {deny|permit}  [] – 扩展ACL,可以源和目的地址、源和目的端口、协 议类型作为精确的过滤条件 access-list  {permit | deny} 
    [source ] <destination> <destination-wildcard> [destination  ]
     访问控制列表是最常用的用于设置匹配条件的方法。访问控制列表 access-list 分 为标准访问控制列表和扩展访问控制列表两种。 标准访问控制列表的语法如下: access-list  {deny|permit}  [] 扩展访问控制列表的语法如下: access-list  {permit | deny}
    [source ] <destination> <destination-wildcard> [destination ]

       标准访问控制列表只能以源 IP 作为匹配要素, 而扩展访问控制 列表可以以协议类型、源 IP、目的 IP、源端口、目的端口作为匹配要素,所以扩 展访问控制列表作为匹配条件时更加精确。
 
     作为路由策略的匹配方法,访问控制列表往往不单独使用。我们通常使用访问控 制列表作为 route-map 中 match 语句的匹配条件。如下配置:

access-list 10 permit 130.81.103.0 0.0.0.255 route-map source-ip permit 10 match ip address 10 //满足 ACL10 定义的条件的网段的 metric 设置为 100。 set metric 100 该配置中就是以 ACL 作为 route-map 的匹配条件。

1.4 前缀列表 prefix-list
     前缀列表设置匹配条件的方法与access-list类似
 

   – ip prefix-list prefix-list name [] {permit | deny} network length [ ge
     greater-equal | le less-equal ] – length < ge-value &lt; le-value≤32

     在作为路由信息的判别条件时,前缀列表 prefix-list 的作用和 access-list 的作用是 类似的。由于 access-list 的命令采用的是包过滤的格式,而 prefix-list 的匹配对象 为路由信息的目的地址信息域, 因此大多数人习惯使用 prefix-list 作为路由信息的 判别条件。 在 ZXR10 GAR 路由器上,prefix-list 是在全局配置模式下配置的,其语法如下:

ip prefix-list prefix-list name [] {permit | deny} network length [ ge greater-equal | le less-equal ]
   
     如果需要删除 prefix-list 的话,全局配置模式下在 prefix-list 前加“NO” ,命令如 下:no ip prefix-list prefix-list name。 语法中的 prefix-list name 表示前缀列表的名称,可以任取。一个 prefix-list 可以分 为几个部分,由 sequence-number 确定这几个部分的匹配顺序,sequence-number 值小的部分优先测试。 Permit 表示所定义的地址前缀列表部分的匹配模式为允许模式。如果匹配模式为 允许模式并且待过滤的 IP 地址在该部分指定的前缀范围内时, 则通过该部分的过 滤,如待过滤的 IP 地址不在该部分指定的前缀范围内,则进行下一部分测试。 Deny 表示所定义的地址前缀列表部分的匹配模式为拒绝模式。 如果匹配模式为拒 绝模式并且待过滤的 IP 地址在该部分指定的前缀范围内时, 则无法通过该部分的 过滤,并且不会进行下一个部分的测试。 network length 表示指定 IP 地址前缀范围(网络地址/掩码长度) 。 Ge、le 表示指定匹配的地址前缀范围[ge,le ]。Ge 表示大于,le 表示小于,取值 范围为 length &lt; ge &lt; le &lt;= 32。 地址前缀范围有两部分,分别由 length 与 ge、le 来确定。若两部分前缀范围都被 指定,则待过滤的 IP 必须同时匹配这两部分的前缀范围。 例如: zxr10(config)# ip prefix-list test permit 10.1.1.0 10 ge 15 le 16 该条地址前缀列表表示,对待过滤 IP 地址的 1~10 位和 15~16 位与指定的 IP 网 段 10.1.1.0 的 1~10 位和 15~16 位进行匹配。 作为路由策略的匹配方法,前缀列表往往不单独使用。我们通常使用前缀列表作 为 route-map 中 match 语句的匹配条件。如下配置: ip prefix-list test permit 130.81.103.0 24 route-map source-ip permit 10 match ip address prefix-list test //满足 prefix-list test 定义的条件的网 段的 metric 设置为 100。 set metric 100
   

1.5自治系统路径信息访问列表 as-path access-list
     自治系统路径信息访问列表
     定义AS路径的表达式
     – AS路径记录了BGP路由信息经过的AS系统 – ip as-path access-list  {permit|deny}
     使用 as-path access-list 作为定义路由策略的方法仅适用于 BGP 协议。 路由信息中, 包含自治系统路径字段。在 BGP 协议路由信息交互时候,路由信息经过的自治系 统路径会记录在此字段中。假设 200.126.0.0/16 是由 AS100 始发的路由,AS500 通过 AS200 学习到此路由,那么在 AS500 中看到的这段路由的 AS 路径应该是 (200, 100)(200, 。 100) 就表明学习到的路由信息先后经过了 AS100 和 AS200。 在定义 as-path access-list 时会使用到用于匹配路由信息的 AS 路径的正则表达式。 AS 路径的正则表达式用来定义匹配 BGP 路由信息的 AS 路径条件。AS 正则表达 式常用的字符如下: 字符 含义
     输入字符串的结束 任意单字符 字符串的开始和结束 输入字符串的开始
     $ . _ ^
     使用这些常用的 AS 正则表达式的字符,可以灵活的表示 AS 路径信息
     ^$表示不经过任何 AS 的路径; ^100$表示源于 AS100 而且没有经过任何其他 AS 的路径; _100$表示所有源自 AS100 始发的路径; _100_表示经过 AS100 的路径; ^100_表示最后经过 AS100 的路由 作为路由策略的匹配方法,as-path access-list 往往不单独使用。我们通常使用 as-path access-list 作为 route-map 中 match 语句的匹配条件。如下配置: route-map test permit 3 match as-path 10 set+动作 ip as-path access-list 10 permit ^$ community-list //as-path access-list10 为允许从自己开始到 自 己 结 束 的 AS 路 径 团 体 属 性 列 表
     团体属性列表
     定义团体属性列表的表达式
     – ip community-list &lt;community-list-number> {permit|deny} <community-number>
     与route-map的配合使用的示例
     – route-map test permit 3 match community-list 1 set +动作 ip community-list 1 deny 5 ip community-list 1 permit any community-list 1表示团体5的路由之外,允许其它所 有路由
     团体属性列表 community-list 仅用于 BGP 协议。BGP 协议的路由信息包中,包含 一个 community 属性字段。这里的团体,实际上是一种根据路由信息包发往的目 的地址将其分组的方法,分组以后再对整组的路由信息作出相应的处理。
     团体属性列表是一种基于 community 信息的访问列表, 其匹配对象是 BGP 路由信 息的团体属性域。通常团体属性列表只是作为一种匹配条件,不单独使用。如上 面的例子中,团体属性列表作为 route-map 的匹配条件,根据满足匹配条件与否, 选择相应的动作。
   

1.6常见的路由策略应用
     常见的路由策略应用
     有选择的接收路由信息
     – RIP和BGP对邻居发布的路由直接进行选择 – 链路状态协议无法直接对LSA选择,只能在选择是 否导入路由表
     有选择的发布路由信息
     – neighbor 100.100.100.1 route-map test out route-map test permit 3 match ip address 10 access-list 10 permit 200.1.1.0 0.0.0.255
     设置引入路由的属性
     – redistribute
    [metric <value>] [ routemap <routemap-name>]
     使用路由策略无非是为了达到以下目的: 1 有选择的接收路由信息 选择接收路由信息的时候,针对距离矢量路由协议和链路状态路由协议是不一样 的。象 RIP 和 BGP 之类的距离矢量路由协议对邻居发布的路由信息直接筛选, OSPF 等链路状态协议不能控制导入的 LSA,只能控制是否导入路由表。 2 有选择的发布路由信息 由于安全或者网络设计的原因,需要控制发布的路由信息。上面的例子中,以访 问控制列表作为匹配条件, 只允许把 200.1.1.0/24 的路由信息发布出去。 思考一下, 运营商或用户可能由于地址匮乏的原因,会使用私网地址作为设备的互联地址。 为了防止在对外发布路由的时候把私网路由发布出去,我们是不是可以应用路由 策略的方法过滤私网路由,而只发布公网路由呢

1.7设置引入路由的属性
     使用路由策略,可以批量的把一种路由协议的路由引入到另外的路由协议中,而 且在引入外部路由的时候,还可以重新设置路由的属性。这种方式可以灵活的控 制转发路径。

1.8 路由策略的应用实例一
     路由策略应用示例(一)
     AS100
     10.1.1.1/30 10.1.1.2/30
     AS200
     A
     Lo1:20.1.1.1/32 Lo2:30.1.1.1/32
     B
     B路由器对A路由器发布的路由进行选择,只接收 20.1.1.1/32网段的路由,屏蔽30.1.1.1/32网段的路由
    上面的组网结构中,Router-A 和 Router-B 运行 EBGP,Router-A 的 AS 号为 100, Router-B 的 AS 号为 200。Router-B 需要对 Router-A 发布的路由进行筛选,只接 收 Router-A 发布的 20.1.1.1/32 网段路由。 以下是 Router B 的关键配置:

router bgp 200 neighbor 10.1.1.1 remote-as 100 neighbor 10.1.1.1    // 配置 BGP 协议

route-map test in route-map test permit 3 match       // 配置 route-map
ip address 10 access-list 10 permit 20.1.1.1 0.0.0.0     //只接收 route-map test 定义的路由 
     
1.9路由策略的应用实例二
     路由策略应用示例(二)
     Lo0:30.1.1.1/32
     10.1.1.1/30
     AS100 A
     20.1.1.1/30
     10.1.1.2/30
     20.1.1.2/30
     B AS200
     B路由器可以从两个方向学习到路由30.1.1.1/32, 通过路由策略优先使用从10.1.1.2学习到的路由。
      上面的组网结构中,Router-A 和 Router-B 运行 EBGP,Router-A 的 AS 号为 100, Router-B 的 AS 号为 200。Router-B 和 Router-A 存在两条链路,Router-B 可以从 两个方向学到路由 30.1.1.1/32。 Router-B 通过路由策略优先使用从 10.1.1.2 学习到 的路由,当 10.1.1.2 的链路中断时,可以切换到 20.1.1.2 的链路,不至于导致全网 中断。 以下是 Router B 的关键配置: router bgp 200 neighbor 10.1.1.1 remote-as 100 neighbor 10.1.1.1 route-map higher-pref in neighbor 20.1.1.1 remote-as 100 neighbor 20.1.1.1 route-map lower-pref in route-map higher-pref permit 10 set local preference 200 route-map lower-pref permit 10 set local preference 100 路由策略的应用实例三 //配置 route-map //配置 BGP 协议

     路由策略应用示例(三)
     Lo1:20.1.1.1/32 Lo2:30.1.1.1/32
     AREA0 A
     40.1.1.1/30 40.1.1.2/30
     B
     A路由器引入直连路由20.1.1.1/32和30.1.1.1/32, B路由器通过策略过滤30.1.1.1/32网段。
      上面的组网结构中,Router-A 和 Router-B 运行 OSPF,两台路由器都在 OSPF 的 area0 中。 Router-A 的 loopback1 的地址 20.1.1.1/32, loopback2 的地址 30.1.1.1/32。 Router-A 引入直连路由 20.1.1.1/32 和 30.1.1.1/32,在 Router-B 上使用路由策略来 过滤 30.1.1.1/32 网段。 以下是 Router B 的关键配置: router ospf 200 //配置 OSPF 协议
     network 40.1.1.0 0.0.0.3 area 0 filter 30.1.1.1 255.255.255.255 注意:RIP 和 BGP 之类的距离矢量路由协议对邻居发布的路由信息直接筛选, OSPF 等链路状态协议不能控制导入的 LSA,只能控制是否导入路由表。 所以上面的例子中,在 route-B 的 LSA 中是可以看见 20.1.1.1/32 和 30.1.1.1/32 相 关的链路状态信息的。route-B 上启用了 filter 命令后,将禁止 20.1.1.1/32 导入路 由表。
    
     2 .1策略路由
     策略路由的作用
     普通的路由方式:按照路由表进行路径选择 策略路由方式:根据策略进行路径选择,不走寻常路 路由策略:对路由信息进行控制的一种方法
     普通的路由、策略路由和路由策略这些概念很容易混淆,我们对三个概念进行对 比,不难看出他们的差别。 路由器最常用的工作方式就是按照路由表的内容进行路径的选择,我们称之为普 通的路由转发方式。 策略路由方式和普通的路由转发有明显的差别,他可以忽视路由表的内容,按照 网管人员定义的策略进行路径的选择。 路由策略是一种控制路由信息的方法,如过滤发布和接收的路由,或者修改发布 和接收路由信息的某些属性。当然,控制了路由信息的内容,也就决定了包的转 发路径,除非使用了策略路由的方式。
     
     2.2策略路由的语法规则
     策略路由的语法规则
     route-map  [permit|deny] [] match 匹配条件 set 动作 ? 在接口上应用 interface ×× ip policy route-map ××
      策略路由的配置分为两大部分:定义策略和在接口上应用策略。 定义策略的方法只有 route-map 一种,而定义路由策略可以有四种方法。 策略路由的 route-map 和路由策略的 route-map 在语法上没有区别,都有 match 匹 配条件和 set 动作。但是策略路由 route-map 中的 match 匹配条件只有访问控制列 表的方式, 动作只有强制指定下一跳 IP 和下一跳接口两种。 set 路由策略 route-map 中匹配条件有很多种,set 后面都是针对路由信息属性相关的动作。路由策略中 route-map 的 match 和 set 语句的具体命令,请参见上文中的路由映象 route-map 一节。 定义策略只是完成了策略路由的一步,只有在接口上应用了定义的策略,策略路 由才能真正生效。

     2.3 策略路由典型应用
     策略路由示例
     ISP1 ISP1 ISP2 ISP2
     212.0.1.1/30
     A Fei_1/1
     200.30.10.1/30
     202.102.11.0/24
     B
     222.1.0.0/24
     A路由器连接两个ISP,其中202.102.11.0/24是ISP1分配的地址 222.1.0.0/24是ISP2分配的地址;ISP1与A路由器互联的地址是 212.0.1.1,ISP2与A路由器互联的地址是200.30.10.1。
      上面的组网结构中,Router-A 和 Router-B 运行 OSPF,两台路由器都在 OSPF 的 area0 中。Router-A 为网络的出口,连接着两个 ISP。其中 202.102.11.0/24 是 ISP1 分配的地址,222.1.0.0/24 是 ISP2 分配的地址。现要求使用 202.102.11.0/24 网段 的下一跳为 ISP1,使用 222.1.0.0/24 网段的下一跳为 ISP2。这种特殊的需求,只 能使用策略路由才能实现。 Router-A 的关键配置如下: interface fei_1/1 ip address 61.132.77.106 255.255.255.252 //在 fei_1/1 接口上应用定义的策略 ip policy route-map test access-list 101 permit ip 202.102.11.0 0.0.0.255 access-list 102 permit ip 222.1.0.0 0.0.0.255 route-map test permit 5 //满足访问控制列表定义的 101,下一条指向 ISP1 的 IPmatchip address 101 any any  set ip next-hop 212.0.1.1 route-map gw permit 10 //满足访问控制列表定义的 102,下一条指向 ISP2 的 IP match ip address 102 set ip next-hop 200.30.10.1 Router-A 或者采用如下配置,也能达到同样的效果 interface fei_1/1 ip address 61.132.77.106 255.255.255.252 //在 fei_1/1 接口上应用定义的策略 ip policy route-map test access-list 101 permit ip 202.102.11.0 0.0.0.255 access-list 102 permit ip 222.1.0.0 0.0.0.255 route-map test permit 5 //满足访问控制列表定义的 101,下一条指向 ISP1 的接口 match ip address 101 set interface fei_1/2 route-map gw permit 10 //满足访问控制列表定义的 102,下一条指向 ISP2 的接口 match ip address 102 set interface fei_1/3 小结 any any

 总结
     路由策略的作用以及定义路由策略的方法 ? 运用路由策略控制路由的接收、发布、引入 ? 策略路由的作用和实际应用
      通过本章的学习,我们了解了策略路由和路由策略的相关原理和作用。路由策略 是针对路由的一种控制方法,可以灵活的控制路由的接收、发布和引入。策略路 由是一种路由方法,他可以无视路由的存在,按照网管的意愿进行路径转发。