1.7 IPv4地址耗尽
IPv6技术精要
如果IPv4网络运行状况良好,为什么还需要开始考虑迁移到IPv6呢?这就如同在旧汽车状况良好的情况下为何要考虑购置新汽车一样。虽然没有任一种杀手级应用需要用户迁移到IPv6,但依然有一些不可抗拒的理由(如前所述)驱使网络管理员至少应该为向IPv6的迁移做好准备。最明显的理由就是IPv4地址已经耗尽,因此可以说,IPv6的杀手级应用就是保护了互联网,允许互联网继续前进。
虽然IPv4在理论上最多可拥有43亿个地址,但在实际的地址分配过程中存在很多低效的情况。即便能够以更高效的方式重新分配整个IPv4地址空间,也只是短期应对之策,更何况这种做法根本就不切实际。
IPv6拥护者一直在寻找各种方法,在不迁移到IPv6的情况下,尽可能延长IPv4的使用时间。这就像重新安排泰坦尼克号上的甲板座椅一样,可能会让大家感到一时的舒适,但大家迟早会意识到,自己已身处麻烦之中。
当Bob Kahn和Vint Cerf首次开发TCP/IP协议集以及IPv4及其32比特地址时,根本没有预料到互联网会发展到如今的状态。如今,即便70多岁的人每天也都会在互联网上使用几个小时的Facebook,表明如今的互联网已不再是年轻人的专利了。
人们从20世纪90年代就已经意识到IPv4地址空间的耗尽问题。随着WWW的出现,互联网用户的数量和多样化都呈现出爆炸式增长,使用互联网的群体不再局限于相对小规模的能够使用较为复杂和较不直观的网络工具(如FTP、新闻组以及UUCP[Unix-to-Unix Copy,UNIX至UNIX的复制]等)享用全球网络的电脑高手。随着Tim Berners-Lee在日内瓦的CERN开发出HTTP(Hypertext Transfer Protocol,超文本传输协议),以及由Marc Andreessen及其研究团队在伊利诺伊大学香槟分校的国家超级计算应用中心开发出第一款Web浏览器Mosaic,那些从没拥有电脑的人们都纷纷开始接入互联网,这使得43亿个地址变得越来越无法满足人们的长期需求。
因此,在20世纪90年代早期,IETF开始研究被称为IPng(下一代IP)的新IP版本,后来成为IPv6。不过这是解决IP地址不足的长期解决方案,人们仍然需要马上能用的短期解决方案,因而NAT、私有地址空间以及CIDR(Classless InterDomain Routing,无类别域间路由)等技术应运而生。
1.7.1 CIDR
早期的IPv4网络地址按照A类、B类、C类地址进行分配(如表1-1所示)。
IPv4地址一共分为5类。
- A类:子网掩码是255.0.0.0或/8。
- B类:子网掩码是255.255.0.0或/16。
- C类:子网掩码是255.255.255.0或/24。
- D类:多播地址。
- E类:保留作为试验地址。
每个子网掩码为/8的A类网络可以拥有16 777 214台主机(减去2个地址,分别是网络地址和广播地址)。126个A类网络以及每个A类网络中的大量主机数占去了IPv4地址空间的一半(如图1-2所示)。
B类网络的子网掩码是/16,表示每个B类网络可拥有65 534台主机。而16 384个B类网络占去了IPv4地址空间的25%。
C类网络的子网掩码是/24,表示每个C类网络最多可拥有254台主机。虽然可用的C类网络有2 097 152个,但仅占IPv4地址空间的12.5%。
由于网络管理员只能得到这三类地址中的一个网络地址,因而造成了地址分配方法的低效化。绝大多数A类和B类网络都存在大量未用地址,而绝大多数C类网络都很少有未用地址。
1992年,IETF改变了这种地址分配方法,转而采用CIDR(读成cider)。有关CIDR的信息定义在RFC 1338中,后来被RFC 1519所废除。此时的网络地址不再基于这三类地址进行分配,而是可以按照任意大小的子网掩码进行分配,如图1-3所示(图1-3给出了全部可能的主机地址数,而没有减去网络地址和广播地址)。这使得RIR和ISP能够更灵活地为用户分配IP地址,从而极大地提高了有限的IPv4地址空间的分配效率。
1.7.2 NAT和私有地址
NAT允许多台主机共享一个或多个保留地址或公有IPv4地址。结合私有IP地址,NAT成为一种非常有用的节约IPv4地址空间的方法。IANA(Internet Assigned Numbers Authority,互联网号码分配机构)在RFC 1918中分配了三段地址作为私有IPv4地址,这三段私有网络地址可用于私有网络内部,但不允许被路由到全球互联网上。因此,在面向互联网的路由器转发这些分组时,必须首先将这些私有IPv4地址转换成公有IPv4地址。
注:
虽然这是NAT最常用的使用方式,但NAT不仅仅可以在私有IP地址与公有IP地址之间进行转换,而是可以应用于任何一对地址的转换场景中。
RFC 1918定义的定义私有IPv4地址如下:
10.0.0.0~10.255.255.255 (10.0.0.0/8)
172.16.0.0~172.31.255.255 (172.16.0.0/12)
192.168.0.0~192.168.255.255 (192.168.0.0/16)
大家可能会发现,绝大多数家庭路由器都使用192.168.0.0地址进行NAT操作。
注意:
新的RFC 6598“IANA-Reserved IPv4 Prefix for Shared Address Space”中分配了另一个共享地址空间100.64.0.0/10。共享地址空间与RFC 1918中定义的私有地址空间不同,共享地址空间主要是留给服务提供商的网络使用的,不过,也可以按照RFC 1918私有地址空间的使用方式来使用这些共享地址空间。
PAT是动态NAT的一种形式,利用不同的TCP/UDP端口号将多个IP地址映射成单个IP地址。PAT也被称为超量NAT(NAT overloading)、单地址NAT(single address NAT)或端口级多路复用NAT(port-level multiplexed NAT)。对PAT来说,可以将私有网络中的每台计算机都转换成同一个公有IP地址,但需要分配不同的源端口号。有时也将NAT/PAT简称为NAT,对于本书来说,术语NAT始终包含PAT。
图1-4给出了一个使用NAT的网络示例。XYZ公司拥有公有IP地址209.165.200.248/29,因而只有6个可用的主机地址:209.165.200.249~209.165.200.254。但是XYZ公司拥有几百台主机,而且所有主机都希望能够随时访问互联网。由于该公司仅有6个公有IP地址,因而需要使用私有IP地址空间和NAT机制来满足其互联网接入需求。
XYZ公司的网络管理员选用了私有地址空间10.0.0.0/8。该地址空间提供了足够多的主机IP地址,完全能够满足公司的需要。路由器A是XYZ公司的路由器,负责将数据包转发给ISP路由器,从而将公司的私有网络连接到互联网上。图1-4中的步骤显示了NAT在私有IP地址与公有IP地址之间的转换操作,为了简化起见,本案例没有演示PAT的端口转换操作。
第1步:XYZ公司网络中的主机A向Web服务器www.example.com发送数据包,源IP地址为10.0.0.100,目的IP地址为209.165.202.158。
第2步:路由器A收到该数据包后,在转发给ISP路由器之前执行NAT/PAT操作。路由器A将该数据包的私有源IP地址10.0.0.100转换成为公有IP地址209.165.200.249。对于PAT来说,路由器A还会更改该数据包的源TCP/UDP端口号。为了简化起见,本案例没有演示PAT的端口转换操作。路由器A会维护一张NAT表以记录所有的地址与端口号分配情况,从而能够在第4步将返程流量正确定位到原始的地址和端口号。
第3步:Web服务器www.example.com向主机A返回数据包,源IP地址为209.165.202.158,目的IP地址为209.165.200.249。
第4步:路由器A收到发送给主机A的流量后,使用NAT表,即可识别正确的目的IP地址和目的端口号,从而以原始地址10.0.0.100和原始端口号进行修改。
虽然利用NAT与RFC 1918私有地址可以减缓IPv4地址的耗尽速度,但是NAT也存在许多限制条件。由于实际目的IPv4地址的不确定性以及单个公有地址可以被多个用户共享,因而极大地限制了P2P应用。以两台均位于NAT之后的设备为例,如果这两台设备需要进行相互通信,那么它们应该将数据包发送给哪个公有地址呢?纯粹的P2P通信仅包含两台相互通信的设备,但NAT的使用使得这两台设备之间的通信变得难以实现。因此,像Skype等许多服务都使用公共可访问的服务器在用户之间充当中继点。
如果大家对IPSec(Internet Protocol Security,互联网协议安全)有所了解,那么就会知道NAT会给传输模式下的IPSec应用带来混乱。因为在使用了IPSec AH(Authentication Header,认证头)的情况下,由于NAT转换会在数据包传输过程中修改数据包,因而会破坏完整性检查。NAT会修改TCP/UDP校验和,使得对端的完整性检查失败。因此,不能在传输模式下的IPSec中使用NAT。虽然NAT可以工作于隧道模式下的IPSec,但也同样存在一些问题。
对大多数用户来说,NAT不是问题,因为互联网主要是由大量客户端/服务器网络组成。一般来说,大部分用户使用互联网的目的是下载各种内容,如网页、电子邮件以及音乐等。
在2000年代的第一个10年里,互联网更多地被用作双向介质。随着大量社交网站(如Myspace和Facebook)的出现,人们越来越多地开始利用互联网进行协作和交互。用户不再仅仅是信息的消费者,而是越来越多地成为内容参与网站(如You Tube和博客)的内容制造者,并利用P2P应用(如Napster和BitTorrent)分享各自的内容。
所有的一切都表明,与几年前相比,用户使用互联网的方式发生了翻天覆地的变化。未来的互联网仍然会出现各种现在不可知的新应用和新需求。互联网将更多地承载双向通信,任何设备都可能是一台客户终端或者是一台服务器,甚至是两者兼而有之。在很多情况下,这都需要通信双方拥有公有地址,而NAT则无法支撑这些应用。
1.7.3 IPv4地址空间耗尽
由于互联网用户数一直都在快速增长,因此即使部署了NAT等短期解决方案,人们仍然不得不面对可用公有IPv4地址的最后阶段。表2-1给出了世界互联网使用情况及人口统计情况。从中可以看出一些有趣的IPv4地址分配情况。北美的互联网渗透率大约为78%。互联网渗透率(Internet Penetration Rate)指的是给定国家或地区的互联网用户数占总人口数的百分比。这意味着北美的大部分人都在使用互联网。而在亚洲等其他地区,它们的互联网渗透率大约只有29%。如果进一步对比这两个地区的互联网用户数,大家一定会更加吃惊。北美的互联网用户数是2720万,而亚洲的互联网用户数是9220万。可以看出,随着亚洲、非洲及其他地区越来越多的用户开始访问互联网,即便拥有NAT,IPv4地址也绝对无法满足互联网用户数快速增长的需求。
表1-2中的信息来自www.internetworldstats.com,Copyright2001–2011,Miniwatts Marketing Group
随着无线产业的飞速发展,WLAN、3G、4G、WiMax和MBWA(Mobile Wireless,移动无线)等蜂窝网络和无线网络增加了大量需要访问互联网的设备。一位美国大学的网络工程师曾经分析过,每年学生放假返校后的无线网络利用率都会增加25%,因为学生们返校时都带着大量的笔记本电脑、蜂窝手机、iPad以及其他各类无线设备。
那么IPv4地址会在什么时候被耗尽呢?IANA负责为5个RIR分配/8地址块。利用这些地址空间,RIR再将这些网络地址分配给ISP及其他终端用户,5个RIR的管理范围如下。
AfriNIC(African Network Information Centre,非洲网络信息中心):非洲。
ARIN(American Registry for Internet Numbers,美国互联网号码注册中心):美国、加拿大以及部分加勒比海地区和南极洲。
APNIC(Asia-Pacific Network Information Centre,亚太地区网络信息中心):亚洲、澳大利亚、新西兰以及相邻国际。
LACNIC(Latin America and Caribbean Network Information Centre,拉美及加勒比海地区网络信息中心):中美洲、南美洲以及加勒比海大部分地区。
RIPE(Réseaux IP Européens Network Coordination Centre,欧洲IP资源网络协调中心):欧洲、中东和中亚。
2011年1月31日星期一,IANA将最后两块IPv4地址空间39.0.0.0/8和106.0.0.0/8分配给了APNIC(亚太地区的RIR),并触发了一项IANA政策:今后将剩余的/8地址段平均分配给5个RIR。至此,IANA已经分配完了所有IPv4地址。
这是否意味着终端用户无法再得到IPv4地址了呢?答案为否,因为ISP及其他用户仍然可以从RIR获取IPv4地址,反过来绝大多数终端用户也就可以从ISP处获取IPv4地址。目前业界有多个预测项目分析这些RIR何时将耗尽其IPv4地址空间,其中一个预测项目就是RIR IPv6地址耗尽模型(RIR IPv6 Address Run-Down Model)。大家还可以从Hurricane Electric(http://ipv6.he.net/statistics)下载适用不同系统平台的IPv4地址耗尽计数器,该计数器可以显示RIR可用的/24地址空间。随着IPv4地址的耗尽,从事IPv4地址交易的“黑市”也应运而生。很多网站都为希望出售或租借IPv4地址空间的组织机构充当代理商角色。ISOC告诫IPv4地址的买卖方,要求地址转让一定要经过恰当的RIR程序,从而避免对网络的正常运行或安全性造成影响。
在IPv4地址空间具有43亿的固有限制、互联网用户数不断增长、用户使用互联网的方式发生变更,以及NAT存在各种各样问题的情况下,向IPv6迁移已经迫在眉睫,至少应该开始关注并了解IPv6。