路由策略中 ACL、IP Prefix、Filter Policy、Router Policy 的使用

1. 技术背景

在部署路由策略的过程中,往往需要通过一些手段 “抓取” 路由,从而能够针对特定的路由来执行相应的策略,以实现差异化。在 “抓取” 路由的工具中,ACL 无疑是最常用的工具之一。

img

在上图中,R2 部署了 RIP 到 OSPF 的路由重发布,在这个场景中,有个特殊需求:将引入 OSPF 后的外部路由 192.168.1.0/24 的 cost 设定为 10,192.168.2.0/24 的 cost 设定为 20,那么便要先匹配或者说 “抓取” 相关路由,然后针对不同的路由在 route-policy 中 apply 不同的 cost,从而实现策略。

使用 ACL 来应对这个需求是完全没问题的,定义一个 ACL2001,匹配 192.168.1.0,定义一个 ACL2002 匹配 192.168.2.0,然后在 route-policy RP 中写两个 node 分别针对这两条路由 apply 不同的 cost 值,很简单。

但是……

img

上面这个环境,ACL 就无能为力了。为什么呢?

因为 ACL 只能够匹配路由前缀的网络地址部分,无法匹配路由前缀的网络掩码(或者说前缀长度)。

准确的说,一条路由前缀是包含网络地址和网络掩码(前缀长度)的,对于 192.168.1.0,这算不上一条完整的路由,应该采用 192.168.1.0 255.255.255.0 或者 192.168.1.0/24 的方式呈现,这才是一条完整路由。而只要网络地址或者网络掩码中有任何一项不同,这就是两条不同的路由了,例如 192.168.1.0/24 和 192.168.1.0/25,这就是两条不同的路由。

ACL 是无法匹配路由前缀的掩码部分的,因此上图所示的需求用 ACL 是无法完成的。

这里顺便提一下,如果使用 Basic ACL 匹配路由,建议在书写 ACL 时,反掩码使用 0.0.0.0,否则会造成匹配不精确的现象。例如要匹配 192.168.1.0/24 这条路由,如果 acl 的 rule 这么写:

rule permit source 192.168.1.0 0.0.0.255

这事实上是不严谨的,因为它将 192.168.1.0、192.168.1.1、192.168.1.2、192.168.1.3………… 等众多网络地址全匹配到了。也就是说,上面的 0.0.0.255,并不能用于匹配网络掩码 255.255.255.0,它只不过是与前面的 192.168.1.0 组合,并用于匹配网络地址而已。所以,建议这么写:

rule permit source 192.168.1.0 0.0.0.0

或者:

rule permit source 192.168.1.0 0

2.IP-Prefix(IP 前缀列表)

  1. IP 前缀列表匹配路由的可控性比 ACL 高得多,也更为灵活;
  2. IP 前缀列表可匹配路由前缀中的网络地址及网络掩码(前缀长度),增强了匹配的精确度;
  3. IP 前缀列表除了能够匹配具体的网络掩码长度,还能够匹配掩码长度范围,非常灵活。
  4. 一个 IP 前缀列表可以包含一个或多个表项(语句),在匹配过程中依序进行计算。表项中的索引号

(序号)决定了每个表项在整个 IP 前缀列表中的位置。

3.IP 前缀列表的配置

创建一个 IP 前缀列表的配置如下:

[Huawei] ip ip-prefix name [ index index-number ] {
    permit | deny } ip-address mask-length [ greater-equal greater-equal-value ] [ less-equal less-equal-value ]
  • Name 参数是本 IP 前缀列表的名称。
  • Index 关键字及参数指示本表项在本 IP 前缀列表中的序号(或索引号),该关键字及参数是可选的。缺省情况下,该序号值按照配置先后顺序依次递增,每次加 10,第一个序号值为 10。
  • Permitdeny 关键字用于配置本表项的匹配模式。
  • ip-address mask-length 参数用于分别制定 IP 地址及掩码长度。
  • [ greater-equal greater-equal-value ] [ less-equal less-equal-value ] 是可选配置,用于指定掩码长度的范围。

