Network 策略路由PBR

传统路由的缺陷

传统 IP 路由的概念,所谓的路由,指的是当路由器(或其他支持路由功能的网络设备〉收到一个 IP报文时,在其路由表中查询该报文的目的 IP 地址,在找到最匹配的路由表项后,按照该表项所指示的出接口及下一跳 IP 地址转发该报文从这个描述可以看出,路由行为只关心报文的目的IP地址,而并不关心其源 IP 地址当面对一些特殊的需求时,传统的路由行为是存在短板的。

路由策略和策略路由的区别

名称操作对象描述
路由策略路由信息路由策略是一套对路由信息进行过滤,属性设置等操作的方法,通过对路由的操控,来影响数据报文的转发路径。
策略路由数据报文PBR直接对数据报文进行操作,通过多种手段匹配感兴趣的报文,然后执行丢弃或者强制转发路径等操作。

策略路由的分类

本地策略路由:本地策略路由仅对本机下发的报文进行处理,对转发的报文不起作用。

接口策略路由:接口策略路由只对转发的报文起作用,对本地下发的报文(比如本地的Ping报文)不起作用。接口策略路由通过在流行为中配置重定向实现,只对接口入方向的报文生效。缺省情况下,设备按照路由表的下一跳进行报文转发,如果配置了接口策略路由,则设备按照接口策略路由指定的下一跳进行转发。

智能策略路由:智能策略路由SPR(Smart Policy Routing)是基于业务需求的策略路由,通过匹配链路质量和网络业务对链路质量的需求,实现智能选路。

策略路由的应用

一、本地策略路由

路由器有两条链路与外部网络连接。当需要对路由器本身产生的报文进行策略路由时,就需要配置本地策略路由。

二、接口策略路由

  • 基于源地址选路:可以指定内网中一些特定的用户使用高速链路,而普通用户使用低速链路。在RouterA上定义一条策略路由,并且定义路由规则和动作,例如可以在Interface3上使能策略路由。使得所有从Interface3接收的源地址为10.110.0.11/24的PC1的报文通过Interface2发送,而其他的报文可以基于目的地址的方法转发。
  • 根据服务级别选路:对于不同服务要求(如:传送速率、吞吐量以及可靠性等)的数据,根据网络的状况进行不同的路由。如:指定语音与视频等应用使用带宽大的线路,数据应用使用带宽小的线路。假设从Interface1发送报文的线路带宽大,Interface2发送报文的带宽小,则可以在RouterA的Interface3上使用策略路由,使得语音和视频数据通过Interface1发送,数据应用的数据通过Interface2发送,从而满足不同的服务要求。

三、智能策略路由

策略路由的配置步骤

1、配置接口策略路由

配置接口策略路由可以将到达接口的三层报文重定向到指定的下一跳地址。

MQC 包含三个要素
流分类 (Traffic Classifier) 、流行为 (Traffic Behavior) 和流策略 Traffic Policy) ,基本
的思路是,使用流分类来匹配具有共同特征的流 ,使用流行为定义所要执行的动作
然后通过流策略将前面定义好的流分类与流行为进行绑定,最后将流策略应用到设备上,
从而实现”针对特定的流量执行特定的动作”这一目标。

(1)首先创建 ACL3 001 ,使用该 ACL 匹配 192.168. 1. 0/24 用户发往 Server 的流量,
再创建 ACL3002 ,使用该 ACL 匹配 192.168.2.0/24 用户发往 Server 的流量
(2) 然后定义两个流分类:c1及 c2 ,分别调用 ACL3001 ACL3002
(3)接着定义两个流行为: bel be2 ,分别配置将报文重定向到 10.1.13.1,10.1.23.2
(4) 再定义一个流策略 mypolicy ,将流分类 cl 与流行为 bel 绑定,将流分类 c2
与流行 be2 绑定。
(5) 最后将流策略 mypolicy 应用在 GEO/O/O 口的入方向

实验拓扑

配置

R1、R2、R3、SW2 使用OSPF 发布 10.1.21.0、10.1.22.0、10.1.13.0、10.1.23.0、10.1.1.0

Sw1、R3 之间使用静态路由。

配置两条默认路由,分别指向两台出口设备

[R3]ip route-static 0.0.0.0 010.1.13.1
[R3]ip route-static 0.0.0.0 010.1.23.2

配置两个 ACL.分别用于匹配源地址段 192.168. 1. 0/24 92. 168.2.0/24 发往 Server 的流量

[R3]acI3001
[R3-acl-adv-3001]rule pennit ip source 192.168.1.0 0.0.0.255 destination 10.1.1.0 0.0.0.255
[R3 -acl-3001 I]quit
[R3]acl3002
[R3-acl-adv-3002]rule perrnit ip source 192.168.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255
[R3-acl-adv-3002]quit

