作者:网络之路一天  首发公众号:网络之路博客(ID:NetworkBlog)

基于链路的权重负载分担(真机演示)


华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS

这里博主采用真机演示,模拟器只能配置没办法模拟出效果,真机能够真实的体验出效果,更好的去理解,所以这边采用真机配置了。环境简化了,防火墙内网接了一台测试电脑(博主用的),外网对接了两个线路,上网对接方式都是DHCP,一个宽带是20M,一个宽带是50M,我们来看看基于链路权重如何配置,以及需要注意什么。

 

需要考虑的问题

如果在实际中遇到这样的需求,需要根据客户的实际环境来进行配置,比如客户那边是DHCP加拨号的组合,或者静态加DHCP等都有可能,而且还需要考虑到链路的有效性,是否出现了故障等。

(1)智能选路中的故障检测只能采用健康检查功能,所以在部署之前需要定义好

(2)健康检查功能是调用在接口上面的,当该检测失效,对应接口直接失效。

(3)如果实际环境中采用的外网对接方式是混合的,比如DHCP+拨号或者拨号加DHCP等方式,要注意默认路由的优先级,一定要保持一致,否则智能选路会出现问题。

(4)智能选路接口需要设置实际宽带的值,这样防火墙才能按照智能选路的策略来进行分配。

(5)健康检查到底需要不需要防火墙放行Local到untrust的流量?

 

配置相关

(1)基础配置就不在演示了,配置了内外网接口,加入了安全区域,配置了安全策略与NAT策略(允许内网上网即可)


华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_02

其中192.168.254.254是内网网关,2个外网口分别接的外网用的DHCP模式,都加入了untrust安全区域。

 

[USG6300E]interface g0/0/9
[USG6300E-GigabitEthernet0/0/9]shutdown



华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_03

G0/0/8接的是20M的宽带,特意把9口关闭测速了下是正常的。

 

[USG6300E]interface g0/0/9
[USG6300E-GigabitEthernet0/0/9]undo shut
[USG6300E-GigabitEthernet0/0/9]int g0/0/8
[USG6300E-GigabitEthernet0/0/8]shutdown


华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_04



9口测速下来速度也是正常,50M。

 

[USG6300E]interfaceg0/0/8
[USG6300E-GigabitEthernet0/0/8]undoshut

 

在把8口开启

 

(2)配置健康检查

健康检查跟ip-link一样,需要先定好一个监测点,不变的思路,肯定是找大厂商稳定的测试地址为主,比如114、阿里云DNS、百度云DNS都是可以的,但是ip-link只支持icmp探测,有局限性,但是健康检查支持更多的协议,可以基于TCP、DNS(解析某个网站)、HTTP来GET网页、ICMP,在实际中就有更多的选择,常见的可以用ICMP探测以及DNS解析与TCP,下面博主用DNS以及TCP来演示下。

 

[USG6300E]healthcheckenable          //开启健康检查
[USG6300E]healthcheckname dx20m            //创建一个名称dx20m
[USG6300E-healthcheck-dx20m]destination 223.5.5.5 interface g0/0/8next-hop 192.168.2.254 protocol tcp-simple destination-port 53


    //整体意思是探测223.5.5.5  TCP的53端口号(简单探测),从G0/0/8出去下一跳是192.168.2.254(TCP支持一种,简单探测是不需要三次握手,还一种正常的三次握手的,两种都可以,简单的会更加快些)

 

华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_05


当配置完健康检查后,会看到这样的提示,状态已经up了,说明检查成功了。(从Up能够解决第五个问题,健康检测是不需要额外放行安全策略的,也就是不受安全策略控制,在V5版本后)

 

[USG6300E]healthcheckname dx50m
[USG6300E-healthcheck-dx50m]destination 114.114.114.114 interfaceg0/0/9 next-hop 172.16.1.254 protocol dns
这里要注意下,默认情况下DNS解析的是www.huawei.com,可以根据自己来改,比如百度、163等。
[USG6300E]healthcheckdomain-name

www.ccieh3c.com    (比如这里改成,注意前面需要输入www的格式)

 

displayhealthcheck  :可以通过该命令行查看目前健康检查的状态,都是up的。


华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_06


(3)配置接口实际带宽与调用健康检查

[USG6300E]interfaceg0/0/8
[USG6300E-GigabitEthernet0/0/8]bandwidth ingress 20000 threshold 90
[USG6300E-GigabitEthernet0/0/8]bandwidth egress 8000 threshold 90
[USG6300E-GigabitEthernet0/0/8]healthcheck dx20m
 
 
interfaceGigabitEthernet0/0/9
[USG6300E-GigabitEthernet0/0/9]bandwidth ingress 50000 threshold 90
[USG6300E-GigabitEthernet0/0/9]bandwidth egress 8000 threshold 90
[USG6300E-GigabitEthernet0/0/9]healthcheck dx50m

 

这里要注意一个“陷阱区“,很多朋友看到ingress跟egress,会把ingress当做上传,egress当做下载,如果从字面意思确实可以这样理解,但并不是,它的参考是数据包的方向,ingress表示进来的数据包,也就是客户端从外网下载回来进入防火墙的包,这个属于下载的速率,而egress是客户端的数据从防火墙发送出去到对方,表示上传,所以在实际输入中一定不要搞错了。(另外这里单位为kb,20000也就是20m)还最重要的一点threshold 90的参数作用,就是在上一篇提到的流量阀值,这里90代表的90%,超过90%就不在进入智能选路,直接切换到空闲的线路。

 

