HCIP-路由策略
路由策略与控制
概述
技术背景

R1上将业务A、B、C的网段路由引入时希望不引入业务C网段路由,同时R3上将OSPF路由引入到IS-IS中时,同样只希望引入B业务网段路由。
此时需要一个工具在引入路由时进行限制。
路由控制概述
路由控制可以通过路由策略(Route-Policy)实现,路由策略应用灵活而广泛,有以下几种常见方式:
- 控制路由的发布:通过路由策略对发布的路由进行过滤,只发布满足条件的路由。
- 控制路由的接收:通过路由策略对接受的流量进行过滤,只接收满足条件的路由。
- 控制路由的引入:通过路由策略控制从其他路由协议引入的路由条目,只有满足条件的路由才会被引入。

路由匹配工具
访问控制列表(ACL)
访问控制列表(Access Control List,ACL)是一个匹配工具,能够对报文及路由进行匹配和区分。
ACL由若干条permit或deny语句组成,每条语句就是该ACL的一条规则,每条语句中的permit或deny就是与这条规则相对应的处理动作。

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

IP前缀列表
IP前缀列表(IP-Prefix List)是将路由条目的网络地址、掩码长度作为匹配条件的过滤器,可在各路由协议发布和接收路由时使用。
不同于ACL,IP-Prefix List能够同时匹配IP地址前缀长度以及掩码长度,增强了匹配的精确度。

IP-Prefix匹配示例

基础配置命令
创建IPv4地址前缀列表
1 | 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] |
创建IPv4地址前缀列表中或增加其中一个表项。
- ip-prefix-name:指定地址前缀列表的名称。
- index index-number:只当本匹配项在地址前缀列表中的序号。
- permit:只当地址前缀列表的匹配模式为允许。
- deny:指定地址前缀列表的匹配模式为拒绝。
- ipv4-address mask-length:指定IP地址和指定掩码长度。
- greater-equal greater-equal-value:指定掩码长度匹配范围的下限。
- less-equal less-equal-value:指定掩码长度匹配范围的上限。
配置示例

单语句匹配
路由10.1.1.0/24被permit,其他都被deny。
1 | ip ip-prefix aa index 10 permit 10.1.1.0 24 |
路由全被deny。
1 | ip ip-prefix bb index 10 deny 10.1.1.0 24 |
ip-prefix与acl一样,缺省的默认动作就是拒绝。
多语句匹配
路由10.1.1.0/24被deny,路由10.1.1.1/32被permit,其他路由都被deny。
1 | ip ip-prefix aa index 10 deny 10.1.1.0 24 |
路由10.1.1.0/26,10.1.1.1/32被permit,其他路由都被deny。
1 | ip ip-prefix bb index 10 permit 10.1.1.0 24 greater-equal 26 less-equal 32 |
通配地址匹配
所有掩码长度在8到32的路由都被permit。
1 | ip ip-prefix aa index 10 permit 10.0.0.0 8 less-equal 32 |
路由10.1.0.0/16被permit,其他路由都被deny。
1 | ip ip-prefix bb index 10 deny 10.1.1.0 24 less-equal 32 |
路由策略工具
Filter-Policy
Filter-Policy(过滤-策略)是一个很常用的路由信息过滤工具,能够对接收、发布、引入的路由进行过滤,可应用于IS-IS、OSPF、BGP等协议。
如下图中R1,R2,R3之间运行BGP路由协议,路由在各个设备之间传递,当需要根据实际需求过滤某些路由信息的时候可以使用Filter-Policy实现。

Filter-Policy在距离矢量路由协议中的应用
在距离矢量路由协议中,设备之间传递的是路由信息,如果需要对这种路由信息进行某种过滤,可以使用Filter-Policy实现,出方向和入方向的生效位置如图所示。

Filter-Policy在链路状态路由协议中的应用
在链路状态路由协议中,各路由设备之间传递的是LSA信息,然后设备根据LSA汇总成的LSDB信息计算出路由表。但是Filter-Policy只能过滤路由信息,无法过滤LSA。