如果在命令中只指定了 greater-equal,则前缀范围为 [greater-equal-value,32]

如果在命令中只指定了 less-equal,则前缀范围为 [mask-length,less-equal-value]

IP 前缀列表由列表名称进行标识,每个 IP 前缀列表可以包含多个表项。下面的配置展示了一个名为 abcd,它包含两个表项:

[Huawei] ip ip-prefix abcd index 10 deny 1.0.0.0 8
[Huawei] ip ip-prefix abcd index 20 permit 2.0.0.0 8

在 IP 前缀列表的匹配过程中,设备按索引号升序依次检查各个表项,只要有一个表项满足条件,就不再去匹配后续表项。

ip ip-prefix abcd index 10 deny 1.0.0.0 8 为例,这个表项属于 IP 前缀列表 abcd,它的索引号为 10,并且匹配模式为拒绝,在该表项中 IP 前缀为 1.0.0.0,掩码长度为 8,因此这个表项用于匹配路由 1.0.0.0/8,只有该路由才会被匹配,并且该路由将会被该表项过滤(deny)。这个命令中没有定义掩码长度范围。

如果一条路由无法被一个 IP 前缀列表中的所有表项匹配,那么这条路由被视为被该前缀列表拒绝通过。也就是说,一个 IP 前缀列表的末尾,隐含着一条拒绝所有的表项。

4. 配置示例

示例 1:

匹配某条特定路由 192.168.1.0/24:

ip ip-prefix ipprefix1 192.168.1.0 24

匹配默认路由 0.0.0.0/0:

ip ip-prefix ipprefix2 permit 0.0.0.0 0

注意:IP 前缀为 0.0.0.0 时表示通配地址。此时不论掩码指定为多少,都表示掩码长度范围内的所有路由全被匹配

匹配所有 / 32 主机路由:

ip ip-prefix ipprefix3 permit 0.0.0.0 0 greater-equal 32

匹配任意路由 (any):

ip ip-prefix ipprefix4 permit 0.0.0.0 0 less-equal 32

示例 2:

匹配以下路由(用最精确最简洁的方式):

192.168.4.0/24
192.168.5.0/24
192.168.6.0/24
192.168.7.0/24
ip ip-prefix abcd permit 192.168.4.0 22 greater-equal 24 less-equal 24

上面这条命令的意思是,允许那些网络地址的前 22bit (共同的前缀长度)与 192.168.4.0 的前 22bit 相同,并且网络掩码长度为 24 的路由。注意此处 “greater-equal 24 less-equal 24” 要求网络掩码长度既大于或等于 24,又小于或等于 24,因此只能是 24。

示例 3:

img

在以上配置中,首先创建了一个名称为 1 的 IP 前缀列表,该列表中包含一个表项,这个表项要求被匹配路由的网络地址的前 16bit 与 192.168.0.0 的前 16bit 相同,并且路由的网络掩码长度为 16,因此该表项只能用于匹配路由 192.168.0.0/16。由于该表项的匹配模式为 permit,因此路由 192.168.0.0/16 被该 IP 前缀列表允许。

随后定义了一个 route-policy RP,它包含一个节点,且该节点的匹配模式为 permit。该节点调用了 IP 前缀列表 1,如此一来,192.168.0.0/16 将被 route-policy RP 所允许,而由于 route-policy 的末尾隐含着一个拒绝所有的节点,因此对于 route-policy RP 而言,只允许了路由 192.168.0.0/16。


路由工具之路由策略 router-policy、acl 列表与 ip-prefix 前缀列表的区别、过滤列表 filter-policy

3.0.0 路由工具之路由策略 router-policy、acl 列表与 ip-prefix 前缀列表的区别、过滤列表 filter-policy


IP-Prefix 前缀列表

