路由策略和策略路由配置與管理


路由策略和策略路由配置與管理

“路由策略”與“策略路由”之間的區別就在於它們的主體(或者說“作用對象”)不同,前者的主體是“路由”,是對符合條件的路由(主要)通過修改路由屬性來執行相應的策略動作(如允許通過、拒絕通過、接收、引入等),使通過這些路由的數據報文按照規定的策略進行轉發;而后者的主體是數據報文,是對符合條件的數據報文(如報文的源地址、報文長度等)按照策略規定的動作進行操作(如設置報文的出接口和下一跳、設置報文的缺省出接口和下一跳等),然后轉發。“路由策略”如RIP、OSPF、IS-IS、BGP中動態路由信息發送(發布)/接收控制、路由選路、路由引入以及BGP路由屬性配置等都用到了“路由策略”。

路由策略基礎

路由策略(Routing Policy)是通過使用不同的匹配條件和匹配模式來選擇路由,或改變路由屬性。路由策略主要應用在路由信息發布、接收、引入和路由屬性修改等幾個方面:

1、控制路由的發布

可通過路由策略對所要發布的路由信息進行過濾,只允許發布滿足條件的路由信息。

2、控制路由的接收

可通過路由策略對所要接收的路由信息進行過濾,只允許接收滿足條件的路由信息。這樣可以控制路由條目的數量,提高網絡的路由效率。

3、控制路由的引入

可通過路由策略只引入滿足條件的路由信息,並控制所引入的路由信息的某些屬性,使其滿足本路由協議的路由屬性要求。

4、設置路由的屬性

修改通過路由策略過濾的路由的屬性,滿足自身需要。

一、路由策略原理

要實現路由策略,首先要定義將要實施路由策略的路由信息的特征,即定義一組匹配規則,這就是路由策略中必須使用的過濾器。可以用路由信息中的不同屬性作為過濾器的匹配依據,如路由的目的地址、源地址等。然后將匹配規則應用於路由的發布、接收和引入等過程的策略中。

在一個路由策略中可以包括多組以if-match語句指定的匹配條件,這些匹配條件是以節點(Node)來進行標識的。如果在一個路由策略中包括多個節點,則路由會按照節點號從小到大依次進行匹配,直到與某節點的條件完全匹配(后面的節點就不在去匹配了),如果到了路由策略中所包括的最后一個節點仍沒有完全匹配,則該路由拒絕通過。不同節點間是邏輯“或”的關系,即如果通過了其中一個節點,就意味着通過該路由策略,不再對其他節點進行匹配。

每個節點可以由一組if-match和apply字句組成。

①if-match子句定義匹配規則,匹配對象是路由信息的一些屬性。同一節點中的不同if-match子句是邏輯“與”的關系,即只有滿足節點內所有if-match子句指定的匹配條件,才能通過該節點的匹配測試。

②apply子句指定動作,也就是對通過節點匹配的路由信息進行屬性設置。

If-match和apply子句可以根據應用進行設置,但都是可選的。如果只過濾路由,不設置路由的屬性,則僅需要配置if-match子句,不需要使用apply子句;如果某個permit節點沒有配置任何if-match子句,則該節點匹配所有的路由;通常在多個deny節點后配置一個不含if-match子句和apply子句的permit節點,用於允許其他的路由通過。

如上圖,一個路由策略中包含N個節點(Node)。當接收或者發送的路由要應用該路由策略時,會按節點序號從小到大依次檢查與各個節點是否匹配。匹配條件由if-match子句定義,涉及路由信息的屬性和路由策略的6種過濾器。匹配模式分permit和deny兩種。

①permit:表示該路由將被允許通過,並且執行該節點的apply子句對路由信息的一些屬性進行設置。

②表示該路由將被拒絕通過。

當路由與某節點的所有if-match子句都匹配成功后,進入匹配模式選擇,不再匹配其他節點。當路由與該節點的任意一個if-match子句匹配失敗后,進入下一節點。如果該路由與所有節點都匹配失敗,則該路由信息將被拒絕通過。

二、路由策略過濾器

路由策略的實現是通過各種過濾器進行路由過濾完成的。在路由策略中,if-match子句中匹配的6種過濾器包括訪問控制列表ACL(Access Control List)、地址前綴列表、AS路徑過濾器、團體屬性過濾器、擴展團體屬性過濾器和RD屬性過濾器。這6種過濾器具有各自的匹配條件及permit和deny匹配模式,因此這6種過濾器在以下特定情況下可單獨使用,實現路由過濾。

過濾器可看做是路由策略過濾路由的工具,但單獨配置的過濾器沒有任何過濾效果,只有在路由協議的相關命令中應用這些過濾器,才能達到預期的過濾效果。

1、ACL

ACL是將報文中的入接口、源或目的地址、協議類型、源或目的端口號作為匹配條件的過濾器,在各路由協議發布、接收路由時單獨使用。但在路由策略中的if-match子句只支持基本ACL,過濾的是路由的目的IP地址和子網掩碼。

2、地址前綴列表

地址前綴列表(IP Prefix List)將路由的目的地址和子網掩碼前綴作為匹配條件的過濾器(與ACL過濾器的作用是一樣的),可在各路由協議發布和接收路由時單獨使用。根據匹配的前綴不同,前綴過濾列表可以進行精確匹配,也可在一定掩碼長度范圍內匹配。當IP地址為0.0.0.0時表示通配地址,表示掩碼長度范圍內的所有路由都被Permit或deny。

