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

kaoa000發表於2017-02-24

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

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

路由策略基礎

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

1、控制路由的釋出

可通過路由策略對所要釋出的路由資訊進行過濾,只允許釋出滿足條件的路由資訊。

2、控制路由的接收

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

3、控制路由的引入

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

4、設定路由的屬性

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

一、路由策略原理

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

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

每個節點可以由一組if-matchapply字句組成。

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

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

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

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

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

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

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

二、路由策略過濾器

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

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

1ACL

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

2、地址字首列表

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

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

3AS路徑過濾器

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之間的釋出和接收。

6RD屬性過濾器

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

VPN例項通過路由識別符號RD實現地址空間獨立,區分使用相同地址空間的字首。

三、路由策略配置任務

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

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

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

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

配置路由策略過濾器

一、配置地址字首列表

當需要根據路由的目的地址控制路由的釋出和接收時,可配置地址字首列表。地址字首列表可以單獨使用,也就是不在路由策略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.但是華為產品中可以支援網路ID0,而主機ID不為0IP地址。這種IP地址需要特殊的系統提供支援,實際上很少使用。

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

less-equalless-equal-value:可選引數,指定掩碼長度匹配範圍的上限,取值限制為mask-lengthgreater-equal-valueless-equal-value32。如果沒有配置greater-equal greater-equal-value可選引數,則掩碼長度範圍在mask-lengthless-equal-value之間。如果同時不配置greater-equalgreater-equal-valueless-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-nameimport

●全域性過濾接收的BGP路由:filter-policy {acl-number |acl-nameacl-name |ip-prefix ip-prefix-nameimport

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

④以地址字首列表為過濾條件控制IS-ISLevel-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-ISLevel-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-valueless-equal-value]決定。如果同時指定了這兩部分,則要被過濾的IP地址必須匹配這兩部分規定的字首範圍。Ipv4-address引數值為0.0.0.0時表示通配地址。此時不論掩碼指定為多少,都表示掩碼長度範圍內的所有路由全部被permitdeny

現假設有如下5條路由:1.1.1.1/241.1.1.1/321.1.1.1/262.2.2.2/241.1.1.2/16,通過使用以下不同的地址字首列表,進行過濾的結果不同。

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

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

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

這種情況屬於單節點的精確匹配,此時只有路由的目的地址,掩碼與地址列表中匹配條件完全相同的路由才會匹配成功,節點的匹配模式為Permit,所以路由1.1.1.1/24Permit,屬於匹配成功並被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/24Deny,路由1.1.1.1/32Permit,其他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條由於都不符合節點1020的條件,屬於未匹配成功被預設Deny

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

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

③只指定子網掩碼長度和掩碼長度下限:假設地址字首列表配置為ip ip-prefix aa index 10 permit 1.1.1.1 24 greater-equal 26,表示配置結果為greater-equal-value=26less-equal-value=32,此時的匹配結果是路由1.1.1.1/261.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=26less-equal-value=32,此時的匹配結果為路由1.1.1.1/261.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=8less-equal-value=32,由於0.0.0.0為通配地址,所以所有掩碼長度在832之間的路由全部被Permit,即匹配所有掩碼長度在832之間的路由。最終結果為1.1.1./241.1.1.1/261.1.1.1/322.2.2.2/241.1.1.1/165條路由均被Permit

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

假設地址字首列表中配置了以下兩個節點,則表示配置結果為對於節點10greater-equal-value=24less-equal-value=32,由於0.0.0.0為通配地址,即所有掩碼長度在2432之間的路由全部被Deny;對於節點20greater-equal-value=0less-equal-value=32,由於0.0.0.0為通配地址,所有其他路由全部被Permit。最終的匹配結果為只有路由1.1.1.2/16Permit,其他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/24Deny,對於節點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之間的路由通過

<Huawei>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範圍內的所有路由通過,允許其他路由通過

<Huawei>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/1610.2.0.0/1610.3.0.0/16三個網段的路由,而其他網段的路由資訊可以通過。

<Huawei>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

二、配置AS路徑過濾器

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

1AS路徑過濾器配置

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路徑過濾器編號下,可以定義多條規則(PermitDeny)。

2、正規表示式

正規表示式描述了一種字串匹配的模式。

一些常用的AS路徑正規表示式

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

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

