stringtranslate.com

Paquete IPv6

Un paquete IPv6 es la entidad de mensaje más pequeña que se intercambia utilizando el Protocolo de Internet versión 6 (IPv6). Los paquetes constan de información de control para direccionamiento y enrutamiento y una carga útil de datos de usuario. La información de control en los paquetes IPv6 se subdivide en un encabezado fijo obligatorio y encabezados de extensión opcionales. La carga útil de un paquete IPv6 es típicamente un datagrama o segmento del protocolo de capa de transporte de nivel superior , pero puede ser datos para una capa de Internet (por ejemplo, ICMPv6 ) o una capa de enlace (por ejemplo, OSPF ).

Los paquetes IPv6 se transmiten normalmente a través de la capa de enlace (es decir, a través de Ethernet o Wi-Fi ), que encapsula cada paquete en una trama . Los paquetes también pueden transportarse a través de un protocolo de tunelización de capa superior , como IPv4 cuando se utilizan tecnologías de transición 6to4 o Teredo .

A diferencia de IPv4, los enrutadores no fragmentan los paquetes IPv6 que superan la unidad máxima de transmisión (MTU), sino que es responsabilidad exclusiva del nodo de origen. IPv6 exige una MTU mínima de 1280 octetos , pero se "recomienda encarecidamente" a los hosts que utilicen Path MTU Discovery para aprovechar las MTU superiores al mínimo. [1]

Desde julio de 2017, la Autoridad de Números Asignados de Internet (IANA) ha sido responsable de registrar todos los parámetros IPv6 que se utilizan en los encabezados de paquetes IPv6. [1]

Encabezado fijo

El encabezado fijo inicia un paquete IPv6 y tiene un tamaño de 40 octetos (320 bits ). [1] Los bytes de los campos multibyte están en el orden de bytes de la red .

Versión: 4 bits
La constante 6 (secuencia de bits 0110 ).
Clase de tráfico: 6+2 bits
Los bits de este campo contienen dos valores. Los seis bits más significativos contienen el campo de servicios diferenciados (campo DS), que se utiliza para clasificar los paquetes. [2] [3] Actualmente, todos los campos DS estándar terminan con un bit '0'. Cualquier campo DS que termine con dos bits '1' está destinado a uso local o experimental. [4] Los dos bits restantes se utilizan para la Notificación Explícita de Congestión (ECN); [5] los valores de prioridad se subdividen en rangos: tráfico donde la fuente proporciona control de congestión y tráfico sin control de congestión.
Etiqueta de flujo: 20 bits
Identificador de alta entropía de un flujo de paquetes entre un origen y un destino. Un flujo es un grupo de paquetes, por ejemplo, una sesión TCP o un flujo de medios. La etiqueta de flujo especial 0 significa que el paquete no pertenece a ningún flujo (usando este esquema). Un esquema más antiguo identifica el flujo por dirección y puerto de origen, dirección y puerto de destino, protocolo (valor del último campo de encabezado siguiente ). [6] Se ha sugerido además que la etiqueta de flujo se use para ayudar a detectar paquetes falsificados. [7]
Longitud de la carga útil: 16 bits
El tamaño de la carga útil en octetos, incluidos los encabezados de extensión. La longitud se establece en cero cuando un encabezado de extensión Hop-by-Hop incluye una opción de carga útil Jumbo. [8]
Encabezado siguiente: 8 bits
Especifica el tipo del siguiente encabezado. Este campo suele especificar el protocolo de capa de transporte utilizado por la carga útil de un paquete. Cuando hay encabezados de extensión presentes en el paquete, este campo indica qué encabezado de extensión sigue. Los valores se comparten con los utilizados para el campo de protocolo IPv4, ya que ambos campos tienen la misma función (consulte Lista de números de protocolo IP ).
Límite de salto: 8 bits
Reemplaza el campo de tiempo de vida en IPv4. Este valor se reduce en uno en cada nodo de reenvío y el paquete se descarta si pasa a ser 0. Sin embargo, el nodo de destino debe procesar el paquete normalmente incluso si se recibe con un límite de saltos de 0.
Dirección de origen: 128 bits
La dirección IPv6 de unidifusión del nodo remitente.
Dirección de destino: 128 bits
La dirección de unidifusión o multidifusión IPv6 del nodo o nodos de destino.

