位置:轻松日志 » 帮助/文摘
什麽是IPv6?
发表于:2004/06/15 09:27:00
什麽是IPv6?
传统的IP,即IPv4(IP version 4)定义IP地址的长度为32位,Internet上每个主机都分配了一个(或多个)32位的IP地址。32位的地址在DARPA时代的互联网络看来还是足够使用的,同时网络地址的分类(A、B、C、D、E类)和提取也提高了路由的效率。 但是在80年代早期,即使是最有远见的TCP/IP开发者们也没有预料到互联网会有后来的爆炸性的增长。Internet的设计者们没有想到今天Internet会发展到如此大的规模,更没有预测到今天Internet因为发展规模所陷入的困境。1987年统计表明可能将来需要分配多达100,000个网络,然而早在1996年这个记录已经被打破。自从1992年以来,特别是WWW服务普及之后,网络节点的数目开始几何级数的增长。
地址短缺问题的根源有绝对的一面也有相对的一面。绝对的一面就是32位的空间是十分有限的;相对的一面就是,尽管现行的32位IPv4的地址结构可以为1670万个网络上的超过40亿台主机分配地址,但实际上的地址分配效率远远达不到这个数值,甚至在理论上也不可能。 网络增长不仅导致地址总数量的不够,也导致路由表的迅速膨胀。
IPng(IP Next Generation)问题就是在IPv4的地址空间出现危机时提出的,地址即将耗尽和路由表的过度膨胀是促使IPng问题产生的直接原因。但是IPng试图解决许多问题。IPv4协议是在十几年前设计的,当时的互联网远远没有达到今天的规模,网络连接的速度十分有限,网络应用的类型也比较单一,以文本数据的传输为主。互联网商业化,特别是WWW发明以来,互联网在规模和应用上发生了革命性了变化。声音、图像、甚至触觉都已经或者即将进入互联网络,在分组交换网络中传输这些业务希望具有实时特性,纯粹的"best effort"的传输已经很难满足要求;其次,可连接规模的扩大,导致安全成为日益重要的问题,人们希望能够确认信息的确发给了正确的节点,同时还不希望在传输的中途被截留或者监听;再者,人们一直幻想"在任何时间(whenever)任何地点(wherever)同任何人(whomever)"进行通信,随着通信技术的迅速发展,移动性成为对未来互联网的重要期望。因此IPng的目标是设计一个全新的互连网络协议。 90年代初,人们开始讨论新的互联网络协议。IETF的IPng工作组在1994年9月提出了一个正式的草案"The Recommendation for the IP Next Generation Protocol",1995年底确定了IPng的协议规范,分配了版本号6(版本号5已经被分配另一种草案),称为"IP version 6"(IPv6),同现在使用的版本4相区别;1998年又作了较大的改动。
IP协议是互联网体系结构的核心,它必须具备相对的稳定性。IPv6作为Internet Protocol的新版本,其根本目的是继承和取代IPv4。因此,人们在规划IPv6的时候,就把眼光投向了包括地址在内的上述重要需求,希望能够解决这些目前已经出现和将来可能出现的问题。从IPv4到IPv6的改变将不可避免的带来Internet上新的革命,无论是硬件还是软件都将有全新的发展。但是,原有的IPv4协议已经成功的实施了将近二十年,在Internet上,甚至有许多通信协议标准比Internet还要早,Internet协议和标准化是有一个简单的原则的:
只要可以应用现有的协议标准,就使用它们;只有当现有的标准不够时才制定新的协议,而且只要能够得到这些新的标准,而它们又能够提供等价的功能,就使用这些新的标准。
所以,IPv6协议的意图并不是排斥和避免已有的标准。它的产生只是因为传统的IPv4不能满足需要。在IPv6完全取代IPv4之前,不可避免的,这两种协议要有一个可能是相当长的共存时期,IPv6可能需要在研究所和学术机构中进行足够的试验,才能象IPv4一样成功的投入商业运营。因此,从IPv4到IPv6要有一个过渡时期。
IPv6在IPv4的基础上进行改进,它的一个重要的设计目标是与IPv4兼容。制订IPv6时,IETF致力于产生一种开放的标准,因此他们邀请了许多团体来参加标准的制订过程,研究人员、计算机制造商、程序设计人员、管理人员、用户、电话公司以及有线电视产业都对下一代IP提出了他们的要求和建议。但是作为一种新的协议,从诞生于实验室和研究所到实际应用于Internet是有很大距离的。不可能要求立即将所有节点都演进到新的协议版本,所以在一定的时间内,IPv6将和IPv4共同存在共同运行。如果没有一个过渡方案,再先进的协议也没有实用意义,因此从IPv4网络向IPv6网络过渡的问题从一开始就列入了开发者的日程表。
在相当时间内,IPv6节点之间的通信还要依赖于原有IPv4网络的设施,而且IPv6节点也必不可少的要与IPv4节点通信,我们希望这种通信能够高效的完成,对用户隐藏下层细节。同时,IPv4已经应用了十多年,基于IPv4的应用程序和设施已经相当成熟而完备,我们希望以最小的代价来实现这些程序在IPv6环境下的应用。所有这些都提出了从IPv4网络向IPv6网络高效无缝互连的问题。 对于过渡问题和高效无缝互连问题的研究已经取得了许多成果,形成了一系列的技术和标准。
一个纯IPv6网络的实现与原来IPv4网络并没有差别,在路由协议和域名解析上也不需要特定的机制来支持,仅仅需要对原来的协议和应用程序进行修改就可以了。 但是对于一台主机或者一个网络在不同协议之间的通信来说,情况就发生了变化。由于报文在传输中要经过两种运行在不同协议下的网络环境,报文的翻译是一个问题,同时由于两种协议表示地址的方法不同,如何在协议地址之间标示信源和信宿也是必须处理的。 在IPv6的网络流行于全球之前,总是有一些网络首先具有IPv6的协议栈。这时,这些网络就像IPv4海洋中的小岛。过渡的问题可以分成两大类: 第一类就是解决这些IPv6的小岛之间互相通信的问题, 第二类就是解决IPv6的小岛与IPv4的海洋之间通信的问题。
第一篇描述过渡问题的RFC是RFC 1933,这篇文章中提出了解决过渡问题的两种最基本的技术:双协议栈(Dual Stack)和隧道(Tunnel)。我们所讨论的过渡机制(Transition Mechanism)都是在这两种技术的基础之上针对特定的问题的解决方案。但是目前还没有一种机制能够一劳永逸的解决这个问题,每一种具体的机制都是针对具体的情况的。
双协议栈 在实践当中,最典型的是IETF提出的叫"双协议栈"的方案。需要提前说明的是,双协议栈技术并不具备创建隧道的能力;但是,后面提到的创建隧道的能力则必须要求有双协议栈技术的支持。 双协议栈方案的工作方式如下:
# 如果应用程序使用的目的地址是IPv4地址,则使用IPv4协议
# 如果应用程序使用的目的地址是IPv6中的IPv4兼容地址,则同样使用IPv4协议,所不同的是,此时IPv6就封装(encapsulated)在IPv4当中
# 如果应用程序使用的目的地址是一个非IPv4兼容的IPv6地址,那么此时将使用IPv6协议,而且很可能此时要采用隧道等机制来进行路由、传送
# 如果应用程序使用域名来作为目标地址,那么此时先要从DNS服务器那里得到相应的IPv4/IPv6地址,然后根据地址的情况进行相应的处理
对目前的环境来说,要实现纯粹IPv6的路由是很困难的,因此,人们一般采用IPv6 over IPv4 的点对点隧道技术。将IPv6分组打包,放入IPv4分组的数据区,加上IPv4的报头,在IPv4互联网世界中进行路由,到达目的地后再把数据区中的IPv6分组取出来作相应的处理,该继续路由的路由,该收发的收发。这样,就可以实现"双协议栈"的过渡方案。 最后,对于实现IPv6协议栈,尽管在细节上,IPv6和IPv4有很大的不同,但是从原理和它们在网络体系结构中的位置来看,是相当的一致的。这些一致使得开发人员只需要很小的付出就可以实现从IPv4到IPv6协议栈的转换。
隧道 所谓隧道技术,就是将具有自身协议的复杂网络作为一般的硬件传输系统对待。前文已经提到,在IPv6的网络流行于全球之前,总是有一些网络首先具有IPv6的协议栈,这些网络就像IPv4海洋中的小岛,隧道就是通过"海底"连接这些小岛的通道,因此而得其名。由于隧道上的链路是逻辑的,或称为虚拟的,因此,这些"小岛"所互连而成的网络就被看作是一个虚拟网络。在IPv6 Native Network之间需要通信或IPv6节点需要与IPv4 的节点通信时,IPv4协议就被当作IPv6数据传输的一个隧道。通过隧道,IPv6分组被作为无结构无意义的数据,封装在IPv4数据报中,被IPv4网络传输。由于IPv4网络把IPv6数据当作无结构无意义数据传输,因此不提供帧自标示能力,所以只有在IPv4连接双方都同意时才能交换IPv6分组,否则收方会将IPv6分组当成IPv4分组而造成混乱。网络从IPv4向IPv6演进的过程就是这些"小岛"渐渐扩大而成为"大陆"的过程。 综合以上两节,现阶段Internet上IPv4和IPv6通信的模式如下图所示:

