002.AnyCast技术浅析

一      常见通信方式

1.1  UniCastAnyCast

UniCast,即单播,指网络中一个节点与另一个节点之间需要建立一个单独的数据通道,从一个节点发出的信息只被一个节点收到,这种传送方式称为单播。即网络中从源向目的地转发单播流量的过程,IP地址与节点(主机)一一对应,单播流量地址唯一。每个节点必须分别对需要访问的节点发送单独的查询,而被访问节点必须向每个访问节点发送所申请的数据包拷贝。

1.2  MultiCast

MultiCast,即多播,指网络中一个节点发出的信息被多个节点(一组节点)接受。这种技术用于多媒体应用、多用户交互(如聊天室)、软件分发等,相比与传统的UniCast可以大大提高效率。在子网内实现MultiCast较为简单,跨越子网时需要Route 、Gateway等设备的支持。

1.3  BroadCast

BroadCast,即广播,指网络中一个节点发出的信息被网络中的所有可能(通常的同子网下)的节点接受。网络设备简单地将它接收到的任何广播报文副本转发到除该报文到达的接口以外的每个接口。

二      什么是BGP AnyCast

AnyCast,也称任意播,或泛播,指IPV6协议中一个发送方同最近的一组接收方之间的通信。BGP AnyCast就是利用一个(或多个)AS号码在不同的地区广播相同的一个IP段。即不同地区若干个AS号广播同一个IP(段)。

Any Cast IP拥有MultiCast和UniCast各自的部分特性:

从宏观上来说,AnyCast类似于MultiCast,同一种类型的数据流同时存在多个接收者。

而从微观上来说,AnyCast又有着UniCast的唯一性。每一个单独的IP会话都能够找到唯一的源主机和目标主机(最终通信双方唯一),如下图所示。

即在AnyCast环境下,同时存在多个有效的数据包接收端,但具体一个特定IP数据包而言,仅有一个接收端主机收到了此数据包。

AnyCast利用BGP的寻路原则,短的AS PATH会选成最优路径(BGP寻路原则之一),从而优化了访问速度。

即可多个不同服务器使用了相同的IP地址(该地址即这一组主机的共享单播地址)的一种技术。当发送方发送报文给这个共享单播地址时,报文会根据路由协议路由到这一组主机中离发送方最近的一台,所以这个技术也可以用来做负载均衡。

三      AnyCast技术特点

AnyCast的定义是:当一个单播地址被分配到多于一个的接口上(即目的地址不是唯一)时,发到该接口的报文被网络路由到由路由协议度量的“最近”的目标接口(某个节点)上。

AnyCast允许源节点向一组目标节点中的一个节点发送数据报,而这个节点由路由系统选择,对源节点透明。

同时,路由系统选择“最近”的节点为源节点提供服务,从而在一定程度上为源节点提供了更好的服务也减轻了网络负载。AnyCast分布的服务节点共享相同的IP地址,同时在IP层进行透明的服务定位,这使得各种网络服务特别是应用层服务具有更强的透明性,如DNS(DomainNameSystem,域名系统),用户不需要特殊配置也不用关心访问的是哪一台DNS服务器。

其次,路由系统选择了“最近”的服务,缩短了服务响应的时间,同时减轻了网络负载。

最后,相同的服务在网络上冗余分布,路由系统可以提供机制选择负载相对轻的带宽相对高的路径来转发报文,这样就给用户带来了两个方面的好处:

  • 减弱了分布式拒绝服务攻击(DDoS:DistributedDenialofService)对用户带来的影响。当AnyCast组中某一个成员或者几个成员受到攻击时,负责报文转发的路由器可以根据各个组成员的响应时间来决定报文应该转发到哪个成员上,而受到攻击的成员由于没有响应,所以报文就不会被转发到此节点,同时,由于AnyCast提供的服务访问透明性,组成员也相对较难受到DDoS攻击。
  • 减弱了网络拥塞给用户带来的影响,当AnyCast的某些组成员处在拥塞的网段时,它的响应时间就较长,报文可以被转发到响应较好的成员那里,对于最终用户而言是无感知的。

四      AnyCast应用场景

AnyCast主要应用于大范围的DNS部署,CDN数据缓存,数据中心等。

疑惑一:在AnyCast网络中多个主机用同一个IP,这岂不是IP地址冲突了?

