路由技术 -- 路由策略(Routing Policy)与策略路由(PBR,Policy-based Routing)技术

目录

路由策略的实现

路由策略定义

作用于路由,路由过滤和设置路由属性

通过改变路由属性(包括可达性)来改变网络流量所经过的路径

路由策略功能

控制路由的发布

控制路由的接收

过滤和控制引入的路由

设置特定路由的属性

路由策略价值

控制设备的路由表规模,节约系统资源

控制路由的接收和发送,提高网络安全性

修改路由属性,对网络数据流量进行合理规划,提高网络性能

路由策略实现步骤

定义规则

实施规则

路由策略使用限制

过滤器

Prefix Lists前缀列表

作用:专业抓取路由工具,不涉及数据层面。匹配路由的掩码、掩码范围。

匹配依据

掩码长度

掩码长度范围

地址前缀匹配规则:顺序匹配、唯一匹配、默认拒绝

通配掩码匹配路由原则

ip prefix-list配置举例

route-map

route-map类似于脚本语言。默认动作是拒绝所有 需要有一条放行所有

Route-Policy的组成

Route-Policy由节点号(node)

匹配模式(mode)

Route-Policy子句

Route-Policy的匹配结果

节点的匹配模式(permit或deny)

if-match子句(如引用的地址前缀列表或者访问控制列表)中包含的匹配条件(permit或deny)

route-map配置

定义

匹配

动作

match匹配规则

set动作

Route-Policy的注意事项

BGP路由策略

BGP路由策略 - route-policy路由过滤

BGP可匹配的属性

BGP可设置的属性

BGP路由策略-正则表达式 Regular expression

字符匹配公式

as-path-filter(隐含拒绝)

BGP路由策略 - Community属性

基于Community属性匹配路由进行路由策略(过滤、设置属性)

BGP路由策略 - ip-prefix路由过滤

使用ip-prefix匹配拒绝路由,在BGP视图下进行策略引用

BGP路由策略 - filter-policy路由过滤

调用ACL (peer指定邻居生效)

调用前缀列表 (全局生效)

针对重分发类型过滤 例:直连路由重分发同时进行过滤

BGP路由策略 - Outbound Route Filtering (ORF)BGP出站路由过滤

ORF前提条件

distribute-list(分发列表)

作用:过滤路由,控制接受、拒绝哪些路由条目,即控制层面的控制

配置逻辑:使用ACL抓取,使用分发列表调用ACL

分发列表支持过滤方向

特殊场景

Policy-Based Routing(PBR)策略路由

匹配策略 match

基于源IP(结合ACL)

基于源接口

匹配tag

匹配数据报文长度

PBR动作

PBR调用

PBR debug

Offset-list 偏移列表

仅支持 EIGRP和RIP,累加进入或者发出的metric值

Metric 值

路由出站开销决定了这条路由的Metric大小

RIP:hop条数

EIGRP:FD 可行性距离

OSPF:COST开销

管理距离

华为

BGP

思科

环回口/本地接口 0

OSPF

BGP

不可达/不可用 255

通过数据流控制数据走向

路由匹配原则

最长掩码匹配原则

AD值

Metric

重分发

将某路由协议的路由表引入到另一个协议的数据库中

注意

BGP 到 OSPF

OSPF重分布

EIGRP重分布

修改某路由的AD

Seed Metric种子度量值--初始度量值

RIP和EIGRP重分布入时不带seed metric,路由不加表

RIP、eigrp需要指定度量

passive-interface

协议分类

用途

ACL(Access Control List)

使用ACL匹配路由时不要使用反掩码

使用对象

过滤流量,默认解决

匹配感兴趣流

ACL用途

ACL类型

基于接口的ACL(Interface-based ACL)

基本ACL(Basic ACL)

高级ACL(Advanced ACL)

匹配规则

根据报文的入接口、源或目的地址、协议类型、源或目的端口号等属性

filter-Policy

链路状态协议中,filter-policy import命令用于过滤从协议路由表加入本地核心路由表的路由

路由协议下的filter-Policy策略过滤路由

ACL规则的动作是permit时,则该路由被系统接收或发布

路由不被系统接收或发布

路由过滤可分为黑名单和白名单方式


路由策略的实现

路由策略定义

作用于路由,路由过滤和设置路由属性

通过改变路由属性(包括可达性)来改变网络流量所经过的路径

路由策略功能

控制路由的发布

  • 只发布满足条件的路由信息

控制路由的接收

  • 只接收必要、合法的路由信息,以控制路由表的容量,提高网络的安全性

