Bootstrap

华为数通笔记-路由策略

简介

路由策略主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。

路由协议在发布、接收和引入路由信息时,根据实际组网需求实施一些策略,以便对路由信息进行过滤和改变路由信息的属性,如:

1.控制路由的接收和发布,只发布和接收必要、合法的路由信息,以控制路由表的容量,提高网络的安全性。

2.控制路由的引入,在一种路由协议引入其它路由协议发现的路由信息丰富自己的路由信息时,只引入一部分满足条件的路由信息。

3.设置特定路由的属性,修改通过路由策略过滤的路由的属性,满足自身需要。

过滤器

路由策略中If-match子句中匹配的6种过滤器包括访问控制列表ACL(Access Control List)、地址前缀列表、AS路径过滤器、团体属性过滤器、扩展团体属性过滤器和RD属性过滤器。这6种过滤器具有各自的匹配条件和匹配模式,因此这6种过滤器在以下的特定情况中可以单独使用,实现路由过滤。

ACL(访问控制列表)

ACL的基本原理

ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。

ACL组成

ACL匹配机制

无论报文匹配ACL的结果是“不匹配”、“允许”还是“拒绝”,该报文最终是被允许通过还是拒绝通过,实际是由应用ACL的各个业务模块来决定。不同的业务模块,对命中和未命中规则报文的处理方式也各不相同。例如,在Telnet模块中应用ACL,只要报文命中了permit规则,就允许通过;而在流策略、路由策略中应用ACL,如果报文命中了permit规则,但流行为动作配置的是deny,该报文仍会被拒绝通过。 

 ACL分类

基于ACL标识方法的划分

数字型ACL:传统的ACL标识方法。创建ACL时,指定一个唯一的数字标识该ACL。

命名型ACL:通过名称代替编号来标识ACL。

用户在创建ACL时可以为其指定编号,不同的编号对应不同类型的ACL。同时,为了便于记忆和识别,用户还可以创建命名型ACL,即在创建ACL时为其设置名称。命名型ACL,也可以是“名称 数字”的形式,即在定义命名型ACL时,同时指定ACL编号。如果不指定编号,系统则会自动为其分配一个数字型ACL的编号。

基于对IPv4和IPv6支持情况的划分

ACL4:通常直接叫做“ACL”,特指仅支持过滤IPv4报文的ACL。

ACL6:又叫做“IPv6 ACL”,特指仅支持过滤IPv6报文的ACL。

以上两种ACL,以及既支持过滤IPv4报文又支持过滤IPv6报文的ACL,统一称做“ACL”

基于ACL规则定义方式的划分 

ACL步长设定

步长,是指系统自动为ACL规则分配编号时,每个相邻规则编号之间的差值。

系统为ACL中首条未手工指定编号的规则分配编号时,使用步长值作为该规则的起始编号;为后续规则分配编号时,则使用大于当前ACL内最大规则编号且是步长整数倍的最小整数作为规则编号。例如ACL中包含规则rule 5和rule 12,ACL(特指基本ACL、高级ACL、二层ACL、用户ACL)的缺省步长为5,大于12且是5的倍数的最小整数是15,所以系统分配给新配置的规则的编号为15。

设置步长的作用,在于方便后续在旧规则之间插入新的规则。假设,一条ACL中,已包含了三条规则rule 5、rule 10、rule 15。如果希望源IP地址为10.1.1.3的报文也被拒绝通过。

 rule 11不能插在rule15 后面,否则规则不起作用

 ACL匹配顺序

配置顺序

配置顺序,即系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。

如果配置规则时指定了规则编号,则规则编号越小,规则插入位置越靠前,该规则越先被匹配。

如果配置规则时未指定规则编号,则由系统自动为其分配一个编号。该编号是一个大于当前ACL内最大规则编号且是步长整数倍的最小整数,因此该规则会被最后匹配。

自动排序

自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配。规则中定义的匹配项限制越严格,规则的精确度就越高,即优先级越高,系统越先匹配。

表 “深度优先”匹配原则

ACL类型

匹配原则

基本ACL&ACL6

  1. 先看规则中是否带VPN实例,带VPN实例的规则优先。
  2. 再比较源IP地址范围,源IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
  3. 如果源IP地址范围相同,则规则编号小的优先。

