IPv6 基本原理详解介绍

您所在的位置:网站首页 IP协议原理 IPv6 基本原理详解介绍

IPv6 基本原理详解介绍

2023-08-20 11:10| 来源: 网络整理| 查看: 265

文章目录 一、IPv6报文格式基本报头扩展报头IPv6和IPv4报头比较 二、IPv6编址技术IPv6地址表示IPv6地址结构地址类型EUI-64单播地址IPv6组播地址IPv6任播地址 三、ICMPv6ICMPv6概述邻居发现协议(NDP,Neighbor Ddiscovery Protocol)NDP使用ICMPv6的相关报文地址解析IPv6邻居状态重复地址检测DAD无状态自动配置路由发现重定向报文PMTU发现实验

一、IPv6报文格式 基本报头

在这里插入图片描述 版本Version:长度4bit,0x06,表示IPv6 流量类别Traffic Class:长度8bit,与IPv4的TOS字段类似 流标签Flow Label:长度20bit,标识同一数据流,不同的流标签+源地址可以唯一确定一条数据流,同一个数据流,不用处理流中每个数据包头,提高处理效率 数据包的有效载荷Payload Length:长度16bit,有效载荷长度,以Byte为单位,指IPv6基本报头后面的长度和扩展报头长度 下个报头Next Header:长度8bit,指明跟在基本头后面是哪种扩展头或者上层协议中的协议类型,如果只有基本报头,没有扩展报头,该字段标识上层使用协议,如UDP为6,TCP为17 跳数限制Hop Limit:类似TTL字段 源IPv6地址Source Address:必须是IPv6单播地址 目的IPv6地址Destination Address:必须是IPv6单播地址或组播地址

扩展报头

扩展报头是可选的,只有需要该扩展报头对应的功能时,数据的发送者才会添加相应扩展报头。 在这里插入图片描述 下一个报头Next Header:长度8bit 包头扩展长度Extension heaser length:长度8bit,标识扩展报头的长度(不包含Next Header字段) 扩展报头数据Extension Head Data:长度可变,扩展报头的内容,为一系列选项字段和填充字段的组合 在这里插入图片描述

IPv6和IPv4报头比较

去除了IHL、标识、flags、分段偏移、首部效验

二、IPv6编址技术 IPv6地址表示

简化规则1:每一个地址块的起始部分的0可以省略掉 简化规则2: 有1个或连续多个0组成的地址块可以用"::"取代

IPv6地址结构

在这里插入图片描述 网络前缀:相当于IPv4中的网络位 接口ID:相当于IPv4中的主机位 接口ID的三种生成方法:①手工配置②系统通过软件自动生成③EUI-64

地址类型

组播地址、单播地址、任播地址。没有广播地址 单播地址分为:未指定地址、环回地址、链路本地地址、全球单播地址、唯一本地地址

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

EUI-64

①将FFFE插入MAC地址的公司标识符和扩展标识符之间 ②将高七位的0改为1

单播地址

全球单播地址 它是全局唯一的和全局可路由的。 类似于IPv4公网地址。 由前缀、子网ID和接收标识符组成。 允许路由前缀的聚合。 在这里插入图片描述 001:3bit,固定前缀 TLA(Top Level Aggregation)顶级聚合:13bit,IPv6管理机构根据TLA分配不同的地址给骨干网 RES:8bit,保留使用 NLA(Next Level Aggregation)次级聚合:24bit,骨干网ISP根据NLA为各个中小ISP分配不同地址段 SLA(Site Level Aggregation)站点级聚合:16bit,企业根据SLA分成不同网段,分配各站点使用

由001、TLA、RES、NLA组成的前缀叫全局路由前缀

链路本地地址 在一个节点启动IPv6协议栈时,节点的每个接口会自动配置一个链路本地地址 链路本地地址是IPv6中的范围受限制的地址类型,该地址只能于相同链路上主机通信 只能在连接到同一本地链路的节点之间使用,应用于邻居发现、无状态地址等 链路本地地址前缀FE80::/10,将接口ID添加在后面作为地址的低64位 在这里插入图片描述 唯一本地地址 类似IPv4私网地址,只能在本地网络使用 唯一本地地址固定前缀FC00::/7。它被分为两块,FC00::/8暂未定义,另一块是FD00::/8 在这里插入图片描述 Prefix:前缀;固定为FC00::/7。 L:L标志位;值为1代表本地网络范围内使用的地址;值为0被保留,用于以后扩展。 Global ID:全球唯一前缀;通过伪随机方式产生(RFC4193)。 Subnet ID:子网ID;划分子网使用。 Interface ID:接口标识。

