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

2021-09-23

  前文我们了解了路由过滤和路由过滤工具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
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的开销;