1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,移动IP技术-第五讲-ICMPv6协议和ND协议,三,ICMPv6消息,一,ICMPv6概述,二,ICMPv6错误报告消息,1.ICMPv6协议,ICMPv6协议RFC,RFC,4443,Internet Control Message Protocol(ICMPv6)for the Internet Protocol Version 6(IPv6)Specification,1.1.1 ICMPv6协议:功能,ICMPv6用来报告IPv6节点在包处理过程中出现的错误,并完成网络层的其他功能(如:p
2、ing6诊断功能、组播组成员管理),ICMPv6实现IPv4中ICMP、ARP和IGMP的功能,所有的IPv6节点都必须实现ICMPv6的功能,1.1.2 ICMPv6在IPv6包中的封装,封装格式:,通常,我们称ICMPv6报文为“,ICMPv6消息,”,称触发ICMPv6消息的IPv6包为,i,nvoking包,IPv6扩展头,(next header:58),ICMPv6消息,IPv6基本头,1.1.3 ICMPv6协议:消息格式,消息格式,Type,:消息类型,Code,:具体消息类型下的消息编码,消息编码从属于消息类型,8bit,8bit,16bit,32bit,1.1.4 ICMP
3、v6协议:消息分类,ICMPv6错误报告消息(Type值1127),Type1目的不可达,Type2包太大,Type3超时,Type4参数错,ICMPv6报告消息(Type值128255),Type128请求回应消息,Type129回应消息,1.1.5 ICMPv6协议:源地址的选定,一个节点如果配置了多个单播地址,生成ICMPv6消息时,必须进行源地址选择:,对一个目的地址是节点某个单播地址的报文,选择该单播地址作为ICMPv6消息的源地址,对其它目的地址报文(组播地址、任意播地址、或非本节点地址的单播地址),源地址必须是本节点的某个单播地址,ICMPv6源地址必须是单播地址,1.1.6 I
4、CMPv6协议:校验和的计算,采用IPv6伪首部计算校验和,校验和计算报文由“IPv6伪首部+ICMPv6消息”构成,伪首部中的协议域为58,三,ICMPv6消息,一,ICMPv6概述,二,ICMPv6错误报告消息,1.ICMPv6协议,1.2.1 ICMPv6目的不可达消息,消息格式:,消息的含义:,无法将invoking包递交给目的地址,1.2.2 ICMPv6目的不可达消息:说明,产生节点:转发路由器或源节点的IPv6层,ICMPv6消息中的域,Code:,无法将invoking包递交目的地址,的原因,0-找不到去指定目的的路由,1-要去的目的地址被网络禁止,2-目的地址范围超过源地址范
5、围,3-地址不可达,如MAC地址解析失败,4-端口不可达,5,-源地址安检被拒,6,-目的地址路由被拒,1.2.3 Link MTU,link MTU:链路上所能传输的最大报文长度,路由器的link MTU:一个路由器至少连接两个link,每个link有各自的MTU,而且可能不同,什么时候需要对包进行分段:,包大于link MTU时!,1.2.4 ICMPv6包太大消息:格式,消息格式:,消息的含义:,invoking包大于路由器出口链路的MTU,1.2.5 ICMPv6包太大消息:说明,消息的产生节点:路由器,ICMPv6消息中的域,Type:2,Code:由消息的发送者置为0,消息的接收者
6、不检查本域的值,MTU:产生该消息的路由器的出口链路的最大传输单元,就是通知源节点,包大于此MTU导致无法继续进行数据传送,1.2.6 IPv4分段 vs.IPv6分段,IPv4:包的分段由沿途路由器根据包途经的链路MTU进行,如果包大于要传输链路的MTU,对其分段,优点,:,源节点不需要了解任何目的节点、中间路径的网络信息,使得Internet有很好的扩展性,带来的问题,:消耗了沿途路由器的处理能力和时间,大大影响了网络传输性能,1.2.6 IPv4分段 vs.IPv6分段,IPv6:包的分段由源节点进行,沿途所经路由器不再对包进行任何分段操作,优点:,解放了路由中间节点,路由器不用考虑包的
7、细节,只专注于数据转发,大大提高了网络性能,带来的问题:如果包大于路由器出口链路MTU,有何结果?,丢包!,Q:,如果源节点发出的分段后的IPv6报文超过路由器某个link的MTU,报文将被丢弃,如果源节点不知道将报文改小,结果就是一直丢包。,如何避免?,A:源节点如果知道路径上所有MTU的最小值,以这个值为标准进行分段,省时省力的最优选择!,1.2.7 路径MTU发现协议,路径MTU发现协议(PATH MTU,Discovery),路径MTU:从源到目的路径上所有link MTU的最小值,在源节点运行该协议,利用ICMPv6的包太大消息实现PATH MTU发现功能,1.2.7 路径MTU发现
8、协议,路径MTU发现过程:,源节点向目的节点发送报文,负责转发的路由器一旦发现包长超过link MTU,向源报ICMPv6包太大消息并回填link MTU值,源节点修改发送包长度重新发送。重复直到包到达目的节点,不再收到ICMPv6包太大消息为止。,1.2.8 路径MTU发现协议:举例,1.2.8 路径MTU发现协议:举例,1.2.8 路径MTU发现协议:举例,1.2.8 路径MTU发现协议:举例,1.2.9 ICMPv6超时消息:格式,消息格式:,消息的含义:,对invoking包的处理超时,1.2.10 ICMPv6超时消息:说明,消息的产生节点:路由器或终节点,ICMPv6消息中的域,T
9、ype:3,Code:0-跳数限制超时,1-对分段包进行重组超时,1.2.11 ICMPv6参数错消息:格式,消息格式:,消息的含义:,invoking包的格式有错,1.2.12 ICMPv6参数错消息:说明,消息的产生节点:IPv6节点,ICMPv6消息中的域,Code,:,0-在IPv6基本头或者扩展头中发现错误,1-发现不识别的next header值,2-发现不识别的IPv6选项类型,Pointer,:Invoking包中出现错误的域距离包头的偏移量,1.ICMPv6协议,三,ICMPv6报告消息,一,ICMPv6概述,二,ICMPv6错误报告消息,1.3.1 ICMPv6请求回应消息
10、格式,消息格式:,消息的含义:,主动请求目的节点给个回应,1.3.2 ICMPv6请求回应消息:说明,消息的产生节点:IPv6节点,IPv6头中的目的地址:任何合法IPv6地址,ICMPv6消息中的域,Type:128,Code:0,Identifier:消息标识,Sequence Number:消息序列号,Data:零字节或者多字节的任意数据,1.3.3 ICMPv6回应消息:格式,消息格式:,消息的含义:,对请求节点的回应,告诉它:我们俩之间的网络连接OK,1.3.4 ICMPv6回应消息:说明,消息的产生节点:IPv6节点,IPv6头中的目的地址:ICMPv6请求回应消息包的源地址,I
11、CMPv6消息中的域,Type:129,Code:0,Identifier、Sequence Number、Data:请求回应消息中的值,1.3.5 ICMPv6请求回应和回应消息,用于诊断两个节点之间的网络连接是否ok:,对请求回应消息来讲,可能收到的回应有,:,ICMPv6错误报告消息,回应消息,那么:,收到ICMPv6错误报告消息:说明网络有问题,收到回应消息:说明网络OK,1.3.6 ICMPv6报告消息:MLD消息,type:,130 Multicast Listener Query,131 Multicast Listener Report,132 Multicast Listen
12、er Done,定义了组播组成员管理消息,RFC2710,一,ICMPv6协议,二,ND协,议,ND协议RFC,RFC,2461,Neighbor Discovery for IP Version 6(IPv6),四,重定向消息,三,邻居请求和邻居通告消息,一,ND概述,二,路由器通告和路由器请求消息,2.ND协议,2.1.1 ND协议概述,ND协议使用一系列ICMPv6 报告信息来实现同一链路上的相邻节点(邻居)的交互管理,ND协议以高效的组播和单播ND报文替代了以往基于广播的IPv4地址解析协议(ARP)、ICMPv4路由器发现和ICMPv4重定向报文,2.1.2 ND协议功能,路由器发现
13、帮助主机来识别本地路由器,相当于ICMPv4中的路由器发现功能,前缀发现,节点用来确定链路本地地址的地址前缀以及必须发送给路由器的地址前缀,相当于ICMPv4中的地址掩码请求/回应功能,2.1.2 ND协议功能,参数发现,帮助节点确定如本地链路MTU之类的信息,地址自动配置,为IPv6接口自动配置地址,地址解析,帮助节点从目的IP地址确定本地节点(即邻居)的链路层地址,相当于ARP功能,2.1.2 ND协议功能,邻居不可达检测,帮助节点确定邻居(目的节点或路由器)是否可达,重复地址检测,帮助节点确定它想使用的地址在本地链路上是否已被占用,2.1.2 ND协议功能,重定向,有时节点选择的转发路
14、由器对于待转发的包而言并非最佳,这种情况下,该转发路由器可以对节点进行重定向,以将包转发到最佳的路由器,相当于ICMPv4中的重定向功能,2.1.3 ND协议要用到的地址,单播地址,未指定地址,0:0:0:0:0:0:0:0或:,链路本地地址,组播地址,链路本地全节点地址,FF02:1,链路本地全路由器地址,FF02:2,请求节点地址,FF02:1:FFXX:XXXX,2.1.4 ND协议格式,ND使用ICMPv6 报告信息:,Type133 路由器请求,Type134 路由器通告,Type135 邻居请求,Type136 邻居通告,Type137 重定向,8bit,8bit,16bit,32
15、bit,2.ND协议,四,重定向消息,三,邻居请求和邻居通告消息,一,ND概述,二,路由器请求和路由器通告消息,2.2.1 路由器请求/通告消息:说明,路由器周期性地发送路由器通告消息,,向链路上的节点通告它的存在,通告可配置的链路和网络参数,主机,可以,请求,本地路由器立即,发送路由器通告消息,路由器,在,收到,来自主机的,路由器请求,消息时,,立即发送通告,信息,周期性,路由器通告消息的目的地址是,链路本地全节点地址,(组播地址);,触发型,路由器通告消息的目的地址是,请求主机的单播地址,2.2.2 路由器请求消息:格式,消息格式:,说明:该消息由主机发出,由路由器接收并处理,2.2.2
16、路由器请求消息:格式,ICMPv6字段:,Type,:133,Code,:0,Reserved,:全0,IPv6头部字段:,源地址,发送此消息的接口地址;当发送接口未分配地址时,为未指定地址,目的地址,:链路本地全路由器地址,hop limit,:255,可能的options选项:,Source Link-layer Address,:发送此消息的接口的链路层地址,2.2.3 路由器通告消息:格式,消息格式:,说明:该消息由路由器发出,由所有网络节点接收并处理,2.2.3 路由器通告消息:格式,ICMPv6字段:,Cur Hop Limit,:接收节点发送数据时跳限的默认值;,Router L
17、ifetime,:接收节点以此路由器作为默认路由器的有效时间,Reachable Time,:接收节点在收到一个邻居的可达后,认为该邻居处于可达的时间,Retrans Timer,:接收节点发送两次邻居请求消息的时间单隔,IPv6头部字段:,源地址,:发送此消息的接口link-local地址,目的地址:,目的地址:触发本消息的路由器请求消息源地址或链路本地全节点地址,hop limit,:255,可能的options选项:,Source Link-layer Address,:发送此消息的接口的链路层地址,MTU,:本链路的最大传输单元,Prefix Information,:指定所有的地址前
18、缀,用于地址自动配置,2.2.4 路由器请求/通告消息的功能,路由器发现,:用于主机定位同一链路上的邻居路由器;,前缀发现,:帮助主机区分链路本地地址和需要通过路由器转发的地址,同时主机通过得到的前缀进行地址的自动配置;,参数发现,:帮助主机确定诸如本地链路MTU之类的信息。,2.2.4 路由器请求/通告消息的功能,启动节点发送路由器请求,收到路由器通告完成配置,四,重定向消息,三,邻居请求和邻居通告消息,一,ND概述,二,路由器请求和路由器通告消息,2.ND协议,2.3.1 邻居请求/通告消息:说明,节点在,收到邻居请求,后,,发送邻居通告,消息,通知对方本节点的链路层地址;,节点在自己的,
19、链路层地址,发生,改变,时,主动,发出邻居通告,消息通知其他节点;,节点发送邻居请求消息,期望,获得邻居,的,链路层地址,;,节点发送邻居请求,,验证,它先前所获得的,邻居链路层地址,的,是否可达,;,节点发送邻居请求,,验证,它,自己的地址,在本地链路上,是否是唯一,的;,2.3.2 邻居请求消息:格式,消息格式:,2.3.2 邻居请求消息:格式,ICMPv6字段:,Type,:135,Code,:0,Target Address,:请求目标的IPv6地址(不能为组播地址),IPv6头部字段:,源地址,:地址解析或邻居不可达检测时,为发送接口的地址;重复地址检测时,为未指定地址;,目的地址,
20、地址解析或重复地址检测时,是由目标地址得到的请求节点组播地址;邻居不可达检测时,是目标地址,hop limit,:255,可能的options选项:,Source Link-layer Address,:发送此消息的接口的链路层地址,2.3.3 邻居通告消息:格式,消息格式:,2.3.3 邻居通告消息:格式,ICMPv6字段:,R,:路由器标志,1表示是路由器;,S,:请求标志,1表示是对邻居请求的响应,O,:覆盖标志,1表示链路层地址应当覆盖原来的地址;,Target Address,:对响应邻居请求的消息,是邻居请求消息中的目标地址;对非请求的,为发生改变的链路层地址,IPv6头部字段:
21、源地址,:发送此消息的接口的地址;,目的地址:,对响应邻居请求的消息,是邻居请求消息的源IPv6地址;对非请求的此消息,为链路本地全节点组播地址;,hop limit,:255,可能的options选项:,Source Link-layer Address,:发送此消息的接口的链路层地址,2.3.4 邻居请求/通告消息的功能,地址解析:用于将邻居的IPv6地址解析为其链路层地址;,邻居不可达检测:用于确定某一邻居节点的可达性;,重复地址检测:用于确定节点想要使用的地址是否已被本链路上的其他节点占用;,2.3.4 邻居请求/通告消息的功能,地址解析,2.3.4 邻居请求/通告消息的功能,重复地
22、址检测,四,重定向消息,三,邻居请求和邻居通告消息,一,ND概述,二,路由器请求和路由器通告消息,2.ND协议,2.4.1 重定向消息:说明,路由器发送重定向报文以通知主机,对于特定的目的地址自己不是最佳路由器,该消息仅由路由器产生,2.4.2 重定向消息:格式,消息格式:,2.4.2 重定向消息:格式,IPv6头部字段:,源地址:发送此消息的接口的地址;,目的地址:触发该消息的包的源地址,hop limit:255,ICMPv6字段:,Type:137 Code:0,Target Address:针对该包的更好的下一跳地址,即更佳路由器地址,Destnation address:需要重定向的包的目的IPv6地址,可能的options选项:,Target Link-layer Address,:更佳路由器的链路层层地址,Redirected header,:重定向头,填充触发该消息的包,2.4.3 重定向消息的功能,小结,此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢,






