在上一期的路由策略專題中,我們?cè)?jīng)提到,很多人會(huì)把路由策略等同于Route-Policy,雖然這不太準(zhǔn)確,但是能夠體現(xiàn)出Route-Policy的重要性和普遍性。Route-Policy是一種比較復(fù)雜的過(guò)濾器,它不僅可以匹配路由信息的某些屬性,還可以在條件滿足時(shí)改變路由信息的屬性。這一期我們就詳細(xì)介紹一下Route-Policy,包括Route-Policy的組成、匹配規(guī)則和使用舉例等內(nèi)容。
1 Route-Policy的組成
如圖1所示,Route-Policy由節(jié)點(diǎn)號(hào)、匹配模式、if-match子句(條件語(yǔ)句)和apply子句(執(zhí)行語(yǔ)句)這四個(gè)部分組成。
圖1 Route-Policy的組成
l 節(jié)點(diǎn)號(hào)
一個(gè)Route-Policy可以由多個(gè)節(jié)點(diǎn)(node)構(gòu)成。路由匹配Route-Policy時(shí)遵循以下兩個(gè)規(guī)則:
1)順序匹配:在匹配過(guò)程中,系統(tǒng)按節(jié)點(diǎn)號(hào)從小到大的順序依次檢查各個(gè)表項(xiàng),因此在指定節(jié)點(diǎn)號(hào)時(shí),要注意符合期望的匹配順序。
2)唯一匹配:Route-Policy各節(jié)點(diǎn)號(hào)之間是“或”的關(guān)系,只要通過(guò)一個(gè)節(jié)點(diǎn)的匹配,就認(rèn)為通過(guò)該過(guò)濾器,不再進(jìn)行其它節(jié)點(diǎn)的匹配。
l 匹配模式
節(jié)點(diǎn)的匹配模式有兩種:permit和deny。
1)permit指定節(jié)點(diǎn)的匹配模式為允許。當(dāng)路由項(xiàng)通過(guò)該節(jié)點(diǎn)的過(guò)濾后,將執(zhí)行該節(jié)點(diǎn)的apply子句,不進(jìn)入下一個(gè)節(jié)點(diǎn);如果路由項(xiàng)沒(méi)有通過(guò)該節(jié)點(diǎn)過(guò)濾,將進(jìn)入下一個(gè)節(jié)點(diǎn)繼續(xù)匹配。
2)deny指定節(jié)點(diǎn)的匹配模式為拒絕。這時(shí)apply子句不會(huì)被執(zhí)行。當(dāng)路由項(xiàng)滿足該節(jié)點(diǎn)的所有if-match子句時(shí),將被拒絕通過(guò)該節(jié)點(diǎn),不進(jìn)入下一個(gè)節(jié)點(diǎn);如果路由項(xiàng)不滿足該節(jié)點(diǎn)的if-match子句,將進(jìn)入下一個(gè)節(jié)點(diǎn)繼續(xù)匹配。
注意事項(xiàng):
通常在多個(gè)deny節(jié)點(diǎn)后設(shè)置一個(gè)不含if-match子句和apply子句的permit模式的Route-Policy,用于允許其它所有的路由通過(guò)。
l if-match子句(條件語(yǔ)句)
if-match子句用來(lái)定義一些匹配條件。Route-Policy的每一個(gè)節(jié)點(diǎn)可以含有多個(gè)if-match子句,也可以不含if-match子句。如果某個(gè)permit節(jié)點(diǎn)沒(méi)有配置任何if-match子句,則該節(jié)點(diǎn)匹配所有的路由。
l apply子句(執(zhí)行語(yǔ)句)
apply子句用來(lái)指定動(dòng)作。路由通過(guò)Route-Policy過(guò)濾時(shí),系統(tǒng)按照apply子句指定的動(dòng)作對(duì)路由信息的一些屬性進(jìn)行設(shè)置。Route-Policy的每一個(gè)節(jié)點(diǎn)可以含有多個(gè)apply子句,也可以不含apply子句。如果只需要過(guò)濾路由,不需要設(shè)置路由的屬性,則不使用apply子句。
2 路由策略匹配結(jié)果
相信大家在使用或者學(xué)習(xí)Route-Policy的時(shí)候都重點(diǎn)關(guān)注這樣一個(gè)問(wèn)題:對(duì)于一條路由,在使用Route-Policy以后,最終結(jié)果是允許還是拒絕這條路由呢?這個(gè)最終的結(jié)果對(duì)于業(yè)務(wù)的影響是非常大的,可能會(huì)直接影響某種業(yè)務(wù)的通與不通。這就涉及到Route-Policy匹配規(guī)則的問(wèn)題了,這里我們?cè)敿?xì)討論一下。
Route-Policy每個(gè)node節(jié)點(diǎn)的過(guò)濾結(jié)果要綜合以下兩點(diǎn):
1、 Route-Policy的node節(jié)點(diǎn)的匹配模式(permit或deny)。
2、 if-match子句(如引用的地址前綴列表或者訪問(wèn)控制列表)中包含的匹配條件(permit或deny)。
對(duì)于每一個(gè)node節(jié)點(diǎn),以上兩點(diǎn)的排列組合會(huì)出現(xiàn)表1所示的4種情況。
Rule
Mode
匹配結(jié)果
permit
permit
l 匹配該節(jié)點(diǎn)if-match子句的路由在本節(jié)點(diǎn)允許通過(guò)Route-Policy,匹配結(jié)束。
l 不匹配if-match子句的路由進(jìn)行Route-Policy下一個(gè)節(jié)點(diǎn)的匹配。
permit
deny
l 匹配該節(jié)點(diǎn)if-match子句的路由在本節(jié)點(diǎn)不允許通過(guò)Route-Policy,匹配結(jié)束。
l 不匹配if-match子句的路由進(jìn)行Route-Policy下一個(gè)節(jié)點(diǎn)的匹配。
deny
permit
l 匹配該節(jié)點(diǎn)if-match子句的路由在本節(jié)點(diǎn)不允許通過(guò)Route-Policy,繼續(xù)進(jìn)行Route-Policy下一個(gè)節(jié)點(diǎn)的匹配。
l 不匹配if-match子句的路由進(jìn)行Route-Policy下一個(gè)節(jié)點(diǎn)的匹配
deny
deny
l 匹配該節(jié)點(diǎn)if-match子句的路由在本節(jié)點(diǎn)不允許通過(guò)Route-Policy,繼續(xù)進(jìn)行Route-Policy下一個(gè)節(jié)點(diǎn)的匹配。
l 不匹配if-match子句的路由進(jìn)行Route-Policy下一個(gè)節(jié)點(diǎn)的匹配
注1:Rule表示if-match子句中包含的匹配模式是permit還是deny。
注2:Mode表示Route-Policy中node節(jié)點(diǎn)對(duì)應(yīng)的匹配模式permit還是deny。
表1 Route-Policy的匹配規(guī)則
上述四種組合情況中,前兩種比較好理解,也比較常用。后兩種相對(duì)難理解一點(diǎn),這里我們以第三種情況為例,舉例說(shuō)明一下:
假設(shè)if-match子句中包含的匹配條件是deny,node節(jié)點(diǎn)對(duì)應(yīng)的匹配條件permit,配置如下:
#
acl number 2001
rule 5 deny source 172.16.16.0 0 //拒絕172.16.16.0
#
acl number 2002
rule 5 permit source 172.16.16.0 0 //允許172.16.16.0
#
route-policy RP permit node 10 //在這個(gè)節(jié)點(diǎn),172.16.16.0這條路由被拒絕,繼續(xù)往下
if-match acl 2001
#
route-policy RP permit node 20 //在這個(gè)節(jié)點(diǎn),172.16.16.0這條路由被允許
if-match acl 2002
#
這種情況下,有一個(gè)關(guān)鍵點(diǎn)就是在node 10,172.16.16.0這條路由被拒絕,同時(shí)會(huì)繼續(xù)往下匹配,或許下一個(gè)節(jié)點(diǎn)就允許通過(guò)了呢?果然,繼續(xù)往下走,到node 20這個(gè)節(jié)點(diǎn)的時(shí)候172.16.16.0又被允許了,所以Route-Policy的最終匹配結(jié)果是允許172.16.16.0這條路由。
注意事項(xiàng):
華為S交換機(jī)默認(rèn)所有未匹配的路由將被拒絕通過(guò)Route-Policy。如果Route-Policy中定義了一個(gè)以上的節(jié)點(diǎn),應(yīng)保證各節(jié)點(diǎn)中至少有一個(gè)節(jié)點(diǎn)的匹配模式是permit。因?yàn)镽oute-Policy用于路由信息過(guò)濾時(shí):
l 如果某路由信息沒(méi)有通過(guò)任一節(jié)點(diǎn),則認(rèn)為該路由信息沒(méi)有通過(guò)該Route-Policy。
l 如果Route-Policy的所有節(jié)點(diǎn)都是deny模式,則沒(méi)有路由信息能通過(guò)該Route-Policy。
3 路由策略使用案例
通過(guò)上面兩個(gè)小節(jié),我們介紹完了Route-Policy的組成和匹配規(guī)則。這個(gè)小節(jié)中,我們來(lái)看一個(gè)Route-Policy的使用實(shí)例。
圖2 使用Route-Policy實(shí)現(xiàn)數(shù)據(jù)分流示例
用戶需求
如圖2所示,某園區(qū)網(wǎng)絡(luò)主要?jiǎng)澐譃樯a(chǎn)網(wǎng)段和辦公網(wǎng)段。LSW3下掛的終端訪問(wèn)下面的網(wǎng)段的時(shí)候流量模型如下:
10.10.1.0/24-----生產(chǎn)網(wǎng)段,優(yōu)先走LSW1出去,LSW2作為備份鏈路。
10.10.2.0/24-----辦公網(wǎng)段,優(yōu)先走LSW2出去,LSW1作為備份鏈路。
10.10.3.0/24-----其他網(wǎng)段,隨便走那邊都行,負(fù)載分擔(dān)即可。
這種流量模型,可以保證生產(chǎn)網(wǎng)絡(luò)與辦公網(wǎng)絡(luò)的流量分離,便于維護(hù)和故障定位。同時(shí),這種流量模型有利于流量均衡的分配到兩條鏈路上,同時(shí)互相作為備份鏈路,有利于網(wǎng)絡(luò)的穩(wěn)定性。
配置過(guò)程
1、 LSW1、LSW2、LSW3三個(gè)設(shè)備之間建立OSPF鄰居關(guān)系。
2、 LSW1和LSW2上配置到達(dá)上述網(wǎng)段的靜態(tài)路由,并引入OSPF,從而通告給LSW3。
3、 LW1和LSW2上配置路由策略,調(diào)整流量模型滿足用戶規(guī)劃的需求。
這里僅給出涉及路由策略的關(guān)鍵配置:
LSW1關(guān)鍵配置:
#
acl number 2000
rule 5 permit source 10.10.1.0 0 //用于匹配生產(chǎn)網(wǎng)段路由
#
acl number 2001
rule 5 permit source 10.10.2.0 0 //用于匹配辦公網(wǎng)段路由
#
route-policy RP permit node 10
if-match acl 2000
apply cost 10 //設(shè)置生產(chǎn)網(wǎng)段路由的cost值為10
#
route-policy RP permit node 20
if-match acl 2001
apply cost 20 //設(shè)置辦公網(wǎng)段路由的cost值位20
#
route-policy RP permit node 30 //剩余網(wǎng)段的路由允許進(jìn)來(lái),不做任何處理
#
ip route-static 10.10.1.0 255.255.255.0 192.168.14.2
ip route-static 10.10.2.0 255.255.255.0 192.168.14.2
ip route-static 10.10.3.0 255.255.255.0 192.168.14.2
#
LSW2關(guān)鍵配置:
#
acl number 2000
rule 5 permit source 10.10.1.0 0 //用于匹配生產(chǎn)網(wǎng)段路由
#
acl number 2001
rule 5 permit source 10.10.2.0 0 //用于匹配辦公網(wǎng)段路由
#
route-policy RP permit node 10
if-match acl 2000
apply cost 20 //設(shè)置生產(chǎn)網(wǎng)段路由的cost值為20
#
route-policy RP permit node 20
if-match acl 2001
apply cost 10 //設(shè)置辦公網(wǎng)段路由的cost值為10
#
route-policy RP permit node 30 //剩余網(wǎng)段的路由允許進(jìn)來(lái),不做任何處理
#
ip route-static 10.10.1.0 255.255.255.0 192.168.25.2
ip route-static 10.10.2.0 255.255.255.0 192.168.25.2
ip route-static 10.10.3.0 255.255.255.0 192.168.25.2
#
結(jié)果驗(yàn)證
完成上述配置以后,可以在LSW3上查看IP路由表,確認(rèn)流量模型是否正確。
<LSW3> display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 9 Routes : 10
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.10.1.0/24 O_ASE 150 10 D 192.168.13.1 Vlanif13
10.10.2.0/24 O_ASE 150 10 D 192.168.23.1 Vlanif23
10.10.3.0/24 O_ASE 150 1 D 192.168.23.1 Vlanif23
O_ASE 150 1 D 192.168.13.1 Vlanif13
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
192.168.13.0/24 Direct 0 0 D 192.168.13.2 Vlanif13
192.168.13.2/32 Direct 0 0 D 127.0.0.1 Vlanif13
192.168.23.0/24 Direct 0 0 D 192.168.23.2 Vlanif23
192.168.23.2/32 Direct 0 0 D 127.0.0.1 Vlanif23
從LSW3的路由表中可以看到,到達(dá)生產(chǎn)網(wǎng)段10.10.1.0/24的流量?jī)?yōu)先走LSW1,到達(dá)辦公網(wǎng)段10.10.2.0/24的流量?jī)?yōu)先走LSW2,到達(dá)其他網(wǎng)段的流量在LSW1和LSW2兩條鏈路上進(jìn)行負(fù)載分擔(dān)。流量模型符合預(yù)期。
通過(guò)本期專題,我們把Route-Policy的組成結(jié)構(gòu)、匹配規(guī)則基本上就講清楚了,也通過(guò)一個(gè)實(shí)例讓大家了解了Route-Policy的使用場(chǎng)景和配置方法。本期專題中,我們主要使用了ACL來(lái)“抓取”需要的路由,實(shí)際上地址前綴列表(ip ip-prefix)在“抓取”路由方面會(huì)更精確一點(diǎn),這個(gè)我們將會(huì)在下一期的路由策略專題中詳細(xì)介紹。