IPv6 吆喝很多年了,但因为国内没有成熟的商用环境,所以一直觉得它离我的工作还很远。没想到,最近公司投标中科院的一个项目,就是以 IPv6(曰:基于下一代互联网的)为核心课题的,将要建成一个覆盖全国百余家科研单位的 IPv6 示范网络。
为了写标书,最近读了不少 IPv6 相关的资料,总体的感觉是有点“乱”。乱的原因,一方面,因为 IPv6 的相关标准,最近几年还在不断的变化,尤其是地址分配策略,较早的资料和新的资料有矛盾;另一方面,IPv6 网多数都处在研究和试验阶段,很多资料本身的权威性也不是太高。
这个项目和 C N N I C 有莫大的关系,我不好说这是国内 IPv6 发展的一个标志性事件,但至少说明 IPv6 相关的研究在国内加快脚步了,因为,IPv4 的地址资源实在是太紧张了。
在没有深入研究IPv6之前,我以为IPv6只是在IPv4的基础上,将地址加长了。实际上不是这么简单。因为IPv6的出现,引出了了IP层通信协议、DHCP协议、DNS协议、路由协议等一系列的变化。今天这篇文章,先说说IPv6的地址。
世界上的IP地址怎么来的?
第一步,由IETF制定规范,就是他们定下 IPv4 是 32bits,IPv6是 128bits。定下长度后,他们还要决定地址的初始划分,比如,在IPv4里,A类地址、B类地址、C类地址的界定,哪些地址是预留的,哪些(比如192.168.*.*,127.0.0.1等特殊地址)是有特殊含义的,剩下的,才是可分配的。
第二步,可分配的地址,统一交给IANA管理。IANA自己预留一些,然后根据需要,将大块的地址分配给各地区“代理商”(Regional Internet Registeries,RIR)。目前世界上一共有五个RIR,负责包括中国在内的亚太地区的 RIR 就是 APNIC。
第三步,各RIR在各自负责的区域内,根据运营商(ISP)的申请,向他们授予地址块,当然,在中国,CNNIC全权负责国内IP地址和域名的管理。
第四步,用户从运营商获得IP地址。
IPv4 地址资源现状:
先看一条最近的新闻:2010年12月1号,IANA 向 ARIN 和 RIPE 各授予两个 A 类地址,这样,IANA 手里就只剩下7个空闲的A类地址了(2.73%)。按照互联网地址使用的趋势推测,专家认为,IANA 手里的地址将在2011年第三季度用完(全部分配到五大区的RIR),而RIR手里的地址,将在2012年第二季度,全部分配到ISP手中,虽然ISP到最终用户手里还能再缓一段时间,但可以肯定的说,2012年世界末日没来,IPv4的末日来了。
IPv4地址耗尽,最大的受害者是谁?应该是欧洲和亚洲。互联网发源于美国,相关标准和顶级分配机构也掌握在美国手中,美国拥有超过70%的IPv4地址,而且美国互联网普及率也超过70%,而中国拥有不到4%的地址,互联网普及率20%,欧亚大陆普遍被IP地址匮乏所困扰。
对IPv6的感性认识:
IPv6地址有128位,能够提供 340,282,366,920,938,463,463,374,607,431,768,211,456 个地址。地球的表面积是 511,263,971,197,990 平方米,意味着,每平方米可以分配到 665,570,793,348,866,943,898,599 个IPv6地址,依然大的惊人。
总之一句话,在IPv6时代,我们真的不发愁地址不够用了。
IPv6地址规划和分配情况
IPv6地址的写法
IPv6的地址长度是IPv4的四倍,如果还按照IPv4那样写,受得了吗?
202.95.34.211.183.238.65.223.10.10.152.3.172.24.24.233
晕死。
所以,IPv6地址有全新的记法,先看例子:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
地址分为8段,每段用4个16进制数(不区分大小写,推荐小写)表示两个字节,段之间用':'分割。
当然,对于一个全长的地址,还是晕!
不过,根据IPv6地址中0比较多的特性,有几个简化原则,可以让地址变得简单:
> 每段的前导0可以省略,也就是:00ab 可直接写 ab
> 如果有连续的1到n段全都是0,可以简写成 '::',但每个地址中,这个规则只能使用一次
例子:
FF01:0000:0000:0000:0000:0000:0000:101 –> 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 –> ::
很多时候,我们会看到ip地址后面跟着一个/24,/8等等,这是子网掩码,在IPv4时代,另一种写法是:
255.255.255.0
在IPv6中,只使用简化写法,例如下面的地址:
FF01::101/64
这里的64,可以理解成子网掩码(不是特别准确),它代表以这个地址前64位为前缀的这样一个地址范围(子网),也就是:
从 FF01:: 一直到 FF01::FFFF:FFFF:FFFF:FFFF
IPv6的地址类型
> unicast,单播地址。
这就是我们日常使用的IP地址。
> anycast,任意播地址(还是不翻译的好,照这样下去,世界bo都得出来了)。
anycast地址可以设给一组网络接口,发向这个地址的数据包,会被转发到其中的某一个(只有一个)接口上(具体是谁,通常由路由设备决定)
> multicast,多播地址。
multicast地址可以设给一组网络接口,发向这个地址的数据包,会被转发到所有接口上。
注:
IPv6没有广播地址(broadcast)。
IPv6地址中某段全为0或者全为都1是合法的(特殊约定除外,在IPv4中,这两种情况全是非法的)
IPv6高层地址规划
就像IPv4划分A、B、C三类地址,并预留特殊地址一样,IETF对IPv6也做了大粒度的地址规划,主要有:
> 全零地址 - ::
这个地址的含义是“不确定”,是一个接口尚未设置IP地址的状态,它不能被用作常规的IP地址使用。
> 仅末位是1的地址 - ::1
本地loopback地址,等价于IPv4的127.0.0.1
> multicast 多播地址 - FF00::/8
多播地址前八位全为1
> link-local unicast 链路本地单播地址 - FE80::/10
链路本地单播地址前10位是:1111111010,
这类地址的主要用途是DHCP自动地址分配、供路由协议使用等等。
> global unicast 全球单播地址
这就是我们会用到的普通地址,除了前几类预留的地址外,剩余的全是这种地址。
IPv6的地址规划几经变更,因此这部分的资料比较混乱,互相矛盾,最好的就是研读RFC。比如,很多资料中提到的site-local address,其实已经正式被废弃了(RFC3878),目前关于IPv6 地址规划的最新规范是 RFC4291。
IPv6地址的分配和利用情况
目前,IETF拿出了一个三位掩码的地址段,交给IANA进行分配,占总地址空间的12.5%,其余地址暂时保留。这个地址段是:2000::/3
由于地址多了,IANA是家中有粮,心里不慌,原则上只受理 RIR 的 /32 或者更大的地址段申请。而 RIR 向 ISP 的地址发放,默认为 /48,最小是 /64。
在亚太地区,我们申请的IPv6地址还不够多,暂时排名第三位:
IPv6,也被称为IPng,下一代互联网技术。
这是一次歌名,如果第一次互联网时代,我们生不逢时,我们能在这次狼巢中抓住点儿什么?
下一篇,我将尝试整理IPv6给相关通信协议带来的影响。