BGP的as-path-filter(正则表达式的简单学习)

 AS-path的学习

组成结构:

正则表达式描述了一种字符串匹配的模式,由普通字符(例如字符a到z)和特殊字符(或称“元字符”)组成。

功能:

 根据匹配规则对字符串进行替换操作,使得AS-path的过滤更加灵活

首先记住一下经常使用的字符及其意义。

       现网中,我们可能会收到来自多个AS区域的路由,如果需要给特定的AS区域打标记,那么就需要使用BGP的正则表达四

.(点)

匹配任意单个字符,包括空格。

^(英文模式下shift+6)

匹配字符的首行

$(英文模式下shift+4)

匹配字符的尾部

_(下划线)

匹配一个符号。如逗号,括号,空格符等等在表达式的开头或结尾时还可作起始符、结束符

|  (管道符)

表示逻辑或

\

转义字符,表示后面的字符全为普通字符

*

匹配前面的字符必须以0次或多次出现

+

匹配前面字符1次或多次出现

匹配前面的字符以0此或1此出现

[ ]

范围字符,表示一个范围,只匹配包含在范围内的字符之一

()

匹配变化的AS号或者一个独立的匹配

单个示例:

     ^$:表示匹配不包含任何AS号的AS-path,也就是本AS内的路由,IBGP路由。

     .*:”.”表示任何字符,“*”表示此字符可以出现任何次数,可以说匹配任何AS号的路由

     _200$:表示匹配路由起源于200AS的路由。如果不加下划线,则会匹配以AS1200,AS2100等路由,所以用正则表达式的时候一定要小心。

      ^20[^0-6]$:匹配除200~206之外的AS-path。

常用的例子

 1、命令ip as-path-filter 1 permit ^21.*47$可以匹配到哪个AS-path(B)

     A、as-path(32 1274 23)

     B、as-path(213 234 234 2347)

     C、as-path(456 234 432 474)

     D、as-path(124 34 32 23)

  解析:一个字符一个去解析,^21表示匹配首部为21的AS自治域。.(点)表示匹配单个字符,*表示匹配前面的字符可以以一个或多个出现,因为前面为字符”.”所以可以为任意字符。47$表示匹配以47结尾的AS号。所以总的来说匹配以21开头,47结尾的AS号,所以B正确。

2ip as-path-filter 1 permit ^300(_100)*(_500)*$,该AS-PATH-FILTER 不能匹配那个AS-PATH属性? B

A.300

B.300 200 500

C.300 500

D.300 500 500 500

解析:“^”300,首先匹配首部为300的AS号,ABCD都正确,其次“(_100)*”表示AS100可以以0次或多次出现。。因为AS200不满足上述属性所以不匹配

3.命令 ip as-path-filter permit ^14.*24$可以匹配到哪个AS_PATH ?  B

  1. AS_PATH(321 12 2374)
  2. AS_PATH(143 621 743 2324)
  3. AS_PATH(125 328 74 23)
  4. AS_PATH(32 1274 23)

解析:这里.*组合表示表示任何字符。表示匹配首部为14 尾部为24的自治号。切莫理解为.为3.与*结合所以匹配14333333333324这样的自治号。初学者很容易这样理解。记住“.”是表示匹配任何的字符

4.130(多选)现有一个as-path-filter: ip as-path-filter 1 permit .*(100|400)$,该as-path-filter 可以匹配以下哪些AS_PATH属性?  ABC

A.100

B.3100

C.1234 1400

D.300 4200

解析:.*这里可不用管。“|”表示逻辑或(100|400)表示匹配100或400的AS号。总体可以理解为只要自治号里包含100或400的都可进行匹配。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章