一文看懂IPv6

2026年01月19日/ 浏览 7

ipv6是什么

IPv6(Internet Protocol Version 6),也被称为IPng(IP Next Generation),也就是下一代IP协议。

IPv6是当前主流IP协议IPv4的升级版本。

现在从国家政策,到各大互联网公司,都在积极推动IPv6的落地,华为HCIE 3.0的考纲,也将各个协议的IPv6版本加入了重点考察范围。

图1:国家政策推动IPv6落地

图2:各大知名app均已支持IPv6

图3:华为HCIE 3.0大纲,各协议均包含ipv4和ipv6双协议栈

为什么要用IPv6

2.1 IPv4当前的问题

任何技术的革新,都在解决痛点,那现在的IPv4存在哪些问题呢

地址数量有限

现在IPv4地址已经分配完了,中国总共只有3亿地址,相当于10个人只能分到2个地址,远远不够使用。

图4:各国IPv4地址总数(前5名)

而中国还是除美国外地址数量最多的国家。

NAT技术降低网络性能

当前地址有限的解决方案是NAT,网络地址转换技术。

NAT就是让多个内网主机,转成一个公网IP来连接互联网。这样虽然能暂时解决地址紧缺的问题,但会带来更多的问题。

首先地址转换对设备的压力很大,势必会降低网络性能,增加延迟,降低体验。

为什么中国移动的宽带体验就是比不上中国电信和联通呢?并不是技术问题,中国移动这么大的运营商技术能差到哪里去,根本的原因还是移动的公网IP地址太少,只能通过更多的NAT来承载用户的数据,所以延迟更大,给用户体验不佳,当然移动也因此只能降低宽带费用来获取用户。

NAT并不能长久的解决地址紧缺问题

因为NAT实现一个公网地址承载多个用户流量的原理是,用端口号来区分不同用户的连接,但是一个公网IP最多只有65535个端口,所以承载的连接数有限。当用户数据持续增多,也必须要用到更多的公网IP了。现在的移动互联网发展这么迅速,数据流越来越大,升级IPv6可以说迫在眉睫,这也是为什么比较大的几个互联网公司,率先做了IPv6改造。留意下会发现BAT(百度阿里腾讯),TMD(头条美团滴滴)都已经完成了IPv6整体升级。

无法适应物联网的发展

万物互连,万物都需要IP地址,当然IPv4已经有心无力

广播机制存在,对网络性能会造成损耗

IPv4中的ARP、DHCP等必备协议均采用广播方式,对网络的性能会有一定消耗。

2.2 IPv6有哪些特点,是如何解决IPv4的各个问题的?

地址数量巨大

IPv6采用128位的地址空间,总地址数量是2的128次方,理论上可以说地址数量近乎无限。

IPv6可以给地球上的每粒沙子都分到1个地址

提高网络性能

IPv6不但可以避免NAT造成的性能损耗,另外还精简了报头结构,让数据转发效率更高。

和IPv4头部相比,IPv6头部去除了IHL、identifiers、Flags、Fragment Offset、Header Checksum、 Options、Padding域,只增了流标签域,因此IPv6报文头的处理较IPv4大大简化,提高了处理效率。

图5:IPv4报文头部

图6:IPv6报文头部

当然,可能会问,IPv6头部精简掉的这些字段,都是有用的呀。要用的时候没有怎么办?

IPv6提出了扩展头部的概念,可以按需对头部字段进行扩展,可以实现所需的功能。

比如需要做IP分片,那就加入用于分片的扩展头部即可。

另外IPv6取消了广播机制,用组播来代替IPv4的广播,可以减少广播报文对全网的性能消耗,具体原理后续会详细讲解。

简化运维,自动编址

IPv4需要借助DHCP才可以实现终端自动获取地址。IPv6本身就具备自动配置地址的能力。

更加安全

IPv6原生支持IPsec扩展头部,可以从各个方面保障数据传输的安全。

所以我们也能发现,IPv4中的OSPF、VRRP等都要考虑怎么保证自己的安全,加入了邻居验证机制,而IPv6版本的OSPFv3,VRRP for IPv6都没有设计验证机制,因为IPv6本身即可实现安全保障。

图7:各个协议的IPv6版本,去掉了安全认证功能

IPv6地址长什么样?

3.1 IPv6地址格式

IPv6地址总长度为128比特,分为8组,每组为4个十六进制数的形式,每组十六进制数间用冒号分隔。

