请选择 进入手机版 | 继续访问电脑版

设为首页 收藏本站
思科社区 关注
思科社区

搜索
热搜: 邮件服务器
查看: 799|回复: 4

【原创】路由策略和策略路由

[复制链接]
发表于 2020-9-16 18:27:08 | 显示全部楼层 |阅读模式
作为论坛的最忠实的用户之一,这次活动第一周没来得及参与,感觉有点对不起组织,小写一篇,期待和大家一起讨论



PBR(Policy Based Routing,策略路由),即根据自定义的策略转发路由,优先级高于“正常路由”。
在日常的网络管理中,我们也经常说“路由策略”,它和“策略路由”有去本质区别的:
1,策略路由:操作对象是数据包,在路由表已经产生的情况下,不按照路由表进行转发,而根据需要,依照自定义的某种策略改变数据包的转发路径。
2,路由策略:操作对象是路由信息,主要通过设置路由过滤、路由属性等,来达到改变网络流量所经过的路径。(为了区分,我们一般称为“路径策略”,后篇会详细讨论)

我的理解是:策略路由没有改变路由表,只是策略优先于路由表,而路由策略直接改变了路由表。因为PBR主要通过route-map来实现,之前应该完全掌握了路由图的语法,至于PBR的具体应用规则,我们还是放到实验中来理解。

在下图拓扑中,全网运行OSPF等价负载均衡,VLAN之间通过单臂路由实现通信(协议和VLAN间通信的方式不影响本实验,可以任意选择)。为了测试方便,图中PC1-PC3均为路由器模拟。

基础配置:
R1(config)#inter fa0/0
R1(config-if)#no shut
R1(config-if)#inter fa0/0.1
R1(config-subif)#en do 1
R1(config-subif)#ip add 10.1.1.254 255.255.255.0
R1(config-subif)#inter fa0/0.2
R1(config-subif)#en do 2                        
R1(config-subif)#ip add 20.1.1.254 255.255.255.0
R1(config-subif)#inter fa0/0.3                  
R1(config-subif)#en do 3                        
R1(config-subif)#ip add 30.1.1.254 255.255.255.0
R1(config)#router ospf 1
R1(config-router)#net 0.0.0.0 255.255.255.255 area 0
R2(config)#router ospf 1
R2(config-router)#net 0.0.0.0 255.255.255.255 area 0


需求1:在路由器R1上实现PBR,来自于VLAN2的数据包,选择12.1.1.2作为下一跳;来自于VLAN3的数据包选择120.1.1.2作为下一跳;来自于VLAN1的数据包则正常转发。
R1(config)#access-list 2 permit 20.1.1.0 0.0.0.255
R1(config)#access-list 3 permit 30.1.1.0 0.0.0.255
#使用ACL定义流量
R1(config)#route-map chj permit 10
R1(config-route-map)#match ip address 2
R1(config-route-map)#set ip next-hop 12.1.1.2
R1(config-route-map)#route-map chj permit 20
R1(config-route-map)#match ip address 3      
R1(config-route-map)#set ip next-hop 120.1.1.2
#路由图应用到PBR,默认是允许所有流量,所以不需要再permit 30(重分发中默认是拒绝所有)
R1(config)#inter range fa0/0.1 ,fa0/0.2 ,fa0/0.3
R1(config-if-range)#ip policy route-map chj
#接口上的PBR没有方向,只能对in方向的流量生效
R1#debug ip policy

测试记录:

在实验的过程中,细心认真的同学,应该会发现,在使用set ip next-hop命令时,后面可以接多个下一跳:
R1(config)#route-map jym permit 10
R1(config-route-map)#set ip next-hop 12.1.1.2 120.1.1.2
这里的多个下一跳,可以实现冗余,当第一个下一跳down了,自动切换到下一个下一跳,但是这些地址必须是直连路由器的接口IP。注意如下写法无效,会自动转成上面的格式:
R1(config-route-map)#set ip next-hop 12.1.1.2
R1(config-route-map)#set ip next-hop 120.1.1.2
配置文件中的显示结果:

如果下一跳不是直连的(路由表有相关路由可达即可),则需要使用递归下一跳:
R1(config)#route-map jym permit 10
R1(config-route-map)#set ip next-hop 12.1.1.2 120.1.1.2
R1(config-route-map)#set ip next-hop recursive 2.2.2.2

此时,如果两个直连的冗余下一跳都down了,使用递归下一跳,如果都down了,则丢给路由表处理。在一个route-map系列号中,递归下一跳只能配置一个,再配置则覆盖前一个。如果直连和递归下一跳同时使用,则直连下一跳优先。对于下一跳可达性的检查,我们还可以定义两种方式:
R1(config-route-map)#set ip next-hop verify-availability  
#使用CDP检查下一跳可达性,要求双方均支持并开启CDP,由于CDP特性,仅限直连下一跳检测。
R1(config-route-map)#set ip next-hop verify-availability 2.2.2.2 1 track 10
#结合object tracking来检查非直连远端的可达性


PBR中,最常见的set就是set ip next-hopset interface,比如使用set interface null 0丢弃数据包等等。但是系统中也支持另外一组命令:
R1(config)#route-map chj permit 10
R1(config-route-map)#set default interface fa2/0
R1(config-route-map)#set ip default next-hop 2.2.2.2
都多了一个default,区别是:不含default的命令,是不查询路由表就转发数据包到下一跳IP或接口(先策略后路由),而含有default的命令是先查询路由表,在找不到精确匹配的路由条目时,才转发数据包到default命令指定的下一跳IP或接口(先路由后策略)。





本帖子中包含更多资源

您需要 思科 CCO 登录 才可以下载或查看,没有帐号?思科 CCO 注册   

x
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分5 (2 评价)
发表于 2020-9-17 09:02:25 | 显示全部楼层
感谢小牛老师的分享!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
发表于 3 天前 | 显示全部楼层
写的不错。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分5 (1 评价)
发表于 3 天前 | 显示全部楼层
高手!!!!!!!!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
发表于 3 天前 | 显示全部楼层
谢谢分享,学习了~~~
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
您需要登录后才可以回帖 思科 CCO 登录 | 思科 CCO 注册   

本版积分规则

Archiver | 思科社区  

GMT+8, 2020-10-29 22:36 , Processed in 0.090324 second(s), 40 queries .

京ICP备11014401号-17

© 2020 思科系统.版权所有 重要声明 | 保密声明 | 隐私权政策 | 商标 |

快速回复 返回顶部 返回列表