1.技术背景

首先来初步认识一下route-map。看上图,我们在R2上,将OSPF路由重发布进RIP,前面已经说过了,在重发布时,可以使用metric关键字来设置路由被重发布进RIP后的metric,这里设置为1,那么直接的结果是,所有被注入到RIP的OSPF路由,metric都是1。那么如果我希望做些灵活性的调整呢?例如我希望在路由被注入RIP后,192.168.1.0路由的metric为1,2.0的metric为2如此这般呢?传统的重发布是没办法做到的。

那么就可以使用route-map这个工具,也就是说,我们可以在执行重发布的时候,关联一个route-map,来实现我刚才所说的这个功能。

2.Route-map的使用场景

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

  • PBR(策略路由)

  • NAT(网络地址转换)

  • BGP中的策略部署

  • 其他用途

3.route-map的匹配原则

首先明确一下,route-map是一个非常重要的工具,使用的范围非常广泛。在定义route-map的时候,我们采用route-map 关键字,关联一个自定义的参数,例如test来创建。一个route-map列表,由这个test字符串统一表示,你可以在一个route-map下定义多个序列,用十进制的序列号来表示,例如上图中的,10、20。

那么在每一个序列中,我们就可以来定义供策略部署的两个元素:匹配条件(match语句)、执行动作(set语句)。你可以定义多个条件,当条件被匹配时,就会去执行set指定的相关动作(set语句并非必须,例如如果route-map仅仅用于匹配感兴趣流量,那么就不需要set语句了)。在route-map被调用后,匹配动作将会从最小的序列号开始执行,如果该序列号中的条件都被匹配了则执行set命令,如果条件不匹配,则切换到下一个序列号继续进行匹配动作。
4.Route-map的特点

  • 使用match命令匹配特定的分组或路由,set修改该分组或路由相关属性。

  • Route-map中的每个序列号语句相当于于访问控制列表中的各行。

  • Route-map默认为permit,默认序列号为10,序列号不会自动递增,需要指定序列号

  • 末尾隐含deny any

  • 单条match语句包括多个条件时,使用逻辑or运算;多条match语句时,使用逻辑and运算。

5.route-map配置命令 

创建route-map

这个全局配置命令创建一个route-map,使用自定义的字符串来表示这个route-map,你可以在一个route-map下定义多个序列号。序列号在进行匹配动作时具有优先顺序。Permit/deny关键字在不同的部署场合中作用有所不同:
route-map test permit/deny 10
match x1
match x2,x3
set Y
route-map test permit/deny 20
match x4
set Y

定义匹配条件

match ip address 匹配访问列表或前缀列表
match length 根据分组的第三层长度进行匹配
match interface 匹配下一跳出接口为指定接口之一的路由
match ip next-hop 匹配下一跳地址为特定访问列表中被允许的那些路由
match metric 匹配具有指定度量值的路由
match route-type 匹配指定类型的路由
match community 匹配BGP共同体
match tag 根据路由的标记进行匹配
定义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
set community
set local-preference
set weight
set origin
set tag
default 关键字优先级低于明细路由

6.配置案例

路由重发布时关联route-map

在上图中,我们将OSPF路由注入到RIP,传统的做法,你只能够对所有注入进来的路由统一设置metric,但是有了route-map,我们可以在配置重发布命令时,关联一个已经定义好的route-map,在route-map中,我们可以通过创建多个序列号语句,进而对不同的路由,设置不同的属性或动作。

例如这个例子,我们希望注入进来后,192.168.1.0和192.168.2.0这两条路由的metric变为2跳,3.0变为3跳。
access-list 1 permit 192.168.1.0 
access-list 1 permit 192.168.2.0 
access-list 2 permit 192.168.3.0 
!!! 上面创建了两个ACL,分别匹配需要差分对待的路由
route-map test permit 10
match ip address 1 !! 当路由匹配ACL1时
set metric 2 !! 将metric修改为2
route-map test permit 20
match ip address 2
set metric 3
!
router rip
redistribute ospf 1  route-map test

路由重发布时关联route-map (典型案例)

这是一个非常典型的案例,上图中,网络环境是这样的,假设我们有R1、R2两台路由器,连接到了服务器群,服务器群使用两台三层交换机下挂着网络的服务器,服务器中我们规划了两个子网分别是生产的10.1.1.0/24,以及办公10.1.2.0/24。R3是接入路由器。R1、R2、R3跑OSPF。