每個地址前綴列表可以包含多個索引(index),每個索引對應一個節點。路由按索引號從小到大依次檢查各個節點是否匹配,任意一個節點匹配成功,將不再檢查其他節點。若所有節點都匹配失敗,路由信息將被過濾。

3、AS路徑過濾器

AS路徑過濾器(AS_PathFilter)是將BGP中的AS_Path屬性作為匹配條件的過濾器,專用於BGP路由過濾,在BGP發布、接收路由時單獨使用。AS_Path屬性記錄了BGP路由經過的所有AS編號。

4、團體屬性過濾器

團體屬性過濾器(CommunityFilter)是將BGP中的團體屬性作為匹配條件的過濾器,專用於BGP路由過濾,在BGP發布、接收路由時單獨使用。BGP的團體屬性用來標識一組具有共同性質的路由。

5、擴展團體屬性過濾器

擴展團體屬性過濾器(ExtcommunityFilter)是將BGP中的擴展團體屬性作為匹配條件的過濾器,專用於VPN網絡中的BGP路由過濾,可在VPN配置中利用VPNTarget區分路由時單獨使用。

目前,擴展團體屬性過濾器僅適用於對VPN中的VPN Target屬性的匹配。VPNTarget屬性在BGP/MPLS IP VPN網絡中控制VPN路由信息在各Site之間的發布和接收。

6、RD屬性過濾器

RD團體屬性過濾器(RouteDistinguisher Filter)是將VPN中的RD屬性作為匹配條件的過濾器,可在VPN配置中利用RD屬性區分路由時單獨使用。

VPN實例通過路由標識符RD實現地址空間獨立,區分使用相同地址空間的前綴。

三、路由策略配置任務

在路由策略配置中,主要包括三大配置任務:

①配置要使用的對應過濾器。路由策略過濾器包括ACL、地址前綴列表、AS路徑過濾器、團體屬性過濾器、擴展團體屬性過濾器和RD屬性過濾器,可選擇其中的一種或幾種。

②(可選)創建一個路由策略,並通過if-match子句調用第一項配置任務中所配置的對應過濾器,定義路由策略所需匹配的條件。如果不配置本步驟,則表示所有路由在對應路由策略節點匹配成功,直接按照節點的匹配模式進行處理。

③(可選)最后可通過apply子句定義路由策略的動作,用來為匹配成功的路由設置對應的路由屬性。如果不配置本步驟,則對應路由策略節點僅起過濾路由的作用,不會對通過的路由進行任何屬性設置。

3.1配置路由策略過濾器

3.1.1、配置地址前綴列表

當需要根據路由的目的地址控制路由的發布和接收時,可配置地址前綴列表。地址前綴列表可以單獨使用,也就是不在路由策略if-match語句中被調用,但這時地址前綴列表中要至少配置一個節點的匹配模式是permit,否則所有路由將都被用於IP地址的過濾。

1、地址前綴列表的配置

配置IPv4地址前綴列表的方法是在系統視圖下使用ip ip-prefixip-prefix-name [indexindex-number] {permit |deny}ipv4-address mask-length [match-network][greater-equalgreater-equal-value] [less-equalless-equal-value]命令。

①ip-prefix-name:指定地址前綴列表名稱,唯一標識一個IPv4地址前綴列表。

②index-number:可選參數,標識地址前綴列表中的一條匹配條件的索引號,取值范圍1~4294967295整數。缺省該序號值按照配置先后順序依次遞增,每次加10,第一個序號值為10,值越小越優先被匹配。同一個名稱的地址前綴列表最多可支持配置65535個索引號。

③Permit:二選一選項,指定由參數index-number標識的匹配條件的匹配模式為允許模式。在該模式下,如果過濾的IP地址在定義的范圍內,則通過過濾,進行相應的設置;否則,必須進行下一節點的測試。

④deny:二選一選項,指定由參數index-number標識的匹配條件的匹配模式為拒絕模式。在該模式下,如果過濾的IP地址在定義的范圍內,則該IP地址不能通過過濾,從而不能進入下一節點的測試;否則,將進行下一節點的測試。

⑤ipv4-addressmask-length:指定用來進行路由匹配的網絡IP地址和掩碼長度,mask-length的取值范圍為0~32.如果將本參數指定為0.0.0.0 0,則代表所有路由。

⑥match-network:可選項,指定匹配網絡地址,僅在ipv4-address參數值為0.0.0.0時才可以配置,用來匹配指定網絡地址的路由。例如:ip ip-prefix prefix1 permit 0.0.0.0 8可以匹配掩碼長度為8的所有路由;而ipip-prefix prefix1 permit 0.0.0.0 8 match-network可以匹配的IP地址在0.0.0.1~0.255.255.255范圍內的所有路由。

一般情況下,IP地址的網絡ID不能為0.但是華為產品中可以支持網絡ID為0,而主機ID不為0的IP地址。這種IP地址需要特殊的系統提供支持,實際上很少使用。

⑦greater-equalgreater-equal-value:可選參數,指定掩碼長度可以匹配范圍的下限(也即最小長度),取值限制為mask-length≦greater-equal-value≦less-equal-value≦32。如果沒有配置less-equal less-equal-value可選參數,則路由的掩碼長度范圍可在greater-equal-value和32之間。如果同時不配置greater-equalgreater-equal-value和less-equal less-equal-value可選參數,則僅匹配mask-length參數指定的掩碼長度路由。

