导图社区 IPv6
IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。
编辑于2021-03-24 20:40:47IPv6
一、IPv6地址
IPv6基础描述
IPv6特点
地址空间巨大
精简报文结构
实现自动配置和重新编址
支持层次化网络结构
支持端对端安全
IPv6中,网络层支持IPSec的认证和加密,支持端到端的安全。
更好的支持QoS
支持移动特性
由于采用了Routing header和Destination option header等扩展报头
表示方法
128bit,共8组,每组4个十六进制数
压缩格式 每组中的前导“0”都可以省略 地址中包含的连续两个或多个均为0的组,用双冒号“::”代替
地址结构
①网络前缀
②接口标识
接口标识生成方法
手工生成
系统软件自动生成
通过EUI-64自动生成(最常用)
将接口的MAC地址转换成IPv6接口标识的过程。 步骤1:将MAC地址48位分成前24bit和后24bit,中间插入FFFE。 步骤2:将从高位第7位为0反转为1。 0表示本地,1表示全局,有两种反转方法,一种是为0反转为1,为1就不反转;另一种是无论是0还是1都做反转。 为单播MAC地址的唯一性,第1字节的第7bit是U/L置0表示全局,置1表示本地,所以要进行反转。
优点:减少配置工作量,用无状态地址自动配置时,只需获取前缀就可以与接口形成IPv6地址。 缺点:可通过二层MAC地址推算出IPv6地址。
地址分类
IPv6地址分类:单播、组播、任播,取消广播地址,用被请求节点组播地址替代。 IPv6单播地址前3 bit 不是 000 则接口标识必须为 64bit
1.单播地址
①全球单播地址 格式:001+全球路由前缀+子网ID+接口标识 全球前缀至少48位,子网ID最多分配到64位 2000::/3
②链路本地地址(设备之间) 怎么产生的?启动IPv6协议栈的设备,接口自动产生 格式:网络前缀(64bit)+接口标识(64bit) FE80::/10开头 使用范围:仅在同一本地链路节点之间使用。 功能:邻居发现、地址解析、无状态地址配置、用作ipv6路由协议的下一跳
③唯一本地地址(私网地址) 如何理解?类似IPv4中的私网地址,只在本地网络内部路由转发。 格式:Prefix+L+Global ID+Subnet ID+Interface ID Prefix:前缀(7bit),固定为FC00::/7 L:L(1bit)标志位,值为1标识本地网络范围内使用,值为0保留 Global ID:全球唯一前缀(40bit),通过伪随机方式产生。 Subnet ID:子网ID(16bit),划分子网用的 Interface :接口标识(64bit)
2.组播地址
格式:前缀+标志(flag)+范围+组播组 *前缀(8bit):固定为FF00::/8 *标志(4bit):前3bit为0,第4bit为0表示永久组地址,为1表示临时组地址。 *范围:定义组播流传递都范围 *组播组ID(112bit) :前80bit用0填充,后32bit表示组播组ID
被请求节点组播地址:前缀FF02::1:FF00:0/104+单播地址的最后24位组成。 生成方式:通过节点的单播或任播地址生成 被请求节点组播地址:用于邻居发现机制和地址重复检测功能。 当一个节点要解析一个IPv6地址对应的MAC时,发送NS报文, 该报文的目的IP就是对应的被请求节点组播地址;只有该组播地址的节点会检查处理。
3.任播地址
作用:用于 IPv6 的移动特性,以及访问路径优化 没有独立的地址空间,使用和 IPv6单播地址共同的地址空间。 IPv6 任播地址仅用于路由设备,不能应用于主机及IPv6 报文的源地址。
4.环回地址
定义: 0:0:0:0:0:0:0:1/128 或者::1/128
5.未指定地址
定义:0:0:0:0:0:0:0:0/128 或者::/128 表示什么?表示接口、节点没有IP 。 什么情况会出现? NS报文的重复地址检测中会出现 有什么特点? 不会被路由设备转发。
6.预定义组播地址
Node-local
FF01::1 表示所有节点 FF01::2 表示所有路由器
Link-local
所有节点的组播地址: FF02:0:0:0:0:0:0:1
所有路由器的组播地址: FF02:0:0:0:0:0:0:2
Solicited-Node组播地址: FF02:0:0:0:0:1:FFXX:XXXX
所有OSPF路由器组播地址: FF02:0:0:0:0:0:0:5
所有OSPF的DR路由器组播地址: FF02:0:0:0:0:0:0:6
所有RIP路由器组播地址: FF02:0:0:0:0:0:0:9
所有PIM路由器组播地址: FF02:0:0:0:0:0:0:13
地址
二、IPv6报文
1.组成部分
基本报头、扩展报头及上层协议数据单元三部分组成。
2.基本报头
特征 基本报头有8个字段,固定大小为40字节,IPv6数据报都必须包含报头 功能:提供报文转发的基本信息
8个主要字段 ①版本(4bit):对于IPv6值为6 ②流类别(8bit):IPv6数据报的类或优先级,用于QoS。 ③流标签(20bit):标识唯一条数据流,其他设备根据流标签处理更加高效。 ④有效载荷(16bit):扩展报头和上层协议数据单,最大长度为65535字节。 超过该值时置0,用逐跳选项扩展报头中的超大有效载荷选项表示。 ⑤下一个报头(8bit):标识扩展报头类型或协议数据单元的协议类型 ⑥跳数限制(8bit):定义数据包最大跳数,和IPv4 TTL一样 ⑦源地址(128bit):,发送方地址 ⑧目标地址(128bit):接收方地址 相对于IPv4,去除了首部长度、报文的分片与重组字段、头部校验、选项、填充域. 增加了流标签,简化了报文格式,提高了处理效率.新增扩展报头 Next Header 指出下一个扩展报头都类型。
2.扩展报头
3个主要字段 下一个报头,8bit,指出下一个扩展报头或上层协议的类型。 报文扩展长度:8bit,表示扩展报头的长度,不包括Next Header字段 扩展报头数据,长度可变,扩展报头的内容。
扩展报头类别(6个)
1.逐跳选项报头 在传送路径上使每一跳转发指定发送参数,应用于巨型载荷、设备提示、资源预留。 2.分段报头:IPv6中需要分段发送时使用都分段报头 3.认证报头:提供认证、数据完整性及重放保护 4.封装安全净载报头:提供认证、数据完整性及重放保护和IPv6数据报的保密。 5.目的选项报头:主要应用于移动IPv6 6.路由报头:用来强制数据包经过特定的设备。
扩展报头排列顺序
1.IPv6基本报头 2.逐跳选项扩展报头 3.目的选项扩展报头 4.路由扩展报头 5.分段扩展报头 6.认证扩展报头 7.封装安全有效载荷扩展报头 8.目的选项报头 9.上层协议数据报文
IPv6数据包中可以包含一个或多个扩展报头,也可以没有扩展报头
3. 上层协议数据单元
一般由上层协议包头和它的有效载荷构成,有效载荷可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。
三、基础实现
ICMPv6
功能:邻接点发现、无状态地址配置(包括重复地址检测)、PMTU发现等
在IPv4中,Internet控制报文协议ICMP向源节点报告关于向目的地传输IP数据包过程中的错误和信息。
协议号:58
报文字段
Type:消息类型,0至127表示差错报文类型,128至255表示消息报文类型。
Code:此消息类型细分的类型。
Checksum:ICMPv6报文的校验和。
差错报文
目的不可达错误报文(type1)
类型(Type)字段值为1
代码(Code)字段值为0-4
数据包过大错误报文(type2)
类型(Type)字段值为2
代码(Code)值为0
时间超时错误报文(type3)
类型(Type)字段的值为3
代码(Code)字段的值为0或1
参数错误报文(type4)
类型(Type)字段值为4
代码(Code)字段值为0~2
信息报文
回送请求报文
类型字段值为128,代码字段的值为0
标志符和序列号字段由发送方主机设置
回送应答报文
类型字段值为129,代码字段的值为0
邻居发现(NDP)
优势
地址解析
地址解析使用两种ICMPv6报文:邻居请求报文NS,邻居通告报文NA NS报文:Type字段值为135,代码值为0 NA报文:Type字段值为136,代码值为0
重复地址检测
DAD检测,分配IPv6单播地址后在通过重复地址检测之前称为试验地址 会加入两个组:ALL-NODES组播组和所对应的Solicited-Node组播组
重定向
什么情况下发送重定向报文?
报文的目的地址不是一个组播地址。
报文并非通过路由转发给路由器。
经过路由计算后,路由的下一跳出接口是接收报文的接口。
路由器发现报文的最佳下一跳IP地址和报文的源IP地址处于同一网段。
路由器检查报文的源地址,发现自身的邻居表项中有用该地址作为全球单播地址或链路本地地址的邻居存在。
无状态地址自动配置(路由发现)
只能根据前缀为64生成地址
消息:路由器请求(RS)消息、路由器请求(RA)消息
功能:SLAAC
邻居请求消息(NS) 邻居宣告消息(NA) 功能:地址解析、邻居不可达(面试可保留)、重复地址检测
Path MTU
PMTU协议是通过ICMPv6的Packet Too Big报文来完成的
首先源节点假设PMTU就是其出接口的MTU,发出一个试探性的报文,当转发路径上存在一个小于当前假设的PMTU时,转发设备就会向源节点发送Packet Too Big报文,并且携带自己的MTU值,此后源节点将PMTU的假设值更改为新收到的MTU值继续发送报文。
四、IPv6路由技术
RIPng
使用UDP的521端口
目的地址使用128比特的前缀长度
使用128比特的IPv6地址作为下一跳地址
使用链路本地地址FE80::/10作为源地址发送RIPng路由信息更新报文
使用组播方式周期性地发送路由信息,并使用FF02::9作为链路本地范围内的路由器组播地址
OSPFv3
V3和V2的比较
相同点(6)
①网络类型和接口类型
②邻居状态机和接口状态机
③链路状态数据库(LSDB)
④洪泛机制
⑤相同类型的报文:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文
⑥路由计算基本相同
不同点(9)
基于链路的运行
使用链路本地地址
作为协议报文的源地址
只能在本链路上泛洪,只在链路LSA中
链路支持多实例复用
同一链路上运行多个实例,实现链路复用并节约成本 。
通过 Router ID 唯一标识邻居
OSPFv2,点到点、虚连接通过router id 标识邻居 广播、nbma用邻居的接口地址标识邻居
v3统一用router id标识邻居
认证的变化
不再包含AuType和Authentication,使用IPv6的扩展验证头
Stub 区域的支持
支持对未知类型LSA的泛洪 当未知类型LSA的泛洪范围是区域或链路而且U比特没有置位时,可以泛洪到stub区域
报文的不同
头部字段的变: 没有了认证字段,新增了实例字段
Hello报文的变化: 去掉了掩码字段,增加了 Interface ID 字, 用来标识发送该 Hello 报文的接口ID。
Option 字段的不同
增加了R比特、 V比特。 R:标识设备是否是具备转发能力的路由器 V6:置0,该路由器或链路也不会参加IPv6路由计算。
LSA 的类型和内容不同
新增Link-LSA,启动了OSPFv3的接口产生Link-LSA 作用:①向链路上的路由器通告本地链路地址,作为下一跳 ②向链路上的路由器通告本链路上的所有IPv6前缀 ③广播网络和NBMA网络上为DR提供Options取值
每台路由器或Transit网络可以 产生多个Intra-Area-Prefix-LSA 携带区域内IPv6 Prefix信息。 依附于路由器的Prefix 依附于Stub网络的Prefix 依附于Transit网络的Prefix
IS-IS IPv6
236号TLV(IPv6 Reachability):通过定义路由信息前缀、度量值等信息来说明网络的可达性。 232号TLV(IPv6 Interface Address):它相当于IPv4中的“IP Interface Address”TLV
BGP4+
增加了两种非过渡路径 MP_REACH_NLRI MP_UNREACH_NLRI
五、过渡技术
概述
双栈技术: 节点同时支持IPv4和IPv6协议栈
IPv6 over IPv4隧道: 过渡初期使用 通过隧道技术,使IPv6报文在IPv4网络中传输 手动隧道包括IPv6 over IPv4和IPv6 over IPv4 GRE隧道 自动隧道包括IPv4兼容IPv6自动隧道、6to4隧道和ISATAP隧道
IPv6 over IPv4隧道: 过渡后期使用 通过隧道技术,使IPv6报文在IPv4网络中传输
双栈
设备必须支持IPv4/IPv6协议栈。
连接双栈网络的接口必须同时配置IPv4地址和IPv6地址。
IPv6 Over IPv4隧道
分为手动隧道和自动隧道。根据隧道终点是否手动配置。 自动隧道的的做法是将隧道的两个接口的IPv6地址采用内嵌的IPv4地址的特殊IPv6地址形式,从中提取目的IPv6地址中的IPv4地址。
手动隧道
实现技术: ①IPv6 over IPv4隧道手动隧道 ②IPv6 over IPv4 GRE隧道
优点: 通用性好,可以适用任何IPv6穿越IPv4的环境
缺点: 手工配置,与多个设备建立隧道时,配置量大。
转发机制: 隧道边缘设备收到IPv6报文后, 根据目标地址查IPv6转发表,发现是从隧道口转发出去,根据隧道口的源目的IPv4地址进行封装,将报文交给IPv4协议栈处理。 报文通过 IPv4网络转发到隧道的终点。 隧道终点收到报文后进行解封装,然后交给IPv6协议栈处理。
自动隧道
①IPv4兼容IPv6自动隧道 IPv4兼容IPv6地址的前96位全部为0,后32位为IPv4地址。 转发过程:R1发给R2的IPv6报文,查目标地址的IPv6路由,匹配隧道口, R1配置的IPv4兼容IPv6的配置,R1对IPv6报文进行封装, 源地址为隧道的起始地址,目标地址是IPv4兼容IPv6中的IPv4地址 封装好的报文经过IPv4网络到达隧道对端,然后进行解封装,将IPv6报文交给 IPv6协议栈处理。 缺点: 主机要有公网IPv4地址,且要支持双栈、不适合大面积部署,6to4隧道所代替
②6to4隧道 支持Router到Router、Host到Router、Router到Host、 Host到Host 采用6to4专用地址,即2002:IPv4::/48 场景2:可连接多个6to4网络 通过SLA ID区分 场景3:6to4中继 6to4隧道转发的IPv6报文的目的地址不是6to4地址,但转发的下一跳是6to4地址,该下一跳路由器称为6to4中继, 隧道的IPv4目的地址从下一跳的6to4地址中获得。 实现6to4网络和IPv6普通网络互通
③ISATAP隧道 支持Host到Router、Router到Host、 Host到Host 场景1:内网是IPv4网络,外网是IPv6网络,如何使IPv4网络去访问IPv6网络 场景2:让IPv4网络中两台主机通过IPv6实现互访。 ISATAP地址前64位是通过ISATAP路由器发送请求来得到的,可以地址自动配置 6to4隧道与ISATAP隧道都是用内嵌IPv4地址的特殊IPv6地址形式, 区别:6to4是使用IPv4地址做为网络前缀,而ISATAP用IPv4地址做为接口标识。 转发过程: 首先配置ISATAP隧道接口,根据IPv4地址生成 ISATAP的接口ID 根据接口ID生成ISATAP链路本地地址,然后进行自动配置 ,主机获得全球单播地址、ULA地址等。 当主机与其他IPv6主机进行通信是,从隧道口发出,将从报文的下一跳IPv6地址中取出IPv4地址作为目标地址。 如果目标主机在站点内,则下一跳为目标主机本身,如果目标主机不在站点内,则下一跳为ISATAP路由器的地址。
NAT64
IPv4报文
组成部分
首部和数据两部分组成。首部的前一部分是固定长度,共20个字节,所有IPv4数据报必须具有。 首部固定部分后面的可选字段,长度可变
重要字段
01.版本,IPv4值为4 02.首部长度: 03.区分服务:IP报文中的Tos,用于Qos 04.总长度:首部长度+数据长度 05.标识:产生一个数据,计数器+1,放到标识字段 06.标志,2位有意义,低位表示有没有分片数据,中间一位表示能不能分片,为0可以分片 07.分片位移:表明该片在原分组中相对都位置。 08.跳数限制:报文在设备上最大跳数,TTL值 09.协议:标识上层协议号 10.首部校验和:数据每经过一个设备都需要计算首部校验和,不包括数据部分
1.全球单播地址 格式:001+前缀+子网ID+接口ID 2.链路本地地址 格式:FE80+0(50bit)+接口ID(64bit) 前缀:FE80::/10 3.唯一本地地址(私网地址) 格式:前缀+L标志+全球唯一前缀+子网ID+接口标识 前缀:FC00::/7 4.IPv6组播地址 格式:前缀+标志(Flag)+范围(Scope)+组播组ID 前缀:FF00::/8 被请求节点组播地址:该组播地址的节点才处理 被请求节点组播地址前缀:FF02::1:FF00:0/104+单播地址的最后24位