通过不同路由协议获得的路由,并不能总是满足我们的使用需求,此时可以使用路由控制技术来调整。
一. 匹配
tips: acl 匹配路由仅算一个副业,如果要匹配路由,请使用 prefix-list.
1.1 ACL
acl 可以用来匹配路由,同时也可以匹配流量,使用编号加以区分(但区分有时不是那么绝对):
-
2000 - 2999
: 基本 acl,适用路由过滤场景,也可用于源
方向的流量过滤; -
3000 - 3999
: 高级 acl,基本 acl 的扩展,在流量过滤场景中可以匹配更多的特征; -
4000 - 4999
: 二层 acl,基于二层帧的特征匹配流量; -
5000 - 6999
: 用户自定义 acl,在之前的基础上,用户可选定的特征更加的多,也更自由。
在华为中的命令格式
acl [ number ] acl-number [ match-order config ]
acl name acl-name { basic | acl-number } [ match-order config ]
1.2 prefix-list
相交 acl 的功能冗杂,prefix-list 就很纯粹,它仅用于对路由的匹配,所以功能也能加的强大:
ip ip-prefix test index 10 permit 192.168.128.0 22 greater-equal 24 less-equal 26
# 192.168.128.0 22 这段是对路由前缀的匹配, 22 算是一种特殊的通配符(因为连续);
# greater-equal 24 less-equal 26 这段是对路由掩码长度的范围要求
二. 控制
2.1 filter-policy
filter-policy 在路由接收、发布、引入这几种场景中,对路由做过滤,因为作用的路由协议种类不同,作用细节分为几种:
- 在链路状态路由协议(如 ospf)中: import 影响ospf路由表的路由到全局路由表的写入,export 仅会影响本路由器的 LSA3/5/7 的生成;
- 在路径矢量路由协议(如 BGP )中: 直接影响 BGP UPdate 报文的收发。
2.2 route-map
route-map 对 filter-policy 的功能做了扩展,它不仅支持过滤同时也支持对路由一些属性的修改:
# 一个 route-map 由多个 Node 组成,Node 包含匹配模式 permit/deny, 多个条件语句和多个执行语句;
route-policy route-policy-name { permit | deny } node node
if-match acl/cost/egree-interface/ip-prefix
apply cost/cost-type/ip-address next-hop/preference/tag/....
三. 应用
比较综合的应用在双点双向路由重分发,双点双向路由重分发保证了健壮性,但是如果不加以控制则会带来环路/次优路径等问题:
- 解决次优路径: 在边界上,对同域传来的特定路由做控制,可以直接使用 filter-policy 过滤也可以使用 route-map 降低优先级;
- 解决三层环路: 在路由引入时做 tag,并过滤有自身域 tag 的路由;