例如:FC00:0000:130F:0000:0000:09C0:876A:130B

3.2 IPv6地址如何缩写

每组中的前导“0”都可以省略,所以上述地址可写为:FC00:0:130F:0:0:9C0:876A:130B。

地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替

所以上述地址又可以进一步简写为:FC00:0:130F::9C0:876A:130B。

需要注意的是,在一个IPv6地址中只能使用一次双冒号“::”

3.3 IPv6地址的掩码怎么写

IPv6的掩码使用“前缀长度”来表示,如:

FC00:0:130F::9C0:876A:130B/64

代表这个地址的前缀长度是64,也就是掩码长度为64位

四、IPv6的单播地址分为哪几种?

IPv6地址(单播)不像IPv4那样分成ABC三类,而是按以下几种方式来分类

全球单播地址

全球唯一的单播地址,类似于IPv4的公网IP

地址范围是2000::/3

唯一本地地址

相当于IPv4的私网ip,在Internet不可路由。

IPv4的私网ip是为了节省地址,而IPv6主要为了安全(和Internet隔离),或者暂时没申请到地址临时使用。

地址范围是FC00::/7

链路本地地址

当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址。

这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。

链路本地地址的具体应用实例,后续会详细介绍。

地址范围是FE80::/10

链路本地地址可以使用EUI64自动生成,关于EUI64的地址生成方式,后续通过实验来讲解。

特殊地址

0:0:0:0:0:0:0:1/128 或者::1/128。

与IPv4中的127.0.0.1作用相同,用于本地回环,发往::/1的数据包实际上就是发给本地,可用于本地协议栈回环测试。

0:0:0:0:0:0:0:0/128 或者::/128。

该地址作为某些报文的源地址,比如作为重复地址检测时发送的邻居请求报文(NS)的源地址,或者DHCPv6初始化过程中客户端所发送的请求报文的源地址。

五、IPv6的组播地址分为哪几种?

IPv6的组播地址范围是FF00::/8,除了常规组播地址外,还有以下特殊组播地址

预定义组播地址

用于知名协议,类似于IPv4的224.0.0.x

FF02:0:0:0:0:0:0:1,所有节点的组播地址。

FF02:0:0:0:0:0:0:2,所有路由器的组播地址。

FF02:0:0:0:0:1:FFXX:XXXX ,Solicited-Node组播地址。

FF02:0:0:0:0:0:0:5,所有OSPF路由器组播地址。

FF02:0:0:0:0:0:0:6,所有OSPF的DR路由器组播地址。

FF02:0:0:0:0:0:0:D,所有PIM路由器组播地址。

附:IPv4预定义组播地址

224.0.0.1 All Systems on this Subnet

224.0.0.2 All Routers on this Subnet

224.0.0.5 OSPFIGP OSPFIGP All Routers

224.0.0.6 OSPFIGP OSPFIGP Designated Routers

224.0.0.9 RIP2 Routers

224.0.0.10 EIGRP Routers

224.0.0.13 All PIM Routers

224.0.0.18 VRRP

224.0.0.22 IGMP

224.0.0.102 HSRP

被请求节点组播地址

ipv6新增的组播类型,代替了ipv4的广播,如arp

被请求节点组播地址(Solicited-Node Multicast Address)通过节点的单播地址生成。

被请求节点组播地址由固定前缀FF02::1:FF00:0/104和对应IPv6地址的最后24bit组成。

被请求节点组播地址的有效范围为本地链路范围。

当一个节点具有了单播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。

IPv6组播Mac地址映射

33-33是专门为IPv6组播预留的MAC地址前缀,MAC地址的后32bit从对应的组播IPv6地址的后32bit拷贝而来。

六、IPv6地址配置实战

实验拓扑

实验需求

1、AR1和AR2配置IPv6地址,并且可互相通信

2、观察AR1的全局单播地址,链路本地地址,组播地址

配置步骤及参考命令

全局开启IPv6功能

[AR1]ipv6

接口使能IPv6

[AR1]int g0/0/0

[AR1-GigabitEthernet0/0/0]ipv6 enable

配置IPv6地址及前缀长度

[AR1-GigabitEthernet0/0/0]ipv6 address 2000::1 64

查看接口IPv6地址摘要信息

[AR1]display ipv6 interface brief

Interface Physical Protocol

