什么是基于策略的路由?
基于策略的路由 (PBR) 是 Cisco 路由器中一项非常流行的功能,它允许创建可以有选择地更改数据包在网络中采用的路径的策略。基于策略的路由可用于标记数据包,以便某些类型的流量优先于其他流量,发送到不同的目的地或通过路由器上的不同物理接口存在。
使用访问控制列表 (ACL) 对感兴趣的流量进行分类。正如我们所知,这些可以是标准的、扩展的或命名的访问列表。
一旦感兴趣的流量与 ACL 的使用“匹配”,路由器将执行由管理员定义的配置的“设置”功能。这个“设置”功能本质上告诉路由器如何处理匹配的流量,可以包括将其发送到另一个网关、丢弃它、将其优先于其他流量等等。
带有 IP SLA 监控的基于策略的路由以实现自动故障转移
本文将展示如何使用基于策略的路由来标记特定类型的流量,例如 http,并将其重定向到 Web 代理(通常是 Linux Squid),以便所有网络 Web 流量都通过代理自动过滤。
在这样的设置中,网络用户不知道代理的存在,因为他们不需要配置他们的网络浏览器来使用代理。所有用户流量都转发到单个网关(Cisco ASA 防火墙),然后从那里转发到路由器 R1。此示例是创建具有自动故障转移功能的透明代理的好解决方案。
路由器 R1 在基于策略的路由的帮助下“标记”所有 http 流量,然后执行相应的“设置”功能,即将选定的流量重定向到 IP 地址为 192.168.150.2 的 Linux 代理。
Linux 代理接受流量,进行管理员定义的必要检查,并通过 R2 路由器将其转发到 Internet。
为了补充我们的解决方案,我们添加了 IP SLA 跟踪,以便 R1 将持续监控 Linux 代理以确保它没有出现故障或脱机。如果由于任何原因路由器 R1 失去与 Linux 代理的连接,IP SLA 和基于策略的路由机制将停止将 http 流量重定向到它并通过 R2 将其直接转发到 Internet,从而有效地绕过失败的代理。
下图显示了路由器 R1 如何响应上述 Linux 代理的故障:
该解决方案巧妙地将思科的基于策略的路由与 IP SLA 跟踪相结合,并提供了许多优势,其中一些优势是:
-
将选定的 (http) 流量自动重定向到 Linux 代理。
-
对所有网络用户透明的网络代理,根据公司政策进行网络过滤。
-
代理失败时的自动故障转移。停机时间接近于零。
-
故障后持续监控代理 - 如果代理重新联机,则自动恢复。
注意:可以在我们的使用 IP SLA(基本)配置静态路由跟踪一文中找到更多 IP SLA 跟踪示例。
如何为主机配置 IP SLA 跟踪
第一步是为所需的主机配置 IP SLA 跟踪。这将确保 R1 路由器将持续监控 Linux 代理,并在失败时停止将 http 流量重定向到它:
R1(config-ip-sla)# icmp-echo 192.168.150.2
R1(config-ip-sla)# frequency 4
R1(config-ip-sla)# timeout 2000
R1(config-ip) -sla)# threshold 100
R1(config-ip-sla)# ip sla schedule 1 life always start-time now
上述配置在路由器 R1 上定义并启动 IP SLA 探测。
ICMP Echo 探测器每4秒向 IP 192.168.150.2发送一个 ICMP Echo (ping) 数据包,如频率参数所定义。
超时设置 Cisco IOS IP SLA 操作等待来自其请求数据包的响应的时间量(以毫秒为单位)。这已设置为2000毫秒或 2 秒,这使主机有足够的时间进行响应。
阈值设置生成反应事件并存储 Cisco IOS IP SLA 操作的历史信息的上升阈值。
定义 IP SLA 操作后,下一步是定义跟踪 SLA 探针的对象。这可以通过使用 IOS 跟踪对象来完成,如下所示:
上述命令将跟踪 IP SLA 操作的状态。如果没有来自受监控 IP 地址 (192.168.150.2) 的 ping 响应,则跟踪将关闭并在 IP SLA 操作再次开始接收 ping 响应时恢复。
要验证轨道状态,请使用“ show track ”命令,如下所示:
R1# show track 1
Track 1
IP SLA 1 reachability
Reachability is Up
30 changes, last change 1d08h
Latest operation return code: OK
Latest RTT (millisecs) 1
Tracked by:
ROUTE-MAP 0
命令输出验证被跟踪的对象是UP并且具有1ms的响应时间。再仔细一看显示的是,在跟踪期间,国家已经改变了30次和最后一次变化是1天和13小时前。如果有必要对用户报告的间歇性问题进行故障排除,则此信息非常重要。
如何配置基于策略的路由以重定向选定的 (HTTP) 流量
一旦我们启动并运行了 IP SLA,下一步就是配置 PBR,以便我们可以重定向 http 流量。
首先,我们需要使用访问控制列表来选择我们要重定向的流量。请记住,PBR 不限制可以使用的 ACL 类型。这意味着您可以使用 IP 命名 ACL、标准 ACL、扩展 ACL、基于时间的 ACL 等。在我们的示例中,我们将使用 IP 命名的 ACL:
R1(config)# permit tcp 192.168.5.0 0.0.0.255 any eq www
我们决定将我们的 IP 命名 ACL 命名为“ http-traffic ”。这个唯一的 ACL 名称稍后将在我们的路由映射中使用。通过在 ACL 中进行适当的更改,我们可以定义将被重定向的不同类型的流量。在我们的示例中,所有来自192.168.5.0网络且目的地为 Internet(任何)的http流量都被选中。
现在我们必须创建一个路由映射,它将使用上面定义的 ACL 并指示路由器将流量重定向到 Linux 代理:
R1(config-route-map)# match ip address http-traffic
R1(config-route-map)# set ip next-hop verify-availability 192.168.150.2 1 track 1
上面的命令创建了一个名为linux-proxy的许可路由映射。路由映射中的匹配 IP 地址参数通知路由器哪一组 ACL 定义了我们感兴趣的流量。由于我们已经使用 IP 命名的 ACL 定义了我们感兴趣的流量,因此我们需要做的就是引用我们的 ACL 的名称之前创建的。
最后一个命令配置路由映射以验证跟踪对象 ( 192.168.150.2 )的可达性。如果被跟踪的对象 是可达的(IP SLA 报告它是可达的),那么我们的基于策略的路由会将定义的流量重定向到它。如果跟踪目标是不可达,(IP SLA报告主机不可达, -下),那么我们的基于策略的路由将停止重定向。
应用策略路由
我们快完成了。最后一步是启用和识别要用于策略路由的路由映射。这是通过选择将启用策略路由的路由器接口并应用策略路由来执行的:
R1(config-int)# ip policy route-map linux-proxy
在我们的场景中,R1 的 VLAN1接口连接到ASA 和 Linux 代理所在的192.168.150.0/24网络,因此我们对其应用策略路由。
路由映射和 IP SLA 统计
通过使用几个简单的命令,可以密切关注路由器的路由映射和 IP SLA 性能。在前几天监控路由图的性能是一个很好的主意,因为这将有助于验证流量是否仍在重定向到主机。
另一方面,查看 IP SLA 统计数据将有助于识别任何人都没有注意到的可能的故障或状态变化。
该 节目路由映射命令是最喜欢的,因为它结合了足够的信息来帮助验证一切是否正常,因为它应该:
此处显示的数字可立即验证我们的主机是否可访问(up)并且 R1 已通过 Linux 代理重定向了超过510MB的流量!
该节目IP SLA统计命令提供了类似的方式有用的信息,帮助验证对象跟踪正常工作,并跟踪主机已启动:
IPSLAs Latest Operation Statistics
IPSLA operation id: 1
Latest RTT: 1 milliseconds
Latest operation start time: *21:36:47.855 UTC Tue Apr 3 2012
Latest operation return code: OK
Number of successes: 16
Number of failures: 0
Operation time to live: Forever