高级ACL&ACL6

  1. 先看规则中是否带VPN实例,带VPN实例的规则优先。
  2. 再比较协议范围,指定了IP协议承载的协议类型的规则优先。
  3. 如果协议范围相同,则比较源IP地址范围,源IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
  4. 如果协议范围、源IP地址范围相同,则比较目的IP地址范围,目的IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
  5. 如果协议范围、源IP地址范围、目的IP地址范围相同,则比较四层端口号(TCP/UDP端口号)范围,四层端口号范围小的规则优先。
  6. 如果上述范围都相同,则规则编号小的优先。

二层ACL

  1. 先比较二层协议类型通配符掩码,通配符掩码大(协议类型通配符掩码中“1”位的数量多)的规则优先。
  2. 如果二层协议类型通配符掩码相同,则比较源MAC地址范围,源MAC地址范围小(MAC地址通配符掩码中“1”位的数量多)的规则优先。
  3. 如果源MAC地址范围相同,则比较目的MAC地址范围,目的MAC地址范围小(MAC地址通配符掩码中“1”位的数量多)的规则优先。
  4. 如果源MAC地址范围、目的MAC地址范围相同,则规则编号小的优先。

用户ACL

  1. 先比较协议范围,指定了IP协议承载的协议类型的规则优先。
  2. 如果协议范围相同,则比较源IP地址范围。如果规则的源IP地址均为IP网段,则源IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
  3. 如果协议范围、源IP地址范围相同,则比较目的IP地址范围。如果规则的目的IP地址均为IP网段,则目的IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
  4. 如果协议范围、源IP地址范围、目的IP地址范围相同,则比较四层端口号(TCP/UDP端口号)范围,四层端口号范围小的规则优先。
  5. 如果上述范围都相同,则规则编号小的优先。

在自动排序的ACL中配置规则时,不允许自行指定规则编号。系统能自动识别出该规则在这条ACL中对应的优先级,并为其分配一个适当的规则编号。

acl number 3001 match-order auto                                                
 rule 5 permit ip destination 10.1.1.0 0.0.0.255                                
 rule 10 deny ip destination 10.1.0.0 0.0.255.255    

相比config模式的ACL,auto模式ACL的规则匹配顺序更为复杂,但是auto模式ACL有其独特的应用场景。例如,在网络部署初始阶段,为了保证网络安全性,管理员定义了较大的ACL匹配范围,用于丢弃不可信网段范围的所有IP报文。随着时间的推移,实际应用中需要允许这个大范围中某些特征的报文通过。此时,如果管理员采用的是auto模式,则只需要定义新的ACL规则,无需再考虑如何对这些规则进行排序避免报文被误丢弃。

ACL常用匹配项

生效时间段

格式:time-range time-name

IP承载的协议类型

格式:protocol-number | icmp | tcp | udp | gre | igmp | ip | ipinip | ospf

高级ACL支持基于协议类型过滤报文。常用的协议类型包括:ICMP(协议号1)、TCP(协议号6)、UDP(协议号17)、GRE(协议号47)、IGMP(协议号2)、IP(指任何IP层协议)、IPinIP(协议号4)、OSPF(协议号89)。协议号的取值可以是1~255。

rule permit ospf //表示允许OSPF报文通过

源/目的IP地址及其通配符掩码

IP地址通配符掩码与IP地址的反向子网掩码类似,也是一个32比特位的数字字符串,用于指示IP地址中的哪些位将被检查。各比特位中,“0”表示精确匹配,“1”表示任意匹配。但与IP地址子网掩码不同的是,子网掩码中的“0”和“1”要求必须连续,而通配符掩码中的“0”和“1”可以不连续。凭借此特点通配符可以匹配奇偶。例如:

10.0.1.0 0.0.254.255代表匹配10.0.Y.*/24的奇数网段。即10.0.1.0/24、10.0.3.0/24、10.0.5.0/24等

同理可得,10.0.0.0 0.0.254.255代表匹配10.0.Y.*/24的偶数网段。即10.0.0.0/24、10.0.2.0/24、10.0.4.0/24等 

0.0.0.0 255.255.255.255 匹配任意ip地址。

源/目的MAC地址及其通配符掩码

源MAC地址及其通配符掩码格式:source-mac source-mac-address [ source-mac-mask ]

目的地址及其通配符掩码格式:destination-mac dest-mac-address [ dest-mac-mask ]

 与IP地址通配符掩码不同的是,MAC地址通配符掩码各比特位中,“0”表示精确匹配,“1”表示任意匹配。如果不指定通配符掩码,则默认掩码为ffff-ffff-ffff,表示检查MAC地址的每一位。

VLAN编号及其掩码

