路由import&control
- 概述
- 前言
- 在复杂的IP网络中,根据实际组网需求,往往需要实施一些策略,通过改变路由属性(包括可达性)来改变网络流量所经过的路径,实现路由过滤和路由属性设置等功能,如控制路由的接收和发布、控制路由的引入、设置特定路由的属性等等。
- 本文主要介绍网络中常用的路由选择工具、路由策略、策略路由的原理与配置。
- 目标
- 掌握包括ACL、IP-Prefix等路由选择工具
- 掌握路由策略的原理与配置
- 掌握策略路由的原理与配置
- 运用路由策略及策略路由进行路由控制及报文转发
- 路由选择工具
- 概述
- ACL 访问控制类表
- 匹配报文信息
- ACL是由permit或deny语句组成的一系列有顺序规则的集合。
- 通过匹配报文的信息实现对报文的分类。
- 路由器根据ACL定义的规则判断哪些报文可以接收,哪些报文需要拒绝,从而实现对报文的过滤。
- ACL通过配置的一系列匹配规则对特定的数据包进行过滤,从而识别需要过滤的对象。
- 然后,根据预先设定的策略允许或禁止相应的数据包通过。
- 同时,ACL可以作为基础配置被其他功能模块引用。
- IP-Prefix 前缀列表
- 匹配路由信息
- ip-prefix将路由条目与前缀过滤列表的每一项进行匹配,然后根据定义的匹配模式进行过滤,达成路由筛选的目的。
- ip-prefix不能用来过滤数据包,只能过滤路由信息。
- As-Path-Filter AS路径过滤器
- 针对AS路径指定匹配条件
- BGP的路由信息中,包含一个自治系统路径域。
- As-path-filter就是针对自治系统路径域指定匹配条件。
- AS路径过滤器仅应用于BGP协议。
- Community-Filter 团体属性过滤器
- 针对团体属性指定匹配条件
- BGP的路由信息中,可以携带一个或多个团体属性
- 团体属性过滤器就针对团体属性域指定匹配条件。
- ACL
- ACL基本原理
- 定义
- ACL基本原理
- ACL 访问控制类表
- 概述
- 前言
- 访问控制列表ACL(AccessControl List)是由一条或多条规则组成的集合。
- 所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。
- ACL本质上是一种报文过滤器,规则是过滤器的滤芯。
- 设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。
- ACL编号:用于标识ACL,表明该ACL是数字型ACL
- 根据ACL规则功能的不同,ACL被划分为基本ACL、高级ACL、二层ACL和用户ACL这几种类型,每类ACL编号的取值范围不同。
- 除了可以通过ACL编号标识ACL,设备还支持通过名称来标识ACL,就像用域名代替IP地址一样,更加方便记忆。这种ACL,称为命名型ACL。
- 命名型ACL实际上是“名字+数字”的形式,可以在定义命名型ACL时同时指定ACL编号。如果不指定编号,则由系统自动分配。
- 规则:即描述报文匹配条件的判断语句
- 规则编号
- 用于标识ACL规则。
- 可以自行配置规则编号,也可以由系统自动分配。
- ACL规则的编号范围是0~4294967294
- 所有规则均按照规则编号从小到大进行排序。
- 所以,图1中的rule 5排在首位,而规则编号最大的rule15排在末位。
- 系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配。
- 动作:包括permit/deny两种动作,表示允许/拒绝。
- 包括permit/deny两种动作,表示允许/拒绝。
- 匹配项
- ACL定义了极其丰富的匹配项。
- 除了图中的源地址和生效时间段,ACL还支持很多其他规则匹配项。
- 例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。
- 如果规则存在,则系统会从ACL中编号最小的规则开始查找。
- 如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)。
- 如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)。
- 如果未匹配上规则,则继续查找下一条规则,以此循环。
- 如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配。
- ACL分类
- ACL类型根据不同的划分规则可以有不同的分类:基于ACL标识方法的划分、和基于ACL规则定义方式的划分和基于IPv6的ACL
- 基于ACL标识方法的划分
- 数字型ACL
- 命名型ACL
- 基于ACL规则定义方式的划分
- 基本ACL(编号范围2000-2999)
- 仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则
- 高级ACL(编号范围3000-3999)
- 既可使用IPv4报文的源IP地址,也可使用目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口、UDP源/目的端口号、生效时间段等来定义规则
- 二层ACL(编号范围4000-4999)
- 使用报文的以太网帧头信息来定义规则,如根据源MAC(Media Access Control)地址、目的MAC地址、二层协议类型等
- 用户ACL(编号范围6000-6031)
- 既可使用IPv4报文的源IP地址,也可使用目的IP地址、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则
- 基于IPv6的ACL
- 基本ACL6
- 可使用IPv6报文的源IPv6地址、分片信息和生效时间段来定义规则。
- 高级ACL6
- 可以使用IPv6报文的源IPv6地址、目的IPv6地址、IPv6协议类型、ICMPv6类型、TCP源/目的端口、UDP源/目的端口号、生效时间段等来定义规则。
- ACL匹配顺序
- ACL的匹配顺序
- 一个ACL 可以由多条“deny | permit”语句组成,每一条语句描述一条规则,这些规则可能存在重复或矛盾的地方(一条规则可以包含另一条规则,但两条规则不可能完全相同)。
- 设备支持两种匹配顺序,即配置顺序(config)和自动排序(auto)。当将一个数据包和访问控制列表的规则进行匹配的时候,由规则的匹配顺序决定规则的优先级,ACL通过设置规则的优先级来处理规则之间重复或矛盾的情形。
- 缺省的ACL匹配顺序是config模式。
- 配置顺序(config)
- 按ACL规则的编号(rule-id)按照从小到大的顺序进行匹配
- 如果配置规则时指定了规则编号,则规则编号越小,规则插入位置越靠前,该规则越先被匹配。
- 如果配置规则时未指定规则编号,则由系统自动为其分配一个编号。该编号是一个大于当前ACL内最大规则编号且是步长整数倍的最小整数,因此该规则会被最后匹配
- 自动排序(auto)
- 使用“深度优先”的原则进行匹配,常用ACL的匹配顺序如下
- ACL的匹配顺序
- 基本ACL6
- 基本ACL(编号范围2000-2999)
- 规则编号
- 自动排序(auto)使用“深度优先”的原则进行匹配。
- “深度优先”即根据规则的精确度排序,匹配条件(如协议类型、源和目的IP 地址范围等)限制越严格越精确。例如可以比较地址的反掩码,反掩码越小,则指定的主机的范围就越小,限制就越严格。
- 若“深度优先”的顺序相同,则匹配该规则时按rule-id从小到大排列。
- IPv6 ACL
- IPv6ACL对根据配置的规则对IPv6报文进行分类,其实现原理和ACL基本相同。
- IPv6ACL简称ACL6。
- ACL6的分类
- ACL6和ACL命令行不同,而对应的编号可以相同,二者互不影响
- 配置举例
- [RouterA] acl ipv6 number 3001
- [RouterA-acl6-adv-3001] rule denyipv6 source 3001::2/64
- [RouterA] acl 3001
- [Router-acl-adv-3001] rule permit ip source 202.169.10.5 0.0.0.0
- IP-Prefix
- 概述
- 用于过滤IP前缀,能同时匹配前缀号和掩码长度
- 不能用于数据包过滤
- 缺省情况下,存在最后一条默认匹配模式为deny
- 当引用的前缀过滤列表不存在时,默认匹配模式为permit
- 详细说明
- 每个地址前缀列表可以包含多个IP-Prefix条目,每个IP-Prefix条目对应一个索引号(index)。
- 路由将按照索引号从小到大依次检查IP-Prefix列表,任意一个IP-Prefix匹配成功,将不再检查其余项。
- 若所有IP-Prefix都匹配失败,路由信息将被过滤。
- 根据匹配的前缀不同,前缀过滤列表可以进行精确匹配,也可以进行在一定掩码长度范围内匹配。
- 前缀过滤列表可以进行精确匹配或者在一定掩码长度范围内匹配,可以通过配置关键字greater-equal和less-equal指定待匹配的前缀掩码长度范围。
- 如果没有配置关键字greater-equal或less-equal,前缀过滤列表进行精确匹配,即只匹配掩码长度为前缀过滤列表掩码长度的相同IP地址路由;
- 如果只配置了关键字greater-equal,则待匹配的掩码长度范围为从greater-equal指定值到32 位长度;
- 如果只匹配了关键字less-equal,则待匹配的掩码长度范围为从指定的掩码到关键字less-equal指定值。
- greater-equal-value与less-equal-value的取值限制:mask-length<=greater-equal-value<=less-equal-value<=32。
- ip-prefix特点
- 当所有前缀过滤列表均未匹配时,缺省情况下,存在最后一条默认匹配模式为deny。
- 当引用的前缀过滤列表不存在时,默认匹配模式为permit。
- IP-Prefix示例
- ip ip-prefix FILTER index 10 permit 1.1.1.024
- 该ip-prefix为精确匹配,只有1.1.1.1/24才能permit
- ip ip-prefix FILTER index 10 permit1.1.1.0 24 less-equal 32
- 掩码范围在24-32之间的网络1.1.1.0才能permit
- ip ip-prefix FILTER index 10 permit1.1.1.0 24 greater-equal 26
- 掩码范围在26-32之间的网络1.1.1.0才能permit
- ip ip-prefix FILTER index 10 permit1.1.1.0 24 greater-equal 26 less-equal 32
- 掩码范围在26-32之间的网络1.1.1.0才能permit
- ip ip-prefix FILTER index 10 permit0.0.0.0 0 greater-equal 8 less-equal 32
- 所有掩码长度在8到32的路由都被permit
- ip ip-prefix FILTER index 20 permit 0.0.0.0 0 less-equal 32
- 所有路由均被permit
- IPv6-Prefix
- IPv6-Prefix根据配置的规则对IPv6报文进行分类,其实现原理和IP-Prefix基本相同。
- IPv6地址前缀列表用于过滤IPv6地址。
- 同一个地址前缀列表可包含多个表项,每个表项指定一个地址前缀范围。
- 此时,各表项之间是“或”的关系
- 即只要通过其中一个表项就认为已通过该地址前缀列表的过滤
- 所有表项都没有通过则意味着没有通过该地址前缀列表的过滤。
- 默认所有未匹配的路由将被拒绝通过过滤列表。
- 如果所有表项都配置成deny模式,则任何路由都不能通过该过滤列表。
- 因此,需要在多条deny模式的表项后定义一条permit:: 0 less-equal 128的表项,以允许其它所有IPv6路由信息通过。
- IPv6-Prefix示例
- 允许掩码长度在32位到64位之间的地址通过。
- [Huawei] ip ipv6-prefix abc permit :: 0 greater-equal 32 less-equal 64
- 拒绝前缀为3FFE:D00::/32,且前缀长度大于32位的地址通过,允许其他的IPv6路由通过。
- [Huawei] ip ipv6-prefix abc deny 3FFE:D00:: 32 less-equal 128
- [Huawei] ip ipv6-prefix abc permit :: 0 less-equal 128
- 配置名为p3的地址前缀列表,拒绝::1~::FFFF:FFFF范围内的所有路由通过,允许其他路由通过。
- [Huawei] ip ipv6-prefix p3 index 10 deny :: 96 match-network
- [Huawei] ip ipv6-prefix p3 index 20 permit :: 0less-equal 128
- As-Path-Filter
- AS-Path-Filter
- AS路径过滤器
- 以BGP中的AS_Path属性为匹配条件
- 将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)。
- 使用正则表达式进行定义
- 常用的正则表达式
- AS-Path-Filter
- 允许掩码长度在32位到64位之间的地址通过。
- ip ip-prefix FILTER index 10 permit 1.1.1.024
- 概述
- 实例
- ip as-path-filter 10 permit .*
- 匹配所有AS-PATH属性
- ip as-path-filter 10 permit _100$
- 匹配从AS100发起的路由
- ip as-path-filter 10 permit ^100_
- 匹配从AS100接收的路
- ip as-path-filter 10 permit _100|200$
- 匹配从AS100或200发起的路由
- Community-Filter
- Community-Filter
- 团体属性过滤器
- 以BGP中的community属性为匹配条件
- 将BGP中的团体属性作为匹配条件的过滤器
- 只有BGP在收发路由的时候才能使用
- 团体属性包括基本basic团体属性和extended团体属性
- 自定义团体属性和公认团体属性均属于basic团体属性。
- MPLS VPN中的RT和SOO均属于extended团体属性。
- 示例
- ip community-filter 1 permit 100:1
- 匹配community属性为100:1
- ip community-filter 1 permit no-export
- 匹配community属性为no-export
- 路由策略与策略路由
- 路由策略
- 路由策略
- 主要用于路由过滤和路由属性设置等,从而影响流量所经过的路径。
- 路由策略主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径
- 主要通过route-policy实现
- 主要用于路由过滤和路由属性设置等,从而影响流量所经过的路径。
- 路由策略原理
- 路由策略
- 路由策略
- 路由策略
- ip community-filter 1 permit 100:1
- Community-Filter
- ip as-path-filter 10 permit .*
- 一个Route-Policy由多个节点构成,路由进入路由策略后,按节点序号从小到大依次检查各个节点是否匹配。
- 一个节点包括多个if-match和apply子句。
- if-match子句用来定义该节点的匹配条件,apply子句用来定义通过过滤的路由行为。
- if-match子句的过滤规则关系是“与”,即该节点的所有if-match子句都必须匹配。
- Route-Policy节点间的过滤关系是“或”,即只要通过了一个节点的过滤,就可通过该Route-Policy。
- 如果没有通过任何一个节点的过滤,路由信息将无法通过该Route-Policy。
- 对于同一个Route-Policy节点,在匹配的过程中,各个if-match子句间是“与”的关系,即路由信息必须同时满足所有匹配条件,才可以执行apply子句的动作。
- 但命令if-match route-type和if-match interface除外,这两个命令的各自if-match子句间是“或”的关系,与其它命令的if-match子句间仍是“与”的关系。
- 路由策略常用场景
- 控制路由的引入
- 在对路由做相互引入时,为了防止次优路径或者环路,可以使用路由策略加以解决。
- 控制路由的引入
- 上面拓扑为双点双向重发布的示意图,如果不加控制,将会发生次优路由和环路等故障
- 在拓扑中,R1将网段10.0.0.0/24及2000::/64引入到OSPF。R2/R3分别将该路由引入ISIS,正常情况下,R2/R3将路由引入ISIS会有先后,假设R3先于R2将该路由引入到IS-IS。那么R2就会同时从OSPF和IS-IS学到10.0.0.0/24及2000::/64的路由。于是R2会根据路由协议的优先级优选通过IS-IS学到的路由(OSPF的外部路由优先级为150,IS-IS的路由优先级为15)。于是,当R2访问10.0.0.0/24及2000::/64网段时,会使用R4-R3-R1这条次优路径。为了避免出现这种情况,可以在路由器R2上使用route-policy修改OSPF ASE路由的优先级,使得OSPF ASE的路由优先于从IS-IS学到的路由,使得R2选择正确的路由。
- 当R1连接网络10.0.0.0/24及2000::/64的接口断掉之后,虽然该条外部LSA会在OSPF区域内老化,但是由于R2通过IS-IS已经学习到了10.0.0.0/24及2000::/64网络,所以R2会将该网络引入到OSPF,进而使R1和R3会通过R2学习到了网络10.0.0.0/24及2000::/64。当R2访问访问网络10.0.0.0/24及2000::/64时,流量会沿R4-R3-R1-R2的路径发送,从而引发环路。为避免这种情况,我们可以通过给路由条目添加标记tag标签,然后对特定标签进行过滤的方法来避免环路的发生。
- 控制路由的接收和发布
- 根据网络需求,接收或者发布特定的路由。
- R4将网络10.0.X.0/24及2000::/64&3000::/64引入到OSPF中。
- 根据业务需要,R1只能接收网络10.0.0.0/24和2000::/64;
- 而R2只能接收网络10.0.1.0/24和3000::/64。
- 对于这种需求,可以通过filter-policy加以实现。
- 可以接收指定的路由,从而优化路由表项
- 一般通过filter-policy实现
- 只接收必要、合法的路由信息,以控制路由表的容量,提高网络的安全性
- 路由策略 – 设置特定路由的属性
- 可以通过路由策略修改路由的属性,以对网络进行优化、调整。
- 使用路由策略为特定的路由设置相应的属性
- 通过route-policy修改BGP中的Local_Pref属性
- 进而影响流量走向。
- R2将从EBGP学到的10.0.0.0/24和2000::/64路由的Local_Pref设为300
- R3将从EBGP学到的该路由的Local_Pref设置为200
- R1/R2/R3相互之间通过IBGP交互各自的路由
- 最终将选择以R2作为本AS去往网络10.0.0.0/24和2000::/64的出口。
- 路由策略 – Filter-Policy
- 路由策略 – Filter-Policy(OSPF)
- Filter-policy Import
- 对接收的路由设置过滤策略,只有通过过滤策略的路由才被添加到路由表中,没有通过过滤策略的路由不会被添加进路由表,但不影响对外发布出去。
- OSPF的路由信息记录在LSDB中,filter-policy import命令实际上是对OSPF计算出来的路由进行过滤,不是对发布和接收的LSA进行过滤。
- Filter-policy Export
- 通过命令import-route引入外部路由后,为了避免路由环路的产生,通过filter-policy export命令对引入的路由在发布时进行过滤,只将满足条件的外部路由转换为Type5、7 LSA并发布出去。
- 通过指定protocol或process-id对特定的某一种协议或某一进程的路由进行过滤。
- 如果没有指定protocol和process-id,则OSPF将对所有引入的路由信息进行过滤。
- 由于Type5、7 LSA是有ABSR产生的,因此,本命令仅在ASBR上配置。
- 路由策略 – Filter-Policy(IS-IS)
- Filter-policy Import
- Filter-policy import命令用来配置IS-IS路由加入IP路由表时的过滤策略
- 配置该命令后,不会影响本地设备的LSP的扩散和LSDB的同步,只会影响本地的IP路由表。
- IS-IS的路由表项需要被成功下发到IP路由表中,才能用来指导IP报文转发。
- 如果IS-IS路由表中有到达某个目的网段的路由,但是并不希望将该路由下发到IP路由表中,可以使用该命令结合基本ACL、IP-Prefix、路由策略等方式,只将部分IS-IS路由下发到IP路由表中。
- Filter-policy import命令用来配置IS-IS路由加入IP路由表时的过滤策略
- Filter-policy Export
- Filter-policy export命令用来配置IS-IS对已引入的路由在向外发布时进行过滤的过滤策略。
- 配置该命令后,不会影响本地设备的路由,只会将引入的部分外部路由发布给IS-IS邻居。
- 当网络中同时部署了IS-IS和其他路由协议时,如果已经在边界设备上引入了其他路由协议的路由,缺省情况下,该设备将把引入的全部外部路由发布给IS-IS邻居。
- 如果只希望将引入的部分外部路由发布给邻居,可以使用filter-policy export命令实现。
- Filter-policy export命令用来配置IS-IS对已引入的路由在向外发布时进行过滤的过滤策略。
- 路由策略 – Filter-Policy(BGP)
- Filter-policyImport
- filter-policy import命令用来配置对接收的路由信息进行过滤。
- 该命令可以对BGP设备全局接收的路由进行过滤,决定是否将路由添加到BGP路由表中。
- Filter-policyExport
- filter-policy export命令用于对设备全局发布的路由信息进行过滤。
- 只有通过过滤的路由才被BGP发布。
- 如果指定protocol参数,将只对引入的这种协议产生的路由进行过滤,对引入的其他协议产生的路由不受影响。
- 如果没有指定protocol参数,对引入的任何一个协议产生的路由都要进行过滤
- 对于通过import-route (BGP)命令引入的路由,配置了这个命令后,BGP会在引入这些路由之前就进行过滤,只有通过过滤的路由才能加入BGP本地路由表,并被BGP发布。
- 策略路由
- 策略路由基本概念
- 概念
- 传统的路由转发原理是首先根据报文的目的地址查找路由表,然后进行报文转发。
- 而策略路由使网络管理者不仅能够根据报文的目的地址,而且能够根据报文的源地址、报文大小和链路质量等属性来制定策略路由,以改变数据包转发路径,满足用户需求。
- 优点
- 可以根据用户实际需求制定策略进行路由选择,增强路由选择的灵活性和可控性。
- 可以使不同的数据流通过不同的链路进行发送,提高链路的利用效率。
- 在满足业务服务质量的前提下,选择费用较低的链路传输业务数据,从而降低企业数据服务的成本。
- 与路由策略的不同
- 策略路由的操作对象是数据包,在路由表已经产生的情况下,不按照路由表进行转发,而是根据需要,依照某种策略改变数据包转发路径。
- 路由策略的操作对象是路由信息。路由策略主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。
- 策略路由的分类
- 本地策略路由
- 本地策略路由仅对本机下发的报文进行处理,对转发的报文不起作用。
- 可配置多个本地策略路由,每个本地策略路由称为一个节点,报文按照本地策略路由节点顺序进行匹配。
- 本地策略路由
- 概念
- 策略路由基本概念
- Filter-policyImport
- Filter-policy Import
- Filter-policy Import
- 路由策略 – Filter-Policy(OSPF)
- 匹配顺序
- 如果找到了匹配的本地策略路由节点,则按照以下步骤发送报文
- 查看用户是否设置了报文的优先级
- 如果用户设置了报文的优先级,首先根据用户设置的优先级设置报文的优先级,然后继续向下执行
- 如果用户未设置报文的优先级,则继续向下执行
- 查看用户是否设置了本地策略路由的出接口
- 如果用户设置了出接口,则将报文从出接口发送出去,不再继续执行下面的步骤
- 如果用户未设置出接口,则继续向下执行
- 查看用户是否设置了本地策略路由的下一跳
- 如果用户设置了策略路由的下一跳,则将报文发往下一跳,不再继续执行下面的步骤;
- 如果用户未设置下一跳,则按照正常流程根据报文的目的地址查找路由
- 如果没有查找到路由,则继续向下执行
- 注意:用户可以设置两个下一跳以达到负载分担的目的
- 查看用户是否设置了本地策略路由的缺省出接口
- 如果用户设置了缺省出接口,则将报文从缺省出接口发送出去,不再继续执行下面的步骤
- 如果用户未设置缺省出接口,则继续执行
- 查看用户是否设置了本地策略路由的缺省下一跳
- 如果用户设置了缺省下一跳,则将报文发往缺省下一跳,不再继续执行下面的步骤
- 如果用户未设置缺省下一跳,则继续执行
- 丢弃报文,产生ICMP_UNREACH 消息
- 查看用户是否设置了报文的优先级
- 如果没有找到匹配的本地策略路由节点,按照发送IP报文的一般流程,根据目的地址查找路由
- 如果找到了匹配的本地策略路由节点,则按照以下步骤发送报文
- 接口策略路由
- 接口策略路由只对转发的报文起作用,对本地下发的报文(比如本地的Ping报文)不起作用
- 智能策略路由
- 智能策略路由是基于业务需求的策略路由,通过匹配链路质量和网络业务对链路质量的需求,实现智能选路
- 路由策略和策略路由比较
- 路由策略与策略路由配置命令
- 配置路由引入
- 配置直连路由引入
- 案例
- 公司A网络拓扑如下所示,现根据需求完成如下配置
- 如RTX与RTY互联,则互联地址为XY.1.1.X与XY.1.1.Y,掩码长度为24位。
- 公司A网络拓扑如下所示,现根据需求完成如下配置
- 案例
- 配置直连路由引入
- 配置路由引入
- R2、R3和R4运行OSPF,R3、R4和R5运行ISIS;
- 将与R5直连的网段10.0.X.0/24引入到ISIS。
- 配置
- 配置命令
- 命令含义
- route-policy命令用来创建Route-Policy并进入该Route-Policy视图
- 参数意义
- proute-policy route-policy-name { permit | deny } node node
- route-policy-name:指定Route-Policy名称。
- permit:指定Route-Policy节点的匹配模式为允许。如果路由匹配所有的if-match子句,该路由可通过过滤并执行此节点apply命令中规定的一系列动作;否则,必须进行下一节点的测试。
- deny:指定Route-Policy节点的匹配模式为拒绝。如果路由匹配所有的if-match子句,该路由不能通过过滤从而不能进入下一节点的测试。
- node node:Route-Policy的节点索引
- 注意事项
- Route-Policy用于过滤路由信息以及为通过过滤的路由信息设置路由属性。
- 一个Route-Policy由多个节点构成。
- 一个节点包括多个if-match和apply子句。
- if-match子句用来定义该节点的匹配条件。
- apply子句用来定义通过过滤的路由行为。
- if-match子句的过滤规则关系是“与”,即该节点的所有if-match子句都必须匹配。
- Route-Policy节点间的过滤关系是“或”,即只要通过了一个节点的过滤,就可通过该Route-Policy。
- 如果没有通过任何一个节点的过滤,路由信息将无法通过该Route-Policy。
- 配置静态路由引入
- 案例
- 公司A现需要对R1与R2之间的网络进行部署,需求如下
- 案例
- R1与R2之间配置静态路由实现互通;
- 将网络16.X.0/24引入到OSPF中,OSPF域只能学到网络172.16.0.0/24和172.16.2.0/24的路由,请使用filter-policy和ACL命令,并实现最优配置
- 此处的需求是对之前案例的扩展,在原案例的基础上进行配置。
- 对于该需求,主要考察对filter-policy和ACL的理解。
- 所谓最优配置,实际上就是使用最少的命令达到要求的效果。
- 配置
- 命令含义
- filter-policy export命令用来按照过滤策略,设置对引入的路由在向外发布时进行过滤
- 参数意义
- filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name } export [ protocol [ process-id ]]
- acl-number:指定基本访问控制列表号。
- acl-name acl-name:指定访问控制列表名称。
- ip-prefix ip-prefix-name:指定地址前缀列表名称。
- protocol:指定发布路由信息的协议。
- process-id:当发布的路由协议为rip、isis、ospf时,可以指定进程号。
- 注意事项
- OSPF通过命令import-route引入外部路由后,为了避免路由环路的产生,通过filter-policy export命令对引入的路由在发布时进行过滤,只将满足条件的外部路由转换为Type-5LSA(AS-external-LSA)并发布出去。
- 通过指定protocol或process-id对特定的某一种协议或某一进程的路由进行过滤。
- 如果没有指定protocol和process-id,则OSPF将对所有引入的路由信息进行过滤。
- 配置双点双向路由引入
- 案例
- 公司A需要实现网络的互联互通,现需求如下
- 案例
- 该案例拓扑和之前的拓扑一致。我们在完成需求后,要充分考虑到是否存在次优路由,是否发生了环路。
- p在R3和R4上进行双向路由引入
- 配置
- 通过路由协议的相互引入之后,R4到达网络172.16.X.0/24出现次优路径。
- 产生次优路径主要是因为R3将OSPF路由先行分发入ISIS协议域,
- 于是R4从OSPF和ISIS同时学到了172.16.X.0/24的路由,
- 因为OSPF的外部路由的preference值为150,
- 而ISIS的preference值为15,
- 所以R4选择了ISIS路由前往172.16.X.0/24网段,
- 于是产生次优路由。
- 优化路由
- 配置策略路由
- 配置策略优化路由
- 现公司A需要对网络进行优化
- 配置策略优化路由
- 当网络发生变化时,避免环路的产生。
- 可以通过Tag实现对双点双向路由引入的控制,从而避免环路。
- 使R4能够通过最优路由访问网络172.16.X.0/24,使路径最优。
- 需要修正R4访问172.16.X.0/24网段的路由,避免出现经过ISIS区域的次优路由。
- 配置
- 使用tag来实现路由相互引入时的限制
- 如果在做路由互相引入的时候不做过滤,那么,在网络发生变化的时候,可能会在网络中导致环路。
- 为避免环路就要保证路由协议间相互引入的时候只引入各路由域自身的路由。
- 在上面的配置场景中,使用了tag来实现路由相互引入时的限制。
- 使用tag的优势是不需要指定具体的路由条目,当路由域内具体的路由项有增减的时候,引入的路由条目和限制会随之变化,不需要手工干预,具有很好的扩展性。
- 虽然上面的配置场景的路由策略能够很好地避免环路,但是并不能解决次优路由的问题。
- 解决次优路径
- 次优路由主要是因为双点双向导入时,R3/R4中的某一台路由器会同时从两侧得到172.16.X.0/24路由,而因为OSPF的外部路由preference值大于ISIS的preference值(preference值越小越优先),导致R3/R4(其中一台)选择了次优路由。
- 要解决此问题,需要修改OSPF外部路由条目的preference值,只要使OSPF_ASE路由的preference值小于ISIS路由的preference值就可以解决此问题。
- 考虑到合理性问题,不建议将OSPF_ASE路由的preference值设置成比OSPF内部路由的preference值(10)还小。
- 优化路由
- 公司A为了优化网络,现需求如下
- R3和R4在OSPF域中,将网络10.0.X.0/24汇总为10.0.0.0/16,请充分避免环路
- 公司A为了优化网络,现需求如下
- 现象
- 当仅仅进行路由汇总,发现存在两个问题。第一个问题,R5学习到了该汇总路由;第二个问题,在R2 ping一个不存在的地址产生了环路。
- 第一个问题产生的原因,
- 主要是由于R3和R4学习到各自产生的汇总路由后,再引入到ISIS域中产生的。
- 此处,R3首先进行了OSPF汇聚配置,传递到R4,在ISIS引入了该路由后,传递到R3,
- 因此在R3可以收到从R4过来的OSPF外部路由,也可以收到从R5过来的ISIS路由。
- 因为ISIS优先级优于OSPF外部路由,
- 所以在R3的路由表中可以看到10.0.0.0/16路由的下一跳是35.1.1.5,也就是R5。
- 然后在R4做路由汇聚,路由通过OSPF传递到R3,
- 还是由于优先级的关系,R3的ISIS引入OSPF路由时,由于路由表中这条路由是ISIS协议产生的,
- 所以引入不到ISIS中,
- 这就是R5上看到该路由下一跳是R4的原因。
- 第二个问题产生的原因,是因为R2将ping包发给R4,R4查路由表又转发给R2,R2又给R4,行成环路。
- 为了解决上面两个问题,我们需要保证R3和R4既不能学习到对方产生的汇总路由,又不能将该路由引入到ISIS路由域。所以,我们只需在R3和R4上将他们学习到的对方的汇总路由过滤即可。
- 优化路由配置
- 在R3/R4上增加过滤策略,不从OSPF接收特定的汇聚路由。
- 保证该汇聚路由不再重新导入到ISIS路由域。
- 避免了环路。
- 配置策略路由
- 现公司A需要进一步优化网络,现需求如下
- 来自0.0.0/24和10.0.1.0/24的流量访问网络172.16.X.0/24时经由R3;
- 来自0.2.0/24的流量访问网络172.16.X.0/24时,经由R4。
- 配置
- 命令含义
- policy-based-route命令用来创建或修改策略路由和策略点。
- ip local policy-based-route命令用来使能本地策略路由。
- 参数意义
- policy-based-route policy-name { permit | deny } node node-id
- policy-name:指定策略名称。
- permit:策略点的模式,表示对满足匹配条件的报文进行策略路由。
- deny:策略点的模式,表示对满足匹配条件的报文不进行策略路由。
- node-id:指定策略点的顺序号。
- ip local policy-based-route policy-name
- policy-name:指定策略路由的名称。
- 注意事项
- 在部署策略路由时,如果需要配置报文的出接口,则报文的出接口不能为以太接口等广播型接口
- 实验结果
- 在R5上指定不同的源地址对到达相同目的地的数据包进行跟踪,可以发现数据包选用了不同的路径。
- 注意,ip local policy-based-route命令应用的策略只对路由器本地发起的数据包起作用。
- 案例分析
- 案例1
- 公司B网络部分拓扑如下图所示,现公司B要求如下
- 案例1
- policy-based-route policy-name { permit | deny } node node-id
- R3、R4和R5属于OSPF区域0,仅将10.0.X.0/24引入到OSPF区域;
- 在R5上对10.0.X.0/24进行汇总,汇总为10.0.0.0/16;在R3和R4向OSPF区域下发缺省路由;
- 确保网络没有环路。
- 需求一:R3、R4和R5属于OSPF区域0,仅将10.0.X.0/24引入到OSPF区域
- 该部分只需要注意R5在做路由引入时,需要精细匹配
- 需求二:在R5上对10.0.X.0/24进行汇总,汇总为10.0.0.0/16;在R3和R4向OSPF区域下发缺省路由
- 当tracert一个不存在的、但是在网络10.0.0.0/16内的地址时,会发生环路。
- 该环路的产生主要是由于OSPF产生汇总路由时,不自动生成指向null0的路由所致
- 需求三:确保网络没有环路
- 在R5上通过命令配置指向null0的静态路由,即可破除环路
- 案例2
- 公司B网络在原有配置的基础上对网络进行了扩充,需求如下
- IS-IS基本配置已完成;
- 结合filter-policy,将172.16.0.0/24和172.16.2.0/24引入到IS-IS中;
- 在R3和R4上进行路由相互引入,充分避免环路,并消除次优路由;
- 16.0.0/24网络访问OSPF网络经由S1/0/0, 172.16.0.2/24网络访问OSPF网络经由S1/0/1。
- 预配:IS-IS基本配置已完成
- 需求一:结合filter-policy,将172.16.0.0/24和172.16.2.0/24引入到IS-IS中
- 通过filter-policy结合ACL,将需求中指定的两个网段导入到ISIS协议中
- 注意,当使用filter-policy过滤路由协议的导入的时候,使用export方向
- 需求二:在R3和R4上进行路由相互引入,充分避免环路,并消除次优路由
- l案例中通过在导入路由的时候给路由条目加Tag的方法防止出现路由环路。
- ISIS路由协议如果需要支持Tag,必须要使用wide类型的开销,否则ISIS路由不能携带Tag标记。
- 使用Tag标签防止了路由回环,但是不能防止次优路由的产生。
- 如果要避免次优路由,需要修改相应路由的preference值。
- 本例中的配置将避免路由0.0.0/16在R3/R4上出现次优路由。
- 因为导入速度的不一致,总会导致R3/R4两台路由器中的一台会从ISIS和OSPF同时学到10.0.0.0/16,如果R3先行导入,那么R4就会同时从ISIS和OSPF学到10.0.0.0/16路由,而R4选择路由时会比较他们的preference,因OSPF外部路由的preference值为150,而isis的preference值为15,所以R4会选择到达经由IS-IS域到达网络10.0.0.0/16,该路径是次优路径。
- 所以,通过在R4上,修改OSPF外部路由10.0.0.0/16的preference值,使其小于IS-IS的preference值,从而消除次优路径,考虑合理性,建议OSPF的外部路由preference值要大于OSPF的内部preference值(10)。
- 需求三:16.0.0/24网络访问OSPF网络经由S1/0/0, 172.16.2.0/24网络访问OSPF网络经由S1/0/1
- 思考题
- 路由控制都包括哪些内容(ABCD)
- 路由的发布
- 路由的接收
- 过滤和控制引入的路由
- 设置特定路由的属性
- 前缀列表:ipip-prefixPrefix1 permit 160.0.0.0 8 的含义是( D )
- 前缀的前三个比特必须为”101″,掩码长度必须在8和32之间
- 前缀的前三个比特必须为”101″,掩码长度必须为8
- 前缀号必须为”160″,掩码长度必须在8和32之间
- 前缀号必须为“160”,掩码长度必须为8
- 以下关于Route-Policy路由策略特性的描述,哪些是正确的( AB )
- 由If-match或If-match+apply语句构成
- Route-Policy路由策略可以有多个不同的节点,只要满足其中一个节点中的所有条件,这条路由就可以被匹配
- Route-Policy路由策略可以有多个不同的节点,只要满足其中一个节点中的某一个条件,这条路由就可以被匹配
- 如果匹配了Route-Policy路由策略的第一个节点并且被deny掉,那么如果能够同时匹配第二个节点的话,那么也将会执行第二个节点所定义的动作
- 总结
- ACL
- IP-Prefix
- As-Path-Filter
- Community-Filter
- 路由策略
- 策略路由
- 路由控制都包括哪些内容(ABCD)