策略路由,即PBR(Policy-Based Routing),与传统的基于IP报文目标地址,查找路由表进行转发不同,它可以依据用户自定义的策略进行报文转发。这个自定义的策略,可以根据报文的来源、应用、协议以及报文长度等特征来进行定义。报文完全可以只根据PBR进行转发,而和路由表无关。因此,策略路由给组网提供了极大的灵活性。
和策略路由概念容易混淆的是路由策略。路由策略是通过修改特定路由的相关属性,进而对路由的学习,发布等进行控制。
路由策略的核心本质是通过控制路由表来进行报文转发的控制。而策略路由是根据被转发报文的报文本身特征来进行转发控制。
a) 强策略路由和弱策略路由
根据在策略路由下一跳失效的情况下,对匹配策略路由的报文处理方式的不同,我们常把策略路由分为两种实现方式,称之为强策略路由和弱策略路由。
弱策略路由方式的PBR转发流程如下:
报文进入设备后:
Ø 优先按照策略路由转发,如果不匹配策略路由设定匹配条件,则按照正常路由表转发。如果有路由表匹配,按照路由表下一跳进行转发,否则丢弃报文。
Ø 如果匹配了策略路由设定的匹配条件,则按照策略路由设定的下一跳进行转发。如果下一跳不可达,则按照正常路由转发。
Ø 如果有路由表匹配,按照路由表下一跳进行转发。如果没有路由表匹配,查询策略路由是否设置了缺省下一跳,如果设置了,按照缺省下一跳进行转发;如果没有设置,丢弃报文。
从以上报文转发的步骤看出,弱策略路由的实现方式特点是:当策略路由配置的下一跳不可达时,匹配了策略路由匹配条件的报文仍然可以查找路由表进行转发。
强策略路由方式的PBR转发流程如下:
从以上流程图看出,强策略路由的实现方式特点是:当策略路由配置的下一跳不可达时,匹配了策略路由匹配条件的报文被直接丢弃,不能再进行路由表的查询转发。
强弱策略路由在实际中的使用是通过配置策略路由的不同参数来区分的。
举例:
[H3C-behavior-1] redirect {interface interface-type interface-number | next-hop { ipv4-add1 [ ipv4-add2 ] } [ fail-action { discard| forward } ] }
其中discard参数意味着是强策略路由,forward参数意味着是弱策略路由。
b) 本地策略路由和接口策略路由
根据策略路由作用对象的不同,分为本地策略路由和接口策略路由。其中本地策略路由的作用对象是设备本身产生的报文,比如说设备的管理报文;接口策略路由作用的对象是接口接收到的报文,比如说需要该设备进行转发的报文。
本地策略路由和接口策略路由在实际中的使用,是通过配置的位置不同而区分开的。在全局模式下下发的策略路由,是本地策略路由;在接口上下发的策略路由,是接口策略路由。
c) 前策略路由和后策略路由(缺省策略路由)
根据策略路由和路由表中明细路由的匹配顺序不同而分为前策略路由和后策略路由。前策略路由就是我们大多数情况下所谈到的策略路由,它的优先级在查询路由表之前。后策略路由很少用到,他的匹配顺序是先匹配路由表中的明细路由表,如果没有明细路由表,则后策略路由生效。请参考以下转发流程图:
前策略路由和后策略路由在实际中的使用,是通过配置策略路由下一跳是否增加default参数来区分开的。
举例:
[H3C-pbr-permit-10] apply ip-address default next-hop [ vpn-instance vpn-instance-name ] ip-address [track track-entry-number ] [ ip-address [ track track-entry-number] ]
其中default参数意味着是后策略路由,不配置default参数意味着是前策略路由。
通常我们都认为下一跳失效的判断条件为下一跳是否可达,但实际上设备在实现上并没有探测下一跳是否可达的机制(除非使用额外的辅助技术,如BFD、NQA等),因此设备只能根据自身的各种因素进行判断。下面我们分两种情况进行讨论。
1.首先我们讨论下一跳是直连网段地址的情况。
设备判断下一跳是否可达的条件是ARP,只要存在正确的对应下一跳地址的ARP表项,则策略路由认为下一跳可达。值得一提的是,如果配置静态ARP,则需要同时配置对应VLAN和出接口,此时策略路由才认为下一跳可达。
2.我们再来讨论下一跳是非直连网段地址的情况
对于非直连网段的下一跳地址,设备可以进行路由迭代,即针对下一跳地址查找路由表,如果能匹配到路由,则认为策略路由下一跳可达。如果没有匹配到任何路由,或者只能匹配缺省路由,则认为策略路由下一跳不可达。如果没有匹配到任何路由,则认为策略路由下一跳不可达。
对于第一种情况,即下一跳是直连网段地址的情况,如果直连的三层接口down,即路由表中的直连路由消失,这时候则使用非直连的情况来判断下一跳是否可达。如果我们希望如果直连三层接口down,就认为下一跳不可达,不希望进行下一跳的路由迭代,则需要在策略路由中配置direct参数。
举例:
[H3C-pbr-permit-10] apply ip-address next-hop [ vpn-instance vpn-instance-name ] ip-address1 [ direct ] [ track track-entry-number ] [ ip-address2 [ direct ] [ track track-entry-number ] ]
常见的策略路由配置方式(实现方式)有两种,一种是通过配置policy-based-route的方式,在该policy中配置匹配的ACL,以及对应的下一跳。这种方式是传统的实现方式,我们也称之为IP PBR。另一种方式是通过配置QoS Policy。在traffic class中匹配报文,在traffic behavior中应用重定向动作,在QoS policy中将两者关联起来,最后再在相关接口上下发。这种方式,我们也称之为QoS PBR。
两种配置方式实现的功能也有所差异,决定了他们应用的场景也有所不同,他们的主要功能差异如下:
Ø IP PBR方式策略路由只支持指定具体下一跳地址,不支持配置将报文重定向至指定接口,QoS PBR方式策略路由支持;
Ø IP PBR方式策略路由支持配置缺省下一跳功能(后策略路由),QoS PBR方式策略路由不支持后策略路由;
Ø IP PBR方式下的配置只对三层转发报文生效,必须应用到三层逻辑接口上;QoS PBR方式策略路由对二、三层转发报文均生效,需要应用到物理接口上;
Ø IP PBR方式策略路由下一跳支持路由迭代,可以通过命令限制其为直连下一跳;但QoS PBR方式策略路由要求所配置下一跳必须直连;
目前中国电信开展的移动互联网业务发展迅猛, ctwap业务采用给用户分配私网地址的方式访问电信自有增值业务及互联网业务。由于C网用户分配私有地址,10.2.0.0-10.198.255.255,共199B,对每个省新老用户地址池地址空间不重叠,中国电信开启ctwap手机上网NAI融合之后,ctwap私网地址也能上公网,原有的用户私有地址空间已经不能满足全国业务的发展,多个省份已经出现私网地址紧缺的情况,需要研究各省ctwap用户复用10网段私网地址方案。
H3C公司提供的融合承载网元方案,采用IRF技术,实现融合承载网元双机框高可靠性的部署。同时采用NAT业务单板插卡的方式,实现整机容量的灵活扩容。
NAT业务板卡成对使用,每对板卡分别插在两个机框上,会话同步,相互备份。因为C网NAT的大业务量的特点,通常融合承载网元上会配置多对NAT插卡,业务流量在多对NAT插卡上的负载分担原则通常采用两个方案:ECMP或策略路由。
ECMP存在两个弱点:一是负载均衡算法使用设备自身的Hash算法,在某些特定环境下可能存在负载分担不均衡的情况;二是不同的流量分担到哪对NAT板上难以确定,和业务没有直接对应关系,在后续维护时排错比较困难。
因此大量的应用开局都使用了策略路由。那么使用IP PBR还是使用QoS PBR呢?我们推荐使用IP PBR,因为IP PBR直接应用到vlan虚接口上,配置比较方便;而QoS PBR需要配置到各个物理接口上,配置麻烦,维护不便。
配置举例如下(仅包括策略路由部分):
acl number 3000 name TO-NAT1
rule 0 permit ip source 10.48.0.0 0.0.255.255
policy-based-route TO-CDMA-PI3 permit node 10
if-match acl 3000
apply ip-address next-hop 192.168.3.1
interface Vlan-interface3003
description TO_CDMA-PI3_CE7
ip policy-based-route TO-CDMA-PI3
互联网数据中心(Internet Data Center)简称IDC。就是运营商利用已有的互联网通信资源,建立标准化的电信专业级机房环境,为个人、企业、公司、政府等提供服务器托管服务、服务器租用服务以及相关增值服务等方面的全方位服务。
部分重要客户需要IDC提供IPS(Intrusion Prevention System)增强安全保障服务。H3C公司提供的IPS插卡集成方案,采用IRF技术,实现双机框高可靠性智能部署,同时采用IPS业务单板插卡的方式,实现整机容量的灵活扩容。
组网图如下:
IPS业务板卡成对使用,每对板卡分别插在两个机框上,会话同步,相互备份。因为IDC的大业务量的特点,会配置多对IPS插卡。与NAT板卡不同的是,IPS作为二层透明转发设备,本身并不具备三层接口(带外网管接口除外),通过策略路由的方式进行引流时,无法明确指定策略路由的下一跳地址,因此只能通过使用QoS PBR方式指定下一跳接口的方式进行引流。
配置举例如下:
//上行流量分类
acl number 3000
rule 0 permit ip source 100.1.1.0 0.0.0.255
acl number 3001
rule 0 permit ip source 100.1.2.0 0.0.0.255
#
traffic classifier sip0 operator and
if-match acl 3000
traffic classifier sip1 operator and
if-match acl 3001
//下行流量匹配
acl number 3010
rule 0 permit ip destination 100.1.1.0 0.0.0.255
acl number 3011
rule 0 permit ip destination 100.1.2.0 0.0.0.255
#
traffic classifier dip0 operator and
if-match acl 3010
traffic classifier dip1 operator and
if-match acl 3011
//定义重定向至IPS插卡的流行为
traffic behavior IPS11
redirect interface Ten-GigabitEthernet1/3/0/1
traffic behavior IPS21
redirect interface Ten-GigabitEthernet2/3/0/1
traffic behavior IPS12
redirect interface Ten-GigabitEthernet1/4/0/1
traffic behavior IPS22
redirect interface Ten-GigabitEthernet2/4/0/1
//定义上行流量QoS重定向策略
#
qos policy UP
classifier sip0 behavior IPS11 //上行流量sip0报文重定向至主用IPS11
classifier sip1 behavior IPS21 //上行流量sip1报文重定向至主用IPS21
classifier sip0 behavior IPS12 //上行流量sip0报文重定向至备用IPS12
classifier sip1 behavior IPS22 //上行流量sip1报文重定向至备用IPS22
#
//定义下行流量QoS重定向策略
qos policy DOWN
classifier dip0 behavior IPS11 //下行流量sip0报文重定向至主用IPS11
classifier dip1 behavior IPS21 //下行流量sip1报文重定向至主用IPS21
classifier dip0 behavior IPS12 //下行流量sip0报文重定向至备用IPS12
classifier dip1 behavior IPS22 //下行流量sip1报文重定向至备用IPS22
#
//在SW内网接口入方向下发上行流量重定向策略
interface Ten-GigabitEthernet1/0/1
qos apply policy UP inbound
#
//在SW外网接口入方向下发下行流量重定向策略
interface Ten-GigabitEthernet1/0/3
qos apply policy DOWN inbound
#