任意播技术

转自:[url]http://sj.media.edu.cn/xiayidai/index2.php?id=2&IDx=275[/url]
通讯 是支持导向服务地址的,可是目前IPv6中它的不少定义是模糊的,而且在控制路由方面没有达成一致的协议标准,所以节点间任播通讯仍然没法实现。
 
 
在本文中首先说明了基于IPv6的任播通讯,及目前在该领域中存在许多可能的应用,并指出一些问题和与之对应的解决办法,随后介绍了一种使用特殊任播地址来创建TCP链接的任播地址解析协议(AARP),使得任播地址在适应已经存在的应用和高层协议时,不须要修改或者扩展的状况下更加有效。
 
1 IPv6 地址类型的概述
 
IPv6 地址长度为128比特,地址按照其传输类型分为三种,即单播地址(UnicastAddress)、多播地址(Multicast Address)和任播地址(Anycast Address)。单播和多播地址在IPv4中已经存在,任播地址是IPv6中新的成员,RFC 2723IPv6地址结构中的的任播地址定义为一系列网络接口(一般属于不一样的节点)的标识,其特色是:发往一个任播地址的分组将被转发到由该地址标识的最近的一个网络接口(最近的定义是基于路由协议中的距离度量)。
 
单播地址是每一个网络接口的惟一的标识符,多个接口不能分配相同的单播地址,带有一样目的地地址的数据包被发往同一个节点;另外一方面,多播地址被分配给一组节点,组中全部成员拥有一样的组播地址,而带有一样地址的数据包同时发给全部成员;相似于多播地址,单一的任播地址被分配给多个节点(任播成员),但和多播机制不一样的是:每次仅有一个分配任播地址的成员与发送端通讯。通常与任播地址相关的有三个节点,当源节点发送一个目的地地址为任播地址地数据包时,数据包被发送给三个节点中的一个,而不是全部的主机。任播机制的优点在于源节点不须要了解服务节点或目前网络的状况,而能够接收特定服务,当一个节点没法工做时,带有任播地址的数据包又被发往其余两个主机节点,从任播成员中选择合适的目的地节点取决于任播路由协议。
 
2 IPv6 任播技术的分析
 
任播技术是一种新的网络应用,它可以支持把一样的地址能够分配给多个节点去提供特定服务的以服务导向的地址,而带有任播目的地地址的数据报可以使用相同的任播地址并被传给众多节点中的任意一个。因特网研究任务组(IRTF)在1993年到RFC 1546中已经定义了任播技术的做用:主机向一个任播地址发送数据报,网络负责尽力将数据报传递到至少一个,最好也是一个,按任播地址接收数据的服务器上。'采用任播机制的初衷是完全去简化在互联网中寻找合适服务器的任务;任播通讯的基本概念是从物理主机设备中分离出的逻辑服务标识符,任播地址能够根据服务类型来分配,使得网络服务担当一个逻辑主机的角色。
 
虽然目前任播技术的定义不是十分清楚,可是终端主机经过路由器是被基于包交换所决定。任播技术的概念并不局限于网络层,它也能够在其余层实现(例如:应用层),网络层和应用层的任播技术均有优势和缺点。
 
3 IPv6 任播技术的应用
 
适合于任播通讯的应用有不少,其中比较重要的一个应用是服务器位置。发送端的主机能够在众多一样功能的主机中选择其中一个,若是合理地利用任播路由方法去将任播需求均匀的分配到主机上,任播主机之中的负载分配目标能够达到。在任播主机中使用简便的随即选择方法在网络层任播技术中却不会奏效,例如:CPU的负载,由于很难知道每一个服务器的资源使用状态,而应用层任播技术使用该方法倒是实用的。
 
另外一个重要应用是服务位置,发送端主机能够经过说明任播地址去从多个任播主机中选择与最佳的、最小时延的、最大输出量的主机进行通讯,例如:在诸如移动ad hoc网络这类动态改变环境下运用该方法特别适用。经过网络层的任播技术,节点能够和合适的或是最近的服务器进行通讯,并经过应用层任播技术得到该类服务。
 
网络层任播技术的优点在于能够提供令源节点在无须借助服务节点和网络的状况下,可以接收到特定服务机制的简便方法。
 
4 IPv6 任播技术的问题和解决方法
 
IPv6 任播技术仍然存在许多问题。首先是任播技术的使用场合和应用任播技术的优势,其次是基于IPv6的任播技术是一个路由协议并无被包括IPv6的规范说明中,而这正是使得任播技术应用更普遍不可获缺的条件,路由器应该在决定目的地网络让任播包能够合适的传送地过程当中起到主动做用。目前的任务是须要设计和应用合适的任播路由协议到任播应用场合之中,并让互联网可以逐步去支持任播技术。例如:任播路由即便在因特网中只有少许的节点或路由器支持任播技术时也可以恰当的工做。全部基于TCP和一些基于UDP的协议在互联网应用中已经说明了,端主机之间创建通讯过程,并在交换信息过程当中认为它们是一致的。
 
4.1 主机向任播成员通告参与的问题
 
