anycast隧道_讲述IPv6网络中的选播概述及Anycast困难解决方法

anycast隧道_讲述IPv6网络中的选播概述及Anycast困难解决方法APanoramaofAnycastinIPv6NetworksSUNFei,LIZhi-tang,LIYao(NetworkCentre,HuazhongUniversityofScienceandTecnology,Wuhan430074)Abstract:Anycastisanew“one-to-one-of-many”communicati…

大家好,又见面了,我是你们的朋友全栈君。

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地址的包会被发往另外一台主机,如单播里的多宿。路由器只是简单的选择路径,而并不考虑包被发往了一个还是两个、甚至更多个主机。

anycast隧道_讲述IPv6网络中的选播概述及Anycast困难解决方法

图1  选播的网络拓扑图

如图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.net/142340.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微信公众号tp3.2放进Model无效,几种实例化的方法试过,还是提示无法提供服务…

    微信公众号tp3.2放进Model无效,几种实例化的方法试过,还是提示无法提供服务…

    2021年9月25日
    56
  • python读写json_python格式化json

    python读写json_python格式化jsonJSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。JSON在python中分别由list和dict组成。这是用于序列化的两个模块:json:用于字符串和p

    2022年8月31日
    0
  • List去重工具类

    List去重工具类publicclassListUtil{Setset=newHashSet();List<T>newList=List.newArrayList();Iterator<?>iterator=list.iterator();where(iterator.next()){Tobject=…

    2022年5月13日
    56
  • 电脑蓝屏错误代码0x000000ED_电脑蓝屏0*000000ed怎么解决

    电脑蓝屏错误代码0x000000ED_电脑蓝屏0*000000ed怎么解决电脑蓝屏的原因很多,不同的电脑蓝屏显示的代码不同,对应的解决方法也不同。最近就有网友说自己的电脑蓝屏代码0x000000ed怎么办,不知道0x000000ed是什么意思。今天小编就教下大家修复电脑蓝屏代码0x000000ed的解决方法。0x000000ed蓝屏原因:说明I/0子系统试图加载到引导卷时失败。一般因为不正常断电导致的硬盘故障,从而导致启动时不能正常加载。具体的解决方法如下:1、先开机按f8看能否进入安全模式,能够进入的话,打开运行/输入CMD,键入命令chkdsk/f/r回…

    2022年10月8日
    0
  • 微信小程序蓝牙通讯蓝牙模块demo[通俗易懂]

    微信小程序蓝牙通讯蓝牙模块demo[通俗易懂]公司项目用到蓝牙和硬件通讯,APP正在开发,弄一个微信小程序蓝牙通讯的demo,可能后期会有微信蓝牙的项目,第一次搞,遇到2个坑:1.安卓和苹果获取的硬件服务UUID顺序不同2.目前用的这一版“启用低功耗蓝牙设备特征值变化时的notify功能”在安卓和苹果的测试机上都返回启动失败,其实是已经启动成功,在我同事安卓手机上返回的正常。index.wxml适配器状态:{{

    2022年5月2日
    36
  • 整型与字符串转换

    整型与字符串转换我们写程序的时候经常会遇到整型和字符串相互转换的问题,这里要用到几个函数,itoa(),atoi(),sprintf()下面来介绍下这几个函数的具体用法!itoa功能:把一整数转换为字符串用

    2022年7月2日
    26

发表回复

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

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