對于IP網絡工程師來說,路由策略的部署隨處可見,無論在運營商IP網絡還是在企業網中,路由策略的應用都是非常普遍的。同時,在網絡規劃中,路由策略的規劃也是一個核心的內容。為了方便大家更好的掌握和應用路由策略,我們推出了路由策略這個專題,希望這個專題能夠拋磚引玉引導各位一起討論、共同學習。

一、路由策略概述1. 什么是路由策略?

我們討論某個東西一般都回避不了這樣一個問題:“XXX是什么?”這里我們也嘗試對路由策略下一個定義,來回答:“路由策略是什么?”這個問題。

很多人會把路由策略等同于route-policy,也有人會可能會說filter-policy也屬于路由策略的范疇,其實這些理解都有點不太準確。實際上,路由策略不是一個特定的技術,也不是一個特定的特性。

路由策略是通過一系列工具或方法對路由進行各種控制的“策略”。這種策略能夠影響到路由產生、發布、選擇等,進而影響報文的轉發路徑。這些工具包括ACL、route-policy、ip-prefix、filter-policy等,這些方法包括對路由進行過濾,設置路由的屬性等。

2. 路由策略各工具之間的調用關系

當討論到路由策略的時候,我們經常會碰到很多種工具,比如ACL、route-policy、ip-prefix、filter-policy等等,不一一列舉了。很多人都會被他們之間的調用關系搞昏了頭,總感覺他們之間有說清道不明的關系。這里我們通過一張圖來給大家介紹他們之間的關系。

圖1 路由策略各工具之間的調用關系

如圖1所示,我們把所有的工具劃分成三類:

條件工具:用于把需要的路由“抓取”出來。策略工具:用于把“抓取”出來的路由執行某個動作,比如允許、拒絕、修改屬性值等。調用工具:用于將路由策略應用到某個具體的路由協議里面,使其生效。

調用工具中的filter-policy和peer又自帶策略工具的功能,因此這兩個東西又可以直接調用條件工具。其他的調用工具都必須通過route-policy來間接的調用條件工具。

需要注意peer不能調用ACL,可以調用其他的所有條件工具。

3. 路由策略有什么用?

在IP網絡中,路由策略的用途主要包括兩個方面:1)對路由信息進行過濾。2)修改路由的屬性。詳細請見表1:

表1 路由策略的作用

如果各位覺得這樣介紹路由策略的作用還是有點抽象的話,沒關系,下面我們再來個實際的例子來介紹一下你就明白了。通過路由策略對路由信息進行過濾:

圖1 通過路由策略對路由信息進行過濾

如圖1所示,SwitchA屬于雙上行的組網結構,SwitchA會從SwitchB和SwitchC那里分別接收到路由。如果SwitchA僅希望接收來自SwitchB的路由,而不希望接收來自SwitchC的路由,此時應該怎么辦呢?這種情況下就可以考慮在SwitchA上配置路由策略,允許來自SwitchB的路由,拒絕來自SwitchC的路由。通過路由策略修改路由的屬性

圖2 通過路由策略修改路由的屬性

如圖2所示,SwitchA也是雙上行的網絡結構,但是,由于SwitchB這邊的鏈路穩定性更好一點,帶寬更大一點,因此用戶想用SwitchB這邊的鏈路作為主用鏈路,SwitchC這邊的鏈路作為備用鏈路,當主用鏈路故障的時候流量自動切換至備用鏈路。這種場景下,可以使用路由策略,將來自SwitchB這邊的路由開銷值調小,將來自SwitchC這邊的路由開銷值調大,這樣流量就會自動選取SwitchB這邊的鏈路作為主用鏈路,SwitchC這邊的鏈路作為備用鏈路,實現路由的主備份。

二、路由策略和策略路由1. 路由策略和策略路由的區別

我在第一次接觸路由策略和策略路由的時候也是抓耳撓腮,分不清楚,老覺得為什么協議的開發者給他們起這么容易混淆的名字,改一個名字不就不容易混淆了嘛!但是既然名字叫了這么多年了,各位雖然分不清楚,但已經耳熟了。雖然策略路由這個特性不作為本專題的討論范疇,我們在這里也把這對孿生兄弟做一個對比分析,讓大家不再混淆。

(1) 路由策略

路由策略的操作對象是路由信息。路由策略主要實現了路由過濾和路由屬性設置等功能,它通過改變路由屬性(包括可達性)來改變網絡流量所經過的路徑。

(2) 策略路由

策略路由的操作對象是數據包,在路由表已經產生的情況下,不按照路由表進行轉發,而是根據需要,依照某種策略改變數據包轉發路徑。

所以這樣可以看出,策略路由是在路由表之前起作用,如果報文匹配了策略路由,那么這個報文就不會再去查路由表了,而是直接按照策略路由的“指引”進行轉發。所以策略路由是一個不太按照套路出牌的“家伙”,也正因為這樣,策略路由的應用會更加靈活一點。

2. 路由策略和策略路由對比分析

為了更加具體的對比路由策略和策略路由,我們通過表2對兩者進行一個全方位的對比。

表2 路由策略和策略路由對比分析

三、路由策略牛刀小試

