BGP Regular Expression

在學習BGP的過程中,在Cisco官網及相關Document CD中最缺乏的就是Regular Expression明確的範例解說,大都只有文字說明,實際的應用及解釋相對來說比較不容易看到,因此我趁此機會將部份的Regular Expression加註中文說明,希望對於我們這種非英語系國家的同學來說可以比較容易了解每個符號的意義。

^436 : 緊接在"^"之後的數字436表示AS-Path中若是以436為起始就會被符合
如: 436 123 456, 436 12, 436 100 100 200

436$ : 在"$"之前的436表示AS-Path中若是以436為結尾就會被符合
如: 100 200 436, 12 436, 120 320 41 436

^$ : 代表Local送出的BGP路由,因為路由在尚未被BGP Boundary Router送出之前,AS-Path是空的,因此可以利用"^$"來代表

_436_ : 表示AS-Path中若是有字串為436(前後有空白),而且可能是以436為起始或是以436為結尾就會被符合(_可代表空白、起始、結尾或是逗號",")
如: 436 100, 100 436, 102 436 200

[1-5] : 表示單一字元的範圍如果是1~5都符合條件,也可以表示成[12345]

(_436)? : 在"?"之前的元素(ATOM),也就是小括弧內的字串包含" "(在這樣的Regular Expression中,通常"_"會用來代表空白)+"436"可以出現0次或1次

(_436)* : 在"*"之前的元素(ATOM),也就是小括弧內的字串包含" "(在這樣的Regular Expression中,通常"_"會用來代表空白)+"436"可以出現0次或連續多次

(_436)+ : 在"+"之前的元素(ATOM),也就是小括弧內的字串包含" "(在這樣的Regular Expression中,通常"_"會用來代表空白)+"436"可以出現1次或連續多次

23.4 : "."可以代表單一字元或是空白,因此AS-Path中包含2304,2314,...,2394等字串都會被符合,甚至像是23 41, 123 456也可以被符合

12|34 : "|"可以代表"or",因此AS-Path中包含12 or 34的字串,都會被符合

.* : 代表所有的AS-Path組合都會被符合(All)

^\(123 : 代表緊接在"\"之後的字元"("是特殊符號必須完全符合,通常這樣的表示法是特意用來符合BGP Confederation AS-Path(在AS-Path中會使用類似(65001 65002)這樣的格式來代表內部Confederation AS-Path)或是Aggregate w/ AS-SET參數(在AS-Path中會使用類似{1,13}這樣的格式來代表路由合併前的AS-Path Information為AS1 & AS13)時會使用到的( ) or { }特殊字元
如: (123 132) 11, (123) 45, (123 456 321)

^([0-9]+)(_\1)*$ : "\1"代表該Regular Expression中的第1個未明確指定的變數,在本例中可以拆解為"[0-9]+"代表至少有一個或多個字元,而且每個字元範圍可以從0到9不限,因此可以把"([0-9]+)"看成是任意的單一AS-Path;而"\1"就等於是"([0-9]+)"的變數,而"(_\1)*"的組合表示前一個元素之後可以接著重覆出現0次或多次,因此透過這樣的組合可以產生符合各種相同字串重覆出現多次的情況(也就可以用來過濾於各種不同Customer AS使用AS-Path Prepend來調整AS-Path長度)
如:123 123 123, 444 444, 12 12 12 12, 456 456 456 456

Comments

Popular posts from this blog

TCP/IP 明確擁塞通知 (ECN)

L2TPv3 Enables Layer 2 Services for IP Networks

Q-in-Q(Dot1Q Tunnel) Sample Configuration