前缀列表能够同时匹配 IP 地址前缀以及掩码长度,列表默认动作为拒绝。
前缀列表的创建方式:
(1)精确匹配某个网段的路由:
匹配 192.168.0.0/24 的路由

[AR1] ip ip-prefix 1 permit 192.168.0.0 24

(2)匹配某个网段的掩码范围
匹配路由前缀为 192.168,掩码为 30~32 之间的路由条目

[AR1] ip ip-prefix 2 permit 192.168.0.0 16 greater-equal 30 less-equal 32

(3)命令介绍
常规用法:

ip ip-prefix 前缀列表名称 动作 (permit/deny) 匹配路由 匹配前缀

进阶用法:

ip ip-prefix 前缀列表名称 动作 匹配路由 匹配前缀 greater-equal 掩码大于等于多少 less-equal 小于等于多少

解析命令:

ip ip-prefix 前缀列表名称 动作 192.168.0.0 16 greater-equal 30 less-equal 32
匹配路由前缀为 192.168,且掩码大于等于 30 小于等于 32 的路由条目。

前缀列表与 ACL

ACL 访问控制列表,即用于流量的匹配与控制,但也能够用于匹配路由条目。
而前缀列表主要用于路由的匹配,所以前缀列表在匹配路由上远胜于 ACL。
前缀列表与 ACL 的区别
1、ACL 无法匹配路由掩码
2、ACL 无法匹配精确的路由

如:存在两个路由 192.168.1.0/24192.168.1.0/16
如果用 ACL 只匹配 192.168.1.0/16 的话应该这么写:
[AR1]acl 2000
[AR1-acl-basic-2000]rule permit source 192.168.1.0 0.0.255.255
但会发现它仍会把 192.168.1.0/24 的路由匹配到。
因为 ACL 只能通过通配符匹配路由前缀,而不能匹配路由的掩码。
故两条 掩码不同前缀相同 的路由能被 ACL 同时匹配到。
3、ACL 可以对数据包进行过滤,而前缀列表只能匹配路由

router-policy 路由策略

作用:针对特定的路由条目去做属性的更改。
路由策略,即对路由相关属性进行修改。
而对于另一种技术:策略路由,即作用是直接控制路由。
如何应用路由策略
1、首先匹配路由,应用 ACL、IP-prefix 等匹配技术匹配相关路由。
2、属性修改,如修改匹配出来的路由开销、tag 标记等。
3、应用策略,创建好路由策略之后,可在需要进行路由修改的地方进行引用策略。
下面,就通过操作实例来进一步认识路由策略:

应用路由策略过滤路由

1、环境介绍

AR6 与 AR7 建立 OSPF 邻接关系,AR6引入 所有环回口网络。
在这里插入图片描述