外层VLAN及其掩码格式:vlan-id vlan-id [ vlan-id-mask ]

二层ACL支持基于外层VLAN编号过滤报文。

将VLAN编号定义为规则匹配项时,可以在VLAN编号字段后面同时指定VLAN掩码,用来与VLAN编号字段共同确定一个VLAN范围。

VLAN掩码的格式是十六进制形式,取值范围是0x0~0xFFF。如果不指定VLAN掩码,则默认掩码为0xFFF,表示检查VLAN编号的每一位。

TCP/UDP端口号

源端口号格式:source-port { eq port | gt port | lt port | range port-start port-end }

目的端口号格式:destination-port { eq port | gt port | lt port | range port-start port-end }

在高级ACL中,当协议类型指定为TCP或UDP时,设备支持基于TCP/UDP的源/目的端口号过滤报文。

TCP标志信息

格式:tcp-flag { ack | established | fin | psh | rst | syn | urg }*

在高级ACL中,当协议类型指定为TCP时,设备支持基于TCP标志信息过滤报文。

 

 IP分片信息

格式:none-first-fragment

  • 该报文是非分片报文或首片分片报文时:如果该报文的目的端口号是80(www对应的端口号是80),则报文与rule 10匹配,报文被允许通过;如果该报文的目的端口号不是80,则报文与rule 15匹配,报文被拒绝通过。

  • 该报文是非首片分片报文时:该报文与rule 5匹配,报文被拒绝通过。

ACL生效时间段

ACL定义了丰富的匹配项,可以满足大部分的报文过滤需求。但需求是不断变化发展的,新的需求总是不断涌现。例如,某公司要求,在上班时间只允许员工浏览与工作相关的几个网站,下班或周末时间才可以访问其他互联网网站;再如,在每天20:00~22:00的网络流量的高峰期,为防止P2P、下载类业务占用大量带宽对其他数据业务的正常使用造成影响,需要对P2P、下载类业务的带宽进行限制。

基于时间的ACL过滤就是用来解决上述问题的。管理员可以根据网络访问行为的要求和网络的拥塞情况,配置一个或多个ACL生效时间段,然后在ACL规则中引用该时间段,从而实现在不同的时间段设置不同的策略,达到网络优化的目的。

生效时间段模式

在ACL规则中引用的生效时间段存在两种模式:

  • 第一种模式——周期时间段:以星期为参数来定义时间范围,表示规则以一周为周期(如每周一的8至12点)循环生效。

    格式:time-range time-name start-time to end-time { days } &<1-7>
    • time-name:时间段名称,以英文字母开头的字符串。

    • start-time to end-time:开始时间和结束时间。格式为[小时:分钟] to [小时:分钟]。

    • days:有多种表达方式。
      • MonTueWedThuFriSatSun中的一个或者几个的组合,也可以用数字表达,0表示星期日,1表示星期一,……6表示星期六。
      • working-day:从星期一到星期五,五天。
      • daily:包括一周七天。
      • off-day:包括星期六和星期日,两天。
  • 第二种模式——绝对时间段:从某年某月某日的某一时间开始,到某年某月某日的某一时间结束,表示规则在这段时间范围内生效。

    格式:time-range time-name from time1 date1 [ to time2 date2 ]
    • time-name:时间段名称,以英文字母开头的字符串。

    • time1/time2:格式为[小时:分钟]。
    • date1/date2:格式为[YYYY/MM/DD],表示年/月/日。

可以使用同一名称(time-name)配置内容不同的多条时间段,配置的各周期时间段之间以及各绝对时间段之间的交集将成为最终生效的时间范围。

例如,在ACL 2001中引用了时间段“test”,“test”包含了三个生效时间段:

#  
time-range test 8:00 to 18:00 working-day 
time-range test 14:00 to 18:00 off-day 
time-range test from 00:00 2014/01/01 to 23:59 2014/12/31 
#  
acl number 2001                                                                 
 rule 5 permit time-range test 
  • 第一个时间段,表示在周一到周五每天8:00到18:00生效,这是一个周期时间段。
  • 第二个时间段,表示在周六、周日下午14:00到18:00生效,这是一个周期时间段。
  • 第三个时间段,表示从2014年1月1日00:00起到2014年12月31日23:59生效,这是一个绝对时间段。

时间段“test”最终描述的时间范围为:2014年的周一到周五每天8:00到18:00以及周六和周日下午14:00到18:00。

地址前缀列表(IP Prefix List)

