Route-policy 實驗node
1、 拓撲ide
拓撲中的路由器,左邊運行着RIP,右邊運行着OSPF。在R2上作重分佈,將RIP路由引入OSPF,並進行控制spa
2、 在R2上作重分佈,而且作route-policyrouter
R2:blog
ospf 110 router-id 2.2.2.2
import-route rip 1 route-policy liuqing ip
route-policy爲permit,ACL有permit也有denyci
acl number 2001 路由
rule 10 permit source 1.1.0.0 0.0.0.255get
rule 20 permit source 1.1.1.0 0.0.0.255it
rule 30 deny source 1.1.2.0 0.0.0.255
route-policy liuqing permit node 10
if-match acl 2001
結果: R3上只有1.1.0.0和1.1.1.0兩條路由,被拒絕的1.1.2.0這條路由沒有;
分析: 1.1.0.0和1.1.1.0這兩條路由,在route-policy的節點10是permit,在ACL上也是permit,因此容許經過;1.1.2.0這條路由,在route-policy的節點10是permit,在ACL上是deny,因此在這個節點上被拒絕經過,可是會進入下一個節點再進行匹配;其餘的路由沒有找到合適的匹配項,進入下一個節點再匹配,若是最終沒被匹配上,被拒絕經過
2. Route-policy爲permit,ACL有permit也有deny
route-policy liuqing permit node 10
if-match acl 2001
route-policy liuqing permit node 20
if-match acl 2002
acl number 2001
rule 10 permit source 1.1.0.0 0.0.0.255
rule 20 permit source 1.1.1.0 0.0.0.255
rule 30 deny source 1.1.2.0 0.0.0.255
acl number 2002
rule 10 permit source 1.1.2.0 0.0.0.255
結果: 1.1.0.0 1.1.1.0 1.1.2.0這三條路由都被容許經過
分析: 對於節點10,上面已經分析過了,1.1.0.0和1.1.1.0被容許經過,1.1.2.0這條路由在節點10被拒絕經過,但會繼續匹配下一個節點,1.1.2.0這條路由在route-policy的節點20被容許經過
3. Route-policy爲deny,ACL爲有permit也有deny
acl number 2001
rule 10 permit source 1.1.0.0 0.0.0.255
rule 20 permit source 1.1.1.0 0.0.0.255
rule 30 deny source 1.1.2.0 0.0.0.255
route-policy liuqing deny node 10
if-match acl 2001
#
route-policy liuqing permit node 20
結果: 只有1.1.0.0和1.1.1.0被拒絕經過,其餘的路由都被容許
分析: route-policy的節點是deny,而ACL是permit的,對於這種路由被拒絕,而且匹配結束; 對於route-policy的節點是deny,ACL也是deny的,對於這種路由在本節點被拒絕,會到下一個節點進行匹配,因爲節點20是空的,因此1.1.2.0會被容許經過;其餘沒有被ACL 2001匹配的路由會被空的節點20匹配,得以經過。
4. Route-policy爲deny,ACL爲DENY
route-policy liuqing deny node 10
if-match acl 2001
acl number 2001
rule 10 deny source 1.1.0.0 0.0.0.255
rule 20 deny source 1.1.1.0 0.0.0.255
rule 30 deny source 1.1.2.0 0.0.0.255
結果:全部被重分佈的路由都不能經過
分析:因爲route-policy爲deny,ACL爲deny,因此ACL中的這三條路由在route-policy的這個節點都被拒絕,並進入route-policy的下一個節點進行匹配,因爲在這個案例中沒有下一個節點,因此路由被拒絕。
5. Route-policy爲deny,ACL爲DENY和permit
acl number 2001
rule 10 deny source 1.1.0.0 0.0.0.255
rule 20 deny source 1.1.1.0 0.0.0.255
rule 30 deny source 1.1.2.0 0.0.0.255
acl number 2002
rule 10 permit source 1.1.2.0 0.0.0.255
route-policy liuqing deny node 10
if-match acl 2001
#
route-policy liuqing permit node 20
if-match acl 2002
結果: 只有1.1.2.0這條路由被經過
分析:對於route-policy的節點10,因爲route-policy爲deny,ACL也是deny,因此ACL中這三條路由在本節點被拒絕,而且繼續進入下一個節點進行匹配;在節點20,route-policy的規則是permit,ACL的規則也是permit,因此ACL 2002中的這條路由1.1.2.0被容許經過;其餘的路由沒有被ACL匹配到,默認被拒絕了。
6. 對於一個route-policy的一個節點有多個if-match時
route-policy liuqing permit node 10
if-match cost 1
if-match acl 2002
acl number 2002
rule 10 permit source 1.1.2.0 0.0.0.255
結果:1.1.2.0這條路由被容許
分析:route-policy的節點爲permit,acl的規則也是permit,被ACL匹配的這條路由會被經過;但在這個案例中,route-policy有兩個條件,一個是匹配cost爲1,一個是匹配ACL2002,這須要兩個條件同時知足才能被route-policy放通。
華爲設備對於route-policy和ACL/ip-prefix的解釋
Rule |
Mode |
匹配結果 |
permit |
permit |
l 匹配該節點if-match子句的路由在本節點容許經過Route-Policy,匹配結束。 l 不匹配if-match子句的路由進行Route-Policy下一個節點的匹配。 |
permit |
deny |
l 匹配該節點if-match子句的路由在本節點不容許經過Route-Policy,匹配結束。 l 不匹配if-match子句的路由進行Route-Policy下一個節點的匹配。 |
deny |
permit |
l 匹配該節點if-match子句的路由在本節點不容許經過Route-Policy,繼續進行Route-Policy下一個節點的匹配。 l 不匹配if-match子句的路由進行Route-Policy下一個節點的匹配 |
deny |
deny |
l 匹配該節點if-match子句的路由在本節點不容許經過Route-Policy,繼續進行Route-Policy下一個節點的匹配。 l 不匹配if-match子句的路由進行Route-Policy下一個節點的匹配 |
注1:Rule表示if-match子句中包含的匹配模式是permit仍是deny。 注2:Mode表示Route-Policy中node節點對應的匹配模式permit仍是deny。 |
總結:
1. 在使用route-policy過濾路由時,若是容許路由經過,則在route-policy中使用permit,ACL中也使用permit;
2. 在使用route-policy過濾路由時,若是要拒絕路由經過,則在route-policy中使用deny,ACL中使用permit;
3. 無論route-policy的節點是permit仍是deny,只要ACL是DENY的,在route-policy的這個節點被ACL deny掉的這些路由是被拒絕的,可是會進入到route-policy的下一個節點去匹配。
4. 只要ACL是permit的,被ACL的permit規則匹配的路由,匹配結束,不會再進入到route-policy的下一個節點再進行匹配了。