IPv6系列文章:
3.IPv6-双栈/隧道
文章目录
一、IPv6概述
1.1 IPv6优点
-
128bits的地址方案,解决了ipv4地址池耗尽的问题,为为了数10年提供了巨大的ip地址空间
-
无需NAT技术了,有助于在公网上也能实现IP实名制
-
不在有广播、不再有ARP,降低广播造成的网络资源消耗
-
自动配置过程允许ipv6网络中的节点更加便捷接入ipv6局域网
-
重新编址机制使得ipv6提供商之间的转换对最终用户是平滑的、无感的
-
v4v6 过渡方式丰富
1.2 IPv6包头
IPv4与IPv6的报文格式比较如下图:
Verson:此字段与IPv4的报文格式相同,4代表IPv4,6代表IPv6;
Traffic Class:流量区分,与IPv4中的服务类型类似;
Flow Label:流标签,用来表示数据包的一个流;
Payload Length:载荷长度;
Next Header:下一报文头,用来标识IPv6扩展报文头的信息;
Hop Limit:跳数限制,与IPv4中的TTL类似;
Source Address:源IP地址;
Destination Address:目的IP地址;
ipv6包头的改进:
-
取消了IP的校验;
-
去除Fragment Offset取消中间节点的分片功能。分片重组功能有源-目端自己进,通过MPTU机制来发现路径最小MTU;
-
定义最长ipv6包头,有利于硬件的快速处理,如此一来中间节点可以避免处理而节省大量的资源
-
ipv6支持Ipsec ,上次协议可以省去许多安全考虑
-
增加流表情,提高QoS效率
相比较IPv4的报文格式,IPv6的报文格式比较简单,根本原因是IPv6报文格式中引入了IPv6扩展报文头的概念。
在IPV6 中,IPv4中的Option选项被移到了扩展报头中。一个IPV6 数据包可能包括 0 个或多个扩展包头,当使用多个扩展包头时,通过前面的包头的 Nexthead 字段指明该扩展包头后的扩展包头。有了扩展包头 ,中间路由器就不需要处理每一个可能出现的选项,提高了路由器处理数据包的速度,提高了其转发性能。在扩展报头链的最后就是有效负载。
扩展包头顺序如下:
-
逐跳选项包头;
-
目标选项包头;
-
路由包头;
-
分段包头;
-
认证包头;
-
有效负载荷包头(TCP、UDP、ICMPv6等上层协议)
二、IPv6编址
2.1 IPv6地址
- IPv6地址简写
IPv6的地址由8组四位16进制的符号(0000到FFFF)组成中间用:间隔,每组包含16bit的二进制数,总长 度为16字节128bit。
IPv6 地址在简写的时候多个前导 0 可以省略成一个 0;
如:2001:00a8:0207:0000:0000:0000:0000:8207
可缩写成:2001:a8:207:0:0:0:0:8207
一个或多个连续的 16 比特字段为 0 时,可用::表示,但整个缩写中只允许有一个::
如上面的例子,可以进一步缩写成:2001:a8:207::8207
- IPv6地址的URL表示
http://[ipv6 地址]:8080 !! 必须用 [ ] 括起来
- IPv6和子网划分
IPv6 与 v4 的不同之处是网络前缀范围内没有保留广播号,在 v4 中,第一个和最后一个地址是被保留给网络号和广播号的。而在 IPv6 中,不再有广播了。而且事实上 IPv6 的地址空间如此之大,以至于 VLSM 都不是特别有必要了。
2.2 地址分类
IPv6的地址分为单播、组播、任意播三种如下图,取消了IPv4中的广播概念,改用组播来代替。
2.2.1 单播
- 可聚合全局单播地址 Aggregatable global unicast address(公网IP-互联网有效)
组成:001+45位全球路由前缀+16位子网ID+64位主机接口ID组成(一般前48位来自于运营商申请,后面80位可以自己规划)
范围:由于前三位固定位001所以范围为 2000::==>> 3FFF:FFFF:….FFFF 占IPv6总地址空间的1/8。
- 本地站点地址 Site-local address(私有地址-局域网有效)
范围:FEC0::/10为前缀
注:由于在草案定制是描述不是很规范,在后期的IPv6规范中废弃,取而代之的是本地唯一地址 Unique- local address
- 本地唯一地址 Unique-local address(私有地址-局域网有效)
范围:FC00/8==>>FD00/8。
ULA是IPv6的私有地址,只能在内网中使用,该地址在IPv6公网上不被路由,因此不能直接访问公网。当然, 其实 IPv6 地址空间如此之庞大,以至于根本不需要用到 Site-local 地址,直接用全局单播地址即可。
- 本地链路地址 Link-local address(链路地址-当前链路上有效,即同一个路由器下有效)
范围以 FE80::/10 为前缀,11-64 位为 0,外加一个 64bits 的接口标识(一般是 EUI-64规则生成)。只在同一个路由器下直接连接的网络环境中有效,私网路由器也不能路由fe80::/10开头的ip。当一个节点启动 IPv6 协议栈时,节点的每个接口会自动配置一个链路本地地址。这种机制使得两个连接到同一链路的 IPv6 节点不需要做任何配置就可以通信 ,在不同链路上Link-local address可以重复。它为NDP邻居发现协议的实现提供了支持。
- 特殊单播地址
- 未指定地址/全 0 地址 :: 或0:0:0:0:0:0/128 或 :/128
该地址可以表示某个接口或者节点还没有 IP 地址,可以作为某些报文的源 IP 地址(比如作为 DAD 报文的 DHCP 初始化过程中客户端的源 IP)。用于 IPv6 节点在没有获取 IPv6 地址时的场景
-
回环地址 ::1或0:0:0:0:0:1/128 或::1/128
用于 IPv6 节点发送报文给自己,相当于Ipv4中的127.0.0.1
-
IPv4 兼容地址
在过渡技术中会使用到一些包含 IPv4 地址的 IPv6 地址,为了让 IPv4 地址显得更加突出一些,定义了内嵌 IPv4 地址的 IPv6 地址格式。内嵌 IPv4 地址格式是过渡机制中使用的一种特殊表示方法。在这种表示方法中,IPv6 地址的部分使用十六进制表示,IPv4 地址部分可用十进制格式。0:0:0:0:0:0:192.168.1.2 或者::192.168.1.2(96 个 0)IPv4 兼容地址用于过渡机制,如自动 ipv4 兼容隧道 及 NAT-PT
2.2.2 组播
- 组播的优点
在ipv4时一个广播消息会到达广播域内的每一个主机,主机通过以太网帧报文(二层协议)无法判断是否与自己有关,需要向上解析三层协议即网络层IP报文;而现在ipv6的组播消息主机可以通过以太网帧报文直接判断是否与自己有关,无关时直接抛弃,免去了解析三层协议的情况。降低了对广播域内无关主机的骚扰、降低网络负载。
- 组播地址结构,FFxx::/8开头
- 组播ip-组播mac转换
当接收方是一个组播ip,其mac地址为33:33:组播组ID(组播IP的后32bit)
例如:组播IP为 ff02::16 其mac为 33:33:00:00:00:16
4.常用组播
- FF01::1 节点本地范围所有节点组播地址
- FF01::2 节点本地范围所有路由器组播地址
- FF02::1 链路本地范围所有节点组播地址
- FF02::2 链路本地范围所有路由器组播地址
- 被请求地址组播
在 IPv6 组播地址中,有一种特别的组播地址,叫做 Solicited-node 地址(被请求节点组播地址)。
Solicited-node 地址是一种特殊用途的地址.主要用于重复地址检测(DAD)和NS/NA协议(代替IPv4中的ARP)。Solicited-node 地址由前缀FF02::1:FF00:0 / 104 和 ipv6 单播地址的最后 24 位组成。一个 IPv6 单播地址对应一个 Solicited-node 地址。Solicited-node 地址有效范围为本地链路范围。
例如:
要对IP ‘240e:878:30:6cc6:78c5:f8db:e0f:2’ 进行DAD重复地址检测,此时目标ip位被请求地址组播地址 ‘ff02::1:ff0f:2’ ,目标mac地址为 ‘33:33:ff:0f:00:02’
2.2.3 任意播
任播地址没有专门的地址空间,使用的是单播的地址空间。一个 IPv6 地址被分配给多个接口,仅用于路由器,发往任播地址的数据包被路由给分配了任播地址中的最近的一个( 由 路 由 协 议 判 断 远 近 )。 适合于One-to-One-of-Many(一对一组中的一个)的通信场合。接收方只需要是一组接口中的一个即可,如移动用户上网就需要因地理位置的不同而接入离用户最近的一个接收站,这样才可以使移动用户在地理位置上不受太多的限制。任播地址只能作为目的 IP,不能作为源。
2.3 接口ID
1.接口ID为64bits,用于标识链路上的网卡接口,在每条链路上接口ID必须唯一。
2.接口ID的配置主要有以下几种方式:
1)、可以根据EUI-64规范生成
2)、手工配置
3)、某些系统支持自动生成随机接口ID
3.接口ID的作用
1)、可用于构成LinkLocal地址
2)、可在无状态配置环境中用于构成全局单播IPv6地址
下面看下最常用接口ID生成方式,基于EUI-64规范生成的过程:
将 48bits 的 MAC 对半劈开,插入 FFFE,然后设置第 7 位,也就是 U/L 位,该比特位确定 48bits 的 MAC 地址的唯一性与否。一个以太网地址可以有两种含义,地址可被全球管理或本地管理。全球管理指使用如0800-2bxx-xxxx 之类的厂商 MAC,本地管理指使用自己的值重写 MAC 地址,在这种情况下,这个特殊的位=1表示本地管理;为 0 表示全球管理。但是在 EUI-64 格式中,U/L 的含义正好相反,0 表示本地管理,1 表示全球管理,所以使用 EUI-64 格式的地址 IPv6 地址,U/L 位为 1,则地址是全球唯一的,如果为 0,则为本地唯一。
在了解了IPv6的地址分类后我们看下一个主机节点必须具备的IPv6地址有那些:
2.4 IPv6地址配置
-
手动配置,不推荐
-
自动配置
- 有状态地址自动配置(DHCPv6)
- 缺点:依赖于DHCPv6服务器
- 优点:方便对主机地址进行统一查询管理
- 无状态地址自动配置(RS/RA)
- 优点:无状态自动配置在主机接入一个IPv6的局域网后即使没有DHCP服务器也能自动完成ip地址的配置,做到了即插即用,大大节省了手动配置ip信息的时间。
- 缺点:对主机地址较多时,不方便统一管理
- 有状态地址自动配置(DHCPv6)
下一篇IPv6-ICMPv6协议中会讲解基于RS/RA消息进行无状态自动配置的流程。