<think>好的,我现在需要帮助用户了解关于路由策略的配置与管理,特别是在网络流量管理和软件定义网络中的路由规则。首先,我得回忆一下路由策略的基本概念,确保自己理解正确。路由策略主要用于控制路由的发布、接收和引入,通过过滤或修改路由属性来影响流量转发。根据用户提供的引用,特别是引用[1]和[3],路由策略涉及路由策略工具如Route-Policy,以及它的应用场景如BGP和OSPF。 接下来,用户提到可能的网络流量管理或软件定义网络(SDN)中的配置。我需要将路由策略与这些领域联系起来。在传统网络中,路由策略通常通过CLI配置,使用ACL、前缀列表等工具。而在SDN中,可能更依赖集中式控制器,比如OpenFlow协议,通过流表来管理路由规则。这里可能需要区分传统网络和SDN的不同配置方法。 然后,我需要考虑配置路由策略的具体步骤。根据引用[3],配置步骤可能包括定义策略工具(如Route-Policy)、应用匹配条件(ACL、前缀列表)、设置路由属性(如BGP的Local Preference或MED),然后将策略应用到特定的路由协议中。例如,在BGP中应用路由策略来控制路由的发布和接收。 另外,用户可能想知道路由策略网络流量管理中的实际应用案例。比如,通过调整路由属性来优先选择某条路径,或者过滤掉不需要的路由以优化流量。同时,软件定义网络中的路由策略可能更灵活,能够动态调整路径,比如根据实时流量负载进行路由选择,这需要提到SDN控制器如何下发流表规则。 还需要注意路由策略策略路由(PBR)的区别,如引用[2]提到的,策略路由是基于策略的数据转发,而路由策略更多是关于路由信息的控制。避免混淆这两个概念,但如果有必要,可以简要说明两者的不同,以帮助用户更好理解。 最后,用户可能需要一些常见配置示例或最佳实践,比如如何配置路由策略实现多路径负载均衡,或者如何防止路由环路。此外,考虑到用户的问题涉及配置与管理,可能需要强调配置时的注意事项,比如策略的顺序、测试策略效果的方法等。 总结下来,回答的结构应该包括路由策略的定义、核心功能、配置步骤、应用场景(传统网络和SDN)、实际案例以及常见问题。确保各部分内容引用提供的参考资料,并在适当的位置添加引用标识。同时,生成的相关问题需要与路由策略的高级应用、工具对比以及SDN相关配置相关,以帮助用户深入探索。</think>### 路由策略的配置与管理详解 #### 一、路由策略的核心功能 路由策略(Route-Policy)是网络流量管理和路由控制的核心工具,通过以下方式影响网络行为: 1. **路由过滤**:使用访问控制列表(ACL)或前缀列表(Prefix-List)筛选特定路由条目,例如仅允许$10.0.0.0/8$网段的路由被接收[^3]。 2. **属性修改**:调整路由属性值(如BGP的`Local Preference`、`MED`),例如将某路径的优先级从默认值$100$提升至$200$[^1]。 3. **路由引入控制**:限制不同路由协议间的路由重分发,例如仅允许OSPF中特定`tag`标记的路由注入BGP[^3]。 #### 二、配置路由策略的典型步骤(以企业网为例) 1. **定义匹配条件**: ```bash # 创建前缀列表限制允许的路由范围 ip prefix-list PL_FILTER seq 5 permit 192.168.1.0/24 ``` 2. **构建路由策略**: ```bash # 创建Route-Policy并关联匹配条件 route-policy RP_TRAFFIC permit node 10 if-match ip address prefix-list PL_FILTER apply cost +50 # 修改路由开销值 ``` 3. **应用策略到协议**: ```bash # 在BGP进程中对邻居应用策略 router bgp 65001 neighbor 10.1.1.1 route-policy RP_TRAFFIC export ``` #### 三、在SDN环境中的实现差异 软件定义网络通过集中控制器实现动态路由策略- **OpenFlow流表示例**: ```python # 设置优先级为200的流表项,匹配TCP 80端口流量 flow = { 'priority': 200, 'match': {'ip_proto': 6, 'tcp_dst': 80}, 'actions': [{'type': 'OUTPUT', 'port': 3}] } controller.install_flow(flow) # 通过北向API下发 ``` - **策略动态调整**:基于实时流量监控数据自动优化路径选择[^2]。 #### 四、典型应用场景 1. **流量工程**: - 通过调整BGP`AS_PATH`属性引导跨国流量绕开拥塞区域 - 使用`Community`属性标记金融业务流量$$ \text{Community} = 65001:1001 $$ 2. **安全控制**: - 在边界路由器过滤伪造源地址路由(如`bogon`地址) 3. **多宿主网络**: - 设置ISP1链路优先用于视频流量,ISP2用于普通数据 #### 五、配置验证与排错 1. **策略命中检查**: ```bash display route-policy RP_TRAFFIC # 查看策略详情 ``` 2. **路由表验证**: ```bash display bgp routing-table 192.168.1.0 # 检查属性修改是否生效 ``` 3. **流量跟踪工具**: ```bash traceroute mpls ip 10.0.0.1 # 验证MPLS TE路径 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值