第1章 IPv6框架——一种新视角
部署IPv6网络(修订版)
人们不仅可以接受而且几乎是期盼出现这样一本IPv6的书,它能够凭借IPv6的重要性和益处而说服读者(经常很难)。描述商业模型的无数书页已经写出,商业模型将从财务角度证明部署IPv6的可行性。尽管人们在兜售IPv6时声称其具有创新性,但更多的是人们对它仍有争议,这使得人们在规划网络相关的资金支出时,需要采取一定的策略方法。但是,不考虑所有这些努力,也许仅仅是IPv4地址空间的加速耗尽就将触发大规模的现有网络升级到IPv6。
作者们决定绕开IPv6的兜售并避免给出IPv6服务的商业模型。我们试图通过技术因素为读者展示IPv6的价值。我们试图给出IPv6的实际视角,揭示IPv6的优势和劣势。这种做法,也许不能以绝对的方式得以贯彻。因此,“IPv6框架”以类似于称之为IPv4的参考架构给出。本方法不是独创的。实际上这是Internet体系结构委员会(IAB)文档的题目(http://www.6bone.net/misc/case-for-ipv6.html)。自从这个文档完成以后一些事情发生了改变,因此“一个新视角”看来是有用的。
在讨论各种IPv6主题时,本书通篇都会从部署的视角来讲解。在每个网络服务层环境中给出了以下技术:
- 单播连接;
- 服务质量;
- 多播服务;
- 虚拟私有网络(VPN);
- 安全性;
- 移动性。
本章遵循相同的结构。每一种服务都会在IPv4环境中进行简短回顾,并列出协议的局限性和部署问题,同时还给出介绍IPv6解决方案或改进,以及详细讨论这些主题的章节。本章通过综述现在的IPv4服务,为读者讨论IPv6做好准备。
1.1 单 播 连 接
部署IPv6网络(修订版)
IP服务的分发依赖于基础设施,基础设施提供了IP主机间的单播连接。这样的基础设施其基础由3个元素组成:编址、路由选择(routing)和转发。
IP地址代表一种有限的资源,用于在私有网或全球网络中识别主机。IP地址的结构和分配机制在IP网络设计、部署与运维中是相关的。我们有必要回顾一下这个主题,在IPv4地址空间枯竭的状况下更是如此。毕竟,在本书撰写之时,编址是部署IPv6的主要原因之一。
路由选择和转发提供了IP主机间移动流量的机制。转发对IP版本的依赖性是相对直接的,路由选择对编址则是多重依赖。因此,了解IPv4的任何路由选择问题是否能在IPv6中得到解决就更为重要。
1.1.1 编址
IP编址是一个非常广泛的主题,它会对大多数协议层和大多数服务产生影响。它也是一种关键资源。本小节简短地讨论地址结构和地址分配。要了解细节,可阅读如下图书:
IP Routing Fundamentals(Mark A. Sportack编著);
Internet Routing Architectures(Sam Halabi和Danny McPherson编著);
Routing in the Internet(Christian Huitema编著)。
一、IPv4地址体系结构
为了理解围绕IPv4地址空间枯竭的争论,有必要先了解一点历史。一个地址用来在网络中唯一地识别主机。甚至在扁平无层次分级的简单世界中,一些最小的地址结构要求也能使网络单元高效运作。在IPv4中,地址有32位的固定长度,理论上将允许多达232个地址或大约40亿个地址。需要重点注意的是,在制定IPv4规范时,这40亿个可能的地址在未来几十年内(不考虑上百年)看起来是足够的。但很快在20世纪90年代早期,Internet团体不得不在地址体系结构和地址分配机制中引入许多修改,以满足增长的地址需求。基于128位长地址的IPv6对未来上百年看来是安全的,但谁能说历史不会重演呢?
IPv4地址的极大浪费是由下面这两个原因导致的:
分类地址的不明智分配,常常是一些实体拥有的主机数略微超过255台就申请了B类地址,而B类地址能够容纳65 000台主机;
用户不用回答他们地址请求的适当性,当人们开始预测地址枯竭时实际上仅有3%的已分配地址在使用。
日益增长的主机数量向地址空间资源发起挑战,并导致作为地址保护方案的私有编址和网络地址转换(NAT)的产生。主机数量的增加也伴随着网络数量的增加,这导致路由器的规模扩展性问题。在1994年,核心路由器大约有34 000条路由,每年翻一番,到2004年,达到100万条路由。可变长度子网掩码(VLSM)、无类域间路由选择(CIDR)和新的IP地址分配策略是对路由选择表爆炸的反应。
虽然核心路由选择表大小预计在1994年和1995年间将从34 000增长到80 000条,实际上仅在2000年路由选择表达到了76 000条路由,在2004年中期大约是160 000条。
使用IPv6及其巨大的地址空间,人们担忧路由选择表将进一步膨胀。更大的编址空间逻辑上也许导致更多的主机,随后是导致更多的网络。在现实中,过去的经验表明“主机数量”和“网络数量”是松散相关的。使用正确的汇聚机制,部分由于合适的地址分配策略,网络数量已经在控制之下。假定使用相同的机制并进一步实施IPv6,相信路由选择表大小将保持在可管理限度内是有道理的。
注释:
欲了解CIDR的详细内容及相关主题,您可以阅读下列RFC:RFC 1517、RFC 1518、RFC 1519和RFC 1520。同样地,RFC 1887给出了IPv6地址分配幕后原因的某些暗示,以及体系结构的隐含内容。
地址保护机制不能长久地驱散对全局IP地址的需求。过去和当前Internet增长速率(来源于BGP表统计——http://bgp.potaroo.net/)能够用来外推预测所有可用IPv4地址空间完全枯竭之前剩余的时间。保守的研究估计IPv4地址空间枯竭发生在2041年2月之前,IPv4未分配地址池枯竭发生在2020年4月之前。更大胆的模型预测了甚至更糟的日期,如2009年。这些预测基于下面的假设:目前的增长模型在未来一些年将保持可行。这未必准确。
IPv6有可能改变这些假定。随着Internet作为引人注目的和可接入的通信媒介与通信小装置和各类设备(甚至最不可预期的设备,如电话、家用电器、汽车等)的结合,您必须预期看到它们将加快并刺激Internet的使用增长,这不能通过过去的模式外推而来。
二、私有和公开地址
公开地址是注册过的、全局唯一的,并能够用来提供Internet上的可达性。相反,私有地址仅在一个封闭的、物理的或虚拟域中有意义。在IPv4中,私有地址一直与非注册地址相关,并因此与非唯一地址联系在一起。
有许多原因使组织机构想同时使用公开和私有地址。公开地址用来获得Internet上的连接,到达公共资源。私有地址用来取得下列益处:
增加内部使用的地址空间;
避免地址注册的麻烦;
远离公开编址更改(例如,在对等点)以省去重新编址的混乱;
通过阻止私有地址/拓扑暴露,保护内部网络不受公共域的影响。
RFC 1918确定了两类主机能够使用私有地址:
不需要访问其他企业网或Internet中主机的主机;
需要访问有限外部服务集(E-mail、FTP等)的主机,这些外部服务能够通过中间网关进行处理。
针对这两类主机,RFC 1918进一步定义了3个私有地址块,这些地址块不能通过Internet选择路由,因此可以自由地使用。这3个私有地址块是:
10.0.0.0/8——一个A类块;
172.16.0.0/12——一个B类块;
192.168.0.0/16——一个C类块。
在理想状态下,私有地址的主机限制在私有网络内,而只有具有公开地址的主机才能访问公共域。在现实中,多数主机需要在某些点离开私有网络边界。通常,在私用网络内没有足够的公开地址供所有主机使用,因此需要进一步的机制将它们与公共域接口。最简单的一种机制是NAT,在“网络地址转换”讨论。
私有地址空间的一个好处,是可以由企业自行处理大量的可用地址。但仅在逻辑上预计私有地址空间将面临类似于全部IPv4地址空间枯竭的状况。在2005年,多系统运营商(MSO或线缆运营商)报告他们将用完私有地址空间的事实。这归咎于线缆调制解调器、IP上的语音(VoIP)电话和机顶盒的快速增长,运营商必须在IP上管理这些设备。这个事实加速了运营商部署IPv6,如果不是由于要提供业务,至少是要管理他们的设备。
对IPv6(对每个人而言现在有足够的公开地址)而言,使用私有地址的一些理由变得过时了,虽然其他理由仍在起作用。对IPv6而言,VPN解决方案也存在,这在一个网络内用来保护地址的私有性是足够的。多个种类的IPv6地址暗含了私有编址的一些不同机制,特别是唯一而又是私有的地址概念。这些概念将在第2章中给出。在私有和公开域之间跨越边界时产生的概念和问题在第7章给出。
三、静态和动态地址
能够为IP节点静态或动态地指定地址。静态地址是无限期分配的,除非明确去除。动态主机配置协议(DHCP)允许一台计算机每次连接到网络时获得一个不同的IP地址。这个过程使多个用户重复使用一个动态指定的地址池。DHCP也支持移动主机连接到被访问的子网而不需要手工再配置。事实上,动态分配的地址不可能经常进行更改。在大型网络中,DHCP服务器倾向于跨越时间为相同主机分配相同地址,除非地址出现短缺。对于家庭环境,有两类用户。
拨号连接的用户将经常更改地址。多数Internet服务提供商(ISP)使用DHCP为每个用户在其连接的时间内指定一个IP地址,并当以前的顾客终止拨号连接之后为另一个顾客重用这个地址。
具有长时间连接的用户,如数字用户线(DSL)、综合业务数字网(ISDN)或线缆,将倾向于更长时间地保留他们的地址。
现在倾向于使用比过去更多的稳定的源地址,这有优势也有劣势。从网络运维的角度讲,人们会发现相同的用户使用相同的IP地址是有用的,这能更加容易地进行管理、计费、过滤、认证,等等。但是,这种运维模型排除了地址重用,二者能保留IPv4地址空间。因此,宽带业务在加速IPv4地址消耗时是一种重要的催化剂。当通过采用IPv6消除地址短缺的担忧时,将可能有分配静态地址的倾向,或在所有时间内为相同用户动态地分配相同的地址。IP地址唯一和永久地标识设备的优势被可能的隐私问题所抵消。相同地址用于多种场合(例如,Web冲浪、游戏等)能够用来将看来不相关的活动关联起来。注意,通过使用IPv6,这提供了利用地址的可能性,这些地址嵌入了如链路标识符的拓扑信息,这种担忧将日益增加。动态分配IPv6地址的机制在第3章中复习。
四、重新编址
想知道一个网络管理员最糟糕的噩梦吗?这就是重新编址。重新编址就是在整个网络中被认为不能使用的现有网络前缀和主机地址,替换成新前缀和地址的过程。
重新编址可能有大量的理由:
网络的外部拓扑发生变化(如因为提供Internet接入的ISP改变了)。
网络扩展了,因此内部拓扑发生了变化,更多的子网需要互连,已有网络的重新组织,要寻址更多的主机,等等。重新编址,虽然在这些情况下并不总是必要的,但能潜在地提高汇聚,有时是极力推荐这么做的。
网络和另外一个网络合并(如在两个公司合并的情况下)。
网络过去是私有的并与公共网络脱离,现在想为其主机和服务器提供公共接入。
重新编址过程的复杂性来源于这样一个事实:在一个网络内地址用在许多不同地点和用于许多不同理由。在多个地点,单个地址或一组地址可能是静态配置的,也可能是动态配置的,可能的应用场合如下:
BOOTP或DHCP服务器;
所有种类的应用服务器(HTTP、FTP、电子邮件等);
路由器(接口、路由选择和访问列表配置等);
防火墙(访问列表);
DNS服务器。
有时,简单地更改旧地址就能够使新地址生效;但在多数情况下,旧地址遗漏在各种缓存中(DNS缓存、应用缓存、路由选择缓存、Web缓存、地址解析协议[ARP]缓存)。这些缓存中的许多缓存具有失效定时器,这将使缓存去掉“旧”地址,但有些不能。在多数情况下,更改地址和网络前缀要求重启主机。当在全网缓存地址时,在新地址生效之前将产生延时(多数是不可控的)。
虽然有些人相信重新编址问题在IPv6中已经全部考虑了,但其他人认为重新编址仍然是一个问题,没有任何好的解决办法。而实际情况在这两者之间。重新编址问题是多方面的,IPv6在某些方面给出一些新的解决方法,但没有解决整个问题。
第2章和第3章描述一些内置的IPv6机制,如链路本地地址、自动配置和在相同接口上支持多个地址,这些机制能够减轻网络重新编址的问题。
五、网络地址转换
网络地址转换(NAT)为IP部署带来了最好的也带来了最坏的情况。按照NAT RFC作者的说法,NAT是短期解决方案,这使地址重用并解决IP Internet团体预测的在1993年地址枯竭问题。这种方法的确工作得很好;在1993年似乎严重的问题,10多年后没有那么严重了。NAT支持在所有企业网络中的私有编址,减轻对公开注册地址块的需求。但是,在网络团体中NAT是一个有争议的话题,因此我们在此部分专门讨论它。
为了解NAT原理和操作的技术背景及更多细节,参见RFC 1631和书籍,如Cisco Press的图书:Jeff Doyle的《TCP/IP路由技术》第2卷(Routing TCP/IP, Volume II)。多年以来,NAT已经广泛地部署于整个Internet。在这个时期内,NAT的使用获得了地址保留之外的正当理由:从安全到隐私权,从防止重新编址到提供高可用性机制,从部署虚拟群组到提供VPN上的Internet接入。这些理由中的每一个都由一些部署场景支持,并意味着解决部署问题。
虽然在IPv6部署之后,这些理由中的某些将变得无关,但不是所有的都将变为无关。虽然NAT破坏了许多应用的部署,但多数人将高兴地看到这个所谓的“短期”方案在IPv6中消失,理解与分析NAT在今天网络中的位置和它解决的问题是有意思的。如果我们想除掉邪恶NAT的世界,我们必须确保IPv6为NAT所解决的所有问题给出了解决方案。
NAT产生了许多问题,其中最重要的是它所隐含的连接模型。NAT是非对称的。由于NAT的工作方式,NAT主要对客户/服务器会话是有用的,其中位于私有网络内的客户发起到位于公开网络的服务器的会话。客户典型地将发出某个公共服务器名字的域名服务(DNS)请求,并得到公开服务器地址。在返回的路上,服务器将仅能看到公开NAT地址,预期的是一个全局可到达的地址。反向更繁琐。任何在私有网络外面的人(无论在公共网络还是在一个不同的私有网络)到达NAT后面的主机将是有困难的。
一些代理服务器能够用来做“中间人”:它们能够处理所有必要的应用信令,并使主机使用对方的NAT地址作为可达公开地址。会话初始化协议(SIP)是这种方案的一个好例子。但是,更改(扭曲)每一个单独端到端应用以使之适合客户/服务器模型,对采用和部署新的应用看起来是一个很大的限制因素。
NAT的另一个问题是它不检查IP/ TCP/ UDP/ ICMP层之上的任何信息。一些应用在它们的消息内内嵌了端点源地址,这些地址在NAT转换IP头部地址时没有转换。这典型地发生在如H.323等应用中,这些应用倾向于在单个会话中建立多个连接。为了解决这些问题,应用层网关(ALG)需要执行复杂的应用层转换。当一个应用需要部署ALG时,NAT设备必须支持这个特殊的ALG。
NAT也有一些安全问题。基于签名或验证分组部分的任何安全机制,无论是头部还是包括IP地址的净荷,当地址被改写时将遇到麻烦。例如,对于IPSec,验证头部(AH)和封装安全净荷(ESP)与NAT共存都将有问题,虽然问题出在不同级别。
IPv6能够消除NAT吗
无论好坏,财富前1 000个公司中的70%,其网络中都采用了NAT。因此,在IPv6部署之后任一NAT并非必需,最坏的部分已经消失了。或者,对所有NAT在使用的部署场景,IPv6没有合适的解决方案,那么这些网络将不向IPv6迁移。虽然大量的IPv6地址空间消除了使用NAT的必要性,解释IPv6如何同样地提供了NAT被“感知”(perceived)到的益处之类似能力是重要的。这是网络架构保护(NAP)的主要目的,这是一个Internet草案,提出NAT的每个益处(真实的或被感知到的)并用一个IPv6解决方案与之匹配。表1-1列出NAT功能,并对每个功能给出相关的IPv6文档(RFC、Internet草案等),同时指出本书考察这些方案的章节。
1一个多连接的站点能够使用NAT将多个提供商地址转换成私有地址的单个集合。
2NAT能够用来在一组服务器间实现负载平衡流量,方法是通过将它们的每个地址隐藏在单个NAT地址后面。其他方法能够用来达到相同目的,它们不依赖NAT,能够在IPv6下工作。
3在一些高可用性场合使用NAT,方法是在相同虚拟地址后面隐藏活跃的和备份的主机或路由器地址。其他方法能够用来达到相同目的,它们不依赖NAT,能够在IPv6下工作,例如HSRP(热备份路由器协议)、VRRP(虚拟路由器冗余协议)和GLBP(网关负载平衡协议)。
4当连接公共资源时,配置有私有地址的站点或单个主机使用NAT来应用公开地址(而不是它们的私有地址)。
除了在NAT有特定目的的地方验证IPv6部署不会造成新的问题之外,您必须检查共存的问题。因为IPv4和IPv6看来将共存相当长的一段时间,您需要知道是否有和穿越IPv4 NAT相关的任何IPv6部署问题。确实,第3章讲述的许多迁移机制涉及到通过IPv4隧道传输IPv6流量。这些IPv4网络遍布NAT,对IPv6部署而言,关键的是能够正确地穿越它们。
1.1.2 路由选择
在IPv6环境中,工程协会没有真正地触及单播服务的路由选择基础。当然,当一个IPv4路由选择协议多少依赖于IPv4地址时,做了一些工作以产生IPv6版本的对应路由选择协议。情况确实如此,例如OSPFv3的情况。第4章回顾了路由选择协议中的这些更改。但除了“形式上的不同”之外,所有IPv4路由选择协议与IPv6中的极其相似,使用相同的设计,经常是相同的实现,并有相同的应用领域和相同的问题。在IPv6中,您将发现熟悉的路由选择信息协议(RIP)、中间系统到中间系统(IS-IS)、增强的内部网关路由选择协议(EIGRP)、开放最短路径优先(OSPF)和边界网关协议(BGP)。
您失望了?您也许期待IPv6设计者们使用新地址结构的优势,来增强路由器处理网络前缀的处理方式以获得更好的地址汇聚。这将间接地导致新的或重大改进的路由选择协议。在IPv6地址构造的方式中提供了这个机会。RFC 1887描述了形成一个层次化路由选择系统的早期尝试,RFC 3513将IPv6单播地址结构化以支持高效的路由选择汇聚。到如今,这些尝试还没有产生一个创新的路由选择协议。CIDR结合BGP汇聚和分配策略还仍是IPv6中优化汇聚的解决方案。