1. Internet Control Message Protocol for the IPv6 特征


  • IP 协议号「58」
  • IPv6 的基础协议之一,实现邻接点发现、无状态地址配置、重复地址检测 DAD(类似 IPv4 的免费 ARP)、PMTU 发现等

    2. ICMPv6 Message


image.png
ICMPv6 Message 格式解析

  • Type:表明消息的类型
    • 0~127 表示差错报文类型
      • 1:目的不可达错误(数据包无法被转发到目的节点或上层协议)
      • 2:数据包过大错误(报文超过出接口的MTU)
      • 3:时间超时错误
      • 4:参数错误
    • 128~255 表示消息报文类型
      • 128:回送请求报文(Request)
      • 129:回送应答报文(Reply)
  • Code:表示此消息类型的细分类型
  • Checksum:ICMPv6的校验和

    3. ICMPv6 报文类型对应表


Type Code 消息名
1 0 没有路由到达目的地
1 1 与目的地的通信由于管理被禁止
1 2 超过了源地址的范围
1 3 地址不可达
1 4 端口不可达
1 5 源地址的入口/出口策略失败
1 6 拒绝路由到达目的地
2 0 包太大
3 0 传输过程中“hop-limit”超时
3 1 分片重组超时
4 0 参数错误
4 1 错误的首部字段
4 2 不可识别的Next Header类型
4 3 不可识别的IPv6选项
100 x 私有实验用
101 x 私有实验用
127 x ICMPv6差错报文扩展保留
128 0 回显请求
129 0 回显应答
133 x 路由请求
134 x 路由通告
135 x 邻居请求
136 x 邻居通告
137 x 重定向
143 x MLDv2 (Multicast Listener Report Message v2)
200 x 私有实验用
201 x 私有实验用
255 x ICMPv6消息报文扩展保留

4. Path MTU 发现协议(PMTU)


可以动态发现整条传输路径上各链路的MTU值,减少由于重传带来的额外流量开销

  • 在 IPv4 中,报文如果过大,必须要分片进行发送
    • 在每个节点发送报文之前,设备都会根据发送接口的最大传输单元 MTU 来对报文进行分片
  • 在 IPv6 中,为了减少中间转发设备的处理压力,中间转发设备不对 IPv6 报文进行分片,报文的分片将在源节点进行
    • 当中间转发设备的接口收到一个报文后,如果发现报文长度比转发接口的 MTU 值大,则会将其丢弃
    • 同时将转发接口的 MTU 值通过 ICMPv6 报文的 “Packet Too Big” 消息发给源端主机,告知源端口主机转发接口的 MTU,源端主机以该值重新发送 IPv6 报文