路由策略与路由控制
路由控制概述
路由控制可以通过路由策略(Route-Policy)实现,路由策略应用灵活广泛
- 控制路由的发布:通过路由策略对发布的路由进行过滤,只发布满足条件的路由
- 控制路由的接收:通过路由策略对接收的路由进行过滤,只接收满足条件的路由
- 控制路由的引入:通过路由策略控制从其他路由协议引入的路由条目,只有满足条件的路由才能被引入
路由控制工具
匹配工具1:访问控制列表
访问控制列表(ACL)是一个匹配工具,能够对报文及路由进行匹配和区分
ACL由若干条permit或deny语句组成。每条语句就是该ACL的一条规则,每条语句中的permit或deny就是这条规则相对应的处理动作
ACL的组成
- ACL编号:在网络设备上配置ACL时,每个ACL都需要分配一个编号,称为ACL编号
- 规则:一个ACL通常由若干条"permit/deny"语句组成,每条语句就是该ACL的一条规则
- 规则编号:每条规则都有一个相应的编号,称为规则编号,用来标识ACL规则。所有规则军按照规则编号从小到大进行排序
- 动作:每条规则中的permit或deny,就是与这条规则相对应的处理动作。permit指允许,deny指拒绝,但是ACL一般时结合其他技术使用,不同的场景,处理动作的含义也有所不同
- 匹配项:ACL定义了及其丰富的匹配项,支持的匹配项有二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型),以及四层报文信息(如TCP/UDP端口号)等
通配符
通配符是一个32比特长度的数值,用于指示IP地址中哪些比特位需要严格匹配,那些比特位无需匹配
ACL的写法
Acl 编号
Rule 规则编号 动作(permit/deny) source 网段 通配符
网段号:相同位数保持不变,不同位数写为0或1都可以,默认写为0
通配符:相同位数写为0,不同位数写为1
举例:
10.0.1.0/24
10.0.2.0/24
10.0.3.0/24
10.0.00000001.0
10.0.00000010.0
10.0.00000011.0
网段号:10.0.0.0
通配符:0.0.3.0
ACL的分类
- 基本ACL(2000-2999):仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则
- 高级ACL(3000-3999):可使用IPv4报文的源IP地址、目的IP地址、IP协议类型、ICMP类型、TCP源/目端口号、UDP源/目端口号、生效时间段来定义规则
- 二层ACL(4000-4999):使用报文的以太网帧头信息来定义规则,如根据源MAC地址、二层协议类型等
- 用户自定义ACL(5000-5999):使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则
- 用户ACL(6000-6999):既可使用IPv4报文的源IP地址或源UCL组,也可使用目的IP地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则
ACL的匹配机制
ACL的匹配机制概括来说就是:
- 配置ACL的设备接收报文后,会将该报文与ACL中的规则逐条进行匹配,如果不能匹配上,就会继续尝试去匹配下一条规则
- 一旦匹配上,则设备会对该报文执行这条规则中定义的处理动作,并且步子继续尝试与后续规则匹配
ACL的匹配流程
首先系统会查找设备上是否配置了ACL
- 如果ACL不存在,则返回ACL匹配结果为:不匹配
- 如果ACL存在,则查找设备是否配置了ACL规则
- 如果规则不存在,则返回ACL匹配结果为:不匹配
- 如果规则存在,则系统会从ACL中编号最小的规则开始查找
- 如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)
- 如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)
- 如果未匹配上规则,则继续查找下一条规则,以此循环。如果一直查找到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配
ACL中的permit和deny的含义
ACL一般是结合其他技术使用,不同的场景,处理的动作不同
- ACL如果与流量过滤技术结合使用
- permit:允许通行
- deny:拒绝通行
- 当ACL技术与路由过滤技术结合使用
- permit:匹配该条路由条目
- deny:不匹配该条路由条目
ACL常用匹配举例
注:最后一条规则默认拒绝所有
匹配工具2:IP前缀列表
IP前缀列表(IP-Prefex List):是将路由条目的网络地址、掩码长度作为匹配条件的过滤器,可在各路由协议发布和接收路由时使用
IP-Prefix的匹配机制
IP-Prefix的匹配举例
Case1说明:这种情况属于单节点的精确匹配,只有目的地址、掩码完全相同的路由才会匹配成功,而且节点的匹配模式为permit,所以路由10.1.1.0/24被permit,属于匹配成功并被permit,其他路由由于未匹配成功被Deny
Case2说明:这种情况属于单节点的精确匹配,但节点的匹配模式为deny,所以路由10.1.1.0/24还是被deny,属于匹配成功但被deny,其他路由则属于未匹配成功被默认deny
Case1说明:这种情况属于多节点的精确匹配
- 路由10.1.1.0/24在匹配index 10时,满足匹配条件,但匹配模式是deny,属于匹配成功但被deny
- 路由10.1.1.1/32在匹配index 10时,不满足匹配条件,则继续匹配index 20,此时匹配成功,且index 20的匹配模式时permit,属于匹配成功并被permit
- 其他路由由于都不符合index 10和20的条件,属于为匹配成功被默认deny
Case2说明:此时greater-equal-value=26,less-equal-value=32。配置时,需满足mask-length<=greater-equal-value<=less-equal-value,否则配置不成功
Case1说明:此时greater-equal-value=8,less-equal-value=32,前8个比特与10.0.0.0相同,掩码长度在8-32之间的路由全部被匹配并被permit
Case2说明:
- 对于index 10,greater-equal-value=24,less-equal-value=32,前24个比特与10.1.1.0相同,所有掩码长度在24到32的路由全部匹配但被deny
- 对于index 20,greater-equal-value=0,less-equal-value=32,前16个比特与10.1.0.0相同,掩码长度在16到32的路由被匹配,此时只有10.1.0.0/16被匹配并被permit,剩下的被默认deny
注:最后一条规则默认拒绝所有
策略工具1:Filter-Policy
Filter-Policy(过滤-策略)是一个很常用的路由信息过滤工具,能够对接收、发布、引入的路由进行过滤,可应用与OSPF、IS-IS、BGP等协议
Filter-Policy在距离矢量路由协议中的应用
如果要过滤掉上游设备到下游设备的路由,只需要在上游设备配置filter-policy export或者在下游设备上配置filter-policy import
Filter-Policy在链路状态路由协议中的应用
Filter-Policy中import和export
- Import:链路状态路由协议在计算出路由信息加入路由器的IP路由表的时候进行过滤,使用import
- Export:将已经加入到路由器的IP路由,引入到协议的LSDB中时,使用export
举例:将IS-IS协议中的路由引入到OSPF协议中时,使用Filter-Policy时使用export,因为在引入的时候是将IS-IS计算出的路由加入到路由器的IP路由表后,从IP路由表中将IS-IS计算出的路由条目引入到OSPF协议中。从IP路由表引入到OSPF的LSDB中,使用export
策略工具2:Route-Policy
Route-Policy是一个策略工具,用于过滤路由信息,以及为过滤后的路由信息设置路由属性
一个Route-Policy由一个或多个节点(Node)构成,每个节点都可以是一系列条件语句(匹配条件)以及执行语句(执行动作)的集合,这些集合按照编号从小到大顺序排列
当使用Route-Policy时,Node的值小的节点先进行匹配。一个节点匹配成功后,路由将不再匹配其他节点。全部节点匹配失败后,路由将被过滤。
Route-Policy的组成
一个Route-Policy由一个或多个节点构成,每个节点包括多个if-match和apply子句
Route-Policy的匹配顺序
路由策略使用不同的匹配条件和匹配模式选择路由和改变路由属性
匹配模式
- permit:路由将被允许通过,并且执行该节点的apply子句对路由信息的一些属性进行设置
- deny:路由将被拒绝通过
注:最后一条规则默认拒绝所有