⑧less-equalless-equal-value:可選參數,指定掩碼長度匹配范圍的上限,取值限制為mask-length≦greater-equal-value≦less-equal-value≦32。如果沒有配置greater-equal greater-equal-value可選參數,則掩碼長度范圍在mask-length和less-equal-value之間。如果同時不配置greater-equalgreater-equal-value和less-equal less-equal-value可選參數,則僅用mask-length作為掩碼長度的路由。

如果地址前綴列表中的所有條件都是deny模式,則任何路由都不能通過該過濾列表。這種情況下,建議在多條deny模式的條件后定義一條permit 0.0.0.0 0 less-equal 32條件,允許其他所有IPv4路由信息通過。

缺省情況下,系統中無IPv4地址前綴列表。

配置完后可通過display ipip-prefix [ip-prefix-name]查看IPv4地址前綴列表的詳細配置信息;也可通過reset ip ip-prefix [ip-prefix-name]用戶視圖命令清除IPv4地址前綴列表統計數據。

2、地址前綴列表的應用

地址前綴列表既可以作為過濾器被各種路由協議使用,也可以和路由策略配合使用

①本命令通過與下列命令配合使用,可以以地址前綴列表為過濾條件對全局發布的路由信息進行過濾。

●全局過濾發布的RIP路由:filter-policy {acl-number |acl-nameacl-name | ip-prefix ip-prefix-name}export [protocol [process-id] |interface-typeinterface-number]

●全局過濾發布的OSPF路由:filter-policy {acl-number |acl-nameacl-name | ip-prefix ip-prefix-name}export [protocol [process-id]]

●全局過濾發布的IS-IS路由:filter-policy {acl-number |acl-nameacl-name | ip-prefix ip-prefix-name|route-policyroute-policy-name }export [protocol [process-id]]

●全局過濾發布的BGP路由:filter-policy {acl-number |acl-nameacl-name | ip-prefix ip-prefix-name}export [protocol [process-id] ]

②本命令通過與下列命令配合使用,可以以地址前綴列表為過濾條件對全局接收的路由信息進行過濾。

●全局過濾接收的RIP路由:filter-policy {acl-number |acl-nameacl-name | ip-prefix ip-prefix-name [gatewayip-prefix-name]}import [interface-typeinterface-number]

●全局過濾接收的OSPF路由:filter-policy {acl-number |acl-nameacl-name |ip-prefix ip-prefix-name |route-policy route-policy-name [secondary]} import

●全局過濾接收的IS-IS路由:filter-policy {acl-number |acl-nameacl-name |ip-prefix ip-prefix-name|route-policy route-policy-name} import

●全局過濾接收的BGP路由:filter-policy {acl-number |acl-nameacl-name |ip-prefix ip-prefix-name} import

③本命令通過與peer {group-name |ipv4-address} ip-prefixip-prefix-name{import |export}命令配合使用,為特定的BGP對等體配置基於地址前綴列表的過濾器進行路由過濾。

④以地址前綴列表為過濾條件控制IS-IS的Level-1路由向Level-2區域進行路由滲透:import-route isis level-1 into level-2 [filter-policy {acl-number |acl-nameacl-name |ip-prefix ip-prefix-name|route-policyroute-policy-name} |tagtag]*。

⑤以地址前綴列表為過濾條件控制IS-IS的Level-2路由向Level-1區域進行路由滲透:import-route isis level-2 into level-1 [filter-policy {acl-number |acl-nameacl-name |ip-prefix ip-prefix-name|route-policyroute-policy-name} |tagtag]*。

⑥本命令通過與if-matchip-prefix ip-prefix-name命令在路由策略中配合使用,以地址前綴列表為路由匹配的條件,對接收或發送的路由進行測試。

3、地址前綴列表的應用情形

同一個地址前綴列表可包含多個匹配條件,一個條件指定一個地址前綴范圍。此時,多個條件之間是“或”的關系,即通過其中任何一個條件就可通過該地址前綴列表的過濾;沒有通過任何一個條件的過濾就意味着沒有通過該地址前綴的過濾,都將被Deny。

地址前綴范圍包括兩個部分,分別由mask-length和[greater-equal-value,less-equal-value]決定。如果同時指定了這兩部分,則要被過濾的IP地址必須匹配這兩部分規定的前綴范圍。Ipv4-address參數值為0.0.0.0時表示通配地址。此時不論掩碼指定為多少,都表示掩碼長度范圍內的所有路由全部被permit或deny。

現假設有如下5條路由:1.1.1.1/24、1.1.1.1/32、1.1.1.1/26、2.2.2.2/24和1.1.1.2/16,通過使用以下不同的地址前綴列表,進行過濾的結果不同。

(1)單條件匹配(即地址前綴列表中只有一個匹配條件)

單節點匹配時,根據匹配模式的不同又有以下兩種匹配情形:

①Permit模式:假設配置的命令為ipip-prefix aa index 10 permit 1.1.1.1 24,則匹配的結果是路由1.1.1.1/24被Permit,其他都被Deny。

這種情況屬於單節點的精確匹配,此時只有路由的目的地址,掩碼與地址列表中匹配條件完全相同的路由才會匹配成功,節點的匹配模式為Permit,所以路由1.1.1.1/24被Permit,屬於匹配成功並被Permit。其他4條路由由於未匹配成功被Deny。

②Deny模式:如果配置的命令為ipip-prefix aa index 10 deny 1.1.1.1 24,則匹配的結果是本示例所有5條路由全部被Deny。

這種情況依然屬於單節點的精確匹配,但節點的匹配模式為deny,所以路由1.1.1.1/24還是被Deny,屬於匹配成功但被Deny,其他4條路由則屬於未匹配成功被默認Deny。

