13-策略路由配置
本章節下載: 13-策略路由配置 (298.86 KB)
S5500-SI係列交換機不支持策略路由功能。
策略路由是一種依據用戶製定的策略進行路由選擇的機製。與單純依照IP報文的目的地址查找路由表進行轉發不同,策略路由基於到達報文的源地址等信息靈活地進行路由選擇。
一般來講,策略路由的優先級要高於普通路由,即設備在轉發報文時,首先將報文與策略路由的匹配規則進行比較,如果符合匹配條件,則按照策略路由進行轉發。如果報文無法匹配策略路由的條件,再按照普通路由進行轉發。
本係列交換機支持兩種策略路由配置方式:
(1) PBR方式(policy-based-route)
PBR方式通過ACL製定匹配規則,支持對報文的下一跳,優先級及缺省下一跳進行設置,目前隻支持IPv4單播策略路由。
PBR方式支持動態修改ACL規則,以動態更新匹配規則,實現業務的靈活控製。
· PBR方式下,如果報文匹配了策略路由條件,但是配置的下一跳地址不存在,報文將繼續進行普通路由的轉發。
· 對於配置了缺省下一跳的情況,先進行普通路由的轉發,如果無法匹配,再進行策略路由轉發。
(2) QoS策略方式
QoS策略方式是通過QoS策略的流分類功能來製定細致的匹配規則,並使用流行為中的重定向動作將報文按指定的目的進行轉發。QoS策略方式能夠實現IPv4、IPv6單播策略路由。
下麵分別對兩種方式的實現規則進行介紹。
PBR方式策略路由對於滿足一定條件(ACL規則)的報文,將執行指定的操作(設置報文的優先級、設置報文的下一跳、設置報文的缺省下一跳等),以指導報文的轉發。
根據作用對象的不同,分為本地策略路由和接口策略路由:
· 本地策略路由:對設備本身產生的報文(比如本地發出的ping報文)進行策略路由,它隻對設備本身產生的報文起作用,對轉發的報文不起作用。
· 接口策略路由:對到達該接口的報文進行策略路由,它隻對轉發的報文起作用,對本地產生的報文不起作用。
對於一般轉發和安全等方麵的使用需求,大多數情況下隻需使用接口策略路由。
本文所指的“接口”為三層口,包括VLAN接口、三層以太網端口等。三層以太網端口是指被配置為三層模式的以太網端口,有關以太網端口模式切換的操作,請參見“二層技術-以太網交換配置指導”中的“以太網端口配置”。
一個策略用來引入一條路由,對IP報文轉發進行路由選擇。一個策略可以包含一個或多個節點。
(1) 節點
· 每個節點由node-number來指定。node-number的值越小優先級越高,優先級高的節點優先被執行。
· 每個節點的具體內容由if-match和apply子句來指定。if-match子句定義該節點的匹配規則,apply子句定義該節點的動作。
· 每個節點對報文的處理方式由匹配模式決定。匹配模式分為permit和deny兩種。
(2) if-match子句
本係列交換機支持的if-match子句為if-match acl。
在一個節點中,同一類型的if-match子句最多隻能有一條。
(3) apply子句
本係列交換機支持三種apply子句,分別為:apply ip-precedence、apply ip-address next-hop、apply ip-address default next-hop。
執行缺省下一跳命令(apply ip-address default next-hop)的前提是,在策略路由中報文沒有配置下一跳,或者配置的下一跳無效,並且報文目的IP地址在路由表中沒有查到相應的路由,這時才會使用策略路由配置的缺省下一跳。
一個節點的匹配模式與這個節點的if-match子句、apply子句的關係如表1-1所示。
表1-1 節點的匹配模式、if-match子句、apply子句三者之間的關係
節點匹配模式 是否滿足if-match子句 |
permit(允許模式) |
deny(拒絕模式) |
報文滿足此節點的所有if-match子句 |
執行此節點apply子句,不再匹配下一節點 |
不執行此節點apply子句,不再匹配下一節點,報文按正常轉發流程處理 |
報文不滿足此節點的if-match子句 |
不執行此節點apply子句,繼續匹配下一節點 |
不執行此節點apply子句,繼續匹配下一節點 |
同一個策略中的各節點之間是“或”的關係,即隻要報文通過一個節點的過濾,就意味著通過該策略的過濾;如果報文不能通過一個策略中任何一個節點的過濾,則認為沒有通過該策略的過濾,報文將按正常轉發流程處理。
QoS策略方式通過流分類來製定匹配規則,並使用“重定向到下一跳”的流行為動作,將滿足流分類規則的報文向指定的路徑進行轉發,從而實現靈活的路由選擇。
通過QoS策略方式實現的策略路由的優先級要高於普通路由,即報文先匹配流分類規則,如果匹配則按照策略路由進行轉發,如果無法匹配所有流分類規則,再按照普通路由進行轉發。
關於QoS策略的詳細介紹,請參見“ACL和QoS配置指導”中的“QoS配置”。
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建策略或一個策略節點,並進入策略路由視圖 |
policy-based-route policy-name [ deny | permit ] node node-number |
必選 |
設置ACL匹配條件 |
if-match acl acl-number |
可選 |
設置報文的優先級 |
apply ip-precedence value |
可選 |
設置報文的下一跳 |
apply ip-address next-hop ip-address [ direct ] [ track track-entry-number ] [ ip-address [ direct ] [ track track-entry-number ] ] |
可選 用戶可以同時配置兩個下一跳: · 應用於本地策略路由時,這兩個下一跳同時有效,可以起到負載分擔的作用 · 應用於接口策略路由時,第一個下一跳作為主路由,第二個下一跳作為備份路由,實現路由備份 |
設置報文缺省下一跳 |
apply ip-address default next-hop ip-address [ track track-entry-number ] [ ip-address [ track track-entry-number ] ] |
可選 用戶可以同時配置兩個下一跳: · 應用於本地策略路由時,這兩個下一跳同時有效,可以起到負載分擔的作用 · 應用於接口策略路由時,第一個下一跳作為主路由,第二個下一跳作為備份路由,實現路由備份 |
· 如果if-match子句中使用了ACL,將忽略ACL規則的permit/deny動作以及time-range指定的規則生效時間段,隻使用ACL中的分類域來匹配報文。如果使用的ACL不存在,則不匹配任何報文。
· apply ip-address next-hop 和apply ip-address default next-hop命令可以配置兩個下一跳,可以通過一次配置兩個下一跳參數進行,也可以通過兩條配置命令完成。當用戶希望修改其中一個時,隻需要繼續執行apply ip-address next-hop ip-address命令,係統就會將最早配置的下一跳(一次配置兩個下一跳參數的情況下為命令行輸入的第二個參數值)替換;如果先前配置的兩個下一跳都需要修改,則直接在apply ip-address next-hop命令後配置兩個參數即可。
· 如果某一節點不配置if-match子句,則所有報文都會通過該節點的過濾,根據permit/deny執行相應的操作,不再繼續匹配下一節點。
· 如果某一permit模式的節點不配置apply子句,當報文滿足此節點的所有if-match子句時,將不會執行任何動作,且不再繼續匹配下一節點,報文按正常轉發流程處理。
· 如果某一節點沒有配置任何if-match子句和apply子句,則所有報文都會通過該節點的過濾,但不會執行任何動作,且不再繼續匹配下一節點,報文按正常轉發流程處理。
在應用本地策略路由時,隻能引用一個策略。
表1-3 配置本地策略路由
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
應用本地策略路由 |
ip local policy-based-route policy-name |
必選 缺省情況下,沒有應用本地策略路由 |
如果配置時策略policy-name不存在,命令可以配置成功,但隻有當策略policy-name創建後,本地策略路由才真正生效。
在應用接口策略路由時,一個接口隻能引用一個策略。
表1-4 配置接口策略路由
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
應用接口策略路由 |
ip policy-based-route policy-name |
必選 缺省情況下,沒有應用接口策略路由 |
如果配置時策略policy-name不存在,命令可以配置成功,但隻有當策略policy-name創建後,本地策略路由才真正生效。
策略路由通過與Track聯動,增強了應用的靈活性和策略路由對網絡環境的動態感知能力。策略路由可以在配置報文的下一跳、缺省下一跳時與Track項關聯,通過Track項的狀態來動態地決定策略的可用性。策略路由配置僅在關聯的Track項狀態為Positive或Invalid時生效。
關於策略路由與Track聯動的詳細介紹和相關配置請參考“可靠性配置指導”中的“Track配置”。
配置策略路由功能需要完成以下兩個配置步驟:
· 配置QoS策略:定義策略路由中匹配的報文規則以及重定向的路徑
· 應用QoS策略:定義策略路由生效的範圍
表1-5 配置QoS策略
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建流分類並進入流分類視圖 |
traffic classifier tcl-name [ operator { and | or } ] |
必選 |
定義匹配報文的規則 |
if-match match-criteria |
必選 |
退回係統視圖 |
quit |
- |
創建流行為並進入流行為視圖 |
traffic behavior behavior-name |
必選 |
配置重定向到下一跳的動作 |
redirect next-hop { ipv4-add1 [ ipv4-add2 ] | ipv6-add1 [ interface-type interface-number ] [ ipv6-add2 [ interface-type interface-number ] ] } [ fail-action { discard | forward } ] |
必選 |
退回係統視圖 |
quit |
- |
創建QoS策略並進入QoS策略視圖 |
qos policy policy-name |
必選 |
將流分類與流行為進行關聯,即對匹配流分類規則的報文采用流行為中的動作 |
classifier tcl-name behavior behavior-name |
必選 |
如果不配置重定向下一跳失敗的處理動作,默認的處理動作是轉發。
在配置策略路由功能時,用戶可以通過下列方式應用QoS策略:
· 基於全局應用QoS策略:簡稱為全局策略,QoS策略對設備上的所有流量生效。
· 基於端口應用QoS策略:簡稱為端口策略,QoS策略對端口接收的流量生效。
· 基於VLAN應用QoS策略:簡稱為VLAN策略,QoS策略對VLAN內所有端口接收的流量生效。
用於策略路由的QoS策略隻能應用到端口/VLAN/全局的入方向。
表1-6 基於全局應用策略
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
應用全局策略 |
qos apply policy policy-name global inbound |
必選 |
表1-7 基於端口應用策略
操作 |
命令 |
說明 |
|
進入係統視圖 |
system-view |
- |
|
進入以太網端口視圖或端口組視圖 |
進入以太網端口視圖 |
interface interface-type interface-number |
二者必選其一 進入以太網端口視圖後,下麵進行的配置隻在當前端口生效;進入端口組視圖後,下麵進行的配置將在端口組中的所有端口生效 |
進入端口組視圖 |
port-group manual port-group-name |
||
應用端口策略 |
qos apply policy policy-name inbound |
必選 |
表1-8 基於VLAN應用策略
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
應用VLAN策略到指定的VLAN |
qos vlan-policy policy-name vlan vlan-id-list inbound |
必選 |
VLAN策略不能應用在動態VLAN上。例如,在運行GVRP協議的情況下,設備可能會動態創建VLAN,相應的VLAN策略不能應用在該動態VLAN上。
在完成PBR方式策略路由的配置後,在任意視圖下執行display命令可以顯示配置策略路由後的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下,用戶可以執行reset命令重置策略路由的統計信息。
表1-9 PBR方式策略路由顯示和維護
操作 |
命令 |
顯示係統和接口應用的所有策略路由的信息 |
display ip policy-based-route [ | { begin | exclude | include } regular-expression ] |
顯示係統的策略路由的設置情況 |
display ip policy-based-route setup { interface interface-type interface-number | local | policy-name } [ | { begin | exclude | include } regular-expression ] |
顯示已經配置的策略路由 |
display policy-based-route [ policy-name ] [ | { begin | exclude | include } regular-expression ] |
· 如果隻添加一個節點而沒有配置任何if-match子句和apply子句,則所有報文都匹配,但不執行動作,不再繼續往下匹配。策略路由的統計數字將改變。
· 如果添加一個節點,隻配置if-match子句,沒有配置apply子句,則進行匹配,但不執行動作,不再繼續往下匹配。策略路由的統計數字將改變。
· 如果添加一個節點,沒有配置if-match子句,隻配置apply子句,則所有報文都匹配,根據permit/deny執行相應的操作,不再繼續往下匹配。策略路由的統計數字將改變。
· 當配置節點的匹配模式為deny時,如果報文滿足該節點的所有if-match子句,不執行節點的apply子句,也不再繼續往下匹配,數據包將走正常路由表轉發,因此沒有deny的調試信息以及相應的統計信息。
在完成QoS策略方式策略路由的配置後,在任意視圖下執行display命令可以顯示策略路由的運行情況,通過查看顯示信息驗證配置的效果。
表1-10 QoS策略方式策略路由顯示和維護
操作 |
命令 |
顯示用戶定義QoS策略的配置信息 |
display traffic classifier user-defined [ tcl-name ] [ | { begin | exclude | include } regular-expression ] |
顯示指定端口或所有端口上策略的配置信息和運行情況 |
display qos policy interface [ interface-type interface-number ] [ inbound | outbound ] [ | { begin | exclude | include } regular-expression ] |
顯示VLAN策略信息 |
display qos vlan-policy { name policy-name | vlan vlan-id } [ slot slot-number ] [ inbound | outbound ] [ | { begin | exclude | include } regular-expression ] |
顯示全局策略信息 |
display qos policy global [ slot slot-number ] [ inbound | outbound ] [ | { begin | exclude | include } regular-expression ] |
通過策略路由控製從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),結果成功。
# 從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-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報文,策略路由設置成功。
控製從設備Switch A的GigabitEthernet1/0/1端口接收的所有報文,都轉發到下一跳202.1.1.2。
圖1-3 配置通過QoS策略實現IPv4策略路由組網圖
# 創建IPv4 ACL,匹配規則為所有報文。
<SwitchA> system-view
[SwitchA] acl number 2000
[SwitchA-acl-basic-2000] rule 0 permit source any
[SwitchA-acl-basic-2000] quit
# 創建流分類,並配置流分類規則為匹配IPv4 ACL 2000的報文。
[SwitchA] traffic classifier a
[SwitchA-classifier-a] if-match acl 2000
[SwitchA-classifier-a] quit
# 創建流行為,並配置動作為將報文重定向到下一跳202.1.1.2。
[SwitchA] traffic behavior a
[SwitchA-behavior-a] redirect next-hop 202.1.1.2
[SwitchA-behavior-a] quit
# 創建QoS策略,並將流分類與流行為進行關聯。
[SwitchA] qos policy a
[SwitchA-qospolicy-a] classifier a behavior a
[SwitchA-qospolicy-a] quit
# 將QoS策略應用到端口GigabitEthernet1/0/1。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] qos apply policy a inbound
完成上麵的配置後,當設備Switch A從GigabitEthernet1/0/1端口收到目的IP地址為201.1.1.2的報文時,此報文會被發送到Switch C,而不會發送到Switch B,說明策略路由應用成功。
控製從設備Switch A的GigabitEthernet1/0/1端口接收的所有報文,都轉發到下一跳202::2。
圖1-4 配置通過QoS策略實現IPv6策略路由組網圖
# 創建IPv6 ACL,匹配規則為所有報文。
<SwitchA> system-view
[SwitchA] acl ipv6 number 2000
[SwitchA-acl6-basic-2000] rule 0 permit source any
[SwitchA-acl6-basic-2000] quit
#創建流分類,並配置流分類規則為匹配IPv6 ACL 2000的報文。
[SwitchA] traffic classifier a
[SwitchA-classifier-a] if-match acl ipv6 2000
[SwitchA-classifier-a] quit
# 創建流分類,並配置動作為將流量重定向到下一跳202::2。
[SwitchA] traffic behavior a
[SwitchA-behavior-a] redirect next-hop 202::2
[SwitchA-behavior-a] quit
# 創建QoS策略,並將流分類與流行為進行關聯。
[SwitchA] qos policy a
[SwitchA-qospolicy-a] classifier a behavior a
[SwitchA-qospolicy-a] quit
# 將QoS策略應用到端口GigabitEthernet1/0/1。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] qos apply policy a inbound
· 驗證結果
完成上麵的配置後,當設備Switch A從GigabitEthernet1/0/1端口收到目的IP地址為201::2的報文時,此報文會被發送到Switch C,而不會發送到Switch B,說明策略路由應用成功。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!