BGP的正则表达式一般用在as-path中,常用的如下:

.(点):表示匹配任意一个字符,包括空格。

*:表示匹配零个或多个模式的出现。即前一个字符出现0次或多次。

+:表示匹配一个或多个模式的出现。即前一个字符出现1次或多次。

?:表示匹配零个或一个模式的出现。即前一个字符出现0次或一次。

^:表示匹配字符串的开始。

$:表示匹配字符串的结束。

_(下划线):匹配逗号、左大括号、右大括号、左小括号、右小括号、字符串的开始、字符串的结束或空格.

[]:匹配中括号中的任意字符之一。如[AB],则表示匹配A或B

|:匹配其中之一。如A|B,则表示匹配A或B。

-:表示的是范围。如[1-3],则表示匹配的是1、2、3中的单个字符。

有的时候,我们需要根据需求去过滤某些从其他AS学习来的BGP前缀,不传递到自己的peer。例如如下如:AS4上不需要学习AS1和AS12学习来的1.1.1.1/24、2.2.2.2/24和10.1.1.0/24

我们可以在R3上看出,邻居建立完成。

R3#sho ip b summ
BGP router identifier 3.3.3.3, local AS number 3
BGP table version is 6, main routing table version 6
5 network entries using 585 bytes of memory
5 path entries using 260 bytes of memory
5/4 BGP path/bestpath attribute entries using 620 bytes of memory
3 BGP AS-PATH entries using 72 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 1537 total bytes of memory
BGP activity 5/0 prefixes, 5/0 paths, scan interval 60 secs

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
13.1.1.1 4 1 19 22 6 0 0 00:14:13 2
23.1.1.2 4 12 18 22 6 0 0 00:14:10 1
34.1.1.4 4 4 18 18 6 0 0 00:14:16 1

且在R3上可以看到从AS1和AS12学习来的BGP前缀。

R3#sho ip bgp
BGP table version is 6, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 13.1.1.1 0 0 1 i  <<<<<<<
*> 2.2.2.0/24 23.1.1.2 0 0 12 i <<<<<<<<<
*> 3.3.3.0/24 0.0.0.0 0 32768 i
*> 4.4.4.0/24 34.1.1.4 0 0 4 i
*> 10.1.1.0/24 13.1.1.1 0 0 1 i <<<<<<<<<<

此时在R4上也可以看到对应的BGP前缀:

R4#sho ip bgp
BGP table version is 6, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 34.1.1.3 0 3 1 i
*> 2.2.2.0/24 34.1.1.3 0 3 12 i
*> 3.3.3.0/24 34.1.1.3 0 0 3 i
*> 4.4.4.0/24 0.0.0.0 0 32768 i
*> 10.1.1.0/24 34.1.1.3 0 3 1 i

此时可以使用多种方式过滤,下列是使用route-map匹配local产生的BGP前缀的方式:

R3#sho run | s route-map
neighbor 34.1.1.4 route-map cisco out
route-map cisco permit 10
match route-type local
R3#sho run | s r b
router bgp 3
no synchronization
bgp router-id 3.3.3.3
bgp log-neighbor-changes
network 3.3.3.0 mask 255.255.255.0
neighbor 13.1.1.1 remote-as 1
neighbor 23.1.1.2 remote-as 12
neighbor 34.1.1.4 remote-as 4
neighbor 34.1.1.4 route-map cisco out
no auto-summary

显示效果如下:

R4#cle ip b * soft

R4#sho ip bgp
BGP table version is 9, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path
*> 3.3.3.0/24 34.1.1.3 0 0 3 i
*> 4.4.4.0/24 0.0.0.0 0 32768 i

其他的两种方式:

在R3上配置:

1、直接使用filter-list调用as-path access-list

R3(config)#ip as-path access-list 1 permit ^$
R3(config)#router bgp 3
R3(config-router)#nei 34.1.1.4 filter-list 1 out

PS:也可以使用route-map匹配as-path access-list:

R3(config)#route-map Test per 10
R3(config-route-map)#match as-path 1

R3(config-route-map)#exit
R3(config)#router bgp 3
R3(config-router)#nei 34.1.1.4 route-map Test out

2、使用deny不需要的AS的前缀,然后permit所有。

R3(config)#ip as-path access-list 1 deny _1_
R3(config)#ip as-path access-list 1 deny _12_
R3(config)#ip as-path access-list 1 permit .*
R3(config)#router bgp 3
R3(config-router)#nei 34.1.1.4 filter-list 1 out

Other:测试正则表达式匹配的前缀:

命令

R3#sho ip bg regexp ?
LINE A regular-expression to match BGP AS paths. Use "ctrl-v ?" to enter "?"

R3#sho ip bgp ?
A.B.C.D IP prefix <network>/<length>, e.g., 35.0.0.0/8
A.B.C.D Network in the BGP routing table to display
all All address families
cidr-only Display only routes with non-natural netmasks
community Display routes matching the communities
community-list Display routes matching the community-list
dampening Display detailed information about dampening
extcommunity-list Display routes matching the extcommunity-list
filter-list Display routes conforming to the filter-list
inconsistent-as Display only routes with inconsistent origin ASs
injected-paths Display all injected paths
ipv4 Address family
ipv6 Address family
labels Display Labels for IPv4 NLRI specific information
neighbors Detailed information on TCP and BGP neighbor connections
nsap Address family
oer-paths Display all oer controlled paths
paths Path information
peer-group Display information on peer-groups
pending-prefixes Display prefixes pending deletion
prefix-list Display routes matching the prefix-list
quote-regexp Display routes matching the AS path "regular expression"
regexp Display routes matching the AS path regular expression
replication Display replication status of update-group(s)
rib-failure Display bgp routes that failed to install in the routing
table (RIB)
route-map Display routes matching the route-map
summary Summary of BGP neighbor status
template Display peer-policy/peer-session templates
update-group Display information on update-groups
vpnv4 Address family
| Output modifiers

