AS-path的學習
組成結構:
正則表達式描述了一種字符串匹配的模式,由普通字符(例如字符a到z)和特殊字符(或稱“元字符”)組成。
功能:
根據匹配規則對字符串進行替換操作,使得AS-path的過濾更加靈活
首先記住一下經常使用的字符及其意義。
現網中,我們可能會收到來自多個AS區域的路由,如果需要給特定的AS區域打標記,那麼就需要使用BGP的正則表達四
.(點) |
匹配任意單個字符,包括空格。 |
^(英文模式下shift+6) |
匹配字符的首行 |
$(英文模式下shift+4) |
匹配字符的尾部 |
_(下劃線) |
匹配一個符號。如逗號,括號,空格符等等在表達式的開頭或結尾時還可作起始符、結束符 |
| (管道符) |
表示邏輯或 |
\ |
轉義字符,表示後面的字符全爲普通字符 |
* |
|
+ |
匹配前面字符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
- AS_PATH(321 12 2374)
- AS_PATH(143 621 743 2324)
- AS_PATH(125 328 74 23)
- 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
D.300 4200
解析:.*這裏可不用管。“|”表示邏輯或(100|400)表示匹配100或400的AS號。總體可以理解爲只要自治號裏包含100或400的都可進行匹配。