针对目前Internet上的各种IPv4与IPv6之间通信的情况,人们已经开发出了许多有效的过渡机制。
IPv6的小岛之间通信的情况
针对这一类问题,又可以划分多种情况。 1. 手工配置多条隧道,适用于具备双协议栈的站点(sites)之间通信。所谓站点,既可以是一台主机,也可以是一系列主机。 2. 自动隧道配置如Tunnel Broker,适用于具备双协议站的主机之间通信。 3. 6to4机制,适用于站点之间通信,为了实现这个机制,每个站点内部的主机可以仅仅配置IPv6协议栈,但是每个站点必须至少有一台"6to4"的路由器作为出入口,支持全球统一的6to4 TLA(Top Level Aggregation)前缀格式,并实施特殊的封装和转发机制。 4. 6over4机制,适用于具备双协议栈的主机之间通信。它利用IPv4的multicast机制来创建虚拟链路而不是显式的隧道。
IPv6小岛与IPv4海洋之间通信的情况
这一类问题下同样有多种情况,目前的过渡机制都是通过以下途径实现的:应用级转发;网络层翻译;为IPv6节点暂时分配IPv4地址。 1. 双协议栈有限双协议栈,适用于具备双协议栈的站点的通信。 2. Socks64(Socket 6 to 4)机制,适用于IPv6的站点和IPv4站点的通信。它实际上是一种网关的转发机制,实施socks64的网关为IPv6的节点提供分组的转发和翻译。 3. SIIT(Stateless IP/ICMP Translator)机制,适用于IPv6的站点和IPv4站点的通信。它实际上在IPv4和IPv6的分组报头之间进行翻译,使用IPv4映射的IPv6地址进行通信。 4. NAT-PT(Network Address Translation - Protocol Translation)机制,适用于IPv6 only站点和IPv4 only站点之间的通信。它进行IPv6和IPv4地址之间的翻译。 5. BIS(Bump-in-the-Stack)机制,适用于具备双协议栈的主机与IPv4的世界通信。它在IPv4的协议栈中插入三个模块:域名解析器、地址映射器和翻译器。
|