07-策略路由配置
本章節下載: 07-策略路由配置 (238.89 KB)
設備支持兩種運行模式:獨立運行模式和IRF模式,缺省情況為獨立運行模式。有關IRF模式的介紹,請參見“IRF配置指導”中的“IRF”。
策略路由功能可以用來對IP單播報文進行策略路由。
策略路由(policy-based-route)是一種依據用戶製定的策略進行路由選擇的機製。與單純依照IP報文的目的地址查找路由表進行轉發不同,策略路由基於到達報文的源地址、長度等信息靈活地進行路由選擇。對於滿足一定條件(報文長度或ACL規則)的報文,將執行一定的操作(設置轉發報文的VPN實例、設置報文的優先級、設置報文的出接口和下一跳、設置報文的缺省出接口和下一跳等),以指導報文的轉發。
根據作用對象的不同,策略路由可分為本地策略路由和接口策略路由:
· 本地策略路由:對本地產生的報文(比如本地發出的ping報文)進行策略路由,它隻對本地產生的報文起作用,對轉發的報文不起作用。
· 接口策略路由:對到達該接口的報文進行策略路由,它隻對轉發的報文起作用,對本地產生的報文不起作用。
對於一般轉發和安全等方麵的使用需求,大多數情況下隻需使用接口策略路由。
一般來講,策略路由的優先級要高於普通路由,即報文先按照策略路由進行轉發。如果報文無法匹配所有的策略路由條件,不能按照策略路由進行轉發,再按照普通路由進行轉發。
一個策略用來引入一條路由,對IP報文轉發進行路由選擇。
一個策略可以包含一個或多個節點。
· 每個節點由node-number來指定。node-number的值越小優先級越高,優先級高的節點優先被執行。
· 每個節點的具體內容由if-match和apply子句來指定。if-match子句定義該節點的匹配規則,apply子句定義該節點的動作。
· 每個節點對報文的處理方式由匹配模式決定。匹配模式分為permit和deny兩種。
策略路由提供了一種if-match子句,為if-match acl。
在一個節點中,if-match子句最多隻能有一條。
策略路由提供了三種apply子句,分別為:apply access-vpn vpn-instance、apply ip-precedence、apply ip-address next-hop。
同一個節點中的各apply子句的執行優先級情況如表1-1所示。
表1-1 同一個節點中的各apply子句的執行優先級情況
子句 |
含義 |
執行優先情況 |
apply access-vpn vpn-instance |
配置轉發報文的VPN實例 |
報文如果匹配了其中一個VPN實例下的轉發表,報文將在該VPN實例中進行轉發,如果對於所有配置的VPN實例,報文都未能匹配其下的轉發表,該報文將被丟棄。 |
apply ip-precedence |
配置報文的優先級 |
在公網轉發中,即在未配置apply access-vpn vpn-instance的情況下,隻要配置了該子句,該子句就一定會執行。 |
apply ip-address next-hop |
配置策略路由下一跳 |
在公網轉發中,即在未配置apply access-vpn vpn-instance的情況下,配置的下一跳有效時本語句會執行 |
· 當配置策略路由下一跳為direct時,如果策略路由下一跳的ARP表項可以動態學習到,則認為下一跳可達,否則認為下一跳無效。
· 當係統工作模式為標準模式時,配置轉發報文到VPN實例,需要在配置VPN前配置保留VLAN,否則配置失效。關於係統工作模式的介紹請參見“基礎配置指導”中的“設備管理”。關於保留VLAN的詳細描述,請參見“MPLS命令參考/MPLS L3VPN”中的“reserve-vlan vlan-id”。
一個節點的匹配模式與這個節點的if-match子句、apply子句的關係如表1-2所示。
表1-2 節點的匹配模式、if-match子句、apply子句三者之間的關係
節點匹配模式 是否滿足if-match子句 |
permit(允許模式) |
deny(拒絕模式) |
報文滿足此節點的if-match子句 |
執行此節點apply子句,不再匹配下一節點 |
不執行此節點apply子句,不再匹配下一節點,報文按正常轉發流程處理 |
報文不滿足此節點的if-match子句 |
不執行此節點apply子句,繼續匹配下一節點 |
不執行此節點apply子句,繼續匹配下一節點 |
同一個策略中的各節點之間是“或”的關係,即隻要報文通過一個節點的過濾,就意味著通過該策略的過濾;如果報文不能通過一個策略中任何一個節點的過濾,則認為沒有通過該策略的過濾,報文將按正常轉發流程處理。
策略路由通過與Track聯動,增強了應用的靈活性和策略路由對網絡環境的動態感知能力。策略路由可以在配置報文的出接口、缺省出接口、下一跳、缺省下一跳時與Track項關聯,通過Track項的狀態來動態地決定策略的可用性。策略路由配置僅在關聯的Track項狀態為Positive或Invalid時生效。
關於策略路由與Track聯動的詳細介紹和相關配置請參見“可靠性配置指導”中的“Track”。
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建策略或一個策略節點,並進入策略路由視圖 |
policy-based-route policy-name [ deny | permit ] node node-number |
必選 |
設置ACL匹配條件 |
if-match acl acl-number |
可選 |
設置報文在指定VPN實例進行轉發 |
apply access-vpn vpn-instance vpn-instance-name |
可選 |
設置報文的優先級 |
apply ip-precedence value |
可選 |
設置報文的下一跳 |
apply ip-address next-hop [ vpn-instance vpn-instance-name ] ip-address1 [ direct ] [ track track-entry-number ] [ ip-address2 [ direct ] [ track track-entry-number ] ] |
可選 如果用戶同時配置兩個下一跳,隻有主下一跳生效。當主用下一跳失效時,備用下一跳才生效,起到主備備份的作用。 |
· 如果if-match子句中引用了ACL,請不要在引用的ACL規則中配置deny動作。
· 如果使用的ACL不存在,則不匹配任何報文。
· 如果某個策略節點匹配的報文不需要按策略路由轉發,請直接指定該策略節點的匹配模式為拒絕模式。
· 如果策略路由引用的ACL已經生效,在已生效ACL中執行添加rule的操作,新添加的rule可能會不生效(原因可能是ACL資源不夠或策略路由不支持此rule)。通過display acl { acl-number | all | name acl-name } slot slot-number查詢ACL的配置和運行情況時,不生效的rule會被標識成“uncompleted”。如果後續有了足夠的ACL資源,需要刪除不生效的rule並重新配置,此rule才能生效。關於display acl命令的詳細介紹,請參見“ACL和QoS命令參考”中的“ACL”。
· apply ip-address next-hop命令可以配置兩個下一跳,可以通過一次配置兩個下一跳參數進行,也可以通過兩條配置命令完成。當用戶希望修改其中一個時,隻需要繼續執行apply ip-address next-hop命令,係統就會將最早配置的下一跳(一次配置兩個下一跳參數的情況下為命令行輸入的第二個參數值)替換;如果先前配置的兩個下一跳都需要修改,則直接在apply ip-address next-hop命令後配置兩個參數即可。
· 如果某一節點不配置if-match子句,則所有報文都會通過該節點的過濾,根據permit/deny執行相應的操作,不再繼續匹配下一節點。
· 如果某一permit模式的節點不配置apply子句,當報文滿足此節點的if-match子句時,將不會執行任何動作,且不再繼續匹配下一節點,報文按正常轉發流程處理。
· 如果某一節點沒有配置任何if-match子句和apply子句,則所有報文都會通過該節點的過濾,但不會執行任何動作,且不再繼續匹配下一節點,報文按正常轉發流程處理。
在應用本地策略路由時,隻能引用一個策略。
表1-4 配置本地策略路由
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
應用本地策略路由 |
ip local policy-based-route policy-name |
必選 缺省情況下,沒有應用本地策略路由 |
· 如果配置時策略policy-name不存在,命令可以配置成功,但隻有當策略policy-name創建後,本地策略路由才真正生效。
· 本地策略隻支持IP轉發,不支持MPLS轉發。
· 本地策略路由不支持apply access-vpn vpn-instance。
在應用接口策略路由時,一個接口隻能引用一個策略。
表1-5 配置接口策略路由
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
應用接口策略路由 |
ip policy-based-route policy-name |
必選 缺省情況下,沒有應用接口策略路由 |
如果配置時策略policy-name不存在,命令可以配置成功,但隻有當策略policy-name創建後,接口策略路由才真正生效。
在完成上述配置後,在任意視圖下執行display命令可以顯示配置策略路由後的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下,用戶可以執行reset命令重置策略路由的統計信息。
表1-6 策略路由顯示和維護
操作 |
命令 |
顯示係統和接口應用的所有策略路由的信息 |
display ip policy-based-route [ | { begin | exclude | include } regular-expression ] |
顯示係統的策略路由的設置情況(獨立運行模式) |
display ip policy-based-route setup { policy-name | interface interface-type interface-number [ slot slot-number ] | local [ slot slot-number ] } [ | { begin | exclude | include } regular-expression ] |
顯示係統的策略路由的設置情況(IRF模式) |
display ip policy-based-route setup { policy-name | interface interface-type interface-number [ chassis chassis-number slot slot-number ] | local [ chassis chassis-number slot slot-number ] } [ | { begin | exclude | include } regular-expression ] |
顯示策略路由的統計信息(獨立運行模式) |
display ip policy-based-route statistics { interface interface-type interface-number | local } [ slot slot-number ] [ | { begin | exclude | include } regular-expression ] |
顯示策略路由的統計信息(IRF模式) |
display ip policy-based-route statistics { interface interface-type interface-number | local } [ chassis chassis-number slot slot-number ] [ | { begin | exclude | include } regular-expression ] |
顯示已經配置的策略路由 |
display policy-based-route [ policy-name ] [ | { begin | exclude | include } regular-expression ] |
重置策略路由的統計信息 |
reset policy-based-route statistics [ policy-name ] |
缺省情況下,以太網接口、VLAN接口及聚合接口處於DOWN狀態。如果要對這些接口進行配置,請先使用undo shutdown命令使接口狀態處於UP狀態。
通過策略路由控製從Switch A發出的報文:
· 指定所有TCP報文的下一跳為1.1.2.2;
· 其它報文仍然按照查找路由表的方式進行轉發。
其中,Switch A分別與Switch B和Switch C直連。Switch B與Switch C路由不可達。
圖1-1 基於報文協議類型的本地策略路由的配置舉例組網圖
(1) 配置Switch A
# 定義訪問控製列表,ACL 3101匹配TCP報文。
<SwitchA> system-view
[SwitchA] acl number 3101
[SwitchA-acl-adv-3101] rule permit tcp
[SwitchA-acl-adv-3101] quit
# 定義5號節點,指定所有TCP報文的下一跳為1.1.2.2。
[SwitchA] policy-based-route aaa permit node 5
[SwitchA-pbr-aaa-5] if-match acl 3101
[SwitchA-pbr-aaa-5] apply ip-address next-hop 1.1.2.2
[SwitchA-pbr-aaa-5] quit
# 在Switch A上應用本地策略路由。
[SwitchA] ip local policy-based-route aaa
# 配置接口Vlan-interface10和Vlan-interface20的IP地址。
[SwitchA] interface Vlan-interface 10
[SwitchA-Vlan-interface10] ip address 1.1.2.1 255.255.255.0
[SwitchA-Vlan-interface10] quit
[SwitchA] interface Vlan-interface 20
[SwitchA-Vlan-interface20] ip address 1.1.3.1 255.255.255.0
(2) 配置Switch B
# 配置接口Vlan-interface10的IP地址。
<SwitchB> system-view
[SwitchB] interface Vlan-interface 10
[SwitchB-Vlan-interface10] ip address 1.1.2.2 255.255.255.0
[SwitchB-Vlan-interface10] quit
(3) 配置Switch C
# 配置接口Vlan-interface20的IP地址。
<SwitchC> system-view
[SwitchC] interface Vlan-interface 20
[SwitchC-Vlan-interface20] ip address 1.1.3.2 255.255.255.0
[SwitchC-Vlan-interface20] quit
(4) 驗證配置結果
# 從Switch A上Telnet Switch B(1.1.2.2/24),結果成功。
<SwitchA> telnet 1.1.2.2
Trying 1.1.2.2 ...
Press CTRL+K to abort
Connected to 1.1.2.2 ...
******************************************************************************
* Copyright (c) 2004-2011 Hangzhou H3C Tech. Co., Ltd. All rights reserved. *
* Without the owner's prior written consent, *
* no decompiling or reverse-engineering shall be allowed. *
******************************************************************************
# 從Switch A上Telnet Switch C(1.1.3.2/24),結果失敗。
<SwitchA> telnet 1.1.3.2
Trying 1.1.3.2 ...
Press CTRL+K to abort
Can't connect to the remote host!
# 從Switch A上ping Switch C(1.1.3.2/24),結果成功。
<SwitchA> ping 1.1.3.2
PING 1.1.3.2: 56 data bytes, press CTRL_C to break
Reply from 1.1.3.2: bytes=56 Sequence=1 ttl=255 time=2 ms
Reply from 1.1.3.2: bytes=56 Sequence=2 ttl=255 time=1 ms
Reply from 1.1.3.2: bytes=56 Sequence=3 ttl=255 time=1 ms
Reply from 1.1.3.2: bytes=56 Sequence=4 ttl=255 time=1 ms
Reply from 1.1.3.2: bytes=56 Sequence=5 ttl=255 time=1 ms
--- 1.1.3.2 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 1/1/2 ms
由於Telnet使用的是TCP協議,ping使用的是ICMP協議,所以由以上結果可證明:Switch A發出的TCP報文的下一跳為1.1.2.2,接口Vlan-interface20不發送TCP報文,但可以發送非TCP報文,策略路由設置成功。
通過策略路由控製從Switch A的接口Vlan-interface11接收的報文:
· 指定所有TCP報文的下一跳為1.1.2.2;
· 其它報文仍然按照查找路由表的方式進行轉發。
本例中采用靜態路由保證各設備之間路由可達。
(1) 配置Switch A
# 定義訪問控製列表,ACL 3101匹配TCP報文。
<SwitchA> system-view
[SwitchA] acl number 3101
[SwitchA-acl-adv-3101] rule permit tcp
[SwitchA-acl-adv-3101] quit
# 定義5號節點,指定所有TCP報文的下一跳為1.1.2.2。
[SwitchA] policy-based-route aaa permit node 5
[SwitchA-pbr-aaa-5] if-match acl 3101
[SwitchA-pbr-aaa-5] apply ip-address next-hop 1.1.2.2
[SwitchA-pbr-aaa-5] quit
# 在接口Vlan-interface11上應用接口策略路由,處理此接口接收的報文。
[SwitchA] interface vlan-interface 11
[SwitchA-Vlan-interface11] ip address 10.110.0.10 255.255.255.0
[SwitchA-Vlan-interface11] ip policy-based-route aaa
[SwitchA-Vlan-interface11] quit
# 配置接口Vlan-interface10和Vlan-interface20的IP地址。
[SwitchA] interface vlan-interface 10
[SwitchA-Vlan-interface10] ip address 1.1.2.1 255.255.255.0
[SwitchA-Vlan-interface10] quit
[SwitchA] interface vlan-interface 20
[SwitchA-Vlan-interface20] ip address 1.1.3.1 255.255.255.0
(2) 配置Switch B
# 配置到網段10.110.0.0/24的靜態路由。
<SwitchB> system-view
[SwitchB] ip route-static 10.110.0.0 24 1.1.2.1
# 配置接口Vlan-interface10的IP地址。
[SwitchB] interface vlan-interface 10
[SwitchB-Vlan-interface10] ip address 1.1.2.2 255.255.255.0
[SwitchB-Vlan-interface10] quit
(3) 配置Switch C
# 配置到網段10.110.0.0/24的靜態路由。
<SwitchC> system-view
[SwitchC] ip route-static 10.110.0.0 24 1.1.3.1
# 配置接口Vlan-interface20的IP地址。
[SwitchC] interface vlan-interface 20
[SwitchC-Vlan-interface20] ip address 1.1.3.2 255.255.255.0
[SwitchC-Vlan-interface20] quit
(4) 驗證配置結果
將Host A的IP地址配置為10.110.0.20/24,網關地址配置為10.110.0.10。
從Host A上Telnet與Switch A直連的Switch B(telnet 1.1.2.2),結果成功。
從Host A上Telnet與Switch A直連的Switch C(telnet 1.1.3.2),結果失敗。
從Host A上ping與Switch A直連的Switch C(ping 1.1.3.2),結果成功。
由於Telnet使用的是TCP協議,ping使用的是ICMP協議,所以由以上結果可證明:從Switch A的接口Vlan-interface11接收的TCP報文的下一跳為1.1.2.2,接口Vlan-interface20不轉發TCP報文,但可以轉發非TCP報文,策略路由設置成功。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!