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


相关推荐

  • kettle下载安装使用教程

    kettle下载安装使用教程Kettle简介Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行, 数据抽取高效稳定。Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两…

    2022年5月24日
    28
  • 一个喜欢研究车的80后开车人,自己的经验和感受英语_开老车的年轻人

    一个喜欢研究车的80后开车人,自己的经验和感受英语_开老车的年轻人1. 白色车,安全系数最高。       澳大利亚研究者新近发布调查报告,黑色汽车在白天与黑夜的事故率均高居榜首。在白天,黑色汽车比白色汽车事故率高12%,在黎明前和黄昏后则高47%。       特别是傍晚的时候,远处跑来一辆黑色轿车,总感觉像穿了隐形衣,我还是比较喜欢白色车,总是很显眼。在民间还有一种说法,白色汽车油耗低,原因是车…

    2022年9月13日
    1
  • linux下搭建kafka集群,linux系统zk+Kafka集群搭建

    linux下搭建kafka集群,linux系统zk+Kafka集群搭建Kafka集群搭建与配置准备工作安装java环境搭建zookeeper集群搭建kafka集群1.准备工作1.1安装包1.2准备至少3台主机(ubuntu系统)如果没有物理机,也可以弄3台虚拟机。ubuntu系统不会安装的话可以自己百度哦,这里就不细说了。作者用的是虚拟机,下面是3台电脑的配置主机名IP地址硬件配置kafka-1192.168.1.424CPU、4G内存、128G存储kafka…

    2022年4月29日
    45
  • spinner:获取选中值的三种方法

    spinner:获取选中值的三种方法

    2021年9月30日
    129
  • 什么是SOA架构?为什么使用SOA架构?

    什么是SOA架构?为什么使用SOA架构?SOA架构简介面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互**SOA具有以下五个特征**1.可重用;2.松耦合;3.明确定义的接口;…

    2022年6月24日
    27
  • PowerBI通过gateway连接多维数据库

    PowerBI通过gateway连接多维数据库

    2021年11月26日
    43

发表回复

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

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