过滤和控制引入的路由

  • 过滤:引入其它协议路由时,只引入满足条件的路由信息
  • 控制:引入路由同时设置路由属性,使其满足要求

设置特定路由的属性

  • 修改通过路由策略过滤的路由的属性,满足自身需要

路由策略价值

控制设备的路由表规模,节约系统资源

控制路由的接收和发送,提高网络安全性

修改路由属性,对网络数据流量进行合理规划,提高网络性能

路由策略实现步骤

定义规则

  • 定义将要实施路由策略的路由信息的特征,即定义匹配规则
  • 用路由信息中属性作为匹配依据,如目的地址、发布路由的设备IP

实施规则

  • 将匹配规则应用于路由发布、接收和引入等过程

路由策略使用限制

node过多会引起过策略业务处理性能较慢,影响客户体验

route-policy和过滤器定义了一个以上的节点,则各节点中至少应该有一个节点的匹配模式是permit,否则会导致所有路由被deny掉

应用路由策略时,需先配置路由策略,再应用,不允许引用不存在的路由策略

过滤器

通过过滤器,定义一组匹配规则

除了Route-Policy,其它只能对路由进行过滤,不能修改过滤路由属性

常见过滤器

  • VPN :RD属性过滤器(Route Distinguisher-Filter)

• RD属性

  • BGP专用过滤器

• AS路径过滤器(AS-Path-Filter)

• AS路径属性

• 团体属性过滤器(Community-Filter)

• 团体属性

• 扩展团体属性过滤器(Large-Community-Filter)

• Large-community属性

• BGP协议专用路由策略调用关系

• 应用到BGP的peer对等体上

• 绑定Route-Policy,可以应用到BGP network分发路由,peer对等体和dampening震荡功能,且同时修改过滤路由属性

  • 动态路由协议

• 访问控制列表(ACL)

• 入接口、源或目的地址、协议类型、源或目的端口号

• 地址前缀列表(IP-Prefix List)

• 源地址、目的地址、下一跳

• Route-Policy

• 目的地址、下一跳、度量值、接口信息、路由类型、ACL、地址前缀列表、AS路径过滤器、团体属性过滤器、MAC地址列表和RD属性过滤器等

• Route-Policy

• 所有路由协议都可以直接使用ACL访问控制列表和IP-Prefix List地址前缀列表对路由进行过滤

• filter-policy调用规则分散在各路由协议分册中,其详细调用过程可参考各路由协议分册

Prefix Lists前缀列表

作用:专业抓取路由工具,不涉及数据层面。匹配路由的掩码、掩码范围。

匹配依据

掩码长度

  • 由IP地址和掩码长度共同定义

掩码长度范围

  • 精确匹配或一定范围掩码匹配的,前缀相同掩码不同的路由

地址前缀匹配规则:顺序匹配、唯一匹配、默认拒绝

前缀列表可以创建多个索引,每个索引对应一条过滤规则。按索引号从小到大顺序匹配

匹配到一条语句,则停止匹配

默认所有未与任何一个表项匹配的路由都视为未通过地址前缀列表的过滤,末尾隐含“deny all”,建议创建一条允许所有其他路由通过

  • 范围

• 不配greater-equal 和less-equal,精确匹配

• 同时配greater-equal 和less-equal,则匹配掩码范围

• 只配greater-equal,则匹配掩码长度范围为[greater-equal-value,32]

• 只配less-equal,则匹配掩码长度范围为[mask-length,less-equal-value]

  • 全0为通配地址。当前缀为全0时,可以在其后指定掩码长度以及掩码长度范围。

• 指定掩码长度,则具有该长度所有路由都被允许通过(Permit)或拒绝通过(Deny)

• 指定掩码长度范围,则表示掩码长度范围内所有路由都被允许通过(Permit)或拒绝通过(Deny)

通配掩码匹配路由原则

不包含greater-equal和less-equal

  • 只匹配缺省路由

  • 匹配码长度为X的所有路由

包含greater-equal参数,不包含less-equal参数

  • 匹配原则:掩码长度为16~32的路由被permit

  • 匹配原则:掩码长度为20~32的路由被permit

不包含greater-equal参数,包含less-equal

  • 匹配码长度为0~less-equal的所有路由

  • 匹配码长度为X~less-equal的所有路由

包含greater-equal参数和less-equal

  • 匹配原则:掩码长度为5~30的路由被permit

  • 匹配原则:掩码长度为20~30的路由被permit

ip prefix-list配置举例

ip prefix-list CCNP permit 0.0.0.0/0:只允许默认路由

