還是不明白路由策略?盤它!

2022.05.07
還是不明白路由策略?盤它!

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

路由策略概述
1.什麼是路由策略?
在討論某事時,我們通常不能迴避這樣一個問題:“XXX 是什麼?”這裡我們也嘗試定義一個路由策略來回答這個問題:“什麼是路由策略?”

很多人把路由策略等同於route-policy,也有人會說filter-policy也屬於路由策略的範疇。事實上,這些理解有點不准確。實際上,路由策略不是一項特定的技術,也不是一項特定的功能。

路由策略是通過一系列工具或方法對路由進行各種控制的“策略”。該策略會影響路由的生成、發布、選擇等,進而影響報文的轉發路徑。這些工具包括ACL、route-policy、ip-prefix、filter-policy等。這些方法包括過濾路由和設置路由屬性。
路由策略工具間的調用關係
在討論路由策略的時候,我們經常會遇到很多種工具,比如ACL、route-policy、ip-prefix、filter-policy等,這裡就不一一列舉了。很多人會被他們之間的呼喚關係搞糊塗,總覺得他們之間的關係不明確。這裡我們用一張圖來介紹一下它們之間的關係。
圖1 路由策略工具間調用關係

如圖 1 所示,我們將所有工具分為三類:

條件工具:用於“抓取”所需路線。
策略工具:用於對“獲取”的路由執行操作,例如允許、拒絕、修改屬性值等。
調用工具:用於將路由策略應用於特定的路由協議,使其生效。
調用工具中的filter-policy和peer也有策略工具的功能,所以這兩個東西可以直接調用條件工具。所有其他調用工具必須通過 route-policy 間接調用條件工具。

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

3、路由策略有什麼用?
在IP網絡中,路由策略的目的主要包括兩個方面: 1)過濾路由信息。 2)修改路由的屬性。詳見表 1:
如果你覺得引入路由策略的作用還是有點抽象,沒關係。再介紹一個實際的例子,你就明白了。按路由策略過濾路由信息:
圖1 通過路由策略過濾路由信息

如圖1所示,SwitchA屬於雙上行組網結構,SwitchA分別接收來自SwitchB和SwitchC的路由。如果SwitchA只想接收SwitchB的路由,不接收SwitchC的路由,怎麼辦?在這種情況下,可以考慮在 SwitchA 上配置路由策略,允許來自 SwitchB 的路由,拒絕來自 SwitchC 的路由。路由。通過路由策略修改路由屬性
圖2 通過路由策略修改路由屬性

如圖2所示,SwitchA也是雙上行網絡結構。但是,由於SwitchB上的鏈路更穩定,帶寬更大,用戶希望使用SwitchB上的鏈路作為主鏈路。 SwitchC 上的鏈路作為備份鏈路。當主用鏈路發生故障時,流量會自動切換到備用鏈路。在這種場景下,可以通過路由策略來降低來自SwitchB的路由開銷,增加來自SwitchC的路由開銷,使流量自動選擇SwitchB上的鏈路作為主鏈路。 SwitchC上的鏈路作為備份鏈路,實現路由的主備。

2. 路由策略和策略路由
一、路由策略與策略路由的區別
剛接觸到路由策略和策略路由的時候,我是摸不著頭腦,分不清區別。我一直在想,為什麼協議的開發者給他們起這樣令人困惑的名字。換個名字豈不是容易混淆!不過這個名字既然叫了這麼多年,雖然看不出有什麼區別,但已經很熟悉了。雖然策略路由的特性不在本專題的討論範圍內,但我們在這裡也對雙胞胎兄弟做一個對比分析,免得大家一頭霧水。

(1) 路由策略

路由策略的操作對像是路由信息。路由策略主要實現路由過濾、路由屬性設置等功能。它通過更改路由屬性(包括可達性)來更改網絡流量的路徑。
(2) 策略路由

基於策略的路由的操作對像是數據包。當路由表已經生成後,它不會根據路由表進行轉發,而是根據需要根據一定的策略改變數據包的轉發路徑。

由此可見,策略路由先於路由表起作用。如果數據包匹配策略路由,則不會在路由表中檢查數據包,而是直接按照策略路由的“指南”進行轉發。 .因此,策略路由是一個不按套路打牌的“傢伙”,也正因為如此,策略路由的應用會更加靈活。

2、路由策略與策略路由對比分析
為了更具體地比較路由策略和策略路由,我們使用表2對兩者進行綜合比較。
表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
 導入路由靜態
 面積 0.0.0.0
  網絡 192.168.1.0 0.0.0.255
