路由策略专题(五)之屠龙宝刀Route-map①

以前介绍了路由抓取工具(ACL,Prefix-List)和一些路由控制工具(Distribute-list,Filter-List和offset-List)。有须要的能够关注一下以前的文章。redis

路由策略专题(一)之路由抓取工具(Access-List和Prefix-List) 》《路由策略专题(二)之分发列表(Distribute-List) 》《路由策略专题(三)之偏移列表(Offset List)》《路由策略专题(四)之列表过滤列表(Filter-List) 网络


因为Route-Map内容过于多,我将分篇介绍,本篇博文之中咱们将介绍Route-map的理论知识并结合一个使用场景(重分布)进行简单的介绍。其余的使用场景将在后续博文中放出负载均衡

首先来看一下Route-map在路由策略地位工具中的地位。咱们能够把它看作路由策略工具中的王者,其余的路由工具虽然在各个方面的用途和使用场景与之相比有所不一样,可是Route-map在路由策略中的地位是不容撼动的。这是由他的强大的功能性和使用范围所决定的。它不只仅能够和以前路由策略工具同样,进行路由的过滤和修改,甚至还能够修改路由包括的属性等等乃至在数据层面均可以对流量产生影响。ide


下文将对Route-map进行全面可是简单而简单的分析:工具


1、理论篇
oop

咱们来看一下Route-map的使用场景和搭档。spa

使用场景:orm

  • 重分发期间进行路由过滤或执行策略router

  • PBR(策略路由)blog

  • NAT(网络地址转换)

  • BGP中的策略部署

  • 其余用途(如和其余路由工具搭配例如distribute-list)


再来看一下它的能力:

  • 与传统的路由控制工具备所不一样的是,Route-map不只仅局限在对路由的抓取和过滤。还能够给某些路由信息添加某些属性的值(如tag,BGP的各类属性等)。

  • 不只局限在IP层面的捕捉,也能够针对某个接口、甚至数据包的下一跳和某些属性进行抓取。

  • 不止能够对路由信息进行某些值的修改,甚至在转发层面也能够进行修改(搭配PBR)

  • 在最具操做性的路由协议(BGP)中也扮演着很重要的地位。



接着,来看一下Route-map匹配与操做规则:

同Access-list相似,是一个从上而下的匹配机制,进行逐级向下的比对,若是某一条匹配不成功那么将进行下一条的比对,直到整个Route-map的结尾。所以这里咱们也要注意书写的顺序。

在每一条目中有两个重要的组成部分:Match(条件)和Set(动做)。只有当条件匹配的状况下才回去执行相应的动做。在一个条目中能够有多个条件和多个动做;并且,若是只做为路由的过滤时使用的话可能只有Match没有Set,所以Set也不是必须的。和Access-list同样,在末尾隐含着一条Deny Any。所以,若是放行全部须要在末尾加入一个空条目。


最后,看一下Route-Map的技术特色总结:

  • match命令匹配特定条件,Set修改相关属性或者分组

  • 按自上而下的顺序执行,相似ACL的方式而且末尾有Deny Any

  • route-map默认为Permit,默认序号为10,而且不会主动递增,须要手动设置。若是须要Deny也须要设置

  • 当一条match语句包括多个条件时采用逻辑或运算(OR);存在多条match语句时,各条match语句之间使用逻辑和运算(AND)

  • 若是要放行全部能够在末尾加一个空的条目




2、配置篇

配置命令:

具体的书写规范:

*****************************************************

**    route-map my-map permit/deny 10             **

**    match A                                                         **

**    match B  C                                                     **

**    set X                                                               **

*****************************************************

1.建立一个Route-map:

Route-map {Route map tag} {permit|deny} {sequence number}

  • 这个全局配置命令建立一个route-map,使用自定义的字符串来表示这个route-map,你能够在一个route-map下定义多个序列号。序列号在进行匹配动做时具备优先顺序。

  • Permit/deny关键字在不一样的部署场合中做用有所不一样