(2)多條件匹配(即地址前綴列表中有多個節點的匹配條件)

根據所配置的匹配條件的不同,多條件匹配又有如下幾種情形。

①多節點:假設地址前綴列表中配置了以下兩個節點,則匹配的結果是路由1.1.1.1/24被Deny,路由1.1.1.1/32被Permit,其他3條路由都被Deny。

Ip ip-prefix aaindex 10 deny 1.1.1.1 24

Ip ip-prefix aaindex 20 permit 1.1.1.1 32

這種情況屬於多節點的精確匹配,即路由1.1.1.1/24在匹配節點10時,滿足匹配條件,但是匹配模式是Deny,所以屬於匹配成功但被Deny;而路由1.1.1.1/32在匹配節點10時,不滿足匹配條件,則繼續匹配節點20,此時匹配成功,且節點20的匹配模式是permit,所以屬於匹配成功並被Permit;其他3條由於都不符合節點10和20的條件,屬於未匹配成功被默認Deny。

②只指定子網掩碼長度和掩碼長度上限:假設地址前綴列表配置為ip ip-prefix aa index 10 permit 1.1.1.1 24 less-equal 32,則表示配置結果為greater-equal-value=24、less-equal-value=32,此時的配置結果為路由1.1.1.1/24、1.1.1.1/26、1.1.1.1/32均被Permit,其他2條路由被Deny。

在這種情形中,配置時要注意,各掩碼長度參數必須滿足以下條件:mask-length≦greater-equal-value≦less-equal-value,否則配置不成功。

③只指定子網掩碼長度和掩碼長度下限:假設地址前綴列表配置為ip ip-prefix aa index 10 permit 1.1.1.1 24 greater-equal 26,表示配置結果為greater-equal-value=26、less-equal-value=32,此時的匹配結果是路由1.1.1.1/26和1.1.1.1/32這兩條路由均被Permit,其他三條被Deny。

④同時指定子網掩碼長度、掩碼長度下限和掩碼長度上限:假設地址前綴列表配置為ip ip-prefix aa index 10 permit 1.1.1.1 24 greater-equal 26less-equal 32,則表示配置結果為greater-equal-value=26、less-equal-value=32,此時的匹配結果為路由1.1.1.1/26和1.1.1.1/32這兩條路由均被Permit,其他三條被Deny。

可見如果一個匹配條件中指定了greater-equal-value參數,而less-equal-value參數為最大值32,則與僅指定相同的greater-equal-value參數值(不指定less-equal-value參數)的匹配條件的匹配結果是一樣的。

(3)通配地址匹配

在地址前綴列表中,當匹配的路由目的IP地址為0.0.0.0時,代表為通配地址,它又會因為所配置的子網掩碼長度參數的不同而有不同的匹配結果。

①只指定子網掩碼長度和掩碼長度上限

假設地址前綴列表配置為ip ip-prefixaa index 10 permit 0.0.0.0 8 less-equal 32,則表示配置結果為greater-equal-value=8、less-equal-value=32,由於0.0.0.0為通配地址,所以所有掩碼長度在8到32之間的路由全部被Permit,即匹配所有掩碼長度在8到32之間的路由。最終結果為1.1.1./24、1.1.1.1/26、1.1.1.1/32、2.2.2.2/24和1.1.1.1/16這5條路由均被Permit。

②只指定子網掩碼長度和掩碼長度下限

假設地址前綴列表中配置了以下兩個節點,則表示配置結果為對於節點10,greater-equal-value=24,less-equal-value=32,由於0.0.0.0為通配地址,即所有掩碼長度在24到32之間的路由全部被Deny;對於節點20,greater-equal-value=0、less-equal-value=32,由於0.0.0.0為通配地址,所有其他路由全部被Permit。最終的匹配結果為只有路由1.1.1.2/16被Permit,其他4條均被Deny。

Ip ip-prefix aa index 10 deny 0.0.0.0 24 less-equal 32

Ip ip-prefix aaindex 20 permit 0.0.0.0 0 less-equal 32

③多節點匹配

假設地址前綴列表中配置了以下兩個節點,則表示配置結果為:對於節點10,符合條件的路由2.2.2.2/24被Deny,對於節點20,其他的4條路由都被Permit。即最終的匹配結果為除路由2.2.2.2/24外的其他路由被Permit。

Ip ip-prefix aaindex 10 deny 2.2.2.2 24

Ip ip-prefix aaindex 20 permit 0.0.0.0 0 less-equal 32

示例1:配置名為p1的地址前綴列表,只允許10.0.192.0/8網段內,掩碼長度在17~18之間的路由通過

system-view

[Huawei]ipip-prefix p1 permit 10.0.192.0 8 greater-equal 17 less-equal 18

示例2:配置名為p3的地址前綴列表,拒絕0.0.0.1~0.255.255.255范圍內的所有路由通過,允許其他路由通過

system-view

[Huawei]ip ip-prefix p3 index 10 deny 0.0.0.0 8 match-network

[Huawei]ip ip-prefix p3 index 20 permit 0.0.0.0 0 less-equal 32

示例3:配置名為abc的地址前綴列表,僅過濾掉10.1.0.0/16、10.2.0.0/16、10.3.0.0/16三個網段的路由,而其他網段的路由信息可以通過。

system-view

[Huawei]ip ip-prefix abc index 10 deny 10.1.0.0 16

[Huawei]ip ip-prefix abc index 20 deny 10.2.0.0 16

[Huawei]ip ip-prefix abc index 30 deny 10.3.0.0 16

