在上一期的??路由策略??專題中,我們曾經提到,很多人會把路由策略等同于Route-Policy,雖然這不太準確,但是能夠體現出Route-Policy的重要性和普遍性。Route-Policy是一種比較復雜的過濾器,它不僅可以匹配路由信息的某些屬性,還可以在條件滿足時改變路由信息的屬性。這一期我們就詳細介紹一下Route-Policy,包括Route-Policy的組成、匹配規則和使用舉例等內容。

1. Route-Policy的組成

如圖1所示,Route-Policy由節點號、匹配模式、if-match子句(條件語句)和apply子句(執行語句)這四個部分組成。

圖1 Route-Policy的組成

(1) 節點號

一個Route-Policy可以由多個節點(node)構成。路由匹配Route-Policy時遵循以下兩個規則:

順序匹配:在匹配過程中,系統按節點號從小到大的順序依次檢查各個表項,因此在指定節點號時,要注意符合期望的匹配順序。唯一匹配:Route-Policy各節點號之間是“或”的關系,只要通過一個節點的匹配,就認為通過該過濾器,不再進行其它節點的匹配。

(2) 匹配模式

節點的匹配模式有兩種:permit和deny。

permit指定節點的匹配模式為允許。當路由項通過該節點的過濾后,將執行該節點的apply子句,不進入下一個節點;如果路由項沒有通過該節點過濾,將進入下一個節點繼續匹配。deny指定節點的匹配模式為拒絕。這時apply子句不會被執行。當路由項滿足該節點的所有if-match子句時,將被拒絕通過該節點,不進入下一個節點;如果路由項不滿足該節點的if-match子句,將進入下一個節點繼續匹配。

注意事項:通常在多個deny節點后設置一個不含if-match子句和apply子句的permit模式的Route-Policy,用于允許其它所有的路由通過。

(3) if-match子句(條件語句)

if-match子句用來定義一些匹配條件。Route-Policy的每一個節點可以含有多個if-match子句,也可以不含if-match子句。如果某個permit節點沒有配置任何if-match子句,則該節點匹配所有的路由。

(4) apply子句(執行語句)

apply子句用來指定動作。路由通過Route-Policy過濾時,系統按照apply子句指定的動作對路由信息的一些屬性進行設置。Route-Policy的每一個節點可以含有多個apply子句,也可以不含apply子句。如果只需要過濾路由,不需要設置路由的屬性,則不使用apply子句。

2. 路由策略匹配結果

相信大家在使用或者學習Route-Policy的時候都重點關注這樣一個問題:對于一條路由,在使用Route-Policy以后,最終結果是允許還是拒絕這條路由呢?這個最終的結果對于業務的影響是非常大的,可能會直接影響某種業務的通與不通。這就涉及到Route-Policy匹配規則的問題了,這里我們詳細討論一下。

Route-Policy每個node節點的過濾結果要綜合以下兩點:

Route-Policy的node節點的匹配模式(permit或deny)。if-match子句(如引用的地址前綴列表或者訪問控制列表)中包含的匹配條件(permit或deny)。

對于每一個node節點,以上兩點的排列組合會出現表1所示的4種情況。

表1 Route-Policy的匹配規則

注1:Rule表示if-match子句中包含的匹配模式是permit還是deny。

注2:Mode表示Route-Policy中node節點對應的匹配模式permit還是deny。

上述四種組合情況中,前兩種比較好理解,也比較常用。后兩種相對難理解一點,這里我們以第三種情況為例,舉例說明一下:

假設if-match子句中包含的匹配條件是deny,node節點對應的匹配條件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 //在這個節點,172.16.16.0這條路由被拒絕,繼續往下 if-match acl 2001#route-policy RP permit node 20 //在這個節點,172.16.16.0這條路由被允許 if-match acl 2002#

這種情況下,有一個關鍵點就是在node 10,172.16.16.0這條路由被拒絕,同時會繼續往下匹配,或許下一個節點就允許通過了呢?果然,繼續往下走,到node 20這個節點的時候172.16.16.0又被允許了,所以Route-Policy的最終匹配結果是允許172.16.16.0這條路由。