解惑:首先,每一个节点主机处在不同的地理位置,相互之间不在同一个广播域内。所以把所有主机配置成相同的IP地址并不会引起我们日常所见的IP地址冲突;

其次,在仅仅配置相同IP之外,还需要借助BGP协议进行地址宣告,通过BGP,各个站点向Internet宣告相同的AnyCast IP地址。

疑惑二:具有多条到达目的的路径,且具有相同Anycast IP地址的Prefix,数据包如何做到就近路由选址的呢?。

解惑:当用户的DNS(数据)请求到达运营商的宽带路由器以后,运营商的路由器会根据BGP的选路原则选择到达目的的最优路径。在用户宽带运营商和DNS服务器Internet运营商相同的情况下,最终会以IGP metric为关键因素来决定哪个DNS服务器给用户提供服务。而IGP的 Metric某种程度上就是物理距离的代表,从而实现就近原则。

4.1  场景一:基于IP Anycast+BGP的DNS部署

背景:假设部署三个DNS服务器站点,地点分别在北京、上海、广州,且服务于全国的DNS解析。

常规方案:为了实现三个DNS服务器负载均衡,通常会考虑到使用硬件负载均衡设备,例如常见的F5负载均衡设备等。

方案缺陷:

  • 网络流量瓶颈:所有的流量都需要先通过负载均衡设备,而硬件设备本身的吞吐量决定了整个网络环境的吞吐量。
  • 高昂的硬件成本:为了实现全国的流量负载均衡,需要极大吞吐量的硬件设备,从而大大提高了部署成本。

AnyCast方案:

方案优点:通过AnyCast技术,无需要借助任何第三方负载均衡器,就可以轻松达到负载均衡的效果,同时还提供了冗余和高可靠性。

方案实施:

通过配置三个DNS站点的服务器IP为相同IP,例如1.1.1.1/32。然后通过各个站点的BGP对互联网宣告1.1.1.0/24的网段。

以上步骤完成以后,互联网路由表针对1.1.1.1/24会有三个不同的出口路由器,分别是北京,上海,广州。

假设现有用户都使用1.1.1.1作为DNS服务器,依据就近原则,若用户地域为东北,则会优先采用北京DNS服务器进行解析。

同理,贵阳的宽带路由器通过查看BGP路由,发现1.1.1.1出口最优路由是在广州,那么贵阳用户的DNS数据包将被发送给广州的DNS服务器。而江南一带的则是上海DNS服务器负责提供解析服务。

故障容灾:

若三台DNS服务器中某一台出现故障,如广东DNS服务宕机,BGP协议会立即停止通告此1.1.1.0/24的网段,Internet路由表将会只有北京和上海的DNS可供选择。

此时原广东DNS服务的用户将再次根据“就近原则”选择其他DNS服务器,例如上海DNS,从而达到业务的平滑迁移和服务的高可用性。

总结结论:

全国用户最终会根据距离DNS服务器的远近来判断使用哪个DNS服务器做域名解析;

从DNS角度来说,正因为不同的地理位置用户会根据就近路由判断,从而选择不同的DNS服务器,最终会使三台DNS服务器达到负载均衡的效果;

若其中某一个节点出现故障以后,业务会立即自动迁移到其他可用的节点上,从而避免网路服务故障。

4.2  场景二:防范DDOS攻击

4.2.1    DDoS简述

DoS攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃。

DDoS(分布式拒绝服务)指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,同时对一个或多个目标发动DoS攻击。

DDOS攻击主要分为三类:流量型攻击;连接型攻击;特殊协议缺陷。

最常见的为流量型攻击,当大规模异常流量涌入时,会占用运营商核心MPLS网路带宽,同时这种洪泛攻击会给客户网络造成短时间的瘫痪。

案例参考:以NTP协议为例,NTP协议基于C/S模式,客户发起NTP时间查询申请,服务器响应NTP查询。假设有成千上万的僵尸主机纷纷伪造如下数据包并不断连续发送给全球NTP服务器:

  • 伪造源地址:1.2.3.4               #此地址为真正需要攻击的地址
  • 目标地址:全球各个NTP服务器地址     #大批量提供响应的节点