节点申明除了针对任播地址的公开路由信息之外,它们能够接受的数据报,而在IPv6的技术说明中节点必须是一个路由器。一个主机准备加入成为任播成员或离开时,它必须有不一样的能力去向最近的任播路由器通告它目前的状态(加入或离开)。
4.2 支持高层申明协议的问题
 
由于任播技术拥有无状态的特性,它不能确保属于相同的任播地址的全部数据报会传到同一个目的地节点,然而这将会致使的是诸如TCP这类的全状态协议不被支持这一严重的问题。当主机向任播地址发起TCP链接时,接收端主机为了确认信息包,它将不能设置本身的任播地址做为源地址。IPv6技术说明中不容许任播地址来源于在包头设置的源地址,这主要是因为IPv6任播地址没有定义单独的源节点。若是协议容许任播地址被设置到包头的源地址,接受端主机在通讯过程当中将不能确信全部发送的数据包来自于同一个主机,也就是说主机的任播地址不能接收到包确认。
 
4.3 实现任播路由的问题
 
目前现存任播技术的标准定义路由协议都很不清楚,所以在设计IPv6任播路由协议时还存在一些相关的技术问题。
 
a)可量测性问题。因为任播成员无论它们实际的前缀时位置是分散的,因此针对任播地址的路由条目没法被汇集。所以针对任播地址的路由条目必须分别被存储在路由器中,当任播地址获得普遍应用时,路由表会变得十分拥挤。
 
b)安全问题。维持任播成员关系特别重要,对主机得到成员资格最简单的方式是它只需广播针对相关任播地址进入路由器的路由条目。可是这种方法有时会致使严重的安全问题,即任播主机能够自由的在路由表中添加或删除路由条目。
 
c)选择任播成员资格的标准。不一样的应用须要不一样的标准,若是应用中须要快速响应,在源节点和任播节点之间的传播时延就至关重要,任播成员资格的最近节点应该做出选择。任播路由机制的标准的选择对于任播通讯容量能力影响极大。
 
任播地址重要的一个特色是任播地址必须从同一个地址空间分配做为一个单播地址,于是从单播地址中没法加以区别。RFC1546原来推荐的是分配任播机制自己的地址空间,为了但愿极大地下降因为应用中错误而没法辨识出任播地址的风险。当任播路由器配置时,互联网中的一些路由器不可能处理任播地址,这些地址若是被分配在单播地址空间中,对于继承的路由器针对通讯去配置特殊的操做变得没有必要。任播路由器去判断接收包的目的地地址是不是任播地址或是单播地址是很困难的,设计路由协议也会存在问题的。
 
5 新的任播地址解析协议及应用
 
任播地址解析协议(AARP)能够知足IPv6任播和高层协议(诸如:没有必要去修改应用和协议的TCPUDP)。更明确的说,实行AARP的目的是为了解决专门用于通讯单播地址的任播地址的问题。AARP用来做为一种写在原始应用编程接口(API)之上的动态连接库(DLL),这种库其实是可以提供一套与原始IPv6API插槽相同的API插槽,并用来解决任播地址的AARP库,它能够在呼叫原始API以前将任播地址转换成相应的通讯单播地址。任播地址仅仅用于应用层和AARP库层,而在AARP库层如下的层并不采用任播地址,只是处理转换后的单播地址。
 
5.1 AARP 的地址解析过程
 
假设主机C想和任播地址为AA的另外一个主机创建任播通讯,任播地址解析过程以下:(1)主机C呼叫带有参数的任播地址的socket API模块(譬如:TCP中的connect( ) ),AARP库的API替代API的套接层面而被呼叫。(2AARP库在被叫者的功能中将任播地址转换成单播地址。(3)转换后,AARP库经过单播地址呼叫原来的socket API。(4)当通讯被创建之后,从主机C发出的全部信息包的目的地地址都给被赋以单播地址,并传输给主机S
 
5.2 AARP 的地址转换方法
 
IPv6的协议规范得知当不能自身肯定任播地址时,链接任播地址的主机通讯应该至少从目的地主机接收到一个数据包。地址转换有如下两种方法:
 
5.2.1 探测数据包法(由客户端发起)
 
主机在进行通讯以前首先发送一个探测数据包给任播地址,它能够从返回数据包的源地址中获得目的地主机的单播地址。
 
5.2.2 捎带确认法(由服务器端发起)
 
捎带确认法指的是经全双工(双向同时)数据链路,不用专门(确认)报文返回确认信息所用的技术。与一个方向的报文流有关的确认信息钳在反方向正常携带数据的报文流中,当数据包从通讯对端返传回来时,任播主机将任播地址附加到数据包。经过检查附加在数据包上的信息,能够确认数据包是从与任播地址相联系的主机上发送出的。
 
探测包方法中须要提供给探测数据包额外的网络带宽,这将会浪费网络资源。与之相对的,捎带确认方法须要修改应用使得任播地址能够捎带到数据包上。因为实际应用中应当避免应用的任何修改,必须在AARP中包括单播地址来使用探测包法。
相关文章
相关标签/搜索