关于Anycast的介绍[通俗易懂]

关于Anycast的介绍[通俗易懂]Anycast最初是在RFC1546中提出并定义的,它的最初语义是,在IP网络上通过一个Anycast地址标识一组提供特定服务的主机,同时服务访问方并不关心提供服务的具体是哪一台主机(比如DNS或者镜像服务),访问该地址的报文可以被IP网络路由到这一组目标中的任何一台主机上,它提供的是一种无状态的、尽力而为的服务(如图1)。目前对于Anycast的中文译称主要有,“任播”、“泛潘”、“选播”等,本

大家好,又见面了,我是你们的朋友全栈君。

Anycast最初是在RFC1546中提出并定义的,它的最初语义是,在IP网络上通过一个Anycast地址标识一组提供特定服务的主机,同时服务访问方并不关心提供服务的具体是哪一台主机(比如DNS或者镜像服务),访问该地址的报文可以被IP网络路由到这一组目标中的任何一台主机上,它提供的是一种无状态的、尽力而为的服务(如图1)。目前对于Anycast的中文译称主要有,“任播”、“泛潘”、“选播”等,本文一律使用“任播”一词,或者直接使用英文单词“Anycast”。

   

关于Anycast的介绍[通俗易懂]

 

1 任播示意图

Anycast作为一种新的网络服务被IPv6接纳,并且在最初的IPv6标准中为Anycast分配了单独的地址空间(RFC2526),不过,新的IPv6标准(RFC 2373)已经去掉了Anycast的单独地址空间,而是使其共享IPv6的单播地址空间。标准对anycast的定义是,当一个单播地址被分配到多于一个的接口上时,发到该接口的报文被网络路由到由路由协议度量的“最近”的目标接口上。与UnicastMulticast类似,Anycast也是IP网络的一种通信模式。Unicast允许源结点向单一目标结点发送数据报,Multicast允许源结点向一组目标结点发送数据报,而Anycast则允许源结点向一组目标结点中的一个结点发送数据报,而这个结点由路由系统选择,对源结点透明;同时,路由系统选择“最近”的结点为源结点提供服务,从而在一定程序上为源结点提供了更好的服务也减轻了网络负载

正是Anycast这一通信模式的特点,使它在IP网络中具有了一定程序的应用前景。首先,分布的服务共享相同的IP地址,同时在IP层进行透明的服务定位,这使得各种网络服务特别是应用层服务具有更强的透明性,比如DNS,在IPv6网络中它可以共享一个熟知的IP地址,用户不需要特殊配置也不用关心访问的是哪一台DNS服务器;其次,路由系统选择了“最近”的服务,缩短了服务响应的时间,同时减轻了网络负载;最后,相同的服务在网络上冗余分布,路由系统可以提供机制选择负载相对轻的带宽相对高的路径来转发报文,这样就给用户带来了两个方面的好处:1)    减弱了DOS攻击对用户带来的影响。当Anycast组中某一个成员或者几个成员受到攻击时,负责报文转发的路由器可以根据各个组成员的响应时间来决定报文应该转发到哪个成员上,这样受到攻击的成员由于没有响应,所以报文就不会被转发到那里,同时,由于Anycast提供的服务访问透明性,组成员也相对较难受到DOS攻击。2)   减弱了网络拥塞给用户带来的影响。同上面的道理,当Anycast的某些组成员处在拥塞的网段时,它的响应时间就较长,报文可以被转发到响应较好的成员那里

虽然Anycast在以上方面有一定的优势,但是目前Anycast的应用并不如期待中的一样。应用层对Anycast的使用主要有服务器自动选择、服务自动定位,服务器自动选择可以使用在需要对某种应用层服务提供多个镜像服务器的情况,比如FTP服务、在线游戏服务等。服务自动定位可以使用在主机不需要特别配置而使用一种知名服务的情况,典型的如DNS。网络层实现Anycast主要是依据Anycast路由表对报文进行透明转发,向上层提供服务,这样应用层就不需要专门的Anycast程序模块。Anycast路由表记录了一个Anycast组所有成员的Unicast地址,当路由器收到一个指向Anycast地址的报文时,首先搜索Anycast路由表找到相应的Anycast组,然后把报文转发到这个组中的一个成员上。鉴于应用层对全球范围内的Anycast的需求,所以促成了对网络层全球Anycast机制的研究。本文关注的重点是基于IPv6的全球范围网络层的Anycast机制,在这样的机制下,应用层只需要使用网络层提供的服务来实现应用层的Anycast

  网络层任播需要解决的问题

IP层实现全球范围内的Anycast主要面临两个方面的问题,一方面是全球范围内的Anycast使得路由聚合变得困难;另一方面是无状态的服务会导致基于单播的有状态连接中途失效。下面对这两个问题进行详细阐述。

