出向链路负载也需要智能DNS解析

  1. 云栖社区>
  2. 博客>
  3. 正文

出向链路负载也需要智能DNS解析

科技小能手 2017-11-23 14:10:00 浏览1482
展开阅读全文

随着计算机和互联网设备硬件性能的不断攀升,互联网应用的爆发式增长,对互联网带宽也提出更高的要求。即使是只为内网用户提供互联网接入服务的网络,只要具备一定的规模,一般也会选择多运营商链路实现互联网接入。选择多链路出口是为了提高网络的整体带宽和网络的可靠性;选择多运营商则是为了解决国内跨运营商访问速度不佳的问题。在这样的网络环境,要求出口网关设备,无论是路由器、防火墙,还是专业的链路负载设备都要具备以下功能:

1、准确的链路健康监控,及时地发现故障链路并停止该链路的数据转发,提高网络的可靠性。
2、链路流量的负载均衡,只有各链路流量均衡分担,才能充分利用出口链路带宽,避免因流量分配不均衡造成个别链路拥塞。
3、良好的用户上网感受,让用户选择最快速的网络链路完成互联网访问,提高网络的访问速度。
但在实际的网络环境中,作为出向流量(Outbound)的链路负载均衡设备,满足上述第1项,各类产品基本都没有问题,但第2项与第3项也同时满足却十分困难。我们先看看当前常见的链路负载方法。
A、源路由和策略路由,作为路由器和防火墙类设备最常见的实现链路负载的方法,配置简单,在稳定的网络环境中,能够轻松的实现各链路流量的负载均衡,但却无法提高用户上网感受,用户固定的绑定到特定的出口链路,依然存在跨运营商访问慢的问题。
B、轮询和加权轮询,效果与A相似,且用户从不同的链路去访问互联网,如果出口设备不具备会话保持功能,或会话保持配置不当,会出现网银、网游等应用访问异常的问题。
C、ISP地址精确匹配,用户访问的目的地址与ISP地址池匹配,做到访问电信地址的流量走电信链路,访问联通地址的流量走联通链路。可以提高了用户的访问速度,但常常出现链路流量分配不均衡,在高峰期有的链路带宽被占满,有的链路则十分空闲,高峰期用户的上网感受也会由于链路被占满而变差。
D、链路反应速度探测,针对用户访问的目的地址,检测各链路的反应速度,选择反应最快的链路转发流量。效果与C相似,高峰期用户的上网感受及链路负载情况都会更好一些。但在特定的环境下效果欠佳,比如高校网络中,学生某一时间段集中观看体育赛事直播时,可能出现某条链路带宽快速被占满,使链路变得拥塞,而出现直播视频传输不畅。这是因为链路速度探测不是针对每一次访问进行的,如果针对每次访问都进行探测,探测本身的时间消耗一定大于网络自身延迟;而周期性探测往往会导致周期时间内,网络环境变化与最初探测结果不同,周期内如果观看赛事直播的应用集中出现,某条链路流量会快速增加,导致流量分配不均衡,甚至应用本身的访问速度也受到影响。
为突破上述解决方案的局限性,A10提供一个新的出向流量(Outbound)链路负载解决方案,方案通过ISP地址精确匹配与DNS服务器负载相结合实现出向流量链路负载均衡。我们知道ISP地址精确匹配是提高用户感受的最直接方式,它的问题是链路流量负载不均衡,而造成流量分配不均衡的原因则是由于DNS解析造成的。
原因之一是国内的大型数据中心和大型站点,采用多运营商链路方式接入互联网,或在不同运营商建立独立的数据中心。因此相同的域名,用户使用不同运营商的DNS服务器,解析出的IP地址可能完全不同。
而对链路流量分配不均影响更大的是P2P软件,下面提供一组分析数据充分说明运营商DNS对于P2P流量选路的影响。下表是通过对迅雷软件在不同运营商网络中下载同一资源获得的抓包信息提取的分析数据。

 