未指定地址 0:0:0:0:0:0:0:0/128或者::/128 该地址作为某些报文的源地址,比如重复地址检测时发送的邻居请求报文NS的源地址,或者DHCPv6初始化过程中客户端所发送的请求报文的源地址

环回地址 0:0:0:0:0:0:0:1/128或者::1/128 与IPv4中的127.0.0.1作用相同,用于本地回环

IPv6组播地址

用来标识一组接口,发往组播地址的数据将被转发给侦听该地址的多个设备。 地址范围:FF00::/8 在这里插入图片描述 Flags:4bit,第一位都是零,格式|0|r|p|t|,通常0000或者0001 r位:取0表示内嵌RP,取1表示内嵌RP p位:取0表示非基于单播前缀的组播地址,取1表示基于单播前缀的组播地址 t位:取0表示永久分配组播地址,取1表示临时分配组播地址 Scope:4bit,标识传播范围 0001 node(节点):本地接口范围,仅用于Lookback 0010 link(链路):本地链路范围 0101 Site(站点):本地站点范围 1000 organization(组织):本地组织范围,属于同一个组织多个站点 111 0 global(全球):全局范围 Group ID:32bit,组播组ID

预定义组播地址 Node-local(节点本地范围) FF01:0:0:0:0:0:0:1,所有节点的组播地址 FF01:0:0:0:0:0:0:2,所有路由器的组播地址 Link-laocal(链路本地范围) 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路由器组播地址。

IPv6组播地址的MAC地址映射 组播IPv6报文中,目的IP地址是组播IPv6地址,目的MAC地址是组播MAC地址,该地址必须与组播IPv6地址对应 组播MAC地址高16位是3333,低32位与组播IPv6地址的低32位一致

被请求节点组播地址(Solicited-Node Multicast Address) 一个节点具有单播或任播地址,就会生成一个对应的被请求节点组播地址 前缀FF02::1:FF00:0/104和对应IPv6地址的最后24位组成 主要应用:邻居发现、地址重复检测功能

IPv6任播地址

任播地址是IPv6特有的地址类型,用来标识一组网络接口 发往任播的报文只会被发送到最近的一个接口。 任播地址与单播地址使用相同的地址空间,因此任播与单播的表示无任何区别; 配置时须明确表明是任播地址,以此区别单播和任播。

三、ICMPv6 ICMPv6概述

ICMPv6是IPv6的基础协议之一,用于向源节点传递报文转发的信息或者错误。 协议类型号(Next Header):58 ICMPv6除了提供IPv4功能之外,还提供了邻居发现、无状态地址配置、重复地址检测、PMTU发现等等

ICMPv6报头字段 在这里插入图片描述 Type:表明消息的类型,0至127表示差错报文类型,128至255表示消息报文类型。 Code:表示此消息类型细分的类型。 Checksum:表示ICMPv6报文的校验和。 在这里插入图片描述 目的不可达错误报文: 在IPv6节点转发IPv6报文过程中,当设备发现目的地址不可达时,就会向发送报文的源节点发送ICMPv6目的不可达错误报文,同时携带错误报文的具体原因。

数据包过大错误报文: 在IPv6节点转发IPv6报文过程中,发现报文超过出接口的链路MTU时,则向发送报文的源节点发送ICMPv6数据包过大错误报文,其中携带出接口的链路MTU值。数据包过大错误报文是Path MTU发现机制的基础。

时间超时错误报文: 当路由器收到Hop Limit字段值等于0的数据包,或者当路由器将Hop Limit字段值减为0时,会向发送报文的源节点发送ICMPv6超时错误报文。 对于分段重组报文的操作,如果超过定时时间,也会产生一个ICMPv6超时报文。

参数错误报文: 当目的节点收到一个 IPv6 报文时,会对报文进行有效性检查,如果发现问题会向报文的源节点回应一个 ICMPv6 参数错误差错报文。

邻居发现协议(NDP,Neighbor Ddiscovery Protocol)