GigabitEthernet0/0/0 up up

[IPv6 Address] 2000::1

查看接口IPv6详细信息

[AR1]display ipv6 interface

GigabitEthernet0/0/0 current state : UP

IPv6 protocol current state : UP

IPv6 is enabled, link-local address is FE80::2E0:FCFF:FE33:7263 链路本地地址

Global unicast address(es): 全局单播地址

2000::1, subnet is 2000::/64

Joined group address(es): 组播地址

FF02::1:FF00:1

FF02::2

FF02::1

FF02::1:FF33:7263

MTU is 1500 bytes

ND DAD is enabled, number of DAD attempts: 1

ND reachable time is 30000 milliseconds

ND retransmit interval is 1000 milliseconds

Hosts use stateless autoconfig for addresses

Ping测试

[AR1]ping ipv6 2000::2

PING 2000::2 : 56 data bytes, press CTRL_C to break

Reply from 2000::2

bytes=56 Sequence=1 hop limit=64 time = 30 ms

Reply from 2000::2

bytes=56 Sequence=2 hop limit=64 time = 30 ms

Reply from 2000::2

bytes=56 Sequence=3 hop limit=64 time = 20 ms

Reply from 2000::2

bytes=56 Sequence=4 hop limit=64 time = 30 ms

Reply from 2000::2

bytes=56 Sequence=5 hop limit=64 time = 20 ms

七、IPv6为什么离不开ICMPv6

在IPv4中,ICMP协议主要用来网络质量测试,和发送各种报错信息

在IPv6中,ICMP除了保留IPv4中已存在的功能外,还负责实现NDP(邻居发现协议)相关的功能。

7.1 ICMPv6的网络连通性测试功能

和IPv4一样,在IPv6中,ping也是使用ICMP报文,原理也和IPv4中相同

7.2 故障报告

也和IPv4一样,ICMP报文用不同的type+code组合,来表示不同的网络故障

7.3 IPv6 NDP邻居发现协议简介

IPv6独有的NDP邻居发现协议,也是基于ICMP。

NDP的作用有以下几点代替普通ARP来解析出某个节点的MAC地址代替免费ARP来检测地址冲突代替DHCP为客户端自动配置地址代替DF置位报文来检测路径MTU

详细工作原理在下个章节

八、 IPv6基础协议

8.1 地址解析

IPv6的地址解析不再使用ARP,而是使用ICMPv6来实现mac地址请求和回应。

也不再使用广播方式,而是使用组播方式来将报文发送到目标主机,其中组播地址,是目标主机的被请求节点组播地址。

而这个组播报文,传播范围和广播一样,都是在一个广播域内,但是可以有效提高整体网络的性能。

因为广播报文,所有主机收到都必须拆包查看报文里的内容,而组播报文,只有相关的主机才需要拆包查看,其他无关主机直接丢弃就好,减轻了整体压力。

具体工作原理如下:

IPv6节点通过ICMPv6(类型135的NS及类型136的NA报文)来实现地址解析。

NS报文发送使用组播的方式,报文的目的IPv6地址为被请求的IPv6地址对应的“被请求节点组播地址”,报文的目的MAC为组播MAC。

NA报文,代替ARP回应,报文结构如下

8.2 重复地址检测DAD

相当于IPv4中的的免费ARP,原理类似,报文如下

可以看出,在请求解析自己的IP,如果收到回应,说明网络中存在地址冲突

如果华为的设备发现地址冲突,在查看接口地址时,会看到duplicate(重复)

[Huawei]dis ipv6 interface

2000::1, subnet is 2000::/64 [DUPLICATE]

8.3 无状态地址配置

在IPv6网络中,自动配置地址比IPv4还重要,毕竟地址长了很多,手动配置带来的问题就更大了。

和IPv4不同,IPv6除了可以使用DHCPv6外,还可以使用无状态地址配置的方式,实现自动获取地址。其中无状态地址配置的方式,无需DHCP服务器,更加轻量化。具体工作原理如下

当终端连入网络,网关设备会发送一个基于ICMPv6的RA报文,RA报文包含了IPv6地址前缀。IPv6的地址前缀,相当于IPv4地址的网络号。

终端收到RA报文,就知道了这个链路的网络号,然后再通过EUI64(稍后有介绍)自动生成接口ID,而接口ID就相当于IPv4中的主机位,现在网络位和主机位都有了,就获得了完整的IPv6地址。