Filter-Policy的基础配置命令
在OSPF中的应用
按照过滤策略,设置OSPF对接收的路由进行过滤。
1 | [ospf-100]filter-policy {acl-number|acl-name acl-name|ip-prefix ip-prefix-name|route-policy route-policy-name [secondary]} import |
按照过滤策略,设置对引入的路由在向外发布时进行过滤。
1 | [ospf-100]filter-policy {acl-number|acl-name acl-name|ip-prefix ip-prefix-name|route-policy route-policy-name} export [protocol[protocol-id]] |
在IS-IS中应用
配置IS-IS路由加入IP路由表时的过滤策略。
1 | [isis-1]filter-policy {acl-number|acl-name acl-name|ip-prefix ip-prefix-name|route-policy route-policy-name} import |
配置IS-IS对已引入的路由在向外发布时进行过滤的过滤策略
1 | filter-policy {acl-number|acl-name acl-name|ip-prefix ip-prefix-name|route-policy route-policy-name} export [protocol[protocol-id]] |
在BGP中的应用
配置对接收路由信息进行过滤。
1 | [bgp-100]filter-policy {acl-number|acl-name acl-name|ip-prefix ip-prefix-name} import |
配置对发布的路由进行过滤,只有通过过滤的路由才被BGP发布。
1 | [bgp-100]filter-policy {acl-number|acl-name acl-name|ip-prefix ip-prefix-name} export [protocol [process-id]] |
配置向对等体(组)发布或从对等体(组)接收路由时的过滤策略。
1 | [bgp-100]peer {group-name|ipv4-address} filter-policy {acl-number|acl-name acl-name} {import|export} |
OSPF中使用Filter-policy
OSPF过滤五类LSA需要在始发生成外部路由的出方向进行抑制。

IS-IS中使用Filter-policy

BGP中使用Filter-policy

Route-Policy
Route-Policy是一个策略工具,用于过滤路由信息,以及为过滤后的路由信息设置路由属性。
一个Route-Policy由一个或多个节点(Node)构成,每个节点可以是一系列条件语句(匹配条件)以及执行语句(执行动作)的集合,这些集合按照编号从小到大的顺序排序。

每个节点内可包含多个条件语句。节点内的多个条件语句之间的关系为“与”,即匹配所有条件语句才会执行本节点内的动作。
节点之间的关系为“或”,route-pollicy根据节点编号大小从小到大顺序执行,匹配中一个节点将不会继续向下匹配。
Route-Policy的组成
一个Route-Policy由一个或者多个节点构成,每个节点包括多个if-match和apply子句。

permit或deny:指定Route-Policy节点的匹配模式为允许或拒绝。
node:指定Route-Policy的节点号。整数形式,取值范围是0-65535。
if-match子句:定义该节点的匹配条件。
apply子句:定义针对被匹配路由执行的操作。
Route-Policy的基础配置命令
创建Route-Policy
创建路由策略并进入Route-Policy视图
1 | [AR1]route-policy route-policy-name {permit|deny} node node-number |
配置if-match子句
1 | [AR1-route-policy]if-match ? |
配置apply子句
1 | [AR1-route-policy]apply ? |
路由控制案例
对接收的路由进行过滤
R1、R2、R3运行OSPF,R1将192.168.1.0/24、192.168.2.0/24、192.168.3.0/24和192.168.4.0/24宣告进OSPF。
现在要求R2不能访问R1上192.168.1.0/24网段。
为实现该需求,可以在R2上对接收的路由使用Filte-Policy进行过滤。

对发布的路由进行过滤
R1、R2、R3运行OSPF,R1将直连网段192.168.1.0/24、192.168.2.0/24、192.168.3.0/24和192.168.4.0/24引入OSPF。
现在要求R2、R3只能学习到191.168.1.0/24网段的路由,学习不到其他三个网段的路由。
为实现该需求,可以在R1上使用Filter-Policy对引入的路由在发布时进行过滤。

修改路由属性
R1、R2、R3运行OSPF,R1将直连网段192.168.1.0/24引入OSPF。
现在要求R2、R3学到的OSPF路由192.168.1.0/24为external-type 1路由(默认为external-type 2路由)。
为实现该需求,可以在R1上使用Route-Policy在引入路由时修改外部路由的类型为external-type 1。

