单播地址
IPv6单播地址与IPv4单播地址一样,都只标识了一个接口。为了适应负载平衡系统,RFC3513允许多个接口使用同一个地址,只要这些接口作为主机上实现的IPv6的单个接口出现。单播地址包括四个类型:全局单播地址、本地单播地址、兼容性地址、特殊地址。
一、全球单播地址:等同于IPv4中的公网地址,可以在IPv6 Internet上进行全局路由和访问。这种地址类型允许路由前缀的聚合,从而限制了全球路由表项的数量。
二、本地单播地址:
链路本地地址和唯一本地地址都属于本地单播地址,在IPv6中,本地单播地址就是指本地网络使用的单播地址,也就是IPV4地址中局域网专用地址。每个接口上至少要有一个链路本地单播地址,另外还可分配任何类型(单播、任播和组播)或范围的IPv6地址。
(1)链路本地地址(FE80::/10):仅用于单个链路(链路层不能跨VLAN),不能在不同子网中路由。结点使用链路本地地址与同一个链路上的相邻结点进行通信。例如,在没有路由器的单链路IPv6网络上,主机使用链路本地地址与该链路上的其他主机进行通信。
(2)唯一本地地址(FC00::/7):唯一本地地址是本地全局的,它应用于本地通信,但不通过Internet路由,将其范围限制为组织的边界。
(3)站点本地地址(FEC0::/10,新标准中已被唯一本地地址代替)
三、兼容性地址:在IPv6的转换机制中还包括了一种通过IPv4路由接口以隧道方式动态传递IPv6包的技术。这样的IPv6结点会被分配一个在低32位中带有全球IPv4单播地址的IPv6全局单播地址。另有一种嵌入IPv4的IPv6地址,用于局域网内部,这类地址用于把IPv4结点当作IPv6结点。此外,还有一种称为“6to4”的IPv6地址,用于在两个通过Internet同时运行IPv4和IPv6的结点之间进行通信。
四、特殊地址:包括未指定地址和环回地址。未指定地址(0:0:0:0:0:0:0:0或::)仅用于表示某个地址不存在。它等价于IPv4未指定地址0.0.0.0。未指定地址通常被用做尝试验证暂定地址唯一性数据包的源地址,并且永远不会指派给某个接口或被用做目标地址。环回地址(0:0:0:0:0:0:0:1或::1)用于标识环回接口,允许节点将数据包发送给自己。它等价于IPv4环回地址127.0.0.1。发送到环回地址的数据包永远不会发送给某个链接,也永远不会通过IPv6路由器转发 [14] 。
组播地址
IPv6组播地址可识别多个接口,对应于一组接口的地址(通常分属不同节点)。发送到组播地址的数据包被送到由该地址标识的每个接口。使用适当的组播路由拓扑,将向组播地址发送的数据包发送给该地址识别的所有接口。任意位置的IPv6节点可以侦听任意IPv6组播地址上的组播通信。IPv6节点可以同时侦听多个组播地址,也可以随时加入或离开组播组。
任播地址
一个IPv6任播地址与组播地址一样也可以识别多个接口,对应一组接口的地址。大多数情况下,这些接口属于不同的节点。但是,与组播地址不同的是,发送到任播地址的数据包被送到由该地址标识的其中一个接口。
通过合适的路由拓扑,目的地址为任播地址的数据包将被发送到单个接口(该地址识别的最近接口,最近接口定义的根据是因为路由距离最近),而组播地址用于一对多通信,发送到多个接口。一个任播地址必须不能用作IPv6数据包的源地址;也不能分配给IPv6主机,仅可以分配给IPv6路由器 [15] 。
地址配置协议
IPv6使用两种地址自动配置协议,分别为无状态地址自动配置协议(SLAAC)和IPv6动态主机配置协议(DHCPv6)。SLAAC不需要服务器对地址进行管理,主机直接根据网络中的路由器通告信息与本机MAC地址结合计算出本机IPv6地址,实现地址自动配置;DHCPv6由DHCPv6服务器管理地址池,用户主机从服务器请求并获取IPv6地址及其他信息,达到地址自动配置的目的。
一、无状态地址自动配置
无状态地址自动配置的核心是不需要额外的服务器管理地址状态,主机可自行计算地址进行地址自动配置,包括4个基本步骤:
1. 链路本地地址配置。主机计算本地地址。
2. 重复地址检测,确定当前地址唯一。
3. 全局前缀获取,主机计算全局地址。
4. 前缀重新编址,主机改变全局地址 [16] 。
无状态地址自动配置的核心是不需要额外的服务器管理地址状态,主机可自行计算地址进行地址自动配置,包括4个基本步骤:
1. 链路本地地址配置。主机计算本地地址。
2. 重复地址检测,确定当前地址唯一。
3. 全局前缀获取,主机计算全局地址。
4. 前缀重新编址,主机改变全局地址 [16] 。
二、IPv6动态主机配置协议
IPv6动态主机配置协议DHCPv6是由IPv4场景下的DHCP发展而来。客户端通过向DHCP服务器发出申请来获取本机IP地址并进行自动配置,DHCP服务器负责管理并维护地址池以及地址与客户端的映射信息。
DHCPv6在DHCP的基础上,进行了一定的改进与扩充。其中包含3种角色:DHCPv6客户端,用于动态获取IPv6地址、IPv6前缀或其他网络配置参数;DHCPv6服务器,负责为DHCPv6客户端分配IPv6地址、IPv6前缀和其他配置参数;DHCPv6中继,它是一个转发设备。通常情况下。DHCPv6客户端可以通过本地链路范围内组播地址与DHCPv6服务器进行通信。若服务器和客户端不在同一链路范围内,则需要DHCPv6中继进行转发。DHCPv6中继的存在使得在每一个链路范围内都部署DHCPv6服务器不是必要的,节省成本,并便于集中管理 [17] 。
IPv6动态主机配置协议DHCPv6是由IPv4场景下的DHCP发展而来。客户端通过向DHCP服务器发出申请来获取本机IP地址并进行自动配置,DHCP服务器负责管理并维护地址池以及地址与客户端的映射信息。
DHCPv6在DHCP的基础上,进行了一定的改进与扩充。其中包含3种角色:DHCPv6客户端,用于动态获取IPv6地址、IPv6前缀或其他网络配置参数;DHCPv6服务器,负责为DHCPv6客户端分配IPv6地址、IPv6前缀和其他配置参数;DHCPv6中继,它是一个转发设备。通常情况下。DHCPv6客户端可以通过本地链路范围内组播地址与DHCPv6服务器进行通信。若服务器和客户端不在同一链路范围内,则需要DHCPv6中继进行转发。DHCPv6中继的存在使得在每一个链路范围内都部署DHCPv6服务器不是必要的,节省成本,并便于集中管理 [17] 。
路由协议
IPv4初期对IP地址规划的不合理,使得网络变得非常复杂,路由表条目繁多。尽管通过划分子网以及路由聚集一定程度上缓解了这个问题,但这个问题依旧存在。因此IPv6设计之初就把地址从用户拥有改成运营商拥有,并在此基础上,路由策略发生了一些变化,加之IPv6地址长度发生了变化,因此路由协议发生了相应的改变。
与IPv4相同,IPv6路由协议同样分成内部网关协议(IGP)与外部网关协议(EGP),其中IGP包括由RIP变化而来的RIPng,由OSPF变化而来的OSPFv3,以及IS-IS协议变化而来的IS-ISv6。EGP则主要是由BGP变化而来的BGP4+ [19] 。
一、RIPng
下一代RIP协议(RIPng)是对原来的RIPv2的扩展。大多数RIP的概念都可以用于RIPng。为了在IPv6网络中应用,RIPng对原有的RIP协议进行了修改:
UDP端口号:使用UDP的521端口发送和接收路由信息。
组播地址:使用FF02::9作为链路本地范围内的RIPng路由器组播地址。
路由前缀:使用128位的IPv6地址作为路由前缀。
下一跳地址:使用128位的IPv6地址。
下一代RIP协议(RIPng)是对原来的RIPv2的扩展。大多数RIP的概念都可以用于RIPng。为了在IPv6网络中应用,RIPng对原有的RIP协议进行了修改:
UDP端口号:使用UDP的521端口发送和接收路由信息。
组播地址:使用FF02::9作为链路本地范围内的RIPng路由器组播地址。
路由前缀:使用128位的IPv6地址作为路由前缀。
下一跳地址:使用128位的IPv6地址。
二、OSPFv3
RFC 2740定义了OSPFv3,用于支持IPv6。OSPFv3与OSPFv2的主要区别如下:
1. 修改了LSA的种类和格式,使其支持发布IPv6路由信息。
2. 修改了部分协议流程。主要的修改包括用Router-lD来标识邻居,使用链路本地地址来发现邻居等,使得网络拓扑本身独立于网络协议,以便于将来扩展。
3. 进一步理顺了拓扑与路由的关系。OSPFv3在LSA中将拓扑与路由信息相分离,在一、二类LSA中不再携带路由信息,而只是单纯的拓扑描述信息,另外增加了八、九类LSA,结合原有的三、五、七类LSA来发布路由前缀信息。
4. 提高了协议适应性。通过引入LSA扩散范围的概念进一步明确了对未知LSA的处理流程,使得协议可以在不识别LSA的情况下根据需要做出恰当处理,提高了协议的可扩展性。
RFC 2740定义了OSPFv3,用于支持IPv6。OSPFv3与OSPFv2的主要区别如下:
1. 修改了LSA的种类和格式,使其支持发布IPv6路由信息。
2. 修改了部分协议流程。主要的修改包括用Router-lD来标识邻居,使用链路本地地址来发现邻居等,使得网络拓扑本身独立于网络协议,以便于将来扩展。
3. 进一步理顺了拓扑与路由的关系。OSPFv3在LSA中将拓扑与路由信息相分离,在一、二类LSA中不再携带路由信息,而只是单纯的拓扑描述信息,另外增加了八、九类LSA,结合原有的三、五、七类LSA来发布路由前缀信息。
4. 提高了协议适应性。通过引入LSA扩散范围的概念进一步明确了对未知LSA的处理流程,使得协议可以在不识别LSA的情况下根据需要做出恰当处理,提高了协议的可扩展性。
三、BGP 4+
传统的BGP 4只能管理IPv4的路由信息,对于使用其他网络层协议(如IPv6等)的应用,在跨自治系统传播时会受到一定的限制。为了提供对多种网络层协议的支持,IETF发布的RFC2858文档对BGP 4进行了多协议扩展,形成了BGP4+。
为了实现对IPv6协议的支持,BGP 4+必须将IPv6网络层协议的信息反映到NLRl(Network Layer Reachable Information)及下一跳(Next Hop)属性中。为此,在BGP4+中引入了下面两个NLRI属性。
MP_REACH_NLRI:多协议可到达NLRI,用于发布可到达路由及下一跳信息。
MP_UNREACH_NLRI:多协议不可达NLRI,用于撤销不可达路由。
BGP 4+中的Next Hop属性用IPv6地址来表示,可以是IPv6全球单播地址或者下一跳的链路本地地址。BGP 4原有的消息机制和路由机制没有改变。
传统的BGP 4只能管理IPv4的路由信息,对于使用其他网络层协议(如IPv6等)的应用,在跨自治系统传播时会受到一定的限制。为了提供对多种网络层协议的支持,IETF发布的RFC2858文档对BGP 4进行了多协议扩展,形成了BGP4+。
为了实现对IPv6协议的支持,BGP 4+必须将IPv6网络层协议的信息反映到NLRl(Network Layer Reachable Information)及下一跳(Next Hop)属性中。为此,在BGP4+中引入了下面两个NLRI属性。
MP_REACH_NLRI:多协议可到达NLRI,用于发布可到达路由及下一跳信息。
MP_UNREACH_NLRI:多协议不可达NLRI,用于撤销不可达路由。
BGP 4+中的Next Hop属性用IPv6地址来表示,可以是IPv6全球单播地址或者下一跳的链路本地地址。BGP 4原有的消息机制和路由机制没有改变。
四、ICMPv6协议
ICMPv6协议用于报告IPv6节点在数据包处理过程中出现的错误消息,并实现简单的网络诊断功能。ICMPv6新增加的邻居发现功能代替了ARP协议的功能,所以在IPv6体系结构中已经没有ARP协议了。除了支持IPv6地址格式之外,ICMPv6还为支持IPv6中的路由优化、IP组播、移动IP等增加了一些新的报文类型 [20] 。
ICMPv6协议用于报告IPv6节点在数据包处理过程中出现的错误消息,并实现简单的网络诊断功能。ICMPv6新增加的邻居发现功能代替了ARP协议的功能,所以在IPv6体系结构中已经没有ARP协议了。除了支持IPv6地址格式之外,ICMPv6还为支持IPv6中的路由优化、IP组播、移动IP等增加了一些新的报文类型 [20] 。
IPv6不可能立刻替代IPv4,因此在相当一段时间内IPv4和IPv6会共存在一个环境中。要提供平稳的转换过程,使得对现有的使用者影响最小,就需要有良好的转换机制。这个议题是IETF ngtrans工作小组的主要目标,有许多转换机制被提出,部分已被用于6Bone上。IETF推荐了双协议栈、隧道技术以及网络地址转换等转换机制:
一、IPv6/IPv4双协议栈技术
双栈机制就是使IPv6网络节点具有一个IPv4栈和一个IPv6栈,同时支持IPv4和IPv6协议。IPv6和IPv4是功能相近的网络层协议,两者都应用于相同的物理平台,并承载相同的传输层协议TCP或UDP,如果一台主机同时支持IPv6和IPv4协议,那么该主机就可以和仅支持IPv4或IPv6协议的主机通信。
双栈机制就是使IPv6网络节点具有一个IPv4栈和一个IPv6栈,同时支持IPv4和IPv6协议。IPv6和IPv4是功能相近的网络层协议,两者都应用于相同的物理平台,并承载相同的传输层协议TCP或UDP,如果一台主机同时支持IPv6和IPv4协议,那么该主机就可以和仅支持IPv4或IPv6协议的主机通信。
二、隧道技术
隧道机制就是必要时将IPv6数据包作为数据封装在IPv4数据包里,使IPv6数据包能在已有的IPv4基础设施(主要是指IPv4路由器)上传输的机制。随着IPv6的发展,出现了一些运行IPv4协议的骨干网络隔离开的局部IPv6网络,为了实现这些IPv6网络之间的通信,必须采用隧道技术。隧道对于源站点和目的站点是透明的,在隧道的入口处,路由器将IPv6的数据分组封装在IPv4中,该IPv4分组的源地址和目的地址分别是隧道入口和出口的IPv4地址,在隧道出口处,再将IPv6分组取出转发给目的站点。隧道技术的优点在于隧道的透明性,IPv6主机之间的通信可以忽略隧道的存在,隧道只起到物理通道的作用。隧道技术在IPv4向IPv6演进的初期应用非常广泛。但是,隧道技术不能实现IPv4主机和IPv6主机之间的通信。
隧道机制就是必要时将IPv6数据包作为数据封装在IPv4数据包里,使IPv6数据包能在已有的IPv4基础设施(主要是指IPv4路由器)上传输的机制。随着IPv6的发展,出现了一些运行IPv4协议的骨干网络隔离开的局部IPv6网络,为了实现这些IPv6网络之间的通信,必须采用隧道技术。隧道对于源站点和目的站点是透明的,在隧道的入口处,路由器将IPv6的数据分组封装在IPv4中,该IPv4分组的源地址和目的地址分别是隧道入口和出口的IPv4地址,在隧道出口处,再将IPv6分组取出转发给目的站点。隧道技术的优点在于隧道的透明性,IPv6主机之间的通信可以忽略隧道的存在,隧道只起到物理通道的作用。隧道技术在IPv4向IPv6演进的初期应用非常广泛。但是,隧道技术不能实现IPv4主机和IPv6主机之间的通信。
三、网络地址转换技术
网络地址转换(Network Address Translator,NAT)技术是将IPv4地址和IPv6地址分别看作内部地址和全局地址,或者相反。例如,内部的IPv4主机要和外部的IPv6主机通信时,在NAT服务器中将IPv4地址(相当于内部地址)变换成IPv6地址(相当于全局地址),服务器维护一个IPv4与IPv6地址的映射表。反之,当内部的IPv6主机和外部的IPv4主机进行通信时,则IPv6主机映射成内部地址,IPv4主机映射成全局地址。NAT技术可以解决IPv4主机和IPv6主机之间的互通问题 [21] 。
网络地址转换(Network Address Translator,NAT)技术是将IPv4地址和IPv6地址分别看作内部地址和全局地址,或者相反。例如,内部的IPv4主机要和外部的IPv6主机通信时,在NAT服务器中将IPv4地址(相当于内部地址)变换成IPv6地址(相当于全局地址),服务器维护一个IPv4与IPv6地址的映射表。反之,当内部的IPv6主机和外部的IPv4主机进行通信时,则IPv6主机映射成内部地址,IPv4主机映射成全局地址。NAT技术可以解决IPv4主机和IPv6主机之间的互通问题 [21] 。
一、IPv6具有更大的地址空间。IPv4中规定IP地址长度为32,最大地址个数为2^32;而IPv6中IP地址的长度为128,即最大地址个数为2^128。与32位地址空间相比,其地址空间增加了2^128-2^32个。
二、IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
三、IPv6增加了增强的组播(Multicast)支持以及对流的控制(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。
四、IPv6加入了对自动配置(Auto Configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
五、IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,在IPV6中的加密与鉴别选项提供了分组的保密性与完整性。极大的增强了网络的安全性。
六、允许扩充。如果新的技术或应用需要时,IPV6允许协议进行扩充。
七、更好的头部格式。IPV6使用新的头部格式,其选项与基本头部分开,如果需要,可将选项插入到基本头部与上层数据之间。这就简化和加速了路由选择过程,因为大多数的选项不需要由路由选择。
原来的Internet安全机制只建立于应用程序级,如E-mail加密、SNMPv2网络管理安全、接入安全(HTTP、SSL)等,无法从IP层来保证Internet的安全。IP级的安全保证分组的鉴权和私密特性,其具体实现主要由IP的AH(Authentication Header)和ESP(Encapsulating Security Payload)标记来实现。IPv6实现了IP级的安全。
一、安全协议套:是发送者和接收者的双向约定,只由目标地址和安全参数索引(SPI)确定。
二、包头认证:提供了数据完整性和分组的鉴权。
三、安全包头封装:ESP根据用户的不同需求,支持IP分组的私密和数据完整性。 它既可用于传送层(如TCP、UDP、ICMP)的加密, 称传送层模式ESP,同时又可用于整个分组的加密,称隧道模式ESP。
四、ESPDES-CBC方式:ESP处理一般必须执行DES-CBC加密算法,数据分为以64位为单位的块进行处理,解密逻辑的输入是现行数据和先前加密数据块的与或。
虽然IPv6在全球范围内还仅仅处于研究阶段,许多技术问题还有待于进一步解决,并且支持IPv6的设备也非常有限。但总体来说,全球IPv6技术的发展不断进行着,并且随着IPv4消耗殆尽,许多国家已经意识到了IPv6技术所带来的优势,特别是中国,通过一些国家级的项目,推动了IPv6下一代互联网全面部署和大规模商用。随着IPv6的各项技术日趋完美,IPv6成本过高、发展缓慢、支持度不够等问题将很快淡出人们的视野 [24] 。