[Huawei]ip ip-prefix abc index 40 permit 0.0.0.0 0 less-equal 32

3.1.2、配置AS路徑過濾器

AS路徑過濾器是利用BGP路由攜帶的AS-Path列表對路由進行過濾。在不希望接收某些AS的路由時,可以利用AS路徑過濾器對攜帶這些AS號的路由進行過濾。當網絡環境比較復雜時,如果利用ACL或地址前綴列表過濾BGP路由,則需要定義多個ACL或前綴列表,配置繁瑣。這時可使用AS路徑過濾器。

1、AS路徑過濾器配置

在BGP中配置AS路徑過濾器的方法是在系統視圖下配置ip as-path-filter {as-path-filter-number|as-path-filter-name} {deny | permit}regular-expression命令。

①as-path-filter-number:二選一參數,指定AS路徑過濾器號,取值范圍為1~256的整數。

②as-path-filter-name:二選一參數,指定AS路徑過濾器名稱,1~51個字符,區分大小寫,不支持空格,且不能都是數字。

③deny:二選一參數,指定AS路徑過濾器的匹配模式為拒絕模式。

④permit:二選一參數,指定AS路徑過濾器的匹配模式為允許模式。

⑤regular-expression:指定用於過濾AS路徑的正則表達式,為1~255個字符。如:^200.*100$,表示匹配所有以AS200開始、以AS100結束的AS路徑域。

通過display ipas-path-filter [as-path-filter-number | as-path-filter-name]命令查看已配置的AS路徑過濾器信息。

本命令配置的AS路徑過濾器可以在peer {group-name |ipv4-address}as-path-filter{as-path-filter-number| as-path-filter-name}{import |export}命令中直接被調用,應用於路由過濾,游客在路由策略中作為if-match as-path-filter命令的過濾條件。

在AS路徑過濾器中,AS路徑過濾器號(名稱)相同的本命令之間是“與”的關系,也就是必須同時匹配同一名稱的AS路徑過濾器中的所有條件才算最終匹配。而在同一個AS路徑過濾器編號下,可以定義多條規則(Permit或Deny)。

2、正則表達式

正則表達式描述了一種字符串匹配的模式。

一些常用的AS路徑正則表達式

①^$:表示匹配的字符串為空,即AS_PATH為空,表示只匹配本地路由。

②.*:表示匹配任意字符串,即AS_PATH為任意,表示匹配所有路由。

③^100:表示匹配的字符串開始為100,即AS_PATH最左邊AS前3位(最后一個AS)為100,后面可能還有AS,表示匹配由AS100發來的所有路由,包括從AS100始發和由AS100轉發的路由。

100_:表示匹配的字符串開始為100,后面為符號,即AS_PATH最左邊AS(最后一個AS)為100,后面一定還有其他AS,表示匹配由AS100轉發(路徑中至少有兩個AS)的路由。比較前一個表達式100可看出,“_”可以和用來限制僅匹配由某AS轉發的路由。

⑤_100$:表示匹配的字符串最后為100,即AS_PATH最右邊AS(起始AS)為100,表示匹配AS100始發的路由。

⑥_100_:表示匹配的字符串中間有100,即AS_PATH中間有AS100,表示匹配經過AS100,且在AS路徑中,AS100既不是第一個AS,也不是最后一個AS的路由。

示例1:創建序號為1的AS路徑過濾器,允許AS路徑中以10開始的路由通過。

system-view

[Huawei]ipas-path filter 1 permit ^10

示例2:創建序號為2的AS路徑過濾器,允許AS路徑中包含20的路由通過。

system-view

[Huawei]ipas-path filter2 permit [20]

示例3:創建序號為3的AS路徑過濾器,不允許AS路徑中包含30的路由通過。

system-view

[Huawei]ipas-path filter 3 deny [30]

[Huawei]ipas-path-filter 3 permit .*

3.1.3、配置團體屬性過濾器

團體屬性可以標識具有相同特征(如來自或經過同一個或多個AS,具有相同的MED屬性,具有相同有本地優先級屬性等)的路由,而不用考慮零散路由前綴和繁多的AS號。團體屬性過濾器與團體屬性配合使用,可以在不使用地址前綴列表和AS屬性過濾器時降低路由管理難度。

團體屬性過濾器有兩種類型:基本團體屬性過濾器和高級團體屬性過濾器。基本團體屬性過濾器是對已配置的團體路由成員根據其中的路由的團體屬性類型進行路由過濾,屬於粗放型過濾器;而高級團體屬性過濾器是通過正則表達式對符合團體屬性過濾條件的路由進行過濾,比基本團體屬性過濾器匹配團體屬性更靈活。

基本團體屬性過濾器的配置方法是在系統視圖下使用ip community-filter {basiccomm-filter-name |basic-comm-filter-num}{permit |deny} [community-number |aa:nn |internet |no-export-subconfed |no-advertise| no-export]&<1-20>命令進行的。

高級團體屬性過濾器的配置方法是在系統視圖下使用ip community-filter {advanced comm-filter-name | adv-comm-filter-num}{permit | deny} regular-expression命令進行的。

參數和選項說明:

1)basiccomm-filter-name:二選一參數,指定所配置的基本團體屬性過濾器名稱。

2)basic-comm-filter-num:二選一參數,指定基本團體屬性過濾器號,1~99。

3)advancedcomm-filter-name:二選一參數,指定高級團體屬性過濾器名稱。

4)adv-comm-filter-num:二選一參數,指定高級團體屬性過濾器號,100~199。

