BGP AS-PATH 正则表达式的理解

^  标志一个表达式的开始,如果不用这个字符,那么默认就没有开始的限制了。如:当使用permit  ^254,那么表示的意思就是和本地相连的AS是254传过来的路由全部都允许了。如果使用简单的permit 254,那么就是只要是经过了AS  254的路由,全部都被允许了,其实和permit _254_表达的意思相同。

$ 标志一个表达式的结束,如果不用这个字符,那么默认就没有结束的限制了。如:当使用了permit 254$,那么表示的意思就是起源于AS 254的路由全部被接受,如果permit 254那么见上面的解释。

? 标志匹配前面的一个字符,注意:只是匹配一个字符。?允许前面的字符出现一次或者是空。如:permit 254[0-9]?$,那么就是只匹配起源于AS 254/2540---2549的路由,注意?在CISCO路由器上用CTRL-V来替代。

* 标志匹配前面的一个字符,注意,和?不同的是,*允许前面的字符出现许多次或者是空,而?只允许匹配出现一次或者是空。如:permit  254[0-9]*$,那么就是只匹配起源于AS 254/2540---25499999........的路由   如果是permit  254[5-9],那么就是匹配起源自AS 254/2545-2549/25455-25459/254555-
254599............

+和*的区别就是*可以匹配空,但是+必须匹配一个值才行如permit ^254+$,表示起源于254或者2544/25444........而permit ^254*$则可以匹配起源于AS 25/254/25444。

句号   .标志匹配任意一个字符,包括空格,如:当我们使用permit .*的时候,表示匹配所有的路由。

_ 表示两个AS之间的连接符,如:permit ^254_253_252$, 表示起源于252,经过253和254的路由条目。

.   匹配任意单个字符,包括空格
*   匹配零个或多个模式的出现
+   匹配一个或多个模式的出现
?   匹配零个或多个模式的出现
^   匹配字符的开始
$   匹配字符的结束
_   匹配逗号,左大括号,右大括号,左小括号,右小括号
例:
c* 匹配行中任意多个c的出现,包括不出现c
c+ 匹配行中一个或多个字符c的出现
ca?b   匹配cb或者cab

[Aa]   匹配单个字符A或a,
[1-35-7]   匹配指为1,2,3,4,5,6,7的单个字符
^[bB]    匹配以b或B开头的行
[2-5]$   匹配以2,3,4,5结尾的行。在方括号中的脱字符号(^)用于反转字符的意义
[^1-3]   匹配字符0和4-9
路由含义
^$    从该as起源的路由
^2_   所有从直接相连的位于as 2的邻居来的路由
^2$   源于as2中的邻居路由
_3_   路由包含as 3
{1 2}   使用as-path 选项聚合路由,从as 1和as 2来的路由形成聚合
(65530)   与对等体形式联盟,该对等体在as 65530

as-path路径过滤器的格式为:
ip as-path access-list <#> permit <正则表达式>
ip as-path access-list <#> deny <正则表达式>

1        ^254_[0-9]*_253$    //////表示起源于253,本地连接为254,中间有一个任意AS
2        ^254_[0-9_]*_253$    //////起源于253,本地连接为254,中间包括多个任意AS
3        ^254_[0-9]?_253$      /////起源于253,本地连接为254,中间包括一个AS,{AS0-AS9或中间没有AS}    
4        ^254_[0-9]+_253$      /////起源于253,本地连接为254,相对于1来说,其中间必须存在一个AS,而1可以只有AS254,AS253
5        ^254_[0-9_]+253$      /////起源于253,本地连接为254,相对于2来说,其中间必须还经过一个AS或多个AS,而2可以只经过AS254,AS253


你可能感兴趣的:(表达式)