^100:表示匹配的字串開始為100,即AS_PATH最左邊AS3位(最後一個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:建立序號為1AS路徑過濾器,允許AS路徑中以10開始的路由通過。

<Huawei>system-view

[Huawei]ipas-path filter 1 permit ^10

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

<Huawei>system-view

[Huawei]ipas-path filter2 permit [20]

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

<Huawei>system-view

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

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

三、配置團體屬性過濾器

團體屬性可以標識具有相同特徵(如來自或經過同一個或多個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命令進行的。

引數和選項說明:

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

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

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

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

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

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

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

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

●如果不配置internetno-export-subconfedno-advertiseno-export選項,則community-numberaa:nn一共可以指定20個。

●如果配置internetno-export-subconfedno-advertiseno-export中的一個選項,則community-numberaa:nn一共可以指定19個。

●如果配置internetno-export-subconfedno-advertiseno-export中的兩個選項,則community-numberaa:nn一共可以指定18個。

●如果配置internetno-export-subconfedno-advertiseno-export中的三個選項,則community-numberaa:nn一共可以指定17個。

●如果配置internetno-export-subconfedno-advertiseno-export選項,則community-numberaa:nn一共可以指定16個。

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

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

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

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

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

配置後可通過display ipcommunity-filter [basic-comm-filter-num | adv-comm-filter-num | comm.-filter-name]檢視已配置團體屬性過濾器資訊。

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

<Huawei>system-view

[Huawei]ipcommunity-filter 1 permit internet

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

<Huawei>system-view

[Huawei]ipcommunity-filter 100 permit ^10

配置路由策略

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

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

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

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

一、建立路由策略

一個路由策略可以包括多個節點,每一節點由一些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,並進入路由策略檢視。

<Huawei>system-view

[Huawei]route-policypolicy1 permit node 10

[Huawei-route-policy]

二、配置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命令不能同時配置,且後配置的命令會覆蓋先配置的命令。




三、配置apply子句

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







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

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

配置後路由策略後,可通過displayroute-policy [route-policy-name]檢視路由策略的詳細配置資訊。

五、AS_Path過濾器配置示例

 

如上拓撲,RouterARouterBRouterBRouterC之間建立EBGP連線。希望AS10的裝置和AS30的裝置無法相互通訊。

    1、基本配置思路

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

2、具體配置步驟

①配置各介面的IP

<RouterA>system-view

[RouterA]interface gigabitethernet 2/0/0

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

②配置各路由器的EBGP對等體連線,同時引入直連路由,以使它們彼此三層互通。ABC的路由器ID分別設為1.1.1.12.2.2.23.3.3.3

配置後,通過display bgp routing-table檢視各處的BGP路由表。

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

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

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

首先建立編號為1AS_Path過濾器,拒絕包含AS30的路由通過(正規表示式“_30_”表示任何包含AS30AS列表,“.*”表示與任何字元匹配)。

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

 

RouterCBGP路由表裡也沒有這些路由:

檢視RouterB發往AS10的釋出路由表,表中沒有RouterB釋出的AS30引入的直連路由:

同樣RouterABGP路由表中也沒有這些路由:

六、接收和釋出路由過濾的配置示例

如上拓撲,在執行OSPF協議的網路中,RouterAInternet網路接收路由,併為OSPF網路提供了Internet路由。現要求OSPF網路只能訪問172.1.17.0/24172.1.18.0/24172.1.19.0/24三個網段的網路,其中RouterC連線的網路只能訪問172.1.18.0/24網段的網路。

    1、基本配置思路

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

①在RouterA上配置過濾策略,使其在路由釋出時僅提供172.1.17.0/24172.1.18.0/24172.1.19.0/24路由給RouterB,使得OSPF網路只能訪問172.1.17.0/24172.1.18.0/24172.1.19.0/24三個網段的網路。

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

2、具體配置步驟

①配置各路由器的介面IP

<RouterB>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/24172.1.18.0/24172.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檢視RouterCOSPF路由表時,可以看到OSPF路由表中仍然接收了IP地址列表a2b中所定義的全部3條路由。因為filter-policy import命令用於過濾從協議路由表加入本地IP路由表的路由,不過濾加入協議路由表中的路由。

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

如上拓撲,RouterBRouterA之間通過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

<RouterB>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

②在RouterCRouterB上配置IS-IS協議基本功能,假設區域ID10,各自的SystemID分別為0000.0000.00010000.0000.0002。因為本例IS-IS網路中只有一個區域,所以它們均只能作為骨幹路由器,即Level-2路由器。

③在RouterARouterB上配置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-aIP地址字首列表(也可採用基本ACL過濾),僅允許172.17.1.0/24路由資訊通過,用於路由策略中為該路由重新配置路由開銷值。

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

建立一條路由策略,並分別呼叫前面配置的ACLIP地址字首列表,為172.17.2.0/24路由資訊打上標記號20,為172.17.1.0/24路由資訊設定路由開銷值為100,降低它的優先順序。

加入的節點30的策略項沒有if-matchapply子句,節點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,其他路由屬性未發生變化。

 

相關文章