配置两个流分类,在这两个流分类中分别调用已经定义好两个的 ACL:

[R3]traffic classifi cl
[R3 -cl sifier-c l]if-match acl 3001
[R3-classifier-c l]quit
[R3] classifier c2
[R3 -cl sifier-c2]iιmatch acl 3002
[R3-classifier-c2]quit

定义两个流行为,分别设置重定向的下一跳 IP 地址为 RI 及R2:

[R3 ]traffic behavior be 1
[R3-behavior-bel]redirect ip-nexthop 10.1.13.1
[R3-behavior-be 1 ]quit
[R3 ]traffic behavior be2
[R3-behavior-be2]redirect ip-nexthop 10.1.23.2
[R3-behavior-be2]ψit

定义一个流策略,将上述流分类与流动作进行绑定:

[R3]traffic policy mypolicy
[R3-traffic policy-mypolicy]classifier c1 behavior bel
[R3-trafficpolicy-mypolicy ]c1 sifier c2 behavior be2

将定义好的流策略应用在R3的 GEO/O/O 接口的入方向

[R3]interface GigabitEthernet 0/0/0
[R3-Gigabit0/O/O]traffic-policy mypolicy inbound

如此一来,当R3在 GEO/O/O 接口上收到流量时,由于该接口入方向应用了流策略,
因此 PCl 访问 Server 的流量会被强制转发给 Rl,而 PC2 访问 Server 的流量会被强制转
发给R2,至于其他流量(例如内网可能还存在 192 .1 68. 1. 0/24 192.168.2.0/24 之外的其
他网段)并不匹配流策略中的任何一个流分类,因此这些流量将按照传统 IP 路由的方式,
通过查询路由表进行转发。

再考虑 一下网络发生故障的情况。当 Rl 发生故障时, R3 将立即感知到该故障的发生,其连接 Rl 的接口状态会变成 Down ,这使得使用该接口作为出接口的默认路由立即失效,与此同时, bel 这个流行为也将失效,因为该流行为所定义的下一跳 IP 地址己经失效。此时当 PCl 访问 Server 时,上行流量到达 R3 后, R3 将依据路由表对这些报文进行转发,最终它将根据下一跳为R2的默认路由将报文转发给R2,因此 PCl 发往 Server 的流量可以在 Rl 发生故障时自动切换到R2 。R2发生故障时同理。

上述测试时请使用R1 G0/0/0 ,R2 G0/0/1 口模拟测试故障。

Network 路由策略在双点双向路由重分发场景中的应用

单点路由重分发是指的是在2个路由域之间的一台边界设备上执行路由重分发的场景,这种场景相对简单,缺乏冗余性,一旦边界设备上发生故障,那么譔设备所连接的2个路由域通信就中断了。

双向重分发的场景中存在两台边界设备,而且这两台设备都执行了路由重分发的操作。

双点双向路由重分发虽然增强了网络的可靠性,但是在双点(两台边界设备)上执行双向路由重分发后,次优路径、路由环路及路由倒灌等问题是非常容易被引发的。

配置完常规的路由重分发,观察R4去往1.1.1.1的路由,下一跳只出现了R2/R3其中的一台 ?

到达 OSPF 域的路由 192 168.12.0/24 192.168.13.0/24 的确是出现了等价负载分担,这属于正常。

从以上输出可以看出 R3 的路由表中1.1.1.0/24 路由竟然来源于RIP ,这显然是有问题的,因为这条路由是在 OSPF 中发布的, R3 达该目标网段,理应优选 OSPF 路由,下一跳应该是 Rl 才合理。

然而此时 R3 的路由表中该条路由却是来源于R1 ,而且下一跳为 R4 ,这就出现了次优路径现象一R3 转发到达1.1.1.0/24 的数据时,使用的转发路径为 R4-R2-Rl 。为什么会出现这样的现象?为什么只有1.1.1. 0/24 这条 OSPF 外部路由才会出现这样的现象?

在华为的数通产品上, R1 由的优先级值是 100 OSPF 路由有两个优先级,其中内部路由的优先级值为 10 ,外部路由则为 150 。

双点双向路由重分发是一个经典的课题,这种类型的网络很容易出现路由环路或者
次优路径问题。解决的方法也是多种多样的,解决方案的核心思想是在R2及R3上,将1.1.1.0/24 这条 OSPF 外部路由的优先级值调节得比RIP路由的优先级值更小(例如调整为 99)

R1 dis current-configuration
[V200R003C00]
#
sysname R1

acl number 2000
rule 5 permit source 1.1.1.0 0
#
interface GigabitEthernet0/0/0
ip address 192.168.12.1 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.13.1 255.255.255.0

