带你轻轻松松了解route-map

article/2025/10/23 15:51:30

一、Route-map概述

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运算。

二、配置命令

1.创建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

2.定义匹配条件

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
set community
set local-preference
set weight
set origin
set tag
default 关键字优先级低于明细路由

三、配置示例
在这里插入图片描述

1.路由重发布时关联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

2.路由重发布时关联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

这样就实现了需求。

四、其他细节

1.验证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 匹配的是下一跳出接口是这个接口的路由条目
在这里插入图片描述

2.验证match interface 的作用2

在这里插入图片描述

3.验证set ip default next-hop

route-map简明学习文档

先保证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。

http://chatgpt.dhexx.cn/article/AxLhy3nZ.shtml

相关文章

Route-Map个人理解及实验解析

Route-Map:功能性非常强的策略列表,可以用来过滤路由也可以调整路由的属性,自身具备过滤功能。 Route-Map的作用: 1.在重发布的过程中做route-map,重发布过程中可以改变路由的属性;(次要作用) 2.PBR 策略路…

Route map应用策略路由(上)

一、拓扑图: 二、配置说明: 1、根据拓扑图的配置,R4上面跑OSPF,下面走静态路由,R5和R6走默认路由上去。但是要注意的一点是R4上要加一条命令:default-information originate always (向OSPF区域通知一条默认…

CISCO ROUTE-MAP

强制指定源地址的下一跳 match定义匹配条件 match ip address匹配访问列表或前缀列表 match interface匹配下一跳出接口为指定接口之一的路由 match ip next-hop匹配下一跳地址为特定访问列表中被允许的那些路由 match metric匹配具有指定度量值的路由 match route-type匹…

Route-map扩展(讲解+配置)

目录 ——Route-map扩展一般形式: ——案列(1): ——案列(2): ——Route-map扩展一般形式: Ip policy-list aaa per/denyMatch …………(前缀列表/ACL....&#xff…

路由策略route-map

路由策略 route-map 定义 route-map,路由图,用于实现路由策略。 功能 部署 route-map NM permit 10 match ip address 1 2 match ip address 1 match ip address 2 match interface f0/0 f1/0 route-map NM deny 20 match ip address 2 set weight …

route-map的使用介绍

一、关于route-map route map可用于路由的再发布和策略路由,还经常使用在BGP中。策略路由实际上是复杂的静态路由,静态路由是基于数据包的目标地址并转发到指定的下一跳路由器,策略路由还利用和扩展IP ACL链接,以便提供更多功能的…

011mmap进程通信

LINUX学习笔记 mmap 进程通信1. mmap 函数声明及头文件包含1.1 参数说明1.2 mmap 通信demo 2. mmap 注意事项:2.1 mmap 函数的保险使用方法: 3. demo 父子进程间mmap通信4. demo 非血缘关系进程间mmap通信5. mmap通信与fifo和文件通信的差异6. 匿名映射(…

Linux mmap内存映射

一、什么是mmap mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系,函数原型如下 void *mmap(void *addr, size_t length, int prot, int flags,…

Linux下mmap

目录 一.mmap简介 二.为什么需要使用mmap 三.mmap的使用 四.mmap原理 一.mmap简介 什么是mmap了?从名字上来看是memory map也就是地址映射,是一种内存映射文件的方法。mmap是一个可以将一个文件或者其它对象映射到进程的地址空间实现磁盘的地址和进程虚…

Android 进程间通信机制(二) mmap 原理

一. 前言 Binder中一次拷贝的实现就是利用mmap(memory mapping)内存映射机制,我们来看看它的工作原理. 二. 参考文章 下面这几篇文章建议先好好阅读一下,都是总结的很好的文章, 每个人理解可能不一样 笔者也是看了好多博客文章和B站视频讲解, 然后加上自己的理解后 输出的一…

Linux mmap讲解

0 引言 Linux 提供了非常强大的 mmap(2) 系统调用; 它使开发人员能够将任何内容直接映射到进程虚拟地址空间 (VAS)。 此内容包括文件数据、硬件设备(适配器)内存区域,或只是通用内存区域。 在本文中,我们将只关注使用…

mmap内存映射

内存映射通信 一、mmap (memory_map) 1.1 简介 存储映射I/O (Memory-mapped I/O) 使一个磁盘文件与存储空间中的一个缓冲区相映射。于是当从缓冲区中取数据,就相当于读文件中的相应字节。于此类似,将数据存入缓冲区,则相应的字节就自动写入…

Linux编程之mmap示例

一、问题背景 Linux下,针对文件读写操作,一般有三个步骤: 1)把文件内容读入到内存中;调用read(系统调用),从内核态读取文件内容到虚拟内存; 2)修改内存中的内…

【mmap】深度分析mmap:是什么 为什么 怎么用 性能总结

目录 有什么用? 1、文件映射 2、分配内存(匿名文件映射) mmap基础概念 mmap内存映射原理 mmap和常规文件操作的区别 mmap优点总结 mmap相关函数 mmap使用细节 性能总结 效率对比 有什么用? 将一个文件或者其它对象映射…

mmap使用

linux进程虚拟地址空间中存在一段称为mmap的内存区,当申请用户内存较大时,如大于128kb,系统一般会通过mmap系统调用直接映射一片内存区,使用结束后再通过ummap系统调用归还。关于mmap的原理网上有很多文档,这里不再赘述…

MMAP技术

1. mmap 基础概念 mmap 即 memory map,也就是内存映射。 mmap 是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后&#xff…

mmap在嵌入式中的应用

大概雍正皇帝怎么也不会想到,自己在西历2022年的男生和女生眼里,会是截然不同的两种形象。 1 以我对身边同学朋友的观察,男生们大多爱看《雍正王朝》,他们眼中的雍正,大约是个推行了“火耗归公”、“摊丁入亩”等遏制…

Linux mmap原理

Linux mmap原理 前言Linux段页式内存管理mmapmmap内存映射原理文字概述mmap函数参数介绍源码解析1. 文件映射2. 缺页异常 mmap 和常规文件操作的区别mmap 使用的细节 小结 前言 mmap是linux操作系统提供给用户空间调用的内存映射函数,很多人仅仅只是知道可以通过mm…

Linux内存管理之mmap

目录 一. mmap系统调用 1. mmap系统调用 2. 系统调用munmap() 3. 系统调用msync() 二. 系统调用mmap()用于共享内存的两种方式: 三. mmap进行内存映射的原理 一. mmap系统调用 1. mmap系统调用 mmap将一个文件或者其它对象映射进内存。文件被映射到多…