当全球各地的NTP服务器收到此查询以后,它会把查询结果发送回给真正的被攻击者1.2.3.4,此时IP地址为1.2.3.4的受害者收到全世界的NTP服务器发过来的数据包时,其有限的带宽链路就很容易产生拥塞并造成服务中断。受到的DDoS攻击流量=虚假数据包发送数量x全世界NTP服务器的数量。

4.2.2    AnyCast防范DDOS攻击

DDOS攻击最关键是需要把所有地理位置分散的小流量最终汇集为一个巨大的流量,从而发起攻击。

在AnyCast环境下,由于多个地理位置不同的主机同时使用同一个IP地址。因此,DDOS攻击流量在穿越运营商路由器时,路由器会根据地理位置远近把数据包路由到距离源地址最近的受害者主机站点,从而间接又再次分散了整个DDOS流量。

如上案例,假设IP地址为1.2.3.4的受害者采用了AnyCast协议部署网络,其服务器分布在全国各地。当DDOS洪流攻击时,不同的NTP服务器根据路由选择,把流量发送到距离NTP服务器最近的受害者服务器上。最终,大流量的攻击被逐步分解。

4.3  场景三:大型企业CDN部署

AnyCast在大型企业中也常用于CDN部署,采用了Anycast技术为用户提供距离用户最近的Cache服务器,可大大提高了用户的服务体验。在全球建设了多个数据中心,凭借于AnyCast的高冗余性,任何一个数据中心出现网络、系统故障。均不会影响客户体验度,所有当地的客户流量会自动路由到其他就近的数据中心。相对传统企业网络面对网络节点故障的脆弱性,Anycast具有很强的优势。

4.4  场景四:时延敏感度高的内容服务业务

针对https/tcp等对时延敏感的协议(涉及多次握手的协议),由于用户位置流动,而数据中心相对固定,因此会随着用户的移动,体验可能出现严重下降。

基于以上背景,可在全球有相关业务的地址位置部署小型数据中心,所有小型数据中心和总部数据中心保持长期稳定的TCP会话连接。当相对于总部的远端用户访问服务时,TCP连接实际是发送至用户当地的小型数据中心,从而降低了访问延时,提高了用户体验度。

在全球大规模部署多个节点时,为了确保用户能就近访问所在地的数据中心,可把所有小型数据中心的IP采用相同地址,通过BGP发布至Internet。

当用户访问服务时,DNS解析会返回此小型数据中心的IP,然后用户运营商会根据就近原则路由用户数据到最近的小型数据中心,从而达到了上面所述的优化延迟的目的。

五      AnyCast总结

5.1  优点

  • AnyCast可以零成本实现负载均衡,同时对于客户端而言是透明的,且无视流量大小;
  • AnyCast是非常有效的DDOS防御措施,采用了逐层分解的思想;
  • 部署AnyCast可以获得设备的高冗余性和可用性,即当任意目的节点异常时,可自动路由到就近目的节点;
  • AnyCast适用于无连接的UDP,以及有连接的TCP协议;
  • 基于AnyCast的特性——就近原则,很大程度上提升了客户端的响应速度。

5.2  缺点

AnyCast严重依赖于BGP的选路原则,在整个Internet网络拓扑复杂的情况下,可能导致次优路由选择。

参考:https://blog.csdn.net/enweitech/article/details/79778528

原文地址:https://www.cnblogs.com/itzgr/p/10192799.html

时间: 2024-11-03 03:47:35

002.AnyCast技术浅析的相关文章

zookeeper技术浅析

Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多.今天我想谈谈zookeeper,本文不谈如何使用zookeeper,而是zookeeper到底有哪些实际的运用,哪些类型的应用能发挥zookeeper的优势,最后谈谈zookeeper对分布式网站架构能产生怎样的作用. Zookeeper是针对大型分布式系统的高可靠的协调系统.由这个定义我们知道zookeeper是个协调系统,作用的对象是分布式系统.

JEE相关技术浅析

1.1  JEE相关技术浅析 JEE是基于java的web相关技术的统称,包括html.javascript.css.jsp.servlet.struts.spring.hibernate.java.ejb等.为了实现程序的灵活性,采用MVC(Model.View.Controller)的设计模式,将应用分为展现层.业务逻辑层.模型层三个方面. (1)展现层:html.javascript.css属于展现层.html属于纯展示部分,所有操作最终需要合并成html并通过web浏览器展示出来:css

