首页 > 代码库 > 链路负载均衡其实可以这么做
链路负载均衡其实可以这么做
现在企业一般会租用多条ISP链路,避免因单ISP链路故障带来的网络可用性风险和解决网络带宽不足带来的网络访问问题。如何合理运用多条ISP链路,既不造成资源浪费,又能实现网络服务质量的提升成为很多企业需要解决的问题。本文将重点分析链路负载均衡的几种作用方式,并结合山石网科安全网关的技术特点,解释负载均衡的实现方式。
链路负载均衡技术,可以概括为几种方式:
第一种是链路聚合,其价值在于其可以利用于低端接口到高端接口的过渡,例如单向2G的流量,可以使用3条千兆的链路进行聚合,成本要低于直接使用万兆接口。聚合链路相对于单条链路,具有更高的可靠性。
山石网科在链路聚合方面,主要通过在山石网科安全网关上配置集聚接口跟ISP路由器的聚合接口组连接实现,山石网科安全网关的一个集聚接口可以包含多个物理接口,这些物理接口平均分担通过集聚接口流量,同时支持LACP,实现链路动态汇聚的效果。
第二种是等价多径路由,它的价值在于访问同一目的IP或网段,有多个出口(即多个下一跳),为充分利用链路资源,配置相同的路由优先级,此时开启ECMP算法,就可以将流量负载分担到多条链路上。
在这点上,山石网科通过安全网关可基于五元组、源IP地址或源IP地址+目的IP地址进行选路,同时支持通过路由权值调整流量在各条链路上转发的比重。
第三种是ISP路由,其价值在于不同ISP间的地址互访速度较慢,因此内网用户访问外网某服务时,如果做到内网用户源地址转换后使用跟此服务同一归属ISP的地址,就能提高用户的体验。
在这方面,山石网科的安全网关预置ISP网段地址信息,内网访问外网时,系统跟据目的地址的 ISP 归属确定下一跳,源地址转换时就能使用同一ISP归属的地址。
第四种是应用引流:不同链路的成本不同,将低价值应用的流量从低成本的链路转发,高价值的应用从高成本的链路转发,才能做到链路资源使用的最优化。
山石网科安全网关在处理应用引流时首先识别出应用流量类型,然后通过策略路由的方式引导到相应的链路上,使不同的应用流量走不同的链路,从而达到链路流量负载优化的目的。
第五种是等价多径的应用引流,它需要将同一应用引流到多条等价链路上时,启用ECMP算法,能够达到负载分担和链路资源充分利用的效果。
在处理等价多径的应用引流时,山石网科安全网关首先识别出应用流量类型,然后通过策略路由的方式引导到相应的链路上,使不同的应用流量走不同的链路,从而达到链路流量负载优化的目的。系统还支持配置多条不同下一条的同一应用的策略路由,通过ECMP算法使特定应用流量在多条链路上进行负载分担。
第六种是出站动态探测,静态的负载分担算法只能做到流量在多链路上的负载分担,无法真正提升用户体验,流量从哪条链路转发能够让用户体验最好才是最终目的。
内网和外网之间存在多条链路时,通过山石网科安全网关的出站动态探测功能,内网访问的流量可以在多条链路上实现智能分担。当内网用户向外网目标地址首次发起访问时,系统对只匹配到缺省路由的流量在符合条件的各条链路上进行探测,对响应相对快速的接口生成静态路由,后续报文将直接按照路由转发不再探测;如果生成的静态路由在一定时间内不被命中,则自动老化。
第七种是基于带宽/时延的动态切换,在复杂的流量环境中,任何一种算法都无法保证绝对的负载均衡。可能会遇到某条链路的负载已经很大了,新的会话流量还是走这条链路的问题。基于带宽/时延的动态切换能够解决这个问题。
在处理这种情况时,山石网科安全网关对各接口的流量带宽/时延进行实时监测,当某接口的流量带宽/时延超过配置的阈值时,新建会话的流量就不再从这个接口转发,而是走其它接口。当此接口的流量带宽/时延回落到正常值以下后,新建会话的流量再允许从这个接口转发。
第八种是入站SmartDNS,价值在于不同ISP间的地址互访速度较慢,因此外网用户访问内网某服务时,如果做到内网服务目的地址转换前使用跟此外网用户同一归属ISP的地址,就能提高用户的体验。
内网和外网之间存在多条链路时,通过山石网科安全网关的入站SmartDNS功能,外网访问的流量可以在多条链路上实现智能分担。用户首先需要将企业内网服务器对外地址发布的方式更改为域名委派,即当有外网用户侧的DNS服务器向企业域名服务商的DNS服务器请求客户内网服务器域名解析时,返回域名委派服务器地址(山石网科安全网关)。山石网科安全网关预置外网用户侧ISP地址段信息,根据请求的来源确定返回山石网科安全网关哪个外网接口地址,或根据出站动态探测生成的路由来确定返回山石网科安全网关哪个外网接口地址。山石网科安全网关再通过目的地址转换(DNAT)功能帮助外网用户完成对企业内网服务器的访问。