14-IPv6策略路由配置
本章節下載: 14-IPv6策略路由配置 (225.35 KB)
· 設備支持兩種運行模式:獨立運行模式和IRF模式,缺省情況為獨立運行模式。有關IRF模式的介紹,請參見“IRF配置指導”中的“IRF”。
· 配置IPv6策略路由之前,請先在係統視圖下配置acl ipv6 enable命令,關於acl ipv6 enable命令的詳細介紹,請參見“ACL和QoS命令參考”中的“ACL”。
IPv6策略路由功能可以用來對IPv6單播報文進行策略路由。
策略路由(policy-based-route)是一種依據用戶製定的策略進行路由選擇的機製。與單純依照IPv6報文的目的地址查找路由表進行轉發不同,策略路由可以提供基於到達報文的源地址、地址長度等信息而靈活地進行路由選擇。對於滿足一定條件(報文長度或ACL規則)的報文,將執行一定的操作(設置報文的優先級、設置報文的出接口和下一跳、設置報文的缺省出接口和下一跳等),以指導報文的轉發。
根據作用對象的不同,策略路由可分為本地策略路由和接口策略路由:
· 本地策略路由:對本地產生的報文(比如本地發出的ping報文)進行策略路由,它隻對本地產生的報文起作用,對轉發的報文不起作用。
· 接口策略路由:對到達該接口的報文進行策略路由,它隻對轉發的報文起作用,對本地產生的報文不起作用。
對於一般的轉發和安全等方麵的使用需求,大多數情況下隻需使用接口策略路由。
一般來講,策略路由的優先級要高於普通路由,即報文先按照策略路由進行轉發。如果報文無法匹配所有的策略路由條件,不能按照策略路由進行轉發,再按照普通路由進行轉發。
一個IPv6策略用來引入一條路由,對IPv6報文轉發進行路由選擇。
一個IPv6策略可以包含一個或多個節點。
· 每個節點由node-number來指定。node-number的值越小優先級越高,優先級高的策略節點優先被執行。
· 每個節點的具體內容由if-match和apply子句來指定。if-match子句定義該節點的匹配規則,apply子句定義該節點的動作。
· 每個節點對報文的處理方式由匹配模式決定。匹配模式分為permit和deny兩種。
一個節點的匹配模式與這個節點的if-match子句、apply子句的關係如表1-1所示。
表1-1 節點的匹配模式、if-match子句、apply子句三者之間的關係
節點匹配模式 是否滿足if-match子句 |
permit(允許模式) |
deny(拒絕模式) |
報文滿足此節點的if-match子句 |
執行此節點apply子句,不再匹配下一節點 |
不執行此節點apply子句,不再匹配下一節點,報文按正常轉發流程處理 |
報文不滿足此節點的if-match子句 |
不執行此節點apply子句,繼續匹配下一節點 |
不執行此節點apply子句,繼續匹配下一節點 |
l 如果某一節點不配置if-match子句,則所有報文都會通過該節點的過濾,根據permit/deny執行相應的操作,不再繼續匹配下一節點。
l 如果某一permit模式的節點不配置apply子句,當報文滿足此節點的if-match子句時,將不會執行任何動作,且不再繼續匹配下一節點,報文按正常轉發流程處理。
l 如果某一節點沒有配置任何if-match子句和apply子句,則所有報文都會通過該節點的過濾,但不會執行任何動作,且不再繼續匹配下一節點,報文按正常轉發流程處理。
同一個IPv6策略中的各節點之間是“或”的關係,即隻要報文通過一個節點的過濾,就意味著通過該IPv6策略的過濾;如果報文不能通過一個IPv6策略中任何一個節點的過濾,則認為沒有通過該IPv6策略的過濾,報文將按正常轉發流程處理。
IPv6策略路由提供了一種if-match子句,分別為if-match acl6。
在一個節點中,if-match子句最多隻能有一條。
IPv6策略路由提供了兩種apply子句,分別為:apply ipv6-precedence、apply ipv6-address next-hop。
同一個節點中的各apply子句的執行優先級情況如表1-2所示。
表1-2 同一個節點中的各apply子句的執行優先級情況
子句 |
含義 |
執行優先情況 |
apply ipv6-precedence |
配置報文的優先級 |
隻要配置了該子句,該子句就一定會執行。 |
apply ipv6-address next-hop |
配置策略路由的下一跳 |
隻要配置的下一跳有效,該子句就會執行 |
表1-3 配置IPv6策略
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建IPv6策略或一個IPv6策略節點,並進入IPv6策略路由視圖 |
ipv6 policy-based-route policy-name [ deny | permit ] node node-number |
必選 缺省情況下,沒有定義策略或策略節點 |
配置IPv6報文的ACL匹配條件 |
if-match acl6 acl6-number |
可選 |
配置報文的優先級 |
apply ipv6-precedence { type | value } |
可選 |
配置報文的下一跳 |
apply ipv6-address next-hop ipv6-address |
可選 如果用戶配置了兩個下一跳,隻有主用下一跳生效。當主用下一跳失效時,備用下一跳才生效,起到主備備份的作用。 |
· 在一個策略中最多可以指定兩個下一跳,每次隻能指定一個下一跳,當兩個下一跳ipv6地址都失效時,報文按正常路由表轉發。
· 如果策略路由引用的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”。
· 如果if-match子句中引用了ACL,請不要在引用的ACL規則中配置deny動作。
· 如果使用的ACL不存在,則不匹配任何報文。
· 如果某個策略節點匹配的報文不需要按策略路由轉發,請直接指定該策略節點的匹配模式為拒絕模式。
本地策略路由隻對本地產生的報文有效,最多隻能配置一條本地策略路由。
表1-4 配置IPv6本地策略路由
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
應用IPv6本地策略路由 |
ipv6 local policy-based-route policy-name |
必選 缺省情況下,沒有應用IPv6本地策略路由 |
· 如果配置時IPv6策略policy-name不存在,命令可以配置成功,但隻有當IPv6策略policy-name創建後,IPv6本地策略路由才真正生效。
· IPv6本地策略隻支持IP轉發,不支持MPLS轉發。
接口策略路由影響到達本接口的報文。一個接口上最多隻能配置一條接口策略路由。
表1-5 配置IPv6接口策略路由
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
應用IPv6接口策略路由 |
ipv6 policy-based-route policy-name |
必選 缺省情況下,沒有應用IPv6接口策略路由 |
· 如果配置時IPv6策略policy-name不存在,命令可以配置成功,但隻有當IPv6策略policy-name創建後,IPv6接口策略路由才真正生效。
· 如果在EC類單板或EF類單板(如LSR1GP48LEC1或LSR1GP48LEF1)上應用IPv6接口策略路由,需要先在係統視圖下配置acl ipv6 enable命令。關於acl ipv6 enable命令的詳細介紹,請參見 “ACL和QoS命令參考” 中的“ACL”。關於EC類和EF類單板的詳細介紹,請參見 “基礎配置指導” 中的“設備管理”。
在完成上述配置後,在任意視圖下執行display命令可以顯示IPv6策略路由配置後的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下,用戶可以執行reset命令重置IPv6策略路由的統計信息。
表1-6 IPv6策略路由顯示和維護
操作 |
命令 |
顯示係統和接口應用的IPv6策略路由的信息 |
display ipv6 policy-based-route [ | { begin | exclude | include } regular-expression ] |
顯示已經應用的IPv6策略路由的配置情況(獨立運行模式) |
display ipv6 policy-based-route setup { policy-name | interface interface-type interface-number [ slot slot-number ] | local [ slot slot-number ] } [ | { begin | exclude | include } regular-expression ] |
顯示已經應用的IPv6策略路由的配置情況(IRF模式) |
display ipv6 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 ] |
顯示已經應用的IPv6策略路由的統計信息(獨立運行模式) |
display ipv6 policy-based-route statistics { interface interface-type interface-number | local } [ slot slot-number ] [ | { begin | exclude | include } regular-expression ] |
顯示已經應用的IPv6策略路由的統計信息(IRF模式) |
display ipv6 policy-based-route statistics { interface interface-type interface-number | local } [ chassis chassis-number slot slot-number ] [ | { begin | exclude | include } regular-expression ] |
顯示已經配置的IPv6策略路由(獨立運行模式) |
display ipv6 config policy-based-route [ policy-name [ slot slot-number ] ] [ | { begin | exclude | include } regular-expression ] |
顯示已經配置的IPv6策略路由(IRF模式) |
display ipv6 config policy-based-route [ policy-name [ chassis chassis-number slot slot-number ] ] [ | { begin | exclude | include } regular-expression ] |
重置IPv6策略路由的統計信息 |
reset ipv6 policy-based-route statistics |
缺省情況下,以太網接口、VLAN接口及聚合接口處於DOWN狀態。如果要對這些接口進行配置,請先使用undo shutdown命令使接口狀態處於UP。
通過策略路由控製從Switch A發出的報文:
· 所有TCP報文均通過下一跳1::2發送;
· 其它IPv6報文仍然按照查找路由表的方式進行轉發。
其中,Switch A分別與Switch B和Switch C直連。Switch B與Switch C路由不可達。
圖1-1 基於報文協議類型的策略路由的配置舉例組網圖
(1) 配置Switch A
# 定義訪問控製列表,ACL 3001匹配TCP報文。
<SwitchA> system-view
[SwitchA] ipv6
[SwitchA] acl ipv6 number 3001
[SwitchA-acl6-adv-3001] rule permit tcp
[SwitchA-acl6-adv-3001] quit
# 定義5號節點,使TCP報文被發往下一跳1::2。
[SwitchA] ipv6 policy-based-route aaa permit node 5
[SwitchA-pbr6-aaa-5] if-match acl6 3001
[SwitchA-pbr6-aaa-5] apply ipv6-address next-hop 1::2
[SwitchA-pbr6-aaa-5] quit
# 在Switch A上應用本地策略路由。
[SwitchA] ipv6 local policy-based-route aaa
# 配置VLAN接口的IP地址。
[SwitchA] interface Vlan-interface 10
[SwitchA-Vlan-interface10] ipv6 address 1::1 64
[SwitchA-Vlan-interface10] quit
[SwitchA] interface Vlan-interface 20
[SwitchA-Vlan-interface20] ipv6 address 2::1 64
(2) 配置Switch B
# 配置VLAN接口的IPv6地址。
<SwitchB> system-view
[SwitchB] interface Vlan-interface 10
[SwitchB-Vlan-interface10] ipv6 address 1::2 64
[SwitchB-Vlan-interface10] quit
(3) 配置Switch C
# 配置VLAN接口的IPv6地址。
<SwitchC> system-view
[SwitchC] interface Vlan-interface 20
[SwitchC-Vlan-interface20] ipv6 address 2::2 64
[SwitchC-Vlan-interface20] quit
(4) 驗證配置結果
# 從Switch A上Telnet Switch B(1::2/64),結果成功。
<SwitchA> telnet ipv6 1::2
Trying 1::2 ...
Press CTRL+K to abort
Connected to 1::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(2::2/64),結果失敗。
<SwitchA> telnet ipv6 2::2
Trying 2::2 ...
Press CTRL+K to abort
Can't connect to the remote host!
# 從Switch A上ping Switch C(2::2/64),結果成功。
<SwitchA> ping ipv6 2::2
PING 2::2 : 56 data bytes, press CTRL_C to break
Reply from 2::2
bytes=56 Sequence=1 hop limit=64 time = 4 ms
Reply from 2::2
bytes=56 Sequence=2 hop limit=64 time = 2 ms
Reply from 2::2
bytes=56 Sequence=3 hop limit=64 time = 2 ms
Reply from 2::2
bytes=56 Sequence=4 hop limit=64 time = 2 ms
Reply from 2::2
bytes=56 Sequence=5 hop limit=64 time = 2 ms
--- 2::2 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 2/2/4 ms
由於Telnet使用的是TCP協議,ping使用的是ICMP協議,所以由以上結果可證明:Switch A發出的TCP報文均被轉發到下一跳1::2,Switch A發出的非TCP報文能正常轉發,策略路由設置成功。
通過策略路由控製從Switch A的VLAN接口10接收的報文:
· 所有從VLAN接口10接收的TCP報文均通過下一跳1::2/64發送;
· 對其它IPv6報文仍然,按照查找路由表的方式進行轉發。
其中,Switch A分別與Switch B和Switch C直連。Switch B與Switch C路由不可達。
本例中采用靜態路由保證各設備之間路由可達。
(1) 配置Switch A
# 配置動態路由協議RIPng。
<SwitchA> system-view
[SwitchA] ipv6
[SwitchA] ripng 1
[SwitchA-ripng-1] quit
[SwitchA] interface Vlan-interface 20
[SwitchA-Vlan-interface20] ipv6 address 1::1 64
[SwitchA-Vlan-interface20] ripng 1 enable
[SwitchA-Vlan-interface20] quit
[SwitchA] interface Vlan-interface 30
[SwitchA-Vlan-interface30] ipv6 address 2::1 64
[SwitchA-Vlan-interface30] ripng 1 enable
[SwitchA-Vlan-interface30] quit
# 定義訪問控製列表,ACL 3001匹配TCP報文。
<SwitchA> system-view
[SwitchA] ipv6
[SwitchA] acl ipv6 number 3001
[SwitchA-acl6-adv-3001] rule permit tcp
[SwitchA-acl6-adv-3001] quit
# 定義5號節點,使TCP報文被發往下一跳地址1::2。
[SwitchA] ipv6 policy-based-route aaa permit node 5
[SwitchA-pbr6-aaa-5] if-match acl6 3001
[SwitchA-pbr6-aaa-5] apply ipv6-address next-hop 1::2
[SwitchA-pbr6-aaa-5] quit
# 在VLAN接口10上應用接口策略路由,處理此接口接收的報文。
[SwitchA] interface Vlan-interface 10
[SwitchA-Vlan-interface10] ipv6 address 10::1 64
[SwitchA-Vlan-interface10] undo ipv6 nd ra halt
[SwitchA-Vlan-interface10] ripng 1 enable
[SwitchA-Vlan-interface10] ipv6 policy-based-route aaa
[SwitchA-Vlan-interface10] quit
(2) 配置Switch B
# 配置動態路由協議RIPng。
<SwitchB> system-view
[SwitchB] ipv6
[SwitchB] ripng 1
[SwitchB-ripng-1] quit
[SwitchB] interface Vlan-interface 20
[SwitchB-Vlan-interface20] ipv6 address 1::2 64
[SwitchB-Vlan-interface20] ripng 1 enable
[SwitchB-Vlan-interface20] quit
(3) 配置Switch C
# 配置動態路由協議RIPng。
<SwitchC> system-view
[SwitchC] ipv6
[SwitchC] ripng 1
[SwitchC-ripng-1] quit
[SwitchC] interface Vlan-interface 30
[SwitchC-Vlan-interface30] ipv6 address 2::2 64
[SwitchC-Vlan-interface30] ripng 1 enable
[SwitchC-Vlan-interface30] quit
(4) 驗證配置結果
從Host A上Telnet與Switch A直連的Switch B(telnet 1::2),結果成功。
從Host A上Telnet與Switch A直連的Switch C(telnet 2::2),結果失敗。
從Host A上ping與Switch A直連的Switch C(ping 2::2),結果成功。
由於Telnet使用的是TCP協議,ping使用的是ICMP協議,所以由以上結果可證明:從Switch A的VLAN接口10接收的TCP報文均轉發到下一跳1::2,Switch C上的2::2不轉發TCP報文,但可以轉發非TCP報文,策略路由設置成功。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!