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
(這個邏輯真的是沒話說了,對比於cisco的route-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
最后進行測試
開啟R1和R3的debugging
<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成長之路 --- 梅利