好记性不如铅笔头

网络通讯

【转】AnyCast技术浅析

本文转自【 https://cloud.tencent.com/developer/article/1473063 】,有删改。

常见通信方式

UniCastAnyCast

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

MultiCast

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

BroadCast

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

什么是BGP AnyCast

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

AnyCast IP拥有MultiCast和UniCast各自的部分特性:
从宏观上来说,AnyCast类似于MultiCast,同一种类型的数据流同时存在多个接收者。
而从微观上来说,AnyCast又有着UniCast的唯一性。每一个单独的IP会话都能够找到唯一的源主机和目标主机(最终通信双方唯一)。

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

AnyCast利用BGP的寻路原则,短的AS PATH会选成最优路径(BGP寻路原则之一),从而优化了访问速度。当发送方发送报文给这个共享单播地址时,报文会根据路由协议路由到这一组主机中离发送方最近的一台,所以这个技术也可以用来做负载均衡。

AnyCast技术特点

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

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

AnyCast减弱了分布式拒绝服务攻击(DDoS:DistributedDenialofService)对用户带来的影响。当AnyCast组中某一个成员或者几个成员受到攻击时,负责报文转发的路由器可以根据各个组成员的响应时间来决定报文应该转发到哪个成员上,而受到攻击的成员由于没有响应,所以报文就不会被转发到此节点,同时,由于AnyCast提供的服务访问透明性,组成员也相对较难受到DDoS攻击。
AnyCast减弱了网络拥塞给用户带来的影响,当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某种程度上就是物理距离的代表,从而实现就近原则。

基于IP Anycast+BGP的DNS部署

通过AnyCast技术,无需要借助任何第三方负载均衡器,就可以轻松达到负载均衡的效果,同时还提供了冗余和高可靠性。
从DNS角度来说,正因为不同的地理位置用户会根据就近路由判断,从而选择不同的DNS服务器,最终会使DNS服务器达到负载均衡的效果;若其中某一个节点出现故障以后,业务会立即自动迁移到其他可用的节点上,从而避免网路服务故障。

AnyCast防范DDOS攻击

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

大型企业CDN部署

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

时延敏感度高的内容服务业务

可在全球有相关业务的地址位置部署小型数据中心,所有小型数据中心和总部数据中心保持长期稳定的TCP会话连接。当相对于总部的远端用户访问服务时,TCP连接实际是发送至用户当地的小型数据中心,从而降低了访问延时,提高了用户体验度。
在全球大规模部署多个节点时,为了确保用户能就近访问所在地的数据中心,可把所有小型数据中心的IP采用相同地址,通过BGP发布至Internet。当用户访问服务时,DNS解析会返回此小型数据中心的IP,然后用户运营商会根据就近原则路由用户数据到最近的小型数据中心,从而达到了上面所述的优化延迟的目的。

AnyCast总结

优点

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

缺点

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

Leave a Reply

16 − 3 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据