(4)配置基于权重的负载分担

[USG6300E]multi-interface    (模拟器的命令是multi-linkif,其余都一样,但是这里博主强调一点,真机不管是从V1R1还是V5到V6命令都是multi-interface)

 

华为防火墙智能选路篇之链路权重(带宽)负载分担_外网_07

 

在V6R7中默认的模式就行基于权重的负载分担(不同版本可能存在差异,配置的时候注意下)

 

[USG6300E-multi-inter]add  interface g0/0/8 weight2
[USG6300E-multi-inter]add  interface g0/0/9 weight5

weight数值越大表示权重越高,分的的流量就会越多,G0/0/8对应的带宽是20M,而G0/0/9对应的带宽是50M,按2:5分配,也可以1:3,最终就配置完成了,可以实际测试下。

 

实际测试(现象用WEB看更直观)

华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_08


在网络---路由---智能选路里面,可以看到WEB界面能够很好的看到接口的占用率情况(这个是5分钟统计一次),接下来下载一个大文件看看效果。


华为防火墙智能选路篇之链路权重(带宽)负载分担_权重_09

华为防火墙智能选路篇之链路权重(带宽)负载分担_外网_10

华为防火墙智能选路篇之链路权重(带宽)负载分担_外网_11

华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_12


可以看出来流量在2个接口之间还是非常均衡的分配的。剩下的还差一个健康检查功能,来试下当8口的外网出现故障后,会出现什么。


华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_13


当把20m的模拟故障后,会发现对应的健康检查状态为down了。


华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_14



华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_15


虽然路由表还是呈现两条默认路由,但是通过display  interface  g0/0/8 healthcheck,可以看到所在接口的状态为down了。


华为防火墙智能选路篇之链路权重(带宽)负载分担_外网_16


这个时候速度会降为5.9MB(也就是差不多48M左右)


华为防火墙智能选路篇之链路权重(带宽)负载分担_外网_17


后台的显示也体现出来了20M的占用越来越少,因为已经故障了,所以不会在去发送流量。(注意这个统计是慢慢消失的,不是一下就直接清除掉)

 

基于链路带宽负载分担(真机演示)

24篇提到过基于带宽的负载分担与基于权重的很类似,这里顺便演示下,其实非常简单。

 

[USG6300E]multi-interface
[USG6300E-multi-inter]modeproportion-of-bandwidth
Info: The memberinterface bandwidth must be configured in bandwidth-based load balancing mode.Otherwise, load balancing is affected.

 

华为防火墙智能选路篇之链路权重(带宽)负载分担_权重_18

 

在配置里面接口之前调用还有一个权重,这个只有在基于链路权重的模式下才能生效,其他模式其实是不生效的,但是为了看起来更加直观,修改下。

 

[USG6300E-multi-inter]undoadd interface g0/0/8
[USG6300E-multi-inter]undoadd interface g0/0/9
 
[USG6300E-multi-inter]add  interface g0/0/8
[USG6300E-multi-inter]add  interface g0/0/9

 

华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_19

 

在看就直观很多了。这里博主说下智能选路功能配置其实非常简单,4个模式都在multi-interface下完成,只是修改下mode而已,前期工作的难点在于选取监测点做健康检查,接口部分的速率以及调用健康检查相关的配置,这些做好了,然后在multi-interface下配置自己需要的模式即可。


华为防火墙智能选路篇之链路权重(带宽)负载分担_权重_20


速度跟基于权重的分配还是差不多的


华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_21

华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_22

华为防火墙智能选路篇之链路权重(带宽)负载分担_外网_23


后台的数据来看也差不多,因为本身基于带宽与基于权重的分配原理类似都是按比例来的,只是说权重可能更加的人性化,可以根据客户的要求来定义比例(实际需求中也会存在客户不一定说要两条带宽均匀的分配,它就希望A线路多跑点,B线路少跑点,这个时候就只能采用基于权重的方式来灵活定义了。)

 

最后总结

基于带宽以及权重的负载分担方式两种比较相似,博主就放到一起讲解完毕了,这次特意用的真机演示就是能够更直观的看到效果,这样前后对比印象更加深刻,这里在强调下几个比较重要的点作为巩固。

(1)在实施之前要了解好客户带宽的速率,这个参数需要写到接口里面的。

(2)定义健康检查要利用大厂出的公有服务地址来进行监测,由于健康检查的功能性很多,比较推荐的采用ICMP、TCP(两种方式都行)以及DNS,另外在V5版本以后是不受安全策略控制的,不需要额外单独放行安全策略。

(3)接口输入带宽参数的时候一定要注意,很容易把ingress当做上传,egress当做下载

华为防火墙智能选路篇之链路权重(带宽)负载分担_外网_24

在WEB界面的显示也是这样,但是这里入表示下行速率,出方向带宽表示上行速率,一定要注意。

(4)比较容易出现的问题一般在于健康检查,如果选的监测点老出问题会导致某个链路频繁的排除与参与智能选路,造成网络故障。

(5)WEB相关的配置就不在文档暂时了,篇幅太长了,视频还是会讲解到的,购买了的朋友不用担心。

 

 

扩展思考:如果客户的外网是静态IP加DHCP或者是静态IP加拨号这种方式,在部署时候应该注意什么?


华为防火墙智能选路篇之链路权重(带宽)负载分担_DNS_25

作者:网络之路一天  首发公众号:网络之路博客(ID:NetworkBlog)