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的都可進行匹配。

 

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