本期案例中,强叔将为大家介绍一种多出口的智能选路方案――智能选路最小时延方案


为了让大家能理解这个新方案,先简单对比一下多出口场景下的几种方案:

  • 最常用的路由选路方案,如通过BGP属性、路由策略等。这种方式通常是考虑如何从哪条链路转发,无法实际的控制每条链路的流量带宽,更不会从用户的角度考虑选择哪条链路转发效果最佳。所以对一些有链路带宽和用户体验要求的场景难以实现。

  • UCMP(Unequal cost multi-path)方案(高端防火墙V300R001C20之前的版本),提供下面两种工作模式:

 

这两种模式在一定程度上解决了链路带宽利用率等问题,但是无法保证用户流量所选择的链路是最优的链路,且流量是按照一定的比例机械的分配到每条链路转发,不够智能。

为此,高端防火墙V300R001C20版本新增了一种更智能的选路方案——智能选路最小时延方案。这种方案是指在多出口环境下,防火墙智能的选择时延最小的链路转发流量。模拟测试如下:

 

 此组网中,防火墙作为出口网关部署在网络出口位置,并从ISPA、ISPC分别获得一条链路连接到外网。右侧模拟组网中LOOPBACK1代表服务器A,R1表示内网用户,R2是为了增大链路时延而增加的一台设备,方便组网模拟。现在防火墙上给出智能选路的基本配置(安全策略等配置略),如下:

1、配置接口地址并加入安全区域

# 配置GigabitEthernet 1/1/1的IP地址,并加入安全区域。

[USG9000] interface GigabitEthernet 1/0/1

[USG9000-GigabitEthernet1/1/1] ip address 201.1.1.1 255.255.255.0

[USG9000-GigabitEthernet1/1/1] quit

[USG9000] firewall zone name isp1

[USG9000-zone-isp1] add interface GigabitEthernet 1/1/1

[USG9000-zone-isp1] quit

# 配置GigabitEthernet 1/1/3的IP地址,并加入安全区域。

[USG9000] interface GigabitEthernet 1/1/3

[USG9000-GigabitEthernet1/1/3] ip address 203.1.1.1 255.255.255.0

[USG9000-GigabitEthernet1/1/3] quit

[USG9000] firewall zone name isp3

[USG9000-zone-isp3] add interface GigabitEthernet 1/1/3

[USG9000-zone-isp3] quit

2、配置等价缺省路由,智能选路功能是建立在等价路由的基础上配置的,有多少个出口,就需要配置多少条等价路由,本例为两条。

[USG9000] ip route-static 0.0.0.0 0 201.1.1.2

[USG9000] ip route-static 0.0.0.0 0 203.1.1.2

3、配置智能选路功能

# 配置智能选路的工作模式为最小时延模式。

[USG9000] ucmp group ucmp1 mode proportion-of-intelligent-control

# 配置智能选路的掩码长度为28――请小伙伴们思考为什么配置这个掩码长度?

[USG9000] ucmpgroup ucmp1 intelligent-control-mask 28

# 配置GigabitEthernet1/1/1加入UCMP1组,设置针对远端主机健康检查的源IP地址为201.1.1.1

[USG9000] interface GigabitEthernet 1/1/1

[USG9000-GigabitEthernet1/1/1] ucmp-group ucmp1

[USG9000-GigabitEthernet1/1/1] healthcheck source-ip 201.1.1.1――为什么配置健康检查源地址

[USG9000-GigabitEthernet1/1/1] quit

# 配置GigabitEthernet1/1/3加入UCMP1组,设置针对远端主机健康检查的源IP地址为203.1.1.1。

[USG9000] interface GigabitEthernet 1/1/3

[USG9000-GigabitEthernet1/1/3] ucmp-group ucmp1

[USG9000-GigabitEthernet1/1/3] healthcheck source-ip 203.1.1.1

[USG9000-GigabitEthernet1/1/3] quit

配置完成后,我们在R1上ping LOOPBACK1的地址210.1.1.1,发现可以ping通。

 

此时在防火墙上使用display firewall session table命令,查看会话表,显示如下:

 

会话表中有三条会话,除了从R1上ping LOOPBACK1的地址210.1.1.1产生的icmp ×××: public --> public 20.1.1.11:44098 --> 210.1.1.1:2048这条会话外,还发现其它两条icmp会话。为什么会出现这两条会话?这就是智能选路功能的关键之处。

智能选路功能配置生效后,会对远端目的地进行探测,探测从哪条链路转发时延最小,详细过程如下:

1、 当用户访问外网的报文到达防火墙后,防火墙首先查找报文中的目的IP地址。

2、 查找到报文的目的IP后,防火墙会从每条出口链路发送ICMP报文对这目的地址进行探测,通常是每条链路发送4个ICMP报文。发送ICMP报文的源地址为配置的健康检查的源IP地址(一般为出接口地址),目的地址为用户报文的目的IP地址。所以本例中防火墙上出现了另外两条会话。

3、 通过汇总4个ICMP报文的平均值,防火墙会计算从每条链路发送ICMP报文到目的IP的时延,从中选择时延最小的链路为用户报文转发的链路。

4、 后续访问此目的网段的报文都会选择从此链路转发,目的网段与前面配置的智能选路掩码长度有关,此例配置的长度是28(缺省是24),则掩码为255.255.255.240,此掩码与用户报文的目的IP进行与运算得到目的网段,本例中算出的目的网段为210.1.1.0/28。

防火墙生成这三条会话后,通过display ucmp group ucmp1 intelligent-control-table命令可以查看防火墙智能选路功能的等价最佳出接口表项,了解最终计算的时延大小(单位毫秒)。

 

通过显示信息可以了解到,从GE1/1/1接口转发的链路时延最小。后续只要是内网用户访问210.1.1.0/28网段,都会从GE1/1/1接口转发。当然这是在等价最佳出接口表项没有老化的情况下(缺省为5分钟),当等价最佳出接口表项老化后,后续报文要重新进行探测。下面是从R1上tracert 210.1.1.1的路径信息。

 

智能选路功能可以在每条链路上设置带宽阈值,一旦此链路的带宽达到设置的带宽阈值时,将产生告警,后续匹配到此目的网段的流量将会选择时延次小的链路进行转发,以此类推。

此外,智能选路功能还可以根据网络的实际情况手动设置访问的目的网段从指定的链路转发。如需要访问210.1.1.1~210.1.1.10网段的用户流量首先从GE1/1/3接口转发,链路带宽到达设置的阈值后再从GE1/1/1接口转发。此种情况配置如下:

 [USG9000] ucmp group ucmp1 intelligent-control-static 210.1.1.1 210.1.1.10 interface GigabitEthernet 1/1/3 nexthop 203.1.1.2GigabitEthernet1/1/1 nexthop 201.1.1.1

此时在R1上tracert 210.1.1.1时,可以看到如下路径信息:

 

这种静态配置的方法,补充了自动探测方式因大部分流量从某一条时延最小的链路转发而导致其它链路空闲的缺陷,使智能选路功能更加适用于现网复杂的网络环境。

 

【拍案惊奇】

此案例的惊奇在于此功能的智能之处,通过ICMP报文来探测从每条链路到目标网络的时延,再智能的判断时延大小选择链路,为许多客户解决了多出口场景的选路问题。

 

【强叔问答】

看完本案例后,强叔请小伙伴们谈谈你们熟知的多出口场景的选路特性!