双节点双向路由重发布
在边界路由器上把两个路由域的路由相互引入,称之为双向路由重发布。
两个路由域存在两个边界路由器,并且都执行双向路由重分发,此时称为双点双向路由重发布。
双电双向路由重发布是一种经典的路由模型,因单点的双向路由重发布缺乏冗余性,一旦单点的边界路由器故障,那么两个路由域之间的通信可能就会出现问题,因此在大型网络部署中一般采用双电双向路由重发布。
双点双向重发布虽然增强了网络的可靠性,但是容易引发:次优路径,路由环路等问题。

次优路径问题
以10.1.1.0/24为例:
R1将直连路由10.1.1.0/24引入到OSPF中。
R2、R3执行双向路由重发布,R2先将10.1.1.0/24重发布到IS-IS中,R3将会学习到来自R4的IS-IS路由。对R3而言,IS-IS路由(优先级15)优于OSPF外部路由(优先级150),因此优选来自R4的IS-IS路由。后续R3访问10.1.1.0/24网段的路径为:R3→R4→R2→R1,这是次优路径。

解决方案1
在R3的IS-IS进程内,通过Filter-Policy进制来自R4的10.1.1.0/24路由加入本地路由表。
在R3上执行:
1 | [R3]acl 2001 |

解决方案2
R3通过ACL匹配10.1.1.0/24路由,在Route-Policy中调用该条ACL,将匹配这条ACL的路由的优先级设置为14(优于IS-IS)。在OSPF视图下使用preference ase命令调用Route-Policy修改外部路由的优先级。
在R3上执行以下操作:
1 | [R3]acl 2000 |

路由环路问题
场景描述:
- R1将直连路由10.1.1.0/24引入到OSPF中。
- R1、R2、R3运行OSPF协议,10.1.1.0/24网段路由全在OSPF域内通告。
- R2执行了双向路由重发布。
- R2、R3、R4运行IS-IS协议,10.1.1.0/24网段路由全在IS-IS域内通告。
- R3执行了双向路由重发布。
- 10.1.1.0/24网段路由再次被通告进OSPF域内,形成路由环路。

解决方案1
在R3的OSPF中引入IS-IS路由时,通过Route-Policy过滤掉10.1.1.0/24路由。
在R3上执行以下操作:
1 | [R3]acl 2001 |

解决方案2
使用Tag实现有选择性地路由引入,在R2上将路由10.1.1.0/24从OSPF引入到IS-IS中时打上Tag 200,在R3上将IS-IS引入到OSPF中时,过滤携带Tag 200的路由。
在R2上执行的操作:
1 | [R2]route-policy hcip permit node 10 |
在R3上执行的操作:
1 | [R3]route-policy hcip deny node 10 |
在路由重发布的实际应用中,通过IP前缀进行路由匹配固然可以,但当网络规模较大时,配置工作量较大;通过Tag进行路由匹配可以极大简化配置工作量。

路由控制实验

接口IP地址,OSPF,IS-IS配置省略。
注意:is-is的开销类型要改为wide才能实现tag标签。cost-type wide
在AR5的ospf视图下引入直连路由5.5.5.5并将其开销值设置为2模拟环路的生成。
1 | [AR5]ospf |
在AR2和AR3双向引入OSPF路由和IS-IS路由。
1 | [AR2]ospf |
1 | [AR3]ospf |
AR1通过tracert可以验证环路的存在。
1 | [AR1]tracert 5.5.5.5 |
使用tag标签过滤
AR2:OSPF to IS-IS tag 100 deny tag 200,IS-IS to OSPF tag 300 deny tag 400
AR3:IS-IS to OSPF tag 200 deny tag 100,OSPF to IS-IS tag 400 deny tag 300
AR2
1 | [AR2]route-policy ospftoisis deny node 10 |
AR3
1 | [AR3]route-policy isistoospf deny node 10 |
AR1使用tracert发现环路问题已经解决。
1 | [AR1]tracert 5.5.5.5 |
解决次优路径问题
AR2
1 | [AR2]route-policy pre permit node 10 |
AR3
1 | [AR3]route-policy pre permit node 10 |
流量过滤与转发路径控制
策略路由
技术背景
在某些场景中我们希望一些特定的用户、特定业务的流量走指定的转发路径,而其余用户或业务的流量则依旧根据路由表进行转发。