地址前缀列表将源地址、目的地址和下一跳的地址前缀作为匹配条件的过滤器,可在各路由协议发布和接收路由时单独使用。

每个地址前缀列表可以包含多个索引(index),每个索引对应一个节点。路由按索引号从小到大依次检查各个节点是否匹配,任意一个节点匹配成功,将不再检查其他节点。若所有节点都匹配失败,路由信息将被过滤。

根据匹配的前缀不同,前缀过滤列表可以进行精确匹配,也可以进行在一定掩码长度范围内匹配。

 ACL只能匹配前缀,而前缀列表还可以匹配掩码长度

 

若不配置greater-equalless-equal,则进行精确匹配,即只匹配掩码长度为mask-length的路由。

若只配置greater-equal,则匹配的掩码长度范围为[greater-equal-value32]

若只配置less-equal,则匹配的掩码长度范围为[mask-lengthless-equal-value]

 

acl 跟地址前缀列表的区别:

1、ACL存在多种分类(基本ACL、高级ACL、二层ACL等),可以匹配源地址、目的地址、协议号、源端口和目的端口等信息。因此ACL不但可以匹配路由信息,也可以匹配流量信息。而前缀列表只能匹配路由信息,并不能匹配流量信息。

2 .ACL使用通配符匹配网络号,从而可以实现奇偶匹配,相比于前缀列表,ACL的匹配更为灵活。而前缀列表不但可以匹配网络号,还可以匹配子网掩码的范围,相比于ACL,前缀列表匹配更为精细。

3.ACL可以按照配置顺序匹配,也可以按照深度优先匹配,而前缀列表只能按照配置顺序匹配。

4.ACL可以通过time-range限制生效时间,而前缀列表不可以。

5. ACL的规则步长(step)默认为5,可以通过step命令实现规则编号的自动排列。前缀列表索引号间隔为10,且无自动排列功能。

6.前缀列表默认所有未与任何一个表项匹配的路由都视为未通过地址前缀列表的过滤。,而acl的默认动作在各业务模块应用ACL时各有不同。

AS路径过滤器(AS_Path Filter)

AS路径过滤器是将BGP中的AS_Path属性作为匹配条件的过滤器,在BGP发布、接收路由时单独使用。

 举例:

Community Filter

  • Community FilterCommunity属性配合使用可以在不便使用IP Prefix ListAS_Path Filter时,降低路由管理难度
  • 团体属性过滤器有两种类型:
    • 基本Community Filter匹配团体号或公认Community属性
    • 高级Community Filter使用正则表达式匹配团体号。

  • 命令:[R1] route-policy Community permit node 20
  • 通过配置该命令允许10.1.2.2/32路由被正常通告。

 

策略工具

Route-policy

结构

匹配规则 

注:上表Rule指的是acl或前缀列表的匹配模式 ,Mode是Route-policy的匹配模式。

对于上述论述解释如下: 

1、Route-policy下的匹配条件要全部匹配成功才会执行到匹配模式,反之则会进入下一个节点

2、route-policy 中的DENY 和apply配合无任何意义。就算全部匹配成功,而匹配模式是deny,路由拒绝通过,也不会运用apply了。 

3、凡是在ACL 中被DENY的路由条目,代表该路由在当前节点没有匹配成功,可以继续向下一节点匹配。 不管route-policy的匹配模式是permit还是deny。

4、在route-policy中匹配模式为DENY ,条件语句也全部匹配成功,则该条路由被拒绝通过。 

5、Route-policy用于路由策略时有一个隐含的规则为DENY ALL 所以,当一条路由没有匹配上任何route policy任何一个条件的时候,就拒绝这条路由,而用于策略路由时则是PERMIT ALL 。所以要想放行其余流量就得再添加一个匹配模式为permit的空节点。(route policy为空,就代表匹配上所有上一节点未匹配的路由,具体是否允许通过,看节点是permit还是deny。 

6、在router policy模块下,如果acl为空,代表deny所有流量,也就是流量在当前结点未匹配成功。继续向下一结点匹配。

Filter-Policy

Filter-Policy(过滤-策略)是一个很常用的路由信息过滤工具,能够对接收、发布、引入的路由进行过滤,可应用于IS-IS、OSPF、BGP等协议。

Route-policy和Filter-Policy区别

1.Route policy可以通过apply修改路由属性,filter policy不能。

2.filter policy只要过滤器是permit,就允许发布或接收路由,过滤器是deny就拒绝路由,不像route-policy 后面还跟着permit和deny。

;