前文我們瞭解了路由過濾和路由過濾工具Filter-Policy使用相關話題,回顧請參考https://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

  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

  檢視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的開銷;