一、IPv4存在的问题
-
IPv4地址数量有限,理论2的32次方
-
IPv4地址分配方式,IANA—RIR—LIR,分到中国只有3亿
-
地址有限的解决方案
- CIDR/VLSM
- NAT
-
无法适应物联网的发展
-
广播机制存在,会造成一定的性能损耗
二、IPv6特点
1.地址空间巨大
- 理论2的128次方,“可以给每粒沙子分配一个地址”
2.精简报文结构,提高效率
-
-
IPv6和IPv4相比,去除了IHL、identifiers、Flags、Fragment Offset、Header Checksum、Options、Padding域,只增了流标签域,因此IPv6报文头的处理较IPv4大大简化,提高了处理效率。另外,IPv6为了更好支持各种选项处理,提出了扩展头的概念,新增选项时不必修改现有结构就能做到,理论上可以无限扩展,体现了优异的灵活性。下面为读者介绍IPv6扩展报头的一些信息。
3.实现自动配置和重新编址
- 可以自动生成ipv6地址
4.支持层次化网络编址
- ipv4,各大运营商申请的时候,都不连续,无法汇总。
- ipv6,各大isp地址段连续,可以更好的层次化编址,方便路由聚合,精简路由表提高转发效率。
5.支持端到端的安全
-
ipv6原生支持IPseg,所以ospfy3等协议,不用再自己解决验证等安全问题
-
-
OSPF
-
6.移动性支持
- RFC 3775 - Mobility Support in IPv6
- 类似于wlan漫游,主机移动到另一个网络,原先的地址不需要修改,ipv6协议可以自动映射成新网络的地址
7.更好的支持QoS
- IPv6增加了流标签,更方便做gos,流标签可以定义一个数据流。数据流是由五元组生成,之前要看五元组,有了流标签不需要查看五元组。
二、IPV6地址
1.地址格式
1.1.IPv6地址总长度为128比特,分为8组,每组为4个十六进制数的形式,十六进制数间用冒号分隔。例如:FC00:0000:130F:0000:0000:09C0:876A:130B
1.2.地址压缩表示
- 每组中的前导"0"都可以省略,所以上述地址可写为:FC00:0:130F:0:0:9C0:876A:130B。
- 地址中包含的连续两个或多个均为0的组,可以用双冒号"::"来代替,所以上述地址又可以进一步简写为:FC00:0:130F::9C0:876A:130B。
- 需要注意的是,在一个IPv6地址中只能使用一次双冒号"::“,否则当计算机将压缩后的地址恢复成128位时,无法确定每个”::"代表0的个数。
1.3地址结构
一个IPv6地址(如2001::1/16)可以分为两部分:
- 网络前缀:相当于IPv4地址中的网络ID
- 接口标识:相当于IPv4地址中的主机ID
- 手动配置
- interface GigabitEthernet0/0/0
- ipv6 enable
- ipv6 address 2001::1/16
- dhcpv6服务器分配
- 随机生成
- eui64
-
-
为什么u/l位取反
- 因为以太网mac地址的第7位,和ipv6地址的第7位,关于全局还是本地的含义相反
- https://tools.ietf.org/html/rfc5342#section-2.2
-
- 手动配置
2.单播地址
2.1.全球单播地址
- 相当于IPv4的公网ip
2.2.唯一本地地址
- 相当于IPv4的私网ip,在Internet不可路由,主要为了安全,或者暂时没申请到地址
2.3.链路本地地址
- 当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址(其固定的前缀+EUI-64规则形成的接口标识)。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。所以链路本地地址广泛应用于邻居发现,无状态地址配置等应用。
- 链路本地地址是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。它使用了特定的本地链路前缀FE80::/10(最高10位值为1111111010),同时将接口标识添加在后面作为地址的低64比特。
- 以链路本地地址为源地址或目的地址的IPv6报文不会被路由设备转发到其他链路。
2.4.环回地址
- 等同ipv4的环回地址,也就是代表本机
- ::1/128
2.5.未指定地址
- 还没获得地址的时候,如dhcp请求报文
- ::/128
三、组播地址
1.地址范围
FFO0::/8
-
https://www.rfc-editor.org/info/rfc4291
-
-
flag ( ff后的4位):
- flgs位为4bit : |0|R|P|T|
- flgs位的高1bit为保留,必须设置为0
- T位如果为置0表示永久分配或者是well-known组播地址,如果置1表示临时分配动态的地址,不固定。
- P位如果置1的话表示此组播地址是一个基于单播前缀的ipv6组播地址。默认为0,如果P位设置为1,那么T位必须为1。
- R位如果置1的话表示此组播地址是一个内嵌RP地址的ipv6组播地址。默认为0。
-
scop(flag后的4位):可以控制组播报文传播的范围
-
group id (最后的32位)
-
中间的80位现在保留不用,全为0
2.被请求节点组播地址
- ipv6新增,代替了很多ipv4的广播,如arp
- 被请求节点组播地址(Solicited-NodeMulticast Address)通过节点的单播或任播地址生成。当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。
- 一个单播地址或任播地址对应一个被请求节点组播地址。该地址主要用于邻居发现机制和地址重复检测功能。
- 被请求节点组播地址由固定前缀FF02::1:FF00:0/104和对应IPv6地址的最后24bit组成。被请求节点组播地址的有效范围为本地链路范围。
3.预定义组播地址
- 类似于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路由器组播地址。