BGP高级特性—— AS-PATH 正则表达式_bgp正则表达式-程序员宅基地

技术标签: # CCNP  CCIE-U  路由  网络  正则表达式  BGP  

 目录

一、正则表达式元字符特殊字符

二、字符组合路由含义:

三、实列理解:

四、应用:

(1)应用——过滤:

(2)应用——选路:


使用 正则表达式目的:匹配BGP路由,进行选路和过滤和执行其他操作

一、正则表达式元字符特殊字符


元字符特殊字符


匹配内容


              .


任何单一字符,包括空格


             [ ]


在方括弧中罗列的任何字符


             [^100]


除了在方括弧中罗列的字符外任何字符(^必须放置在字符列表之前)(除了AS 100)


               -


(连字符)在由连字符所分隔的两个字符之间的任意字符


              ?


字符或模式出现0次或1


              *


字符或模式出现0次或多次


              +


字符或模式出现1次或多次


              ^


一行的开始


              $


一行的结束


               |


或者


              _


(下划线)相当于逗号

—————————————————————————————————————————————————————— 

二、字符组合路由含义:

  • ^$            从本地as起源的路由

^2_          所有从直接相连的位于as 2的邻居来的路由, 始发于AS 2
_3_          经过as 3

.*             所有BGP路由

^2$          源于as2中的邻居路由
 

_300$     匹配最后一个AS 时as 300的

^12.        匹配12以及 120~129的BGP路由

————————————————————————————————————————————————————

三、实列理解:

  •   2、描述:匹配行的起始和结束

考虑下面的AP_PATH过滤器:
(1)ip as-path access-list 20 permit 850

 含义:凡是AS号码里面有850的路由都能匹配出来
该匹配任何包含字符串850AS_PATH。匹配的AS_PATH例如:(850),(235850155)和(35685850310)等。无论是是属性中唯一的串或者属性中多个AS号中的一个甚至是属性中一个很大的AS号中的一部分,该匹配都成功。

 
假设你只想匹配包含唯一AS850AS_PATH,你必须描述行的开始和结束。使用补字号(^)匹配行的开始,美元符($)匹配行的结束:
(2)ip as-path access-list 20 permit ^850$

 含义:只匹配 AS 850
这样表示表达式的开始紧接一个字符串850,然后紧接行的结束符。
你还可以使用两个描述来匹配一个空的AS_PATH
(3)ip as-path access-list 21 permit ^$

 含义:匹配本地AS产生的路由
在上述情况,正则表达式匹配行的开始紧接行的结束;如果行的开始与行的结束间存在任何字符则匹配不成功。

3、括弧:匹配字符集和

括弧是你能指定单字符的范围。
(1)ip as-path access-list 22 permit ^85[0123459]$

含义:匹配包含单一AS号850,851,852,853,854,855或859的AS_PATH。
上述过滤器匹配包含单一AS850851852853854855859AS_PATH
如果字符的范围连续,你可以只指定序列中开始和结束的字符:
(2)ip as-path access-list 22 permit ^85[0-5]$

含义:匹配AS号为850~855的路由


4、否定:匹配除字符集和外的其他字符

当在括弧中使用加字符时,将否定括弧中指定的范围。如果是正则表达式将匹配范围外的任何内容。例如:
(1)ip as-path access-list 24 permit ^85[^0-5]$

含义:匹配AS以85开头的路由,排除AS号为850~855,其他的都可以匹配(856 857 858 859)
该过滤器除了多一个加字符以外与上一个过滤器类似,指定了不是0~5”。该正则表达式将匹配856~859范围内的单个AS号。

5、通配符:匹配任何单一字符

点(.)匹配任何单一字符。单一字符可能是一个空的。考虑下面过滤器:
ip as-path access-list 24 permit ^85.
含义:该过滤器匹配一个由AS850~859开始的AS-PATH。由于“.”可以匹配一个空格,AS85也能匹配成功。


6、替代:匹配字符串集合中的一个

|)用作表示一个操作。即(|)任何一边的字都可以匹配。例如:
ip as-path access-list 25 permit ^(851|852)$
含义:该过滤器匹配单个AS号:851或852的AS_PATH。

你可以扩展功能来作多于两个可能性的选择:
ip as-path access-list 26 permit ^(851|852|6341|53)$


7、选择字符:匹配一个可能存在也可能不存在的字符

问号(?)匹配字的0个或一个实例。例如
ip as-path access-list 27 permit ^(850)?$

含义:匹配AS-path里面,没有包含850或者只包含一个850的BGP路由
该过滤器匹配一个单一AS850AS_PATH或者匹配一个空的列表。注意这里的圆括弧,表示元字符“?”应用在整个AS号上。

