Regular Expression and Useful As-path List

正則表達式本身只是一個文本的匹配工具,大量使用在軟件編程中,可以簡化代碼。而在BGP中的as-path中也會使用到正則表達式。首先需要明確的是,正則表達式就只是一個文本匹配工具,它的處理對象就是文本,也就是說它要去匹配的對象於它而言就是純文本,而不管你是在BGP還是在軟件編程中應用它。as-path過濾的過程是,系統截取BGP路由中的as-path的內容(包括兩個AS號之間的空格)作爲輸入文本,以相應正則表達式進行過濾。這個過程的理解在我們製作as-path列表的時候很有指導作用。正則表達式的運算順序是從左往右的。

既然正則表達式是一個文本匹配工具,那千萬別忘了平常在很多場合中是可以方便使用的,如在UltraEdit中進行文本查找,在設備上操作時使用管道符匹配輸出時。

在設備上過濾顯示的路由時還有專門的通過as-path過濾的命令:

show route protocol bgp  aspath-regex "4134.*|()"      *******JUNOS中;

    show ip bgp regexp "4134.*|()"                      *******IOSJUNOSe中;

 

一、正則表達式常用符號

符號
說明
示例
As-path列舉
^
匹配一個字符串的開始。
^12
12
12 112 34 4512 ……;
$
匹配一個字符串的結束。
12$
12
1 1234 45 12;…… 12
{m}
匹配前面的表達式,出現m次。
12{3}
12 12 12
{m,}
匹配前面的表達式,至少出現m次。
12{3,}
12 12 12
12 12 12 1212 12 12 12 ……;
{m,n}
匹配前面的表達式,至少出現m次,至多出現n次。
12{1,2}
12
12 12
*
匹配前面的表達式,出現任意次。等效於{0,}
12*
Null
12
12 1212 12 1212 12 ……;
+
匹配前面的表達式,至少出現1次。等效於{1,}
12+
12
12 1212 12 1212 12 ……;
匹配前面的表達式,出現0次或者1次。    等效於{0,1}
12?
Null
12
.
代表除換行符以外的任意單個非空字符。
.12
34 12
56 1278 12;……12
( )
標記一個子表達式的開始和結束位置
. (56|78)
34 56
34 78;……;
!
邏輯非

 

 

|
邏輯或
12|34
12
34
[ ]
匹配的一個範圍中任意一個AS,通常和“-”一起使用。IOSVRP裏面,[]裏面只能填寫數字09,不能填寫多位數。JUNOS中支持填寫多位數。
[123-125]*
Null
123123 124124 124 124;……;
-
連接符,指定一個範圍中一個值
123-125
123
124125
_
匹配一個符號。如逗號,括號,空格符號等。
JUNOS不支持。

 

 

 

注:在JUNOS中,9929{3}=9929 9929 9929,不是=992999

 

 

二、常用的as-path

1Null as-path----匹配本AS內的路由

  set policy-options as-path NullASPath ^&

或者:set policy-options as-path NullASPath “()”  ******注意,此種用法在IOS上不支持;JUNSO上雙引號不可省略。

 

 

用法舉例:電信城域網中,BR只把本城域網內的明細路由(及缺省路由)通告給下掛的BRAS設備;既能減少BRAS上的路由條目,同時也利於城域網業務靈活部署。

 

2、任意as-path(包括空):

      set policy-options as-path AnyPath .*

 

   用法舉例:通常用在as-path列表的最後一條,在前面deny的基礎上,允許其他的所有通過。

 

3、經過某個AS傳遞過來的路由(經某個AS穿越的路由):

      set policy-options as-path ThroughCertainAS “.* AS_number .+”

 

   用法舉例:在城域網與163CN2的對接中,明確規定CN2163間的互訪流量不能通過城域網進行穿越。因此在向163CN2)通告路由的時候,可以使用上述as-path禁止從CN2163)收到的路由再向163CN2)通告。

 

4、從某個鄰居AS傳遞過來的路由:

      set policy-options as-path ThroughCertainAS “AS_number .*”

 

5、從某個AS始發的路由:

      set policy-options as-path ThroughCertainAS “.* AS_number

 

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