interface LoopBack0
ip address 1.1.1.1 255.255.255.0
#
ospf 1 router-id 1.1.1.1
import-route direct route-policy hcnp
area 0.0.0.0
network 192.168.12.0 0.0.0.255
network 192.168.13.0 0.0.0.255
#
route-policy hcnp permit node 10
if-match acl 2000

R2 配置

sysname R2

acl number 2000
rule 5 permit source 1.1.1.0 0


interface GigabitEthernet0/0/0
ip address 192.168.12.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.24.2 255.255.255.0
#
interface GigabitEthernet0/0/2

#
ospf 1 router-id 2.2.2.2
import-route rip 1
preference ase route-policy hcnp 150
area 0.0.0.0
network 192.168.12.0 0.0.0.255
#
rip 1
undo summary
version 2
network 192.168.24.0
import-route ospf 1
#
route-policy hcnp permit node 10
if-match acl 2000
apply preference 99

#
R3 的配置

sysname R3

#
acl number 2000
rule 5 permit source 1.1.1.0 0
#

#
interface GigabitEthernet0/0/0
ip address 192.168.13.3 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.34.3 255.255.255.0

#
#
ospf 1 router-id 3.3.3.3
import-route rip 1
preference ase route-policy hcnp 150
area 0.0.0.0
network 192.168.13.0 0.0.0.255
#
rip 1
version 2
network 192.168.34.0
import-route ospf 1
#
route-policy hcnp permit node 10
if-match acl 2000
apply preference 99

#

R4 的配置

sysname R4
#

interface GigabitEthernet0/0/0
ip address 192.168.24.4 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.34.4 255.255.255.0

rip 1
undo summary
version 2
network 192.168.24.0
network 192.168.34.0
#


Network 路由策略(Router Policy)

定义

路由策略主要实现了路由过滤和路由属性设置,通过改变路由属性设置来改变网络流量经过的路径。

路由策略并非单一的路由协议,而是一个技术专题或者方法论。

目的

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

  • 控制路由的接收和发布,只发布和接收必要、合法的路由信息,以控制路由表的容量,提高网络的安全性。
  • 控制路由的引入(路由的重分发),在一种路由协议引入其它路由协议发现的路由信息丰富自己的路由信息时,只引入一部分满足条件的路由信息。
  • 设置特定路由的属性修改通过路由策略过滤的路由的属性,满足自身需要。

实例

route-policy hcie permit node 10

if-match 1

if-match 2

apply 3

route-policy hcie permit node 15

if-match x1

if-match x2

apply y1

route-policy hcie permit node 20

if-match x3

apply y2

路由策略的名字根据需要自己定义。这些if-match 语句之间是与的关系,也就是所有的if-match语句必须同时满足,也就例外的情况:

匹配模式

  • Permit: 指定该节点的匹配模式为允许。如果路由匹配的结果是满足该节点的所有
    if match 语
    句,则该路由被视为允许通过,该节点的 apply 语句将被执行,且不再进
    入下一个节点:如果该节点中有 if-match 语句不满足,则进入下一个节点继续匹配。
  • Deny: 指定节点的匹配模式为拒绝。如果节点的匹配模式为 deny ,则该节点的
    apply 语句将不被执行
    。如果路由匹配的结果是满足该节点的所有 if-match 语句,那么
    Route-Policy 的匹配过程立即结束,不会再进入下一个节点,而且满足该节点条件的路
    由被视为拒绝通过。如果该节点下有 if-match 语句不满足,则进入下 个节点继续匹配。
  • 值得注意的是, Route-Policy 用于路由匹配时,被匹配对象(也就是路由条 目)必须满足 个节点中的所有 if-match 语句,才被认为匹配该节点。如果某条路由没有被Route-Policy 的任何节点匹配,则该路由被视为拒绝通过该 Route-Policy ,也就是说,Route-Policy 的末尾隐含着一个类似拒绝所有的节点。当然,为了避免所有的路由都被拒绝通过,一个 Route-Policy 中必须至少有一个节点的匹配模式为 permit.

路由策略配置任务概览

1、先配置过滤器:路由策略过滤器包括访问控制列表、地址前缀列表、AS路径过滤器、团体属性过滤器、扩展团体属性过滤器和RD属性过滤器。路由策略的过滤器不仅可以在路由策略的if-match子句中使用,还可以在特定情况下单独使用。

2、配置路由策略

3、配置策略生效时间(一般立即生效)

以下是一些常用的 if-match 命令、Apply 子句。


