1. 程式人生 > 其它 >交換機在江湖】路由策略專題-第1期-初識路由策略

交換機在江湖】路由策略專題-第1期-初識路由策略

交換機在江湖】路由策略專題-第1期-初識路由策略

交換機在江湖官方號2016-11-14 14:11:43最新回覆:2021-04-03 10:24:03 3.3W784167

第1期初識路由策略

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

1路由策略概述

1.1什麼是路由策略?

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

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

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

1.2路由策略各工具之間的呼叫關係

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

圖1路由策略各工具之間的呼叫關係

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

l條件工具:用於把需要的路由“抓取”出來。

l策略工具:用於把“抓取”出來的路由執行某個動作,比如允許、拒絕、修改屬性值等。

l呼叫工具:用於將路由策略應用到某個具體的路由協議裡面,使其生效。

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

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

1.3路由策略有什麼用?

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

作用

執行過程

結果

對路由資訊進行過濾

如果某條路由符合XX條件,那麼就接收這條路由

如果某條路由符合XX條件,那麼就釋出這條路由

如果某條路由符合XX條件,那麼就引入這條路由

要不要這條路由?

修改路由的屬性

如果某條路由符合XX條件,那麼將這條路由的某個屬性值修改為XXX

這條路由的某個屬性值為XXX

表1路由策略的作用

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

通過路由策略對路由資訊進行過濾

圖1通過路由策略對路由資訊進行過濾

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

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

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

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

2路由策略和策略路由

2.1路由策略和策略路由的區別

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

路由策略

路由策略的操作物件是路由資訊。路由策略主要實現了路由過濾和路由屬性設定等功能,它通過改變路由屬性(包括可達性)來改變網路流量所經過的路徑。

策略路由

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

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

2.2路由策略和策略路由對比分析

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

不同點

路由策略

策略路由

作用物件

l路由資訊

l資料包

實現主體

l控制平面

實現路由的過濾和屬性值的修改

l轉發平面

保證資料包按指定的路徑轉發

是否改變轉發流程

l不改變轉發流程

l改變了資料包轉發流程

過濾機制

l基於ACL過濾

l基於地址字首列表

l基於路由屬性過濾

l基於路由型別過濾

……

l基於ACL、流分類、流行為、流策略

應用主體

l靜態路由

l直連路由

lRIP/RIPng

lOSPF/OSPFv3

lISIS

lBGP/BGP4+

l全域性、vlan、介面下應用

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

3路由策略牛刀小試

上面在巨集觀上介紹了關於路由策略的一些基礎知識,各位是不是還是覺得有點不過癮?是不是還感覺不到路由策略究竟有什麼洪荒之力?沒關係,接下來我們來看一個通過路由策略實現路由過濾的舉例,算作牛刀小試。這個舉例中會涉及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 NULL0

ip route-static 172.16.17.0 255.255.255.0 NULL0

ip route-static 172.16.18.0 255.255.255.0 NULL0

ip route-static 172.16.19.0 255.255.255.0 NULL0

ip route-static 172.16.20.0 255.255.255.0 NULL0

#

3.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 Vlanif10

192.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這三條外部路由,其他的外部路由都沒有了。

3.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等多個工具的不同組合,上述舉例僅僅列舉了其中兩種比較常見的組合而已。在後面幾期的專題中,我們會深入分析各種工具的使用方法,相信各位全部掌握這些工具之後就會對路由策略的使用做到遊刃有餘、隨心所欲了。