关于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Django(15)外键和表关系[通俗易懂]

    Django(15)外键和表关系[通俗易懂]外键删除操作如果一个模型使用了外键。那么在对方那个模型被删掉后,该进行什么样的操作。可以通过on_delete来指定。可以指定的类型如下:CASCADE:级联操作。如果外键对应的那条数据被删除了,

    2022年7月28日
    4
  • 基于51单片机的步进电机的控制

    基于51单片机的步进电机的控制前面笔者分享过基于51单片机的两种小车制作,我们利用的是L298N驱动控制电机转动,那么接下来,笔者给大家介绍两种利用51单片机控制步进电机的小程序。首先我们要如何使电机转动呢,源程序如下:#include<reg52.h>unsignedcharcodeF_Rotation[4]={0x02,0x04,0x08,0x10};//正转表格,换算成二进制00…

    2022年5月31日
    31
  • resnet18与resnet50

    resnet18与resnet50ResNet18的18层代表的是带有权重的18层,包括卷积层和全连接层,不包括池化层和BN层。Resnet论文给出的结构图参考ResNet详细解读结构解析:首先是第一层卷积使用7∗77∗7大小的模板,步长为2,padding为3。之后进行BN,ReLU和maxpool。这些构成了第一部分卷积模块conv1。然后是四个stage,代码中用make_layer()来生成stage…

    2022年5月9日
    323
  • C#TextBox密码框

    C#TextBox密码框WebForm中的TextBox控件作为密码框(如图1)时,需要把TextMode属性设置为Password(如图2),而且要在Page_Load中使用Attributes赋值。protectedvoidPage_Load(objectsender,EventArgse){ReaderPassword.Attributes[“value”]=ReaderPassword.Text;}学习自:https://blog.c

    2022年7月25日
    12
  • SVD的理解

    SVD的理解近一段时间一直在看推荐系统相关的内容 看到协同过滤的时候 有的大佬将协同过滤分成了三种情况 当然实际情况也许不止三种 来考虑并做了相互之间的比较 其中有一种就是基于 SVD 的协同过滤 当时看到这个是一脸的懵 就赶紧查了一下相关的资料恶补一下 记录在这 SVD 定义 首先 我们来看一下什么是 SVD 奇异值分解 SingularValu 以下简称 SVD 是在机器学习

    2025年10月16日
    2
  • Not enough information to list image symbols. Not enough information to list load addresses in …「建议收藏」

    Not enough information to list image symbols. Not enough information to list load addresses in …「建议收藏」linking…..\Objects\BBQ_Wifi.axf:Error:L6218E:UndefinedsymbolClear_Led_Timer(referredfrommain.o)…\Objects\BBQ_Wifi.axf:Error:L6218E:UndefinedsymbolGet_Led_Timer(referredfrommain.o…

    2022年9月17日
    6

发表回复

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

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