任播——anycast技术概述

根据RFC2526(Reserved IPv6 Subnet Anycast Addresses, March 1993),任播地址是“IPv6中保留的地址,指定给一个或多个可能属于不同物理节点的网络接口。其属性为发送到任播地址的数据分组会按照路由选择协议的距离方法,被路由选择到有该地址的最近接口。”另一特点是,任播地址与常规单播地址相似。向单播地址发送数据分组的节点并不需要知道它是单播地址。
Anycasting最初是在RFC1546中提出并定义的,它的最初语义是,在IP网络上通过一个Anycast地址标识一组提供特定服务的主机,同时服务访问方并不关心提供服务的具体是哪一台主机(比如DNS或者镜像服务),访问该地址的报文可以被IP网络路由到这一组目标中的任何一台主机上,它提供的是一种无状态的、尽力而为的服务。
在RFCl546(Host Anycasting Service, November 1993)中,论述了任播的目的;但那时还没有开发IPv6寻址。理由是客户端需要两个或多个服务器提供的服务。客户端不介意哪个服务器提供服务,重要的一点是使客户端的查找服务更容易。例如,客户可以键入请求并被连接到最近的服务器,而不必从信息服务器列表中选择。任播也提供容错,因为如果有服务器出现故障,服务器组中的其他服务器可以提供服务。
RFC2373(IP Version 6 Addressing Architecture, July 1998)提供了较新的说明和动机:任播地址的一个期望应用是标识属于某个提供互联网服务的机构的路由器集合。这种地址可以用作IPv6路由标题的中间地址,使数据分组通过某一聚合或聚合序列传递。其他可能的用途是标识属于某一子网的路由器组或提供进入某一路由范围入口的路由器组。
RFC2373标准对任播的定义是,当一个单播地址被分配到多于一个的接口上时,发到该接口的报文被网络路由到由路由协议度量的“最近”的目标接口上。与Unicast和Multicast类似,Anycast也是IP网络的一种通信模式。Unicast允许源结点向单一目标结点发送数据报,Multicast允许源结点向一组目标结点发送数据报,而Anycast则允许源结点向一组目标结点中的一个结点发送数据报,而这个结点由路由系统选择,对源结点透明;同时,路由系统选择“最近”的结点为源结点提供服务,从而在一定程序上为源结点提供了更好的服务也减轻了网络负载。
目前,任意点传送地址仅被用做目标地址,且仅分配给路由器。任意点传送地址是从单点传送地址空间中分配的,使用了单点传送地址格式中的一种。任播地址结构如图1所示。
子网-路由器任意点传送地址必须经过预定义,该地址从子网前缀中产生。为构造一个子网-路由器任意点传送地址,子网前缀必须固定,余下的位数置为全“0”。一个子网内的所有路由器接口均被分配该子网的子网-路由器任意点传送地址。子网-路由器任意点传送地址用于一组路由器中的一个与远程子网的通信。
对任意的任播地址,都有最长的地址前缀P,它限定了一个拓扑区域,所有属于该任播地址的接口都处在这个区域中。在P所限定的这个区域中,属于该任播地址集合的每一个成员都必须作为寻经系统中的单独入口而被广告;在该区域之外,该任播地址也许会聚集到对该前缀P的寻经广告中。
一个任播地址有一个拓扑区域,属于该任播地址的所有成员都位于其中。在该区域内,每个成员必须作为路由选择系统中的一个独立项公布,但在区域外,这些成员作为单一的聚合任播地址存在。
RFC1546论述了一些潜在的问题。例如,IP是无国界的,而且并不记录较早的数据报是在哪里传递的。如果客户端向任播地址发送两个数据报,一个可能会发送到某一服务器上,而另一个可能会发送到另一个服务器上。若要确保选定任播服务器后,所有以后的数据分组都传输到该服务器,需要一种机制。任播数据报还有可能会被发送到服务于该任播地址的所有主机上。鉴于这些问题,RFC提供了IP任播较正确的定义,即“向服务于任播地址的至少一个主机,最好仅一个主机提供任播数据报的无国界最佳效果传递的服务。
RFC认为解决方法是,在第一次数据报交换中了解客户端地址并将其用在所有以后的对话中,要求应用程序保持状态。有关任播寻址、其体系结构、在应用程序中的使用、安全性考虑以及其他细节的RFC2526提供了更多有关如何与IPv6一起实现任播的最新建议。
任播通信模式的特点,使它在IP网络中具有了一定程序的应用前景。首先,分布的服务共享相同的IP地址,同时在IP层进行透明的服务定位,这使得各种网络服务特别是应用层服务具有更强的透明性,比如DNS,在IPv6网络中它可以共享一个熟知的IP地址,用户不需要特殊配置也不用关心访问的是哪一台DNS服务器;其次,路由系统选择了“最近”的服务,缩短了服务响应的时间,同时减轻了网络负载;最后,相同的服务在网络上冗余分布,路由系统可以提供机制选择负载相对轻的带宽相对高的路径来转发报文,这样就给用户带来了两个方面的好处:
1)减弱了DOS攻击对用户带来的影响。当任播组中某一个成员或者几个成员受到攻击时,负责报文转发的路由器可以根据各个组成员的响应时间来决定报文应该转发到哪个成员上,这样受到攻击的成员由于没有响应,所以报文就不会被转发到那里,同时,由于任播提供的服务访问透明性,组成员也相对较难受到DOS攻击。
2)减弱了网络拥塞给用户带来的影响。同上面的道理,当任播的某些组成员处在拥塞的网段时,它的响应时间就较长,报文可以被转发到响应较好的成员那里。

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

原创文章,作者:赛福,如若转载,请注明出处:https://www.safecdn.cn/cdn/2017/06/anycast-technology.html