14-雙棧策略路由配置
本章節下載: 14-雙棧策略路由配置 (328.92 KB)
與單純依照報文的目的地址查找路由表進行轉發不同,雙棧策略路由是一種依據用戶製定的策略進行路由轉發的機製。雙棧策略路由可以對於滿足一定條件(例如ACL規則)的IPv4或IPv6報文,執行指定的操作(設置報文的下一跳、出接口、缺省下一跳等)。
雙棧策略路由用來定義報文的匹配規則,以及對報文執行的操作。雙棧策略由節點組成。
一個雙棧策略可以包含一個或者多個節點。節點的構成如下:
· 每個節點由節點編號來標識,編號較小的節點優先被執行。
· 每個節點的具體內容由if-match子句和apply子句來指定。if-match子句定義該節點的匹配規則,apply子句定義該節點的動作。
· 每個節點對報文的處理方式由匹配模式決定。匹配模式分為permit(允許)和deny(拒絕)兩種。
應用雙棧策略路由後,係統將根據雙棧策略路由中定義的匹配規則和操作,對報文進行處理:係統按照節點編號從小到大的順序依次匹配各節點,如果報文滿足某個節點的匹配規則,則執行該節點的動作;如果報文不滿足某個節點的匹配規則,則繼續匹配下一個節點;如果報文不能滿足雙棧策略路由中任何一個節點的匹配規則,則根據路由表來轉發報文。
在一個節點中可以配置多條if-match子句,同一類型的if-match子句隻能配置一條,最新的配置生效。
同一個節點中的各if-match子句之間是“與”的關係,即報文必須滿足該節點的所有if-match子句才算滿足這個節點的匹配規則。
同一個節點中可以配置多條apply子句,但不一定都會執行。多條apply子句之間的關係請參見“1.4.3 配置雙棧策略節點的動作”。
一個節點的匹配模式與這個節點的if-match子句、apply子句的關係如表1-1所示。
表1-1 節點的匹配模式、if-match子句、apply子句三者之間的關係
· 如果節點配置了apply子句,則執行此節點apply子句 ¡ 如果節點指導報文轉發成功,則不再匹配下一節點 ¡ 如果節點指導報文轉發失敗,則不再匹配下一節點 · 如果節點未配置apply子句,則不會執行任何動作,且不再匹配下一節點,報文將根據路由表來進行轉發 |
||
如果一個節點中未配置任何if-match子句,則認為所有報文都滿足該節點的匹配規則,按照“報文滿足所有if-match子句”的情況進行後續處理。
在設備全局或指定接口上應用雙棧策略路由後,該策略路由將對接口接收的報文起作用,指導其轉發。根據雙棧策略路由轉發報文的基本流程為:
(1) 根據配置的雙棧策略路由,查找滿足匹配條件的節點。
(2) 若找到了匹配的節點,並且該節點是permit(允許)模式:
a. 根據策略路由中配置的下一跳指導報文轉發。
b. 若節點未配置下一跳,或根據下一跳指導報文轉發失敗,則根據路由表中除缺省路由之外的路由來轉發報文。
c. 若未找到除缺省路由之外的路由,或路由轉發失敗,則根據策略路由中配置的缺省下一跳指導報文轉發。
d. 若節點未配置缺省下一跳,或根據缺省下一跳指導報文轉發失敗,則根據缺省路由來轉發報文。
(3) 若找不到匹配的節點,或找到了匹配的節點,但該節點是deny(拒絕)模式,則根據路由表指導報文轉發。
雙棧策略路由通過與Track聯動,增強了應用的靈活性和對網絡環境變化的動態感知能力。
雙棧策略路由可以在配置報文的下一跳、缺省下一跳時與Track項關聯,根據Track項的狀態來動態地決定策略的可用性。雙棧策略路由配置僅在關聯的Track項狀態為Positive或NotReady時生效。關於雙棧策略路由與Track聯動的詳細介紹和相關配置,請參見“可靠性配置指導”中的“Track”。
收到某些目的為本設備的報文後,如果雙棧策略路由匹配該報文,則會在報文上送CPU處理前先執行雙棧策略路由節點的動作。
雙棧策略路由配置任務如下:
(1) 配置雙棧策略
a. 創建雙棧策略節點
c. 配置雙棧策略節點的動作
(2) 應用雙棧策略路由
請選擇以下至少一項任務進行配置:
全局雙棧策略路由對設備上所有接口轉發的報文都生效。
(1) 進入係統視圖。
system-view
(2) 創建雙棧策略節點,並進入雙棧策略節點視圖。
dual-stack policy-based-route policy-name [ deny | permit ] node node-number
(3) (可選)設置當前雙棧策略節點的描述信息。
description text
缺省情況下,未設置當前雙棧策略節點的描述信息。
(1) 進入係統視圖。
system-view
(2) 進入雙棧策略節點視圖。
dual-stack policy-based-route policy-name [ deny | permit ] node node-number
(3) 設置匹配規則。
¡ 設置ACL匹配規則。
if-match acl { ipv4 | ipv6 | user-defined } { acl-number | name acl-name }
缺省情況下,未設置ACL匹配規則。
指定用戶自定義ACL僅對SF係列接口板生效。
if-match子句中使用ACL時,將忽略ACL規則的permit/deny動作以及time-range指定的規則生效時間段等的處理機製,隻使用ACL中的匹配規則來匹配報文。如果使用的ACL不存在,則不匹配任何報文。
同一策略路由節點內,if-match qos-local-id命令和if-match acl命令不支持引用同一QoS本地ID值。
¡ 設置IP報文QoS本地ID值匹配規則。
if-match qos-local-id local-id-value
缺省情況下,未設置IP報文QoS本地ID值匹配規則。
本命令僅對SF係列接口板生效。
同一策略路由節點內,if-match qos-local-id命令和if-match acl命令不支持引用同一QoS本地ID值。
¡ 設置服務鏈匹配規則。
if-match service-chain { path-id service-path-id [ path-index service-path-index ] }
缺省情況下,未設置服務鏈匹配規則。
在三層以太網接口和三層以太網聚合接口應用雙棧策略路由時,策略節點不能同時配置if-match service-chain和apply default-next-hop子句。
在三層以太網子接口和三層以太網聚合子接口應用雙棧策略路由時,策略節點不支持配置服務鏈匹配規則。
本命令僅對SF係列接口板生效。
僅當係統工作模式配置為專家模式時,本命令才生效。關於係統工作模式的詳細介紹,請參見“基礎配置”中的“設備管理”。
用戶通過配置apply子句指定雙棧策略節點的動作。
影響報文轉發路徑的apply子句優先級從高到低依次為:
(1) apply next-hop
(2) apply output-interface
(3) apply default-next-hop
apply子句的含義、執行優先情況和詳細說明如表1-2所示。
表1-2 apply子句的含義以及執行優先情況等說明
子句 |
含義 |
執行優先情況/詳細說明 |
apply precedence |
設置報文的IP優先級 |
隻要配置了該子句,該子句就一定會執行 |
apply next-hop和apply output-interface |
設置報文的下一跳、出接口 |
apply next-hop的優先級高於apply output-interface。當兩條子句同時配置並且都有效時,係統隻會執行apply next-hop子句 |
apply service-chain |
設置報文的服務鏈規則 |
本子句用於VXLAN組網環境,在配置時,在當前策略節點必須配置可達的下一跳 |
apply default-next-hop |
設置報文的缺省下一跳 |
執行缺省下一跳的前提是:在策略中未配置下一跳,或者配置的下一跳無效,並且在路由表中未找到與報文目的地址匹配的路由表項 |
apply statistics |
設置策略節點統計匹配成功的次數和字節數 |
開啟本功能後,管理員可以通過display命令查看當前匹配成功的總次數和字節總數 策略節點中隻要配置了此動作,就一定會執行 |
雙棧策略路由通過查詢FIB表中是否存在下一跳或缺省下一跳地址對應的條目,判斷設置的報文轉發下一跳地址是否可用。雙棧策略路由周期性檢查FIB表,設備到下一跳的路徑發生變化時,雙棧策略路由無法及時感知,可能會導致通信發生短暫中斷。
使用SF係列接口板並且係統工作模式配置在專家模式時,apply service-chain不支持與apply statistics同時配置。關於係統工作模式的詳細介紹,請參見“基礎配置”中的“設備管理”。
(1) 進入係統視圖。
system-view
(2) 進入雙棧策略節點視圖。
dual-stack policy-based-route policy-name [ deny | permit ] node node-number
(3) 設置報文的IP優先級。
apply precedence { type | value }
缺省情況下,未設置報文的IP優先級。
(1) 進入係統視圖。
system-view
(2) 進入雙棧策略節點視圖。
dual-stack policy-based-route policy-name [ deny | permit ] node node-number
(3) 配置動作。
¡ 設置報文轉發的下一跳。
apply next-hop [ vpn-instance vpn-instance-name ] { { ipv4-address | ipv6-address } [ direct ] [ track track-entry-number ] [ service-chain path-id service-path-id [ path-index service-path-index ] ] }&<1-4>
缺省情況下,未設置報文轉發的下一跳。
用戶通過一次或多次配置本命令可以同時配置多個下一跳,每個節點最多可以配置4個下一跳,這些下一跳起到主備的作用。
當配置了多個下一跳做主備,且多個下一跳地址屬於同一個網段時,如果主下一跳對應的32位主機路由匹配失敗,則設備會匹配主下一跳對應的網段路由轉發報文,當網段路由匹配失敗後,再匹配配置的備下一跳。
僅在安裝SF係列接口板且在expert工作模式下支持service-chain path-id和path-index參數。
¡ 設置指導報文轉發的出接口。
apply output-interface null 0
缺省情況下,未設置指導報文轉發的出接口。
¡ 設置指導報文轉發的缺省下一跳。
apply default-next-hop [ vpn-instance vpn-instance-name ] { { ipv4-address | ipv6-address } [ direct ] [ track track-entry-number ] [ service-chain path-id service-path-id [ path-index service-path-index ] ] }&<1-4>
缺省情況下,未設置指導報文轉發的缺省下一跳。
用戶通過一次或多次配置本命令可以同時配置多個缺省下一跳,每個節點最多可以配置4個缺省下一跳,這些缺省下一跳起到主備的作用。
本命令僅對SF係列接口板生效。
僅當係統工作模式配置為專家模式時,service-chain path-id和path-index參數才生效。關於係統工作模式的詳細介紹,請參見“基礎配置”中的“設備管理”。
¡ 設置報文的服務鏈規則。
apply service-chain path-id service-path-id [ path-index service-path-index ]
缺省情況下,未設置報文的服務鏈規則。
本命令僅對SF係列接口板生效。
僅當係統工作模式配置為專家模式時,本命令才生效。關於係統工作模式的詳細介紹,請參見“基礎配置”中的“設備管理”。
本配置對軟件轉發的報文不生效。
(1) 進入係統視圖。
system-view
(2) 進入雙棧策略節點視圖。
dual-stack policy-based-route policy-name [ deny | permit ] node node-number
(3) 設置策略節點統計匹配成功的次數和字節數。
apply statistics
缺省情況下,未配置策略節點統計匹配成功的次數和字節數。
通過本配置,可以將已經配置的雙棧策略路由應用到接口,指導接口轉發接收到的所有報文。
應用雙棧策略路由時,該雙棧策略路由必須已經存在,否則配置將失敗。
對接口轉發的報文應用雙棧策略路由時,一個接口隻能應用一個雙棧策略路由。應用新的雙棧策略路由前必須刪除接口上原來已經應用的雙棧策略路由。
一個雙棧策略路由可以同時被多個接口應用。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖。
interface interface-type interface-number
(3) 對接口轉發的報文應用雙棧策略路由。
dual-stack policy-based-route policy-name
缺省情況下,未對接口轉發的報文應用雙棧策略路由。
通過本配置,可以將已經配置的雙棧策略路由應用到所有接口,指導這些接口轉發接收的所有報文。
應用雙棧策略路由時,該雙棧策略路由必須已經存在,否則配置將失敗。
一台設備隻能應用一條全局雙棧策略路由,應用新的全局雙棧策略路由前必須通過執行undo dual-stack global policy-based-route命令取消已應用的全局雙棧策略路由。
如果在應用了全局雙棧策略路由的同時,又在接口上應用了其他的雙棧策略路由,則優先使用接口的配置處理報文;如果報文不匹配接口的雙棧策略路由,則使用全局雙棧策略路由繼續處理。
(1) 進入係統視圖。
system-view
(2) 對接口轉發的報文應用全局雙棧策略路由。
dual-stack global policy-based-route policy-name
缺省情況下,未對接口轉發的報文應用全局雙棧策略路由。
在完成上述配置後,在任意視圖下執行display命令可以顯示雙棧策略路由配置後的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下,用戶可以執行reset命令可以清除雙棧策略路由的統計信息。
表1-3 雙棧策略路由顯示和維護
操作 |
命令 |
顯示已經配置的雙棧策略路由 |
display dual-stack policy-based-route [ policy policy-name ] |
顯示全局雙棧策略路由的配置信息和統計信息 |
(獨立運行模式) display dual-stack policy-based-route global [ slot slot-number ] (IRF模式) display dual-stack policy-based-route global [ chassis chassis-number slot slot-number ] |
顯示接口下雙棧策略路由的配置信息和統計信息 |
(獨立運行模式) display dual-stack policy-based-route interface interface-type interface-number [ slot slot-number ] (IRF模式) display dual-stack policy-based-route interface interface-type interface-number [ chassis chassis-number slot slot-number ] |
顯示已經應用的雙棧策略路由信息 |
display dual-stack policy-based-route setup |
清除雙棧策略路由的統計信息 |
reset dual-stack policy-based-route statistics [ policy policy-name ] |
Switch A分別與Switch B和Switch C直連(保證Switch B和Switch C之間路由完全不可達)。通過策略路由控製從Switch A的以太網接口Vlan-interface11接收的報文:
· 指定所有IPv4 TCP報文的下一跳為1.1.2.2;
· 指定所有IPv6 TCP報文的下一跳為2::2;
· 其它報文仍然按照查找路由表的方式進行轉發。
(1) 如圖1-1所示,配置各設備接口的IP地址,配置步驟略。
(2) 配置靜態路由或動態路由協議,確保Host A和Switch B、Host A和Switch C、Host B和Switch B、Host B和Switch C之間路由可達,配置步驟略。
(3) 在Switch A上配置雙棧策略路由。
# 定義訪問控製列表ACL 3101,用來匹配IPv4 TCP報文。
<SwitchA> system-view
[SwitchA] acl advanced 3101
[SwitchA-acl-ipv4-adv-3101] rule permit tcp
[SwitchA-acl-ipv4-adv-3101] quit
# 定義訪問控製列表ACL 3102,用來匹配IPv6 TCP報文。
[SwitchA] acl ipv6 advanced 3102
[SwitchA-acl-ipv6-adv-3102] rule permit tcp
[SwitchA-acl-ipv6-adv-3102] quit
# 創建雙棧策略路由aaa,並定義5號節點,指定所有IPv4 TCP報文的下一跳為1.1.2.2。
[SwitchA] dual-stack policy-based-route aaa permit node 5
[SwitchA-pbrdual-aaa-5] if-match acl ipv4 3101
[SwitchA-pbrdual-aaa-5] apply next-hop 1.1.2.2
[SwitchA-pbrdual-aaa-5] quit
# 定義10號節點,指定所有IPv6 TCP報文的下一跳為2::2。
[SwitchA] dual-stack policy-based-route aaa permit node 10
[SwitchA-pbrdual-aaa-10] if-match acl ipv6 3102
[SwitchA-pbrdual-aaa-10] apply next-hop 2::2
[SwitchA-pbrdual-aaa-10] quit
# 在VLAN接口11上應用雙棧策略路由。
[SwitchA] interface vlan-interface 11
[SwitchA-Vlan-interface11] dual-stack policy-based-route aaa
[SwitchA-Vlan-interface11] quit
在Host A和Host B上執行Telenet和Ping操作,結果如下:
· 從Host A上通過Telnet方式登錄Switch B(1.1.2.2),結果成功。
· 從Host A上通過Telnet方式登錄Switch C(1.1.3.2),結果失敗。
· 從Host A上ping Switch C(1.1.3.2),結果成功。
· 從Host B上通過Telnet方式登錄Switch B(1::2),結果失敗。
· 從Host B上通過Telnet方式登錄Switch C(2::2),結果成功。
· 從Host B上ping Switch B(1::2),結果成功。
由於Telnet使用的是TCP協議,ping使用的是ICMP協議,所以由以上結果可證明:從Switch A的接口VLAN接口11接收的IPv4 TCP報文的下一跳為1.1.2.2,從Switch A的以太網接口VLAN接口11接收的IPv6 TCP報文的下一跳為2::2,雙棧策略路由設置成功。
Switch D分別與Switch A、Switch B、Switch C、Switch E和Switch F直連(保證Switch E到Switch F之間路由不可達)。通過全局雙棧策略路由控製從Switch D的所有接口接收的報文:
· 指定所有IPv4 TCP報文的下一跳為1.1.4.2;
· 指定所有IPv6 TCP報文的下一跳為5::2;
· 其它報文仍然按照查找路由表的方式進行轉發。
(1) 如圖1-2所示,配置各設備接口的IP地址,配置步驟略。
(2) 配置靜態路由或動態路由協議,確保Switch A和Switch E,Switch A和Switch F、Switch B和Switch E、Switch B和Switch F、Switch C和Switch E、Switch C和Switch F之間路由可達,配置步驟略。
(3) 在Switch D上配置雙棧策略路由。
# 定義訪問控製列表ACL 3101,用來匹配1.1.1.0/24、1.1.2.0/24和1.1.3.0/24網段中的源設備發來的IPv4 TCP報文。
<SwitchD> system-view
[SwitchD] acl advanced 3101
[SwitchD-acl-ipv4-adv-3101] rule permit tcp source 1.1.1.0 0.0.0.0.255
[SwitchD-acl-ipv4-adv-3101] rule permit tcp source 1.1.2.0 0.0.0.0.255
[SwitchD-acl-ipv4-adv-3101] rule permit tcp source 1.1.3.0 0.0.0.0.255
[SwitchD-acl-ipv4-adv-3101] quit
# 定義訪問控製列表IPv6 ACL 3102,用來匹配從1::0/64、2::0/64和3::0/64網段中的源設備發來的IPv6 TCP報文。
<SwitchD> system-view
[SwitchD] acl ipv6 advanced 3102
[SwitchD-acl-ipv6-adv-3102] rule permit tcp source 1::0 64
[SwitchD-acl-ipv6-adv-3102] rule permit tcp source 2::0 64
[SwitchD-acl-ipv6-adv-3102] rule permit tcp source 3::0 64
[SwitchD-acl-ipv6-adv-3102] quit
# 配置雙棧策略路由aaa,定義5號節點,指定所有IPv4 TCP報文的下一跳為1.1.4.2。
[SwitchD] dual-stack policy-based-route aaa permit node 5
[SwitchD-pbrdual-aaa-5] if-match acl ipv4 3101
[SwitchD-pbrdual-aaa-5] apply next-hop 1.1.4.2
[SwitchD-pbrdual-aaa-5] quit
# 配置雙棧策略路由aaa,定義10號節點,指定所有IPv6 TCP報文的下一跳為5::2。
[SwitchD] dual-stack policy-based-route aaa permit node 10
[SwitchD-pbrdual-aaa-10] if-match acl ipv6 3102
[SwitchD-pbrdual-aaa-10] apply next-hop 5::2
[SwitchD-pbrdual-aaa-10] quit
# 在Switch D上應用全局雙棧策略路由aaa,處理Switch D上所有接口接收的報文。
[SwitchD] dual-stack global policy-based-route aaa
在Switch A、Switch B和Switch C上執行Telenet和Ping操作,結果如下:
· 從Switch A上通過Telnet方式登錄Switch E(1.1.4.2),結果成功,登錄Switch F(1.1.5.2),結果失敗。
· 從Switch B上通過Telnet方式登錄Switch E(1.1.4.2),結果成功,登錄Switch F(1.1.5.2),結果失敗。
· 從Switch C上通過Telnet方式登錄Switch E(1.1.4.2),結果成功,登錄Switch F(1.1.5.2),結果失敗。
· 從Switch A上ping Switch F(1.1.5.2),結果成功。
· 從Switch B上ping Switch F(1.1.5.2),結果成功。
· 從Switch C上ping Switch F(1.1.5.2),結果成功。
· 從Switch A上通過Telnet方式登錄Switch E(4::2/64),結果失敗,登錄Switch F(5::2),結果成功。
· 從Switch B上通過Telnet方式登錄Switch E(4::2/64),結果失敗,登錄Switch F(5::2),結果成功。
· 從Switch C上通過Telnet方式登錄Switch E(4::2/64),結果失敗,登錄Switch F(5::2),結果成功。
· 從Switch A上ping Switch F(4:::2),結果成功。
· 從Switch B上ping Switch F(4::2),結果成功。
· 從Switch C上ping Switch F(4::2),結果成功。
由於Telnet使用的是TCP協議,ping使用的是ICMP協議,所以由以上結果可證明:從Switch D的以太網接口VLAN接口1、VLAN接口2和VLAN接口3接收的IPv4 TCP報文的下一跳為1.1.4.2,從Switch D的以太網接口VLAN接口1、VLAN接口2和VLAN接口3接收的IPv6 TCP報文的下一跳為5::2,全局雙棧策略路由設置成功。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!