【第二十期】 IPv6系列基础篇(上)——地址与报文格式
发布时间: 2018-12-27

背景

以IPv4为核心技术的Internet获得巨大成功,但随着网络技术的飞速发展,IPv4地址资源的枯竭,以及其固有的局限性无法满足网络发展的需求,也带来了一些问题,比如现有的IPv4地址匮乏、服务保障问题等。而IPv6可以有效的改善这些问题,由IPv4向IPv6的升级过渡将成为互联网发展的趋势。

IPv4发展的瓶颈

在Internet快速发展的过程中,IPv4协议在设计时存在的局限性凸显出来:

• IP地址空间的局限性

IPv4的地址位数为32位,可使用的IP地址数量约43亿个,全球公网 IPv4 地址已于2011年2月分配完毕;

• 骨干路由器维护的路由表表项数量过大

由于IPv4发展初期的分配规划问题,许多IPv4地址块分配不连续,不能有效聚合路由。目前全球IPv4 BGP路由表仍不断增长,即使经过CIDR聚合(Classless Inter-Domain Routing,无类别域间路由),也有70万条左右,日益庞大的路由表耗用内存较多,对设备成本和转发效率都有一定的影响;

• IPv4网络中主机终端配置复杂

在将主机节点接入网络时一般需要专业人员的指导和帮助,需要对网络节点设置IP地址、子网掩码、网关地址等,而用户更喜欢“即插即用”;

• 缺乏对安全的支持

TCP/IP协议起初是面向军方网络的,认为使用者都是可靠的,没有考虑到网络安全问题。而用于保障IP数据传输安全的IPSec(Internet Protocol Security,因特网协议安全性)仅作为IPv4协议的一个可选项,并不是它的组成部分;

• 缺乏对QoS(Quality of Service,服务质量)的支持 

IPv4网络提供尽力交付的服务,不提供服务质量保证,如带宽、时延、误码率和抖动等。因此,IPv4不能满足日益增长的业务类型对QoS的需求。

IPv4协议发展已经遇到了瓶颈,面对如此多的限制,需要一个新的IP协议来替换现有的IPv4,这个协议就是IPv6,IPv6的研究和应用迫在眉睫。

 

IPv6的优势

为了解决IPv4中一些不可调和的问题,IPv6应运而生。1998年国际互联网工程任务组(The Internet Engineering Task Force,简称IETF)发布了IPv6协议标准RFC2460,之后还有多次更新RFC(Request For Comments,是一系列以编号排定的文件。文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件),包括:RFC 5095、RFC 5722、RFC 5871、RFC 6437、 RFC 6564、RFC 6935、RFC 6946、RFC 7045、RFC 7112。IPv6 终于在2017年7月14日正式完成标准化—— RFC8200。

 

IPv6具有如下优势:

• IPv6有128位地址结构,能够提供充足的地址空间。号称能够为地球上的每一粒沙子分配一个IP地址;

• 分层聚合,提高了路由效率。IPv6可提供远大于IPv4的网络前缀,同一组织机构在其网络中可以只使用一个前缀。对于ISP,则可获得更大的地址空间。这样ISP可以把所有客户聚合形成一个前缀并发布出去。分层聚合使全局路由表项数量很少,转发效率更高;

• IPv6具有自动将IP地址分配给用户的功能,实现了即插即用的联网方式;

• 安全性更高。IPSec是IPv6的重要组成部分,通过AH(Authentication Header, 认证头)、ESP(Encapsulating Security Payload, 封装安全载荷)扩展首部实现IPv6网络高安全性;

• 提供服务质量支持。IPv6新增的流标签,可以允许网络用户对通信质量提出要求。


IPv6地址

IPv6地址表示方法

IPv6地址总共有128位,使用十六进制进行表示,分为8段,中间用“:”隔开,如2001:0410:0000:0001:0000:0000:0000:45ff

IPv6地址的缩写:

以2001:0410:0000:0001:0000:0000:0000:45ff为例

• 每段的前导0可以省略,但至少留1个0

2001:410:0:1:0:0:0:45ff

• 连续多个0可以缩写为“::”,但只能使用1次

2001:410:0:1::45ff

 

IPv6地址结构

IPv6地址分为两部分,如图1所示:

• 网络前缀,相当于IPv4中的网络ID

• 接口标识,相当于IPv4中的主机ID

▲图1:IPv6地址结构

接口标识生成方法:

• 手工配置

• 系统通过软件自动生成

• IEEE EUI-64规范自动生成

接口标识可以根据IEEE EUI-64规范将MAC地址(48bit)转化为接口ID。

这种方式优点有:

• MAC地址的独特性保证了接口ID的独特性;

• 设备自动生成,不需人为干预。

如图2所示,某设备接口以太网MAC地址为00-E0-4C-68-10-18,通过EUI-64自动生成IPv6的接口ID。

• 步骤1:在MAC地址的高24位厂商ID和低24位厂商编号ID之间插入两个字节FFFE

• 步骤2:将U/L位取反,此处0置为1