路由聚合是指为缩短路由表长度提高路由效率,把具有相同地址前缀的多个IP地址合并成一个仅包含相同前缀的网络地址的方法,在实际应用中,这些IP地址必须对应相同的下一跳端口才可以在路由表中被合并成一项。由于基于IPv6的网络的IP地址采用128位二进制位表示网络中一个结点(路由器或者主机)的地址,地址空间相当大,所以必须采用路由聚合的方法来缩短路由表,这样就要求基于IPv6网络的路由拓扑必须具有一个相对严格的层次结构,共享相同前缀的一个子网拓扑称作一个路由域(Domain),在这种情况下,当Anycast的组成员分布在不同的路由域中时,Anycast路由表就不能聚合,如图2所示,A1A2是同一个Anycast组的两个成员,它们分布在前缀分别是3ffe:8140::/282001:220::/32的两个不同的路由域中,因为这两个单播地址不能聚合,所以负责报文转发的中间路由器必须为这两个成员分别存储一个路由项,在全球部署一个Anycast服务时,如果这样的情况很多,那Anycast路由表就会变得很大,导致路由效率急剧下降。正是这样的情况给全球部署Anycast服务带来了很大困难。

 

 

关于Anycast的介绍[通俗易懂]

 

 

2 IPv6网络路由拓扑层次结构

由于Anycast是一种无状态的服务,在一次有状态的通信过程中,如果使用了Anycast服务,通信就有可能中途失败。以TCP通信这例,如图3所示,A一个Anycast组标志,M1M2是这个组的两个成员,SenderA进行TCP通信,实际上TCP数据被转发到A的一个成员上,假如TCP连接建立连接时报文转发到了M1上,通信过程中由于某种不确定因素,在通信结束之前报文又被转发到了M2上,这样TCP通信便会失败,原因是TCP通信过程中需要维护双方的状态信息(如滑动窗口大小等),报文被转发到M2后,双方的状态就不再一致,通信失败。再比如,当使用RTP协议进行流媒体传输的时候,也会出现同样的情况。

 

 

关于Anycast的介绍[通俗易懂]

 

3 有状态通信示意图

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142288.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 国外大容量网盘_百度云网盘高速下载

    国外大容量网盘_百度云网盘高速下载之前在《Mac端软件下载站》这篇文章中有提到:一些网站是采用的国外收费网盘,比如:UsersCloud、ClickUpload、Turbobit、Nitroflare、Rapidgator、Uploaded…这类收费网站就和国内的城通网盘一个模样(应该或多或少大家都有下载过城通网盘上的文件吧),差不多都是下面这种模样????????‍♂️:限制2个小时内只能下载一次限制单线程下载限速到几十KB/s不支持文件续传但其实很多国外软件在谷歌上只能找到这种网盘上的资源,那怎么下载呢?▍1Mi

    2025年9月30日
    2
  • React多页面跳转[通俗易懂]

    React多页面跳转[通俗易懂]render(){const{app:{locationQuery}}=this.props;////////////tolist.jsconst{子页面数据}=this.state;const{id}=locationQuery;///获取当前页面地址栏的idconstinfo=queryA…

    2022年5月30日
    35
  • PEST分析模型「建议收藏」

    PEST分析模型「建议收藏」PEST分析模型PEST分析模型(PESTAnalysis)PEST模型简介  PEST分析是战略咨询顾问用来帮助企业检阅其外部宏观环境的一种方法。是指宏观环境的分析,宏观环境又称一般环境,是指影响一切行业和企业的各种宏观力量。对宏观环境因素作分析,不同行业和企业根据自身特点和经营需要,分析的具体内容会有差异,但一般都应对政治(Political)、经济(Economic…

    2022年6月5日
    54
  • Python GUI编程学习思维导图

    思维导图制作工具:MindNode

    2022年4月17日
    40
  • class文件常量池与运行时常量池_java运行时常量池

    class文件常量池与运行时常量池_java运行时常量池JVM进阶(十九)——Class文件常量池  在上一博文《JVM进阶(十八)——初识Class文件》中,我们了解了Class文件的一些基础知识。他的整个内部结构就是一张很大的表,我们就是从这张表入手,一一分析每个部分的结构。继续看这张表:  接着上一博文所说,魔数后面分别是次版本号和主版本号。由上图可知其分别占用两个字节。  被蓝色框框住的就是次版本号,划红线的就是主版本号。再次说明

    2025年10月15日
    2
  • 理解和正确使用Java中的断言(assert)

    理解和正确使用Java中的断言(assert)随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)一、语法形式:Java2在1.4中新增了一个关键字:assert。在程序开发过程中使用它创建一个断言(assertion),它的语法形式有如下所示的两种形式:1、assertcondition;这…

    2022年7月25日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号