<cr>

BGP前缀过滤(正则表达式)的更多相关文章

  1. HCNP Routing&Switching之BGP路由过滤和AS-Path-Filter

    前文我们聊了下通过修改BGP路由属性来影响路由,从而达到控制BGP路由的目的:回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15495585.html:今天我们 ...

  2. BGP - 不同 AS 间运行的协议

    在之前介绍的网络场景中,ERGRP,OPSF,RIP 等都是运行在单独一个 AS(自治系统之间).这些协议统称为 IGP - 内部网关协议 ,目的主要是为自治系统内发现邻居和计算路由,从而找到合适的路 ...

  3. hbase 基本的JavaApi 数据操作及数据过滤(filter)

    本文主要是hbase的表操作.数据操作.数据查询过滤等,如果对JDBC或ADO有了解,容易理解HBASE API. hbase版本是2.0. 1.为了方便先贴helper的部分代码(文末git上有完整 ...

  4. hbase各种遍历查询shell语句 包含过滤组合条件

    import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Li ...

  5. 专家告诉你!如何避免黑客BGP劫持?

    BGP前缀劫持是针对Internet组织的持久威胁,原因是域间路由系统缺乏授权和身份验证机制. 仅在2017年,数千起路由事件导致代价高昂的中断和信息拦截,而问题的确切程度未知.尽管在过去20年中已经 ...

  6. 通过正则表达式实现简单xml文件解析

    这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...

  7. ES5 对数组方法的扩展 以及 正则表达式

    ES5 对数组的扩展 forEach map some every indexOf lastIndexOf forEach 与 map 语法: 数组.forEach(function ( v, i ) ...

  8. [置顶] 正则表达式应用:匹配IP地址

    都知道iP地址有四个数值,三个点号组成.三个数值的具体范围为0到255,为了使用正则表达式匹配就必须分析IP地址的组成 1先分析数值,2再组合数值和点号 1先分析数值 IP地址的数字范围从0到255, ...

  9. CCIE路由实验(3) -- BGP高级部分

    当一个AS包含多个IBGP对等体时,路由反射器非常有用.因为IBGP客户只需要和路由反射器建立邻居关系,从而降低了IBGP的连接数量.路由反射器和它的客户合称为一个簇.路由反射是克服IBGP水平分割的 ...

随机推荐

  1. 5.springboot-------Yaml

    springboot配置文件: Yaml是什么玩意? Yaml的基本语法 编写规则 1.大小写敏感,同json: 2.通过缩进表示层级关系:符号含义 注意事项:字符串默认不需要加上单引号或双引号. # ...

  2. Go_sqlx和占位符

    sqlx使用 第三方库sqlx能够简化操作,提高开发效率. 安装 go get github.com/jmoiron/sqlx package main import ( "fmt" ...

  3. 每天进步一点点------Xilinx IP 内核

    ISE 设计套件 11.1 版本中提供了众多全新的 IP 内核.数学函数:Multiply Adder v2.0 —— 执行两个操作数的乘法,并采用 XtremeDSP™ 解决方案切片将完全精确的乘积 ...

  4. CentOS6.5-6.9安装 docker

    安装docker yum -y install docker-io 备注:查看内核版本uname -r ;卸载docker版本命令 yum remove docker 更改配置文件 vim /etc/ ...

  5. 2019 ICPC 徐州网络赛 B.so easy (并查集)

    计蒜客链接:https://nanti.jisuanke.com/t/41384 题目大意:给定n个数,从1到n排列,其中有q次操作,操作(1) 删除一个数字 // 操作(2)求这个数字之后第一个没有 ...

  6. POJ 3177 Redundant Paths (tarjan边双连通分量)

    题目连接:http://poj.org/problem?id=3177 题目大意是给定一些牧场,牧场和牧场之间可能存在道路相连,要求从一个牧场到另一个牧场要有至少两条以上不同的路径,且路径的每条pat ...

  7. noobSTL-0-开题报告

    noobSTL-0-开题报告 STL介绍 STL是Standard Template Library的简称,中文名标准模板库. STL是一种泛型编程.面向对象编程关注的是编程的数据方面,而泛型编程关注 ...

  8. 安装Oracle进行先决条件检查时显示 Environment variable:"PATH" 失败”

    问题已解决:安装时exe可执行文件的目录也不能有中文,安装时注意目录一定要按oracle的格式.运行安装程序时,要用右键--> 要以管理员方式启动. 原文: 用到oracle数据库,由于电脑装的 ...

  9. my97日期控件弹出位置显示异常

    使用my97日期选择控件的时候,如果整个页面是有滚动条的,根据触发显示日期的控件的父控件的position不同会显示不同的情况 1.position不为fixed则滑动滚动条,显示的日期层不会出现异常 ...

  10. 如何通过源码包的方式在linux安装python36

    背景: python34的安装非常简单,直接用yum就可以安装,但是安装最新版的python36通过yum方式是不行的,需要通过源码包进行安装 具体步骤如下: 1.安装openssl静态库[pip3安 ...