MTU de IPv6
IPv6 requiere que el nivel de vínculo admita un tamaño mínimo de 1.280 bytes para los paquetes IPv6. Los niveles de vínculo que no admiten este tamaño deben proporcionar una combinación de fragmentación y reensamblado de nivel de vínculo transparente para IPv6. En los niveles de vínculo que admiten un tamaño de MTU que se puede configurar, se recomienda que se configuren con un tamaño de MTU de, al menos, 1.500 bytes (la unidad MTU IPv6 de encapsulación Ethernet II). La Unidad de recepción máxima (MRU, Maximum Receive Unit) de un vínculo de protocolo punto a punto (PPP, Point-to-Point Protocol) es un ejemplo de MTU que se puede configurar.
Al igual que IPv4, IPv6 proporciona un proceso de descubrimiento de MTU de ruta de acceso mediante el mensaje Packet Too Big (Paquete demasiado grande) de ICMPv6 que se describe en "Descubrimiento de MTU de ruta de acceso". El descubrimiento de MTU de ruta de acceso permite la transmisión de paquetes IPv6 de tamaños superiores a 1.280 bytes.
Los hosts de origen de IPv6 pueden fragmentar cargas de protocolos de nivel superior que sean mayores que la unidad MTU de ruta de acceso mediante el proceso y el encabezado Fragment descrito anteriormente. Sin embargo, no se recomienda en absoluto utilizar la fragmentación de IPv6. Un nodo IPv6 debe ser capaz de reensamblar un paquete fragmentado con un tamaño de, al menos, 1.500 bytes.
Sumas de comprobación de nivel superior
La implementación actual de TCP y UDP para IPv4 incorpora en el cálculo de suma de comprobación un pseudo-encabezado que incluye los campos Source Address (Dirección de origen) y Destination Address (Dirección de destino) de IPv4. Este cálculo de suma de comprobación debe modificarse para que el tráfico de TCP y UDP que se envía a través de IPv6 incluya direcciones IPv6. En la figura 28 se muestra el nuevo pseudo-encabezado que debe utilizarse en las sumas de comprobación de TCP y UDP.
Figura 28 Pseudo-encabezado de IPv6
El pseudo-encabezado de IPv6 incluye los campos Source Address, Destination Address, un campo Upper-Layer Packet Length (Longitud de paquete de nivel superior) que indica la longitud de PDU de nivel superior, y un campo Next Header (Encabezado siguiente) que indica el protocolo de nivel superior para el que se va a calcular la suma de comprobación.
Este pseudo-encabezado se utiliza también para el cálculo de suma de comprobación de ICMPv6.
ICMPv6
Al igual que IPv4, IPv6 no proporciona servicios para informar acerca de la existencia de errores. En su lugar, IPv6 utiliza una versión actualizada del Protocolo de mensajes de control de Internet (ICMP, Internet Control Message Protocol), denominado ICMP versión 6 (ICMPv6). ICMPv6 presenta las funciones comunes de ICMP IPv4 relativas a la elaboración de informes acerca de errores de entrega o reenvío y proporciona un servicio de eco simple para la solución de problemas.
El protocolo ICMPv6 también proporciona un marco para lo siguiente:
MLD es un conjunto de tres mensajes ICMP que reemplazan a la versión 2 del Protocolo de administración de grupos de Internet (IGMP) para que IPv4 administre la pertenencia a grupos de multidifusión de subred. MLD se describe más detalladamente en "Descubrimiento de escucha de multidifusión".
Neighbor Discovery es un conjunto de cinco mensajes ICMPv6 que administran la comunicación entre nodos en un vínculo. Neighbor Discovery reemplaza al Protocolo de resolución de direcciones (ARP), al proceso Router Discovery (Descubrimiento de enrutadores) de ICMPv4 y al mensaje Redirect (Redirección) de ICMPv4. Neighbor Discovery se describe más detalladamente en "Descubrimiento de vecino".
Una implementación de IPv6 requiere ICMPv6, que está documentado en RFC 2463.
Tipos de mensajes ICMPv6
Hay dos tipos de mensajes ICMPv6:
1.
Mensajes
de error
Los
mensajes de error se utilizan para informar de la existencia de errores en el
reenvío o en la entrega de paquetes IPv6 por parte del nodo de destino o de un
enrutador intermedio. El valor del campo Type (Tipo) de 8 bits en los mensajes
de error ICMPv6 se encuentra en el intervalo comprendido entre 0 y 127 (el bit
de orden superior se establece en el valor 0). Los mensajes de error ICMPv6 son
Destination Unreachable (No se puede tener acceso al destino), Packet Too Big
(Paquete demasiado grande), Time Exceeded (Fin de tiempo de espera) y Parameter
Problem (Problema de parámetro).
2.
Mensajes
informativos
Los
mensajes informativos se utilizan para proporcionar funciones de diagnóstico y
otras funciones adicionales de host, como MLD y Neighbor Discovery. El valor
del campo Type (Tipo) en los mensajes informativos ICMPv6 se encuentra en el
intervalo comprendido entre 128 y 255 (el bit de orden superior se establece en
el valor 1). Los mensajes informativos ICMPv6 se describen en RFC 2463 e
incluyen Echo Request (Solicitud de eco) y Echo Reply (Respuesta de eco).
Encabezado de ICMPv6
En la figura 29 se muestra la estructura de todos los mensajes ICMPv6.
Figura 29 Estructura de los
mensajes ICMPv6
Los campos del encabezado ICMPv6 son los siguientes:
Type (Tipo): indica
el tipo de mensaje ICMPv6. El tamaño de este campo es de 8 bits. En los
mensajes de error ICMPv6, el bit de orden superior se establece en el valor 0.
En los mensajes informativos ICMPv6, el bit de orden superior se establece en
el valor 1.
Code (Código):
distingue entre varios mensajes dentro de un tipo de mensaje dado. El tamaño de
este campo es de 8 bits. Si sólo hay un mensaje de un tipo dado, el campo Code
se establece en 0.
Checksum (Suma de
comprobación): almacena una suma de comprobación del mensaje ICMP. El tamaño de
este campo es de 16 bits. El pseudo-encabezado de IPv6 se agrega al mensaje
ICMPv6 cuando se calcula la suma de comprobación.
Message body (Cuerpo del mensaje): contiene datos específicos del mensaje ICMPv6.
Mensajes de error ICMPv6
Los mensajes de error ICMPv6 se utilizan para informar de errores de reenvío o entrega por parte de un enrutador o del host de destino.
Destination Unreachable (Destino inaccesible)
El enrutador o el host de destino
envía un mensaje ICMPv6 Destination Unreachable cuando el paquete no se puede
reenviar a su destino.
En la figura 30 se muestra el mensaje ICMPv6 Destination Unreachable.
Figura 30 Mensaje ICMPv6
Destination Unreachable (Destino inaccesible)
En el mensaje Destination Unreachable, el campo Type (Tipo) se establece en el valor 1 y el campo Code (Código) se establece en un valor comprendido entre 0 y 4. Después del campo Checksum (Suma de comprobación) se encuentra el campo Unused (No utilizado), de 32 bits, y la porción del paquete descartado que hace que todo el paquete IPv6 que contiene el mensaje ICMPv6 no sea mayor de 1.280 bytes (la unidad MTU mínima de IPv6). El número de bytes del paquete descartado incluido en el mensaje varía si hay encabezados de extensión IPv6. Para un mensaje ICMPv6 sin encabezados de extensión, se incluyen 1.232 bytes del paquete descartado (1.280 menos un encabezado IPv6 de 40 bytes y un encabezado ICMPv6 Destination Unreachable de 8 bytes).
En la tabla 7 se muestra el valor
del campo Code para los distintos mensajes Destination Unreachable.
Tabla 7 Mensajes ICMPv6 Destination
Unreachable (Destino inaccesible)
Valor
del código |
Descripción |
0 |
No se ha
encontrado ninguna ruta que coincida con el destino en la tabla de
enrutamiento. |
1 |
La
comunicación con el destino está prohibida por la directiva administrativa.
Normalmente, se envía cuando un servidor de seguridad descarta el paquete. |
2 |
La
dirección se encuentra fuera del ámbito de la dirección de origen. |
3 |
No se
puede tener acceso a la dirección de destino. Normalmente, se envía debido a
la incapacidad de resolver la dirección del nivel de vínculo del destino. |
4 |
No se
puede tener acceso al puerto de destino. Normalmente, se envía cuando un paquete
IPv6 que contiene un mensaje UDP ha llegado al destino, pero no había ninguna
aplicación a la escucha en el puerto UDP de destino. |
Packet Too Big (Paquete demasiado grande)
Se envía un mensaje ICMPv6 Packet Too
Big cuando el paquete no se puede reenviar debido a que la unidad MTU del
vínculo de reenvío es menor que el tamaño del paquete IPv6.
En la figura 31 se muestra el mensaje ICMPv6 Packet Too Big.
Figura 31 Mensaje ICMPv6 Packet Too
Big (Paquete demasiado grande)
En el mensaje Packet Too Big, el campo Type (Tipo) se establece en el valor 2 y el campo Code (Código) se establece en el valor 0. Después del campo Checksum (Suma de comprobación) se encuentra el campo MTU, de 32 bits, en el que se almacena la unidad MTU del vínculo sobre el que se iba a reenviar el paquete. Después sigue la parte del paquete descartado que hace que todo el paquete IPv6 que contiene el mensaje ICMPv6 tenga la longitud máxima de 1.280 bytes. El mensaje Packet Too Big se utiliza para el proceso Path MTU Discovery (Descubrimiento MTU de ruta de acceso) de IPv6 que se describe en "Path MTU Discovery (Descubrimiento de MTU de ruta de acceso)".
Time Exceeded (Fin de tiempo de espera)
Normalmente, un enrutador envía un
mensaje ICMPv6 Time Exceeded cuando el campo Hop Limit (Límite de saltos) del encabezado
de IPv6 es cero al recibir el paquete o después de reducir su valor durante el
proceso de reenvío.
En la figura 32 se muestra el mensaje ICMPv6 Time Exceeded.
Figura 32 Mensaje ICMPv6 Time
Exceeded (Fin de tiempo de espera)
En el mensaje Time Exceeded, el campo Type (Tipo) se establece en el valor 3 y el campo Code (Código) se establece en el valor 0 (cuando el campo Hop Limit del encabezado IPv6 pasa a 0) o en 1 (cuando se sobrepasa el tiempo de reensamblado de la fragmentación del host de destino). Después del campo Checksum (Suma de comprobación), se encuentra el campo Unused (No utilizado), de 32 bits, y la parte del paquete descartado, de modo que todo el paquete IPv6 que contiene el mensaje ICMPv6 no tiene más de 1.280 bytes. La recepción de mensajes Time Exceeded para Code=0 indica que el límite de saltos de los paquetes salientes no es suficientemente grande para llegar al destino o que existe un bucle de enrutamiento.
Parameter Problem (Problema de parámetro)
El mensaje ICMPv6 Parameter Problem
es enviado por un enrutador o por el destino. Ocurre cuando se detecta un error
en el encabezado de IPv6 o en un encabezado de extensión, e impide que continúe
el procesamiento de IPv6.
En la figura 33 se muestra el mensaje ICMPv6 Parameter Problem.
Figura 33 Mensaje ICMPv6 Parameter
Problem (Problema de parámetro)
En el mensaje Parameter Problem, el campo Type (Tipo) se establece en el valor 4 y el campo Code (Código) es un valor comprendido entre 0 y 2. Después del campo Checksum (Suma de comprobación) se encuentra el campo Pointer (Puntero), de 32 bits, que indica el desplazamiento en bytes del paquete IPv6 en el que se detectó el error. Después del campo Pointer sigue la parte del paquete descartado, con un tamaño tal que todo el mensaje ICMPv6 no supera los 1.280 bytes. El valor del campo Pointer se establece en el desplazamiento correcto incluso cuando la ubicación del error no esté en la parte del paquete descartado.
En la tabla 8 se muestran los
valores del campo Code para los mensajes Parameter Problem.
Tabla 8 Mensajes ICMPv6 Parameter
Problem (Problema de parámetro)
Valor
del código |
Descripción |
0 |
Error en
un campo del encabezado IPv6 o en un encabezado de extensión. |
1 |
Valor no
reconocido en el campo Next Header (Encabezado siguiente). Equivale al
mensaje Destination Unreachable-Protocol Unreachable (Destino inaccesible o
protocolo inaccesible) de IPv4. |
2 |
Opción
de IPv6 no reconocida. |
Mensajes informativos ICMPv6
Los mensajes informativos ICMPv6, definidos en RFC 2463, proporcionan capacidades de diagnóstico para la solución de problemas.
Echo Request (Solicitud de eco)
El mensaje ICMPv6 Echo Request se
envía a un destino para solicitar un mensaje Echo Reply (Respuesta de eco) de
inmediato. El servicio de mensajes Echo Request/Echo Reply proporciona un
diagnóstico simple para la solución de diversos problemas de posibilidad de
acceso y enrutamiento.
En la figura 34 se muestra el mensaje ICMPv6 Echo Request.
Figura 34 Mensaje ICMPv6 Echo Request (Solicitud de eco)
En el mensaje Echo Request, el campo Type (Tipo) se establece en el valor 128 y el campo Code (Código) se establece en el valor 0. Después del campo Checksum (Suma de comprobación), se encuentran los campos Identifier (Identificador) de 16 bits y Sequence Number (Número de secuencia). Los campos Identifier y Sequence Number se establecen mediante el host de envío y se utilizan para hacer coincidir un mensaje Echo Reply entrante con su mensaje Echo Request correspondiente. El campo Data (Datos) contiene cero o más bytes de datos opcionales y también lo establece el host de envío.
Echo Reply (Respuesta de eco)
Se envía un mensaje ICMPv6 Echo
Reply en respuesta a la recepción de un mensaje ICMPv6 Echo Request.
En la figura 35 se muestra el mensaje ICMPv6 Echo Reply.
Figura 35 Mensaje ICMPv6 Echo Reply
(Respuesta de eco)
En el mensaje Echo Reply, el campo Type (Tipo) se establece en el valor 129 y el campo Code (Código) se establece en el valor 0. Después del campo Checksum (Suma de comprobación) se encuentran los campos Identifier (Identificador) de 16 bits y Sequence Number (Número de secuencia). Los campos Identifier, Sequence Number y Data se establecen con los mismos valores que los del mensaje Echo Request que solicitó inicialmente el mensaje Echo Reply.
Diferencias entre los mensajes ICMPv4 e ICMPv6
En la tabla 9 se muestran los
mensajes ICMPv4 y sus equivalentes en ICMPv6.
Tabla 9 Mensajes ICMPv4 y sus equivalentes
en ICMPv6
Mensaje
ICMPv4 |
Equivalente
en ICMPv6 |
Destination
Unreachable-Network unreachable (Destino inaccesible: red inaccesible) (Type
3, Code 1) |
Destination
Unreachable-No route to destination (Destino inaccesible: no hay ruta al destino)
(Type 1, Code 0) |
Destination
Unreachable-Host unreachable (Destino inaccesible: host inaccesible) (Type 3,
Code 1) |
Destination
Unreachable-Address unreachable (Destino inaccesible: dirección inaccesible)
(Type 1, Code 3) |
Destination
Unreachable-Protocol unreachable (Destino inaccesible: protocolo inaccesible)
(Type 3, Code 2) |
Parameter
Problem-Unrecognized Next Header field (Problema de parámetro: no se reconoce
el campo Next Header) (Type 4, Code 1) |
Destination
Unreachable-Port unreachable (Destino inaccesible: puerto inaccesible) (Type
3, Code 3) |
Destination
Unreachable-Port unreachable (Destino inaccesible: puerto inaccesible) (Tipo
1, Código 4) |
Destination
Unreachable-Fragmentation needed and DF set (Destino inaccesible: se necesita
fragmentación y DF (Type 3, Code 4) |
Packet
Too Big (Paquete demasiado grande) (Type 2, Code 0) |
Destination
Unreachable-Communication with destination host administratively prohibited
(Destino inaccesible: comunicación con el host de destino prohibida
administrativamente) (Type 3, Code 10) |
Destination
Unreachable-Communication with destination administratively prohibited
(Destino inaccesible: comunicación con el destino prohibida
administrativamente) (Type 1, Code 1) |
Time
Exceeded-TTL expired (Fin de tiempo de espera: caducó TTL) (Type 11, Code 0) |
Time
Exceeded-Hop Limit exceeded (Fin de tiempo de espera: se excedió el límite de
saltos) (Type 3, Code 0) |
Time Exceeded-Fragmentation
timer expired (Fin de tiempo de espera: caducó el cronómetro de
fragmentación) (Type 11, Code 1) |
Time
Exceeded-Fragmentation timer exceeded (Fin de tiempo de espera: se excedió
del cronómetro de fragmentación) (Type 3, Code 1) |
Parameter
Problem (Problema de parámetro) (Type 12, Code 0) |
Parameter
Problem (Problema de parámetro) (Type 4, Code 0 o Code 2) |
Source
Quench (Paquetes de control de flujo) (Type 4, Code 0) |
Este
mensaje no está implementado en IPv6. |
Redirect
(Redirección) (Type 5, Code 0) |
Mensaje
Neighbor Discovery Redirect (Redirección para descubrimiento de vecino) (Type
137, Code 0). Para obtener más información, consulte "Descubrimiento de
vecino". |
Descubrimiento de MTU de ruta de acceso
La unidad MTU de ruta de acceso es la MTU de vínculo mínima de todos los vínculos que hay en una ruta de acceso entre un origen y un destino. Los paquetes IPv6 con un tamaño máximo de MTU de ruta de acceso no necesitan que el host los fragmente y todos los enrutadores de la ruta de acceso los reenviarán correctamente. Para descubrir la unidad MTU de ruta de acceso, el nodo de envío utiliza la recepción de mensajes ICMP Packet Too Big (Paquete demasiado grande).
La unidad MTU de ruta de acceso se
descubre mediante el siguiente proceso:
1.
El
nodo de envío asume que la unidad MTU de la ruta de acceso es la MTU de vínculo
de la interfaz en la que se está reenviando el tráfico.
2.
El
nodo de envío envía datagramas IP con el tamaño de MTU de ruta de acceso.
3.
Si un
enrutador de la ruta de acceso no puede reenviar el paquete a través de un
vínculo con una MTU de vínculo menor que el tamaño del paquete, descarta el
paquete IPv6 y devuelve un mensaje Packet Too Big al nodo de envío. El mensaje
ICMP Packet Too Big contiene la unidad MTU del vínculo en el que se produjo el
error de reenvío.
4.
El
nodo de envío configura la unidad MTU de ruta de acceso para los paquetes que
se envían al destino con el valor del campo MTU en el mensaje ICMPv6 Packet Too
Big.
El nodo de envío vuelve a empezar en el paso 2 y repite los pasos 2 a 4 tantas veces como sea necesario para descubrir la unidad MTU de ruta de acceso. La unidad MTU de ruta de acceso se determina cuando no se reciben mensajes ICMPv6 Packet Too Big adicionales o cuando se recibe un mensaje de confirmación del destino.
En RFC 1981, se recomienda que los
nodos IPv6 admitan el descubrimiento de MTU de ruta de acceso. Aquéllos que no
lo hagan, deben utilizar la unidad MTU de vínculo mínima de 1.280 bytes como
MTU de ruta de acceso.
Cambios en MTU de ruta de acceso
Debido a los cambios de la topología de enrutamiento, la ruta de acceso entre el origen y el destino puede cambiar con el tiempo. Cuando una nueva ruta de acceso necesita una MTU de ruta de acceso menor, el proceso anterior empieza en el paso 3 y repite los pasos 2 a 4 hasta que se descubre la nueva MTU de ruta de acceso.
Las disminuciones de MTU de ruta de
acceso se descubren inmediatamente a través de la recepción de mensajes ICMP
Packet Too Big. El nodo de envío debe detectar los incrementos en la MTU de
ruta de acceso. Tal como se describe en RFC 1981, el nodo de envío puede
intentar enviar un paquete IPv6 mayor después de un mínimo de 5 minutos (se
recomienda 10 minutos) al recibir un mensaje ICMPv6 Packet Too Big.