5)deny:二選一參數,指定團體屬性過濾器的匹配模式為拒絕模式。

6)permit:二選一參數,指定團體屬性過濾器的匹配模式為允許模式。

7)community-number:多選一參數,指定要過濾路由的整數形式團體號(需要事先創建對應的團體屬性),取值范圍為0~4294967295的整數。一條命令最多可以指定20個團體號(與后面配置的選項類型有關),包括冒號分隔形式配置的aa:nn團體號。

8)aa:nn:多選一參數,指定要過濾路由的冒號分隔形式團體號,aa和nn都是整數形式,取值范圍均為0~65535。一條命令最多可以指定20個團體號。在配置團體號時要注意以下幾個方面:

●如果不配置internet、no-export-subconfed、no-advertise和no-export選項,則community-number和aa:nn一共可以指定20個。

●如果配置internet、no-export-subconfed、no-advertise和no-export中的一個選項,則community-number和aa:nn一共可以指定19個。

●如果配置internet、no-export-subconfed、no-advertise和no-export中的兩個選項,則community-number和aa:nn一共可以指定18個。

●如果配置internet、no-export-subconfed、no-advertise和no-export中的三個選項,則community-number和aa:nn一共可以指定17個。

●如果配置internet、no-export-subconfed、no-advertise和no-export選項,則community-number和aa:nn一共可以指定16個。

9)internet:多選一選項,指定要過濾指定團體號中internet類型團體屬性的路由,這是預定義的團體屬性。缺省情況下,所有的路由都具有internet類型團體屬性,可以被通告給所有的BGP對等體。

10)no-advertise:多選一選項,指定要過濾指定團體號中no-advertise類型團體屬性的路由,具有此屬性的路由在收到后,不能被通告給任何其他的BGP對等體。

11)no-export:多選一選項,指定要過濾指定團體號中no-export類型團體屬性的路由,具有此屬性的路由在收到后,不能被發布到本地AS之外。如果使用了聯盟,則不能被發布到聯盟之外,但可以發布給聯盟中的其他子AS。

12)no-export-subconfed:多選一選項,指定要過濾指定團體號中no-export-subconfed類型團體屬性的路由,具有此屬性的路由在收到后,不能被發布到本地AS之外,也不能發布到聯盟中的其他子AS。

13)regular-expression:指定用於路由過濾的團體屬性正則表達式名稱。

配置后可通過display ipcommunity-filter [basic-comm-filter-num | adv-comm-filter-num | comm.-filter-name]查看已配置團體屬性過濾器信息。

示例1:配置團體號為1的基本團體屬性過濾器,允許internet類型團體屬性的BGP路由信息通過。

system-view

[Huawei]ipcommunity-filter 1 permit internet

示例2:配置團體號為100的高級團體屬性過濾器,允許團體屬性值(為整數形式,或者aa:nn形式)以“10”開頭的路由信息通過。

system-view

[Huawei]ipcommunity-filter 100 permit ^10

3.2 配置路由策略

路由策略用來根據路由信息的某些屬性過濾路由信息,並改變與路由策略規則匹配的路由信息的屬性。要配置路由策略,首先要創建一個路由策略,然后創建策略中的具體節點(一個路由策略可以包括多個節點)。一個節點下可以配置以下子句配置路由策略匹配條件和操作動作(一個路由策略中可以包含多個匹配條件和操作動作)。

①if-match子句:定義節點匹配規則,即路由信息通過當前路由策略所需滿足的條件,匹配對象是路由信息的某些屬性。

②apply子句:指定路由策略動作,也就是在滿足由if-match子句指定的過濾條件后所執行的一些屬性配置動作,對路由的某些屬性進行修改。

在配置路由策略之前,需要先配置過濾列表和對應的路由協議,並事先規划好路由策略的名稱、節點序號、匹配條件以及要修改的路由屬性值。

3.2.1、創建路由策略

一個路由策略可以包括多個節點,每一節點由一些if-match子句和apply子句組成。If-match子句定義該節點的匹配規則,apply子句定義通過該節點過濾后進行的動作。但路由策略節點之間的過濾關系是“或”的關系,即通過一個節點的過濾就意味着通過該路由策略的過濾。若沒有通過任何一個節點的過濾,則表示沒有通過該路由策略的過濾。所以在一個路由策略中,至少有一個節點的匹配模式是permit,否則所有路由將都被禁止通過。

路由策略的創建方法是在系統視圖下使用route-policyroute-policy-name {permit |deny}nodenode命令即可。

①route-policy-name:指定要創建的路由策略的名稱,用來唯一標識一個路由策略,為1~40個字符的字符集,區分大小寫。如該名稱的路由策略不存在,則創建一個新的路由策略並進入它的Route-Policy視圖;如果已經存在,則直接進入它的Route-Policy視圖。

②permit:二選一選項,指定所定義的路由策略節點的匹配模式為允許模式。當路由滿足該節點的所有if-match子句時才被允許通過,並執行該節點的apply子句;如果路由項不滿足該節點下任何一個if-match子句,將繼續測試該路由策略的下一個節點。

③deny:二選一選項,指定所定義的路由策略節點的匹配模式為拒絕模式。當路由滿足該節點的所有if-match子句時將被拒絕通過;如果路由不滿足該節點下任何一個if-match子句,將繼續測試該路由策略的下一個節點。

④node node:標識路由策略中的一個節點號,節點號小的進行匹配,取值范圍為0~65535的整數。當一個節點匹配成功后,該路由將不再匹配其他節點。當全部節點匹配失敗后,該路由將被過濾,不允許通過。