分布式服务架构之java远程调用技术浅析

分布式服务架构之java远程调用技术浅析     在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI.MINA.ESB.Burlap.Hessian.SOAP.EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了,在这篇blog中我们将来一探究竟,抛砖引玉,欢迎大家提供更多的实现远程通讯

如何借助Anycast技术拯救运维工程师的睡眠?

半夜十二点,小王正在酣睡. 突然一阵清脆的手机铃声响起,把小王从睡梦中拉扯回现实. "喂,谁啊?" "王工,我是监控中心的,公司的xxx服务器挂了,你赶紧看一下吧." 小王揉了揉眼睛,起身打开笔记本电脑,开始了一宿的不眠夜. 作为一名运维工程师,以上桥段经常发生在大家身边.白天繁重的工作已经让人筋疲力尽,而夜间作为电话值班工程师,仍不得不面对时刻突发的网络或系统故障.生活黑白颠倒,日夜不分. 试问,拿什么来保证运维工程上的睡眠? 再给大家说一个故事. 我有一个朋友,

Ip Anycast技术单站点设计方案

本文对Anycast单一站点进行部署,并不对Anycast相关技术做过多介绍,如有需要请自行搜索下其他文档. 在部署单一站点的时候可能需要涉及到LVS DR模式去实现业务的Anycast以及Unicast两种类型,其中Anycast作为提供业务服务用,unicast作为管理以及数据同步用.具体设计方案如下: 一.拓扑介绍: 客户端ip地址:192.168.100.100/24 lvs 物理地址: 192.168.100.3/24     Vip 10.0.0.1/24 RS1物理地址: 192.

物联网NB-IoT与LoRa技术浅析

物联网的无线通信技术很多,主要分为两类:一类是Zigbee.WiFi.蓝牙.Z-wave等短距离通信技术:另一类是LPWAN(low-powerWide-AreaNetwork,低功耗广域网),即广域网通信技术. 物联网的快速发展对无线通信技术提出了更高的要求,专为低带宽.低功耗.远距离.大量连接的物联网应用而设计的LPWAN也快速兴起. 物联网应用需要考虑许多因素,例如节点成本,网络成本,电池寿命,数据传输速率(吞吐率),延迟,移动性,网络覆盖范围以及部署类型等.NB-IoT和LoRa两种技术

爬虫技术浅析

在WEB2.0时代,动态网页盛行起来.那么爬虫就应该能在页面内爬到这些有javascript生成的链接.当然动态解析页面只是爬虫的一个技术点.下面,我将按照如下顺序分享下面的这些内容的一些个人经验(编程语言为Python). 1,爬虫架构. 2,页面下载与解析. 3,URL去重方法. 4,URL相似性算法. 5,并发操作. 6,数据存储 7,动态爬虫源码分享. 8,参考文章 0x01 爬虫架构 谈到爬虫架构,不得不提的是Scrapy的爬虫架构.Scrapy,是Python开发的一个快速,高层次的

windows动态链接库[DLL]与Linux共享库[SO]技术浅析

一.动态链接库的技术优点: 1)节省内存和磁盘空间:因为动态库在内存或磁盘中只需一份,便可供多个进程或程序使用. 2)模块化编程,方便协作:这一点静态库也能胜任. 3)使用动态加载DLL或SO时,便于模块升级,无需重新编译或链接整个程序. 二.windows的动态链接库: 1.windows的静态库生成的是.lib文件,其中包含了函数和数据实体,链接时合到程序中: 2.windows的动态库生成.dll文件并导出一个.lib文件,该.lib文件中的函数没有实体[不是一个 准确的说法],函数内部是

游戏开发热门技术浅析

最近手游开发很热,今天我们来看看目前比较主流的手机游戏开发技术,以下仅仅是个人了解的皮毛,为想了解和步入游戏行业的朋友做一参考. cocos2d 我们先来看一幅图: 要看懂这幅图就先要了解一下cocos2d的生命历程,下面我来做一下简要的归纳和介绍吧. 2005年,Ricardo和朋友萌生了用Python语言 "一星期编写一个游戏"的想法.在2005-2007年间,他们设计了许多种这样的游戏.值得注意的是,每次在设计一个新的游戏时,其游戏引擎都是重新开发的. 2008年2月,他们在阿根