1 IPv6协议产生的背景
IPv6是IPv4的未来替代协议。
IPv4协议是目前广泛部署的因特网协议,从1981年最初定义(RFC791)到现在已经有20多年的时间。IPv4协议简单、易于实现、互操作性好,IPv4网络规模也从最初的单个网络扩展为全球范围的众多网络。
然而,随着因特网的迅猛发展,IPv4设计的不足也日益明显,主要有以下几点:
- IPv4地址空间不足
IPv4地址采用32比特标识,理论上能够提供的地址数量是43亿。但由于地址分配的原因,实际可使用的数量不到43亿。另外,IPv4地址的分配也很不均衡:美国占全球地址空间的一半左右,而欧洲则相对匮乏;亚太地区则更加匮乏(有些国家分配的地址还不到256个)。随着因特网发展,IPv4地址空间不足问题日益严重。 - 骨干路由器维护的路由表表项数量过大
由于IPv4发展初期的分配规划的问题,造成许多IPv4地址块分配不连续,不能有效聚合路由。针对这一问题,采用CIDR以及回收并再分配IPv4地址,有效抑制了全球IPv4 BGP路由表的线性增长。但目前全球IPv4 BGP路由表仍不断在增长,已经达到17万多条,经过CIDR聚合以后的BGP也将近10万条。日益庞大的路由表耗用内存较多,对设备成本和转发效率都有一定的影响,这一问题促使设备制造商不断升级其路由器产品,提高其路由寻址和转发的性能。 - 不易进行自动配置和重新编址
由于IPv4地址只有32比特,地址分配也不均衡,经常在需要在网络扩容或重新部署时,需要重新分配IP地址,因此需要能够进行自动配置和重新编址以减少维护工作量。 - 不能解决日益突出的安全问题
随着因特网的发展,安全问题越来越突出。IPv4协议制定时并没有仔细针对安全性进行设计,因此固有的框架结构并不能支持端到端安全。因此,安全问题也是促使新的IP协议出现的一到动因。
针对IPv4地址短缺问题,也出现了多种解决方案。比较有代表性的是CIDR和NAT。
(1) CIDR
CIDR是无类域间路由的简称。IPv4设计之初是层次化的结构,分为A类(掩码长度为8)、B类(掩码长度为16)、C类地址(掩码长度为24),地址利用效率不高。CIDR支持任意长度的地址掩码,使ISP能够按需分配地址空间,提高了地址空间利用率。
CIDR的出现大大缓解了地址紧张问题,但由于各种网络设备、主机的不断出现,对IP地址的需求也越来越多,CIDR还是无法解决IPv4地址空间过小问题(32比特)。
(2) NAT
NAT也是针对IPv4地址短缺问题提出的一种解决方案。其基本原理是在网络内部使用私有地址,在NAT设备处完成私有地址和外部公有地址的翻译,达到减少公有地址使用的目的。
NAT也是一种广泛部署的地址短缺问题解决方案。但NAT有以下缺点:
- NAT破坏的IP的端到端模型
如果没有NAT,则使用IPv4只需要连接的端点负责维护连接,下层不需要处理任何连接,整个网络模型清晰、简洁。使用NAT则NAT设备需要关心每条连接的状态,增加了网络复杂性。 - NAT存在单点失效问题
NAT必须进行地址和端口翻译、保存连接状态,当NAT设备失效或NAT设备附近链路失效时,由于NAT中维护了状态,因此很难进行快速重路由,降低了网络的可靠性。 - 非NAT友好应用支持问题
对于非NAT友好的应用,仅仅进行地址和端口号转换是不够的。这些应用中所有和地址或端口号或安全关联等相关的数据都必须进行 NAT转换才能正常运行。因此每当新出现这样的应用时都需要升级NAT设备。 - 不支持端到端安全
NAT需要对IP报文头进行修改,有时甚至需要修改应用相关数据。端到端安全中IP头的完整性通过加密函保证,报文的发出者负责保护报文头的完整性,在接收端检查收到报文的完整性,在转发过程中任何对报文头的修改都会破坏完整性检查。因此在部署NAT的情况下无法支持端到端的安全。 - 网络扩容或重新部署困难
不同的网络网络有可能使用相同的的私有地址空间,如192.168.0.1/24,则当这些网络合并或连在一起时,就会出现地址空间冲突。这时就需要重新编址或使用二次NAT来解决问题,但这些解决方案增加了网络管理的复杂性。 - NAT不能解决所有地址短缺问题
NAT采用内部私有地址和外部地址(或端口)进行映射的方法解决地址短缺问题,但这种解决方法只有在内部地址和外部地址比例很大时才能有效节约地址。不过许多服务器部署在内部网络中,同一协议使用的外部地址不能复用于同一端口。例如:两个使用相同端口(如HTTP)的内部服务器。
从上可见,推动IPv6发展的主要问题是IPv4地址空间即将耗尽。IPv6也提供了一些新的特性和和改善措施:
- 设计回归简洁、透明,提高实现效率,减少复杂性
- 为新出现的移动业务提供支持
- 重新引入端到端安全和QoS
2 IPv6技术优点
IPv6技术具有如下优点:
(1) 128位地址结构,提供充足的地址空间
近乎无限的IP地址空间是部署IPv6网络最大的优势。和IPv4相比,IPv6的地址比特数是IPv4的4倍(从32位扩充到128位)。128位地址可包含约43亿×43亿×43亿×43亿个地址节点,足已满足任何可预计的地址空间分配(IPv4理论上能够提供的上限是43亿个,而IPv6理论上地址空间的上限是43亿×43亿×43亿×43亿)。
(2) 层次化的网络结构,提高了路由效率
IPv6地址长度为128位,可提供远大于IPv4的地址空间和网络前缀,因此可以方便地进行网络的层次化部署。同一组织机构在其网络中可以只使用一个前缀。对于ISP,则可获得更大的地址空间。这样ISP可以把所有客户聚合形成一个前缀并发布出去。分层聚合使全局路由表项数量很少,转发效率更高。另外,由于地址空间巨大,同一客户使用多个ISP接入时可以同时使用不同的前缀,这样不会对全局路由表的聚合造成影响。
(3) IPv6报文头简洁,灵活,效率更高,易于扩展
IPv6中废弃的域:
- IHL域
IPv4中IHL域用于标识IPv4报文头长度。由于IPv4报文头中存在选项域,因此其报文头长度域是必须的。但由于IHL域只有4比特(最小值为5,以4字节为单位),报文头的选项的扩展能力有限。IPv6的报文头由基本头和选项头组成。基本头长度固定(40字节),因此IHL域在IPv6中废除。 - Identification域
IPv4中的Identification域由发送方赋值,用于标识同一组分片报文,以帮助进行分片报文重组。IPv6分片报文是通过扩展头实现的,此域在IPv6基本头中不再需要。 - Flags域
Pv4中的Flags域用于标记报文是否分片以及是否为最后一个分片。IPv6分片报文是通过选项头实现的,此域在IPv6基本头中不再需要。 - Fragment Offset域
IPv4中的Fragment Offset域用来标记分片报文在未分片前原始报文中的位置。IPv6分片报文是通过选项头实现的,此域在IPv6基本头中不再需要。 - Header Checksum域
IPv4中的Header Checksum域用于检验IPv4报文头是否有错误。由于目前网络中链路层一般可靠性比较高且都有校验,同时传输层也有自己的报文头校验计算,因此此域有些多余。而且此域计算包括TTL,在每个转发路由器都需要重新计算,对效率也有影响。因此IPv6中废除了此域(但UDP报文头中的校验和计算改为必须的)。 - Options域
IPv4中Options域是为支持选项使用的,长度可变,但受限于IPv4报文头长度,扩展能力有限。IPv6中使用选项头实现此功能,因此不再需要此域。 - Padding域
IPv4中的Padding域是为了保证报文头结束于32比特边界,便于硬件存取。IPv6中基本头长度固定,因此不再需要此域。
IPv6新增加的域:
- Flow Label域
IPv6报文头中新增了流标签域,源节点可以使用这个域标识特定的数据流。流标签由源节点分配,通过流标签、源地址、目的地址可以唯一标识一条流。使用流标签而不是传统的五元组方式(源地址、目的地址、源端口、目的端口和传输层协议号)的最大好处有两点:流标签可以和任意的流关联,需要标识不同类型的流(可以是非五元组)时,无需对流标签做改动;流标签在IPv6基本头中,使用IPSec时此域对转发路由器可见,因此转发路由器可以在使用IPv6报文IPSec的情况下仍然可以通过三元组(流标签、源地址、目的地址)针对特定的流进行QoS处理。
IPv6和IPv4相比,去除了IHL、Identification、Flags、Fragment Offset、Header Checksum、Options、Paddiing域,只增了流标签域,因此IPv6报文头处理比IPv4大大简化,提高了处理效率。另外,IPv6为了更好支持各种选项处理,提出了扩展头的概念,新增选项时不必修改现有结构就能做到,理论上可以无限扩展,体现了优异的灵活性。
(4) 支持自动配置,即插即用
IPv6协议内置支持通过地址自动配置方式使主机自动发现网络并获取IPv6地址,大大提高了内部网络的可管理性。使用自动配置,用户设备(如移动电话、无线设备)可以即插即用而无需手工配置或使用专用服务器(如DHCP Server)。本地链路上的路由器在路由器通告报文中发送网络相关信息(如本地链路的前缀、缺省路由等),主机收到后会根据本地接口自身的接口标识符组合成主机地址,从而完成自动配置。
(5) 支持端到端安全
IPv4中也支持IP层安全特性(IPSec),但只是通过选项支持,实际部署中多数节点都不支持。IPSec是IPv6协议基本定义中的一部分,任何部署的节点都必须能够支持。
因此,在IPv6中支持端到端安全要容易的多。IPv6中支持为IP定义的安全目标:保密性(只有预期接收者能读数据)、完整性(数据在传输过程中没有被篡改)、验证性(发送数据的实体和所宣称的实体完全一致)。
(6) 支持移动特性
IPv6协议规定必须支持移动特性,任何IPv6节点都可以使用移动IP功能。
和移动IPv4相比,移动IPv6使用邻居发现功能可直接实现外地网络的发现并得到转交地址,而不必使用外地代理。同时,利用路由扩展头和目的地址扩展头移动节点和对等节点之间可以直接通信,解决了移动IPv4的三角路由、源地址过滤问题,移动通信处理效率更高且对应用层透明。
(7) 新增流标签功能,更利于支持QoS
IPv6报文头中新增了流标签域,源节点可以使用这个域标识特定的数据流。转发路由器和目的节点都可根据此标签域进行特殊处理,如视频会议和VOIP等数据流。IPv6源节点使用IPv6报文头中的20比特流标签域来标识一条流。值为0的流标签标识报文不属于任何流。一条流由源地址、目的地址和流标签三个域唯一决定。源节点设定的流标签值在传输中不能改变。如果IPv6节点没有提供针对流的特殊处理,则必须在接收或转发时忽略此域。源节点必须保证当前使用的流标签不被重用,在一条流中止120秒内,相应的流标签不被分配出去,源节点可针对不同的流设置长于120秒的不被分配时间。为避免流标签的意外重用,源节点应按一定的顺序(如顺序递增或伪随机)分配新的流标签,并在系统重起时选定不同的初始化值。为支持针对特定流的处理,在源和目的节点路径上全部节点或部分节点必须记录流状态。
目前关于如何在源节点和其它节点之间协商标签还没有相关标准。
原创文章,作者:满天星,如若转载,请注明出处:https://www.ipv6s.com/basis/20100815150.html