支持IPv6的任何一般使用的IP协议栈还支持IPv4。也就是说,它能够双协议栈。“普通型”是这里一个重要的限定:肯定会有专门的设备只支持IPv6的。但这些设备 - 直到我们得到在IPv4的不再存在,未来一段不确定的时间 - 功能的“围墙花园”的应用,如具有明确的界限,且从未IPv4的交互传感器或控制网络。双堆叠的重要意义在于,如果在一个双向通话的设备之一,可以说IPv4和IPv6,这并不重要,如果在另一端的设备被限制在一个或另一个版本。只要这两个演讲者之一是“双语”的对话才能进行。
因此双堆叠是开始部署IPv6最简单的方法。如果启用了IPv6的网络中的所有设备都是双栈,他们可以到任何目的地说话无论是IPv4或IPv6。这是在部署的早期阶段,非常重要的,当在公共互联网上绝大多数的目标内容仅支持IPv4仍然是。
刺目的问题与双堆叠,就像我在讨论以前的文章我们需要开始部署IPv6的主要原因是我们很快就会耗尽IPv4地址。如果IPv4地址用完了,如何在每个接口上同时使用IPv6地址和IPv4地址?
事实上,我们在很久以前就耗尽了全球唯一的IPv4地址。你可能会问(听起来有点像Tevye):“这是怎么回事?”IANA仍然有28 /8个IPv4地址块尚未分配。大约有4.69亿个地址。我们还没有耗尽IPv4地址!”
我的回答是,我们已经给了自己错觉通过很好地共享我们所拥有的地址来拥有足够的IPv4地址。
共享一种方法是使用DHCP动态地址分配。我们假设在一个给定的网络需要在同一时间处于联机状态不是所有的设备,所以我们借地址作为一个设备需要它有限的游泳池,以及当装置用它做回收地址。然后,地址可以给一些其他有需要的设备。我们的统计复用的地址池。
这工作的罚款在20世纪90年代,但越来越多的这些天网络连接的设备想成为“永远在线”。这意味着设备上的地址,持有他们给出,从而减少了在需要的基础上共享的地址数量。
共享全球唯一的IPv4地址,是迄今为止较为成功,其他的手段是历史悠久的网络地址转换(NAT)。具体地说NAT44,其转化IPv4地址到另一个IPv4地址。私有(RFC1918) IPv4地址在给定的网络中使用;这里的假设是,在一个网络中,大多数IP设备只希望与同一网络中的其他IP设备通信。
但是因为RFC1918地址可以在不同的网络中重用,所以它们不是全局唯一的。当一个网络上的设备希望与另一个管理域上的设备通信时,可以通过公共Internet访问该设备,但不能保证这两个设备使用的地址不相同。对于公共域中的路由器,也没有办法使用相同的地址块来区分不同的网络。
所以我们把NAT44在那里它连接到公共互联网网络的边缘(通常在路由器或防火墙居住其一)。该NAT有一个或多个全球唯一的IPv4地址。并作为分组从其内部或专用接口来其外部或公共接口传递,NAT其公共IPv4地址的一个替换包的私有IPv4地址。的NAT“记住”其内部设备分组从由内部地址映射到外部地址来了。
如果到目前为止NAT44所做的还没有超出我所描述的,那么它将面临与动态地址分配相同的问题:可用地址池无法满足现代网络中“一直在线”设备的需求。随着越来越多的数据交换通过公共互联网进行,大多数网络内部设备大多数时间与其他网络内部设备通信的假设不再有效。
NAT44不仅使用它的公共IPv4地址池,还使用每个地址的可用端口号,从而克服了这个伸缩性问题。TCP和UDP报头支持多达65,536个端口号,其中大部分是未使用的。因此,通过将内部的[私有地址,端口]元组映射到外部的[公共地址,端口]元组,NAT44实际上是映射会话,而不是设备,并且可以支持使用每个公共地址的大量会话。
这种方法曾多次被称为网络地址和端口转换(NAPT),端口地址转换(PAT),解决重载, 要么IP伪装在过去。现在它被认为是NAT44的标准函数。
NAT在20世纪90年代早期到中期就出现了,当时它是几个短期解决方案之一(与DHCP、RFC1918地址和CIDR一起),用来减缓IPv4的消耗,同时开发了下一代互联网协议(最终成为IPv6)。那时它只是被称为NAT,而不是NAT44,因为将一个IPv4地址转换成另一个IPv4地址是唯一的选择。没有必要把它和NAT64区分开来,因为IPv6还不存在,所以一些可以在IPv4和IPv6之间转换的东西也不存在。
再回到双栈困境,服务提供商面临着:为什么不NAT一半的IPv4双栈连接到客户的?这会激发客户开始在IPv6上,同时还提供IPv4连通。
这是运营商级NAT(CGN)的基础。传统NAT - CPE NAT -出现在客户网络的边缘,在那里它连接到服务提供者,并在客户网络中的私有IPv4地址与由提供者分配的一个或几个公共地址之间进行转换。中广核出现在服务提供商网络中。它也在私有和公共IPv4地址之间进行转换;中广核的私人部门面对的是供应商的客户。
我换句话说,CGN使服务提供商能够分配私有RFC 1918 IPv4地址给他们的客户,而不是公共的,全球唯一的IPv4地址。再次NAT涉及到一个减少的地址提供救援。
这也提出了一个问题:为什么不直接使用CGN,而忘记了IPv6的?我会解决以后的文章这个问题(原谅双关语),经过我们进一步探讨各式各样CGN问题和架构选项。
围绕CGN第一个问题是名字。有一个CGN和任何其他NAT,比假设,如果它出现在服务提供商的网络是很可能将是一个运营商级路由器彼此之间没有真正的区别。但目前还没有具体特质,使中广核“电信级”的本身。
因为没有什么定义CGN的“电信级”的一部分,一个运动是在进行中的名称更改为“大规模NAT”(LSN)。我拉开序幕本文使用术语CGN,因为这仍然术语大多数人所熟悉。但是,我要拉switcheroo并在后续文章中使用“大规模NAT”,现在,我已经有一个解释的机会为什么名称正在改变:LSN更好地反映了NAT的意图,它服务于大量的服务提供者客户,比如在一个PoP中,并且必须扩展到大量的客户流量。
此外,通过去掉名称中的“carrier”引用,它更好地反映了这样一个事实,即LSN是一种NAT解决方案,它不仅可以用于服务提供者场景。它可以用于任何大型网络。
除了必要的规模,与LSN的另一大问题是,它是用来指定RFC 1918点的地址给客户,然后使用自己的NAT的“公共”侧地址的事实。这些CPE的NAT,然后从客户端RFC 1918和地址翻译成运营商方RFC 1918个地址。这样最终用户流量现在穿过两层或分层架构NAT,而不是单个设备。
这个架构,以及在LSN和CPE NATs之间使用私有IPv4地址所产生的问题,是我下一篇文章的主题。