ip prefix-list CCNP permit 0.0.0.0/0 le 32: 允许所有路由ip prefix-list CCNP permit 0.0.0.0 0 less-equal 32

  • 相当于访问列表中的“permit any”
  • 前缀0.0.0.0/0表示没有前缀位必须匹配
  • “Le 32” 表示子网掩码必须小于或等于32。
  • 该语句将匹配任何网络
  • 如果定义了一个以上的前缀列表表项,则至少应该有一个表项的匹配模式为permit模式

ip prefix-list CCNP permit 0.0.0.0/0 ge 32: 只允许主机路由

  • 前缀0.0.0.0/0表示没有前缀位必须匹配
  • “Ge 32” 表示子网掩码必须为32bit。
  • 该语句只匹配主机路由

ip prefix-list CCNP permit 10.0.0.0/8 ge 24 le 24

  • 允许其第一个8位等于10的任何路由,子网掩码长度为24位

ip prefix-list 1 deny 11.11.11.0/24 不匹配所有,没用的条目

route-map

route-map类似于脚本语言。默认动作是拒绝所有 需要有一条放行所有

Route-Policy的组成

Route-Policy由节点号(node)

  • 顺序匹配

• 从小到大的顺序依次检查各个表项,因此在指定节点号时,要注意符合期望的匹配顺序

  • 唯一匹配

• 节点之间“或”关系,只一个节点命中就认为通过该过滤器,不再进行其它节点的匹配

匹配模式(mode)

  • permit

• 路由通过该节点过滤后执行该节点apply子句,不进入下个节点

• 如果路由项没有通过该节点过滤,将进入下一个节点继续匹配

  • deny

• apply子句不会被执行。当路由满足该节点所有if-match子句,将被拒绝通过该节点,不进入下一个节点

• 如果路由项不满足该节点的if-match子句,将进入下一个节点继续匹配

  • 多个deny节点后设置一个不含if-match子句和apply子句的permit模式的Route-Policy,以允许其它路由通过

Route-Policy子句

  • If-match子句

• 匹配对象是路由信息的某些属性

• If-match子句匹配条件

• permit节点没有任何if-match子句,则匹配所有IPv4和IPv6路由

• permit节点只配置IPv4 if-match子句,则只会匹配if-match子句的IPv4路由,同时匹配所有IPv6路由

• permit节点只配置IPv6 if-match子句,则只会匹配if-match子句的IPv6路由,同时匹配所有IPv4路由

• 不推荐使用同一个路由策略同时过滤IPv4路由和IPv6路由

• 同route-policy,有些节点匹配IPv4路由,有些节点匹配IPv6路由

• route-policy中只匹配了IPv4路由,但是该route-policy被IPv6协议引用

• route-policy中只匹配了IPv6路由,但是该route-policy被IPv4协议引用

  • Apply子句

• 执行配置命令,对路由属性修改

  • goto next-node子句

• 当前节点匹配后,跳转到指定节点继续匹配

Route-Policy的匹配结果

节点的匹配模式(permit或deny)

if-match子句(如引用的地址前缀列表或者访问控制列表)中包含的匹配条件(permit或deny)

route-map配置

定义

  • route-map dzh permit 10
  • route-map dzh permit 20  //放行所有,不配match和set即可

匹配

  • match ip address prefix-list 1

动作

  • set metric type-1

match匹配规则

match的同一行是或关系(同一个match调用多个ACL),match的上下行是与关系

匹配可以使用前缀列表也可以使用ACL

set动作

Route-Policy的注意事项

默认所有未匹配的路由将被拒绝通过Route-Policy

如果Route-Policy中定义了一个以上的节点,应保证各节点中至少有一个节点的匹配模式是permit

如果某路由信息没有通过任一节点,则认为该路由信息没有通过该Route-Policy

如果Route-Policy的所有节点都是deny模式,则没有路由信息能通过该Route-Policy

BGP路由策略

BGP路由策略 - route-policy路由过滤

BGP可匹配的属性

BGP可设置的属性

  • 设置community属性

  • 针对peer进行过滤

  • 设置AS_PATH属性

BGP路由策略-正则表达式 Regular expression

字符匹配公式

  • 常规字符
  • 控制字符(或有特殊意义的元字符)

• 原子字符

• 位于常规字符之前或之后用来限制或扩充常规字符的控制字符或占位符

• 乘号字符

• 跟在原子字符或常规字符之后,用来描述它前面的字符的重复方式

• 范围字符

• 限定了一个范围

  • 常见的正则表达式

• 验证数字:^[0-9]*$

• 验证n位的数字:^\d{n}$