ip as-path access-list 27 permit ^850?$

含义:如果表达式使用850?,元字符特殊字符只应用在最后一个字符上(0)。该表达式匹配85或者850。

8、重复:匹配许多字符的重复

你可以使用两个元字符特殊字符来匹配重复的词:星号(*)匹配0次或多次重复,加号(+)匹配1次或多次重复。例如
ip as-path access-list 28 permit ^(850)*$
含义:该过滤器匹配空的AS列表或包含0个或多个的AS号为850的。即AS路径可以是(850850),(850850850)等。

 ip as-path access-list 29 permit ^(850)+$
含义:下面的过滤器功能类似,只是要求列表中至少包含1 AS850


9、分界线:描述多个字

分界线(_)用作描述分隔分别指定的一串字。例如假设你想匹配指定的AS_PATH(561014828413)。过滤器可以如下所示:


ip as-path access-list 30 permit ^5610_148_284_13$

含义:必须第一个是5610—148—284—13,严格按照顺序匹配,因为有^行的开始与结束符号

过滤器指定了行的开始与结束,只有AS_PATH561014828413)才能匹配。
下划线匹配行的开始、行的结束、逗号或空格。注意下面过滤器与上述过滤器的区别:


ip as-path access-list 31 permit -5610_148_284_13_

含义: 一个AS列表只要包含这几个即可,顺序没有关系
在第二个过滤器中,只要求指定的序列包含在AS_PATH中,并不要求是唯一的属性。所以AS_PATH(561014828413)AS_PATH(2315561014828413) AS_PATH(5610148284133005)等都能匹配。

10、放到一起:一个复杂的例子

将多个元字符特殊字符混合是用来匹配一些复杂的字符串才能显示正则表达的真正威力。考虑下面的过滤器:
ip as-path access-list 10 permit ^(550)+[880|2304]?_1805_.*

—————————————————————————————————————————————————————— 

四、应用:

(1)应用——过滤:

Ip as-path access-list 1 deny  _300_
Ip as-path access-list 1 per .*
Router bgp 200
Nei 3.3.3.3 filter-list 1 out

实现功能:3.3.3.3发送通告路由时候过滤掉经过AS 300的路由

(2)应用——选路:

Ip as-path access-lsit 1 per ^65530$
Route-map aaa per 10
  Match as-path 1
  Set metric 100

Route bgp 100
Aggregate-add 172.16.0.0 255.255.0.0 as-set  advertise-map aaa
匹配172.16.0.0 BGP路由中具有AS 65530的给予聚合,聚合后的路由MED值为100

实现功能:匹配172.16.0.0 BGP路由中具有AS 65530的给予聚合,聚合后的路由MED值为100

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_62311779/article/details/123143294

智能推荐

在RedHead中安装Oracle-程序员宅基地

文章浏览阅读163次。在RedHead中安装Oracle 配置Linux系统下Oracle的安装环境. 1.检查和更新所需软件包. # rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-de..._redhead oracle

Tomcat 弱口令及文件上传漏洞复现_tomcat byte-程序员宅基地

文章浏览阅读2.9k次,点赞5次,收藏12次。目录0x01 漏洞介绍0x02 环境部署:0x03 漏洞复现0x01 漏洞介绍漏洞描述漏洞编号受影响版本0x02 环境部署:搭建一次,复现百次靶机 ip:192.168.30.209kali ip:192.168.30.1820x03 漏洞复现从github下载tomcat8的源码,我们可以查看到tomcat的默认登录名为tomcat,并且密码也为tomcat点击Server Status进行登录弱口令tomcat tomcat 直接登录成功发现文件上传点_tomcat byte

ICML RL4RealLife|聚焦强化学习落地难题,学术与商业巨头齐聚【7月23日,不见不散】...-程序员宅基地

文章浏览阅读432次。深度强化学习实验室官网:http://www.neurondance.com/论坛:http://deeprl.neurondance.com/近年来,强化学习(RL)在游戏界的成功在AI..._强化学习落地为什么这么难

1个网卡设置多个IP作用_一个网卡多个ip作用-程序员宅基地

文章浏览阅读3.1w次。 一个网卡设置多个IP的作用就是连接多个网段。 举个例子: 有两个局域网LAN1(192.168.0.0/24),LAN2(192.168.1.0/24),LAN1和LAN2通过交换机物理相连。因为LAN1的网络号是192.168.0,LAN2的网络号是192.168.1,所以LAN1下的主机和LAN2下的主机无法通讯。如何才能让他们相互通讯呢?有两种方法。【方法一】通过路由器连..._一个网卡多个ip作用

轨道车辆垂向振动Matlab建模与仿真,基于matlab/simulink的车辆建模与故障分析-程序员宅基地