在上图的例子中

2001:: d4cf:1c:2649:8f6e/64

2001:: 就是网络前缀,前缀长度是64

d4cf:1c:2649:8f6e就是接口id,这个是由EUI64自动生成的。

EUI64是怎么回事呢?其实就是用接口的MAC地址来自动生成接口ID,算法很简单,主要解决怎么把48位的mac地址变成64位的接口id,差的16位怎么来

以一个例子来看,一个mac地址00e0-fca4-5fff如何通过eui 64变成ipv6的接口id的

[Huawei]dis int g0/0/0

Hardware address is 00e0-fca4-5fff

第一步:在mac地址的中间,插入fffe,变成这样

00e0-fcff-fea4-5fff

第二步:将mac地址的第7位进行取反,变成这样

02e0-fcff-fea4-5fff

注意,算的时候,是要先把mac地址变成二进制,将二进制的第七位取反。

[Huawei]dis ipv6 int g0/0/0 最终通过无状态获取到的地址如下

2001::2E0:FCFF:FEA4:5FFF

九、IPv6路由协议

9.1 IPv6直连路由

和IPv4一样,只有接口配了地址且up,则自动出现直连路由

路由表信息和解读如下

[Huawei]display ipv6 routing-table protocol direct

Public Routing Table : Direct

Summary Count : 4

Direct Routing Tables Status : < Active >

Summary Count : 4

Destination : 2001:: PrefixLength : 64

NextHop : 2001::2E0:FCFF:FEA4:5FFF Preference : 0

Cost : 0 Protocol : Direct

RelayNextHop : :: TunnelID : 0x0

Interface : GigabitEthernet0/0/0 Flags : D

解读:虽说ipv6路由表看起来信息量大,但内容和ipv4类似,只是ipv4的路由详情需要加verbose参数才会显示,ipv6直接就显示了

目标网络及前缀 Destination : 2001:: PrefixLength : 64

下一跳 NextHop : 2001::2E0:FCFF:FEA4:5FFF

优先级 Preference : 0

路由开销 Cost : 0

出接口 Interface : GigabitEthernet0/0/0

9.2 IPv6静态路由

添加静态路由的命令

[Huawei]ipv6 route-static 2021:: 64 2001::1

查看静态路由

[Huawei]display ipv6 routing-table protocol static

Public Routing Table : Static

Static Routing Tables Status : < Active >

Summary Count : 1

Destination : 2021:: PrefixLength : 64

NextHop : 2001::1 Preference : 60

Cost : 0 Protocol : Static

RelayNextHop : :: TunnelID : 0x0

Interface : GigabitEthernet0/0/0 Flags : RD

9.3 IPv6动态路由

RIP、OSPF、BGP等动态路由协议,都有IPv6的版本,这里以OSPFv3为例

AR1配置

[Huawei]ospfv3 1

[Huawei-ospfv3-1]router-id 1.1.1.1

[Huawei-ospfv3-1]int g0/0/0

[Huawei-GigabitEthernet0/0/0]ospfv3 1 area 0

AR2配置

[Huawei]ospfv3 1

[Huawei-ospfv3-1]router-id 2.2.2.2

[Huawei-ospfv3-1]int g0/0/0

[Huawei-GigabitEthernet0/0/0]ospfv3 1 area 0

[Huawei-ospfv3-1]int loop 0

[Huawei-LoopBack0]ospfv3 1 area 0

在AR1查看ospfv3邻居

[Huawei]dis ospfv3 peer

OSPFv3 Process (1)

OSPFv3 Area (0.0.0.0)

Neighbor ID Pri State Dead Time Interface Instance ID

2.2.2.2 1 Full/Backup 00:00:40 GE0/0/0 0

在AR1查看路由表

[Huawei]display ipv6 routing-table protocol ospfv3

Public Routing Table : OSPFv3

OSPFv3 Routing Tables Status : < Active >

Summary Count : 1

Destination : 3000::1 PrefixLength : 128

NextHop : FE80::2E0:FCFF:FE2E:6222 Preference : 10

Cost : 1 Protocol : OSPFv3

RelayNextHop : :: TunnelID : 0x0

Interface : GigabitEthernet0/0/0 Flags : D

OSPFv3的路由下一跳是FE80链路本地地址

思维导图源文件,需要的小伙伴可以私信获取

picture loss