思科ccnp网络工程师必备技能ICMPv6协议概述详解ICMPv6(Internet Control Managemet Protocol Version 6),即互联网控制信息协议版本六。ICMPv6为了与IPv6配套使用而开发的互联网控制信息协议。与IPv4一样,IPv6也需要使用ICMP,旧版本的ICMP不能满足IPv6全部要求,因此开发了新版本的ICMP,称为ICMPv6。
IPv6的Internet控制消息协议(Internet Control Message Protocol for IPv6,ICMPv6)与IPv4的ICMP(ICMPv4)类似。ICMPv6也像ICMPv4一样使用信息类消息(informational message)和错误消息(error message)来测试3层连通性,并告知源如网络不可达等这类问题。
互联网控制信息协议是IP协议的一个重要组成部分。ICMPv6向源节点报告关于目的地址传输IPv6包的错误和信息,具有差错报告、网络诊断、邻节点发现和多播实现等功能。在IPv6中,ICMPv6实现IPv4中ICMP、ARP和IGMP的功能。IANA(因特网地址授权委员会)定义ICMPv6的协议号为58。
ICMP协议通告类型:
[if !supportLists]① [endif]通告网络错误。比如,某台主机或整个网络由于某些故障不可达。如果有指向某个端口号的TCP或UDP包没有指明接受端,这也由ICMP报告。
[if !supportLists]② [endif]通告网络拥塞。当路由器缓存太多包,由于传输速度无法达到它们的接收速度,将会生成“ ICMP源结束”信息。对于发送者,这些信息将会导致传输速度降低。
[if !supportLists]③ [endif]协助解决故障。ICMP支持Echo功能,即在两个主机间一个往返路径上发送一个包。Ping是一种基于这种特性的通用网络管理工具,它将传输一系列的包,测量平均往返次数并计算丢失百分比。
[if !supportLists]④ [endif]通告超时。如果一个IP包的TTL降低到零,路由器就会丢弃此包,这时会生成一个 ICMP 包通告这一事实。TraceRoute是一个工具,它通过发送小TTL值的包及监视ICMP超时通告可以显示网络路由。
ICMPv6出了具备IPv4 ICMP的基本功能外,还包含以下两个功能:
1、组播收听发现协议(MLD,Multicast Listener Discovery)
该协议完成子网内的组播成员管理。MLD协议定义了3条ICMPv6消息:
组播收听查询消息:组播路由器向子网内的组播收听者发送此消息,以获取组播收听者的状态。
组播收听者报告消息:组播收听者向组播路由器汇报当前状态,包括离开某个组播组。
2、邻居发现协议(Neighbor Discovery)
邻居发现协议实现了IPv6种的地址解析协议(ARP)、ICMPv6路由器发现协议以及ICMPv6重定向消息的功能,用来管理同一链路上结点间的通信。
该协议定义五条ICMPv6消息:
[if !supportLists]1、[endif]路由器请求(Router Solicitation):由一台设备发送给所有IPv6路由器的组播消息,请求来自路由器的路由器通告消息。
[if !supportLists]2、[endif]路由器通告(Router Advertisement):由一台IPv6路由器发送给所有IPv6设备的组播消息。包含的链路信息有前缀、前缀长度和默认网关地址。
[if !supportLists]3、[endif]邻居请求(Neighbor Solicitation):由一台设备在知道另一台设备的IPv6地址但不知道其以太网MAC地址时,向所请求的节点组播地址发送的消息。这种做法与IPv4的地址解析协议的做法相似。
[if !supportLists]4、[endif]邻居通告(Neighbor Advertisement):通常是由一台设备为了响应邻居请求消息而发送的消息。
[if !supportLists]5、[endif]重定向(Redirect):与IPv4中的同类消息功能相似。这类消息也是由一台路由器发送,用来告知数据包的源链路上存在距离目的更近的下一跳路由器。
ICMP报文处理规则:
[if !supportLists](1) [endif]当接收到ICMPv6差错报告报文时,如果无法识别具体的类型,必须将它交给上层协议模块进行处理。
[if !supportLists](2) [endif]当接收到ICMPv6信息报文时,如果无法识别具体的类型,必须将它丢弃。
[if !supportLists](3) [endif]所有的ICMPv6差错报告报文,都应该在IPv6所要求的最小MTU允许范围内,尽可能多地包括引发该ICMPv6差错报文的IPv6分组片段,以便给IPv6分组的源节点提供尽可能多的诊断信息。
[if !supportLists](4) [endif]在需要将ICMPv6报文上传给其上层协议模块处理的情况下,上层协议的具体类型,应该从封装该ICMPv6报文的IPv6分组的下一首部字段中获取。
[if !supportLists](5) [endif]最后,为了限制在发送ICMPv6差错报告报文时对网络带宽和转发处理的消耗,一个IPv6节点必须限制其发送ICMPv6差错报告报文的速率。但是,这样可能会导致一个差错报告报文的源节点因为没有及时收到报文出错的报告而不断地重发该错误报文。 思科ccnp网络工程师必备技能ICMPv6协议概述详解