El Protocolo de mensajes de control de Internet versión 6 ( ICMPv6 ) es la implementación del Protocolo de mensajes de control de Internet (ICMP) para el Protocolo de Internet versión 6 (IPv6). [1] ICMPv6 es una parte integral de IPv6 y realiza funciones de diagnóstico e informes de errores.
ICMPv6 tiene un marco para extensiones para implementar nuevas características. Se han publicado varias extensiones, que definen nuevos tipos de mensajes ICMPv6, así como nuevas opciones para los tipos de mensajes ICMPv6 existentes. Por ejemplo, Neighbor Discovery Protocol (NDP) es un protocolo de descubrimiento de nodos basado en ICMPv6 que reemplaza y mejora las funciones de ARP . [2] Secure Neighbor Discovery (SEND) es una extensión de NDP con seguridad adicional. Multicast Listener Discovery (MLD) es utilizado por enrutadores IPv6 para descubrir oyentes de multidifusión en un enlace conectado directamente, de manera similar a como se utiliza el Protocolo de administración de grupos de Internet (IGMP) en IPv4 . Multicast Router Discovery (MRD) permite el descubrimiento de enrutadores de multidifusión.
Los mensajes ICMPv6 pueden clasificarse como mensajes de error y mensajes de información . Los mensajes ICMPv6 se transportan mediante paquetes IPv6 en los que el valor del encabezado siguiente IPv6 para ICMPv6 se establece en el valor 58 .
El mensaje ICMPv6 consta de un encabezado y la carga útil del protocolo. El encabezado contiene solo tres campos: Tipo (8 bits), Código (8 bits) y Suma de comprobación (16 bits).
Los mensajes de control se identifican por el valor del campo de tipo . El campo de código proporciona información de contexto adicional para el mensaje. Algunos mensajes cumplen la misma función que los tipos de mensajes ICMP con el nombre correspondiente.
Tenga en cuenta que la tabla anterior no es exhaustiva. La lista completa actual de tipos ICMPv6 asignados se puede encontrar en este enlace: IANA: Parámetros ICMPv6.
ICMPv6 proporciona un nivel mínimo de verificación de integridad de mensajes mediante la inclusión de una suma de comprobación de 16 bits en su encabezado. La suma de comprobación se calcula comenzando con un pseudoencabezado de campos de encabezado IPv6 de acuerdo con el estándar IPv6, [6] que consta de las direcciones de origen y destino, la longitud del paquete y el siguiente campo de encabezado, el último de los cuales se establece en el valor 58. Después de este pseudoencabezado, la suma de comprobación continúa con el mensaje ICMPv6. El cálculo de la suma de comprobación se realiza de acuerdo con los estándares del protocolo de Internet utilizando la suma de complemento a uno de 16 bits , seguida de un complemento a uno final de la suma de comprobación misma e insertándola en el campo de suma de comprobación. [7] Tenga en cuenta que esto difiere de la forma en que se calcula para IPv4 en ICMP , pero es similar al cálculo realizado en TCP .
La carga útil de un mensaje ICMPv6 varía según el tipo de mensaje que se envía. Comienza en el bit 32, inmediatamente después del encabezado descrito anteriormente. Para algunos mensajes, como destino inalcanzable o tiempo excedido, no hay un cuerpo de mensaje definido.
Otros definen un uso solo para los primeros cuatro bytes del cuerpo sin ningún otro contenido definido:
En el caso de los mensajes NDP , los primeros cuatro bytes están reservados o se utilizan para indicadores o límites de saltos. Mientras que el restablecimiento del cuerpo tiene datos estructurados no especificados:
Para una redirección, los primeros bytes del cuerpo del mensaje se reservan pero no se utilizan. A continuación, se incluye una dirección de destino. Se pueden adjuntar opciones no especificadas al final:
Cuando un nodo ICMPv6 recibe un paquete, debe llevar a cabo acciones que dependen del tipo de mensaje. El protocolo ICMPv6 debe limitar la cantidad de mensajes de error enviados al mismo destino para evitar la sobrecarga de la red. Por ejemplo, si un nodo continúa reenviando paquetes erróneos, ICMP señalará el error al primer paquete y luego lo hará periódicamente, con un período mínimo fijo o con una carga máxima fija de la red. Nunca se debe enviar un mensaje de error ICMP en respuesta a otro mensaje de error ICMP.