常用BGP AS_PATH正則表達式應用
BGP協(xié)議提供了非常豐富的路由策略,尤其是在路由過濾和路由選擇方面有其它路由協(xié)議無法比擬的優(yōu)勢。使用好BGP就像做一道好的高考題一樣,需要考察我們的分析能力、應用能力、以及發(fā)散思維能力。
Internet路由表中的BGP路由條目,目前規(guī)模已經(jīng)達到十幾萬。在面對龐大的Internet路由表時,我們免不了需要進行路由過濾。在處理如此大規(guī)模的路由表時,如果利用地址前綴去過濾BGP路由,那么一來有可能配置比較繁瑣,二來且有新的路由加入不好維護,所以提出了利用AS_PATH進行BGP路由過濾的辦法。由于Internet核心AS的分布都是有記錄的,所以利用AS的過濾更有針對性,例如可以使用AS_PATH作過濾,解決過濾從某個AS_PATH始發(fā)的全部路由,只需一個AS_PATH列表即可,當然利用AS_PATH過濾可以解決的問題遠不僅如此,這還需要我們在下文中慢慢體會。
1AS_PATH與正則表達式介紹
1.1AS_PATH格式
首先讓我們來認識一下BGP的AS_PATH屬性。
AS_PATH,公認必遵屬性。這個屬性在傳遞UPDATE報文中標識了到達一個目的地所經(jīng)過的AS信息。
AS_PATH有4種類型:
AS_SEQUENCE(用于路由AS路徑記錄)
AS_SET(用于聚合路由的明細路由AS集合)
AS_CONFED_SEQUENCE(用于聯(lián)盟路由AS路徑記錄)
AS_CONFED_SET(用于聯(lián)盟聚合路由)
讓我們看看AS_PATH在BGP路由表中的顯示格式,如圖1:
圖1AS_PATH顯示格式
從AS_PATH的顯示格式看出,AS_PATH可以看成一個由數(shù)字0-9,“()”,“[]”,“{}”和空格組成的字符串。當然例子中是最復雜的格式,實際應用中并不是所有字段都有填充的。
1.2正則表達式常用操作符
當我們想利用匹配AS_PATH做路由過濾的時候,怎么實現(xiàn)對AS_PATH匹配呢?根據(jù)之前分析過AS_PATH可以看作是字符串的這一特點,我們找到了處理字符串的強大工具正則表達式這把利劍來幫我們實現(xiàn)匹配,這樣正則表達式就在BGP的舞臺登場了。
正則表達式介紹:
首先讓我們來認識一下正則表達式,正則表達式是按照一定的模板來匹配字符串的公式。在BGP中,正則表達式可以應用于基于AS_PATH的ACL,根據(jù)BGP路由的AS_PATH屬性決定路由的接受與拒絕。
正則表達式常用操作符:
表1正則表達式常用操作符說明
2實際應用
2.1AS_PATH常用表達式
下面就利用介紹的符號來對AS_PATH進行匹配,看看這些符號能夠給我們帶來多么奇妙的效果。
^$
表示匹配的字符串為空,即AS_PATH為空,表示只匹配本地路由。
.*
表示匹配任意字符串,即AS_PATH為任意,表示匹配所有路由。
^100
表示匹配字符串開始為100,即AS_PATH最左邊AS前3位(***一個AS)為100、1001、1002等,表示匹配AS100、1001、1002等鄰居發(fā)送的路由。
^100_
表示匹配字符串開始為100后面為符號,即AS_PATH最左邊AS(***一個AS)為100,表示匹配AS100鄰居發(fā)送的路由,比較前一個表達式,”_”的好處就體現(xiàn)出來了,它可以和用來幫助我們限制匹配單獨的一個AS。
_100$
表示匹配字符串***為100,即AS_PATH最右邊AS(起始AS)為100,表示匹配AS100始發(fā)的路由。
_100_
表示字符串中間有100,即AS_PATH中有100,表示匹配經(jīng)過AS100的路由。
\(65535_
表示匹配字符串為(65535后面為符號,即AS_CONFED_SEQUENCE最左邊AS(***一個AS)為65535,表示匹配聯(lián)盟AS65535鄰居發(fā)送的路由,我們知道,AS_CONFED_SEQUENCE是用”(”、“)”表示的,”(”、“)在正則中是特殊字符,有特殊用處,所以對于這種特殊字符,可以使用”\”來去除其特殊意義進行匹配,同理AS_CONFED_SET使用的”[“、”]”,AS_SET使用的”{”、”}”都可以使用”\”符號來去除這些特殊符號的特殊意義,舉例\[65533_,\{202_。
\(.*_205_.*\)
表示字符串AS_CONFED_SEQUENCE中間有205,即AS_CONFED_SEQUENCE中有205,表示匹配經(jīng)過聯(lián)盟AS205的路由。
_207\)
表示匹配字符串***為207),即AS_PATH最右邊AS_CONFED_SEQUENCE(起始AS)為207,表示匹配聯(lián)盟AS207始發(fā)的路由。
【編輯推薦】