PBR
基本概念
PBR(Policy-Based Routing,策略路由):PBR使得网络设备不仅能够基于报文的目的IP地址进行数据转发,更能基于其他元素进行数据转发,例如源IP地址、源MAC地址、目的MAC地址、源端口号、目的端口号、VLAN-ID等等。
用户还可以使用ACL匹配特定的报文,然后针对该ACL进行PBR部署。
若设备部署了PBR,则被匹配的报文优先根据PBR的策略进行转发,即PBR策略的优先级高于传统路由表。

结构
PBR与Route-Policy,由多个节点组成,每个节点由匹配条件(条件语句)和执行动作(执行语句)组成。
每个节点内可包含多个条件语句。
节点内的多个条件语句之间的关系为“与”,即匹配所有条件语句才会执行本节点内的动作。
节点之间的关系为“或”,PBR根据节点编号从小到大顺序执行,匹配当前节点将不会继续向下匹配。

命令语法

PBR与路由策略区别

PBR分类

PBR典型应用场景
内网防火墙旁挂部署在核心交换机,为防护内网在核心交换机的三层接口上部署PBR,将来自外部网络的流量牵引到防火墙上进行安全检查,检查完的流量再发送回核心交换机,由核心交换机依据路由表转发到内网。
将流量牵引到别的设备进行安全检查等类似的行为称为“引流”,PBR是一种常见的引流工具。

当企业存在多个网络出口时,若想指定部分网段访问Internet时的网络出口,可以使用PBR:在出口设备的内网接口配置PBR,匹配来自内网的流量,为其指定不同的下一跳公网地址。

配置介绍
创建PBR
创建策略路由和策略点,若策略点已创建则进入本地策略路由视图。
1 | [Huawei]policy-based-route policy-name {deny|permit} node node-id |
设置IP报文的匹配条件
缺省情况下,策略路由中未配置匹配条件,可以设置使用ACL匹配IP地址,也可以设置匹配报文长度。
1 | [Huawei-policy-based-route-PBR-10]if-match acl acl-number |
指定PBR中报文的接口
缺省情况下,策略路由中未配置报文出接口。配置成功后,将匹配策略点的报文从指定出接口发送出去。报文的出接口不能为以太网接口等广播型接口。
1 | [Huawei-policy-based-route-PBR-10]apply output-interface interface-type interface-number |
设置PBR中报文的下一跳
用户可以指定报文的下一跳。当该策略点未配置出接口时,匹配策略点的报文被发往指定的下一跳。
1 | [Huawei-policy-based-route-PBR-10]apply ip-address next-hop ip-address1 [ip-address2] |
全局PBR调用
1 | [Huawei]ip local policy-based-route policy-name |
接口调用PBR
1 | [Huawei-GigabitEthernet0/0/0]ip policy-based-route Policy-name |
配置案例
需求:
- 内网存在两个网段,网段1:10.1.1.0/24,网段2:10.1.2.0/24,在RTA的GE0/0/0接口部署PBR,实现网段1访问Internet通告ISP1、网段2访问Internet通过ISP2。
- RTA上旁挂了一台服务器,要求在RTA上部署的策略路由不影响内网用户访问该服务器。

配置ACL 3000,其中rule 1 deny 网段1访问服务器的流量,rule 2匹配网段1访问Internet的流量。
1 | [RTA]acl 3000 |
配置ACL 3001,其中rule 1 deny 网段2访问服务器的流量,rule 2匹配网段2访问Internet的流量。
1 | [RTA]acl 3001 |
创建PBR hcip,创建节点10,调用ACL 3000,指定其转发下一跳为202.1.2.3
1 | [RTA]policy-based-route hcip permit node 10 |
创建PBR hcip,创建节点20,调用ACL 3001,指定其转发下一跳为154.1.2.3
1 | [RTA]policy-based-route hcip permit node 20 |
在GE0/0/0接口调用PBR hcip
1 | [RTA]interface GigabitEthernet0/0/0 |
MQC
介绍
MQC(Modular QoS Command-Line Interface,模块化QoS命令行)是指通过将具有某类共同特征的数据流划分为一类,并为同一类数据流提供相同的服务,也可以对不同类的数据流提供不同的服务。
MQC包含三个要素:流分类(traffic classifier)、流行为(traffic behavior)和流策略(traffic policy)。
MQC的流行为支持重定向报文,因此可以使用MQC实现IP单薄策略路由。

