当前位置: 首页 > news >正文

BGP高级特性之正则表达式

一、概述

        AS_Path属性实际上可以看作是一个包含空格的字符串,所以可以通过正则表达式来 进行匹配。正则表达式就是用一个“字符串”来描述一个特征,然后去验证另一个“字符 串”是否符合这个特征。BGP的AS_Path过滤器主要是定义AS_Path正则表达式,然后去匹 配BGP路由的AS_Path属性信息,从而实现对BGP路由信息的过滤。

        正则表达式描述了一种字符串匹配的模式,由普通字符(例如字符a~z)和特殊字符 (或称“元字符”)组成。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进 行匹配。正则表达式一般具有以下功能。

        ① 检查字符串中符合某个规则的子字符串,并可以获取该子字符串。

        ② 根据匹配规则对字符串进行替换操作。

二、正则表达式的组成

         正则表达式由普通字符和特殊字符组成。

① 普通字符匹配的对象是普通字符本身。包括所有的大写和小写字母、数字、标点 符号以及一些特殊符号。例如a匹配abc中的a,202匹配202.113.25.155中的202,@匹配 xxx@xxx.com中的@。

② 特殊字符配合普通字符匹配复杂或特殊的字符串组合。表15-7是对特殊字符及其 语法意义的使用描述。

具体的正则表达式特殊字符可见下表

下面是一些常用的AS路径正则表达式。

① ^$:表示匹配的字符串为空,即AS_PATH为空,表示只匹配本地路由。

② .* :表示匹配任意字符串,即AS_PATH为任意,表示匹配所有路由。

③ ^100:表示匹配的字符串开始为100,即AS_PATH最左边AS前3位(最后一个 AS)为100,后面可能还有AS,表示匹配由AS100发来的所有路由,包括从AS100始发和 由AS100转发的路由。

如果使用第三条表达式去匹配^200路由的话,则以下所有的路由都可以匹配到,因为AR2在传递给AR1的时候,AS_Path属性最开始的都为200。

④ ^100_:表示匹配的字符串开始为100,后面为符号,即AS_PATH最左边AS(最后 一个AS)为100,后面一定还有其他AS,表示匹配由AS100转发(路径中至少有两个 AS)的路由。比较前一个表达式^100可以看出,“_”可以用来限制仅匹配由某AS转发的路 由。

如果使用第四条表达式匹配200的路由的话,只能够匹配到下面两条路由,因为第一条只有一个AS

⑤ _100$:表示匹配的字符串最后为100,即AS_PATH最右边AS(起始AS)为100, 表示匹配AS100始发的路由。

如果使用第五条表达式去匹配_400$路由的话,只能够匹配到AS 200 300 400这条路由,因为只有这条在最后说明这条路由是由400产生的。

⑥ _100_:表示匹配的字符串中间有100,即AS_PATH中间有AS100,表示匹配经过 AS100,且在AS路径中,AS100既不是第一个AS,也不是最后一个AS的路由。

如果使用第六条表达式匹配200的路由的话,以下所有的路由都可以被匹配,如果匹配300的路由的话,只有下面两条被匹配。

示例:

^100_

起始符为 100 代表邻居的 AS 为 100. 后面跟着下划线,代表空格或者结束符 , 因此 也可以表示 ^100$ 。所以可以匹配出所有来自于邻居的 AS 为 100 的路由,或者只有的为 100 的路由。如 AS_PATH 为 (100200) 、 (100 200 300) 、 (100) 。

^100_.

与示例 1 类似,但是下划线后跟着小数点 , 这个点代表羊个字符或者空格, 仅能匹配 邻居的为 100 的路由 , 如 AS_PATH 为 (100200) 、 (100 200 300) 等,但走不能匹配出 AS PATH 中只有 100 的 AS 号 。

^100.

100 后面跟着小数点,则能够匹配前面三位为 100 的 AS 号 , 或者邻居为 100 的 AS 号 , 如:的_PATH 为 (100200) 、 (100 200 300) 等或者 (100 1)、 (10012) 等。

^100

与示例 3 不同的是 . 100 后面不合小数点 , 则能够匹配出所有前三位为 100 的 AS 号 , 范围更广,知的 PATH 为 (100 200) 、 (100 200 300) 等,或者 (100 1)、 (10012 ),也 可以匹配出邻居为 100 的的号。

100$

$代表结束符 , 这条匹配所有以 100 结束的 AS 号,因此匹配的是所有始发 AS 号为 100 的路由.如 AS PATH 为 (200 100) 、 (200 300 100) 等。

^$

一个起始符 紧跟着 一个结束符 ,代表的 PATH 列表为空 ,用来匹配所有本的产生的 路由,因为本的内传递的路由都不会携带 AS 号。

.*

^[0-9]+$

^代表起始,+代表前面的字符出现1次或多次$代表结束,所以这个表达式代表匹配所有始发AS传递的路由

代表所有路由,类似 ACL 中的 any 作用,任意的 AS_PATH 列表。

【示例1】创建序号为1的AS路径过滤器,允许AS路径中以10开始的路由通过。

<Huawei> system-view
[Huawei] ip as-path-filter 1 permit ^10

【示例2】创建序号为2的AS路径过滤器,允许AS路径中包含20的路由通过。

<Huawei> system-view
[Huawei] ip as-path-filter 2 permit [20]

【示例3】创建序号为3的AS路径过滤器,不允许AS路径中包含30的路由通过。

<Huawei> system-view
[Huawei] ip as-path-filter 3 deny [30]
[Huawei] ip as-path-filter 3 permit .*

以上就是本章的全部内容了,感谢大家的浏览观看!文章若有错误或疑问可联系博主删除更改。

http://www.lryc.cn/news/604711.html

相关文章:

  • vue npm install卡住没反应
  • ISO 26262 汽车功能安全(腾讯混元)
  • 在 CentOS 系统上安装 Docker
  • Kotlin -> Kotlin Lambda 表达式与 Function 接口的关系
  • 深入理解 Kotlin Flow:异步数据流处理的艺术
  • 在线教育场景下AI应用,课程视频智能生成大纲演示
  • Jupyter Notebook 中显示图片、音频、视频的方法汇总
  • Python 使用pandas库实现Excel字典码表对照自动化处理
  • C++:STL中list的使用和模拟实现
  • 《C++二叉搜索树原理剖析:从原理到高效实现教学》
  • CH347使用笔记:CH347作为FPGA下载器的几种方式
  • 大语言模型API付费?
  • 【PZ7020-StarLite 入门级开发板】——FPGA 开发的理想起点,入门与工业场景的双重优选
  • PyTorch API
  • PyTorch 生态四件套:从图片、视频到文本、语音的“开箱即用”实践笔记
  • 汽车电子控制系统开发的整体安全理念
  • 为什么网站需要高防IP?高防IP的优势是什么?
  • 打造高效、安全的期货资管交易平台:开发流程与关键要素解析
  • 企业级应用安全传输:Vue3+Nest.js AES加密方案设计与实现
  • 开发避坑短篇(9):解决升级Vue3后slot attributes废弃警告
  • 从黑箱到理解模型为什么(模型可解释性与特征重要性分析)
  • 力扣54:螺旋矩阵
  • git rebase 操作记录
  • 《Java 程序设计》第 11 章 - 泛型与集合
  • chukonu阅读笔记(2)
  • 【LY88】双系统指南及避坑
  • 阿里云AI代码助手通义灵码开发指导
  • 【读书笔记】设计数据密集型应用 DDIA 第三章:存储与检索
  • OPCap:Object-aware Prompting Captioning
  • PHP/Java/Python实现:如何有效防止恶意文件上传