IPv6地址介绍
1. 认识IPv6地址
IPv4地址是类似 A.B.C.D 的格式,它是32位,用\".\"分成四段,用10进制表示;而IPv6地址类似X:X:X:X:X:X:X:X的格式,它是128位的,用\":\"分 成8段,用16进制表示;可见,IPv6地址空间相对于IPv4地址有了极大的扩充。
RFC2373 中详细定义了IPv6地址,按照定义,一个完整的IPv6地址的表示法:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
例如: 2001:0000: 1F 1F :0000:0000:0100: 11A 0:ADDF
为了简化其表示法, rfc2373提出每段中前面的0可以省略,连续的0可省略为\"::\",但只能出现一次。例如:
1080:0:0:0:8:800: 200C : 417A 可简写为 1080::8:800: 200C : 417A
FF01:0:0:0:0:0:0:101 可简写为 FF01::101
0:0:0:0:0:0:0:1 可简写为 ::1
0:0:0:0:0:0:0:0 可简写为 ::
类似于 IPv4中的CDIR表示法,IPv6用前缀来表示网络地址空间,比如:
2001:251:e000::/48 表示前缀为48位的地址空间,其后的80位可分配给网络中的主机,共有2的80次方个地址。
为了使您更好的理解 IPv6,在这里给出一个表格,以比较IPv4和IPv6地址对应关系和区别。
IPv4地址 | IPv6地址 |
组播地址( 224.0.0.0/4) | IPv6组播地址(FF00::/8) |
广播地址 | 无,只有任播( anycast)地址 |
未指定地址为 0.0.0 .0 | 未指定地址为 :: |
回路地址为 127.0.0.1 | 回路地址为 ::1 |
公用 IP地址 | 可汇聚全球单播地址 |
私有地址( 10.0.0 .0/8、172.16.0.0/12和192.168.0.0/16) | 本地站点地址( FEC0::/48) |
Microsoft自动专用IP寻址自动配置的地址(169.254.0.0/16) | 本地链路地址( FE80::/64) |
表达方式:点分十进制 | 表达方式:冒号十六进制式(取消前置零、零压缩) |
子网掩码表示:以点阵十进制表示法或前缀长度表示法( CIDR) | 子网掩码表示:仅使用前缀长度表示法( CIDR) |
2. IPv6地址分类
IPv6地址是独立接口的标识符,所有的IPv6地址都被分配到接口,而非节点。由于每个接口都属于某个特定节点,因此节点的任意一个接口地址都可用来标识一个节点。IPv6有三种类型地址:
1) 单点传送(单播)地址
|
一个IPv6单点传送地址与单个接口相关联。发给单播地址的包传送到由该地址标识的单接口上。但是为了满足负载平衡系统,在RFC 2373中允许多个接口使用同一地址,只要在实现中这些接口看起来形同一个接口。
IPv6单点传送地址包括:可聚集全球单点传送地址、链路本地地址、站点本地地址和其他一些特殊的单点传送地址。
(1) 可聚集全球单点传送地址
可聚集全球单点传送地址,顾名思义是可以在全球范围内进行路由转发的地址,格式前缀为001,相当于IPv4公共地址。全球地址的设计有助于构架一个基于层次的路由基础设施。与目前IPv4所采用的平面与层次混合型路由机制不同,IPv6支持更高效的层次寻址和路由机制。可聚集全球单点传送地址结构如图1所示。
图1、可聚集全球单点传送地址结构
001是格式前缀,用于区别其它地址类型。随后分别是13位的TLA ID、8位的Res、24位的NLA ID、16位SLA ID和64位主机接口ID。TLA(Top Level Aggregator,顶级聚合体)、NLA(Next Level Aggregator,下级聚合体)、SLA(Site Level Aggregator,节点级聚合体)三者构成了自顶向下排列的三个网络层次。TLA是与长途服务供应商和电话公司相互连接的公共骨干网络接入点,其ID的分配由国际Internet注册机构IANA严格管理。NLA通常是大型ISP,它从TLA处申请获得地址,并为SLA分配地址。SLA也可称为订户(subscriber),它可以是一个机构或一个小型 ISP。SLA负责为属于它的订户分配地址。SLA通常为其订户分配由连续地址组成的地址块,以便这些机构可以建立自己的地址层次结构以识别不同的子网。分层结构的最底层是网络主机。
注:Res是8位保留位,以备将来TLA或NLA扩充之用。
(2) 本地使用单点传送地址
本地单点传送地址的传送范围限于本地,又分为链路本地地址和站点本地地址两类,分别适用于单条链路和一个站点内:
·链路本地地址
链路本地地址,格式前缀为1111 1110 10,用于同一链路的相邻节点间通信,如单条链路上没有路由器时主机间的通信。链路本地地址相当于当前在Windows下使用169.254.0.0/16前缀的APIPA IPv4地址,其有效域仅限于本地链路。链路本地地址可用于邻居发现,且总是自动配置的,包含链路本地地址的包永远也不会被IPv6路由器转发。
·站点本地地址
站点本地地址,格式前缀为1111 1110 11,相当于10.0.0.0/8、172.16.0.0/12和 192.168.0.0/16等IPv4私用地址空间。例如企业专用Intranet,如果没有连接到IPv6 Internet上,那么在企业站点内部可以使用站点本地地址,其有效域限于一个站点内部,站点本地地址不可被其他站点访问,同时含此类地址的包也不会被路由器转发到站外。一个站点通常是位于同一地理位置的机构网络或子网。与链路本地地址不同的是,站点本地地址不是自动配置的,而必须使用无状态或全状态地址配置服务。
站点本地地址允许和Internet不相连的企业构造企业专用网络,而不需要申请一个全球地址空间的地址前缀。如果该企业日后要连入Internet,它可以用它的子网ID和接口ID与一个全球前缀组合成一个全球地址。IPv6自动进行重编号。
(3) 兼容性地址
在IPv4向IPv6的迁移过渡期,两类地址并存,我们还将看到一些特殊的地址类型:
·IPv4兼容地址
IPv4兼容地址,可表示为0:0:0:0:0:0:w.x.y.z或::w.x.y.z(w.x.y.z是以点分十进制表示的IPv4地址),用于具有IPv4和IPv6两种协议的节点使用IPv6进行通信。
·IPv4映射地址
IPv4映射地址是又一种内嵌IPv4地址的IPv6地址,可表示为0:0:0:0:0:FFFF:w.x.y.z或::FFFF:w.x.y.z。这种地址被用来表示仅支持IPv4地址的节点。
·6to4地址
6to4地址用于具有IPv4和IPv6两种协议的节点在IPv4路由架构中进行通信。6to4是通过IPv4路由方式在主机和路由器之间传递IPv6分组的动态隧道技术。
2) 多点传送(组播)地址
一个多点传送地址标识多个接口。发给组播地址的包传送到该地址标识的所有接口上。IPv6协议不再定义广播地址,其功能可由组播地址替代。
IPv6的多点传送(组播)与IPv4运作相同。多点传送可以将数据传输给组内所有成员。组的成员是动态的,成员可以在任何时间加入一个组或退出一个组。
IPv6多点传送地址格式前缀为1111 1111,此外还包括标志(Flags)、范围域和组ID等字段,如图2所示。
图2、IPv6多点传送地址
4位Flags,可表示为:000T。其中高三位保留,必须初始化成0。T=0 表示一个被IANA永久分配的多点传送地址;T=1表示一个临时的多点传送地址。4位Scope是一个多点传送范围域,用来限制多点传送的范围。表1列出了在RFC 2373中定义的Scope字段值。
Group ID标识一个给定范围内的多点传送组。永久分配的组ID独立于范围域,临时组ID仅与某个特定范围域相关。
3) 任意点传送(任播)地址
任意点传送地址标识一组接口(通常属于不同的节点),发送给任播地址的包传送到该地址标识的一组接口中根据路由算法度量距离为最近的一个接口。如果说多点传送地址适用于one-to-many的通讯场合,接收方为多个接口的话,那么任意点传送地址则适用于one-to-one-of-many的通讯场合,接收方是一组接口中的任意一个。
一个 IPv6任意点传送地址被分配给一组接口(通常属于不同的节点)。发往任意点传送地址的包传送到该地址标识的一组接口中根据路由算法度量距离为最近的一个接口。目前,任意点传送地址仅被用做目标地址,且仅分配给路由器。任意点传送地址是从单点传送地址空间中分配的,使用了单点传送地址格式中的一种。
子网-路由器任意点传送地址必须经过预定义,该地址从子网前缀中产生。为构造一个子网-路由器任意点传送地址,子网前缀必须固定,余下的位数置为全“0”,见图3。
图3、子网-路由器任意点传送地址
一个子网内的所有路由器接口均被分配该子网的子网-路由器任意点传送地址。子网-路由器任意点传送地址用于一组路由器中的一个与远程子网的通信。
3. 常见的IPv6地址及其前缀
• ::/128 即0:0:0:0:0:0:0:0,只能作为尚未获得正式地址的主机的源地址,不能作为目的地址,不能分配给真实的网络接口。
• ::1/128 即0:0:0:0:0:0:0:1,回环地址,相当于IPv4中的localhost(127.0.0.1),ping locahost可得到此地址。
• 2001::/16 全球可聚合地址,由 IANA 按地域和ISP进行分配,是最常用的IPv6地址,属于单播地址。
• 2002::/16 6 to 4 地址,用于6to4自动构造隧道技术的地址,属于单播地址。
• 3ffe::/16 早期开始的IPv6 6bone试验网 地址,属于单播地址。
• fe80::/10 本地链路地址,用于单一链路,适用于自动配置、邻机发现等,路由器不转发以fe80开头的地址。
• ff00::/8 组播地址。
• ::A.B.C.D 兼容IPv4的IPv6地址,其中<A.B.C.D>代表IPv4地址。自动将IPv6包以隧道方式在IPv4网络中传送的IPv4/IPv6节点将使用这些地址。
• ::FFFF:A.B.C.D 是IPv4映射过来的IPv6地址,其中<A.B.C.D>代表IPv4地址,例如 ::ffff:202.120.2.30 ,它是在不支持IPv6的网上用于表示IPv4节点。
4. 综合组网技术
在目前 IPv6和IPv4共存的情况下,实现V4和V6互联互通的综合组网技术和策略有:
1) 双栈策略
双栈策略是指在网元中同时具有 IPv4和IPv6两个协议栈,它既可以接收、处理、收发IPv4的分组,也可以接收、处理、收发IPv6的分组。对于主机(终端)来讲,“双栈”是指其 可以根据需要来对业务产生的数据进行IPv4封装或者IPv6封装。对于路由器来讲,“双栈”是指在一个路由器设备中维护IPv6和IPv4两套路由协议 栈,使得路由器既能与IPv4主机也能与IPv6主机通信,分别支持独立的IPv6和IPv4路由协议,IPv4和IPv6路由信息按照各自的路由协议进 行计算,维护不同的路由表。IPv6数据报按照IPv6路由协议得到的路由表转发,IPv4数据报按照IPv4路由协议得到的路由表转发。
2) 隧道策略
隧道策略是 IPv4/v6综合组网技术中经常使用到的一种机制。所谓“隧道”,简单地讲就是利用一种协议来传输另一种协议的数据技术。隧道包括隧道入口和隧道出口 (隧道终点),这些隧道端点通常都是双栈节点。在隧道入口以一种协议的形式来对另外一种协议数据进行封装,并发送。在隧道出口对接收到的协议数据解封装, 并做相应的处理。在隧道的入口通常要维护一些与隧道相关的信息,如记录隧道MTU等参数。在隧道的出口通常出于安全性的考虑要对封装的数据进行过滤,以防 止来自外部的恶意攻击。
隧道的配置方法分为手工配置隧道和自动配置隧道,而自动配置隧道又可以分为兼容地址自动隧道、 6to4隧道、6over4、ISATAP、MPLS隧道、GRE隧道等,这些隧道的实现原理和技术细节都不相同,相应的,其应用场景也就不同。