R1、R2与三层交换机之间,假设是静态路由环境。那么现在,我们希望R3下的用户,在访问生产服务器到时候,流量往红色虚线箭头所指示的方向流动,访问办公服务器的时候往蓝色箭头方向流动。
那么首先R1及R2上,为了让他们自己能够到达服务器10.1.1.0及2.0网段,需要配置两条静态路由:
Ip route 10.1.1.0 255.255.255.0 10.1.254.1
Ip route 10.1.2.0 255.255.255.0 10.1.254.1 
接着为了让R3能够动态学习到生产及办公服务器的路由,现在需要将这两条静态路由重发布进OSPF,当然,在重发布的时候就有技巧了。 (原创博文,红茶三杯http://weibo.com/vinsoney版有,转载请注明出处)
R1的配置如下:
access-list 1 permit 10.1.1.0
access-list 2 permit 10.1.2.0
route-map cisco permit 10
match ip address 1
set metric 10
route-map cisco permit 20
match ip address 2
set metric 20
router ospf 100
redis static route-map cisco 
R2的配置如下:
access-list 1 permit 10.1.1.0
access-list 2 permit 10.1.2.0
route-map cisco permit 10
match ip address 1
set metric 20
route-map cisco permit 20
match ip address 2
set metric 10
router ospf 100
redis static route-map cisco 
  • 验证match interface 的作用1

一个route-map语句中,如果没有match语句,则匹配所有
Match interface :To distribute any routes that have their next hop out one of the interfaces specified, use the match interface command in route-map configuration mode中文上的理解是,match interface 匹配的是下一跳出接口是这个接口的路由条目

  • 验证set ip default next-hop
先保证R1、R3到10.1.1.0是有路由的,在R2上做测试:
  • 如果R2上没有任何的动、静态路由,且配置如下:

access-list 1 permit 10.1.1.0 0.0.0.255
route-map test permit 10
match ip address 1
set ip default next-hop 10.1.12.1
则PC ping 10.1.13.0,数据走R1;
  • 如果在上述基础上,R2增加到R3的默认路由,则PC到10.1.13.0网络的数据仍被丢给R1,也就是说ip defaut-next-hop的优先级高于默认路由。

  • No掉上面配置的默认路由,再配一条去往13.0网络的路由,下一跳为R3,则PC到13.0网络的数据切换到R3 证明ip default next-hop的优先级低于明细路由,高于默认路由 。

  • 再次验证,不用明细路由,而是用一条ip route 10.0.0.0 255.0.0.0的汇总路由,下一跳为R3,效果同上,也走R3。因此只要不是默认路由,只要路由表中存在这么一条匹配的路由,则优先走路由,没有路由的情况下走route-map。

转载于:https://blog.51cto.com/xiewl/1403624

route-map使用详解相关推荐

  1. android route命令详解,route cmd命令详解

    在本地 IP 路由表中显示和修改条目.使用不带参数的 route 可以显示帮助.接下来是小编为大家收集的route cmd命令详解,希望能帮到大家. route cmd命令详解 语法 route [- ...

  2. pythonpandas函数详解_对pandas中Series的map函数详解

    Series的map方法可以接受一个函数或含有映射关系的字典型对象. 使用map是一种实现元素级转换以及其他数据清理工作的便捷方式. (DataFrame中对应的是applymap()函数,当然Dat ...

  3. java map中的entry_java中Map及Map.Entry详解(组图)

    java中Map及Map.Entry详解(组图) 08-22栏目:技术 TAG:map.entry map.entry Map是java中的接口,Map.Entry是Map的一个内部接口. copyr ...

  4. java+getactionmap_Struts2 使用OGNL遍历map方法详解

    一.Action中的代码:MapAction.java package com.zx.demo.action; import java.util.ArrayList; import java.util ...

  5. 集合 (二) ----- Map集合详解

    相关文章: <集合 (一) ----- 集合的基本概念与Collection集合详解> <集合 (二) ----- Map集合详解> 文章目录 Map集合详解 一.Map集合基 ...

  6. hive linux进程数,控制Hive MAP个数详解

    控制Hive MAP个数详解 Hive的MAP数或者说MAPREDUCE的MAP数是由谁来决定的呢?inputsplit size,那么对于每一个inputsplit size是如何计算出来的,这是做 ...

  7. Linux系统下ifconfig和route配置网络详解

    Linux系统下ifconfig和route配置网络详解 ifconfig和route合用于配置网络(ip命令综合二者功能,此处不讲),通常在前者设置好ip地址等信息后,采用route命令配置路由.( ...

  8. ROUTE ADD 命令详解

    随笔- 18  文章- 59  评论- 37 route add命令详解 1.具体功能  该命令用于在本地IP路由表中显示和修改条目.使用不带参数的ROUTE可以显示帮助.  2.语法详解  rout ...

  9. route指令使用详解

    参考:route指令使用详解 1.观察路由表信息: route [-nee] -n :不要使用通讯协定或主机名称,直接使用 IP 或 port number: -ee :使用更详细的资讯来显示 2.输 ...

  10. Kotlin 基础——Map集合详解

    Kotlin基础--Map集合详解 一.声明和创建Map集合 二.使用Map的方法 三.遍历Map四种方式 四.可变的Map Kotlin的Map集合用于保存key-value对,其也被分为可变的和不 ...

最新文章

  1. svchost服务(DLL服务)
  2. 批量开物料账期的程序
  3. 北斗导航 | 多模多频实时GNSS软件接收机
  4. linux空间管理,教你玩转Linux—磁盘管理
  5. day4----函数-闭包-装饰器
  6. jinfo-jvm参数信息工具
  7. html给图片设置编剧,漫画简明编剧教程【4】如何设计角色
  8. Spring依赖处理过程源码分析
  9. 深入理解JavaScript内部原理(6): 闭包
  10. netcore读取json文件_NetCore 对Json文件的读写操作
  11. 超小股票行情查看软件
  12. javaeye API
  13. CDlinux wifi密码破解(pin码枚举)
  14. 如何将EAN13码批量输出成PDF
  15. php中strpos什么意思,PHP使用strpos()和strrpos()定位文本
  16. mysql的环境搭建
  17. 信号归一化功率_MQAM信号调制方式自动识别方法
  18. pcie读写ddr_5.3 存储器、I/O和配置读写请求TLP
  19. C语言实现了crontab表达式执行时间
  20. JIRA插件ScriptRunner安全漏洞SRPLAT-876

热门文章

  1. java-面向对象(上)
  2. 中国移动和中国电信两强相争,互攻对方优势业务
  3. !!最神奇、最实用和最精准的逃顶指标公式(通达信源码)
  4. python制作数据库报表_如何制作数据报表并实现自动化?
  5. 银行计算机考试范围,银行考试内容
  6. 移动快捷极简收银台 SDK 接入包支付接口
  7. C# invoke 和 begininvoke 用法
  8. ObjectARX_符号表----块和属性
  9. Objectarx创建天正菜单
  10. 简单小游戏——十步万度