• 验证至少n位数字:^\d{n,}$

• 验证m-n位的数字:^\d{m,n}$

• 验证零和非零开头的数字:^(0|[1-9][0-9]*)$

• 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$

• 验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$

• 验证非零的正整数:^\+?[1-9][0-9]*$

• 验证非零的负整数:^\-[1-9][0-9]*$

• 验证非负整数(正整数 + 0)  ^\d+$

• 验证非正整数(负整数 + 0)  ^((-\d+)|(0+))$

• 验证长度为3的字符:^.{3}$

• 验证由26个英文字母组成的字符串:^[A-Za-z]+$

• 验证由26个大写英文字母组成的字符串:^[A-Z]+$

• 验证由26个小写英文字母组成的字符串:^[a-z]+$

• 验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$

• 验证由数字、26个英文字母或者下划线组成的字符串:^\w+$

• 验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。

• 验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+

• 验证汉字:^[\u4e00-\u9fa5],{0,}$

• 验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

• 验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$

• 验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。

• 验证身份证号(15位或18位数字):^\d{15}|\d{}18$

• 验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”

• 验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$    正确格式为:01、09和1、31。

• 整数:^-?\d+$

• 非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$

• 正浮点数   ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

• 非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$

• 负浮点数  ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

• 浮点数  ^(-?\d+)(\.\d+)?

as-path-filter(隐含拒绝)

  • 使用正则表达式匹配AS_PATH

• ip as-path-filter 1 permit 443

• permit允许匹配路由,deny拒绝匹配路由

• 跟随表达式

• 检查匹配路由

  • as-path-filter与前缀列表类似,抓取路由后支持过滤和定义属性

BGP路由策略 - Community属性

基于Community属性匹配路由进行路由策略(过滤、设置属性)

BGP路由策略 - ip-prefix路由过滤

使用ip-prefix匹配拒绝路由,在BGP视图下进行策略引用

BGP路由策略 - filter-policy路由过滤

调用ACL (peer指定邻居生效)

调用前缀列表 (全局生效)

针对重分发类型过滤 例:直连路由重分发同时进行过滤

BGP路由策略 - Outbound Route Filtering (ORF)BGP出站路由过滤

最大限度地减少对等路由器之间发送的BGP更新的数量,滤掉无效的路由更新以及源路由更新,减少生成和处理路由的资源

ORF前提条件

  • 路由器支持发送或接收ORF

• ORF 功能通过公告 ORF capabilityes 到对等路由器

• ORF启用后,BGP speaker 安装入站前缀过滤器到BGP peer ,peer将其作为出站列表,以此减少不必要的路由更新,减少双方资源消耗

• 基于BGP的前缀出站路由过滤功能,可以配置为发送、接收、发送和接收三种ORF能力

• 本地对等体公告 ORF capability 于 send 模式下。远程对等体接收到ORFcapability 于 receive模式,并且应用过滤器当做自己的出站策略本地和远程的对等体交换更新,以保持每个路由器的ORF

  • BGP出口路由过滤功能启用
  • BGP对等会话必须建立和运行
  • 基于前缀的BGP出站路由过滤功能,不支持IP组播路由

distribute-list(分发列表)

作用:过滤路由,控制接受、拒绝哪些路由条目,即控制层面的控制

配置逻辑:使用ACL抓取,使用分发列表调用ACL

分发列表支持过滤方向

OUT方向,不影响本地路由,控制邻居的路由条目

IN方向,控制本地路由条目

特殊场景

OSPF场景由于同区域使用T1 T2 LSA传递路由,分发列表无法拦截,只会影响设备本地路由表,LSA还是会继续传递

RIP、EIGRP由于传递的是路由表,链路中任意设备过滤路由后端设备均无法收到上级已经被过滤掉的路由条目

Policy-Based Routing(PBR)策略路由

匹配策略 match

基于源IP(结合ACL)

基于源接口

匹配tag

匹配数据报文长度

PBR动作

set ip next-hop

PBR调用

Router(config-if)# ip policy route-map map-tag

  • 接口下进行调用 ip police route-map,仅用于入站方向的数据包

Router(config)# ip local policy route-map map-tag

  • 将route-map做的PBR运用到 路由器本地产生的所有报文上

PBR debug

show ip policy

debug ip policy

Offset-list 偏移列表

仅支持 EIGRP和RIP,累加进入或者发出的metric值

Metric 值

路由出站开销决定了这条路由的Metric大小

路由的入站方向接口属性决定了路由的metric

路由的出站方向接口不会改变路由的开销

RIP:hop条数

EIGRP:FD 可行性距离