#
ip 路由靜態 172.16.16.0 255.255.255.0 NULL0
ip 路由靜態 172.16.17.0 255.255.255.0 NULL0
ip 路由靜態 172.16.18.0 255.255.255.0 NULL0
ip 路由靜態 172.16.19.0 255.255.255.0 NULL0
ip 路由靜態 172.16.20.0 255.255.255.0 NULL0

1.通過ACL+route-policy實現路由過濾
(1) 定義一個ACL 2000 來匹配需要釋放的路由。

複製
[SwitchA] acl 2000
[SwitchA-acl-basic-2000] 規則 5 允許源 172.16.16.0 0
[SwitchA-acl-basic-2000] 規則 10 許可源 172.16.17.0 0
[SwitchA-acl-basic-2000] 規則 15 允許源 172.16.18.0 0
[SwitchA-acl-basic-2000] 退出

(2) 創建路由策略RP,配置10號節點,調用ACL2000。

複製
[SwitchA] 路由策略 RP 允許節點 10
[SwitchA -route-policy] if-match acl 2000

(3) OSPF引入靜態路由時調用該route-policy

複製
[SwitchA] ospf 1
[SwitchA-ospf-1] 導入路由靜態路由策略 RP
[SwitchA-ospf-1] 退出

由於 route-policy 默認為拒絕節點,因此路由 172.16.19.0 和 172.16.20.0 不滿足 if-match 語句,因此不會導入 OSPF。

配置上述路由策略後,SwitchB的路由表如下:
圖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
 導入路由靜態
 面積 0.0.0.0
  網絡 192.168.1.0 0.0.0.255
#
ip 路由靜態 172.16.16.0 255.255.255.0 NULL0
ip 路由靜態 172.16.17.0 255.255.255.0 NULL0
ip 路由靜態 172.16.18.0 255.255.255.0 NULL0
ip 路由靜態 172.16.19.0 255.255.255.0 NULL0
ip 路由靜態 172.16.20.0 255.255.255.0 NULL0

1.通過ACL+route-policy實現路由過濾
(1) 定義一個ACL 2000 來匹配需要釋放的路由。

複製
[SwitchA] acl 2000
[SwitchA-acl-basic-2000] 規則 5 允許源 172.16.16.0 0
[SwitchA-acl-basic-2000] 規則 10 許可源 172.16.17.0 0
[SwitchA-acl-basic-2000] 規則 15 允許源 172.16.18.0 0
[SwitchA-acl-basic-2000] 退出

(2) 創建路由策略RP,配置10號節點,調用ACL2000。

複製
[SwitchA] 路由策略 RP 允許節點 10
[SwitchA -route-policy] if-match acl 2000

(3) OSPF引入靜態路由時調用該route-policy

複製
[SwitchA] ospf 1
[SwitchA-ospf-1] 導入路由靜態路由策略 RP
[SwitchA-ospf-1] 退出

由於 route-policy 默認為拒絕節點,因此路由 172.16.19.0 和 172.16.20.0 不滿足 if-match 語句,因此不會導入 OSPF。

配置上述路由策略後,SwitchB的路由表如下:
可以看到,在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] 退出
由於 ip-prefix 隱含拒絕節點,所以路由 172.16.19.0 和 172.16.20.0 不在 ip-prefix 允許的範圍內,所以當 SwitchA 向 SwitchB 發布路由時,只會發布 ip-prefix 允許範圍內的路由。路由,所有其他路由都不會發布。

以上配置完成後,SwitchB的路由表如下:

複製
[SwitchB] 顯示 ip 路由表

路由標誌:R - 中繼,D - 下載到 fib

-------------------------------------------------- --------------------------

路由表:公共

         目的地 : 7 路線 : 7


Destination/Mask Proto Pre Cost Flags NextHop 接口

 
      127.0.0.0/8 直接 0 0 D 127.0.0.1 InLoopBack0
      127.0.0.1/32 直接 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 直接 0 0 D 192.168.1.2 Vlanif10
    192.168.1.2/32 直接 0 0 D 127.0.0.1 Vlanif10

二十一。
可以看到,在SwitchA上配置了routing filter-policy後,SwitchB的IP路由表中只有172.16.16.0/24、172.16.17.0/24和172.16.18.0/24這3條外部路由,並且有沒有其他外部路由。 .

從實驗結果來看,上述兩種方法使用的工具和方法不同,但結果是一樣的。相信你已經看到了,路由策略不能直接等同於 route-policy 吧?實際上,路由策略是控制路由的一系列手段。路由策略的使用可能是ACL、route-policy、ip-prefix、filter-policy等多種工具的不同組合,以上示例僅列舉。只有兩種更常見的組合。