Para aumentar el rendimiento, y dado que se supone que la tecnología actual de la capa de enlace y los protocolos de la capa de transporte proporcionan una detección de errores suficiente, [9] el encabezado no tiene una suma de comprobación que lo proteja. [1]

Encabezados de extensión

Los encabezados de extensión contienen información opcional de la capa de Internet y se ubican entre el encabezado fijo y el encabezado de protocolo de la capa superior. [1] Los encabezados de extensión forman una cadena, utilizando los campos de Encabezado siguiente . El campo Encabezado siguiente en el encabezado fijo indica el tipo del primer encabezado de extensión; el campo Encabezado siguiente del último encabezado de extensión indica el tipo del encabezado de protocolo de la capa superior en la carga útil del paquete. Todos los encabezados de extensión tienen un tamaño múltiplo de 8 octetos; algunos encabezados de extensión requieren relleno interno para cumplir con este requisito.

Hay varios encabezados de extensión definidos y es posible que se definan nuevos en el futuro. La mayoría de los encabezados de extensión se examinan y procesan en el destino del paquete. Las opciones de salto a salto pueden procesarse y modificarse mediante nodos intermedios y, si están presentes, deben ser la primera extensión. Todos los encabezados de extensión son opcionales y deben aparecer como máximo una vez, excepto la extensión del encabezado Opciones de destino , que puede aparecer dos veces. [1]

Si un nodo no reconoce un encabezado de extensión específico, debe descartar el paquete y enviar un mensaje de problema de parámetro ( ICMPv6 tipo 4, código 1). [1]

Los encabezados de extensión definidos a continuación se enumeran en el orden preferido para el caso en que haya más de un encabezado de extensión después del encabezado fijo.

El valor 59 (Sin encabezado siguiente) en el campo Encabezado siguiente indica que no hay ningún encabezado siguiente a este, ni siquiera un encabezado de un protocolo de capa superior. Esto significa que, desde el punto de vista del encabezado, el paquete IPv6 termina justo después de él: la carga útil debería estar vacía. Sin embargo, aún podría haber datos en la carga útil si la longitud de la carga útil en el primer encabezado del paquete es mayor que la longitud de todos los encabezados de extensión en el paquete. Estos datos deberían ser ignorados por los hosts, pero transmitidos sin modificaciones por los enrutadores. [1] : 4.7 

Opciones de recorridos y destinos

El encabezado de extensión Opciones de salto a salto puede ser examinado y modificado por todos los nodos en la ruta del paquete, incluidos los nodos de envío y recepción. (Para la autenticación, se ignoran los valores de las opciones que pueden cambiar a lo largo de la ruta). El encabezado de extensión Opciones de destino debe ser examinado únicamente por el nodo o los nodos de destino. Los encabezados de extensión tienen un tamaño de al menos 8 octetos; si hay más opciones de las que caben en ese espacio, se agregan al encabezado bloques de 8 octetos, que contienen opciones y relleno, repetidamente hasta que se representan todas las opciones.

Encabezado siguiente: 8 bits
Especifica el tipo del siguiente encabezado.
Longitud de extensión del encabezado: 8 bits
Longitud de este encabezado en unidades de 8 octetos, sin incluir los primeros 8 octetos.
Opciones y relleno: variable
Contiene una o más opciones y campos de relleno opcionales para alinear las opciones y hacer que la longitud total del encabezado sea un múltiplo de 8 octetos. Las opciones están codificadas en TLV .

Enrutamiento

El encabezado de extensión de enrutamiento se utiliza para dirigir un paquete a uno o más nodos intermedios antes de enviarlo a su destino. El encabezado tiene un tamaño de al menos 8 octetos; si se necesitan más datos específicos de tipo de los que caben en 4 octetos, se agregan bloques de 8 octetos al encabezado repetidamente, hasta que se coloquen todos los datos específicos de tipo . [1]

