TCP Over IP Anycast适用场景

Anycast在国内应用现状

Anycast本身是个古老的技术,但是在国内互联网公司内都使用的不多。其原因如下:
1. 普通的互联网服务的高可用可以通过DNS层切换,业务恢复时间最短可以控制在5分钟内,满足国内绝大部分企业的需求了。
2. Anycast实施的网络接入要求比较高,国内企业具备有自己BGP网络的屈指可数。在公有云业务发展起来之前,国内大规模使用BGP网络为主营业务提供服务除了阿里之外别无二家,鹅厂和熊厂长期以来还是用智能DNS配合多线机房的静态带宽来提供服务。究其原因主要还是BGP带宽的成本比较高,中小企业根本没有人力与财力与大运营商在多个城市做BGP接入。

anycast在国外的应用其实在几年前也不多,主要的应用范围还是在DNS这类使用UDP的无状态的业务上。因此之前国外使用Anycast的场景主要是以下几种:
1. 各厂商承建的13组 ROOT DNS server。
2. 各DNS GTLD Server。
3. 国外的互联网巨头(Google,facebook,MS,Akamai,Amazon)的DNS server
4. 国外流行的DNS服务厂商,比如NSone,DYN之类的
5. 国外的新兴CDN厂商(微软Azure、Cloudflare、MaxCDN等)的Cache server。

国内使用anycast的主要场景:
1. BAT的这类有数十个IDC以上的公司的内部基础服务。
2. 各运营商内部的DNS的跨城部署(绝大部分是各省份内部)

总结一下,之前绝大部分anycast都是用在UDP的业务,少量CDN公司的Cache 节点使用了Anycast。

TCP业务的Anycast实施难点

从anycast的RFC内可以看到,只推荐使用anycast应用在无状态的业务上。对于HTTP之类的使用TCP的业务都不推荐部署。
主要是在IP报文在被路由转发时,当存在ECMP(等价路由)的时候只是机械的按每个IP包随机丢到多个下一跳中的一跳,可能导致TCP连接都无法建立。
一般情况下公网上的路由,只有宣告方触发或者中途链路异常时才会做变化,对于常规的非长连接业务其实都是无影响的。

TCP 业务实施Anycast的关键因素

这两年,随着移动业务的快速发展,各手机APP都在不断优化自己的使用体验。因为国内之前长期大量移动网络用户还停留在2/3G网络,无线业务的网络条件查,通过传统的DNS查询几十个域名对用户体验影响巨大。慢慢地大家开都搞起了HTTPDNS,绕过ISP的DNS,走HTTP批量做域名的查询。
然后大家又发现鸡生蛋 蛋生鸡的问题出来了,HTTPDNS自己的访问绕不过DNS。因此这两年腾讯、阿里云提供的HTTPDNS又开始把服务地址改成Anycast地址了。
这也算是国内第一批有状态业务的Anycast部署。TCP业务部署Anycast的参考几方面:
1. 自己是否具备BGP网络。
2. 自己使用真的有那么高的业务要求、或者是不想走DNS。
3. 多点宣告后广域网内各地是否稳定优选到”就近点“(一般情况下BGP路由在各地优选是固定就行)。
4. 接入层的交换机能支持一致性hash(一般是根据源IP/源端口/目标IP/目标端口/协议做hash,目前入门的3层交换机都支持)。
5. 单个业务的request/response时间,一般HTTP请求的业务都是适用的,相反一些push类的长连接业务不适用。
6. 各区域是否在大部分时候路由到固定节点,这块有论文做过研究,大部分anycast CDN的路由在几个月维护时才动一次,然后恢复原状。

此条目发表在net分类目录。将固定链接加入收藏夹。

发表回复