AS_Path Filter的应用

华为:

在同一个过滤器编号下,可以定义多条过滤规则(permit或deny模式)。在匹配过程中,这些规则之间是“或”的关系,即只要路由信息通过其中一项规则,就认为通过由该过滤器编号标识的这组AS_Path过滤器。在下文中,将分不同的场景来对AS_Path过滤器的作用进行举例说明。

 

表1 BGP AS_Path支持的元字符描述

元字符

含义

示例

.

匹配除“\n”之外任何单个字符,包括空格。

.*表示匹配任意字符串,即AS_Path为任意,可以用来匹配所有路由。

说明:

通常定义了多个deny模式的ip as-path-filter子句之后,会定义一个ip as-path-filter as-path-filter-name permit .*子句,用于允许其他路由通过。

*

之前的字符在目标对象中出现0次或连续多次。

参考上例。

+

之前的字符在目标对象中出现1次或连续多次。

65+表示6在AS_Path的首位,而5在AS_Path中出现一次或多次,那么:
  • 如下字符串都符合这个特征:65,655,6559,65259,65529等。
  • 如下字符串不符合这个特征:56,556,5669,55269,56259等。

|

竖线左边和右边的字符为“或”的关系。

100|65002|65003表示匹配100、65002或65003。

^

之后的字符串必须出现在目标对象的开始。

^65表示匹配以65开头的字符串,那么:
  • 如下字符串都符合这个特征:65,651,6501,65001等。
  • 如下字符串不符合这个特征:165,1650,6650,60065等。

$

之前的字符串必须出现在目标对象的结束。

65$表示匹配以65结尾的字符串,那么:
  • 如下字符串都符合这个特征:65,165,1065,10065,60065等。
  • 如下字符串不符合这个特征:651,1650,6650,60650,65001等。
说明:

^$表示匹配空字符串,即AS_Path为空,通常用来匹配本地始发路由。

(xyz)

一对圆括号内的正则表达式作为一个子正则表达式,匹配子表达式并获取这一匹配。圆括号内也可以为空。

100(200)+可以匹配100200、100200200、……

[xyz]

匹配方括号内列出的任意字符。

[896]表示匹配含有8、9或6中任意一个字符。

[^xyz]

匹配除了方括号内列出的字符外的任意字符(^号在字符前)。

[^896]表示匹配含有8、9或6这几个字符之外的任意一个字符。

[a-z]

匹配指定范围内的任意字符。

[2-4]表示匹配2,3,4;[0-9]表示匹配数字0~9。
说明:

方括号内“[]”只能填写数字0到9。例如,如果需要匹配735~907,则需要写成(73[5-9]|7[4-9][0-9]|8[0-9][0-9]|90[0-7])。

[^a-z]

匹配不在指定范围内的任意字符。

[^2-4]表示匹配除2,3,4外的其他字符;[^0-9]表示匹配除数字0~9外的其他字符。

_

匹配一个符号,包括逗号、左大括号、右大括号、左括号、右括号和空格,在表达式的开头或结尾时还可作起始符、结束符(同^ ,$)。

  • ^65001_表示匹配字符串的开始为65001,字符串的后面为符号,也即AS_Path最左边AS(最后一个AS)为65001,可以用来匹配AS 65001邻居发送的路由,

  • _65001_表示匹配字符串里有65001,即AS_Path中有65001,可以用来匹配经过AS 65001的路由。

  • _65001$表示匹配字符串的最后为65001,字符串前面是符号,即AS_Path最右边AS(起始AS)为65001,可以用来匹配AS 65001始发的路由。

\

转义字符。

AS_Confed_Sequence是用“(” 、“)”表示的,“(” 、“)”在正则表达式中是特殊字符,有特殊用处,所以对于这种特殊字符,可以使用“\”来去除其特殊意义进行匹配。例如:
  • \(65002_表示匹配字符串为(65002,字符串的后面为符号,也即AS_Confed_Sequence最左边AS(最后一个AS)为65002,可以用来匹配联盟AS 65002邻居发送的路由。

  • \(.*_65003_.*\) 表示AS_Confed_Sequence中间有65003,可以用来匹配经过联盟AS 65003的路由。

  • _65004\)表示匹配字符串最后为65004),字符串的前面为符号,也即AS_Confed_Sequence最右边AS(起始AS)为65004,可以用来匹配联盟AS 65004始发的路由,还可以用来匹配联盟AS 65004直接发布的路由。_65004\)与65004\)作用相同。

同理,AS_Confed_Set使用的“[”、“]”,AS_Set使用的“{”、“}”也都可以使用“\”符号来去除这些特殊符号的特殊意义。

在同一个过滤器编号下,可以定义多条过滤规则(permit或deny模式)。在匹配过程中,这些规则之间是“或”的关系,即只要路由信息通过其中一项规则,就认为通过由该过滤器编号标识的这组AS_Path过滤器。在下文中,将分不同的场景来对AS_Path过滤器的作用进行举例说明。

 

AS路径过滤器的默认行为是deny,即路由如果没有在某一次过滤中被permit则最终不能通过该过滤器的过滤。如果一个过滤器中的所有过滤规则都是deny,则没有路由能通过该过滤器的过滤,这种情况下需要在多次(或一次)deny之后设置一次permit,允许其余所有路由通过过滤器的过滤。

如果该as-path-filter已经被其他命令引用,建议先取消引用该as-path-filter的配置,再通过undo ip as-path-filter命令删除as-path-filter配置。

 

posted on 2023-06-03 15:05  开源侠  阅读(170)  评论(0编辑  收藏  举报