策略路由和路由策略的区别(路由策略和策略路由)
策略路由和路由策略的区别(路由策略和策略路由)可以通过路由策略修改路由的属性(例如BGP相应的属性 MED,local-preference等),以对网络进行优化、调整。(3)设置特定路由的属性:在对路由做相互引入时,为了防止次优路径或者环路,可以使用路由策略加以解决。(2)控制路由的接收和发布:根据网络需求,接收或者发布特定的路由。
很多小伙伴在学习和工作中经常对路由策略和策略路由混淆不清,其实我有时也会犯种种错误,那究竟如何区分路由策略和策略路由,他们有哪些区别以及该如何去理解并熟练应用呢,下面我讲讲自己的一点见解,不完整的地方欢迎各位指正交流。
路由策略主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括 -----BGP13条选路原则可达性)来改变网络流量所经过的路径。
路由策略常用于如下场景:
(1)控制路由的引入:
在对路由做相互引入时,为了防止次优路径或者环路,可以使用路由策略加以解决。
(2)控制路由的接收和发布:
根据网络需求,接收或者发布特定的路由。
(3)设置特定路由的属性:
可以通过路由策略修改路由的属性(例如BGP相应的属性 MED,local-preference等),以对网络进行优化、调整。
策略路由
策略路由PBR(Policy-based-route)是一种依据用户制定的策略进行路由选择的机制,分为本地策略路由、接口策略路由和智能策略路由SPR。
本地策略路由仅对本机下发的报文进行处理,对转发的报文不起作用。一条本地策略路由可以配置多个策略点,并且这些策略点具有不同的优先级,本地下发报文优先匹配优先级高的策略点。
路由策略原理
(1)一个Route-Policy由多个节点构成,路由进入路由策略后,按节点序号从小到大依次检查各个节点是否匹配。一个节点包括多个if-match和apply子句。
if-match子句用来定义该节点的匹配条件,apply子句用来定义通过过滤的路由行为。if-match子句的过滤规则关系是“与”,即该节点的所有if-match子句都必须匹配。Route-Policy节点间的过滤关系是“或”,即只要通过了一个节点的过滤,就可通过该Route-Policy。如果没有通过任何一个节点的过滤,路由信息将无法通过该Route-Policy。(没有匹配上route-policy默认是deny)
(2)对于同一个Route-Policy节点,在匹配的过程中,各个if-match子句间是“与”的关系,即路由信息必须同时满足所有匹配条件,才可以执行apply子句的动作。但命令if-match route-type和if-match interface除外,这两个命令的各自if-match子句间是“或”的关系,与其它命令的if-match子句间仍是“与”的关系。
路由策略-控制路由引入(filter-policy route-policy)
控制路由引入:对引入的路由进行控制,以防止环路或次优的路由
路由策略-控制路由的接收和发布
控制路由的接收和发布只接收必要、合法的路由信息,以控制路由表的容量,提高网络的安全性。
路由策略-filter-policy
filter-policy
出方向过滤
(1)在OSPF中的ASBR上,可以过滤LSA5:filter-policy export
(2)rip协议,【ISIS协议(只能在引入的边界路由上做)】和BGP协议和OSPF协议可以过滤路由信息
入方向过滤
(1)对于链路状态路由协议(ISIS OSPF),仅仅是不把路由加入到路由表中
(2)在OSPF中的ABR上,可以过滤LSA3:filter-policy import
(3)RIP协议和BGP协议可以过滤路由信息
路由策略-设置特定路由的属性
设置特定路由的属性
(1)为通过路由策略过滤的路由设置相应的属性
策略路由-本地策略路由
本地策略路由
(1)本地策略路由是仅对本机下发的报文进行处理的策略路由,对转发的报文不起作用
(2)可配置多个本地策略路由,每个本地策略路由称为一个节点,报文按照本地策略路由节点顺序进行匹配
接口策略路由 PBR
接口策略路由只对转发的报文起作用,对本地下发的报文(如本地的Ping报文)不起作用。
匹配顺序:
1、如果找到了匹配的本地策略路由节点,则按照以下步骤发送报文:
(1)查看用户是否设置了报文的优先级
如果用户设置了报文的优先级,首先根据用户设置的优先级设置报文的优先级,然后继续向下执行如果用户未设置报文的优先级,则继续向下执行
(2)查看用户是否设置了本地策略路由的出接口
如果用户设置了出接口,将报文从出接口发送出去,不再执行下面步骤;如果用户未设置出接口,则继续向下执行
(3)查看用户是否设置了本地策略路由的下一跳(用户可以设置两个下一跳以达到负载分担的目的);如果用户设置了策略路由的下一跳,将报文发往下一跳,不再继续执行;如果用户未设置下一跳,按照正常流程根据报文的目的地址查找路由。如果没有查找到路由,则继续向下执行
(4)查看用户是否设置了本地策略路由的缺省出接口
如果用户设置了缺省出接口,将报文从缺省出接口发送出去,不再执行下面步骤;如果用户未设置缺省出接口,则继续执行
(5)查看用户是否设置了本地策略路由的缺省下一跳
如果用户设置了缺省下一跳,将报文发往缺省下一跳,不再继续执行;如果用户未设置缺省下一跳,则继续执行。
(6)丢弃报文,产生ICMP_UNREACH 消息
2、如果没有找到匹配的本地策略路由节点,按照发送IP报文的一般流程,根据目的地址查找路由如果没有匹配策略点,则通过路由表转发
总之一句话匹配了策略点,但是最后没有找了缺省下一跳,则报文丢弃;如果匹配上了则根据策略路由的指挥转发报文PBR:policy-based-route
ACL访问控制类表
1.ACL是由permit或deny语句组成的一系列有顺序规则的集合,它通过匹配报文的信息实现对报文的分类。AR2200根据ACL定义的规则判断哪些报文可以接收,哪些报文需要拒绝,从而实现对报文的过滤。
2.ACL本身只是一组规则,只能区分某一类报文,无法实现过滤报文的功能。对这类报文的处理方法,需要由引用ACL的具体功能来决定。(ACL默认是permit)
traffic-filter
ip-prefix前缀类表
1.IP-prefix将与所定义的前缀过滤列表相匹配的路由,根据定义的匹配模式进行过滤,满足使用者的需要。
2.ip-prefix不能用来过滤数据包,只能过滤路由信息。(ip-prefix默认是deny)
as-path-filter AS路径过滤器
将BGP中的AS_Path属性作为匹配条件的过滤器,在BGP发布、接收路由时单独使用。
community-filter团体属性过滤器
将BGP中的团体属性作为匹配条件的过滤器,在BGP发布、接收路由时单独使用。
路由选择工具-ACL基本原理
ACL的规则管理
(1)每个ACL作为一个规则组,可以包含多个规则。
(2)规则通过规则ID(rule-id)来标识,规则ID 可以由用户进行配置,也可以由系统自动根据步长生成。一个ACL中所有规则均按照规则ID从小到大排序。(步长默认为5)
(3)规则ID 之间会留下一定的间隔。如果不指定规则ID 时,具体间隔大小由“ACL 的步长”来设定。用户可以根据规则ID 方便地把新规则插入到规则组的某一位置。
ACL的规则匹配
1)报文到达设备时,设备从报文中提取信息,并将该信息与ACL中的规则进行匹配,只要有一条规则和报文匹配,就停止查找,称为命中规则。
2)查找完所有规则,如果没有符合条件的规则,称为未命中规则。
路由选择工具-ACL分类
ACL类型根据不同的划分规则可以有不同的分类:
按照创建ACL 时的命名方式分
1.数字型ACL
2.命令型ACL (acl name)
按照ACL的功能分类:
1.基于接口的ACL(编号范围1000-1999)
基于接口的ACL是指定根据报文的入接口匹配报文。实现对报文的匹配过滤。
rule permit/deny interface X/X/X
2.基本ACL(编号范围2000-2999)
可使用报文的源IP 地址、VPN实例、分片标记和时间段信息来定义规则。
3.高级ACL(编号范围3000-3999)
既可使用报文的源IP地址,也可使用目的地址、IP优先级、ToS、DSCP、IP协议类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。高级访问控制列表可以定义比基本访问控制列表更准确、更丰富、更灵活的规则。
4.二层ACL(编号范围4000-4999)
可根据报文的以太网帧头信息来定义规则,如根据源MAC 地址、目的MAC 地址、以太帧协议类型(如arp、rarp、ip、ipv6、mpls)等。
路由选择工具-ACL匹配顺序(默认是配置顺序)
ACL的匹配顺序
1.一个ACL可以由多条“deny | permit”语句组成,每一条语句描述一条规则,这些规则可能存在重复或矛盾的地方(一条规则可以包含另一条规则,但两条规则不可能完全相同,如果相同则系统直接会报错并显示该规则已经存在)。
rule 10 permit source 192.168.1.0 0.0.0.255
rule 15 permit source 192.168.1.1 0.0.0.0
rule 20 permit source 192.168.1.0 0.0.0.255
2.设备支持两种匹配顺序,即配置顺序(config)和自动排序(auto)。当将一个数据包和访问控制列表的规则进行匹配的时候,由规则的匹配顺序决定规则的优先级,ACL通过设置规则的优先级来处理规则之间重复或矛盾的情形。
配置顺序(config,默认)
按ACL 规则编号(rule-id)从小到大的顺序进行匹配 192.168.1.1
rule 10 permit source 192.168.1.1 0.0.0.0
rule 5 deny source 192.168.1.0 0.0.0.255
自动排序(auto)
1.自动排序(auto)使用“深度优先”的原则进行匹配。
2.“深度优先”即根据规则的精确度排序,匹配条件(如协议类型、源和目的IP地址范围等)限制越严格越精确。例如可以比较地址的通配符,通配符越小,则指定的主机的范围就越小,限制就越严格。
3.若“深度优先”的顺序相同,则匹配该规则时按rule-id从小到大排列。如果使用“深度优先”的原则进行匹配,常用ACL“深度优先”如下:
ACL类型 匹配原则
基于接口的ACL any规则最后匹配,其他规则rule-id小的优先
基本ACL&ACL6 1.先看规则中是否带VPN实例,带VPN实例的规则优先(用在mpls中)
2.再比较源IP地址范围,源IP地址范围小(通配符掩码中“0”位的数量多)的规则优先。
3.如果源IP地址范围相同,则rule-id小的优先。
高级ACL&ACL6 1.先看规则中是否带VPN实例,带VPN实例的规则优先。
2.再比较协议范围,指定了IP协议承载的协议类型的规则优先。
3.如果协议范围相同,则比较源IP地址范围,源IP地址范围小
(通配符掩码中“0”位的数量多)的规则优先。
4.如果协议范围、源IP地址范围相同,则比较目的IP地址范围,目的IP
地址范围小(通配符掩码中“0”位的数量多)的规则优先。
5.如果协议范围、源IP地址范围、目的IP地址范围相同,则比较四层
端口号(TCP/UDP端口号)范围,四层端口号范围小的规则优先。
6.如果上述范围都相同,则rule-id小的优先。
二层ACL 1.先比较二层协议类型通配符,通配符大(掩码中“1”位的数量多)的规则优先。
2.如果二层协议类型通配符相同,则比较源MAC地址范围,源MAC地址范围小(通配符掩码中“1”位的数量多)的规则优先。
3.如果源MAC地址范围相同,则比较目的MAC地址范围,目的MAC地址
范围小(通配符掩码中“1”位的数量多)的规则优先。
4.如果源MAC地址范围、目的MAC地址范围相同,则rule-id小的优先。
二层ACL的通配符掩码可以查看下华为文档
[R4-acl-L2-4000]rule permit source-mac 0000-0000-0001 ?
MAC_ADDR<XXXX-XXXX-XXXX> Source MAC address mask default is ffff-ffff-ffff
路由选择工具-ACL其他特性
ACL生效时间段
可以使ACL规则需要在某个或某些特定时间内生效,而在其他时间段则不生效。
(在rule中可以规定生效时间段time-range)
[Huawei-acl-basic-2000]rule permit source 192.168.1.0 0.0.0.255 time-range internet
[Huawei]time-range internet 07:00 to 08:00 working-day
路由选择工具- ip-prefix
ip-prefix
1.每个地址前缀列表可以包含多个索引(index),每个索引对应一个节点。路由按索引号从小到大依次检查各个节点是否匹配,任意一个节点匹配成功,将不再检查其他节点。若所有节点都匹配失败,路由信息将被过滤。
2.根据匹配的前缀不同,前缀过滤列表可以进行精确匹配,也可以进行在一定掩码长度范围内匹配。(看路由引入和控制图中的“acl和ip-prefix的对比”)
3.前缀过滤列表可以进行精确匹配或者在一定掩码长度范围内匹配,可以通过配置关键字greater-equal和less-equal指定待匹配的前缀掩码长度范围。
1)如果没有配置关键字greater-equal或less-equal,前缀过滤列表进行精确匹配,即只匹配掩码长度为前缀过滤列表掩码长度的相同IP地址路由;
2)如果只配置了关键字greater-equal,则待匹配的掩码长度范围为从greater-equal指定值到32 位长度;
3)如果只匹配了关键字less-equal,则待匹配的掩码长度范围为从指定的掩码到关键字less-equal指定值。
4.greater-equal-value与less-equal-value的取值限制:
mask-length<=greater-equal-value<=less-equal-value<=32。
ip-prefix特点
1.当所有前缀过滤列表均未匹配时,缺省情况下,存在最后一条默认匹配模式为deny。
2.当引用的前缀过滤列表不存在时,默认匹配模式为permit。
route-policy Albert permit/deny node 10
if-match ip-prefix Albert
permit
其中ip-prefix Albert 不存在
1.1.1.1-1.1.1.254/24 0 255
示例
ip ip-prefix FILTER index 10 permit 1.1.1.0 24 (greater 24 less 24)
该ip-prefix为精确匹配,只有1.1.1.X/24才能permit 1.1.1.2/24 1.1.1.2/25
ip ip-prefix FILTER index 10 permit 1.1.1.0 24 less-equal 32
掩码范围在24-32之间的网络1.1.1.0才能permit 1.1.1.X /24-32
ip ip-prefix FILTER index 10 permit 1.1.1.0 24 greater-equal 26
掩码范围在26-32之间的网络1.1.1.0才能permit 1.1.1.X /26-32
ip ip-prefix FILTER index 10 permit 1.1.1.0 24 greater-equal 26
less-equal 32
分区 快速笔记 的第 3 页
less-equal 32
掩码范围在26-32之间的网络1.1.1.0才能permit 1.1.1.X /26-32
ip ip-prefix aa index 20 permit 0.0.0.0 0 less-equal 32 (类似于acl中permit any)
所有路由均被permit x.x.x.x/0-32
路由选择工具-as path filter
AS路径过滤器是将BGP中的AS_Path属性作为匹配条件的过滤器,在BGP发布、接收路由时单独使用。
由于AS_Path属性记录AS号是将最后经历的AS号放在AS_Path记录中的最左侧,所以在配置as-path-filter需要格外注意。
如果一条路由起源于AS100,然后一次经过AS300 AS200 AS500,最后到达AS600。那么在AS600里,路由的AS-PATH属性表示为(500 200 300 100)。
示例
ip as-path-filter 10 permit .*
匹配所有AS-PATH属性
由ip as-path-filter 10 permit ^400_.
匹配只接收来自相邻AS400的路由
路由选择工具-community-filter
用于过滤BGP中的community属性
community是可选过渡属性
示例
ip community-filter 1 permit 100:1
匹配community属性为100:1
ip community-filter 1 permit no-advertise
匹配community属性为no-advertise(不通告给任何bgp对等体,包括IBGP和EBGP)