08-策略路由配置
本章節下載: 08-策略路由配置 (435.86 KB)
與單純依照IP報文的目的地址查找路由表進行轉發不同,策略路由是一種依據用戶製定的策略進行路由轉發的機製。策略路由可以對於滿足一定條件(ACL規則、報文長度等)的報文,執行指定的操作(設置報文的下一跳、出接口、SRv6 TE Policy、缺省下一跳、缺省出接口和缺省SRv6 TE Policy等)。
設備上,報文的基本轉發流程為:
(1) 首先根據配置的策略路由,查找滿足匹配條件的節點。
(2) 若找到了匹配的節點,並且該節點是permit(允許)模式:
a. 根據策略路由中配置的下一跳、出接口和SRv6 TE Policy指導報文轉發。
b. 若節點未配置下一跳、出接口和SRv6 TE Policy,或根據下一跳、出接口和SRv6 TE Policy指導報文轉發失敗,則根據路由表中除缺省路由之外的路由來轉發報文。
c. 若未找到除缺省路由之外的路由,或路由轉發失敗,則根據策略路由中配置的缺省下一跳、缺省出接口和缺省SRv6 TE Policy指導報文轉發。
d. 若節點未配置缺省下一跳、缺省出接口和缺省SRv6 TE Policy,或根據缺省下一跳、缺省出接口和缺省SRv6 TE Policy指導報文轉發失敗,則根據缺省路由來轉發報文。
(3) 若找不到匹配的節點,或找到了匹配的節點,但該節點是deny(拒絕)模式,則根據路由表指導報文轉發。
根據作用對象的不同,策略路由可分為以下二種類型:
· 本地策略路由:對設備本身產生的報文(比如本地發出的ping報文)起作用,指導其發送。
· 轉發策略路由:對接口接收的報文起作用,指導其轉發。
策略用來定義報文的匹配規則,以及對報文執行的操作。策略由節點組成。
一個策略可以包含一個或者多個節點。節點的構成如下:
· 每個節點由節點編號來標識。節點編號越小節點的優先級越高,優先級高的節點優先被執行。
· 每個節點的具體內容由if-match子句和apply子句來指定。if-match子句定義該節點的匹配規則,apply子句定義該節點的動作。
· 每個節點對報文的處理方式由匹配模式決定。匹配模式分為permit(允許)和deny(拒絕)兩種。
應用策略後,係統將根據策略中定義的匹配規則和操作,對報文進行處理:係統按照優先級從高到低的順序依次匹配各節點,如果報文滿足這個節點的匹配規則,就執行該節點的動作;如果報文不滿足這個節點的匹配規則,就繼續匹配下一個節點;如果報文不能滿足策略中任何一個節點的匹配規則,則根據路由表來轉發報文。
在一個節點中可以配置多條if-match子句,同一類型的if-match子句在設備隻能配置一條。
同一個節點中的不同類型if-match子句之間是“與”的關係,即報文必須滿足該節點的所有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 continue子句,則不再匹配下一節點 ¡ 如果節點指導報文轉發失敗且配置了apply continue子句,則支持繼續匹配下一節點 · 如果節點未配置apply子句,則不會執行任何動作,且不再匹配下一節點,報文將根據路由表來進行轉發 |
||
如果一個節點中未配置任何if-match子句,則認為所有報文都滿足該節點的匹配規則,按照“報文滿足所有if-match子句”的情況進行後續處理。
策略路由通過與Track聯動,增強了應用的靈活性和對網絡環境變化的動態感知能力。
策略路由可以在配置報文的下一跳、出接口、缺省下一跳、缺省出接口時與Track項關聯,根據Track項的狀態來動態地決定策略的可用性。策略路由配置僅在關聯的Track項狀態為Positive或NotReady時生效。關於策略路由與Track聯動的詳細介紹和相關配置,請參見“可靠性配置指導”中的“Track”。
收到某些目的為本設備的IP報文後,如果策略路由匹配該報文,會在報文上送CPU處理前先按策略節點動作處理。
支持快速轉發功能的設備會采用高速緩存來處理報文,根據報文的一個或多個信息來標識一條數據流。當一條數據流的第一個報文經過策略路由轉發成功後,在高速緩存中生成相應的轉發信息,該數據流的後續報文就可以通過直接查找策略路由快速轉發表進行轉發。這樣便大大減少了報文的轉發時間,提高了報文的轉發速率。有關快速轉發的詳細介紹,請參見“三層技術-IP業務”中的“快速轉發”。
如果策略路由的permit節點指導報文轉發成功,則滿足如下條件時設備無法生成快速轉發表項:
· 策略節點配置了報文五元組之外的匹配條件,例如通過if-match packet-length子句設置了IP報文長度匹配規則。
· 如果策略節點配置了apply access-vpn、apply next-hop(指定了帶有inbound-vpn參數的下一跳)和apply output-interface(指定了廣播或NBMA類型的出接口)其中一種或多種子句,則按照優先級順序依次判斷是否滿足如下條件:
¡ 策略節點配置了apply access-vpn子句,且該子句指定了多個VPN實例,但是第一個VPN實例不可用。如果未配置本子句,則繼續判斷後麵的條件。
¡ 策略節點配置了apply next-hop子句,且該子句指定了帶有inbound-vpn參數的下一跳,但是該下一跳不可達。在負載分擔模式下,需要至少一個帶有inbound-vpn參數的下一跳;在非負載分擔模式下,配置帶inbound-vpn參數的下一跳之前未配置其他可用的、不帶inbound-vpn參數的下一跳。如果未配置本子句,則繼續判斷後麵的條件。
¡ 策略節點配置了apply output-interface子句,且該子句指定了廣播或NBMA類型的出接口,但是該出接口不可用。在負載分擔模式下,需要至少一個指定了廣播或NBMA類型的出接口;在非負載分擔模式下,指定廣播或NBMA類型的出接口之前未指定其他可用的、非廣播或NBMA類型的出接口。
· 策略節點未配置apply access-vpn vpn-instance、apply next-hop、apply output-interface或apply srv6-policy其中一種或多種子句,但是配置了apply default-next-hop、apply default-output-interface或apply default-srv6-policy中的一種或多種子句。
· 策略節點配置了apply ip-df或apply precedence子句。
如果策略路由的permit節點指導報文轉發失敗,並且該節點配置了apply continue子句,則設備也無法生成快速轉發表項。
策略路由配置任務如下:
(1) 配置策略
a. 創建策略節點
b. 配置策略節點的匹配規則
c. 配置策略節點的動作
(2) 應用策略
請選擇以下至少一項任務進行配置:
(1) 進入係統視圖。
system-view
(2) 創建策略節點,並進入策略節點視圖。
policy-based-route policy-name [ deny | permit ] node node-number
(1) 進入係統視圖。
system-view
(2) 進入策略節點視圖。
policy-based-route policy-name [ deny | permit ] node node-number
(3) 設置匹配規則。
¡ 設置ACL匹配規則。
if-match acl { acl-number | name acl-name }
缺省情況下,未設置ACL匹配規則。
策略路由不支持匹配二層信息的ACL匹配規則。
¡ 設置IP報文長度匹配規則。
if-match packet-length min-len max-len
缺省情況下,未設置IP報文長度匹配規則。
¡ 設置報文源地址匹配規則。
if-match source-ip { interface interface-type interface-number | [ vpn-instance vpn-instance-name ] ip-address }
缺省情況下,未設置報文源地址匹配規則。
¡ 設置應用組匹配規則。
if-match app-group app-group-name&<1-6>
缺省情況下,未設置應用組匹配規則。
應用組匹配規則隻對轉發策略路由生效,對本地策略路由不生效。
應用組的詳細介紹,請參見“安全配置指導”中的“APR”。
¡ 設置服務對象組匹配規則。
if-match object-group service object-group-name&<1-6>
缺省情況下,未設置服務對象組匹配規則。
服務對象組的詳細介紹,請參見“安全配置指導”中的“對象組”。
用戶通過配置apply子句指導策略節點的動作。
影響報文轉發路徑的apply子句有多條,優先級從高到低依次為:
(1) apply access-vpn
(2) apply next-hop
(3) apply output-interface
(4) apply gateway
(5) apply srv6-policy
(6) apply default-next-hop
(7) apply default-output-interface
(8) apply default-gateway
(9) apply default-srv6-policy
apply子句的含義、執行優先情況和詳細說明如表1-2所示。
表1-2 apply子句的含義以及執行優先情況等說明
子句 |
含義 |
執行優先情況/詳細說明 |
apply precedence |
設置IP報文的IP優先級 |
隻要配置了該子句,該子句就一定會執行 |
apply ip-df df-value |
設置IP報文的DF(Don’t Fragment,不分片)標誌 |
隻要配置了該子句,該子句就一定會執行 |
apply loadshare { default-next-hop | default-output-interface | default-srv6-policy | next-hop | output-interface | srv6-policy } |
設置指導報文轉發的下一跳、出接口、SRv6 TE Policy、缺省下一跳、缺省出接口和缺省SRv6 TE Policy的工作模式為負載分擔模式 |
下一跳、出接口、SRv6 TE Policy、缺省下一跳、缺省出接口和缺省SRv6 TE Policy的工作模式有兩種:主備模式、負載分擔模式。以多個下一跳為例: · 主備模式:按照配置順序,以下一跳作為主用下一跳,指導報文轉發。當主用下一跳失效時,按配置順序選擇後續的第一個可用的下一跳指導報文轉發 · 負載分擔模式:多個下一跳均用於指導報文轉發。如果不匹配快速轉發表,則按照配置順序逐包輪流選擇可用的下一跳指導報文轉發;如果匹配快速轉發表,則按照配置順序逐流輪流選擇可用的下一跳指導報文轉發 缺省情況下,工作模式為主備模式 負載分擔模式隻對策略路由配置的多個下一跳、出接口、SRv6 TE Policy、缺省下一跳、缺省出接口、缺省SRv6 TE Policy生效 |
apply access-vpn |
設置報文在公網或指定VPN實例中進行轉發 |
報文如果匹配了其中一個VPN實例下的轉發表,報文將在該VPN實例中進行轉發 |
apply remark-vpn |
重標記報文中的VPN實例 |
本命令必須和apply access-vpn命令同時使用 |
apply next-hop、apply output-interface、apply gateway和apply srv6-policy |
設置報文的下一跳、出接口、網關地址和SRv6 TE Policy |
如果配置了多條有效的子句,係統隻會執行優先級最高的一條 |
apply default-next-hop、apply default-output-interface、apply default-gateway和apply default-srv6-policy |
設置報文的缺省下一跳、缺省出接口、缺省網關地址和缺省SRv6 TE Policy |
如果配置了多條有效的子句,係統隻會執行優先級最高的一條 執行缺省下一跳、缺省出接口、缺省網關地址和缺省SRv6 TE Policy的前提是:在策略中未配置下一跳、出接口、網關地址或SRv6 TE Policy,或者配置的下一跳、出接口、網關地址和SRv6 TE Policy無效,並且在路由表中未找到與報文目的IP地址匹配的路由表項 |
apply continue |
設置匹配成功的當前節點轉發失敗後繼續進行後續節點的處理 |
如果當前節點中未配置影響報文轉發路徑的apply子句,或者配置了這些子句中的一個或多個,但配置的子句都失效(下一跳不可達、出接口down、網關地址不可達、SRv6 TE Policy不可用、或者報文在指定VPN內轉發失敗)且查找普通路由表也轉發失敗時,會進行下一節點的處理 |
在設置報文轉發的下一跳時,對於配置接口出方向策略路由,僅支持直連下一跳,且僅支持一個下一跳。
策略路由通過查詢FIB表中是否存在下一跳或缺省下一跳地址對應的條目,判斷設置的報文轉發下一跳或缺省下一跳地址是否可用。策略路由周期性檢查FIB表,設備到下一跳的路徑發生變化時,策略路由無法及時感知,可能會導致通信發生短暫中斷。
(1) 進入係統視圖。
system-view
(2) 進入策略節點視圖。
policy-based-route policy-name [ deny | permit ] node node-number
(3) 設置IP報文的IP優先級。
apply precedence { type | value }
缺省情況下,未設置IP報文的優先級。
(4) 設置IP報文頭中的DF標誌。
apply ip-df df-value
缺省情況下,未設置IP報文頭中的DF標誌。
(1) 進入係統視圖。
system-view
(2) 進入策略節點視圖。
policy-based-route policy-name [ deny | permit ] node node-number
(3) 配置動作。
¡ 設置報文在公網或指定VPN實例中進行轉發。
apply access-vpn { public | vpn-instance vpn-instance-name&<1-4> }
缺省情況下,設備根據路由表在公網或VPN內轉發報文。
每個節點最多可以配置公網和4個VPN實例。當滿足匹配規則後,將根據配置順序在公網或第一個可用的VPN實例轉發表進行轉發。
¡ 重標記報文所屬的VPN。
apply remark-vpn
缺省情況下,未重標記報文所屬的VPN。
¡ 設置報文轉發的下一跳。
apply next-hop [ vpn-instance vpn-instance-name | inbound-vpn ] { ip-address [ direct ] [ track track-entry-number ] [ weight weight-value ] }&<1-4>
缺省情況下,未設置報文轉發的下一跳。
用戶通過一次或多次配置本命令可以同時配置多個下一跳,每個節點最多可以配置4個下一跳,這些下一跳起到主備或負載分擔的作用。
當配置了多個下一跳做主備,且多個下一跳地址屬於同一個網段時,當主下一跳匹配失敗後,設備會先匹配主下一跳對應的網段路由轉發報文,當網段路由匹配失敗後,再匹配配置的備下一跳。
¡ 設置指導報文轉發的多個下一跳工作在負載分擔模式。
apply loadshare next-hop
缺省情況下,多個下一跳工作在主備模式。
¡ 設置指導報文轉發的出接口。
apply output-interface { interface-type interface-number [ track track-entry-number ] }&<1-4>
缺省情況下,未設置指導報文轉發的出接口。
用戶通過一次或多次配置本命令可以同時配置多個出接口,每個節點最多可以配置4個出接口,這些出接口起到主備或負載分擔的作用。
¡ 設置指導報文轉發的多個出接口工作在負載分擔模式。
apply loadshare output-interface
缺省情況下,多個出接口工作在主備模式。
¡ 設置指導報文轉發的下一跳地址為網關地址。
apply gateway { interface-type interface-number [ track track-entry-number ] }&<1-4>
缺省情況下,未設置指導報文轉發的下一跳地址為網關地址。
¡ 設置指導報文轉發的SRv6 TE Policy。
apply srv6-policy { endpoint color [ { sid | vpnsid } sid ] }&<1-2>
缺省情況下,未配置指導報文轉發的SRv6 TE Policy。
用戶通過一次或多次執行本命令同時配置多個SRv6 TE Policy,每個節點最多可以配置2個SRv6 TE Policy。當滿足匹配規則後,將按照配置順序選擇第一個可用的SRv6 TE Policy指導報文轉發。
¡ 設置指導報文轉發的SRv6 TE Policy工作在負載分擔模式。
apply loadshare srv6-policy
缺省情況下,多個SRv6 TE Policy工作在主備模式。
¡ 設置指導報文轉發的缺省下一跳。
apply default-next-hop [ vpn-instance vpn-instance-name | inbound-vpn ] { ip-address [ direct ] [ track track-entry-number ] }&<1-4>
缺省情況下,未設置指導報文轉發的缺省下一跳。
用戶通過一次或多次配置本命令可以同時配置多個缺省下一跳,每個節點最多可以配置4個缺省下一跳,這些缺省下一跳起到主備或負載分擔的作用。
¡ 設置指導報文轉發的多個缺省下一跳工作在負載分擔模式。
apply loadshare default-next-hop
缺省情況下,多個缺省下一跳工作在主備模式。
¡ 設置指導報文轉發的缺省出接口。
apply default-output-interface { interface-type interface-number [ track track-entry-number ] }&<1-4>
缺省情況下,未設置指導報文轉發的缺省出接口。
用戶通過一次或多次配置本命令可以同時配置多個缺省出接口,每個節點最多可以配置4個缺省出接口,這些缺省出接口起到主備或負載分擔的作用。
¡ 設置指導報文轉發的多個缺省出接口工作在負載分擔模式。
apply loadshare default-output-interface
缺省情況下,多個缺省出接口工作在主備模式。
¡ 設置指導報文轉發的缺省下一跳地址為網關地址。
apply default-gateway { interface-type interface-number [ track track-entry-number ] }&<1-4>
缺省情況下,未設置指導報文轉發的缺省下一跳地址為網關地址。
¡ 設置指導報文轉發的缺省SRv6 TE Policy。
apply default-srv6-policy { endpoint color [ { sid | vpnsid } sid ] }&<1-2>
缺省情況下,未配置指導報文轉發的缺省SRv6 TE Policy。
用戶通過一次或多次執行本命令同時配置多個缺省SRv6 TE Policy,每個節點最多可以配置2個SRv6 TE Policy。當滿足匹配規則後,將按照配置順序選擇第一個可用的缺省SRv6 TE Policy指導報文轉發。
¡ 設置指導報文轉發的多個缺省SRv6 TE Policy工作在負載分擔模式。
apply loadshare default-srv6-policy
缺省情況下,多個缺省SRv6 TE Policy工作在主備模式。
(1) 進入係統視圖。
system-view
(2) 進入策略節點視圖。
policy-based-route policy-name [ deny | permit ] node node-number
(3) 設置匹配成功的當前節點指定轉發路徑失敗後繼續進行後續節點的處理。
apply continue
缺省情況下,匹配成功的當前節點指定轉發路徑失敗後不再進行下一節點的匹配。
本命令僅在策略節點的匹配模式為permit時生效。
通過本配置,可以將已經配置的策略應用到本地,指導設備本身產生報文的發送。應用策略時,該策略必須已經存在,否則配置將失敗。
· 對本地報文隻能應用一個策略。應用新的策略前必須刪除本地原來已經應用的策略。
· 若無特殊需求,建議用戶不要對本地報文應用策略。否則,有可能會對本地報文的發送造成不必要的影響(如ping、telnet服務的失效)。
(1) 進入係統視圖。
system-view
(2) 對本地報文應用策略。
ip local policy-based-route policy-name
缺省情況下,未對本地報文應用策略。
通過本配置,可以將已經配置的策略應用到接口,指導接口接收的所有報文的轉發。應用策略時,該策略必須已經存在,否則配置將失敗。
· 對接口轉發的報文應用策略時,一個接口隻能應用一個策略。應用新的策略前必須刪除接口上原來已經應用的策略。
· 一個策略可以同時被多個接口應用。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖。
interface interface-type interface-number
(3) 對接口轉發的報文應用策略。
ip policy-based-route policy-name
缺省情況下,未對接口轉發的報文應用策略。
在完成上述配置後,在任意視圖下執行display命令可以顯示配置策略路由後的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下執行reset命令可以清除策略路由的統計信息。
表1-3 策略路由顯示和維護
操作 |
命令 |
顯示已經配置的策略 |
display ip policy-based-route [ policy policy-name ] |
顯示接口下轉發策略路由的配置信息和統計信息 |
(獨立運行模式) display ip policy-based-route interface interface-type interface-number [ slot slot-number ] (IRF模式) display ip policy-based-route interface interface-type interface-number [ chassis chassis-number slot slot-number ] |
顯示本地策略路由的配置信息和統計信息 |
(獨立運行模式) display ip policy-based-route local [ slot slot-number ] (IRF模式) display ip policy-based-route local [ chassis chassis-number slot slot-number ] |
顯示已經應用的策略路由信息 |
display ip policy-based-route setup |
清除策略路由的統計信息 |
reset ip policy-based-route statistics [ policy policy-name ] |
Router A分別與Router B和Router C直連(保證Router B和Router C之間路由完全不可達)。通過策略路由控製Router A產生的報文:
· 指定所有TCP報文的下一跳為1.1.2.2;
· 其它報文仍然按照查找路由表的方式進行轉發。
(1) 配置Router A
# 配置GigabitEthernet接口的IP地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] ip address 1.1.2.1 24
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface gigabitethernet 1/0/2
[RouterA-GigabitEthernet1/0/2] ip address 1.1.3.1 24
[RouterA-GigabitEthernet1/0/2] quit
# 定義訪問控製列表ACL 3101,用來匹配TCP報文。
[RouterA] acl advanced 3101
[RouterA-acl-ipv4-adv-3101] rule permit tcp
[RouterA-acl-ipv4-adv-3101] quit
# 定義5號節點,指定所有TCP報文的下一跳為1.1.2.2。
[RouterA] policy-based-route aaa permit node 5
[RouterA-pbr-aaa-5] if-match acl 3101
[RouterA-pbr-aaa-5] apply next-hop 1.1.2.2
[RouterA-pbr-aaa-5] quit
# 在Router A上應用本地策略路由。
[RouterA] ip local policy-based-route aaa
(2) 配置Router B
# 配置GigabitEthernet接口的IP地址。
<RouterB> system-view
[RouterB] interface gigabitethernet 1/0/1
[RouterB-GigabitEthernet1/0/1] ip address 1.1.2.2 24
(3) 配置Router C
# 配置GigabitEthernet接口的IP地址。
<RouterC> system-view
[RouterC] interface gigabitethernet 1/0/2
[RouterC-GigabitEthernet1/0/2] ip address 1.1.3.2 24
從Router A上通過Telnet方式登錄Router B(1.1.2.2/24),結果成功。
從Router A上通過Telnet方式登錄Router C(1.1.3.2/24),結果失敗。
從Router A上ping Router C(1.1.3.2/24),結果成功。
由於Telnet使用的是TCP協議,ping使用的是ICMP協議,所以由以上結果可證明:Router A產生的TCP報文的下一跳為1.1.2.2,接口GigabitEthernet1/0/2不發送TCP報文,但可以發送非TCP報文,策略路由設置成功。
Router A分別與Router B和Router C直連(保證Router B和Router C之間路由完全不可達)。通過策略路由控製從Router A的以太網接口GigabitEthernet1/0/1接收的報文:
· 指定所有TCP報文的下一跳為1.1.2.2;
· 其它報文仍然按照查找路由表的方式進行轉發。
(1) 配置IP地址和單播路由協議,確保Router B和Host A,Router C和Host A之間路由可達,具體配置過程略。
(2) 配置Router A
# 定義訪問控製列表ACL 3101,用來匹配TCP報文。
[RouterA] acl advanced 3101
[RouterA-acl-ipv4-adv-3101] rule permit tcp
[RouterA-acl-ipv4-adv-3101] quit
# 定義5號節點,指定所有TCP報文的下一跳為1.1.2.2。
[RouterA] policy-based-route aaa permit node 5
[RouterA-pbr-aaa-5] if-match acl 3101
[RouterA-pbr-aaa-5] apply next-hop 1.1.2.2
[RouterA-pbr-aaa-5] quit
# 在以太網接口GigabitEthernet1/0/1上應用轉發策略路由,處理此接口接收的報文。
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] ip policy-based-route aaa
[RouterA-GigabitEthernet1/0/1] quit
從Host A上通過Telnet方式登錄Router B,結果成功。
從Host A上通過Telnet方式登錄Router C,結果失敗。
從Host A上ping Router C,結果成功。
由於Telnet使用的是TCP協議,ping使用的是ICMP協議,所以由以上結果可證明:從Router A的以太網接口GigabitEthernet1/0/1接收的TCP報文的下一跳為1.1.2.2,接口GigabitEthernet1/0/3不轉發TCP報文,但可以轉發非TCP報文,策略路由設置成功。
通過策略路由控製從Router A的以太網接口GigabitEthernet1/0/1接收的報文:
· IP報文長度為64~300字節的報文以150.1.1.2/24作為下一跳IP地址;
· 長度為301~1000字節的報文以151.1.1.2/24作為下一跳IP地址;
· 所有其它長度的報文都按照查找路由表的方式轉發。
(1) 配置IP地址和單播路由協議,確保各設備之間路由可達,具體配置過程略。
(2) 配置Router A
# 配置策略lab1,將長度為64~300字節的報文轉發到下一跳150.1.1.2,而將長度為301~1000字節的報文轉發到下一跳151.1.1.2。
[RouterA] policy-based-route lab1 permit node 10
[RouterA-pbr-lab1-10] if-match packet-length 64 300
[RouterA-pbr-lab1-10] apply next-hop 150.1.1.2
[RouterA-pbr-lab1-10] quit
[RouterA] policy-based-route lab1 permit node 20
[RouterA-pbr-lab1-20] if-match packet-length 301 1000
[RouterA-pbr-lab1-20] apply next-hop 151.1.1.2
[RouterA-pbr-lab1-20] quit
# 在以太網接口GigabitEthernet1/0/1上應用定義的策略lab1,處理此接口接收的報文。
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] ip policy-based-route lab1
[RouterA-GigabitEthernet1/0/1] quit
# 在Router A上使用debugging ip policy-based-route命令監視策略路由。
<RouterA> debugging ip policy-based-route
<RouterA> terminal logging level 7
<RouterA> terminal monitor
# 從Host A上Ping Router B的Loopback0,並將報文數據字段長度設為64字節,這樣,從IP頭到報文末尾的總長度在64~300字節之間。
C:\>ping –n 1 -l 64 10.1.1.1
Pinging 10.1.1.1 with 64 bytes of data:
Reply from 10.1.1.1: bytes=64 time=1ms TTL=64
Ping statistics for 10.1.1.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 1ms, Average = 1ms
從Router A上顯示的策略路由調試信息如下:
<RouterA>
*Jun 26 12:04:33:519 2012 RouterA PBR4/7/PBR Forward Info: -MDC=1; Policy:lab1, Node:
10,match succeeded.
*Jun 26 12:04:33:519 2012 RouterA PBR4/7/PBR Forward Info: -MDC=1; apply next-hop 150
.1.1.2.
以上策略路由信息顯示,Router A在接收到報文後,根據策略路由確定的下一跳為150.1.1.2,也就是說將報文從接口GigabitEthernet1/0/2轉發出去。
# 從Host A上Ping Router B的Loopback0,並將報文數據字段長度設為300字節,這樣,從IP頭到報文末尾的總長度在301~1000字節之間。
C:\> ping –n 1 -l 300 10.1.1.1
Pinging 10.1.1.1 with 300 bytes of data:
Reply from 10.1.1.1: bytes=300 time=1ms TTL=64
Ping statistics for 10.1.1.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 1ms, Average = 1ms
從Router A上顯示的策略路由調試信息如下:
<RouterA>
*Jun 26 12:20:33:610 2012 RouterA PBR4/7/PBR Forward Info: -MDC=1; Policy:lab1, Node:
20,match succeeded.
*Jun 26 12:20:33:610 2012 RouterA PBR4/7/PBR Forward Info: -MDC=1; apply next-hop 151
.1.1.2.
以上策略路由信息顯示,Router A在接收到報文後,根據策略路由確定的下一跳為151.1.1.2,也就是說將報文從接口GigabitEthernet1/0/3轉發出去。
Router A分別與Router B和Router C直連(保證Router B和Router C之間路由完全不可達)。通過策略路由控製從Router A的以太網接口GigabitEthernet1/0/1接收的報文:
· 源地址為192.168.10.2的報文以4.1.1.2/24作為下一跳IP地址;
· 其它源地址的報文以5.1.1.2/24作為下一跳IP地址。
圖1-4 基於報文源地址的轉發策略路由的配置舉例組網圖
(1) 配置IP地址和單播路由協議,確保Router B和Host A/Host B,Router C和Host A/Host B之間路由可達,具體配置過程略。
(2) 配置Router A
# 定義訪問控製列表ACL 2000,用來匹配源地址為192.168.10.2的報文。
[RouterA] acl basic 2000
[RouterA-acl-ipv4-basic-2000] rule 10 permit source 192.168.10.2 0
[RouterA-acl-ipv4-basic-2000] quit
# 定義0號節點,指定所有源地址為192.168.10.2的報文的下一跳為4.1.1.2。
[RouterA] policy-based-route aaa permit node 0
[RouterA-pbr-aaa-0] if-match acl 2000
[RouterA-pbr-aaa-0] apply next-hop 4.1.1.2
[RouterA-pbr-aaa-0] quit
[RouterA] policy-based-route aaa permit node 1
[RouterA-pbr-aaa-1] apply next-hop 5.1.1.2
[RouterA-pbr-aaa-1] quit
# 在以太網接口GigabitEthernet1/0/1上應用轉發策略路由,處理此接口接收的報文。
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] ip policy-based-route aaa
[RouterA-GigabitEthernet1/0/1] quit
從Host A上ping Router B,結果成功。
從Host B上ping Router B,結果失敗。
從Host A上ping Router C,結果失敗。
從Host B上ping Router C,結果成功。
以上結果可證明:從Router A的以太網接口GigabitEthernet1/0/1接收的源地址為192.168.10.2的報文的下一跳為4.1.1.2,所以Host A能ping通Router B,源地址為192.168.10.3的下一跳5.1.1.2,所以Host B能ping通Router C,由此表明策略路由設置成功。
Router A分別與Router B和Router C直連(保證Router B和Router C之間路由完全不可達)。通過策略路由控製從Router A的以太網接口GigabitEthernet1/0/1接收的報文:
· 指定所有HTTP報文的下一跳為1.1.2.2;
· 其它報文仍然按照查找路由表的方式進行轉發。
圖1-5 基於報文應用類型的轉發策略路由的配置舉例組網圖
(1) 配置IP地址和單播路由協議,確保Router B和Host A,Router C和Host A之間路由可達,具體配置過程略。
(2) 配置Router A
# 定義應用組http,用來匹配HTTP報文。
[RouterA] app-group http
[RouterA-app-group-http] include application http
[RouterA-app-group-http] quit
# 定義5號節點,指定所有HTTP報文的下一跳地址為1.1.2.2。
[RouterA] policy-based-route aaa permit node 5
[RouterA-pbr-aaa-5] if-match app-group http
[RouterA-pbr-aaa-5] apply next-hop 1.1.2.2
[RouterA-pbr-aaa-5] quit
# 在以太網接口GigabitEthernet1/0/1上應用轉發策略路由,處理此接口接收的報文。
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] ip policy-based-route aaa
[RouterA-GigabitEthernet1/0/1] quit
從Host A上通過Web方式登錄Router B,結果成功。
從Host A上通過Web方式登錄Router C,結果失敗。
從Host A上ping Router C,結果成功。
由於Web應用使用的是HTTP協議,ping使用的是ICMP協議,所以由以上結果可證明:從Router A的以太網接口GigabitEthernet1/0/1接收的HTTP報文的下一跳都會被修改為1.1.2.2,所以HTTP報文都會從接口GigabitEthernet1/0/2轉發出去;而接口GigabitEthernet1/0/3可以轉發非HTTP報文,策略路由設置成功。
Router A分別與Router B和Router C直連(保證Router B和Router C之間路由完全不可達)。通過策略路由控製從Router A的以太網接口GigabitEthernet1/0/1接收的報文:
· 指定所有FTP報文的下一跳為1.1.2.2;
· 其它報文仍然按照查找路由表的方式進行轉發。
圖1-6 基於報文服務類型的轉發策略路由的配置舉例組網圖
(1) 配置IP地址和單播路由協議,確保Router B和Host A,Router C和Host A之間路由可達,具體配置過程略。
(2) 配置Router A
# 定義5號節點,關聯係統預定義的ftp服務對象組,指定所有FTP報文的下一跳為1.1.2.2。
[RouterA] policy-based-route aaa permit node 5
[RouterA-pbr-aaa-5] if-match object-group service ftp
[RouterA-pbr-aaa-5] apply next-hop 1.1.2.2
[RouterA-pbr-aaa-5] quit
# 在以太網接口GigabitEthernet1/0/1上應用轉發策略路由,處理此接口接收的報文。
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] ip policy-based-route aaa
[RouterA-GigabitEthernet1/0/1] quit
從Host A上通過FTP方式登錄Router B,結果成功。
從Host A上通過FTP方式登錄Router C,結果失敗。
從Host A上ping Router C,結果成功。
由於ping使用的是ICMP協議,所以由以上結果可證明:從Router A的以太網接口GigabitEthernet1/0/1接收的FTP報文的下一跳都會被修改為1.1.2.2,所以FTP報文都會從接口GigabitEthernet1/0/2轉發出去;而接口GigabitEthernet1/0/3可以轉發非FTP報文,策略路由設置成功。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!