结合几个例子来看一下:

route-map my-map permit 10

建立了一个route-map,route-map的tag(理解为名字)为my-map,建立第十条条目而且为permit(容许)

route-map my-map deny 20

在名为my-map的route-map插入第二十条,这条为Deny(拒绝)

route-map my-map 30

在名为my-map的route-map插入第三十条,没有明确说明permit仍是deny,这里是Permit由于默认为permit


注意当咱们进入具体某个条目的时候命令提示符会变动,以下图所示

spacer.gif



2.定义匹配条件:

match条件


语句

说明

match ip address 

匹配访问列表或前缀列表

match length 

根据分组的第三层长度进行匹配

match interface 

匹配下一跳出接口为指定接口之一的路由

match ip next-hop

匹配下一跳地址为特定访问列表中被容许的那些路由

match metric 

匹配具备指定度量值的路由

match route-type 

匹配指定类型的路由

match community 

匹配BGP共同体社区属性

match tag 

根据路由的标记进行匹配



3.定义动做

Set动做


语句

说明

set metric

 设置路由协议的度量值

set metric-type

设置目标路由协议的度量值类型

set default interface

指定如何发送这样的分组

set interface

指定如何发送这样的分组

set ip default next-hop

指定转发的下一跳

set ip next-hop

指定转发的下一跳

set next-hop

指定下一跳的地址,指定BGP的下一跳

set as-path 

BGP属性

set community

BGP属性

set local-preference

BGP属性

set weight

BGP属性

set origin 

BGP属性

set tag



3、实验篇

场景一:重分布的场景中(实验1)

spacer.gif图片.png

环境说明:

OSPF中R1有四条路由,咱们用4个Loopback接口指代,咱们手工在接口上修改cost值分别为十、50、20、60

如今要求R3上收到这些路由时分别为右图表中所示。

这显然经过原生的重分布命令没法作到。这时就须要来Route-map来作了。


配置以前咱们先查看一下R2的路由表:

因为R1和R2之间链路Cost为10,所以咱们获得的ospf路由cost值分别是依次是20、60、30、70。

这里咱们能够有两种方式来作,一种是利用抓取Cost值在必定范围的路由,一种是直接抓取路由信息。

spacer.gif图片.png


具体配置以下:

按Cost值抓取的方式:


R2(config)#route-map OSPF-RIp permit 10

#抓取OSPF cost值小于60的路由

R2(config-route-map)#match metric 30 +- 29    #Match OSPF 的Metric(Cost)注意这里用了加减号意思是匹配cost值为30+-29暨(cost值在1到59之间的Cost 值)

R2(config-route-map)#set metric 2        #Set RIP中的Metric(Hop-Count)


R2(config-route-map)#route-map OSPF-RIp permit 20

#抓取OSPF cost值为60和70的路由

R2(config-route-map)#match metric 60 70    #这里利用了通条匹配时采用逻辑或运算,表示匹配OSPF中Cost值为60或者70的路由。

R2(config-route-map)#set metric 4

R2(config)#router rip

R2(config-router)#redistribute ospf 1 route-map OSPF-RIp



这里也能够用匹配路由的方式作:

#抓取跳数应设置为2的路由(可以使用Prefix-list或ACL)

R2(config)#ip prefix-list HOP2 seq 5 permit 192.168.1.0/24

R2(config)#ip prefix-list HOP2 seq 10 permit 192.168.3.0/24

#抓取跳数应设置为4的路由(可以使用Prefix-list或ACL)

R2(config)#ip prefix-list HOP4 seq 5 permit 192.168.2.0/24

R2(config)#ip prefix-list HOP4 seq 10 permit 192.168.4.0/24

#配置router-map

R2(config)#route-map OSPF-RIP2 permit 10

R2(config-route-map)#match ip address prefix-list HOP2

