07-策略路由配置
本章節下載: 07-策略路由配置 (444.20 KB)
與單純依照IP報文的目的地址查找路由表進行轉發不同,策略路由是一種依據用戶製定的策略進行路由轉發的機製。策略路由可以對於滿足一定條件(ACL規則等)的報文,執行指定的操作(設置報文的下一跳、出接口、缺省下一跳和缺省出接口等)。
設備上,報文的基本轉發流程為:
(1) 首先根據配置的策略路由,查找滿足匹配條件的節點。
(2) 若找到了匹配的節點,並且該節點是permit(允許)模式:
a. 根據策略路由中配置的下一跳和出接口指導報文轉發。
b. 若節點未配置下一跳和出接口,或根據下一跳和出接口指導報文轉發失敗,則根據路由表中除缺省路由之外的路由來轉發報文。
c. 若未找到除缺省路由之外的路由,或路由轉發失敗,則根據策略路由中配置的缺省下一跳和缺省出接口指導報文轉發。
d. 若節點未配置缺省下一跳和缺省出接口,或根據缺省下一跳和缺省出接口指導報文轉發失敗,則根據缺省路由來轉發報文。
(3) 若找不到匹配的節點,或找到了匹配的節點,但該節點是deny(拒絕)模式,則根據路由表指導報文轉發。
根據作用對象的不同,策略路由可分為以下三種類型:
· 本地策略路由:對設備本身產生的報文(比如本地發出的ping報文)起作用,指導其發送。
· 轉發策略路由:對接口接收的報文起作用,指導其轉發。
策略用來定義報文的匹配規則,以及對報文執行的操作。策略由節點組成。
一個策略可以包含一個或者多個節點。節點的構成如下:
· 每個節點由節點編號來標識。編號較小的節點優先被執行。
· 每個節點的具體內容由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子句”的情況進行後續處理。
策略路由通過與Track聯動,增強了應用的靈活性和對網絡環境變化的動態感知能力。
策略路由可以在配置報文的下一跳、出接口、缺省下一跳、缺省出接口時與Track項關聯,根據Track項的狀態來動態地決定策略的可用性。策略路由配置僅在關聯的Track項狀態為Positive或NotReady時生效。關於策略路由與Track聯動的詳細介紹和相關配置,請參見“可靠性配置指導”中的“Track”。
設備收到某些目的為本設備的IP報文後,如果策略路由匹配該報文,會在報文上送CPU處理前先按策略節點動作處理。
策略路由配置任務如下:
(1) 配置策略
a. 創建策略節點
b. 配置策略節點的匹配規則
c. 配置策略節點的動作
(2) 應用策略
請選擇以下至少一項任務進行配置:
¡ 對接口轉發的報文應用策略
- 全局應用轉發策略
(1) 進入係統視圖。
system-view
(2) 創建策略節點,並進入策略節點視圖。
policy-based-route policy-name [ deny | permit ] node node-number
(3) (可選)設置當前策略節點的描述信息。
description text
缺省情況下,未設置當前策略節點的描述信息。
(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匹配規則。
設置ACL匹配規則時,對於ACL規則的permit/deny動作以及time-range指定的規則生效時間段等的處理機製不再生效。
¡ 設置服務鏈匹配規則。
if-match service-chain path-id service-path-id [ path-index service-patch-index ]
缺省情況下,未設置服務鏈匹配規則。
需要注意的是:
- 如果在三層以太網接口和三層以太網聚合接口上應用策略路由,策略節點不能同時配置if-match service-chain和apply default-next-hop子句。
- 三層以太網子接口和三層以太網聚合子接口不支持服務鏈功能。
用戶通過配置apply子句指導策略節點的動作。
影響報文轉發路徑的apply子句有四條,優先級從高到低依次為:
(1) apply next-hop
(2) apply output-interface
(3) apply default-next-hop
(4) apply default-output-interface
apply子句的含義、執行優先情況和詳細說明如表1-2所示。
表1-2 apply子句的含義以及執行優先情況等說明
子句 |
含義 |
執行優先情況/詳細說明 |
apply precedence |
設置IP報文的IP優先級 |
隻要配置了該子句,該子句就一定會執行 |
apply next-hop和apply output-interface |
設置報文的下一跳、出接口 |
當兩條子句同時配置並且都有效時,係統隻會執行apply next-hop子句 |
apply service-chain |
設置報文的服務鏈規則 |
本子句必須在應用可達的VXLAN隧道的下一跳才生效 |
apply mirror-to-destination |
設置報文鏡像到指定目的地址的隧道 |
某些組網中,要將報文通過隧道(如GRE隧道)鏡像到指定的網絡設備,以便於對報文進行分析和監控。本功能用來滿足該需求。配置本功能後,策略節點為匹配的報文封裝外層頭,通過隧道將報文轉發給目的網絡設備 策略節點中隻要配置了此動作,所有匹配該策略節點匹配條件的報文都會被鏡像到指定目的地址的隧道 |
apply default-next-hop和apply default-output-interface |
設置報文的缺省下一跳、缺省出接口 |
當兩條子句同時配置並且都有效時,係統隻會執行apply default-next-hop子句 執行缺省下一跳和出接口的前提是:在策略中未配置下一跳或者出接口,或者配置的下一跳和出接口無效,並且在路由表中未找到與報文目的IP地址匹配的路由表項 |
apply statistics |
設置策略節點統計匹配成功的次數 |
開啟本功能後,管理員可以通過display命令查看當前匹配成功的總次數 策略節點中隻要配置了此動作,就一定會執行 |
在設置報文轉發的下一跳時,對於配置VXLAN隧道接口出方向策略路由,僅支持直連下一跳,且僅支持一個下一跳。
策略路由通過查詢FIB表中是否存在下一跳或缺省下一跳地址對應的條目,判斷設置的報文轉發下一跳或缺省下一跳地址是否可用。策略路由周期性檢查FIB表,設備到下一跳的路徑發生變化時,策略路由無法及時感知,可能會導致通信發生短暫中斷。
報文匹配IP報文的服務鏈規則進入的VXLAN隧道必須是IPv4 VXLAN隧道。
(1) 進入係統視圖。
system-view
(2) 進入策略節點視圖。
policy-based-route policy-name [ deny | permit ] node node-number
(3) 設置IP報文的IP優先級。
apply precedence { type | value }
缺省情況下,未設置IP報文的優先級。
(1) 進入係統視圖。
system-view
(2) 進入策略節點視圖。
policy-based-route policy-name [ deny | permit ] node node-number
(3) 配置動作。
¡ 設置報文轉發的下一跳。
apply next-hop [ vpn-instance vpn-instance-name ] { ip-address [ direct ] [ track track-entry-number ] [ service-chain path-id service-path-id [ path-index service-patch-index ] ] }&<1-4>
缺省情況下,未設置報文轉發的下一跳。
用戶通過一次或多次配置本命令可以同時配置多個下一跳,每個節點最多可以配置4個下一跳,這些下一跳起到主備的作用。
當配置了多個下一跳做主備,且多個下一跳地址屬於同一個網段時,當主下一跳匹配失敗後,設備會先匹配主下一跳對應的網段路由轉發報文,當網段路由匹配失敗後,再匹配配置的備下一跳。
¡ 設置指導報文轉發的出接口。
apply output-interface null 0 [ track track-entry-number ]
缺省情況下,未設置指導報文轉發的出接口。
¡ 設置指導報文轉發的缺省下一跳。
apply default-next-hop [ vpn-instance vpn-instance-name ] { ip-address [ direct ] [ track track-entry-number ] [ service-chain path-id service-path-id [ path-index service-path-index ] ] }&<1-4>
缺省情況下,未設置指導報文轉發的缺省下一跳。
用戶通過一次或多次配置本命令可以同時配置多個缺省下一跳,每個節點最多可以配置4個缺省下一跳,這些缺省下一跳起到主備的作用。
¡ 設置指導報文轉發的缺省出接口。
apply default-output-interface null 0 [ track track-entry-number ]
缺省情況下,未設置指導報文轉發的缺省出接口。
¡ 設置報文的服務鏈規則。
apply service-chain path-id service-path-id [ path-index service-path-index ]
缺省情況下,未設置報文的服務鏈規則。
¡ 設置報文鏡像到指定目的地址的隧道。
apply mirror-to-destination [ vpn-instance vpn-instance-name ] destination-ip-address [ source-ip source-ip-address ] [ dscp dscp-value ]
缺省情況下,未配置報文鏡像到指定目的地址的隧道。
(1) 進入係統視圖。
system-view
(2) 進入策略節點視圖。
policy-based-route policy-name [ deny | permit ] node node-number
(3) 設置策略節點統計匹配成功的次數。
apply statistics
缺省情況下,未配置策略節點統計匹配成功的次數。
當VLAN接口的類型為Super VLAN時,在該接口下發的策略路由會對Super VLAN關聯的所有Sub VLAN接口生效。
通過本配置,可以將已經配置的策略應用到本地,指導設備本身產生報文的發送。應用策略時,該策略必須已經存在,否則配置將失敗。
· 對本地報文隻能應用一個策略。應用新的策略前必須刪除本地原來已經應用的策略。
· 若無特殊需求,建議用戶不要對本地報文應用策略。否則,有可能會對本地報文的發送造成不必要的影響(如ping、telnet服務的失效)。
(1) 進入係統視圖。
system-view
(2) 對本地報文應用策略。
ip local policy-based-route policy-name
缺省情況下,未對本地報文應用策略。
通過本配置,可以將已經配置的策略應用到接口,指導接口接收的所有報文的轉發。應用策略時,該策略必須已經存在,否則配置將失敗。
· 對接口轉發的報文應用策略時,一個接口隻能應用一個策略。應用新的策略前必須刪除接口上原來已經應用的策略。
· 一個策略可以同時被多個接口應用。
· 在配置VXLAN IP網關、EVPN網關組網中的Border設備時,如果在三層以太網接口、三層聚合接口上應用策略路由,則該策略路由會同時應用於該接口及其子接口。VXLAN IP網關、EVPN網關組網的詳細介紹,請分別參見“VXLAN配置指導”中的“VXLAN”、“EVPN配置指導”中的“EVPN”。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖。
interface interface-type interface-number
(3) 對接口轉發的報文應用策略。
ip policy-based-route policy-name
缺省情況下,未對接口轉發的報文應用策略。
通過本配置,可以將已經配置的策略應用到設備的所有接口,指導這些接口接收的所有報文的轉發。
應用策略時,該策略必須已經存在,否則配置將失敗。
一台設備隻能應用一條全局策略,應用新的全局策略前必須通過執行undo ip global policy-based-route命令取消應用的全局策略。
如果同時應用了全局策略和轉發策略,則接口優先使用接口的轉發策略處理報文;如果接口上的報文不匹配轉發策略,則使用全局策略處理報文。
(1) 進入係統視圖。
system-view
(2) 對接口轉發的報文應用全局策略。
ip global policy-based-route policy-name
缺省情況下,未對接口轉發的報文應用全局策略。
在完成上述配置後,在任意視圖下執行display命令可以顯示配置策略路由後的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下執行reset命令可以清除策略路由的統計信息。
表1-3 策略路由顯示和維護
操作 |
命令 |
顯示已經配置的策略 |
display ip policy-based-route [ policy policy-name ] |
顯示全局策略路由的配置信息和統計信息 |
display ip policy-based-route global [ slot slot-number ] |
顯示接口下轉發策略路由的配置信息和統計信息 |
display ip policy-based-route interface interface-type interface-number [ slot slot-number ] |
顯示本地策略路由的配置信息和統計信息 |
display ip policy-based-route local [ slot slot-number ] |
顯示已經應用的策略路由信息 |
display ip policy-based-route setup |
清除策略路由的統計信息 |
reset ip policy-based-route statistics [ policy policy-name ] |
Switch A分別與Switch B和Switch C直連(保證Switch B和Switch C之間路由完全不可達)。通過策略路由控製Switch A產生的報文:
· 指定所有TCP報文的下一跳為1.1.2.2;
· 其它報文仍然按照查找路由表的方式進行轉發。
圖1-1 基於報文協議類型的本地策略路由的配置舉例組網圖
(1) 配置Switch A
# 創建VLAN 10和VLAN 20。
<SwitchA> system-view
[SwitchA] vlan 10
[SwitchA-vlan10] quit
[SwitchA] vlan 20
[SwitchA-vlan20] quit
# 配置接口Vlan-interface10和Vlan-interface20的IP地址。
[SwitchA] interface vlan-interface 10
[SwitchA-Vlan-interface10] ip address 1.1.2.1 24
[SwitchA-Vlan-interface10] quit
[SwitchA] interface vlan-interface 20
[SwitchA-Vlan-interface20] ip address 1.1.3.1 24
[SwitchA-Vlan-interface20] quit
# 定義訪問控製列表ACL 3101,用來匹配TCP報文。
[SwitchA] acl advanced 3101
[SwitchA-acl-ipv4-adv-3101] rule permit tcp
[SwitchA-acl-ipv4-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 next-hop 1.1.2.2
[SwitchA-pbr-aaa-5] quit
# 在Switch A上應用本地策略路由。
[SwitchA] ip local policy-based-route aaa
(2) 配置Switch B
# 創建VLAN 10
<SwitchB> system-view
[SwitchB] vlan 10
[SwitchB-vlan10] quit
# 配置接口Vlan-interface10的IP地址。
[SwitchB] interface vlan-interface 10
[SwitchB-Vlan-interface10] ip address 1.1.2.2 24
(3) 配置Switch C
#創建VLAN 20
<SwitchC> system-view
[SwitchC] vlan 20
[SwitchC-vlan20] quit
# 配置接口Vlan-interface20的IP地址。
[SwitchC] interface vlan-interface 20
[SwitchC-Vlan-interface20] ip address 1.1.3.2 24
從Switch A上通過Telnet方式登錄Switch B(1.1.2.2/24),結果成功。
從Switch A上通過Telnet方式登錄Switch C(1.1.3.2/24),結果失敗。
從Switch A上ping Switch C(1.1.3.2/24),結果成功。
由於Telnet使用的是TCP協議,ping使用的是ICMP協議,所以由以上結果可證明:Switch A發出的TCP報文的下一跳為1.1.2.2,接口Vlan-interface20不發送TCP報文,但可以發送非TCP報文,策略路由設置成功。
Switch A分別與Switch B和Switch C直連(保證Switch B和Switch C之間路由完全不可達)。
通過策略路由控製從Switch A的接口Vlan-interface11接收的報文:
· 指定所有TCP報文的下一跳為1.1.2.2;
· 其它報文仍然按照查找路由表的方式進行轉發。
圖1-2 基於報文協議類型的轉發策略路由的配置舉例組網圖
(1) 配置IP地址和單播路由協議,確保Switch B和Host A,Switch C和Host A之間路由可達,具體配置過程略。
(2) 配置Switch A
# 定義訪問控製列表ACL 3101,用來匹配TCP報文。
[SwitchA] acl advanced 3101
[SwitchA-acl-ipv4-adv-3101] rule permit tcp
[SwitchA-acl-ipv4-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 next-hop 1.1.2.2
[SwitchA-pbr-aaa-5] quit
# 在接口Vlan-interface11上應用轉發策略路由,處理此接口接收的報文。
[SwitchA] interface vlan-interface 11
[SwitchA-Vlan-interface11] ip policy-based-route aaa
[SwitchA-Vlan-interface11] quit
從Host A上通過Telnet方式登錄Switch B,結果成功。
從Host A上通過Telnet方式登錄Switch C,結果失敗。
從Host A上ping Switch C,結果成功。
由於Telnet使用的是TCP協議,ping使用的是ICMP協議,所以由以上結果可證明:從Switch A的接口Vlan-interface11接收的TCP報文的下一跳為1.1.2.2,接口Vlan-interface20不轉發TCP報文,但可以轉發非TCP報文,策略路由設置成功。
Switch D分別與Switch A、Switch B、Switch C、Switch E和Switch F直連(保證Switch E到Switch F之間路由不可達)。通過全局策略路由控製從Switch D的所有接口接收的報文:
· 指定所有TCP報文的下一跳為1.1.4.2;
· 其它報文仍然按照查找路由表的方式進行轉發。
(1) 如圖1-3所示,配置各設備接口的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網段中的源設備發來的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
# 配置策略路由aaa,定義5號節點,指定所有TCP報文的下一跳為1.1.4.2。
[SwitchD] policy-based-route aaa permit node 5
[SwitchD-pbr-aaa-5] if-match acl 3101
[SwitchD-pbr-aaa-5] apply next-hop 1.1.4.2
[SwitchD-pbr-aaa-5] quit
# 在Switch D上應用全局策略路由aaa,處理Router D上所有接口接收的報文。
[SwitchD] ip global policy-based-route aaa
從Switch A上通過Telnet方式登錄Switch E,結果成功,登錄Switch F,結果失敗。
從Switch B上通過Telnet方式登錄Switch E,結果成功,登錄Switch F,結果失敗。
從Switch C上通過Telnet方式登錄Switch E,結果成功,登錄Switch F,結果失敗。
從Switch A上ping Switch F,結果成功。
從Switch B上ping Switch F,結果成功。
從Switch C上ping Switch F,結果成功。
由於Telnet使用的是TCP協議,ping使用的是ICMP協議,所以由以上結果可證明:從Switch D的VLAN接口1、VLAN接口2和VLAN接口3接收的TCP報文的下一跳為1.1.4.2,全局策略路由設置成功。
Switch A、Switch B、Switch C為分布式EVPN網關設備,Switch D為RR,負責在交換機之間反射BGP路由。通過匹配以太網服務實例的策略路由,使Server 1發出報文先經過以太網服務實例1中的服務器處理,再發送到Server2。
圖1-4 基於EVPN的服務鏈策略路由配置組網圖
(1) 配置IP地址和單播路由協議。
請按照圖1-4配置各接口的IP地址和子網掩碼,具體配置過程略。
(2) 配置Switch A
# 開啟L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置BGP發布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 4.4.4.4 as-number 200
[SwitchA-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 創建VPN實例vpna。
[SwitchA] ip vpn-instance vpna
[SwitchA-vpn-instance-vpna] route-distinguisher 1:1
[SwitchA-vpn-instance-vpna] address-family ipv4
[SwitchA-vpn-ipv4-vpna] vpn-target 2:2
[SwitchA-vpn-ipv4-vpna] quit
[SwitchA-vpn-instance-vpna] address-family evpn
[SwitchA-vpn-evpn-vpna] vpn-target 1:1
[SwitchA-vpn-evpn-vpna] quit
[SwitchA-vpn-instance-vpna] quit
# 配置VSI虛接口VSI-interface1。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip binding vpn-instance vpna
[SwitchA-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchA-Vsi-interface1] mac-address 0001-0001-0001
[SwitchA-Vsi-interface1] local-proxy-arp enable
[SwitchA-Vsi-interface1] distributed-gateway local
[SwitchA-Vsi-interface1] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置VPN實例vpna對應的L3VNI為1000。
[SwitchA] interface vsi-interface 3
[SwitchA-Vsi-interface3] ip binding vpn-instance vpna
[SwitchA-Vsi-interface3] l3-vni 1000
[SwitchA-Vsi-interface3] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] gateway vsi-interface 1
[SwitchA-vsi-vpna] quit
# 配置VLAN接口11。
[SwitchA] interface vlan-interface 11
[SwitchA-Vlan-interface11] ip address 11.1.1.1 255.255.255.0
[SwitchA-Vlan-interface11] ospf 1 area 0.0.0.0
[SwitchA-Vlan-interface11] quit
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchA] interface twenty-fivegige 1/0/1
[SwitchA-Twenty-FiveGigE1/0/1] port link-mode bridge
[SwitchA-Twenty-FiveGigE1/0/1] service-instance 1000
[SwitchA-Twenty-FiveGigE1/0/1-srv1000] encapsulation s-vid 2
[SwitchA-Twenty-FiveGigE1/0/1-srv1000] xconnect vsi vpna
# 定義訪問控製列表ACL 3000,用來匹配源地址為10.1.1.10,目的地址為10.1.1.20的報文。
<SwitchA> system-view
[SwitchA] acl advanced 3000
[SwitchA-acl-ipv4-adv-3000] rule 0 permit ip source 10.1.1.10 0 destination 10.1.1.20
# 定義0號節點,指定所有源地址為10.1.1.10,目的地址為10.1.1.20的報文的服務鏈編號為1、下一跳為10.1.1.11。
[SwitchA] policy-based-route aa permit node 0
[SwitchA-pbr-aa-0] if-match acl 3000
[SwitchA-pbr-aa-0] apply service-chain path-id 1
[SwitchA-pbr-aa-0] apply next-hop vpn-instance vpna 10.1.1.11
# 在VSI虛接口1上應用轉發策略路由,處理此接口接收的報文。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip policy-based-route aa
[SwitchA-Vsi-interface1] quit
(3) 配置Switch B
# 開啟L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 配置BGP發布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 4.4.4.4 as-number 200
[SwitchB-bgp-default] peer 4.4.4.4 connect-interface loopback0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 4.4.4.4 enable
# 創建VPN實例vpna。
[SwitchB] ip vpn-instance vpna
[SwitchB-vpn-instance-vpna] route-distinguisher 1:1
[SwitchB-vpn-instance-vpna] address-family ipv4
[SwitchB-vpn-ipv4-vpna] vpn-target 2:2
[SwitchB-vpn-ipv4-vpna] quit
[SwitchB-vpn-instance-vpna] address-family evpn
[SwitchB-vpn-evpn-vpna] vpn-target 1:1
[SwitchB-vpn-evpn-vpna] quit
[SwitchB-vpn-instance-vpna] quit
# 配置VSI虛接口VSI-interface1。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip binding vpn-instance vpna
[SwitchB-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchB-Vsi-interface1] mac-address 0001-0001-0001
[SwitchB-Vsi-interface1] local-proxy-arp enable
[SwitchB-Vsi-interface1] distributed-gateway local
[SwitchB-Vsi-interface1] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] gateway vsi-interface 1
[SwitchB-vsi-vpna] quit
# 配置VSI虛接口VSI-interface3。
[SwitchB] interface vsi-interface 3
[SwitchB-Vsi-interface3] ip binding vpn-instance vpna
[SwitchB-Vsi-interface3] l3-vni 1000
[SwitchB-Vsi-interface3] quit
# 配置接口Twenty-FiveGigE1/0/1作為AC接口。
[SwitchB] interface twenty-fivegige 1/0/1
[SwitchB-Twenty-FiveGigE1/0/1] port link-mode bridge
[SwitchB-Twenty-FiveGigE1/0/1] service-instance 1000
[SwitchB-Twenty-FiveGigE1/0/1-srv1000] encapsulation s-vid 2
[SwitchB-Twenty-FiveGigE1/0/1-srv1000] xconnect vsi vpna
[SwitchB-Twenty-FiveGigE1/0/1-srv1000] quit
[SwitchB-Twenty-FiveGigE1/0/1] quit
# 定義0號節點,指定所有服務鏈編號為1的報文的下一跳為10.1.1.11。
[SwitchB] policy-based-route aa permit node 0
[SwitchB-pbr-aa-0] if-match service-chain path-id 1
[SwitchB-pbr-aa-0] apply next-hop vpn-instance vpna 10.1.1.11
[SwitchB-pbr-aa-0] quit
# 在VSI虛接口3上應用轉發策略路由,處理此接口接收的報文。
[SwitchB] interface vsi-interface 3
[SwitchB-Vsi-interface3] ip policy-based-route aa
[SwitchB-Vsi-interface3] quit
(4) 配置Switch C
# 開啟L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] evpn encapsulation vxlan
[SwitchC-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchC-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 配置BGP發布EVPN路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] peer 4.4.4.4 as-number 200
[SwitchC-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 創建VPN實例vpna。
[SwitchC] ip vpn-instance vpna
[SwitchC-vpn-instance-vpna] route-distinguisher 1:1
[SwitchC-vpn-instance-vpna] address-family ipv4
[SwitchC-vpn-ipv4-vpna] vpn-target 2:2
[SwitchC-vpn-ipv4-vpna] quit
[SwitchC-vpn-instance-vpna] address-family evpn
[SwitchC-vpn-evpn-vpna] vpn-target 1:1
[SwitchC-vpn-evpn-vpna] quit
[SwitchC-vpn-instance-vpna] quit
# 創建VSI虛接口VSI-interface1,並為其配置IP地址,該IP地址作為VXLAN 10內虛擬機的網關地址。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ip binding vpn-instance vpna
[SwitchC-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchC-Vsi-interface1] mac-address 0001-0001-0001
[SwitchC-Vsi-interface1] local-proxy-arp enable
[SwitchC-Vsi-interface1] distributed-gateway local
[SwitchC-Vsi-interface1] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置VPN實例vpna對應的L3VNI為1000。
[SwitchC] interface vsi-interface 3
[SwitchC-Vsi-interface3] ip binding vpn-instance vpna
[SwitchC-Vsi-interface3] l3-vni 1000
[SwitchC-Vsi-interface3] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] gateway vsi-interface 1
[SwitchC-vsi-vpna] quit
# 在接入服務器的接口Twenty-FiveGigE1/0/1上綁定VSI。
[SwitchC] interface twenty-fivegige 1/0/1
[SwitchC-Twenty-FiveGigE1/0/1] port link-mode bridge
[SwitchC-Twenty-FiveGigE1/0/1] service-instance 2000
[SwitchC-Twenty-FiveGigE1/0/1-srv2000] encapsulation s-vid 2
[SwitchC-Twenty-FiveGigE1/0/1] xconnect vsi vpna
[SwitchC-Twenty-FiveGigE1/0/1] quit
(5) 配置Switch D
# 配置Switch D與其他交換機建立BGP連接。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp-default] group evpn
[SwitchD-bgp-default] peer 1.1.1.1 group evpn
[SwitchD-bgp-default] peer 2.2.2.2 group evpn
[SwitchD-bgp-default] peer 3.3.3.3 group evpn
[SwitchD-bgp-default] peer evpn as-number 200
[SwitchD-bgp-default] peer evpn connect-interface loopback 0
# 配置BGP發布EVPN路由,並關閉BGP EVPN路由的VPN-Target過濾功能。
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer evpn enable
[SwitchD-bgp-default-evpn] undo policy vpn-target
# 配置Switch D為路由反射器。
[SwitchD-bgp-default-evpn] peer evpn reflect-client
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
# 配置VLAN接口11接口數據。
[SwitchD] interface vlan-interface 11
[SwitchD-Vlan-interface11] ip address 11.1.1.4 255.255.255.0
[SwitchD-Vlan-interface11] ospf 1 area 0.0.0.0
[SwitchD-Vlan-interface11] quit
# 配置VLAN接口12接口數據。
[SwitchD] interface vlan-interface 12
[SwitchD-Vlan-interface12] ip address 12.1.1.4 255.255.255.0
[SwitchD-Vlan-interface12] ospf 1 area 0.0.0.0
[SwitchD-Vlan-interface12] quit
# 配置VLAN接口13接口數據。
[SwitchD] interface Vlan-interface 13
[SwitchD-Vlan-interface13] ip address 13.1.1.4 255.255.255.0
[SwitchD-Vlan-interface13] ospf 1 area 0.0.0.0
[SwitchD-Vlan-interface13] quit
這時通過抓包可以看到Server 1發出報文先經過以太網服務實例1中的服務器處理,再發送到Server2。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!