取消
显示结果 
搜索替代 
您的意思是: 
cancel
5978
查看次数
30
有帮助
6
评论
suzhouxiaoniu
Spotlight
Spotlight
作为论坛的最忠实的用户之一,这次活动第一周没来得及参与,感觉有点对不起组织:),小写一篇,期待和大家一起讨论:handshake


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

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

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

基础配置:
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

182520uw4q63vqcq4v66wc.jpg

需求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

测试记录:
182644e2pypcx0ik0i20l4.jpg

在实验的过程中,细心认真的同学,应该会发现,在使用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
配置文件中的显示结果:
183853witoc3p362phmm23.png

如果下一跳不是直连的(路由表有相关路由可达即可),则需要使用递归下一跳:
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或接口(先路由后策略)。





评论
one-time
Level 13
Level 13
感谢小牛老师的分享!:handshake
likuo
Spotlight
Spotlight
写的不错。
764963038cisco
Level 1
Level 1
高手!!!!!!!!
shicx008
Community Member
谢谢分享,学习了~~~
bo chen
Spotlight
Spotlight
干货满满,route-map当时是作为CCNP路由考试中技术含量比较高的考试项。
jm.nie
Spotlight
Spotlight
OSPF在NP里都是重点的路由策略,好好学习。
入门指南

使用上面的搜索栏输入关键字、短语或问题,搜索问题的答案。

我们希望您在这里的旅程尽可能顺利,因此这里有一些链接可以帮助您快速熟悉思科社区:









快捷链接