文章浏览阅读1.7k次。随着铁路行业高速发展,列车运行速度逐渐提高,铁路安全越来越受到人们的重视,如何保证铁道车辆运行安全及其故障监测成为一个亟待解决的重大课题。客车车辆在结构上的故障主要有一系弹簧断裂、减振器失效、空气弹簧漏气、高圆弹簧断裂、车轮踏面擦伤、轴承故障以及蛇形减震器故障等等[1],各种故障对车辆运行品质有不同程度的影响,严重情况下可能会威胁到车辆的安全运行。因此,对车辆故障的监测与识别成为了保证车辆安全运行..._列车垂向动力学建模

IP地址的分类及范围详解:A、B、C、D、E五类是如何划分的_a类地址-程序员宅基地

文章浏览阅读10w+次,点赞217次,收藏1k次。IP地址类型 最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。A类IP地址 一个A类IP地址由1..._a类地址

随便推点

STM32 USB相关知识扫盲-程序员宅基地

文章浏览阅读1.8w次,点赞43次,收藏330次。STM32 USB相关知识扫盲1、基础知识STM32基础型(F1系列)所带的USB是全速。2、电气属性USB的通信都是由主机发起的,这一点与IIC协议是类似的。2.1 数据线USB使用差分传输模式,有两条数据线,分别是:USB数据正信号线,USB Data Positive,即USB-DP线,简写为D+USB数据负信号线,USB Data Minus, 即USB-DM线,简写为D-剩下的就是电源线(5V-Vbus)和地线(GND)。2.2 USB主机是如何识别设备是高速设备/全速_stm32 usb

gPRC简介以及Java中使用gPRC实现客户端与服务端通信(附代码下载)_gprc java client ip-程序员宅基地

文章浏览阅读3.1k次。场景ProtoBuf的介绍以及在Java中使用protobuf将对象进行序列化与反序列化:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108667427Thrift介绍以及Java中使用Thrift实现RPC示例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108689413之前讲过Protobuf以及Thrift,下面介绍GPRC。注:_gprc java client ip

JavaEE的渊源_java ee还-程序员宅基地

文章浏览阅读502次。JavaEE的渊源1. JavaEE的起源2. JavaEE与Spring的诞生3. JavaEE发展历程(2003-2007)4. JavaEE发展历程(2009-至今)5. Java的Spec数目与网络结构_java ee还

【图像隐藏】基于DCT算法实现数字水印嵌入+检测+攻击含Matlab源码_基于dct算法归一化相关系数nc测试结果-程序员宅基地

文章浏览阅读1.9k次。1 简介介绍了数字水印的产生、发展及其应用,讨论了数字水印的分类,提出了图像的预处理思想,利用MATLAB中的剪切函数、缩放函数,以及调整图像直方图的方法对图像进行预处理,并用MATLAB进行了仿真.实验结果表明:预处理在DCT数字水印算法的前期工作中有较好作用.随着计算机网络的迅猛发展,信息安全越来越受关注.信息隐藏技术是一种重要的信息安全技术,而数字图像水印算法又是信息隐藏技术研究的一个热点.水印加密和水印嵌入是水印算法的关键问题.本文提出一种新的混沌置乱水印加密算法:首先使用Arnold映射._基于dct算法归一化相关系数nc测试结果

Python3 Tkinter 实例教学 (十五)标签Label 设置鼠标悬停样式 cursor_lable鼠标悬浮-程序员宅基地

文章浏览阅读2.8k次。Python3 Tkinter 实例教学 (十五)标签Label 设置鼠标悬停样式 cursor本节介绍如何给一个标签设置边距构造方法:代码实例:运行结果:本节介绍如何给一个标签设置边距Label 作为一个最常用的控件,能够展示一些文本或者图片或者文本和图片的组合使用构造方法:Label(父对象, cursor=样式)代码实例:# -*- coding:utf8 -*-from tkinter import *root = Tk()root.title("Label Demo")r_lable鼠标悬浮

好用的APP_艾拉浏览器-程序员宅基地

文章浏览阅读87次。电脑APPAX Math、Math type 数学公式编辑器oCam:录屏软件Everything:快速查询电脑文件Potplayer:视频播放器Wallpaper Engine:桌面壁纸天若OCR文字识别:通过截屏的方式识别区域文字Snipaste:快速截屏软件手机APP藏书管:万能图书库Vue log:拍Vlog神器艾拉浏览器:免费看各种高质量漫画、竖屏滑动,观看体验满分喵喵折:淘宝购物,对比历史价格计算机二级宝典:计算机二级考试选择题刷题必备剪映:手机剪辑视频._艾拉浏览器