常用BGP AS_PATH正則表達(dá)式應(yīng)用
BGP協(xié)議提供了非常豐富的路由策略,尤其是在路由過(guò)濾和路由選擇方面有其它路由協(xié)議無(wú)法比擬的優(yōu)勢(shì)。使用好BGP就像做一道好的高考題一樣,需要考察我們的分析能力、應(yīng)用能力、以及發(fā)散思維能力。
Internet路由表中的BGP路由條目,目前規(guī)模已經(jīng)達(dá)到十幾萬(wàn)。在面對(duì)龐大的Internet路由表時(shí),我們免不了需要進(jìn)行路由過(guò)濾。在處理如此大規(guī)模的路由表時(shí),如果利用地址前綴去過(guò)濾BGP路由,那么一來(lái)有可能配置比較繁瑣,二來(lái)且有新的路由加入不好維護(hù),所以提出了利用AS_PATH進(jìn)行BGP路由過(guò)濾的辦法。由于Internet核心AS的分布都是有記錄的,所以利用AS的過(guò)濾更有針對(duì)性,例如可以使用AS_PATH作過(guò)濾,解決過(guò)濾從某個(gè)AS_PATH始發(fā)的全部路由,只需一個(gè)AS_PATH列表即可,當(dāng)然利用AS_PATH過(guò)濾可以解決的問(wèn)題遠(yuǎn)不僅如此,這還需要我們?cè)谙挛闹新w會(huì)。
1AS_PATH與正則表達(dá)式介紹
1.1AS_PATH格式
首先讓我們來(lái)認(rèn)識(shí)一下BGP的AS_PATH屬性。
AS_PATH,公認(rèn)必遵屬性。這個(gè)屬性在傳遞UPDATE報(bào)文中標(biāo)識(shí)了到達(dá)一個(gè)目的地所經(jīng)過(guò)的AS信息。
AS_PATH有4種類型:
AS_SEQUENCE(用于路由AS路徑記錄)
AS_SET(用于聚合路由的明細(xì)路由AS集合)
AS_CONFED_SEQUENCE(用于聯(lián)盟路由AS路徑記錄)
AS_CONFED_SET(用于聯(lián)盟聚合路由)
讓我們看看AS_PATH在BGP路由表中的顯示格式,如圖1:

圖1AS_PATH顯示格式
從AS_PATH的顯示格式看出,AS_PATH可以看成一個(gè)由數(shù)字0-9,“()”,“[]”,“{}”和空格組成的字符串。當(dāng)然例子中是最復(fù)雜的格式,實(shí)際應(yīng)用中并不是所有字段都有填充的。
1.2正則表達(dá)式常用操作符
當(dāng)我們想利用匹配AS_PATH做路由過(guò)濾的時(shí)候,怎么實(shí)現(xiàn)對(duì)AS_PATH匹配呢?根據(jù)之前分析過(guò)AS_PATH可以看作是字符串的這一特點(diǎn),我們找到了處理字符串的強(qiáng)大工具正則表達(dá)式這把利劍來(lái)幫我們實(shí)現(xiàn)匹配,這樣正則表達(dá)式就在BGP的舞臺(tái)登場(chǎng)了。
正則表達(dá)式介紹:
首先讓我們來(lái)認(rèn)識(shí)一下正則表達(dá)式,正則表達(dá)式是按照一定的模板來(lái)匹配字符串的公式。在BGP中,正則表達(dá)式可以應(yīng)用于基于AS_PATH的ACL,根據(jù)BGP路由的AS_PATH屬性決定路由的接受與拒絕。
正則表達(dá)式常用操作符:
表1正則表達(dá)式常用操作符說(shuō)明

2實(shí)際應(yīng)用
2.1AS_PATH常用表達(dá)式
下面就利用介紹的符號(hào)來(lái)對(duì)AS_PATH進(jìn)行匹配,看看這些符號(hào)能夠給我們帶來(lái)多么奇妙的效果。
^$
表示匹配的字符串為空,即AS_PATH為空,表示只匹配本地路由。
.*
表示匹配任意字符串,即AS_PATH為任意,表示匹配所有路由。
^100
表示匹配字符串開(kāi)始為100,即AS_PATH最左邊AS前3位(***一個(gè)AS)為100、1001、1002等,表示匹配AS100、1001、1002等鄰居發(fā)送的路由。
^100_
表示匹配字符串開(kāi)始為100后面為符號(hào),即AS_PATH最左邊AS(***一個(gè)AS)為100,表示匹配AS100鄰居發(fā)送的路由,比較前一個(gè)表達(dá)式,”_”的好處就體現(xiàn)出來(lái)了,它可以和用來(lái)幫助我們限制匹配單獨(dú)的一個(gè)AS。
_100$
表示匹配字符串***為100,即AS_PATH最右邊AS(起始AS)為100,表示匹配AS100始發(fā)的路由。
_100_
表示字符串中間有100,即AS_PATH中有100,表示匹配經(jīng)過(guò)AS100的路由。
\(65535_
表示匹配字符串為(65535后面為符號(hào),即AS_CONFED_SEQUENCE最左邊AS(***一個(gè)AS)為65535,表示匹配聯(lián)盟AS65535鄰居發(fā)送的路由,我們知道,AS_CONFED_SEQUENCE是用”(”、“)”表示的,”(”、“)在正則中是特殊字符,有特殊用處,所以對(duì)于這種特殊字符,可以使用”\”來(lái)去除其特殊意義進(jìn)行匹配,同理AS_CONFED_SET使用的”[“、”]”,AS_SET使用的”{”、”}”都可以使用”\”符號(hào)來(lái)去除這些特殊符號(hào)的特殊意義,舉例\[65533_,\{202_。
\(.*_205_.*\)
表示字符串AS_CONFED_SEQUENCE中間有205,即AS_CONFED_SEQUENCE中有205,表示匹配經(jīng)過(guò)聯(lián)盟AS205的路由。
_207\)
表示匹配字符串***為207),即AS_PATH最右邊AS_CONFED_SEQUENCE(起始AS)為207,表示匹配聯(lián)盟AS207始發(fā)的路由。
【編輯推薦】

