上面在宏觀上介紹了關于路由策略的一些基礎知識,各位是不是還是覺得有點不過癮?是不是還感覺不到路由策略究竟有什么洪荒之力?沒關系,接下來我們來看一個通過路由策略實現路由過濾的舉例,算作牛刀小試。這個舉例中會涉及ACL、ip-prefix、route-policy、filter-policy等概念,我們會在后面幾期的專題中詳細展開介紹,各位就先了解一下路由策略究竟能干什么就行,先不要研究太深,以免走火入魔!

圖3 通過路由策略實現路由過濾示例

如圖3所示,運行OSPF協議的網絡中,SwitchA從Internet網絡接收路由,并為OSPF網絡提供了Internet路由, 現在用戶希望OSPF網絡僅接收172.16.16.0/24、172.16.17.0/24和172.16.18.0/24這三條外部路由,其他的外部路由都不接收。

上述用戶需求可以通過多種方式去實現,接下來我們給出兩個比較常見的實現方式供各位參考。

下面的實驗中我們通過在SwitchA中配置黑洞路由做為測試路由,在OSPF中引入靜態路由來模擬從Internet網絡接收路由。SwitchA上的關鍵配置如下:

#ospf 1 import-route static area 0.0.0.0 network 192.168.1.0 0.0.0.255#ip route-static 172.16.16.0 255.255.255.0 NULL0ip route-static 172.16.17.0 255.255.255.0 NULL0ip route-static 172.16.18.0 255.255.255.0 NULL0ip route-static 172.16.19.0 255.255.255.0 NULL0ip route-static 172.16.20.0 255.255.255.0 NULL0#1. 通過ACL+route-policy實現路由過濾

(1) 定義一個ACL 2000,用于匹配需要放行的路由。

[SwitchA] acl 2000[SwitchA-acl-basic-2000] rule 5 permit source 172.16.16.0 0[SwitchA-acl-basic-2000] rule 10 permit source 172.16.17.0 0[SwitchA-acl-basic-2000] rule 15 permit source 172.16.18.0 0[SwitchA-acl-basic-2000] quit

(2) 創建一個route-policy,名字叫RP,同時配置一個編號為10的節點,調用ACL2000。

[SwitchA] route-policy RP permit node 10[SwitchA -route-policy] if-match acl 2000

(3) 在OSPF引入靜態路由的時候調用這個route-policy

[SwitchA] ospf 1[SwitchA-ospf-1] import-route static route-policy RP[SwitchA-ospf-1] quit

由于route-policy默認隱含deny節點,因此172.16.19.0及172.16.20.0路由由于沒有滿足if-match語句,從而不被引入到OSPF中。

配置完上述路由策略以后SwitchB的路由表如下:

[SwitchB]display ip routing-table Route Flags: R - relay, D - download to fib-----------------------------------------------------------------------------Routing Tables: Public Destinations : 7 Routes : 7 Destination/Mask Proto Pre Cost Flags NextHop Interface 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 172.16.16.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10 172.16.17.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10 172.16.18.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10 192.168.1.0/24 Direct 0 0 D 192.168.1.2 Vlanif10192.168.1.2/32 Direct 0 0 D 127.0.0.1 Vlanif10

可以看到在SwitchA上配置完路由策略以后,SwitchB的IP路由表里面只有172.16.16.0/24、172.16.17.0/24和172.16.18.0/24這三條外部路由,其他的外部路由都沒有了。

2. 通過ip-prefix+filter-policy實現路由過濾

(1) 定義一個地址前綴列表,用于匹配需要放行的路由。

[SwitchA] ip ip-prefix huawei index 10 permit 172.16.16.0 24[SwitchA] ip ip-prefix huawei index 20 permit 172.16.17.0 24[SwitchA] ip ip-prefix huawei index 30 permit 172.16.18.0 24

(2) 在SwitchA的OSPF視圖中,通過filter-policy對發布的路由進行過濾。

[SwitchA] ospf 1[SwitchA -ospf-1] filter-policy ip-prefix huawei export[SwitchA-ospf-1] quit

由于ip-prefix默認隱含deny節點,因此172.16.19.0及172.16.20.0路由由于不在ip-prefix允許的范圍內,所以在SwitchA向SwitchB發布路由的時候,僅發布在ip-prefix允許的范圍內的路由,其他的所有路由都不發布。

配置完上述配置以后SwitchB的路由表如下:

[SwitchB] display ip routing-table Route Flags: R - relay, D - download to fib-----------------------------------------------------------------------------Routing Tables: Public Destinations : 7 Routes : 7 Destination/Mask Proto Pre Cost Flags NextHop Interface 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 172.16.16.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10 172.16.17.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10 172.16.18.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10 192.168.1.0/24 Direct 0 0 D 192.168.1.2 Vlanif10 192.168.1.2/32 Direct 0 0 D 127.0.0.1 Vlanif10

可以看到在SwitchA上配置完路由filter-policy以后,SwitchB的IP路由表里面只有172.16.16.0/24、172.16.17.0/24和172.16.18.0/24這三條外部路由,其他的外部路由都沒有了。

從實驗結果來看,上述兩種方法使用的工具和方法不同,但是結果是一樣的。相信各位是不是已經看到路由策略確實不能直接等同于route-policy了吧?實際上,路由策略是一系列對路由進行控制的手段,路由策略的使用過程中可能是ACL、route-policy、ip-prefix、filter-policy等多個工具的不同組合,上述舉例僅僅列舉了其中兩種比較常見的組合而已。

標簽: 路由策略 網絡規劃