為便於區分不同的路由策略,可在路由策略視圖下通過description text命令配置描述信息。

示例:創建一個名為policy1的路由策略,其節點序列號為10,匹配模式為permit,並進入路由策略視圖。

system-view

[Huawei]route-policypolicy1 permit node 10

[Huawei-route-policy]

3.2.2、配置if-match子句

If-match子句是路由策略中用來匹配條件的子句,它可根據多種路由屬性來進行匹配,如路由的目的IP地址、路由標記、路由下一跳、路由源IP地址、路由出接口】路由開銷、路由類型、BGP路由的團體屬性、BGP路由的擴展團體屬性、BGP路由的AS路徑屬性等。

If-match子句命令是並列關系,沒有嚴格的先后次序。在同一路由策略節點下配置了多個if-match子句,則各if-match子句之間是邏輯“與”關系,即必須與該節點下的所有if-match子句匹配成功。對於同一個路由策略節點,if-match acl命令和if-match ip-prefix命令不能同時配置,且后配置的命令會覆蓋先配置的命令。

3.2.3、配置apply子句

Apply子句用來為路由策略指定動作,用來設置匹配成功的路由的屬性。在一個節點中,如果沒有配置apply子句,則該節點僅起過濾路由的作用。如果配置一個或多個apply子句,則通過節點匹配的路由將執行所有apply子句。

3.2.4、配置路由策略生效時間

為了保障網絡的穩定性,修改路由策略時可以控制路由策略的生效時間。

配置后路由策略后,可通過displayroute-policy [route-policy-name]查看路由策略的詳細配置信息。

3.2.5、AS_Path過濾器配置示例

如上拓撲,RouterA與RouterB、RouterB與RouterC之間建立EBGP連接。希望AS10的設備和AS30的設備無法相互通信。

1、基本配置思路

除需要進行基本的BGP功能配置(配置EBGP對等體以及引入直連路由)外,還需要在RouterB上配置一個AS_Path過濾器。可采用如下思路配置BGP的AS_Path過濾器,使AS20不向AS10發布AS30的路由,也不向AS30發布AS10的路由。

2、具體配置步驟

①配置各接口的IP。

system-view

[RouterA]interface gigabitethernet 2/0/0

[RouterA-GigabitEthernet2/0/0]ip address200.1.2.1 24

②配置各路由器的EBGP對等體連接,同時引入直連路由,以使它們彼此三層互通。A、B、C的路由器ID分別設為1.1.1.1、2.2.2.2、3.3.3.3。

配置后,通過display bgp routing-table查看各處的BGP路由表。

RouterB發布給RouterC的BGP路由表如上,RouterB除發布自己引入的直連路由和從RouterC學習到的直連路由外,還向RouterC發布了AS10引入的直連路由9.1.1.0/24。

RouterC通過RouterB學習到了9.1.1.0/24這條路由。

③在RouterB上配置AS_Path過濾器,並在RouterB的出方向上應用該過濾器。

首先創建編號為1的AS_Path過濾器,拒絕包含AS號30的路由通過(正則表達式“30”表示任何包含AS30的AS列表,“.*”表示與任何字符匹配)。

此時在通過display bgp routing-table查看RouterB發往AS30的發布路由表,可看到表中沒有RouterB發布的AS10引入的直連路由:

RouterC的BGP路由表里也沒有這些路由:

查看RouterB發往AS10的發布路由表,表中沒有RouterB發布的AS30引入的直連路由:

同樣RouterA的BGP路由表中也沒有這些路由:

3.2.6、接收和發布路由過濾的配置示例

如上拓撲,在運行OSPF協議的網絡中,RouterA從Internet網絡接收路由,並為OSPF網絡提供了Internet路由。現要求OSPF網絡只能訪問172.1.17.0/24、172.1.18.0/24、172.1.19.0/24三個網段的網絡,其中RouterC連接的網絡只能訪問172.1.18.0/24網段的網絡。

1、基本配置思路

可利用IP地址列表過濾器對發布和接收的路由進行過濾

①在RouterA上配置過濾策略,使其在路由發布時僅提供172.1.17.0/24、172.1.18.0/24、172.1.19.0/24路由給RouterB,使得OSPF網絡只能訪問172.1.17.0/24、172.1.18.0/24、172.1.19.0/24三個網段的網絡。

②在RouterC上配置過濾策略,使其在進行路由引入時僅接收172.1.18.0/24路由,使得RouterC連接的網絡只能訪問172.1.18.0/24。

2、具體配置步驟

①配置各路由器的接口IP。

system-view

[RouterB]interface gigabitethernet 1/0/0

[RouterB-GigabitEthernet1/0/0]ip address 192.168.1.224

[RouterB-GigabitEthernet1/0/0]quit

[RouterB]interface gigabitethernet 2/0/0

[RouterB-GigabitEthernet2/0/0]ip address192.168.3.1 24

[RouterB-GigabitEthernet2/0/0]quit

[RouterB]interface gigabitethernet 3/0/0

[RouterB-GigabitEthernet3/0/0]ip address192.168.2.1 24

[RouterB-GigabitEthernet3/0/0]quit

②配置OSPF網絡中各路由器的OSPF基本功能,使彼此三層互通。因為位於一個區域中,所以只能采用骨干區域0進行配置,進程號為缺省的1。

③在RouterA上配置5條靜態路由,並將這些靜態路由引入OSPF協議中。這里的5條靜態路由均為黑洞(出接口為NULL0)靜態路由。