PC机运行迅雷软件,迅雷发起包括plugin.x17.xunlei.com会员登陆域名在内的与迅雷相关的域名解析请求超过30个,而返回的域名解析IP地址则与用户所配置DNS的运营商保持一致。当开启下载任务时,表现更为明显,在提供P2P下载数据量最多的20个IP地址中,几乎看不到其他运营商的IP地址。这就导致了在多运营商链路的环境中,P2P流量几乎完全从用户使用的DNS运营商链路转发,造成链路流量分配不均,可见用户选择的DNS服务器对于出向链路的流量负载影响极大。

既然DNS解析能够影响链路流量的分配,我们也可以利用这点来实现链路流量的均衡分配。在ISP地址精确匹配基础之上,我们通过A10的负载均衡设备针对用户的DNS服务配置服务器负载均衡,将用户的DNS请求以加权轮询的方式分配到各链路对应的DNS服务器,通过权值比例来控制各链路的流量分配。这样可以通过ISP地址精确匹配来提高用户的上网感受,也避免了链路探测所面临时间周期内流量分配不均衡的问题。
这样的解决方案对于用户来说也是十分方便,用户可以继续使用原有的DNS配置,不需要做任何配置更改;如果在DHCP环境下,甚至可以为用户分配一个像100.100.100.100这样的虚拟DNS服务器地址。
 
下面为大家提供一个测试实例,介绍一下方案中AX系列设备DNS解析加权轮询的配置,以及在实际环境中所达到的效果。先介绍一下测试环境:测试网络有100M联通链路和200M电信链路两条出口,高峰期在线用户1500人左右。
用户采用ISP地址精确匹配,由于电信链路带宽大一些,用户最早将电信DNS通过DHCP分配给网内用户,发现流量分配不均衡后将电信DNS替换成联通的DNS,问题依然存在。
下图是AX设备上线后用户配置联通DNS,AX没做DNS请求轮询分配时的抓图。 

 

截图期间用户网络有近300人使用电信DNS,但电信链路在高峰期依然存在大量空闲,而联通的链路在21点后完全被占满。

我们在AX设备上配置DNS轮询查询:
配置电信与联通的真实DNS服务器,使用默认的udp端口健康监测。
slb server ctc_dns 1.1.1.1
   port 53 udp
slb server cuc_dns 2.2.2.2
   port 53 udp
配置DNS服务器组,选择加权轮询方法。
slb service-group dns_group udp
    method weighted-rr
    member ctc_dns:53
    member cuc_dns:53
配置到100.100.100.100的UDP 53端口请求分配给dns_group处理,并作源地址转换,snat_group内包括电信和联通的nat地址池。
slb virtual-server to_dns 100.100.100.100
   port 53 udp
      source-nat pool snat_group
      service-group dns_group
      no-dest-nat
这里加两条精确的静态路由,目的地址为运营商dns服务器,下一跳为dns对应链路的网关,我们这样配置的目的是让dns请求本身能够快速访问。
ip route 1.1.1.1/32 a1.b1.c1.d1
ip route 2.2.2.2/32 a2.b2.c2.d2
完成以上配置,我们将用户网络的dhcp服务器中dns地址改为100.100.100.100后,观察用户网络流量分配,基本实现链路负载均衡,当天截图如下:
上图可以看到在高峰期两条链路基本都被占满,联通链路负载稍重的原因是由于配置当天有少部分用户dns没有更新,且没有做细致的权重比例调整。
通过将dns解析请求轮询分配给不同运营商dns服务器来控制链路流量分配,虽然不是完美的解决方案,但却可以称得上是当前最适合国内的网络环境的出向链路负载解决方案,具有原理简单、配置容易、设备本身资源消耗低的特点,且能够全面满足开篇提到的链路负载解决方案的3个要求。
 

本文转自 virtualadc 51CTO博客,原文链接:
http://blog.51cto.com/virtualadc/884976

网友评论

登录后评论
0/500
评论
科技小能手
+ 关注