流策略:将流分类的流行为绑定,对分类后的报文执行对应流行为中定义的动作。
一个流策略可以绑定多个流分类和流行为。

流分类
流分类:定义一组流量匹配规则,以对报文进行分类。流分类支持的匹配项如下所示。

流行为
流行为:用来定义执行的动作,支持报文过滤、重标记优先级、重定向、流量统计等动作。

流策略
流策略:流策略支持在接口上调用。
流策略存在方向(inbound、outbound)的概念,策略中的流行为匹配入、出方向的报文,对匹配中的报文执行相应的流动作。

配置介绍
创建分类
缺省情况下,流分类中各规则之间的关系为“或”(or)。流分类中的匹配规则配置可查阅产品手册。
1 | [Huawei]traffic classifier classifier-name [operator {and | or}] |
创建流行为
根据实际情况定义流行为中的动作,只要各动作不冲突,都可以在同一流行为中配置。流行为具体配置可查阅产品手册。
1 | [Huawei]traffic behavior behavior-name |
创建流策略
创建流策略并绑定流分类与流行为。
1 | [Huawei]traffic policy policy-name |
配置案例
需求:
- 内网存在两个网段,网段1:10.1.1.0/24,网段2:10.1.2.0/24,在RTA上通过MQC实现策略路由,实现网段1访问Internet通过ISP1、网段2访问Internet通过ISP2.
- 将MQC调用在RTA的GE0/0/0接口。

配置如下:
配置ACL 3000、3001分别匹配网段1、网段2访问Interet的流量。
1 | [RTA]acl 3000 |
创建流分类1、2分别匹配ACL3000、ACL3001。
1 | [RTA]traffic classifier 1 |
创建流行为1、2分别执行将报文重定向到202.1.2.3、154.1.2.3的动作。
1 | [RTA]traffic behavior 1 |
创建流策略Redirect,将流分类1、2与流行为1、2一一绑定。
1 | [RTA]traffic policy Redirect |
在GE0/0/0接口入方向调用流策略Redirect
1 | [RTA]interface GigabitEthernet0/0/0 |
流量过滤
为提高网络安全性,管理人员需要控制进入网络的流量,将不信任的报文丢弃在网络边界。所谓的不信任报文是指对用户来说存在安全隐患或者不愿意接收的报文。同时保证数据访问安全性,企业网络中经常会要求一些部门之间不能相互访问。

流量过滤工具

Traffic-Filter部署位置
使用Traffic-Filter过滤流量可以灵活地选择部署位置,在流量进入设备或者离开设备的接口上执行过滤动作,双向访问的业务禁止其中一个方向即可实现阻断业务的需求。

使用Traffic-Filter过滤流量

RTA配置如下:
配置ACL拒绝部门2访问部门3,并放行其余所有流量。
1 | [RTA]acl 3000 |
在GE0/0/2接口调用Traffic-Filter
1 | [RTA]interface GigabitEthernet0/0/2 |
使用MQC过滤流量

RTA配置如下:
配置ACL匹配部门2访问部门3的流量
1 | [RTA]acl 3000 |
创建流分类2_3、流行为2_3
1 | [RTA]traffic classifier 2_3 |
为匹配ACL规则的报文指定报文过滤动作时,如果此ACL中的rule规则配置为permit,则设备对此报文采取的动作由流行为中配置的deny或permit,则设备对此报文采取的动作由流行为中配置的deny或permit决定;如果此ACL中的rule规则配置为deny,则无论流行为中配置了dney或permit,此报文丢弃。
创建流策略,绑定流分类2_3与流行为2_3
1 | [RTA]traffic policy 2_3 |
在接口GE0/0/1入向调用流策略2_3
1 | [RTA]interface GigabitEthernet0/0/1 |