Siguiente encabezado: 8 bits
Indica el tipo del siguiente encabezado.
Longitud de extensión del encabezado: 8 bits
La longitud de este encabezado, en múltiplos de 8 octetos, sin incluir los primeros 8 octetos.
Tipo de enrutamiento: 8 bits
Un valor entre 0 y 255, según lo asignado por IANA . [13]
Segmentos que quedan: 8 bits
Número de nodos que este paquete aún debe visitar antes de llegar a su destino final.
Datos específicos del tipo: variable
Datos que pertenecen a este tipo de encabezado de enrutamiento.

Fragmento

Para enviar un paquete que es más grande que la MTU de la ruta , el nodo emisor divide el paquete en fragmentos. El encabezado de extensión Fragment contiene la información necesaria para volver a ensamblar el paquete original (no fragmentado). [1]

Siguiente encabezado: 8 bits
Identifica el tipo del siguiente encabezado.
Reservado: 8 bits; Reservado == 0
Inicializado a todos ceros.
Desplazamiento del fragmento: 13 bits
Desplazamiento, en unidades de 8 octetos, relativo al inicio de la parte fragmentable del paquete original.
Reservado2  (Res): 2 bits; Res == 0
Reservado; inicializado a ceros.
Bandera M  (M): 1 bit
1 significa que siguen más fragmentos; 0 significa último fragmento.
Identificación: 32 bits
Valor de identificación del paquete, generado por el nodo de origen. Necesario para volver a ensamblar el paquete original.

Encabezado de autenticación (AH) y carga útil de seguridad encapsulada (ESP)

El encabezado de autenticación y la carga útil de seguridad encapsulante son parte de IPsec y se utilizan de manera idéntica en IPv6 y en IPv4. [19] [20]

Carga útil

Los encabezados IPv6 fijos y opcionales van seguidos de la carga útil de la capa superior , los datos proporcionados por la capa de transporte, por ejemplo, un segmento TCP o un datagrama UDP . El campo Next Header del último encabezado IPv6 indica qué tipo de carga útil contiene este paquete.

Longitud de carga útil estándar

El campo de longitud de carga útil de IPv6 (e IPv4 ) tiene un tamaño de 16 bits, capaz de especificar una longitud máxima de65 535 octetos para la carga útil. En la práctica, los hosts determinan la longitud máxima utilizable de la carga útil mediante Path MTU Discovery (que genera la MTU mínimaa lo largo de la ruta desde el remitente hasta el receptor), para evitar tener que fragmentar los paquetes. La mayoría de los protocolos de capa de enlace tienen MTU considerablemente más pequeñas que65 535 octetos.

Jumbograma

Una característica opcional de IPv6, la opción de carga útil gigante en un encabezado de extensión Hop-By-Hop Options , [8] permite el intercambio de paquetes con cargas útiles de hasta un octeto menor a 4 GB (2 32 − 1 =    4 294 967 295 octetos), utilizando un campo de longitud de 32 bits. Los paquetes con este tipo de cargas útiles se denominan jumbogramas .

Dado que tanto TCP como UDP incluyen campos limitados a 16 bits (longitud, puntero de datos urgentes), la compatibilidad con jumbogramas IPv6 requiere modificaciones en la implementación del protocolo de capa de transporte. [8] Los jumbogramas solo son relevantes para enlaces que tienen una MTU mayor que65 583 octetos (más de65 535 octetos para la carga útil, más 40 octetos para el encabezado fijo, más 8 octetos para el encabezado de extensión Hop-by-Hop ). Solo unos pocos protocolos de capa de enlace pueden procesar paquetes más grandes que65 535 octetos. [ cita requerida ]

Fragmentación

