专题二十:路由策略与策略路由
一、路由策略
1.1 路由策略的概念
路由策略是通过修改路由表的路由条目来控制数据流量的可达性。即对接受和发布的路由进过滤。这种方式称为路由策略
路由策略功能 | 相关作用 |
控制路由的发布 | 可通过路由策略对所要发布的路由信息进行过滤,只允许发布满足条件的路由信息。 |
控制路由的接收 | 可通过路由策略对所要接收的路由信息进行过滤,只允许接收满足条件的路由信息。这样可以控制路由条目的数量,提高网络的路由效率。 |
控制路由的引入 | 可通过路由策略只引入满足条件的路由信息,并控制所引入的路由信息的某些属性,使其满足本路由协议的路由属性要求。 |
设罟路由的属性 | 修改通过路由策略过滤的路由的属性,满足自身需要 |
对于路由策略的实现中,首先要进行路由信息特征的提取,可以使用过滤去进行数据的过滤,当然过滤的属性可以是各种属性,例如源目地址等等,然后根据这些属性进行数据的分流后,应用于路由的发布、接受、引入。
1.2 路由信息特征提取工具
1.2.1 访问控制列表
访问控制列表(ACL)由permit或deny语句组成的一系列有顺序规则的集合,它通过匹配报文的信息实现对报文的分类。
ACL的分类
ACL类别 | 规则定义描述 | 编号范围 |
基本ACL | 仅使用报文的源IP地址、分片标记和时间段信息来定义规则。 | 2000~2999 |
高级ACL | 既可使用报文的源IP地址,也可使用目的地址、IP优先级、ToS、DSCP、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则 | 3000~3999 |
二层ACL | 可根据报文的以太网帧头信息来定义规则,如根据源MAC地址、目的MAC地址、以太帧协议类型等。 | 4000~4999 |
用户自定义ACL | 可根据报文偏移位置和偏移量来定义规则。 | 5000~5999 |
用户ACL | 既可使用IPv4报文的源IP地址或源UCL(User Control List)组,也可使用目的地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。 | 6000~9999 |
一个ACL可以由多条“deny | permit”语句组成,每一条语句描述了一条规则。设备收到数据流量后,会逐条匹配ACL规则,看其是否匹配。如果不匹配,则继续匹配下一条。
一旦找到一条匹配的规则,就会执行规则中定义的动作,且不再继续与后续规则进行匹配;如果找不到匹配的规则,则设备会对报文直接进行转发。
ACL的匹配机制
需要注意的是,ACL中定义的这些规则可能存在重复或矛盾的地方。规则的匹配顺序决定了规则的优先级,ACL通过设置规则的优先级来处理规则之间重复或矛盾的情形
1.2.2 地址前缀列表
IP前缀列表(IP-Prefix List)是将路由条目的网络地址、掩码长度作为匹配条件的过滤器,可在各路由协议发布和接收路由时使用。
不同于ACL,IP-Prefix List能够同时匹配IP地址前缀长度以及掩码长度,增强了匹配的精确度。
1、ip-prefix-name:地址前缀列表名称
2、序号:本匹配项在地址前缀列表中的序号,匹配时根据序号从小到大进行顺序匹配
3、动作:permit/deny,地址前缀列表的匹配模式为允许/拒绝,表示匹配/不匹配
4、IP网段与掩码:匹配路由的网络地址,以及限定网络地址的前多少位需严格匹配
5、掩码范围:匹配路由前缀长度,掩码长度的匹配范围 mask-length<=greater-equal-value<=less-equal-value<=32
前缀列表的组成及匹配规则:
前缀过滤列表由IP地址和掩码组成,IP地址可以是网段地址或者主机地址,掩码长度的配置范围为0~32。
IP-Prefix List中的每一条IP-Prefix都有一个序列号index,匹配的时候将根据序列号从小到大进行匹配。
如果不配置IP-Prefix的index,那么对应的index在上次配置的同名IP-Prefix的index的基础上,以步长为10进行增长。如果配置的IP-Prefix的名字与index都和已经配置了的一项IP-Prefix List的相同,仅仅只是匹配的内容不同,则该IP-Prefix List将覆盖原有的IP-Prefix List。
当所有前缀过滤列表均未匹配时,缺省情况下,存在最后一条默认匹配模式为deny。当引用的前缀过滤列表不存在时,则默认匹配模式为permit。
前缀掩码长度范围:
前缀过滤列表可以进行精确匹配或者在一定掩码长度范围内匹配,并通过配置关键字greater-equal和less-equal来指定待匹配的前缀掩码长度范围。如果没有配置关键字greater-equal或less-equal,前缀过滤列表会进行精确匹配,即只匹配掩码长度为与前缀过滤列表掩码长度相同的IP地址路由;
如果只配置了关键字greater-equal,则待匹配的掩码长度范围为从greater-equal指定值到32位的长度;如果只匹配了关键字less-equal,则待匹配的掩码长度范围为从指定的掩码到关键字less-equal的指定值。
IP-Prefix的匹配机制
1.2.2.1 IP-Prefix的基础配置命令
1.创建IPv4地址前缀列表
[Huawei] ip ip-prefix ip-prefix-name [ index index-number ] { permit | deny }
ipv4-address mask-length [ match-network ] [ greater-equal greater-equal-value ]
[ less-equal less-equal-value ]
ip-prefix-name:指定地址前缀列表的名称。(指定地址前缀列表的名称。字符串形式,长度范围是1~169,不支持空格,区分大小写。)
index index-number:指定本匹配项在地址前缀列表中的序号。(指定本匹配项在地址前缀列表中的序号。整数形式,取值范围是1~4294967295。缺省情况下,该序号值按照配置先后顺序依次递增,每次加10,第一个序号值为10。)
permit:指定地址前缀列表的匹配模式为允许。
deny:指定地址前缀列表的匹配模式为拒绝。
ipv4-address mask-length:指定IP地址和指定掩码长度。
greater-equal greater-equal-value:指定掩码长度匹配范围的下限。
less-equal less-equal-value:指定掩码长度匹配范围的上限。
1.3 路由策略工具
1.3.1 Route-Policy
Route-Policy是一种功能非常强大的路由策略工具,它可以灵活地与ACL、IP-Prefix List、As-Path-Filter等其它工具配合使用,Route-Policy的每个node都有相应的permit模式或deny模式。
一个Route-Policy由一个或多个节点(Node)构成,每个节点都可以是一系列条件语句(匹配条件)以及执行语句(执行动作)的集合,这些集合按照编号从小到大的顺序排列。
1.3.1.1 Route-Policy的组成
一个Route-Policy由一个或多个节点构成,每个节点包括多个if-match和apply子句。
permit或deny:指定Route-Policy节点的匹配模式为允许或拒绝。
node:指定Route-Policy的节点号。整数形式,取值范围是0~65535。
if-match子句:定义该节点的匹配条件。
apply子句:定义针对被匹配路由执行的操作。
注:如果是permit模式,则当路由项满足该node的所有if-match子句时,就被允许通过该node的过滤并执行该node的apply子句,且不再进入下一个node;如果路由项没有满足该node的所有if-match子句,则会进入下一个node继续进行过滤。如果是deny模式,则当路由项满足该node的所有if-match子句时,就被拒绝通过该node的过滤,这时apply子句不会被执行,并且不进入下一个node;否则就进入下一个node继续进行过滤。
1.3.1.2 Route-Policy的匹配顺序
路由策略使用不同的匹配条件和匹配模式选择路由和改变路由属性。
1.3.1.3 Route-Policy的基础配置
1.创建Route-Policy
[Huawei] route-policy route-policy-name { permit | deny } node node
创建路由策略并进入Route-Policy视图。
2.(可选)配置if-match子句
[Huawei-route-policy] if-match ?acl 匹配基本ACLcost 匹配路由信息的costinterface 匹配路由信息的出接口ip-prefix 匹配前缀列表……
3.(可选)配置apply子句
[Huawei-route-policy] apply ?cost 设置路由的costcost-type {type-1 | type-2} 设置OSPF的开销类型ip-address next-hop 设置IPv4路由信息的下一跳地址preference 设置路由协议的优先级tag 设置路由信息的标记域……
1.3.2 Filter-Policy
Filter-Policy能够对接收或发布的路由进行过滤,可应用于ISIS、OSPF、BGP等协议。应用各协议中的Filter-Policy工具可通过引用ACL或地址前缀列表,对接收、发布和引入的路由进行过滤。
如图所示,R1、R2、R3之间运行BGP路由协议,路由在各个设备之间传递,当需要根据实际需求过滤某些路由信息的时候可以使用Filter-Policy实现。
1.3.2.1 Filter-Policy在距离矢量路由协议中的应用
对于距离矢量协议和链路状态协议,Filter-Policy工具的操作过程是不同的:
距离矢量协议是基于路由表生成路由的,因此过滤器会影响从邻居接收的路由和向邻居发布的路由。
在距离矢量路由协议中,设备之间传递的是路由信息,如果需要对这种路由信息进行某种过滤,可以使用Filter-Policy实现,出方向和入方向的生效位置如图所示。
1.3.2.2 Filter-Policy在链路状态路由协议中的应用
链路状态路由协议是基于链路状态数据库来生成路由的,且路由信息隐藏在链路状态LSA中,但Filter-Policy不能对发布和接收的LSA进行过滤,故Filter-Policy不影响链路状态通告或链路状态数据库的完整性以及协议路由表,而只会影响本地路由表,且只有通过过滤的路由才被添加到路由表中,没有通过过滤的路由不会被添加进路由表。
在链路状态路由协议中,各路由设备之间传递的是LSA信息,然后设备根据LSA汇总成的LSDB信息计算出路由表。但是Filter-Policy只能过滤路由信息,无法过滤LSA。
不同协议应用filter-policy export命令对待发布路由的影响范围不同:
对于距离矢量协议,会对引入的路由信息、本协议发现的路由信息进行过滤。
对于链路状态协议,只对引入的路由信息进行过滤。
1.3.2.3 Filter-Policy的基础配置
1.在OSPF中的应用
[Huawei-ospf-100] filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name [ secondary ] } import
按照过滤策略,设置OSPF对接收的路由进行过滤。
[Huawei-ospf-100] filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name } export [ protocol [ process-id ] ]
按照过滤策略,设置对引入的路由在向外发布时进行过滤。
2.在IS-IS中的应用
[Huawei-isis-1] filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name } import
配置IS-IS路由加入IP路由表时的过滤策略。
[Huawei-isis-1] filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name } export [ protocol [ process-id ] ]
配置IS-IS对已引入的路由在向外发布时进行过滤的过滤策略。
3.在BGP中的应用
[Huawei-bgp-af-ipv4] filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name } import
配置对接收的路由信息进行过滤。
[Huawei-bgp-af-ipv4] filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name } export [ protocol [ process-id ] ]
配置对发布的路由进行过滤,只有通过过滤的路由才被BGP发布。
[Huawei-bgp-af-ipv4] peer { group-name | ipv4-address } filter-policy { acl-number | acl-name acl-name } { import | export }
配置向对等体(组)发布或从对等体(组)接收路由时的过滤策略。
二、策略路由
2.1 策略路由的概念
策略路由是一种基于策略的路由选择方法,通过根据特定的策略或条件来决定数据包的转发路径。与传统的基于目的地地址的路由选择不同,策略路由可以根据源IP地址、目的IP地址、服务类型等多个因素进行灵活的决策。其目标是根据网络管理员定义的策略,实现网络流量的优化和管理。
2.2 策略路由的工作原理
-
策略定义:管理员定义一组策略,这些策略可以基于多个因素,如源IP地址、目的IP地址、服务类型等。
-
条件匹配:当数据包到达路由器时,它会被与策略中定义的条件进行匹配。如果数据包符合某个策略的条件,那么该策略将被触发。
-
路径选择:策略触发后,根据策略中定义的规则和动作,路由器会选择最佳的路径来转发数据包。这可以是固定的下一跳路径,也可以是负载均衡的多个路径之一。
-
转发处理:根据选择的路径,路由器将数据包转发到目标地址。
策略路由的选路参数:源目IP址、协议字段,甚至于TCP、UDP的源目的端口等多种组合进行选路,较为灵活。
策略路由进行数据包的转发时,不是简单根据目的IP地址而定,而是综合考虑多种因素,例如源目端口号、IP地址等参数进行流量工程制定,能够满足不同业务走不同链路的需求,基于流量进行分配。
2.3 策略路由优势
①不同的用户可以分配不同的链路(例如存在多个ISP)
②设置IPP或者TOS字段来实现QoS
③实现负载均衡
2.4 策略路由的处理流程
①流模式
第一个包查路由转发表,如果存在路由,将该路由项以source、dest、tos、入接口等索引放置到cache中,以后同样的流就可以直接查cache
对于低端路由器,所有操作由CPU+内存处理
对于中高端设备,一般由NP 和Asic芯片完成处理
②逐包模式
每个包都进行查表后才进行转发
2.5 策略路由PBR
本地策略路由:对本设备发送的报文实现策略路由,比如本机下发的ICMP、BGP等协议报文。
当用户需要实现不同源地址的报文或者不同长度的报文通过不同的方式进行发送时,可以配置本地策略路由。
常用Policy-Based-Route工具来实现。
接口策略路由:对本设备转发的报文生效,对本机下发的报文不生效。
当用户需要将收到的某些报文通过特定的下一跳地址进行转发时,需要配置接口策略路由。使匹配重定向规则的报文通过特定的下一跳出口进行转发,不匹配重定向规则的报文则根据路由表直接转发。接口策略路由多应用于负载分担和安全监控。
常用Traffic-Policy工具来实现。
智能策略路由:基于链路质量信息为业务数据流选择最佳链路。
当用户需要为不同业务选择不同质量的链路时,可以配置智能策略路由。
2.6 路由策略以及策略路由区别
路由策略 | 策略路由 |
基于控制平面,会影响路由表表项。 | 基于转发平面,不会影响路由表表项且设备收到报文后,会先查找策略路由进行匹配转发,若匹配失败,则再查找路由表进行转发。 |
只能基于目的地址进行策略制定。 | 可基于源地址、目的地址、协议类型报文大小等进行策略制定。 |
与路由协议结合使用。 | 需手工逐跳配置,以保证报文按策略进行转发。 |
常用工具:Route-PolicyFilter-Policy等。 | 常用工具:Traffic-Filter、Traffic-Policy, Policy-Based-Route |