匹配 ACL:
if-match acl { acl-number | acl-name }
匹配 IP 前缀列表:
if-match ip-prefix ip-prefix -name
匹配路由的度量值
if-match metric metric
匹配路由的出接口
if-match interface G0/0/1
匹配路由的标记
if-match tag tag

在route-policy视图下,使用 apply 命令指定需执行的动作,这些动作主要是对所匹配的路由的某些属性进行修改,例如修改路由的度量值、优先级值、标记等。
以下是一些常用的 apply 命令。
设置路由的度量值:
apply cost [ + | -] cost
设置路由的度量值类型:
设置 IS-IS 的度量值类型: apply cost-type { external | internal }
设置 OSPF 的度量值类型: apply cost-type { type-l | type-2 }
设置路由的下一跳地址:
apply ip-address next-hop { ipv4-address | peer-address }
设置路由的优先级
apply preference preference
设置路由的标记:
apply tag tag
一个节点中可以不包含任何 apply 语句,此时该节点只被用于执行路由过滤,而不用于设置路由的属性。

举例 在引入直连路由时调用路由策略

需求:

Rl 及R2 在各自的 GEO/O/O 接口上激活 OSPF AreaO内建立邻接关系。 Rl 还有另外 3个直连接口,这 个接口并没有使用 network 命令激活OSPF 。为了让 OSPF 域内的路由器能够学习到 Rl GE0 /0/1 GE0/0/2 接口的路由(且路由的度量值为 20) ,就需要在 Rl 上将直连路由引入 OSPF ,但是这样一来, Rl 所有的直连路由都会被引入,这显然并非我们期望看到的结果.

R1配置

acl 2000

rule permit source 10.0.1.0 0.0.0.0

rule permit source 10.0.2.0 0.0.0.0

quit

创建一个路由策略,名字为hcie 同时配置一个节点,节点编号为10

route-policy hcie permit node 10

在节点10定义一个apply 语句,设置路由度量值为20

if-match acl 20

apply cost 20

quit

配置OSPF

ospf 1

area 0

network 10.1.12.0 0.0.0.255

quit

import-route direct route-policy hcie

ospf 路由过滤为什么只能在in 方向(不绝对)

“哈哈,这个问题问得好,这和OSPF的LSA有关系。OSPF在发送区域内路由的时候,是把路由放在LSA-1中放出去的,LSA-1里放的可不只是路由啊,所以发送时无法过滤路由。而收取路由的时候,收到LSA-1以后是先计算SPF,再查看路由表,正好就有机会查看分发列表去决定收取那些路由。”

所以,OSPF区域内路由过滤时,只能用于in方向。

Network VLan与Trunk

VLan

1、Vlan 的出现帮忙解决了广播域过大的问题

2、在不同的vlan内报文传输相互隔离,vlan 标签(Tag)是什么时候打上的?做了Vlan的划分后是怎么抑制广播报文的?

3、PC 无法处理带标签的报文,正常的报文发送到以太网称为以太网帧,也叫UnTagged帧,是谁给UnTagged帧贴上标签的?打上(去掉)标签是由直连的交换机操作的,加了vlan 标签的帧称为802.1Q帧。0x8100

4、VLAN ID 是12位的0~4095 可用的Vlan 是1~4094 .

5、没有Vlan Tag时 数据帧根据MAC 地址转发,打上Vlan Tag后会根据Tag 转发。

6、 Vlan 划分 :基于主机的MAC、基于交换机端口、基于子网、基于协议、基于策略

7、PVID 也就是默认没有划分VLAN 时交换机的接口ID也叫做缺省的VLAN ID ;大多厂商出厂设置为1 的PVID .每个端口只能有一个Pvid (缺省VLAN ID)

8、以太网交换机二层接口类型:Access 、Trunk、Hybrid Hybird口是access 口和Trunk的结合,可以选择Access,也可以是Trunk .

Access 口会将收到的数据做一个判断 ,如果和Access 接口的VlanID 相同则接受,不同则丢弃,发送同理。

9、Hybrid 混合接口通过 Untagged 列表与 Tag列表决定是否要不要脱标签。

10、Vlan 1 通常是不使用的,默认作为管理VLAN

Trunk

解决了相同VLAN 跨交换机访问的问题

不同的VLAN 经过Trunk时,会被打上VLAN tag用于区分不同的VLAN

路由器、防火墙物理接口、终端(PC,Server)的网卡不识别带VLAN TAG的数据帧,所以要求交换机上连接这些设备的接口必须配置成Access链路;而交换机与交换机之间互联,交换机与路由器子接口、防火墙子接口之间的互联链路要设置Trunk 链路。

vlan 间的通信一般使用三层交换

Trunk \ Vlan端口划分查看

dis port vlan

Trunk的配置

port link-type trunk

port trunk allow vlan 11 to 19