NDP实现了IPv6中许多重要机制

路由器发现 帮助设备发现链路上的路由器,并获得路由器通告的信息。

无状态自动配置 通过路由器通告的地址前缀,终端自动生成IPv6地址。无状态自动配置机制使用到了ICMPv6中的路由器请求报文(RS)及路由器通告报文(RA)。

DAD重复地址检测 获得地址后,进行地址重复检测,确保地址不存在冲突。一个IPv6地址必须经历重复地址检测并通过检测之后才能够启用。

地址解析 请求目的网络地址对应的数据链路层地址,类似IPv4的ARP。使用NDP所定义的邻居请求报文(NS)及邻居通告报文(NA)来实现地址解析功能。

邻居状态跟踪 通过NDP发现链路上的邻居并跟踪邻居状态。IPv6定义了节点之间邻居的状态机,同时还维护邻居IPv6地址与二层地址如MAC的映射关系,相应的表项存储于设备的IPv6邻居表中。

前缀重编址 路由器对所通告的地址前缀进行灵活设置实现网络重编址。IPv6路由器能够通过ICMPv6的路由器通告报文(RA)向链路上通告IPv6前缀信息。通过这种方式,主机能够从RA中所包含的前缀信息自动构建自己的IPv6单播地址。当然这些自动获取的地址是有生存时间的。通过在RA中通告IPv6地址前缀,并且灵活地设定地址的生存时间,能够实现网络中IPv6新、老前缀的平滑过渡,而无需在主机终端上消耗大量的手工劳动重新配置地址。 路由重定向 告知其他设备,到达目标网络的更优下一跳

NDP使用ICMPv6的相关报文

RS(Router Solicitation):路由器请求报文 RA(Router Advertisement):路由器通告报文 NS(Neighbor Solicitation):邻居请求报文 NA(Neighbor Advertisement):邻居通告报文 在这里插入图片描述

地址解析

通过ICMPv6的NA、NS报文实现地址解析来代替IPv4的ARP报文 NS报文中的目的IP是被请求节点组播地址,目的MAC是组播MAC,组播方式比广播更高效,也减少了对其他节点的影响和对二层网络的性能压力 可以使用三层安全机制(IPSec)避免地址解析攻击 三个特点:①加强介质独立性:直接ICMPv6代替ARP②可以使用三层安全机制避免ARP欺骗③使用被请求节点组播地址,而不是广播

NS报文: 在这里插入图片描述 ICMP的Type为135,Code为0; Target Address是需要解析的IPv6地址,因此该处不准出现组播地址。 邻居请求发送者的链路层地址会被放在Options字段中。

NA报文: 在这里插入图片描述 ICMP Type为136,Code为0; R标志(Router flag)表示发送者是否为路由器,如果1则表示是; S标志(Solicited flag)表示发送邻居通告是否是响应某个邻居请求,如果1则表示是; O标志(Overide flag)表示邻居通告中的消息是否覆盖已有的条目信息,如果1则表示是; Traget Address表示所携带的链路层地址对应的IPv6地址。 被请求的链路层地址被放在Options字段中,其格式仍然采用TLV格式

地址解析过程 在这里插入图片描述 PC1想跟PC2通信,就必须先解析出PC2的链路层地址。 ①PC1会发送一个NS报文,其中源地址为PC1的IPv6地址,目的地址为PC2的被请求节点组播地址,携带PC1的链路层地址 ②PC2收到NS后,以单播方式向PC1回应NA消息,消息中包含PC2的IP地址和MAC地址。PC2还会将PC1的IPv6地址和MAC地址加入本地邻居缓存表中 ③PC1收到PC2的NA消息后,将PC2的IPv6地址和MAC地址加入本地邻居缓存表中

可以用display ipv6 neighbor查看ipv6邻居表

IPv6邻居状态

