任务3 认识IPv6 学习目标  掌握IPv6地址的表示方法。  了解IPv6地址的分类。  了解IPv6地址配置协议。  了解IPv6路由协议。  了解IPv4到IPv6的过渡技术。 3.1IPv6地址 在IPv6(Internet Protocol Version 6)中,IP地址由16个八位域,共128位二进制数组成,是IPv4地址长度的4倍。在目前看来,IPv6可以提供足够数量的IP地址。 从理论上计算,IPv4地址的全部32位都用上,可以表示232≈42.9亿个IP地址,这几乎可以为地球三分之二的人每人提供一个地址。事实上,随着Internet的发展,由于种种原因(如分配的IP地址没有被充分利用,划分子网时浪费了一部分IP地址等),IPv4顶级地址在2012年就已经耗尽。随着移动设备的大量使用,IPv4公有地址早已远远不够分配。 因此,世界各国都在部署IPv6地址。2016年,互联网数字分配机构(IANA)已向国际互联网工程任务组(IETF)提出建议,要求新制定的国际互联网标准支持IPv6,而不再兼容IPv4。 3.2IPv6地址的表示方法 IPv6地址采用十六进制表示,有3种表示方法。 1. 冒分十六进制表示法 冒分十六进制表示法的格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16位,以十六进制表示。例如,ABCD:EF01:2345:6789:ABCD:EF01:2345:6789。 在这种表示法中,每个X的前导0是可以省略的。 例如,2001:0DB8:0000:0023:0008:0800:200C:417A可简写为2001:DB8:0:23:8:800:200C:417A。 2. 0位压缩表示法 在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为了保证地址解析的唯一性,地址中的“::”只能出现一次。 例如,FF01:0:0:0:0:0:0:1101可简写为FF01::1101; 0:0:0:0:0:0:0:1可简写为::1; 0:0:0:0:0:0:0:0可简写为::。 3. 内嵌IPv4地址表示法 为了实现IPv4与IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为X:X:X:X:X:X:d.d.d.d,前96位采用冒分十六进制表示,而后32位则使用IPv4的点分十进制表示。例如,::192.168.0.1与::FFFF:192.168.0.1就是两个典型的例子。注意: 在前96位中,压缩0位的方法依旧适用。 任 务 3 认识IPv6 网络互联技术 3.3IPv6地址分类 IPv6协议主要定义了3种地址类型: 单播地址(Unicast Address)、组播地址(Multicast Address)和任意播地址(Anycast Address)。与原来在IPv4地址相比,新增了任意播地址类型,取消了原来IPv4地址中的广播地址,因为在IPv6中的广播功能是通过组播来完成的。 IPv6地址类型由地址前缀部分来确定,主要地址类型与地址前缀的对应关系如表3.1所示。 表3.1 IPv6地址类型与前缀 地 址 类 型地址前缀(二进制)IPv6前缀标识 单播地址 未指定地址00…0(128 bits)::/128 环回地址00…1(128 bits)::1/128 链路本地地址1111 1110 10FE80::/10 唯一本地地址1111 110FC00::/7(包括FD00::/8和不常用的FC00::/8) 站点本地地址 (已被唯一本地地址代替) 1111 1110 11FEC0::/10 全局单播地址其他形式— 组播地址1111 1111FF00::/8 任意播地址从单播地址空间中进行分配,使用单播地址的格式 3.3.1单播地址 单播地址用来唯一标识一个接口,类似于IPv4中的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的一个接口。为了适应负载均衡系统,RFC 3513允许多个接口使用同一个地址,这些接口以单个IPv6接口的形式出现。单播地址包括4个类型: 全局单播地址、本地单播地址、兼容性地址、特殊地址。 1. 全局单播地址 全局单播地址等同于IPv4中的公有地址,可以在IPv6 Internet上进行全局路由和访问。全局单播地址可以进行路由前缀的聚合,从而限制全球路由表项的数量。 2. 本地单播地址 本地单播地址包括链路本地地址、唯一本地地址和站点本地地址。在IPv6中,本地单播地址指本地网络使用的单播地址。每个接口上至少有一个链路本地单播地址,另外还可分配任何类型(单播、组播和任意播)或范围的IPv6地址。 (1) 链路本地地址(FE80::/10): 仅用于单个链路(不能跨VLAN),不能在不同子网中路由。节点使用链路本地地址与同一个链路上的相邻节点进行通信。例如,在没有路由器的单链路IPv6网络上,主机使用链路本地地址与该链路上的其他主机进行通信。 (2) 唯一本地地址(FC00::/7): 唯一本地地址是本地全局的,它应用于本地通信,但不在Internet中路由,其范围限制为组织的边界。IPv6唯一本地地址相当于IPv4地址中的私有地址。 (3) 站点本地地址(FEC0::/10): 新标准中已被唯一本地地址代替。 3. 兼容性地址 在IPv6中还规定了以下几类兼容IPv4的单播地址类型,主要用于IPv4向IPv6的迁移过渡。一般有IPv4兼容地址、IPv4映射地址、6to4地址、6over4地址、ISATAP地址等几类。 (1) IP4兼容地址: 可表示为0:0:0:0:0:0:w.x.y.z或::w.x.y.z,其中w.x.y.z是以点分十进制表示的IPv4地址,用于同时运行IPv4和IPv6两种协议的节点使用IPv6进行通信。 (2) IPv4映射地址: 是另一种内嵌IPv4地址的IPv6地址,可表示为0:0:0:0:0:FFFF:w.x.y.z或::FFFF:w.x.y.z。这种地址被IPv6网络中的节点用来标识IPv4网络中的节点。 (3) 6to4地址: 用于同时运行IPv4和IPv6两种协议的节点在IPv4网络中进行通信。6to4是通过IPv4路由方式在主机和路由器之间传递IPv6报文的动态隧道技术。 (4) 6over4地址: 用于6over4隧道技术的地址,可表示为[64bit Prefix]:0:0:wwxx:yyzz,其中wwxx:yyzz是十进制IPv4地址w.x.y.z的IPv6格式。 (5) ISATAP地址: 用于ISATAP(IntraSite Automatic Tunnel Addressing Protocol)隧道技术的地址,可表示为[64bit Prefix]:0:5EFE:w.x.y.z,其中w.x.y.z是十进制IPv4地址。 4. 特殊地址 特殊地址包括未指定地址和环回地址。 未指定地址(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路由器转发。 3.3.2组播地址 IPv6组播地址用来标识一组接口(通常这组接口属于不同的节点),类似于IPv4中的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口。任意位置的IPv6节点可以侦听任意IPv6组播地址上的组播通信。IPv6节点可以同时侦听多个组播地址,也可以随时加入或离开组播组。 IPv6组播地址的最高的8位固定为1111 1111,地址范围为FF00::/8。IPv6组播地址结构在不同RFC中的定义有所不同,总体结构如图3.1所示。 图3.1IPv6地址结构 各字段含义如下。 flags = |0|R|P|T| 最高位为保留位,其值为0。 R: R比特位为1表示这是一个内嵌RP(Rendezvous Point,汇聚点)的组播地址。 P: P比特位为1表示这是一个基于单播前缀的IPv6组播地址。 T: T比特位为0表示这是一个永久分配组播地址。 scope: 限制组播组的域范围。 group id: 在给定的范围内标识组播组。 3.3.3任意播地址 一个IPv6任意播地址与组播地址一样也可以识别多个接口,对应一组接口的地址。大多数情况下,这些接口属于不同的节点。但是,与组播地址不同的是,发送到任意播地址的数据包只被送到由该地址标识的其中一个接口(注意: 只送到一个接口)。而组播地址用于一对多通信,发送到多个接口。一个任意播地址不能用作IPv6数据包的源地址,也不能分配给IPv6主机,仅可以分配给IPv6路由器。 3.4IPv6地址配置协议 IPv6使用两种地址自动配置协议: 无状态地址自动配置(Stateless Address Autoconfiguration,SLAAC)协议和IPv6动态主机配置协议(DHCPv6)。SLAAC不需要服务器对地址进行管理,主机直接根据网络中的路由器通告信息与本机MAC地址结合计算出本机IPv6地址,实现地址自动配置。DHCPv6由DHCPv6服务器管理地址池,用户主机从服务器请求并获取IPv6地址及其他信息,达到地址自动配置的目的。 1. 无状态地址自动配置 无状态地址自动配置(SLAAC)的核心是不需要额外的服务器管理地址状态,主机可自行计算地址进行地址自动配置,包括如下4个基本步骤。 (1) 链路本地地址配置,主机计算本地地址。 (2) 重复地址检测,确定当前地址是唯一的。 (3) 全局前缀获取,主机计算全局地址。 (4) 前缀重新编址,主机改变全局地址。 2. IPv6动态主机配置协议 IPv6动态主机配置协议(DHCPv6)由IPv4场景下的DHCP发展而来。在IPv4中,客户端通过向DHCP服务器发出申请来获取本机IP地址并进行自动配置,DHCP服务器负责管理并维护地址池以及地址与客户端的映射信息。 DHCPv6在DHCP的基础上,进行了一定的改进与扩充,其包含如下3种角色。 (1) DHCPv6客户端: 用于动态获取IPv6地址、IPv6前缀或其他网络配置参数。 (2) DHCPv6服务器: 负责为DHCPv6客户端分配IPv6地址、IPv6前缀和其他配置参数。 (3) DHCPv6中继: 它是一个转发设备。通常情况下,DHCPv6客户端可以通过本地链路范围内组播地址与DHCPv6服务器进行通信。若服务器和客户端不在同一链路范围内,可通过DHCPv6中继进行转发,因而不需要在每条链路范围内都部署DHCPv6服务器,节省成本,并便于集中管理。 3.5IPv6路由协议 不同于IPv4,IPv6设计之初就把地址从用户拥有改成运营商拥有,因而路由策略发生了一些变化,加之IPv6地址长度也发生了变化,因此路由协议发生了相应的改变。 3.5.1IPv6单播路由协议 与IPv4相同,IPv6单播路由协议同样分为内部网关协议(Interior Gateway Protocol,IGP)与外部网关协议(Exterior Gateway Protocol,EGP)。其中,IGP包括由RIP变化而来的RIPng,由OSPF变化而来的OSPFv3,以及ISIS协议变化而来的ISISv6; EGP则主要是由BGP变化而来的BGP4+。 1. RIPng 下一代RIP协议简称RIPng,是对原来的IPv4网络中RIP2协议的扩展。大多数RIP的概念都可以用于RIPng。为了在IPv6网络中应用,RIPng对原有的RIP协议进行了如下修改。 (1) UDP端口号: 使用UDP的521端口发送和接收路由信息。 (2) 组播地址: 使用FF02::9作为链路本地范围内的RIPng路由器组播地址。 (3) 路由前缀: 使用128比特的IPv6地址作为路由前缀。 (4) 下一跳地址: 使用128比特的IPv6地址。 2. OSPFv3 OSPFv3是OSPF版本3的简称,主要提供对IPv6的支持,遵循的标准为RFC 2740(OSPF for IPv6)。与OSPFv2相比,OSPFv3除了提供对IPv6的支持外,还充分考虑了协议的网络无关性以及可扩展性,进一步理顺了拓扑与路由的关系,使得OSPF的协议逻辑更加简单清晰,大大提高了OSPF的可扩展性。OSPFv3和OSPFv2的不同主要如下。 (1) 修改了LSA的种类和格式,使其支持发布IPv6路由信息。 (2) 修改部分协议流程,使其独立于网络协议,提高了可扩展性。主要的修改包括用RouterID来标识邻居,使用链路本地(LinkLocal)地址来发现邻居等,使得拓扑本身独立于网络协议,便于未来扩展。 (3) 进一步理顺了拓扑与路由的关系。OSPFv3在LSA中将拓扑与路由信息相分离,一、二类LSA中不再携带路由信息,而只是单纯的描述拓扑信息。另外,用新增的八、九类LSA结合原有的三、五、七类LSA来发布路由前缀信息。 (4) 提高了协议适应性。通过引入LSA扩散范围的概念,进一步明确了对未知LSA的处理,使得协议可以在不识别LSA的情况下根据需要做出恰当处理,大大提高了协议对未来扩展的适应性。 3. ISISv6 为了支持IPv6,IETF在draftietfisisipv605.txt中对ISIS进一步进行了扩展,主要是新添加了支持IPv6路由信息的两个TLV(TypeLengthValues)和一个新的NLPID(Network Layer Protocol Identifier)。TLV是在LSP(Link State PDU)中的一个可变长结构,新增的两个TLV分别如下。 (1) IPv6 Reachability(TLV type 236): 类型值为236(0xEC),通过定义路由信息前缀、度量值等信息来说明网络的可达性。 (2) IPv6 Interface Address(TLV type 232): 类型值为232(0xE8),它相当于IPv4中的IP Interface Address TLV,只不过把原来的32比特的IPv4地址改为128比特的IPv6地址。 (3) NLPID是标识ISIS支持何种网络层协议的一个8比特字段,IPv6对应的NLPID值为142(0x8E)。如果ISIS路由器支持IPv6,那么它必须在Hello报文中携带该值向邻居通告它支持IPv6。 4. BGP4+ 目前的BGP4+标准是RFC 2858(Multiprotocol Extensions for BGP4,BGP4多协议扩展)。为了实现对IPv6协议的支持,BGP4+需要将IPv6网络层协议的信息反映到NLRI(Network Layer Reachable Information)及Next_Hop属性中。BGP4+中引入的两个NLRI属性分别如下。 (1) MP_REACH_NLRI: Multiprotocol Reachable NLRI,多协议可达NLRI,用于发布可达路由及下一跳信息。 (2) MP_UNREACH_NLRI: Multiprotocol Unreachable NLRI,多协议不可达NLRI,用于撤销不可达路由。 BGP4+中的Next_Hop属性用IPv6地址来表示,可以是IPv6全球单播地址或者下一跳的链路本地地址。BGP4+利用BGP的多协议扩展属性来达到在IPv6网络中应用的目的,BGP协议原有的消息机制和路由机制并没有改变。 3.5.2IPv6组播路由协议 IPv6提供了丰富的组播协议支持,包括MLD、MLD Snooping、PIMSM、PIMDM、PIMSSM。 1. MLD MLD(Multicast Listener Discovery for IPv6)为IPv6组播监听发现协议。组播侦听者(Multicast Listener)是那些希望接收组播数据的主机节点,可以是主机或路由器。MLD是一个非对称的协议,组播侦听者和IPv6组播路由器的协议行为不同。IPv6组播路由器通过MLD协议发现直连网段上的组播侦听者,并在数据库里做相应记录; 同时还维护与这些IPv6组播地址相关的定时器信息。 IPv6组播路由器使用IPv6单播链路本地地址作为源地址发送MLD报文。MLD使用ICMPv6(Internet Control Message Protocol for IPv6,针对IPv6的互联网控制报文协议)报文类型。所有的MLD报文被限制在本地链路上,跳数为1。 MLD有如下两个版本。 (1) MLDv1(由RFC 2710定义),源自IGMPv2。 (2) MLDv2(由RFC 3810定义),源自IGMPv3。 所有版本的MLD协议都支持ASM(AnySource Multicast,任意信源组播)模型; MLDv2可以直接应用于SSM(SourceSpecific Multicast,指定信源组播)模型; 而MLDv1则需要在MLD SSM Mapping技术的支持下才能应用于SSM模型。 2. MLD Snooping MLD Snooping(Multicast Listener Discovery Snooping,组播侦听者发现协议窥探)是运行在二层设备上的IPv6组播约束机制,用于管理和控制IPv6组播组。 运行MLD Snooping的二层设备通过对收到的MLD报文进行分析,为端口和MAC组播地址建立映射关系,并根据映射关系转发IPv6组播数据。 当二层设备没有运行MLD Snooping时,IPv6组播数据报文在二层被广播; 当二层设备运行了MLD Snooping后,已知IPv6组播组的组播数据报文不会在二层被广播,而在二层被组播给指定的接收者。 3. PIMSM PIMSM(Protocol Independent MulticastSparse Mode,基于稀疏模式的协议无关组播路由协议)运用潜在的单播路由为组播树的建立提供反向路径信息,并不依赖于特定的单播路由协议。IPv6的PIMSM与IPv4的基本相同,唯一的区别在于协议报文地址及组播数据报文地址均使用IPv6地址。 4. PIMDM IPv6的PIMDM(Protocol Independent MulticastDense Mode,基于密集模式的协议无关组播路由协议)与IPv4的基本相同,唯一的区别在于协议报文地址及组播数据报文地址均使用IPv6地址。 5. PIMSSM PIMSSM采用PIMSM中的一部分技术用来实现SSM(SourceSpecific Multicast,指定信源组播)模型。由于接收者已经通过其他渠道知道了组播源的具体位置,因此SSM模型中无须RP(Rendezvous Point,汇聚点)节点,无须构建RPT(Rendezvous Point Tree),无须源注册过程,同时也无须MSDP(Multicast Source Discovery Protocol,组播源发现协议)来发现其他PIM域内的组播源。 3.6过 渡 技 术 IPv6不可能立刻替代IPv4,因此在相当一段时间内IPv4和IPv6会共同存在同一个环境中。IETF推荐了双协议栈、隧道技术以及网络地址转换等转换机制作为从IPv4到IPv6的过渡技术。 1. IPv6/IPv4双协议栈技术 双栈机制就是使IPv6网络节点具有一个IPv4栈和一个IPv6栈,同时支持IPv4协议和IPv6协议。IPv6和IPv4是功能相近的网络层协议,两者都应用于相同的物理平台,并承载相同的传输层协议TCP或UDP,如果一台主机同时支持IPv6协议和IPv4协议,那么该主机就可以和仅支持IPv4协议或IPv6协议的主机通信。 2. 隧道技术 隧道机制就是将IPv6数据包作为数据封装在IPv4数据包里,使IPv6数据包能在已有的IPv4基础设施(主要是指IPv4路由器)上传输的机制。随着IPv6的发展,出现了一些被IPv4骨干网络隔离开的局部IPv6网络,为了实现这些IPv6网络之间的通信,必须采用隧道技术。隧道对于源站点和目的站点是透明的,在隧道的入口处,路由器将IPv6的数据分组封装在IPv4分组中,该IPv4分组的源地址和目的地址分别是隧道入口和出口的IPv4地址; 在隧道出口处,再将IPv6分组取出转发给目的站点,如图3.2所示。隧道技术的优点在于隧道的透明性,IPv6主机之间的通信可以忽略隧道的存在,隧道只起到物理通道的作用。隧道技术在IPv4向IPv6演进的初期应用非常广泛。但是,隧道技术不能实现IPv4主机和IPv6主机之间的通信。 图3.2隧道技术 3. 网络地址转换技术 网络地址转换(Network Address Translation,NAT)技术是将IPv4地址和IPv6地址分别看作内部地址和全局地址,或者相反。例如,内部的IPv4主机要和外部的IPv6主机通信时,利用NAT设备将IPv4地址(相当于内部地址)变换成IPv6地址(相当于全局地址),NAT设备维护一个IPv4与IPv6地址的映射表; 反之,当内部的IPv6主机和外部的IPv4主机进行通信时,则将IPv6地址(相当于内部地址)映射成IPv4地址(相当于全局地址)。NAT技术可以解决IPv4主机和IPv6主机之间的互相通信的问题。 3.7IPv6的优势 与IPv4相比,IPv6具有以下8个优势。 (1) IPv6具有更大的地址空间。IPv4规定IP地址长度为32位,最大地址个数为232; 而IPv6中IP地址的长度为128位,最大地址个数为2128。与32位地址空间相比,其地址空间增加了(2128-232)个。 (2) IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Clustering)原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。 (3) IPv6增加了增强的组播(Multicast)支持以及对流的控制(Flow Control)。这使得网络上的多媒体应用有了长足发展的机会,为服务质量(Quality of Service,QoS)控制提供了良好的网络平台。 (4) IPv6加入了对自动配置(Auto Configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。 (5) IPv6具有更高的安全性。在IPv6网络中,用户可以对网络层的数据进行加密并对IP报文进行校验,IPv6的加密与鉴别选项保证了分组的保密性与完整性,极大地增强了网络安全性。 (6) IPv6允许扩充。当新的技术或应用需要时,IPv6允许协议进行扩充。 (7) IPv6有更好的头部格式。IPv6使用新的头部格式,其选项与基本头部分开。如果需要,则可将选项插入基本头部与上层数据之间。这就简化和加速了路由选择过程,因为大多数的选项不需要通过路由选择。 (8) IPv6增加了新的选项。IPv6有一些新的选项来实现附加的功能。 IPv4与IPv6具体的不同如表3.2所示的比对。 表3.2IPv4与IPv6比对表 IPv4地址IPv6地址 地址位数: IPv4地址总长度为32位地址位数: IPv6地址总长度为128位,是IPv4的4倍 地址格式表示: 点分十进制格式地址格式表示: 冒分十六进制格式,带零压缩 按5类Internet地址划分总的IP地址IPv6没有对应地址划分,而主要是按传输类型划分 网络表示: 仅以前缀长度格式表示网络表示: 点分十进制子网掩码或以前缀长度格式表示 环路地址是127.0.0.1环路地址是::1 公有IP地址IPv6的公共地址为可聚集全球单点传送地址 自动配置的地址(169.254.0.0/16)链路本地地址(FE80::/64) 多点传送地址(224.0.0.0/4)IPv6多点传送地址(FF00:/8) 包含广播地址IPv6未定义广播地址 未指明的地址为0.0.0.0未指明的地址为::(0:0:0:0:0:0:0:0) 私有地址(10.0.0.0/8、172.16.0.0/12、192.168.1.0/16)站点本地址(FEC0::/48) 域名解析: IPv4主机地址(A)资源记录域名解析: IPv6主机地址(AAA)资源记录 逆向域名解析: INADDR.ARPA域逆向域名解析: IP6.INT域 3.8任 务 小 结 1. IPv6地址的表示方法: 冒分十六进制表示法、0位压缩表示法、内嵌IPv4地址表示法。 2. IPv6地址的分类: 单播地址、组播地址、任意播地址。 3. IPv6有两种地址配置协议: 无状态地址自动配置(SLAAC)协议和IPv6动态主机配置协议(DHCPv6)。 4. IPv6单播路由协议包括RIPng、OSPFv3、ISISv6、BGP4+。 5. IPv6组播协议包括MLD、MLD Snooping、PIMSM、PIMDM、PIMSSM。 6. IPv4到IPv6过渡技术包括双协议栈技术、隧道技术以及网络地址转换技术。 7. 相比IPv4,IPv6有很多优势: 更大的地址空间、更小的路由表、更高的安全性、易于扩充。 3.9习题与思考 1. IPv6地址有多少位?有几种表示方式? 2. IPv6地址分为哪几类?其中单播地址有几种类型? 3. IPv6地址配置协议有哪几种? 4. IPv6单播与组播协议分别有哪些? 5. 请列出几种常见的从IPv4至IPv6的过渡技术。 6. 与IPv4相比,IPv6有哪些改变?有哪些优点?