1. 程式人生 > 實用技巧 >HUAWEI策略路由PBR

HUAWEI策略路由PBR

HUAWEI策略路由PBR

Traffic-policy

所謂策略路由,不用多說,是優先於路由的,當資料進入到裝置後,先查策略,再查路由

通常應用於單閘道器雙出口/多路徑時的資料流走向控制。可以說,沒有路由也可以實現互通~

舉個栗子

現兩臺路由器直連,都分別下聯了一臺PC

R1-PC 192.168.1.0/24

R1-R2 12.0.0.0/24

R2-PC2 172.16.1.0 /24

使用traffic pollicy 策略路由功能,使得在兩臺路由裝置上沒有路由條目也可以實現兩臺PC互通。

原理

ACL抓取字首/資料

traffic classifier 匹配資料

traffic behavior 定義行為

traffic policy 繫結資料和行為

介面呼叫policy

一定要確保兩臺路由之間的直連可達。12.0.0.0/24

[R1]acl 2000 
[R1-acl-basic-2000]rul per source 192.168.1.0 0.0.0.255    //這裡也可以使用擴充套件來定義不同的流量
[R1]traffic classifier aa   //匹配資料
[R1-classifier-aa]if-match acl 2000      //匹配ACL
[R1]traffic behavior bb   //定義行為
[R1-behavior-bb]redirect ip-nexthop 12.0.0.2  //定義下一跳為12.0.0.2
[R1-traffic policy cc [R1-trafficpolicy-cc]classifier aa behavior bb //policy關聯資料和行為 [R1]inter g0/0/1 [R1-GigabitEthernet0/0/1]traffic-policy cc inbound //一定要在資料的入介面來部署

[R2]acl 2000
[R2-acl-basic-2000]rul per source 172.16.1.0 0.0.0.255
[R2]traffic classifier aa
[R2-classifier-aa]if-match acl 2000
[R2]traffic behavior bb
[R2
-behavior-bb]redirect ip-nexthop 12.0.0.1 [R2]traffic policy cc [R2-trafficpolicy-cc]classifier aa behavior bb [R2]inter g0/0/1 [R2-GigabitEthernet0/0/1]traffic-policy cc inbound

(這個邏輯真的是沒話說了,對比於ciscoroute-map而言,我也是醉了)

檢視兩臺路由的路由表,並沒有指向對端的條目

測試

No problem

通過這個例項可以很清楚的看到,在沒有路由條目出去的時候,

可以通過traffic policy 指定它的下一跳來實現路由轉發。也充分的證明了,PBR是完全凌駕於路由之上的


上文講到過,PBR主要用於多出口時針對於不同的流量指定不同的方向,使得頻寬能夠被充分利用。

如圖所示,現要求vlan10去往100.1.1.1的資料走左側

Vlan20運往100.1.1.1的資料走右側

R2上做單臂路由,實現兩個VLAN通訊

基本配置就不說了,(由於我們現在還沒有配置NAT,所以在R1,R3上做預設路由指回來)

直接看R2
[gw]acl 3000
[gw-acl-adv-3000]rul permit ip source 192.168.1.0 0.0.0.255 destination 100.1.1.0 0.0.0.255
[gw]acl 3001
[gw-acl-adv-3001]rul per ip sou 192.168.2.0 0.0.0.255 destination 100.1.1.0 0.0.0.255

[gw]traffic classifier vlan10   //定義名字vlan10的匹配
[gw-classifier-vlan10]if-match acl 3000   //匹配ACL
[gw]traffic behavior vlan10     //定義行為動作
[gw-behavior-vlan10]redirect ip-nexthop 12.0.0.1  
[gw]traffic  policy vlan10
[gw-trafficpolicy-vlan10]classifier vlan10 behavior vlan10   //匹配和動作進行關聯
[gw-trafficpolicy-vlan10]inter g2/0/0.1  
[gw-GigabitEthernet2/0/0.1]traffic-policy vlan10 inbound  入口方向呼叫Policy


[gw]traffic classifier vlan20
[gw-classifier-vlan20]if-match acl 3001
[gw]traffic behavior  vlan20
[gw-behavior-vlan20]redirect ip-nexthop 23.0.0.3
[gw-trafficpolicy-vlan20]classifier vlan20 behavior vlan20
[gw-GigabitEthernet2/0/0.2]traffic-policy vlan20 inbound

最後進行測試

開啟R1R3debugging

<R1>terminal debugging

<R1>debugging ip icmp

可以看到PC1在請求時,資料到達了R1

當然另一側肯定也是一樣的,


效果是實現了,但又有一個問題浮現出來了,

我們在組網時,肯定會設計到冗餘設計,

像剛才的操作,PC1去請求100.1.1.1如果R1這邊出現故障,能否切換到R3方向呢?

又該如何操作中?

其實這個點還是很好理解的,

因為pbr優於路由,也就是說有沒有路由都會優先PBR,當PBR不生效時,也就不會去走它,從而走路由出去。

嘿嘿,這個很簡單對吧,(當然,前提是能夠檢測到出介面有問題的情況下,)

比如斷掉這裡

做為出介面肯定能夠感知,

出介面有問題,到達下一跳也肯定有問題,PBR不生效,怎麼辦?

沒關係有預設路由啊~

而且這兩條都不用去設定什麼浮動路由,不用去設定誰優先等等.

反正一邊有問題肯定預設路由也會跟著消失。


但是如果這樣呢?

這個接口出現問題呢?咋辦?

還能感知吧?肯定不行了吧,非直連線口,圖中我用hub來代替現實中的中繼裝置

這個時候就要用到一個工具,NQA,(和cisco中的sla基本上一樣,執行上行鏈路檢測的)

而且還要和預設路由相結合

nqa test-instance admin test   //定義NQA程序 需要使用者和測試的名字
 test-type icmp    //使用測試的協議
 destination-address ipv4 12.0.0.1  //測試目標地址
 frequency 1   //執行間隔
 interval seconds 2  //報文間隔
 timeout 1    //超時
 probe-count 1    //探測次數,單次測試中的探測次數,
 start now    //現在開始
traffic behavior vlan10     //執行動作中track nqa
 redirect ip-nexthop 12.0.0.1 track nqa admin test
ip route-static 0.0.0.0 0.0.0.0 23.0.0.3
ip route-static 0.0.0.0 0.0.0.0 12.0.0.1 track nqa admin test   //預設路由也要加上NQA,

這樣一來,NQA負責監控遠端地址,如果出現問題會取消這個pbr,轉至預設路由,

而預設路由並不知道是否遠端出現問題,所以,也要關聯NQA實現兩個預設路由之間的切換。

有可能你會說,我直接使用預設路由不就OK啦,幹嘛還要用PBR呢?不要忘了,我們前面設定的是強制資料走向。Vlan10走左側,只有當這一側出現問題時才會走另外一側。(如果只做預設路由+nqa ,這就是浮動路由嘍~)


PBR的另一種用法(本地應用)

如果此時是這樣的要求,要求GW訪問100.1.1.1的流量強制走R3要怎麼做呢?

如圖所求,

1 PC1請求CLOUD時,走AR1

R2請求CLOUD1 時走AR3

針對於經過本裝置的流量

[GW]acl 2000
[GW-acl-basic-2000]rul per source 192.168.1.10 0
[GW-acl-basic-2000]q
[GW]traf c 1
[GW-classifier-1]if-match acl 2000
[GW]traf be 2
[GW-behavior-2]redirect ip-nexthop 12.0.0.1
[GW-behavior-2]q
[GW]traffic pol 3     
[GW-trafficpolicy-3]cla 1 be 2
[GW-trafficpolicy-3]q
[GW]inter g2/0/0
[GW-GigabitEthernet2/0/0]traffic-poli 3 inbound

針對於本地流量

[GW]acl 2001
[GW-acl-basic-2001]rul 5 per so any    //匹配所有本地
[GW]policy-based-route aa per node 10   //建立PBR
[GW-policy-based-route-aa-10]if-match acl 2001  //匹配ACL
[GW-policy-based-route-aa-10]apply ip-address next-hop 23.0.0.3  //應用動作
[GW-policy-based-route-aa-10]q 
[GW]ip local policy-based-route aa  //應用本地策略 

測試

測試本地

注意

針對於AR2而言,本地始發的,和經過此地的資料是兩回事

另外,PBR只適合小範圍使用,什麼意思呢?就是隻能在到下一跳裝置的距離,另外,這個功能很佔用系統CPU,所以,還是慎用

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

CCIE成長之路 ---梅利