10-路由策略配置
本章節下載: 10-路由策略配置 (290.46 KB)
目 錄
路由策略是為了改變網絡流量所經過的途徑而修改路由信息的技術,主要通過改變路由屬性(包括可達性)來實現。設備可以使用路由策略來控製路由的發布、控製路由的接收、管理引入的路由和設置路由的屬性。
路由策略的實現步驟如下:
(1) 定義規則:定義將要實施路由策略的路由信息的特征,即定義一組匹配規則。可以靈活使用過濾器來定義各種匹配規則。
(2) 應用規則:將匹配規則應用於路由的發布、接收和引入等過程的路由策略中。
過濾器可以看作是路由策略過濾路由的工具,單獨配置的過濾器沒有任何過濾效果,隻有在路由協議的相關命令中應用這些過濾器,才能夠達到預期的過濾效果。
ACL(Access Control List,訪問控製列表)訪問控製列表可以指定IP地址和子網範圍,用於匹配路由信息的目的網段地址或下一跳地址。
有關ACL的詳細介紹,請參見“ACL和QoS配置指導”中的“ACL”。
地址前綴列表的作用類似於ACL,但比它更為靈活,且更易於用戶理解。使用地址前綴列表過濾路由信息時,其匹配對象為路由信息的目的地址。
一個地址前綴列表由前綴列表名標識。每個前綴列表可以包含多個表項,每個表項可以獨立指定一個網絡前綴形式的匹配範圍,並用一個索引號來標識,索引號指明了在地址前綴列表中進行匹配檢查的順序。
每個表項之間是“或”的關係,在匹配的過程中,路由器按升序依次檢查由索引號標識的各個表項,隻要有某一表項滿足條件,就意味著通過該地址前綴列表的過濾(不再對下一個表項進行匹配)。
RD屬性列表是針對RD屬性信息的匹配條件,僅用於VPN路由的過濾。RD(Route Distinguisher,路由標識符)的作用是將其添加到一個IPv4地址前綴前,使之成為全局唯一的VPN-IPv4地址前綴。每個RD屬性列表可以包含多個表項,每一個表項會指定一個RD號的範圍,並用一個index-number來標識,index-number指明了在RD屬性列表中進行匹配檢查的順序。
有關RD的詳細介紹,請參見“MCE配置指導”中的“MCE”。
路由策略是一種比較複雜的過濾器,它不僅可以匹配路由信息的某些屬性,還可以在條件滿足時改變路由信息的屬性。路由策略可以使用前麵幾種過濾器定義自己的匹配規則。
一個路由策略可以由多個節點構成,每個節點是匹配檢查的一個單元。在匹配過程中,係統按節點序號升序依次檢查各個節點。不同節點間是“或”的關係,如果通過了其中一個節點,就意味著通過該路由策略,不再對其他節點進行匹配(配置了continue子句的情況除外)。
每個節點對路由信息的處理方式由匹配模式決定。匹配模式分為permit和deny兩種。
· permit:指定節點的匹配模式為允許模式。當路由信息通過該節點的過濾後,將執行該節點的apply子句,不進入下一個節點的匹配(配置了continue子句的情況除外);如果路由信息沒有通過該節點過濾,將進入下一個節點繼續匹配。
· deny:指定節點的匹配模式為拒絕模式(此模式下apply子句和continue子句不會被執行)。當路由信息通過該節點的過濾後,將被拒絕通過該節點,不進入下一個節點的匹配;如果路由信息沒有通過該節點的過濾,將進入下一個節點繼續匹配。
每個節點可以由一組if-match、apply和continue子句組成。
· if-match子句:定義匹配規則,匹配對象是路由信息的一些屬性。同一節點中不同類型的if-match子句是“與”的關係,相同類型的if-match子句是“或”的關係,隻有滿足節點內所有類型if-match子句指定的匹配條件,才能通過該節點的匹配。
· apply子句:指定動作,也就是在通過節點的匹配後,對路由信息的一些屬性進行設置。
· continue子句:用來配置下一個執行節點。當路由成功匹配當前路由策略節點(必須是permit節點)時,可以指定路由繼續匹配同一路由策略內的下一個節點,這樣可以組合路由策略各個節點的if-match子句和apply子句,增強路由策略的靈活性。配置了continue子句後,路由即使未通過下一個執行節點的匹配,也會通過該路由策略的過濾。如果需要拒絕該路由通過,則需要在下一個執行節點之後添加一個沒有子句的deny節點。
if-match、apply和continue子句可以根據應用進行設置,都是可選的。
· 如果隻過濾路由,不設置路由的屬性,則不需要使用apply子句。
· 如果某個permit節點未配置任何if-match子句,則該節點匹配所有的路由。
· 通常在多個deny節點後設置一個不含if-match子句和apply子句的permit節點,用於允許其它的路由通過。
路由策略配置任務如下:
(1) (可選)配置過濾器
¡ 配置RD屬性列表
(2) 配置路由策略
a. 創建路由策略
b. 配置if-match子句
c. 配置apply子句
d. 配置continue子句
一個IPv4地址前綴列表可以有若幹條表項,每一表項指定一個地址前綴範圍。表項之間的過濾關係是“或”的關係,即通過一條表項的過濾就意味著通過該IPv4地址前綴列表的過濾。若沒有通過任一表項的過濾,則不能通過該IPv4地址前綴列表的過濾。
如果將ip-address mask-length指定為0.0.0.0 0,則隻匹配缺省路由。如果需要匹配所有路由,則應配置為0.0.0.0 0 less-equal 32。
如果所有表項都是deny模式,則任何路由都不能通過該過濾列表。要允許其它所有IPv4路由通過,需要在多條deny模式的表項後定義一條permit 0.0.0.0 0 less-equal 32表項。
(1) 進入係統視圖。
system-view
(2) 配置IPv4地址前綴列表。
ip prefix-list prefix-list-name [ index index-number ] { deny | permit } ip-address mask-length [ greater-equal min-mask-length ] [ less-equal max-mask-length ]
一個IPv6地址前綴列表可包含多個表項,一個表項指定一個地址前綴範圍。表項之間的過濾關係是“或”,即通過一個表項就可通過該IPv6地址前綴列表的過濾。沒有通過任何一個表項的過濾就意味著沒有通過該IPv6地址前綴列表的過濾。
如果將ipv6-address prefix-length指定為:: 0,則隻匹配缺省路由。如果需要匹配所有路由,則應配置為:: 0 less-equal 128。
如果所有表項都是deny模式,則任何路由都不能通過該過濾列表。要允許其它所有IPv6路由通過,需要在多條deny模式的表項後定義一條permit :: 0 less-equal 128表項。
(1) 進入係統視圖。
system-view
(2) 配置IPv6地址前綴列表。
ipv6 prefix-list prefix-list-name [ index index-number ] { deny | permit } ipv6-address { inverse inverse-prefix-length | prefix-length [ greater-equal min-prefix-length ] [ less-equal max-prefix-length ] }
RD屬性列表用於過濾VPN路由信息。一個RD屬性列表可以定義多個表項。在匹配過程中,路由器按升序依次檢查由index-number標識的各個表項,各表項之間是“或”的關係,即隻要路由信息通過該列表中的一條表項,就認為通過該RD屬性列表。
(1) 進入係統視圖。
system-view
(2) 配置RD屬性列表。
ip rd-list rd-list-number [ index index-number ] { deny | permit } route-distinguisher&<1-10>
路由策略中至少應該有一個節點的匹配模式是permit。如果路由策略的所有節點都是deny模式,則沒有路由信息能通過該路由策略。
(1) 進入係統視圖。
system-view
(2) 創建路由策略,並進入該路由策略視圖。
route-policy route-policy-name { deny | permit } node node-number
在一個節點中,可以沒有if-match子句,也可以有多個if-match子句。當不指定if-match子句時,如果該節點的匹配模式為允許模式,則所有路由信息都會通過該節點的過濾;如果該節點的匹配模式為拒絕模式,則所有路由信息都會被拒絕。
如果配置了多條相同類型的if-match子句,設備在顯示路由策略時,會將這些if-match子句合並為一條if-match子句。如果合並後的if-match子句超過命令行最大長度,則這些相同類型的if-match子句會分成多條顯示,這些子句之間是“或”的關係,即滿足一個匹配條件,就認為匹配該if-match語句。
對於if-match子句指定的ACL、前綴列表等信息,限製如下:
· 如果一個節點中if-match子句隻指定了IPv6 ACL,沒有指定IPv4 ACL,所有的IPv4路由信息都會匹配這個節點。如果一個節點中if-match子句隻指定IPv4 ACL,沒有指定IPv6 ACL,所有的IPv6路由信息都會匹配這個節點。
· 如果if-match子句對應的ACL不存在,或存在但是未配置任何規則,則默認滿足該匹配條件。如果if-match子句對應的ACL存在並且有規則,但是沒有匹配的規則或匹配到的規則是deny模式,則默認不滿足該匹配條件。
· 如果if-match子句對應的前綴列表或RD屬性列表不存在,則默認滿足該匹配條件。如果if-match子句對應的前綴列表或RD屬性列表中沒有匹配的規則或者該列表是deny模式,則默認不滿足該匹配條件。
使用訪問控製列表作為過濾器時,需指定高級ACL來匹配路由信息。在創建ACL規則時,rule [ rule-id ] permit ip source sour-addr sour-wildcard destination dest-addr dest-wildcard中的source sour-addr sour-wildcard用來匹配路由的目的網絡地址,destination dest-addr dest-wildcard用來匹配路由的掩碼。需要注意的是,本命令中指定的路由掩碼的格式為點分十進製,例如,如果需要匹配3.3.3.0/24的路由,則指定的規則應為rule [ rule-id ] permit ip source 3.3.3.0 0.0.0.255 destination 255.255.255.0 0.0.0.255。
(1) 進入係統視圖。
system-view
(2) 進入路由策略視圖。
route-policy route-policy-name { deny | permit } node node-number
(3) 配置通過ACL或IP地址前綴列表匹配路由。
(IPv4網絡)
if-match ip { address | next-hop } { acl ipv4-acl-number | prefix-list prefix-list-name }
(IPv6網絡)
if-match ipv6 { address | next-hop } { acl ipv6-acl-number | prefix-list prefix-list-name }
缺省情況下,未配置通過ACL或IP地址前綴列表匹配路由。
路由策略使用非VPN的ACL進行路由過濾。
(4) 配置基於路由信息的匹配條件。
¡ 配置路由信息的路由開銷匹配條件。
if-match cost cost-value
¡ 配置路由信息的出接口匹配條件。
if-match interface { interface-type interface-number }&<1-16>
¡ 配置路由信息類型匹配條件。
if-match route-type { external-type1 | external-type1or2 | external-type2 | internal | nssa-external-type1 | nssa-external-type1or2 | nssa-external-type2 } *
¡ 配置IGP路由信息標記的匹配條件。
if-match tag tag-value
缺省情況下,未配置基於路由信息的匹配條件。
(5) 配置VPN路由RD屬性的匹配條件。
if-match rd-list rd-list-number
缺省情況下,未配置VPN路由RD屬性的匹配條件。
(1) 進入係統視圖。
system-view
(2) 進入路由策略視圖。
route-policy route-policy-name { deny | permit } node node-number
(3) 配置路由開銷。
¡ 配置路由信息的路由開銷。
apply cost [ + | - ] cost-value
缺省情況下,未配置路由信息的路由開銷。
¡ 配置路由信息的開銷類型。
apply cost-type { type-1 | type-2 }
缺省情況下,未配置路由信息的開銷類型。
(4) 配置路由信息的下一跳地址。
(IPv4網絡)
apply ip-address next-hop ip-address [ public | vpn-instance vpn-instance-name ]
(IPv6網絡)
apply ipv6 next-hop ipv6-address
缺省情況下,未配置路由信息的下一跳地址。
對於引入的路由,使用本命令設置下一跳地址無效。
(5) 配置路由優先級。
¡ 配置路由的IP優先級。
apply ip-precedence { value | clear }
缺省情況下,未配置路由的IP優先級。
¡ 配置路由協議的優先級。
apply preference preference
缺省情況下,未配置路由協議的優先級。
¡ 配置路由收斂優先級。
apply prefix-priority { critical | high | medium }
缺省情況下,路由收斂優先級為低(Low)。
(6) 配置IGP路由信息的標記。
apply tag tag-value
缺省情況下,未配置IGP路由信息的標記。
(7) 配置快速重路由備份。
(IPv4網絡)
apply fast-reroute { backup-interface interface-type interface-number [ backup-nexthop ip-address ] | backup-nexthop ip-address }
(IPv6網絡)
apply ipv6 fast-reroute { backup-interface interface-type interface-number [ backup-nexthop ipv6-address ] | backup-nexthop ipv6-address }
缺省情況下,未配置快速重路由備份。
當配置continue子句的多個節點配置相同的apply子句時:
· 如果apply子句沒有疊加屬性,隻是子句的值不相同時,則以最後一個節點的apply子句為準。
· 如果配置的是有疊加屬性的apply子句,則屬性會全部疊加到路由上,具體如下:
¡ 命令apply cost指定參數+或-。
(1) 進入係統視圖。
system-view
(2) 進入路由策略視圖。
route-policy route-policy-name { deny | permit } node node-number
(3) 配置下一個執行節點。
continue [ node-number ]
缺省情況下,未配置下一個執行節點。
下一個執行節點序列號必須大於當前節點序列號。
當路由策略配置內容較多(如節點、if-match子句、apply子句)時,為了防止尚未配置完成的路由策略提前生效導致路由被錯誤的發布,可配置本功能使得路由策略延遲生效。
路由策略的變化包括:
· 創建路由策略。
· 新增、修改或刪除已經存在的路由策略的節點、if-match子句、apply子句等。
· 新增、修改或刪除IPv4地址前綴列表、IPv6地址前綴列表。
· if-match子句中使用的ACL發生變化。
設置路由策略的生效延遲時間後,當路由策略發生變化時,將觸發係統啟動定時器,在定時器超時前,路由策略發生的所有變化均不會生效。
(1) 進入係統視圖。
system-view
(2) 在路由策略變化後控製路由策略的生效延遲時間。
route-policy-change delay-time { time-value | unlimited }
缺省情況下,變化後的路由策略立即生效,但路由協議會延遲5秒才會響應。
路由策略的生效延遲時間結束後,路由協議會再延遲5秒才響應。
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後路由策略的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下執行reset命令可以清除路由策略的統計信息。
操作 |
命令 |
顯示IPv4地址前綴列表的統計信息 |
display ip prefix-list [ name prefix-list-name ] |
顯示RD列表信息 |
display ip rd-list [ rd-list-number ] |
顯示IPv6地址前綴列表的統計信息 |
display ipv6 prefix-list [ name prefix-list-name ] |
顯示路由策略信息 |
display route-policy [ name route-policy-name ] |
清除IPv4地址前綴列表的統計信息 |
reset ip prefix-list [ prefix-list-name ] |
清除IPv6地址前綴列表的統計信息 |
reset ipv6 prefix-list [ prefix-list-name ] |
· Switch A與Switch B通信,都運行RIP協議。
· 使能Switch A上的RIP協議,配置三條靜態路由。
· 設置在引入靜態路由時應用路由策略,使三條靜態路由部分引入、部分被屏蔽掉——20.1.1.1/32和40.1.1.1/32網段的路由是可見的,30.1.1.1/32網段的路由則被屏蔽。
· 通過在Switch B上查看RIP路由表,驗證路由策略是否生效。
圖1-1 在RIP中引入靜態路由時應用路由策略配置舉例
(1) 配置Switch A
# 配置接口vlan-interface 100和vlan-interface 200的IP地址。
<SwitchA> system-view
[SwitchA] interface vlan-interface 100
[SwitchA-vlan-interface100] ip address 10.1.1.1 30
[SwitchA-vlan-interface100] quit
[SwitchA] interface vlan-interface 200
[SwitchA-vlan-interface200] ip address 11.1.1.1 30
[SwitchA-vlan-interface200] quit
# 在接口vlan-interface 100下使能RIP。
[SwitchA] interface vlan-interface 100
[SwitchA-vlan-interface100] rip 1 enable
[SwitchA-vlan-interface100] quit
# 配置三條靜態路由,其下一跳為11.1.1.2,保證靜態路由為active狀態。
[SwitchA] ip route-static 20.1.1.1 32 11.1.1.2
[SwitchA] ip route-static 30.1.1.1 32 11.1.1.2
[SwitchA] ip route-static 40.1.1.1 32 11.1.1.2
# 配置路由策略。
[SwitchA] ip prefix-list a index 10 permit 30.1.1.1 32
[SwitchA] route-policy static2rip deny node 0
[SwitchA-route-policy-static2rip-0] if-match ip address prefix-list a
[SwitchA-route-policy-static2rip-0] quit
[SwitchA] route-policy static2rip permit node 10
[SwitchA-route-policy-static2rip-10] quit
# 啟動RIP協議,同時應用路由策略static2rip對引入的靜態路由進行過濾。
[SwitchA] rip
[SwitchA-rip-1] import-route static route-policy static2rip
(2) 配置Switch B
# 配置接口vlan-interface 100的IP地址。
<SwitchB> system-view
[SwitchB] interface vlan-interface 100
[SwitchB-vlan-interface100] ip address 10.1.1.2 30
# 啟動RIP協議。
[SwitchB] rip
[SwitchB-rip-1] quit
# 在接口下使能RIP。
[SwitchB] interface vlan-interface 100
[SwitchB-vlan-interface100] rip 1 enable
[SwitchB-vlan-interface100] quit
# 查看Switch B的RIP路由表。
<SwitchB> display ip routing-table
Destinations : 14 Routes : 14
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
10.1.1.0/30 Direct 0 0 10.1.1.2 Vlan100
10.1.1.0/32 Direct 0 0 10.1.1.2 Vlan100
10.1.1.2/32 Direct 0 0 127.0.0.1 InLoop0
10.1.1.3/32 Direct 0 0 10.1.1.2 Vlan100
20.0.0.0/8 RIP 100 1 10.1.1.1 Vlan100
40.0.0.0/8 RIP 100 1 10.1.1.1 Vlan100
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0
224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0
255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
· 在Switch A和Switch B上使能RIPng。
· 在Switch A上配置三條靜態路由,並設置在引入靜態路由時應用路由策略,使三條靜態路由部分引入、部分被屏蔽掉——20::/32和40::/32網段的路由是可見的,30::/32網段的路由則被屏蔽。
· 通過在Switch B上查看RIPng路由表,驗證路由策略是否生效。
圖1-2 在IPv6路由引入中應用路由策略配置組網圖
(1) 配置Switch A
# 配置接口Vlan-interface100和Vlan-interface200的IPv6地址。
<SwitchA> system-view
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] ipv6 address 10::1 32
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 200
[SwitchA-Vlan-interface200] ipv6 address 11::1 32
[SwitchA-Vlan-interface200] quit
# 在接口下使能RIPng。
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] ripng 1 enable
[SwitchA-Vlan-interface100] quit
# 配置三條靜態路由,其下一跳為11::2,保證靜態路由為active狀態。
[SwitchA] ipv6 route-static 20:: 32 11::2
[SwitchA] ipv6 route-static 30:: 32 11::2
[SwitchA] ipv6 route-static 40:: 32 11::2
# 配置路由策略。
[SwitchA] ipv6 prefix-list a index 10 permit 30:: 32
[SwitchA] route-policy static2ripng deny node 0
[SwitchA-route-policy-static2ripng-0] if-match ipv6 address prefix-list a
[SwitchA-route-policy-static2ripng-0] quit
[SwitchA] route-policy static2ripng permit node 10
[SwitchA-route-policy-static2ripng-10] quit
# 啟動RIPng協議並引入靜態路由。
[SwitchA] ripng
[SwitchA-ripng-1] import-route static route-policy static2ripng
(2) 配置Switch B
# 配置接口Vlan-interface100的IPv6地址。
<SwitchB> system-view
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] ipv6 address 10::2 32
# 啟動RIPng協議。
[SwitchB] ripng
[SwitchB-ripng-1] quit
# 在接口下使能RIPng。
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] ripng 1 enable
[SwitchB-Vlan-interface100] quit
# 查看Switch B的RIPng路由表。
[SwitchB] display ripng 1 route
Route Flags: A - Aging, S - Suppressed, G - Garbage-collect, D - Direct
O - Optimal, F - Flush to RIB
----------------------------------------------------------------
Peer FE80::7D58:0:CA03:1 on Vlan-interface 100
Destination 20::/32,
via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 8 secs
Destination 40::/32,
via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 3 secs
Local route
Destination 10::/32,
via ::, cost 0, tag 0, DOF
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!