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

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.xdnf.cn/news/16560.html

相关文章:

  • DFT不同维度中gate、cell、instance介绍
  • 智能体产品化的关键突破:企业智能化转型的“最后一公里”如何迈过?
  • Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
  • Jupyter Notebook安装使用
  • WebRTC核心组件技术解析:架构、作用与协同机制
  • Java容器化实践:Docker+K8s部署Spring Boot应用全流程
  • LLM—— 基于 MCP 协议(Streamable HTTP 模式)的工具调用实践
  • 《设计模式之禅》笔记摘录 - 11.策略模式
  • 二叉树的学习
  • 【Java】批量生成Excel放入文件夹并打zip压缩包
  • 八种AI记忆术,重构智能体的“大脑”
  • RFID 系统行业前沿洞察:技术跃迁与生态重构
  • 线性代数常见的解题方法
  • aws(学习笔记第五十课) ECS集中练习(2)
  • 【MySQL 数据库】MySQL索引特性(二)页目录(B和B+树)(非)聚簇索引 索引操作
  • APM32芯得 EP.27 | 告别IDE,为APM32F411打造轻量级命令行开发工作流
  • 《Computational principles and challenges in single-cell data integration》
  • Vite 模块动态导入之Glob导入
  • 微算法科技MLGO突破性的监督量子分类器:纠缠辅助训练算法为量子机器学习开辟新天地
  • PCB学习笔记(一)
  • LeetCode 面试经典 150_数组/字符串_轮转数组(6_189_C++_中等)(额外数组;转置)
  • dify + mcp 实现图片 ocr 识别
  • 实例教学FPN原理与PANet,Pytorch逐行精讲实现
  • [leetcode] Z字型变换
  • dify离线插件打包步骤
  • 手撕设计模式——智能家居之外观模式
  • C++线程详解
  • C++11 std::function 详解:通用多态函数包装器
  • 从0开始学习R语言--Day62--RE插补
  • 【ssh】ubuntu服务器+本地windows主机,使用密钥对进行ssh链接