在这里插入图片描述 INCOMPLETE 未完成,邻居请求已经发送到目标节点的请求组播地址,但没有收到邻居的通告; REACHABLE 可达,收到确认,不续再发包确认; STALE 陈旧,从收到上一次可达性确认后过了超过30s; DELAY 延迟,在stale状态后发送过一个报文,并且5s内没有可达性确认; PROBE 探查,每隔1s重传邻居请求来主动请求可达性确认,直到收到确认。 通信过程: ①A先发送NS,并生成邻居缓存条目,状态为Incomplete; ②若B回复NA,则Incomplete->Reachable,否则10s后Incomplete->Empty,即删除条目; ③经过ReachableTime(默认30s),条目状态Reachable->Stale; ④或者在Reachable状态,收到B的非请求NA,且链路层地址不同,则马上->Stale; ⑤在Stale状态若A需要向B发送数据,则Stale->Delay,同时发送NS请求; ⑥在Delay_First_Probe_Time(默认5秒)后,Delay->Probe,其间若有NA应答,则Delay->Reachable; ⑦在Probe状态,每隔RetransTimer(默认1秒)发送单播NS,发送MAX_UNICAST_SOLICIT个后再等RestransTimer,有应答则->Reachable,否则进入Empty,即删除表项。

重复地址检测DAD

概述 确保网络中没有两个相同的单播地址 所有地址都要DAD 使用NS、NA完成DAD交互

DAD过程 在这里插入图片描述 现在我们为R1新配置IPv6的地址2001::FFFF/64,之后会进行DAD重复地址检查。 ①R1向链路上以组播的方式发送一个NS报文,该NS的源IPv6地址为“::”,目的IPv6地址为要进行DAD检测的2001::1对应被请求节点组播地址。并且数据携带要进行DAD的地址。 ②只有地址是2001:1的接口收到该信息才会进行NA回复,该报文目的IP是所有节点组播地址FF02::1,同时在报文内写入目标地址2001:1,以及自己接口的MAC地址。 ③当R1收到这个NA后,它就知道2001:1在链路上已经有人在用了,因此将该地址标记为Duplicate(重复的),该地址将不能用于通信。

可以用display ipv6 interface观察IPv6地址是否冲突,如果冲突会被标记Duplicate

无状态自动配置

设备可以手工或动态方式获取地址,动态分为DHCPv6和无状态地址自动配置

无状态地址配置过程 在这里插入图片描述 ①根据接口标识产生链路本地地址。 ②发出邻居请求,进行重复地址检测。 ③如地址冲突,则停止自动配置,需要手工配置。 ④如不冲突,链路本地地址生效,节点具备本地链路通信能力。 ⑤主机会发送 RS 报文(或接收到路由器定期发送的 RA 报文)。 ⑥根据 RA 报文中的前缀信息和通过 EUI-64 规范生成的接口标识得到 IPv6 地址。

路由发现

概述 路由器发现功能是IPv6地址自动配置功能的基础 路由器请求RS(Router Solicitation)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,那么此时主机可以立刻发送RS报文,网络上的路由器将回应RA报文。RS报文的Tpye字段值为133。 路由器通告RA(Router Advertisement)报文:每台路由器为了让二层网络上的主机和路由器知道自己的存在,定时都会组播发送RA报文,RA报文中会带有网络前缀信息,及其他一些标志位信息。RA报文的Type字段值为134。

路由发现过程 在这里插入图片描述 主机获取网络前缀有两个途径:①主机主动发送RS之后接收到的RA②路由器定期发送RA,从而被动接收。 回复的RA可以直接单播给请求的主机,也可以选择多播到所有节点

RS消息报文格式 在这里插入图片描述 Type: 8bit,值为133 Code: 8bit,值为0 Options:包含发送者的链路层地址,如果源地址为未指地址RS消息中不能包含此选项

RA消息报文格式 在这里插入图片描述 Type: 8bit,值为134 Code: 8bit,值为0 Cur Hop Limit: 8bit,表示主机跳数限制,路由器建议采用无状态自动配置的主机IP的跳数限制在该字段中的值,值为0时表示路由器不推荐跳数限制值,由主自己设各自的跳数限制值。当PC使用该RA通告的前缀构建IPv6地址后,该PC发送的IPv6报文的跳数限制被设置为该值。 M位:1bit,管理地址配置位,0表示无状态自动配置,1表示使用DHCPv6获取配置信息 使用ipv6 nd autoconfig managed-address-flag,M位置1 O位:1bit,表示其他配置标志位,该位置0表示DHCPv6服务器没有其他可用信息。该位置1时,其他参数使用 DHCPV6 服务器获得,包括路由器生存时间、邻居可达时间、邻居的重传时间、链路的 MTU 信息和 DNS 相关信息等 使用ipv6 nd autoconfig other-flag将O位置1 Router Lifetime:16bit,与默认路由关联的生存时间,以秒为单位,默认1800s。 Reachable Time:32bit,表示通告邻居的可达时间,用作邻居不可达检测,以毫秒为单位 Retrans Timer:32bit,重传计时器,表示主机在重传邻居请求消息前应该等待的时间 Options:可能包含路由器链路层地址、MTU、前缀信息。