注:U/L 位是第一个字节的第七位,用于确定该地址是全球管理还是本地管理。如果为0就为全球管理,表示全球唯一地址;为1就为本地管理,表示本地唯一地址,是网络管理员为了加强自己对网络管理而指定的地址

 

▲图2:EUI-64地址生成方式

 

IPv6地址分类

IPv6中没有广播地址,增加了任播地址,即IPv6地址被分为:单播地址、组播地址、任播地址。

• 单播地址

标识一个接口,目的是单播地址的报文会被送到被标识的接口。

主要有三大类:

1、可聚合的全局单播地址(Aggregatable global unicast address)

• 可在全球范围内路由和到达的,相当于IPv4的公网地址;

• 前三个bit是001,例如:2000::1:2345:6789:abcd(一般看到2与3开头的IPv6地址都是全局单播地址)。

2、链路本地地址(Link-Local Address)

• 用于同一个链路上的相邻节点之间通信,相当于IPv4里面的169.254.0.0/16地址;

• IPv6的路由器不会转发链路本地地址的数据包;

• 前10个bit是1111 1110 10,由于终末是64bit的接口ID,所以它的前缀总是FE80::/64;

• 链路本地地址一般是自动生成的。

3、独特本地单播地址(Unique Local Address)

• 独特本地地址的作用类似于IPv4中的私网地址,只能在本地网络内部被路由转发而不会在全球网络中被路由转发;

• 独特本地地址前缀FC00::/7。

 

组播地址

标识多个接口,目的是组播地址的报文会被送到被标识的所有接口。IPv6常用组播地址如表1所示:

 

▲表1:IPv6常用组播地址

 

在 IPv6 组播地址中,还有一种特别的组播地址,叫做 Solicited-node 地址(被请求节点组播地址)。Solicited-node 地址是一种特殊用途的地址,主要用于DAD(Duplicate Address Detection,重复地址检测)替代 IPv4 中的 ARP。

Solicited-node 地址由前缀 FF02::1:FF00:0/104和IPv6单播地址的后24 位组成。如图3所示:

 

▲图3:Solicited-Node组播地址生成过程

 

任播地址

标识多个接口,目的是任播地址的报文会被送到被标识的最近的接口,最近的接口是由路由协议来定义的。实际上任播地址与单播地址使用同一个地址空间,也就是说,由路由器决定数据包是做任播转发还是单播转发。

 

 

IPv6报文格式

IPv6数据包由一个IPv6报头、零或多个扩展报头和一个上层协议数据单元组成。

IPv6基本报头

每一个IPv6数据包都要包含报头,其长度固定为40bytes,包含该报文的基本信息。报头格式如图4所示:

 

▲图4:IPv6报头格式

 

IPv4报头格式如图5所示:

 

▲图5:IPv4报头格式

 

与IPv4报头相比,IPv6报头结构的提升:

• 基本的IPv4报头长度为20个字节,基本的IPv6报头长度为40个字节;

• 由于2层与4层的校验已经足够健壮,取消了IP的三层校验;

• 取消中间节点的分片功能,分片重组功能由源端实现,通过Path MTU机制来发现路径MTU。即,源节点在正式发送数据之前,使用ICMPv6来检测路径上最小的MTU;

• 增加流标签,提高QoS效率。

IPv6扩展报头

IPv6扩展报头是可选报头,一个IPv6数据包中可能存在零个或多个扩展报头,这些扩展报头可以具有不同的长度。IPv6扩展报头代替了IPv4的选项字段。IPv6扩展报头如图6所示。

 

▲图6:IPv6扩展报头

 

在IPv4中,IPv4报头包含可选字段Options,内容涉及安全、时间戳、记录路由等,这些Options可以将IPv4报头长度从20字节扩充到60字节。在转发过程中,处理携带这些Options的IPv4报文会占用路由器很大的资源,因此实际中也很少使用。

IPv6将这些Options从IPv6基本报头中剥离,放到了扩展报头中,扩展报头被置于IPv6报头和上层协议数据单元之间。基于这种设计,IPv6头部固定为40字节,扩展头部仅在需要时添加。通常情况下,扩展头部仅由终端主机处理,IPv6的格式特点一定程度上降低了对路由器性能的要求。

当使用多个扩展报头时,IPv6报头中的“下一报头”字段指明下一个扩展报头的类型,这样就形成了链状的报头列表,如图7所示。

▲图7:IPv6包的扩展报头示例

 

 总 结

在IPv6网络迅速推广、日益引起人们重视的今天,人们要问的是,IPv6网络还有多远?其实IPv6技术正在或已经融入了生活。锐捷网络的主流产品,包括交换机、路由器、无线、网关等均支持IPv6协议,产品大量应用在互联网、新零售、教育、医疗、交通、能源等各个行业。

本文章仅对IPv6的地址及报文格式做基础说明,更多IPv6相关技术讲解,敬请期待《技术盛宴》后续的IPv6系列文章。

 

本期作者:杨万里

锐捷网络互联网系统部行业咨询

 

往期精彩回顾