R2(config-route-map)#set metric 2

R2(config-route-map)#match ip address prefix-list HOP4

R2(config-route-map)#set metric 4

#在RIP进程下调用

R2(config)#router rip

R2(config-router)#redistribute ospf 1 route-map OSPF-RIP2


来查看一下R3的路由表进行一下验证:

spacer.gif图片.png





上一个情景中咱们了解如何使用在重分布场景下使用的Route-map的具体配置

咱们就结合一个经典案例看一下:

三层拓扑图以下:

spacer.gif图片.png


环境简单说明:

R1和R2分别链接三层交换机SW1和SW2;SW1和SW2分别同OA网和Produce网相连。

假设R一、R2到生产网络和办公网络分别使用静态路由

R1上有静态路由10.0.1.0/24和10.0.2.0/24 指向SW1的三层口10.0.254.1

R2上有静态路由10.0.1.0/24和10.0.2.0/24 指向SW1的三层口10.0.254.5

R一、R二、R3有运行OSPF,R一、R2分别将静态路由重分布到OSPF中。

在没有作任何修改的状况下R3应该收到的10.0.1.0/24和10.0.2.0/24是负载均衡的,如今咱们要求OA流量按绿线放想走,Produce流量按蓝线方向走。

这时候就要咱们的Route-map介入了在出现链路断路的状况时流量能够进行切换。这时候咱们就能够采用能够走R1和R2之间的备份路线。

查看下R3的路由验证一下初始路由。

spacer.gif图片.png



R1:

#使用ACL抓取路由

access-list 1 permit 10.0.1.0

access-list 2 permit 10.0.2.0

#建立Route-map匹配路由10.0.1.0并设置Metric为10

route-map my-map permit 10

match ip address 1

set metric 10

#建立Route-map另外一条条目,匹配路由10.0.2.0并设置Metric值为20

route-map my-map permit 20

match ip address 2

set metric 20

#在OSPF进程中调用Route-map

router ospf 1

redistribute static route-map my-map subnet


R2:

access-list 1 permit 10.0.1.0

access-list 2 permit 10.0.2.0

route-map my-map permit 10

match ip address 1

set metric 20

route-map my-map permit 20

match ip address 2

set metric 10

router ospf 1

redistribute static route-map my-map subnet


在配置以后咱们再来看一下以前R3上路由的变化,发现如咱们所想要的走的方式同样,OA网走R1,Produce网走R2

spacer.gif图片.png


这里咱们进行一下故障分析,假设R3和R1之间的链路出现故障

查看R3路由表咱们能够发现一个有趣的现象,那就是路由的Metric值没变可是下一跳改变了。这是因为虽然R1,R3的路径断了,可是R1上依然经过R1和R2之间的链路重分布进了OSPF,所以,R1上的路由依然能够以OE2的形式传递出来。因此Metric值没有变。

spacer.gif

这时候好奇的小伙伴就有个疑问,那么到底流量是走R3->R2->R1->SW1->OA网呢,仍是R3->R2->SW2->OA网呢?请看下面的分析

spacer.gif图片.png


那么若是同时R2到SW2的这段链路也出现问题了呢?

那流量到R2以后会按蓝线,给到R1吗?在咱们这个环境中是没有办法的,R2会直接将这个数据直接丢弃。

那么解决办法是什么呢,这时候就可使用咱们以前讲过的BFD。具体解决办法请参考BFD的文档:《双向链路检测(BFD)之静态路由篇

设置了BFD以后,即可以按照R3->R2->R1->SW1->OA网的路径进行传播


因为篇幅的关系,其余Route-map的场景中应用咱们将会分篇来说。

本篇文档就介绍到这里,但愿能帮助到你。须要实验拓扑的小伙伴能够关注一下我,给我私信或者加个人QQ,我能够将个人实验拓扑分享给你。谢谢

相关文章
相关标签/搜索