任播、自治系统与全球负载均衡

版权声明:文章可以转载,转载请注明原出处链接 https://blog.csdn.net/pengzhouzhou/article/details/85996495
本文由DNS出发,分别介绍了任播、自治系统及负载均衡和容灾等相关网络知识。
上篇文章回顾: 模拟网络状态的利器TC

//前言//

我在初中的时候遇到过一个问题:家里的联通宽带没有下发DNS地址,导致不能上网,年幼的我掏出了我的小米8(笑),帅气地打开搜索引擎,键入:DNS没了怎么办

看来现在这个问题也很火啊

第一个页面就是114DNS,专属于SRE的嗅觉告诉我,这就是我要的答案,将DNS设置上之后,很快就重新登上了网,高呼着CF,启动!我又投入到突突突的战场去了。

显然,当时的我没有意识到究竟是什么有趣的技术在支撑着我以近乎城域网的速度访问这个公共DNS,又是什么有趣的技术处理掉了全国成百上千万人的DNS请求。

//任播//

答案其实是任播。

任播是我们当前使用的网络所支持的一种特殊的报文传输路由方式,它还有几个小兄弟,分别是单播、组播、广播:

单播是网络中的点对点通信,也是我们最常用到的路由形式,比如我在浏览器里输入192.168.1.1,系统会建立一条到192.168.1.1:80的点对点通信链接,然后我从这个端口的webserver上获取到了一个网页:

单播

组播和广播是点对多点的路由形式,举个例子,ARP协议就是一个广播的例子,某台机器需要寻找内网里192.168.1.1的机器时,他会向当前局域网中所有地址广播:who is 192.168.1.1?这个操作就是一次局域网内广播的过程:

广播                 多播

那么任播是什么呢?

任播就是指一个发送节点对应多个接收节点,与广播/组播不同的是,同一时间点,任播有且仅有一个节点与之进行单独通信,而广播/组播的所有接收节点都会收到发送节点发送的相同的信息

任播

而DNS,就是一个任播技术的大本营。

众所周知,DNS根服务器仅有13台,正是由任播技术的存在,才使得DNS根服务器能够无限扩容,在全球各地都有它们的身影,事实上,每一个根服务器都有很多的镜像,这些镜像服务器使用任播技术,如图所示,全球各地的这些镜像节点组成了庞大的任播网络,当一个美国西海岸的客户端访问根服务器时,它会被直接路由到离他最近的三藩市镜像,他很快获取到了自己的查询结果,此时一个日本的客户端也开始请求查询,它的请求会被分配到东京的镜像进行处理,他也很快获取到了自己的查询结果。而在日本客户端和美国客户端看来,它们可能访问的是同一个IP,返回查询的速度非常之快,感觉服务器就开在自己家门口。

Root DNS Server分布

//自治系统//

自治系统就是一个独立的、内部自治的、有一些对外链接的网络实体,维基百科上的定义是这样的:

自治系统是指在一个(有时是多个)实体管辖下的所有IP网络和路由器的全体,它们对互联网执行共同的路由策略。

我觉得这个定义不好,没有突出一个“自治”的概念。自治主要体现在网络内部的各种通信行为均不可被外部所感知,一个自治系统只会暴漏出自己的出口入口,与其他自治系统间的通信采用且仅采用BGP协议进行沟通。

如上图所示,每一个自治系统如同一个孤岛,这些孤岛有的规模庞大,有的没有私有出口,只能购买上游运营商的出口,但是不管怎样,它们都有一些共同的特点,它们拥有自己的地址段,它们拥有自己的AS号,它们对外屏蔽网络内部通信,这些独立的孤岛通过BGP协议和网线,加上有人出人场,没人出钱场买来的互联端口,组成了一个庞大复杂的网络体系。(实际互联网AS的管理中包含AS号的概念,拥有自己的私有IP段和“互联”出口,经过审批和交钱后可以获取到自己的一个AS号,然后就可以对外发布自己的IP段了,HE公司有很多好用的网络工具,可以用来研究各家运营商/公司的AS系统,强烈推荐)

为什么要讲自治系统呢?因为他是当前网络中最常见的构建任播网络的方式。

在当前业界的应用中,我们看到的任播网络大多数都是通过多出口宣告的方式实现的,简单来讲就是在自治系统的边界,向与其构成peering的所有网络中通告自己自治系统中某些地址段的路由信息,那么根据路由选路规则,流量会从开销最小(开销最小不一定延迟最低,是指路由矢量最小,具体选路规则可自行搜索)的peering接口进入自治系统,自治系统内部对流量进行恰当调度后发送给某个内部节点进行处理,处理结果原路返回,通过这样的方式,我们就构建了一张同IP多线路、多点接入、多最终结点的任播网络。举个例子,我们的老朋友谷歌就在其接入点中大量使用了任播技术,流量从全球任意一个谷歌pop点进入,可直接在谷歌AS中经由谷歌私有全球交换网络路由到其任意一个数据中心,这也是谷歌声称自己可以承受“多数据中心级灾难”的信心来源。比起利用智能DNS解析进行多出口的流量调度,任播技术可以保证故障时间尽可能短,不必等待DNS生效,也不必担心因地址库问题导致的分配错误。使用任播技术不仅能够提供多点接入,还有很重要的一点是它可以用来——

//负载均衡和容灾//

利用等值路由策略,使同一集群下机器拥有相同的路由权重,流量进入AS内部后,会根据路由规则选择最佳的集群,等值路由保证流量会均等地分配到每一个节点,这样每一个节点都可以处理到自己最适合的流量,当集群负载增加时,可以通过调整路由权重的方式对流量进行即时调度,必要情况下可以在自己AS内跨区域甚至跨洲进行流量调整(谷歌就这么干过,谷歌数据中心间互联带宽均大于1Pbps,可以轻松迁移洲级的流量),而且,当某集群宕机,路由不可达会触发重新选路,流量会自动转移到其他可用节点,这就是任播和AS内部流量调度的魅力。

参考

1. Hawkinson J, Bates T. Guidelines for creation, selection, and registration of an Autonomous System (AS)” rfc1930[J]. BBN Planet/MCI, March, 1996: 10.

2. Abley J, Lindqvist K. Operation of anycast services[R]. 2006.

3. Ren G, Tune E, Moseley T, et al. Google-wide profiling: A continuous profiling infrastructure for data centers[J]. IEEE micro, 2010, 30(4): 65-79.

4. Autonomous system (Internet)[EB/OL]. En.wikipedia.org, 2018. (2018)[2018 -09 -14]. https://en.wikipedia.org/wiki/Autonomous_system_(Internet).

本文首发于公众号“小米运维”,点击查看原文

猜你喜欢

转载自blog.csdn.net/pengzhouzhou/article/details/85996495