注意事項:

如果Route-Policy中定義了一個以上的節點,應保證各節點中至少有一個節點的匹配模式是permit。因為Route-Policy用于路由信息過濾時:

如果某路由信息沒有通過任一節點,則認為該路由信息沒有通過該Route-Policy。如果Route-Policy的所有節點都是deny模式,則沒有路由信息能通過該Route-Policy。3. 路由策略使用案例

通過上面兩個小節,我們介紹完了Route-Policy的組成和匹配規則。這個小節中,我們來看一個Route-Policy的使用實例。

圖2 使用Route-Policy實現數據分流示例

(1) 用戶需求

如圖2所示,某園區網絡主要劃分為生產網段和辦公網段。LSW3下掛的終端訪問下面的網段的時候流量模型如下:

10.10.1.0/24-----生產網段,優先走LSW1出去,LSW2作為備份鏈路。(歡迎關注公眾號:網絡工程師阿龍)10.10.2.0/24-----辦公網段,優先走LSW2出去,LSW1作為備份鏈路。10.10.3.0/24-----其他網段,隨便走那邊都行,負載分擔即可。

這種流量模型,可以保證生產網絡與辦公網絡的流量分離,便于維護和故障定位。同時,這種流量模型有利于流量均衡的分配到兩條鏈路上,同時互相作為備份鏈路,有利于網絡的穩定性。

(2) 配置過程

LSW1、LSW2、LSW3三個設備之間建立OSPF鄰居關系。LSW1和LSW2上配置到達上述網段的靜態路由,并引入OSPF,從而通告給LSW3。LW1和LSW2上配置路由策略,調整流量模型滿足用戶規劃的需求。(歡迎關注公眾號:網絡工程師阿龍)

這里僅給出涉及路由策略的關鍵配置:

LSW1關鍵配置:

#acl number 2000 rule 5 permit source 10.10.1.0 0 //用于匹配生產網段路由#acl number 2001 rule 5 permit source 10.10.2.0 0 //用于匹配辦公網段路由#route-policy RP permit node 10 if-match acl 2000 apply cost 10 //設置生產網段路由的cost值為10#route-policy RP permit node 20 if-match acl 2001 apply cost 20 //設置辦公網段路由的cost值位20#route-policy RP permit node 30 //剩余網段的路由允許進來,不做任何處理#ip route-static 10.10.1.0 255.255.255.0 192.168.14.2ip route-static 10.10.2.0 255.255.255.0 192.168.14.2ip route-static 10.10.3.0 255.255.255.0 192.168.14.2#

LSW2關鍵配置:

#acl number 2000 rule 5 permit source 10.10.1.0 0 //用于匹配生產網段路由#acl number 2001 rule 5 permit source 10.10.2.0 0 //用于匹配辦公網段路由#route-policy RP permit node 10 if-match acl 2000 apply cost 20 //設置生產網段路由的cost值為20#route-policy RP permit node 20 if-match acl 2001 apply cost 10 //設置辦公網段路由的cost值為10#route-policy RP permit node 30 //剩余網段的路由允許進來,不做任何處理#ip route-static 10.10.1.0 255.255.255.0 192.168.25.2ip route-static 10.10.2.0 255.255.255.0 192.168.25.2ip route-static 10.10.3.0 255.255.255.0 192.168.25.2#

() 結果驗證

完成上述配置以后,可以在LSW3上查看IP路由表,確認流量模型是否正確。

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的路由表中可以看到,到達生產網段10.10.1.0/24的流量優先走LSW1,到達辦公網段10.10.2.0/24的流量優先走LSW2,到達其他網段的流量在LSW1和LSW2兩條鏈路上進行負載分擔。流量模型符合預期。

通過本期專題,我們把Route-Policy的組成結構、匹配規則基本上就講清楚了,也通過一個實例讓大家了解了Route-Policy的使用場景和配置方法。本期專題中,我們主要使用了ACL來“抓取”需要的路由,實際上地址前綴列表(ip ip-prefix)在“抓取”路由方面會更精確一點,這個我們將會在下一期的路由策略專題中詳細介紹。

標簽: Route-Poli 路由策略