七夕补课
扎心的七夕,女票不在身边,只能补补课咯。我现在只想搞钱!!!
为什么需要做路由策略
路由策略是为了改变网络流量所经过的途径而修改路由信息的技术,主要通过改变路由属性(包括可达性)来实现。
行了,以上来自百度百科,现在跟我一步一步来吧
流量行为控制需求
这里面有两点,第一就是控制网络流量可达,这个的解释就是假如说一个局域网里面运行了OSPF,但是员工要不能访问老板等等各种奇葩的可达性需求就在这里体现出来了
第二点就是可以调整网络流量的路径,这个可以理解为都运行了OSPF那么走哪条路径最优(带宽最舒服),这就是一个需求了。
控制流量可达性
那么针对上面说的问题也有两种解决方法
- 路由策略
- 流量过滤
先说说这个路由策略,这个路由策略的做法就是当流量进来了,先匹配路由表,然后通过修改路由表也就是对接收和发布的路由进行过滤来控制流量的可达性
流量过滤就是Traffic-Filter工具把刚进来的流量,从入端口上进行过滤,这样的方法就是流量过滤,很明显流量过滤的优先级要高于路由策略。
解决方案一:采用路由策略方式
filter-policy:
- 使用ACL/IP-Prefix list抓取目标流量;
- 在协议试图下使用filter-policy工具过滤路由
route-policy:
- 首先使用ACL或IP-Prefix List工具来匹配目标流量;
- 然后在协议视图下,利用Route-Policy对引入的路由条目进行控制。
ACL
可以通过定义规则来匹配目标流量,并且可以对匹配的流量制定相应的动作,控制流量行为。
特点:能够同时过滤数据流量和报文,但无法匹配到掩码长度,对于匹配前缀不精确;
IP-prefix list
能够匹配数据流量,可以对路由信息直接过滤,但匹配不到报文,可以精确匹配掩码长度。
使用路由匹配工具和路由策略工具时,必须保证两者的动作都为permit,流量才会被允许通过;
写法如下
ip ip-prefix test index 10 permit 10.0.0.0 16 greater-equal 24 less-equal 28
IP地址范围:10.0.0.0 – 10.0.x.x
24<= 掩码长度 <=28
例:10.0.1.0/24, 10.0.2.0/25, 10.0.2.192/26
Filter-Policy工具介绍
Filter-Policy能够对接收或发布的路由进行过滤,可应用于ISIS、OSPF、BGP等协议。
对协议接收的路由进行过滤:
filter-policy { acl-number | ip-prefix ip-prefix-name } import
对协议发布的路由进行过滤:
filter-policy { acl-number | ip-prefix ip-prefix-name } export
只用写acl的编号就可以了,出跟入是import和export这个在刷新BGP路由表的时候也会看到
使用这个工具过滤路由时,如果是链路状态路由协议,必须要在import方向过滤,链路状态协议传递的是链路信息,而路由的过滤工具过滤的是路由,不会把LSA过滤掉,所以会导致可能ping通
Route-Policy工具介绍(记混淆没关系,这个更牛皮)
Route-Policy是一种功能非常强大的路由策略工具,它可以灵活地与ACL、IP-Prefix List、As-Path-Filter等其它工具配合使用。oh以前自学BGP选路的时候用到这个路由策略咯~~
Route-Policy:
route-policy route-policy-name { permit | deny } node node
if-match {acl/cost/interface/ip next-hop/ip-prefix}
apply {cost/ip-address next-hop/tag}
Route-Policy由若干个node构成,node之间是“或”的关系。且每个node下可以有若干个if-match和apply子句,if-match之间是“与”的关系
说说讲师说的这个例子吧:
两端的路由器一个cost值大一个小,默认会走黑色的路线,就是cost为5的路线,现在要走上面红色的路线,然后用这个Route-Policy工具来完成的话,可以分下面几步走
- 用ACL(或者IP-Prefix List)抓取源为1.1.1.1/32的数据操作为permit允许
- 创建一个Route-Policy这里的操作也是permit允许
- 用刚抓到的源ACL和if-match来找到其cost=5值
- 用刚抓到的源ACL和if-match来找到黑色路线其下一跳值(因为路由表多的话cost会有多个)
- 最后用apply来重新定义cost把其改大,这样下面大了就会选择到上面来
这个步骤很有趣,没啥难的,有问题说如果直接在cost=5的对端接口修改cost值的话,以后这个端口永远都是修改的cost,而策略可以删除。还有cost值只能把小的改大,不能把大的改小
在做这个的时候最后别忘了输一个下面的命令:
route-policy RP permit node xx
这个就是说你如果做了一堆的策略,最后别忘了把其他的网络段通过了
使用路由匹配工具和执行工具时,必须保证两者的动作都为permit,流量才会被允许通过。
解决方案二:采用流量过滤方式
这个方法简单而且优先级高,就使用Traffic-Filter工具在端口上就对数据流进行过滤了
使用步骤:
- 先用ACL找流量
- 再进端口用traffic-filter控制好进方向和出方向,把acl应用上就可以了
这个方法最简单,我大一的时候学ACL的时候就用到了命令如下:
int g0/0/1 #端口视图下
traffic-filter inbound acl 3000
这个方法就不需要查路由表,很强势,比那个路由策略还厉害,需要注意的是里的acl用的是高级acl也就是3000-3999
策略路由
在后期对网络进行优化时,常出现调整网络流量路径的需求。
- 可通过路由策略方式修改协议属性来控制路由表条目,从而调整流量路径。
- 可采用策略路由方式在查找路由表之前控制流量行为。
一般用的最多的是第二种因为这样不会改变这个路由表的内容
现在看一个调整网络流量明细的例子
拓扑图如上。如果用路由策略做的话,就需要用acl抓源,然后用Route-Policy来控制下一跳。
用策略路由的话可以参考下面的命令来控制
[RTA]acl 3000
rule 5 permit ip source 10.1.1.0 0.0.0.255 dest 10.1.3.0 0.0.0.255
traffic classifier huawei-control1
if-match acl 3000
traffic behavior huawei-control1
redirect ip-nexthop 12.1.1.2
traffic policy huawei-control1
classifier huawei-control1 behavior huawei-control1
int g0/0/2
traffic-policy huawei-control1 inbound
[RTA]acl 3001
rule 5 permit ip source 10.1.2.0 0.0.0.255 dest 10.1.3.0 0.0.0.255
traffic classifier huawei-control2
if-match acl 3001
traffic behavior huawei-control2
redirect ip-nexthop 12.1.3.2
traffic policy huawei-control2
classifier huawei-control2 behavior huawei-control2
int g4/0/0
traffic-policy huawei-control2 inbound
讲一下这里面三个点:
- traffic classifier 就是设置一个流量分类器,来把需要修改的ACL源放进去
- traffic behavior设置流量的行为,修改下一跳
- traffic policy 最后设置一个策略,把流分类器的内容和流量行为放到一起
- 进设备调用流策略
这个很简单没啥可说的,注意的是需要分别创建两个流分类器因为你的下一条不一样,否则就会都走12.1.1.2
路由策略和策略路由的区别
路由策略 | 策略路由 |
---|---|
基于控制平面,会影响路由表表项。 | 基于转发平面,不会影响路由表表项,且设备收到报文后,会先查找策略路由进行匹配转发,若匹配失败,则再查找路由表进行转发。 |
只能基于目的地址进行策略制定。 | 可基于源地址、目的地址、协议类型、报文大小等进行策略制定。 |
与路由协议结合使用。 | 需手工逐跳配置,以保证报文按策略进行转发。 |
常用工具:Route-Policy、Filter-Policy等。 | 常用工具:Traffic-Filter、Traffic-Policy、Policy-Based-Route等。 |
- 路由器存在两种类型的表:一个是路由表(routing-table),另一个是转发表(forwarding-table),转发表是由路由表映射过来的,策略路由直接作用于转发表,路由策略直接作用于路由表。由于转发在底层,路由在高层,所以直接作用在转发表的转发优先级比查找路由表转发的优先级高。
- 路由策略是在路由发现的时候产生作用,并根据一些规则,使用某种策略来影响路由发布、接收或路由选择的参数,从而改变路由发现的结果,从而最终改变路由表内容;策略路由是在数据包转发的时候发生作用,不改变路由表中的任何内容,它可以通过设置的规则影响数据报文的转发。
最后的问题
路由引入可能会带来哪些问题?常用的解决办法包括哪些?
路由引入可能会带来次优路径、路由环路等问题,常采用路由过滤、调整协议优先级方式来解决。