HCNP Routing&Switching之路由策略工具Route-Policy

  前文我們了解了路由過濾和路由過濾工具Filter-Policy使用相關話題,回顧請參考//www.cnblogs.com/qiuhom-1874/p/15316188.html;今天我們來聊一聊路由策略工具Route-Policy工具的相關話題;

  Route-Policy

  Route-Policy是路由策略工具,主要用來過濾路由和修改路由屬性的工具;它的可以調用條件匹配工具ACL或前綴列表IP-Prefix來作為條件,匹配符合條件的路由,然後再對路由進行修改;比如允許路由或者拒絕對應路由,除此之外它還可以修改路由屬性;如修改下一跳、開銷等等;

  Route-Policy語法規則

  提示:Route-Policy是由多個node構成,node的概念類似ACL里的rule,每個node會有不同的索引號,類似ACL裏面的rule 編號,這個編號的主要作用是用來定義匹配條件的先後順序;其次route-policy和IP-Prefix一樣都是用名字來標識不同路由策略;一條Route-policy除了有名字、節點號還有節點匹配模式,即允許和拒絕;if-match語句主要用來描述怎麼匹配對應的路由(即匹配條件),滿足條件(通過)的路由會執行下面的apply語句做修改路由屬性的操作;route-policy node之間是或關係;每個node下可以有若干個if-match和apply子句,if-match、apply子句之間是與的關係,即多個條件需同時滿足,過濾後的操作也是全部執行;

  Route-Policy匹配流程

  提示:route-policy的匹配流程和IP-Prefix的執行流程查不多,都是從上至下依次每個節點進行匹配,如果路由匹配上了,則不再往下匹配,直接跳轉到對應執行apply子句(模式是permit的情況),如果模式是deny,則表示對應路由不能通過(當然這個不能通過是條件中是動作是permit,如果條件中是deny動作,則對應路由會接着往下匹配);如果路由沒有被任何一個節點匹配,則對應路由會被默認規則匹配;在route-policy中默認規則是拒絕操作,即如果沒有被任何節點匹配,對應默認動作是不允許路由通過;

  Route-Policy條件匹配模式和匹配模式組合說明

  提示:如果對應匹配條件中規則是permit,此時匹配的路由是否允許通過取決route-policy的模式,permit就允許通過,deny就不允許通過;如果沒有被匹配上則進行下一個節點匹配;如果條件中是deny,則對應匹配或沒有匹配都會進行下一個節點匹配,即條件規則是deny,不管route-policy的模式是permit還是deny,對應路由都會進行下一個節點匹配;也就是說條件是deny的規則,最後路由的去留取決默認規則;

  Route-Policy匹配規則

  提示:route-policy匹配規則可以匹配路由的ip地址範圍,用acl來過濾路由;也可以使用前綴列表來過濾對應路由條目;除此之外還可以通過匹配路由下一跳,出接口、路由類型、標籤和開銷等作為條件;

  Route-Policy執行動作

  提示:對應匹配允許的路由信息,route-policy可以做修改路由的下一跳,優先級,標籤,開銷以及開銷類型等;

  實驗:如下拓撲,配置ospf

  R1的配置

sys
sys R1
int g0/0/0
ip add 10.0.0.1 24
int g0/0/1
ip add 11.0.0.1 24

ospf 1 router-id 1.1.1.1
area 0
net 10.0.0.0 0.0.0.255
net 11.0.0.0 0.0.0.255

View Code

  R2的配置

sys
sys R2
int g0/0/0
ip add 10.0.0.2 24
int g0/0/1
ip add 11.0.0.2 24
int lo 1
ip add 1.1.1.1 32
int lo 2
ip add 2.2.2.2 32

ospf 1 router-id 2.2.2.2 
area 0
net 10.0.0.0 0.0.0.255
net 11.0.0.0 0.0.0.255
net 1.1.1.1 0.0.0.0
net 2.2.2.2 0.0.0.0

View Code

  查看R1的路由表,看看通過ospf是否學習到R2的lo接口路由?

  提示:可以看到R1通過ospf學習到1.1.1.1和2.2.2.2的路由,對應路由都有兩個下一跳,默認開銷、優先級都一樣,此時R1和R2的流量都會負載分擔在兩條鏈路上;

  在R1上新建前綴列表匹配1.1.1.1的路由

  在R1上新建ACL匹配下一跳為11.0.0.2的地址

  提示:匹配下一跳地址,可以使用acl,也可以使用前綴列表;

  在R1上新建路由策略,拒絕下一跳為11.0.0.2,路由地址為1.1.1.1的路由

  提示:上述路由策略主要用前綴類別來作為條件匹配路由,用acl來作為條件匹配對應路由的下一跳地址;表示以上兩個條件工具匹配的路由,對應路由策略為拒絕,即不讓對應路由通過;最後一條是空語句,沒有任何條件,表示匹配所有條件,即最後一條空語句就表示允許沒有被節點1匹配的路由;相當於修改了route-policy的默認規則;

  在R1的ospf進程中使用filter-policy路由過濾工具調用route-policy作為條件過濾路由

  提示:route-policy只有被調用工具調用以後,對應規則才會生效;

  驗證:在R1上查看路由表,看看對應路由是否被過濾掉?

  提示:可以看到R1此時的路由表中就只有一條1.1.1.1的路由,其下一條為10.0.0.2;之前下一跳為11.0.0.2的路由就被路由策略給過濾掉了;

  在R1上新建迴環接口lo,其地址為10.10.10.10 32

  新建ACL匹配10.10.10.10的路由

  新建路由策略,匹配10.10.10.10的路由,並修改其開銷為100,開銷類型為1類

  在R1上將直連路由導入ospf中,並調用路由策略

  驗證:在R2上查看路由表,看看對應路由的開銷是否被修改?對應類型是否被修改?

  提示:可以看到對應R2學習到的路由其開銷為101,因為R1導入的開銷為100,即R1發出的開銷就為100,然後加上R2接收時默認是1,所以開銷為101;其實如果我們這裡不更改類型為1,則默認是類型2,類型2它是不會計算內部開銷的,即不會加上R2的開銷;