A diferencia de IPv4, los enrutadores IPv6 nunca fragmentan los paquetes IPv6. Los paquetes que exceden el tamaño de la unidad máxima de transmisión (MTU) del enlace de destino se descartan y esta condición se señala mediante un mensaje ICMPv6 de Paquete demasiado grande al nodo de origen, de manera similar al método IPv4 cuando se establece el bit No fragmentar . [1] Se espera que los nodos finales en IPv6 realicen Path MTU Discovery para determinar el tamaño máximo de los paquetes a enviar, y se espera que el protocolo de capa superior limite el tamaño de la carga útil. Si el protocolo de capa superior no puede hacerlo, el host de envío puede usar el encabezado de extensión Fragment en su lugar.

Cualquier capa de enlace de datos que transporte datos IPv6 debe ser capaz de transmitir un paquete IP que contenga hasta 1280 bytes, por lo que el punto final de envío puede limitar sus paquetes a 1280 bytes y evitar cualquier necesidad de fragmentación o descubrimiento de MTU de ruta.

Fragmentando

Un paquete que contiene el primer fragmento de un paquete original (más grande) consta de cinco partes: los encabezados por fragmento (los encabezados originales cruciales que se usan repetidamente en cada fragmento), seguidos por el encabezado de extensión de fragmento que contiene un desplazamiento cero, luego todos los encabezados de extensión originales restantes, luego el encabezado de capa superior original (alternativamente, el encabezado ESP) y una parte de la carga útil original. [1] Cada paquete posterior consta de tres partes: los encabezados por fragmento, seguidos por el encabezado de extensión de fragmento y por una parte de la carga útil original identificada por un desplazamiento de fragmento.

Los encabezados por fragmento se determinan en función de si el original contiene un encabezado de extensión de enrutamiento o de salto a salto . Si no existe ninguno, la parte por fragmento es solo el encabezado fijo. Si existe el encabezado de extensión de enrutamiento , los encabezados por fragmento incluyen el encabezado fijo y todos los encabezados de extensión hasta el de enrutamiento incluido . Si existe el encabezado de extensión de salto a salto , los encabezados por fragmento constan solo del encabezado fijo y del encabezado de extensión de salto a salto .

En cualquier caso, el último encabezado de la parte por fragmento tiene su valor de Next Header establecido en 44 para indicar que sigue un encabezado de extensión de Fragmento . Cada encabezado de extensión de Fragmento tiene su indicador M establecido en 1 (lo que indica que siguen más fragmentos), excepto el último, cuyo indicador está establecido en 0. La longitud de cada fragmento es un múltiplo de 8 octetos, excepto, potencialmente, el último fragmento.

Históricamente, los encabezados por fragmento se denominaban "parte no fragmentable", en referencia a la posibilidad, antes de 2014, de fragmentar el resto del encabezado. Ahora, ningún encabezado es realmente fragmentable. [21]

Reensamblaje

El nodo receptor vuelve a ensamblar el paquete original reuniendo todos los fragmentos y colocando cada uno de ellos en el desplazamiento indicado y descartando los encabezados de extensión de fragmento de los paquetes que los contenían. Los paquetes que contienen fragmentos no necesitan llegar en secuencia; el nodo receptor los reorganizará.

Si no se reciben todos los fragmentos dentro de los 60 segundos posteriores a la recepción del primer paquete con un fragmento, se abandona el reensamblado del paquete original y se descartan todos los fragmentos. Si se recibió el primer fragmento (que contiene el encabezado fijo) y faltan uno o más fragmentos más, se devuelve un mensaje de tiempo excedido ( ICMPv6 tipo 3, código 1) al nodo que originó el paquete fragmentado.

Cuando el nodo de reensamblado detecta un fragmento que se superpone con otro fragmento, se cancela el reensamblado del paquete original y se descartan todos los fragmentos. Un nodo puede ignorar opcionalmente los duplicados exactos de un fragmento en lugar de tratarlos como si se superpusieran entre sí. [1]