在RouterB上通過display ip routing-table查看IP路由表,可見OSPF成功引入了5條靜態路由:

④配置路由發布過濾策略。首先在RouterA上配置IP地址前綴列表a2b,僅允許172.1.17.0/24、172.1.18.0/24、172.1.19.0/24三個網段的路由通過。

[RouterA]ip ip-prefix a2b index 10 permit172.1.17.0 24

[RouterA]ip ip-prefix a2b index 10 permit172.1.18.0 24

[RouterA]ip ip-prefix a2b index 10 permit172.1.19.0 24

然后在RouterA上創建一個IP地址前綴列表過濾器,調用前面創建的IP地址前綴列表a2b對發布的靜態路由進行過濾。

[RouterA]ospf

[RouterA-ospf-1]filter-policy ip-prefix a2bexport static

此時在RouterB上通過display ip routing-table查看IP路由表,可見僅接收3條路由:

⑤配置路由接收過濾策略。在RouterC上配置一個IP地址前綴列表in,僅允許接收172.1.18.0/24的路由。

[RouterC]ip ip-prefix in index 10 permit 172.1.18.024

在RouterC上配置接收策略,引用地址前綴列表in進行過濾:

[RouterC]ospf

[RouterC-ospf-1]filter-policy ip-prefix inimport

在RouterC上通過display ip routing-table查看IP路由表,僅接收了in中定義的1條路由:

而RouterD的本地IP路由表接收了RouterB發送的所有路由:

但通過display ospf routing查看RouterC的OSPF路由表時,可以看到OSPF路由表中仍然接收了IP地址列表a2b中所定義的全部3條路由。因為filter-policy import命令用於過濾從協議路由表加入本地IP路由表的路由,不過濾加入協議路由表中的路由。

3.2.7、在路由引入時應用路由策略的配置示例

如上拓撲,RouterB與RouterA之間通過OSPF協議交換路由信息,與RouterC之間通過IS-IS協議交換路由信息。要求在RouterB上將IS-IS網絡中路由引入OSPF網絡,172.17.1.0/24路由的選路優先級較低;172.17.2.0/24路由具有標記,以便以后運用路由策略。

1、基本配置思路

采用路由策略對引入的路由進行控制

①在RouterB上配置路由策略,將172.17.1.0/24的路由開銷設置為100(路由的缺省開銷值為0),並在OSPF引入IS-IS路由時應用路由策略,使得OSPF網絡中172.17.1.0/24路由的選路優先級較低;將172.17.2.0/24的路由的Tag屬性設置為20,使得路由172.17.2.0/24具有標識,方便下面應用路由策略。

②在RouterB上配置路由策略,將172.17.2.0/24的路由的tag屬性設置為20,並在OSPF引入IS-IS路由時應用路由策略,使得路由172.17.2.0/24具有標識,方便以后運用路由策略。

2、具體配置步驟

①配置各路由器的接口IP

system-view

[RouterB]interface gigabitethernet 1/0/0

[RouterB-GigabitEthernet1/0/0]ip address192.168.1.2 24

[RouterB-GigabitEthernet1/0/0]quit

[RouterB]interface gigabitethernet 2/0/0

[RouterB-GigabitEthernet2/0/0]ip address192.168.2.2 24

[RouterB-GigabitEthernet2/0/0]quit

②在RouterC和RouterB上配置IS-IS協議基本功能,假設區域ID為10,各自的SystemID分別為0000.0000.0001和0000.0000.0002。因為本例IS-IS網絡中只有一個區域,所以它們均只能作為骨干路由器,即Level-2路由器。

③在RouterA和RouterB上配置OSPF協議基本功能,並配置RouterB引入IS-IS路由。同樣由於只有一個區域,只能采用骨干區域0。

在RouterA上通過display ospf routing查看OSPF路由表,可看到由RouterB引入並通告的IS-IS路由:

④在RouterB上配置基本ACL(也可采用IP地址前綴列表)的過濾,僅允許172.17.2.0/24路由信息通過,用於下面在路由策略中為該路由配置路由標記。

[RouterB]aclnumber 2002

[RouterB-basic-2002]rulepermit source 172.17.2.0 0.0.0.255

[RouterB-basic-2002]quit

配置名為prefix-a的IP地址前綴列表(也可采用基本ACL過濾),僅允許172.17.1.0/24路由信息通過,用於路由策略中為該路由重新配置路由開銷值。

[RouterB]ipip-prefix prefix-a index 10 permit 172.17.1.0 24

創建一條路由策略,並分別調用前面配置的ACL和IP地址前綴列表,為172.17.2.0/24路由信息打上標記號20,為172.17.1.0/24路由信息設置路由開銷值為100,降低它的優先級。

加入的節點30的策略項沒有if-match和apply子句,節點30不是可有可無的。因為在路由策略中,是按照路由策略各節點從小到大依次進行匹配的,如果沒有30這個節點策略,則凡是不與節點10和節點20的策略匹配的所引入的IS-IS路由都將被拒絕通過。這顯然與示例要求不符,所以必須加上節點30,直接讓其他引入的IS-IS路由通過,但不做屬性修改。

⑤配置RouterB在路由引入時應用前面創建的路由策略

[RouterB]ospf

[RouterB-ospf-1]import-route isis 1route-policy isis2ospf

[RouterB-ospf-1]quit

此時在RouterA上查看OSPF路由表,從中看到目的地址為172.17.1.0/24的路由開銷值為100,目的地址為172.17.2.0/24的路由標記域(Tag)為20,其他路由屬性未發生變化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM