魏春燕 李軍華
本文結(jié)合實例對route-policy的各種匹配模式進行研究探討,總結(jié)出匹配模式對比表,并針對各個匹配模式給出可以實施的方案。
1路由策略的實現(xiàn)方式
隨著網(wǎng)絡設備的多元化,現(xiàn)代數(shù)據(jù)網(wǎng)的路由規(guī)劃也是越來越復雜,對大中型網(wǎng)絡配置路由策略是對工程師能力的一個重要考驗,也是考驗網(wǎng)絡能否靈活運行的一個重要技術(shù)要點。常用的路由策略工具包括acl,route-policy,ip-prefix等,這些工具中route-policy的性能比較強大,它可以配合acl對路由條目進行過濾甚至修改路由屬性,但由于acl本身和route-policy都有匹配模式,二者結(jié)合起來就形成復合的匹配規(guī)則,這樣理解起來就有一定的困難。本文就通過route-polciy為例來對路由策略的復合匹配進行研究和探討。
2路由策略的匹配模式
我們采用實例驗證的方式對路由策略的復合匹配進行探索并采用華為的Ensp軟件搭建實驗環(huán)境如圖1所示。
圖中AR1和AR2運行OSPF路由協(xié)議,AR1配置4條下一跳接口為NULL0的靜態(tài)路由來模擬從Internet網(wǎng)絡接收的路由,例如:ip route-static 172.16.16.0 255.255.255.0 NULL0。在AR1上設置路由策略來對接受的靜態(tài)路由條目進行過濾,過濾后的路由由OSPF協(xié)議再引入到AR2,在AR2上查看路由條目來驗證AR1采用策略的效果。測試采用acl加route-policy的方法進行。如果AR1不進行路由過濾則查看AR2的路由表里會顯示有4條外部路由,現(xiàn)在假設希望OSPF網(wǎng)絡只接收16、17網(wǎng)段路由,其他網(wǎng)段例如18、19網(wǎng)段的路由要被濾掉,則可以探索路由策略的多種匹配模式去實現(xiàn)要求。
(1)route-policy的節(jié)點匹配模式為permit,條件語句acl的匹配模式為permit
第一種模式實現(xiàn)的方法是在AR1上做acl和路由策略,在AR1的OSPF進程里面做路由引入同時引入路由策略RP,即路由引入的同時執(zhí)行名字為RP的route-policy過濾。具體AR1上的關(guān)鍵代碼如下所示:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
acl number 2000#定義acl語句
rule 5 permit source 172.16.16.0 0 #制定規(guī)則允許16、17 2個網(wǎng)段通過acl
rule 10 permit source 172.16.17.0 0
ospf 1
import-route static route-policy RP #在ospf協(xié)議里引入策略route-policy RP permit node 10#制定策略并與acl2000關(guān)連if-match acl 2000
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
觀察AR2的路由表則可發(fā)現(xiàn)18、19網(wǎng)段的路由被過濾掉,原因是route-policy默認隱含deny節(jié)點。
(2)route-policy的節(jié)點匹配模式為deny,條件語句acl匹配模式為permit
修改模式1中的acl2000的規(guī)則為:rule 5 permit source 172.16.18.0 0;rule 10 permit source 172.16.19.0 0,節(jié)點匹配模式修改為:route-policy RP deny node 10。此時查看AR2路由表,發(fā)現(xiàn)4條路由都被過濾了,這是因為:18、19網(wǎng)段匹配上acl后被node10過濾掉從而結(jié)束匹配。16、17網(wǎng)段雖然匹配不上acl但是也被route-policy的默認規(guī)則deny掉,這樣是不能滿足實驗要求的。改進的方法是在RP里面再增加一條node為20的匹配語句:route-policy RP permit node 20,這樣修改后16、17網(wǎng)段路由會繼續(xù)進行node20節(jié)點的匹配,在node 20里通過了規(guī)則從而進入到AR2的路由表里,實現(xiàn)了實驗要求。
(3)route-policy節(jié)點的匹配模式為permit,條件語句acl的匹配模式為deny
在方式2的代碼的基礎上修改acl為deny模式,例如:rule 5 deny source 172.16.18.0 0; rule 10 deny source 172.16.19.0 0,節(jié)點匹配設置為permit模式,其余代碼不變。此時查看AR2的路由表發(fā)現(xiàn)有4條路由,出現(xiàn)了不想要的18和19網(wǎng)段路由。原因是:通過acl被deny的路由或沒被acl匹配上的路由,會繼續(xù)進行下一個節(jié)點node20的匹配,導致所有的4條路由都會進入路由表。但如果刪掉node20節(jié)點,此時查看AR2的路由表會發(fā)現(xiàn)4條路由一條沒有。
那如何實現(xiàn)要求呢?方法是增加一個acl語句(命名為2001),代碼同模式1的acl相同:rule 5 permit source 172.16.16.0 0;rule 10 permit source 172.16.17.0 0。修改node 20為如下配置:route-policy RP permit node 20;if-match acl 2001。這樣18、19網(wǎng)段被第一個acl濾掉以后,會繼續(xù)匹配node20,由于不能匹配acl2001而仍然被拒之門外,而16和17網(wǎng)段路由可以通過node20的acl2001的匹配而進入路由表,達到了實驗的要求。
3路由策略的匹配模式總結(jié)
路由策略的復合匹配有多種模式,我們通過實驗研究了其中典型的3種。根據(jù)測試的結(jié)果,可看到一條路由在策略中是允許還是拒絕,除了要看節(jié)點和條件語句的匹配模式以外還要綜合以下幾個關(guān)鍵點來分析:
①Route-policy用于路由策略時有一個隱含的規(guī)則為deny all;
②匹配某節(jié)點條件子句的路由會結(jié)束匹配;
③被前一個節(jié)點條件子句拒絕或沒被匹配上的路由會進行下一個節(jié)點的匹配。