Los hosts receptores deben hacer todo lo posible por reensamblar los datagramas IP fragmentados que, después del reensamblado, contengan hasta 1500 bytes. Los hosts pueden intentar reensamblar datagramas fragmentados de más de 1500 bytes, pero también pueden descartar en silencio cualquier datagrama después de que se haga evidente que el paquete reensamblado tendrá más de 1500 bytes. Por lo tanto, los remitentes deben evitar enviar datagramas IP fragmentados con un tamaño reensamblado total de más de 1500 bytes, a menos que sepan que el receptor es capaz de reensamblar datagramas tan grandes.

Seguridad

Las investigaciones han demostrado que el uso de la fragmentación puede aprovecharse para evadir los controles de seguridad de la red. Como resultado, en 2014 se prohibió la posibilidad de desbordar la cadena de encabezados de IPv6 más allá del primer fragmento para evitar algunos casos de fragmentación muy patológicos. [21] Además, como resultado de las investigaciones sobre la evasión de Router Advertisement Guard, [22] el uso de la fragmentación con Neighbor Discovery está obsoleto y se desaconseja el uso de la fragmentación con Secure Neighbor Discovery (SEND). [23]

Referencias

  1. ^ abcdefghijklm S. Deering ; R. Hinden (julio de 2017). Especificación del Protocolo de Internet, versión 6 (IPv6). IETF . doi : 10.17487/RFC8200 . STD 86. RFC 8200. Estándar de Internet 86. Obsoleto RFC 2460.
  2. ^ K. Nichols; S. Blake; F. Baker ; D. Black (diciembre de 1998). Definición del campo de servicios diferenciados (campo DS) en los encabezados de IPv4 e IPv6. Grupo de trabajo de redes. doi : 10.17487/RFC2474 . RFC 2474. Norma propuesta. Deja obsoletas las RFC 1455 y 1349. Actualizada por las RFC 3168, 3260 y 8436.
  3. ^ D. Grossman (abril de 2002). Nueva terminología y aclaraciones para DiffServ. doi : 10.17487/RFC3260 . RFC 3260. Informativo. Actualizaciones RFC 2474, 2475 y 2597.
  4. ^ abc B. Fenner (noviembre de 2006). Valores experimentales en encabezados IPv4, IPv6, ICMPv4, ICMPv6, UDP y TCP. Grupo de trabajo de redes. doi : 10.17487/RFC4727 . RFC 4727. Norma propuesta.
  5. ^ K. Ramakrishnan; S. Floyd; D. Black (septiembre de 2001). La incorporación de la notificación explícita de congestión (ECN) a IP. Grupo de trabajo de redes. doi : 10.17487/RFC3168 . RFC 3168. Norma propuesta. Deja obsoleta la RFC 2481. Actualiza las RFC 2474, 2401 y 793. Actualizada por las RFC 4301, 6040 y 8311.
  6. ^ S. Amante; B. Carpintero ; S. Jiang; J. Rajahalme (noviembre de 2011). Especificación de etiquetas de flujo IPv6. IETF . doi : 10.17487/RFC6437 . ISSN  2070-1721. RFC 6437. Norma propuesta. Deja obsoleta la RFC 3697. Actualiza las RFC 2205 y 2460.
  7. ^ Uso de la etiqueta de flujo IPv6 como un nonce de capa de transporte para defenderse contra ataques de suplantación fuera de ruta
  8. ^ abc D. Borman; S. Deering ; R. Hinden (agosto de 1999). Jumbogramas IPv6. Grupo de trabajo de redes. doi : 10.17487/RFC2675 . RFC 2675. Norma propuesta. Deja obsoleta la RFC 2147.
  9. ^ C. Partridge; F. Kastenholz (diciembre de 1994). Criterios técnicos para elegir IP The Next Generation (IPng). Grupo de trabajo de redes. doi : 10.17487/RFC1726 . RFC 1726. Informativo. sec. 2.6.
  10. ^ T. Heer; P. Jokela; T. Henderson (abril de 2015). R. Moskowitz (ed.). Protocolo de identidad de host versión 2 (HIPv2). Grupo de trabajo de ingeniería de Internet (IETF). doi : 10.17487/RFC7401 . ISSN  2070-1721. RFC 7401. Norma propuesta. Obsoleta la RFC 5201. Actualizada por las RFC 8002 y 9374.
  11. ^ E. Nordmark; M. Bagnulo (junio de 2009). Shim6: Protocolo Shim de multihoming de nivel 3 para IPv6. Grupo de trabajo de redes. doi : 10.17487/RFC5533 . RFC 5533. Norma propuesta.
  12. ^ abcd T. Narten (enero de 2004). Asignación de números experimentales y de prueba considerados útiles. Grupo de trabajo de redes. doi : 10.17487/RFC3692 . BCP 82. RFC 3692. Mejores prácticas comunes. Actualizaciones RFC 2434.
  13. ^ "Parámetros del Protocolo de Internet versión 6 (IPv6): tipos de enrutamiento". IANA . Consultado el 15 de octubre de 2021 .
  14. ^ Philippe Biondi, Arnoud Ebalard (abril de 2007). "Seguridad de encabezados de enrutamiento IPv6" (PDF) . EADS . Consultado el 3 de diciembre de 2010 . Tipo 0: el mecanismo maligno...
  15. ^ J. Abley; P. Savola; G. Neville-Neil (diciembre de 2007). Desaprobación de los encabezados de enrutamiento de tipo 0 en IPv6. doi : 10.17487/RFC5095 . RFC 5095. Borrador de norma. Actualizaciones RFC 2460 y 4294.
  16. ^ I. Castineyra; N. Chiappa; M. Steenstrup (agosto de 1996). La arquitectura de enrutamiento de Nimrod. doi : 10.17487/RFC1992 . RFC 1992. Informativo.
  17. ^ J. Hui; JP. Vasseur; D. Culler; V. Manral (marzo de 2012). Un encabezado de enrutamiento IPv6 para rutas de origen con el Protocolo de enrutamiento para redes de bajo consumo y con pérdidas (RPL). Grupo de trabajo de ingeniería de Internet . doi : 10.17487/RFC6554 . RFC 6554. Norma propuesta.
  18. ^ S. Previdi; J. Leddy; S. Matsushima; D. Voyer (marzo de 2020). C. Filsfils; D. Dukes (eds.). Encabezado de enrutamiento de segmentos IPv6 (SRH). Grupo de trabajo de ingeniería de Internet (IETF). doi : 10.17487/RFC8754 . ISSN  2070-1721. RFC 8754. Norma propuesta.
  19. ^ S. Kent (diciembre de 2005). Encabezado de autenticación IP. Grupo de trabajo de redes. doi : 10.17487/RFC4302 . RFC 4302. Norma propuesta. Deja obsoleta la RFC 2402.
  20. ^ S. Kent (diciembre de 2005). Carga útil de seguridad encapsulada IP. Grupo de trabajo de redes. doi : 10.17487/RFC4303 . RFC 4303. Norma propuesta. Deja obsoleta la RFC 2406.
  21. ^ ab F. Gont; V. Manral; R. Bonica (enero de 2014). Implicaciones de cadenas de encabezado IPv6 de gran tamaño. Grupo de trabajo de ingeniería de Internet (IETF). doi : 10.17487/RFC7112 . ISSN  2070-1721. RFC 7112. Norma propuesta. Actualizaciones RFC 2460.
  22. ^ F. Gont (febrero de 2014). Consejos de implementación para el protector de anuncios de enrutador IPv6 (RA-Guard). Grupo de trabajo de ingeniería de Internet (IETF). doi : 10.17487/RFC7113 . ISSN  2070-1721. RFC 7113. Informativo. Actualizaciones RFC 6105.
  23. ^ F. Gont (agosto de 2013). Implicancias de seguridad de la fragmentación de IPv6 con detección de vecinos de IPv6. Grupo de trabajo de ingeniería de Internet (IETF). doi : 10.17487/RFC6980 . ISSN  2070-1721. RFC 6980. Norma propuesta. Actualizaciones RFC 3971 y 4861.