ICMPv6概述

(1)ICMPv6是IPV6的基础协议之一,用于向源节点传递报文转发的信息或错误。

(2)协议类型号(即IPV6 Next Header)为58.

(3)在IPV6中,ICMPV6除了提供ICMPV4的对应功能之外,还有其他一些功能的基础,如邻居发现、无状态地址配置、重复地址检测、PMTU发现等。(把邻居关系放到三层而不是原来的协议邻居)

ICMP for IPV4(基础报文)

(1)目的不可达

(2)数据包超长

(3)超时

(4)回应请求

(5)回应应答

ICMPV6 for IPV6

(1)目的不可达

(2)数据包超长

(3)超时

(4)回应请求

(5)回应应答

(6)邻居发现

(7)无状态地址配置

(8)重复地址检测

(9)PMTU发现

邻居发现协议-NDP概述:NDP(Neighbor Discovery Protocol,邻居发现协议)在RFC2462及RFC4861中定义。

NDP实现了IPV6中诸多重要机制:

(1)路由器发现:发现链路上的路由器,获得路由器通告的信息。

(2)无状态自动配置:通过路由器通告的地址前缀,终端自动生成IPV6地址。

(3)DAD:获得地址后,进行地址重复检测,确保地址不存在冲突。

(4)地址解析:请求目的的网络地址对应的数据链路层地址,类似于IPV4的ARP。

(5)邻居状态跟踪:通过NDP发现链路上的邻居并跟踪邻居状态。

(6)前缀重编址:路由器对所通告的地址前缀进行灵活设置实现网络重编址。

(7)路由重定向:告知其他设备,到达目标网络的更优下一跳。

NDP使用ICMPV6的相关报文:

(1)RS(Router Solicitation):路由器请求报文。(发送者是主机)

(2)RA(Router Advertisement):路由器通告报文。

(3)NS(Neighbor Solicitation):邻居请求报文。(与NA是路由器之间的)

(4)NA(Neighbor Advertiisement):邻居通告报文。

地址解析报文:地址解析过程中使用了两种ICMP报文(1)邻居请求(2)邻居通告。

邻居请求:

(1)type=135,Code=0.

(2)Target Address是需要解析的IPV6地址,因此该处不准出现组播地址。

邻居通告:

(1)Type=136,Code=0

(2)R标识(Router flag):标识发送者是否为路由器,如果1则表示是。

(3)S标识(Solicited flag):表示发送邻居通告是否是响应某个邻居请求,如果1则表示是。

(4)O标识(Overide flag):标识邻居通告中的消息是否覆盖已有的条目信息,如果1则表示是。

(5)Target Address表示所携带的链路层地址对应的IPV6地址。

ARP报文中的内容:(1)源MAC、(2)源IP、(3)请求MAC,因为不知道使用0.0.0.0,全0代表未知全F代表广播、(4)请求IP、(5)消息类型。(ARP只能对应MAC地址,如PPP累的地址无用)

IPV6地址解析优势:

(1)IPV6的地址解析不再使用ARP,也不再使用广播方式。

(2)三层完成,针对不同的链路层协议可以采用相同的地址解析协议。

(3)通过ICMPV6(类似于135的NS及类型136的NA报文)来实现地址解析。

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

(5)采用组播的方式发送NS消息相比于广播的方式更加的高效,也减少了对其他节点的影响和对二层网络的性能压力。

(6)可以使用三层的安全机制(例如IPsec)避免地址解析攻击。

重复地址检测DAD:

机制概述:

(1)重复地址检测确保网络中无两个相同单播地址。

(2)所以地址都需要做DAD:

(3)使用NS和NA完成DAD交互过程。

原理:

(1)一个地址在通过DAD地址重复检测之前称为”tentaitive地址“也就是实验性地址。接口暂时还不能使用这个实验性地址进行正常的IPV6单播通讯,但是会加入和该地址所对应的Solicited-Node组播组。

(2)DAD重复检测:节点向该tentative地址所在的Solicited-Node组播地址发送一个NS,如果收到某个其他站点回应的NA,就证明该地址已经被网络上使用,节点将不能使用该tentative地址通讯。

(3)接口在启用任何一个单播IPV6地址前都需要先进行DAD,包括Link-Lical地址。

IPV6地址无状态自动配置概述:

(1)IPV6地址无状态自动配置(S tateless Address autoconfiguraion,SLAAC)是IPV6的标准功能,在RFC2462中定义。

(2)在IPV6中,设备可以通过手工或者动态的方式获取地址。在动态获取地址的方式中,存在DHCPV6及无状态地址自动配置两种方式。

(3)相比于DHCPV6这种动态地址分配技术而言,SLAAC无需部署应用服务器,更加轻量。

路由器发现概述:路由器发现功能是IPV6地址自动配置功能的基础,主要通过以下两种报文实现。

(1)RA(Router Advertisement ,路由通告)报文:每台设备为了让二层网络上的主机和设备知道自己的存在,可以定时以组播方式发送RA报文,RA报文中会带有网络前缀信息,及其他一些标志位信息。RA报文的Type字段为134。

(2)RS(Router Solicitation,路由器请求)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送RS报文,网络上的设备将回应RA报文。RS报文的Type字段值为133。(还会带上自己的二层地址)

路由器发现-路由器周期发送RA:

(1)链路上的路由器会定期(不固定周期+触发式)的发送RA(Router Advertisement)消息。

(2)收到RA的主机将加入默认路由器(网关)列表中。

(3)收到RA的路由器将检查RA内容的一致性。

路由器发现-路由器回应RA:

(1)主机接口初始化时发RS(Router Solicitation)消息,路由器回应RA。(回应的RA可以直接给请求的主机,也可以选择多播到所有节点,该RS的目标地址是FF02::2)(RA的目标是FF02::1)

主机获得前缀及其他参数过程:

1、当存在以下情况时忽略RA发送的前缀:(不发送RA)

(1)RA报文选项中的“auto”未置位。

(2)前缀与已有地址前缀重复(包括Link-Lcoal地址)

(3)RA报文选项中的“preferrde lifetime”时间大于“valid lifetime”。

(4)前缀长度与接口ID长度之和不等于128位。(因为接口ID都是EUI-64为64为,所以等于前缀不等于64位)

2、除以上情况外,主机获得前缀同时也获得一些相关时间参数:

(1)“preferrde lifetime”=发起新通讯的有效时间。(优选生存期)

(2)“valid lifetime”=原有通讯的有效时间。(有效生存期)

3、主机会周期性的收到RA报文,并据此报文来更新自己的时间参数。

地址生存时间:

(1)DAD:实验地址,看该地址是已被占用。

(2)有效生存期:有效生存期分为优选生存期和反对地址,优选生存期可以互相连接,但是反对地址只能被动接受连接。

(3)无效地址:任何连接都会DOWN掉。

正常情况下,有效生存期结束前,应该再次受到RA,重置计时器。

RFC(一系列以编号排定的文件):基本的互联网通信协议都有在RFC文件内详细说明。

重定向报文:

(1)当网关路由器知道更好的转发路径时,会以重定向报文的方式告知主机。

(2)target Address是更好的路径下一跳地址,Destination Address是需要重定向转发的报文的目的地址。

PMTU:

(1)同一条链路上最小的MTU大小。(MTU:包的最大大小)

(2)PMTU最小为1280bytes(IPV6要求链路层所支持的MTU最小为1280)

(3)最大PMTU由链路层决定,如隧道,可以支持很大的MTU。