OSPF:COST开销

管理距离

华为

BGP

  • iBGP 255
  • eBGP 255

思科

环回口/本地接口 0

OSPF

  • 内部 110
  • O ASE 150 AS的外部路由

BGP

  • eBGP 20
  • iBGP 200

不可达/不可用 255

通过数据流控制数据走向

路由匹配原则

最长掩码匹配原则

AD值

Metric

重分发

将某路由协议的路由表引入到另一个协议的数据库中

注意

小AD值注入大AD值会产生次优路径

设计时候应避免双点双向重分布,调整路由AD值不能有效解决这类问题(将小AD协议改大)。如一定要双点双向重分布,应针对路由协议重发布本身做策略,避免路由倒灌,用route-map抓取外部路由,且不进行重分布。也可以根据路由来源打上tag,针对tag进行重分布策略,避免路由多次重分布。

BGP 到 OSPF

redistribute bgp  【asnumber】 subnets //注意加入subnets参数

默认情况下只能把eBGP路由进入IGP中,iBGP路由不能引入IGP,内部路由引入内部协议

  • bgp redistribute-internal
  • 【hw】import-route bgp permit-ibgp
  • 高风险,iBGP条目过多

OSPF重分布

redistribute eigrp 100 subnets metric-type 1

  • 默认metric是20.
  • 默认metric类型是type2.
  • 子网(非主类)默认情况不进行充分布,必须加上subnets参数才会正常重分布.

EIGRP重分布

5个K 值 10000 100 255 1 1500

  • Bandwidth in kbits = 10000
  • Delay in tens of microseconds = 100
  • Reliability = 255 (maximum)----表示100%可靠
  • Load = 1 (minimum)
  • MTU = 1500 bytes

修改某路由的AD

distance AD ip-src wildmask acls

  • 建议在ASBR/ABR上进行配置
  • AD:针对本地生效的OSPF优先级
  • ip-src:更新源,对OSPF来说就是route-id
  • wildmask:更新源的反掩码
  • acls:指定ACL编码,针对匹配的ACL路由进行优先级调整

Seed Metric种子度量值--初始度量值

RIP和EIGRP重分布入时不带seed metric,路由不加表

RIP、eigrp需要指定度量

passive-interface

协议分类

  • RIP/IGRP——指定接口不向外发送路由更新,但接收路由更新
  • EIGRP

• 指定接口不向外发送Hello消息,而且通过这个接口不与其他路由器建立邻接关系,不发送其他EIGRP的数据流

• 单播使用直接指定nei ip即可

  • OSPF——指定接口不向外发送Hello消息,而且通过这个接口不与其他路由器建立邻接关系,不发送和接收路由信息。(有些IOS版本中,OSPF在被动接口上发送Hello和DBD分组,但是不发送LSU)

用途

  • 宣告网段时将指定接口配置为被动

ACL(Access Control List)

使用ACL匹配路由时不要使用反掩码

使用对象

过滤流量,默认解决

匹配感兴趣流

ACL用途

限制网络流量和提高网络性能

控制访问特定网络资源,特定时间段内允许对网络的访问

防止针对IP报文、TCP报文、ICMP(Internet Control Message Protocol)报文的攻击

ACL类型

基于接口的ACL(Interface-based ACL)

基本ACL(Basic ACL)

高级ACL(Advanced ACL)

匹配规则

根据报文的入接口、源或目的地址、协议类型、源或目的端口号等属性

filter-Policy

链路状态协议中,filter-policy import命令用于过滤从协议路由表加入本地核心路由表的路由

filter-policy ip-prefix in import

filter-policy ip-prefix xxx export static

路由协议下的filter-Policy策略过滤路由

ACL规则的动作是permit时,则该路由被系统接收或发布

路由不被系统接收或发布

  • ACL规则的动作是deny时,则该路由不会被系统接收或发布
  • 路由的网段不在ACL规则指定的范围内,则该路由默认不被系统接收或发布
  • ACL中不存在规则,那么引用该ACL的路由策略中涉及的所有路由不被系统接收或发布

路由过滤可分为黑名单和白名单方式

  • 黑名单方式可以在同一个ACL中先配置动作是deny的编号较小的规则,用于过滤掉不希望被系统接收或发布的路由,然后再配置动作是permit的编号较大的规则,用于接收或发布其他路由
  • 白名单方式可以在同一个ACL中先配置动作是permit的编号较小的规则,用于允许希望被系统接收或发布的路由,然后再配置动作是deny的编号较大的规则,用于过滤掉其他不希望被系统接收或发布的路由
  • 5
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值