前缀中Flags字段: L比特位,默认为1。表示在RA消息中的前缀是分配给本地链路的。因此,向包含这个指定前缀的地址发送数据的节点认为目的地是本地链路可达。 可以使用如下命令设置为0:ipv6 nd ra prefix 2001:: 64 2592000 604800 off-link

A比特位(RFC2461),默认为1,表示本地链路的主机可以使用该前缀进行无状态自动配置,如果为0,则不能用于无状态自动配置。 使用如下命令将该比特位设置为0:ipv6 nd ra prefix 2001:: 64 2592000 604800 no-autoconfig

1 1地址和DNS都从DHCPv6服务器获得 0 1地址使用RA广播的prefix+ EUI-64计算出来的接口地址,DNS从DHCPv6获得 0 0完全的无状态配置,仅地址使用RA广播的prefix+ EUI-64计算出来的接口地址

重定向报文

在这里插入图片描述 Type: 8bit,值为137 Code: 8bit,值为0 Target Address:更好的路径下一跳地址; Destination Address:需要重定向转发的报文的目的地址。 在这里插入图片描述 PCA需要和PCB通信,PCA的默认网关路由器是R1,那么当PCA发送报文给PCB时报文会被送到R1。R1接收到PCA发送的报文以后会发现实际上PCA直接发送给PCB更好,它将发送一个重定向报文给PCA,其中报文中更好的路径下一跳地址为R2,Destination Address 为 PCB。PCA接收到了重定向报文之后,会在默认路由表中添加一个主机路由,以后发往PCB的报文就直接发送给R2。

PMTU发现

PMTU就是路径上的最小接口MTU 在这里插入图片描述 由于IPv6要求链路层所支持的最小MTU为1280,所以PMTU的值必须大于1280。默认1500

实验

简单ipv6实验 在这里插入图片描述

Ipv6 # interface GigabitEthernet0/0/0 ipv6 enable ipv6 address 2001::1/64 [Huawei]dis ipv6 interface GigabitEthernet0/0/0 current state : UP IPv6 protocol current state : UP IPv6 is enabled, link-local address is FE80::2E0:FCFF:FE2A:2E0A //链路本地地址 Global unicast address(es): 2001::1, subnet is 2001::/64 //接口地址 Joined group address(es): FF02::1:FF00:1 //被请求节点组播地址 FF02::2 FF02::1 FF02::1:FF2A:2E0A 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

在这里插入图片描述 在这里插入图片描述

无状态地址自动分配 在这里插入图片描述

R1: ipv6 # interface GigabitEthernet0/0/0 ipv6 enable ipv6 address 2004::1/64 undo ipv6 nd ra halt PC1: ipv6 # interface GigabitEthernet0/0/0 ipv6 enable ipv6 address auto link-local ipv6 address auto global 使用display ipv6 interface brief 查看ipv6无状态自动分配情况 dis ipv6 interface brief *down: administratively down (l): loopback (s): spoofing Interface Physical Protocol GigabitEthernet0/0/0 up up [IPv6 Address] 2004::2E0:FCFF:FEEE:595B ①根据接口标识产生链路本地地址。 ②发出邻居请求,进行重复地址检测。 ③如地址冲突,则停止自动配置,需要手工配置。 ④如不冲突,链路本地地址生效,节点具备本地链路通信能力。

在这里插入图片描述 没有收到对应IPv6地址回应,表示该地址不冲突 在这里插入图片描述

⑤主机会发送 RS 报文(或接收到路由器定期发送的 RA 报文)。 在这里插入图片描述 在这里插入图片描述 ⑥根据 RA 报文中的前缀信息和通过 EUI-64 规范生成的接口标识得到 IPv6 地址。 在这里插入图片描述 没有收到对应IPv6地址回应,表示该地址不冲突



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3