大家好,又见面了,我是你们的朋友全栈君。
A Panorama of Anycast in IPv6 Networks
SUN Fei, LI Zhi-tang, LI Yao
(Network Centre, Huazhong University of Science and Tecnology,Wuhan 430074)
Abstract: Anycast is a new “one-to-one-of-many” communication method in IPv6 networks. With this technology, the problem of finding the best server to respond to a request becomes a virtual noop. Hindered by unresolved issues and the slow deployment of IPv6, network-layer anycast is still not a reality. However, an increase in interest and research surrounding anycast recently warrants a look at the state and direction of the ideas in this area. This article describes some of the major problems with network-layer anycast taking Global routing, stateful connection as examples,and their possible solutions, such as GIA, source identification option, source route option, and so on,together with some optimizations that have been developed recently.
Keywords: Anycast; Global routing; stateful connection ;GIA; source identification option; source route option
1 引言
今天,Internet大体上是一个单点运输模式的系统。对大多数活动来说,连接都是one-to-one以及end-to-end,如单播,当然,还有组播和广播,但是单播是主要的。而随着计算能力和网络技术的发展,新的应用模型将出现,互联网上的通信模式也在发展。可以预见到,未来的网络在IPv6的支持下,将比今天的规模大许多。IPv6不仅提供了增长的地址空间,同时提供移动性支持、完整的安全性、QoS支持、还有新的传输模式:Anycast。
Anycast是一种新型的网络服务,是IPv6的一个新特性。与unicast和multicast一样,它是IP的一种通信模式。Anycast给用户的期望是发送到一个anycast地址的报文被传送到由该地址标识的接口之一(最近的一个,根据路由协议的距离量度标准)[1] 。
进行路由时,Anycast被当作unicast来看。对路由算法来说,它必须给出Anycast包的正确目的地址,当然,这取决于使用的路由算法。路由算法找出“最低开销”的路径,Anycast包就被发往这个地址。当主机开始接收包时,路由器会再次更新路由标,计算最优路径。如果最优路径改变了,那么发往同一个Anycast地址的包会被发往另外一台主机,如单播里的多宿。路由器只是简单的选择路径,而并不考虑包被发往了一个还是两个、甚至更多个主机。
如图1所示,发送者1和发送者2都向一个相同的选播地址发送了一个选播包,但是1访问到Member1,2访问到Member2,它们访问的都是离自己最近的服务器。
Anycast作为一种新的网络服务被IPv6接纳,并且在最初的IPv6标准中为Anycast分配了单独的地址空间[2],不过,新的IPv6标准(RFC 2373)已经去掉了Anycast的单独地址空间,而使其共享IPv6的单播地址空间。
这里是一个Subnet-router Anycast addresses的例子。假设一个分配了如下IPv6地址的节点:
3ffe:ffff:100:f101:210:a4ff:fee3:9566/64
Subnet-router将使用没有后缀的地址 (least significant 64 bits):
3ffe:ffff:100:f101::/64
为了避免IPv6扩展过程中可能出现的问题,选播地址只被用于路由器并且只用于目的地址。
2 实现应用
选播的特性使得它在UDP以及DNS请求这些非状态连接应用方面具有很大优势[4]。
2.1 服务选择
大多数流行的以及被公认的选播应用集中在“服务器选择”这一区域。随着互联网规模的不断扩大,在许多机能相同的节点中进行选择一直是并且将来也是一个主要的研究话题。要想在合理的时间内响应请求,这个请求必须分发到众多服务器上。 Anycast的one-to-one-of-many特性可以很好地解决这个问题。
2.2 服务定位
选播在“服务定位”上也很有用。你可以让运行这些服务的所有服务器都响应同一个选播地址。这样客户自动会查找到“最近的”服务器,而不用去考虑网络或者硬件的错误。在这样的网络里添加删除节点对可用性影响微小。这在移动adhoc网络以及传感器网络中尤其重要,因为这一类网络的拓扑结构总在快速变化。
3 面临问题
在选播的全球性部署中,有些问题是与生俱来。近几年,人们提出了一些解决方案。
3.1 全球路由
也许在选播的应用中最困难的问题就是全球路由。全球范围内的Anycast使得路由聚合变得困难。路由聚合是指为缩短路由表长度提高路由效率,把具有相同地址前缀的多个IP地址合并成一个仅包含相同前缀的网络地址。在实际应用中,当这些IP地址对应相同的下一跳端口时,他们可以在路由表中被合并成一项。而全球性的anycast破坏了路由聚合,因为它允许可以通过不同的子网到达同一个地址。网络级别的选播地址也具有相同的问题,但是通过控制网络大小可以解决这个问题。而对全球范围而言,对选播地址的路由没有办法解决,除非新的路由系统出现。
3.1.1 Global IP-Anycast
GIA是一种新技术,应用在网络级别上的选播上[5]。它解决选播造成的路由聚合问题使用下面的办法:使选播只提供改良过的服务,并且可能到达的目的不是最优的服务器。对于一个给定的选播地址来说,一个本地网络被定义为共享这个子网前缀的网络。因此,每个选播地址都对应一个本地网络,在这个网络里,地址可以汇聚到典型的CIDR。当确定了一个特定的选播节点后,路由器会试着寻找比本地网络更近的节点。它发送一个BGP包来作为选播搜索包,这个包会在路由器之间穿行直到生命值(TTL)结束或者有一个路由器回应了请求。一个路由器如果回应这个请求,说明它知道一个比本地网络更近的选播节点。当搜索的路由器收到回应后,它会更新自己的选播表,并在自身和回应路由器之间建立隧道。因此,发往这个选播地址的包通过隧道发往更近的选播节点,而不是本地网络。
GIA的缺点在于它要求选播地址必须可以和其他地址区分开来,为了发展这个系统,必须有一个有效的方法来区分选播地址和单播地址。为主机分配地址时,必须确定它是单播还是选播,因此这对路由器同样有效,并且不麻烦。但是这只能在本地路由器上实现,而并不能解决全球性问题。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142340.html原文链接:https://javaforall.cn