barra de menu

martes, 19 de abril de 2016

Capítulo 16: IPv6

IPv6 es el desarrollo de la IETF para el nuevo direccionamiento IP debido a la falta de IPs para todo el ámbito mundial. La RFC que lo regula es la 2460.

Diferencias entre IPv4 e IPv6




Beneficios de IPv6:
  • Enrutamiento más eficiente
  • Calidad de Servicio  (QoS)
  • Se elimina el uso de NAT
  • Seguridad de capa 3 de origen a destino con IPSEC
  • Fácil administración de IPs con la opción de autoconfiguración
  • Formato de cabecera más reducido

Estructura de IPv6
  
Cabecera de IPv6

Las cabeceras de IPv6 suponen una mejora respecto a IPv4 ya que se procesan de una manera más eficiente. Mientras que las cabeceras de IPv4 tienen un campo de 40 bytes para opciones especiales, las cabeceras de IPv6 pueden añadir "extension header" (cabeceras extendidas) para las opciones especiales.

 La cabecera de IPV6 tiene una longitud fija de 40 bytes que incluye los siguientes campos:
  • Version: campo de 4 bits que contiene el núnero 6,que indica que es IPv6.
  • Traffic class: campo de 8 bits que determina la prioridad del tráfico. Susituye al TOS
  • Flow label: campo de  20 bits para la gestión de QoS
  • Payload length: campo de 16 bits que indica el tamaño de los datos en octetos
  • Next header: campo de 8 bits que indica el siguiente protocolo encapsulado
  • Hop limit: campo de 8 bits que sustituye al campo TTL de IPv4
  • Source address: campo de 128 bits donde viene la dirección de origen
  • Destination address: campo de 128 bits donde viene la dirección de destino

IPv4 comparado con IPv6




Una de las mayores diferencias es que si IPv6 necesita fragmentar un paquete, usa una "extension header". Esta extension header usará el "MTU path discovery".


IPv6 Extension Headers

Como la cabecera de IPv6 tiene un tamaño fijo de 40 bytes, las opciones especiales, que en IPv4 se añadían a la cabecera, ahora en IPv6 se añaden a las extension headers.

Ipv6 define 6 tipos de "extension headers":
  • Hop-by-hop: hace que las opciones necesiten ser examinadas por cada nodo que pase a lo largo del camino
  • Routing: provee una lista de nodos intermedios por donde tiene que pasar el paquete
  • Fragment: señaliza cuando un paquete ha sido fragmentado por el origen
  • Destination: opciones solo examinadas por el equipo de destino. Puede aparecer 2 veces
  • Authentication header: se usa junto con IPSEC para verificar la autenticidad del paquete
  • Encrypted security payload: Usado junto con IPSEC y transporta los datos encriptados 

Direccionamiento IPv6

Tenemos 3 tipos de direcciones en IPv6:
  • Unicast: dirección única que identifica una interface o nodo. Un paquete con dirección unicast solo se destina hacia la interface que tiene esa dirección
  • Multicast: identificador para un grupo de direcciones multicast de IPv6 que puede pertenecer a diferentes nodos. Un paquete con dirección multicast se destina hacia todas las interfaces de ese grupo
  • Anycast: identificador para un grupo de direcciones anycast de IPv6 que puede pertenecer a diferentes nodos. Un paquete con dirección anycast se destina solo hacia un nodo de ese grupo, que normalmente, es el más cercano.

 Formato de las direcciones en IPv6

Son direcciones de 128 bits. Está dividida en bloques hexadecimales de 16 bits. Pueden parecer largas y complicadas de entender, pero estas direcciones permiten que se acorten para que resulte más sencilla su lectura. Lo vemos con un ejemplo:




En el gráfico se presentan 3 direcciones que en realidad son la misma. Los ceros consecutivos se pueden omitir dejando solo uno por bloque o sustituyéndolos por "dos puntos dobles". Respecto a estos últimos, solo podemos usarlos una vez en toda la direccion: no se puede representar dos veces en la misma dirección.


El prefijo en IPv6




El prefijo es lo que en IPv4 determina la máscara, es decir, la dirección de red o subred. En el ejemplo de arriba, la dirección de red (no toda la dirección ip) la podemos representar como:
  • 2bfc:0000:0000:0000:0/64
  • 2bfc:0:0:0:0/64
  • 2bfc::0/64
Igual que IPv4, existen direcciónes reservadas:
  • ::/128 - Prefijo no especificado
  • ::1/128 - Usado para loopback
  • FF00::/8 - Usado para multicast
  • FE80::/10 - Usado para el "link local". Como si fuera la A.P.I.P.A.
  • FC00::/7 - Direcciones privadas para LAN como en IPv4

Asignación de direcciones

Recomendaciones de la RFC 3177



La dirección 0.0.0.0 de IPv4 se traduce en IPv6 como la ::/16.

La dirección loopback es una dirección con 127 ceros y que se traduce como ::/1.



Ámbito de Direcciones en IPv6 (Scope Address)

En IPv6 nos encontramos con el concepto de "ámbito" en el direccionamiento.

Para tráfico de tipo Unicast tenemos dos tipos de ámbito:
  • Ámbito Local:
        • Direcciones Unicast Link-Local
        • Direcciones Unicast Site-local
  • Ámbito Global:
        • Direcciones Unicast Global

Para el tráfico de tipo Multicast tenemos 16 tipos de ámbito.

Vamos a entrar en detalle:


Direcciones Unicast Link-Local



Las direcciones Link-Local se usan dentro de un enlace de red. Los primeros 10 bits del prefijo identifica la dirección como "link-local". Se identifica con el número binario 1111111010 seguido de 54 ceros, el ID de la interface que genera el equipo y la máscara de 64 bits. Esta dirección no puede usarse fuera del ámbito local. Como los primeros 64 bits son iguales en todas las direcciones "link-local", solo se garantiza que sea única a nivel loca, y por eso estas direcciones no pueden enrutarse. Una interface configurada para IPv6 genera automáticamente una dirección "link-local". Estas direcciones se usan normalmente para el descubrimiento de vecinos y para el tráfico del protocolo de enrutamiento. Fueron diseñadas para proporcionar una configuración automática del direccionamiento en subredes pequeñas.


Direcciones Unicast Site-Local




Estas direcciones son usadas dentro de site o intranet. Un site consiste en múltiples enlaces de red y las direcciones "site-local" sirven para identificar los nodos de esa intranet. Estas direcciones no pueden ser usadas fuera del site.

Las direcciones unicast "site-local" son identificadas con el prefijo binario 1111111011 seguidos de 54 ceros para el ID de la subred y el ID de la interface generado por el equipo. Estas direcciones no deben enrutarse a Internet.

El prefijo para las direcciones "site-local" es el mismo en todas las organizaciones en todo el mundo y se duplican en todo el mundo.


Direcciones Unicast Global




Estas direcciones son globales y únicas. Son usadas para enrutarse en Internet. Estas direcciones son identificadas a través de 6 campos que en total nos dan los 128 bits de la dirección.
  • Format Prefix (FP): los 3 primeros bits son 001. Identifica el espacio global. Este rango los asigna IANA.
  • Global Routing Prefix: Los siguientes 45 bits están reservados para la asignación jerárquica de direcciones. Normalmente son usadas para proveer un alto rango de sumarización que suele ser usado por los grandes proveedores de servicio (Tier 1), por entidades regionales y demás. Estas direcciones tienen que estar bien diseñadas, ya que una asignación ineficiente puede tener un impacto en el enrutamiento en Internet.
  • Subnet Identifier (SID): los siguientes 16 bits están reservados para la asignación local de enlaces. El administrador local usa este SID para crear las posibilidades de "subnetting".
  • Interface Identifier (Interface ID): los últimos 64 bits se reservan para el ID de la interface, que permite una configuración fácil de los equipos de la red.
El rango de direccines reservado por IANA es:  2000::/3


Interface ID

El formato se recoge en la IEEE EUI-64

El interface ID se compone de 64 bits que identifica de manera única a los equipos de una red. En interfaces Ethernet es una mezcla con la dirección mac de la interface. Las mac son solo 48 bits por lo que los 16 restantes para completar el "Interface ID" lo que se hace es: se cogen los 24 primeros bits de la mac, después se añaden el siguiente valor binario 1111111111111110 (0xFFFE) y luego los siguientes 24 bits de la mac.

Por ejemplo, un equiop con mac C2:65:3B:5E:CC:1A formará el Interface ID:

  • C065:3BFF:FE5E:CC1A

Si os fijáis bien, la dirección empeiza ahora con C0 y no con C2. Esto es lo que llaman cambiar el bit universal. Después de documentarme un poco la mayoría de las fuentes piensan que no tiene ningúnuso y que esta arquitectura es un comportamiento heredado que en su momento debió tener alguna función. Solo tenedlo en cuenta.

Por cierto, si sabemos que las direcciones Ipv6 se forman así, entonces si supieramos la dirección mac de un equipo, podríamos adivinar que dirección Ipv6 tiene. Esto supone un riesgo de seguridad. Los fabricantes de equipos, no solo de comunicaciones están abordando este problema creando software que aleatoriamente cree la dirección y, incluso, se vaya renovando cada cierto tiempo.

Aquí tenéis el enlace a la RFC 4291 que específica la arquitectura del direccionamiento IPv6.


AUTOCONFIGURACIÓN

Siempre se pueden asignar las direcciones manualmente pero Ipv6 viene provisto de la posibilidad de que el equipo la genere él solo.

En Ipv4 tenemos la posibilidad de configurar las direcciones ip de los dispositivos de forma manual o a través de un DHCP. Es lo que se llama "stateful configuration".

En IPv6 se introduce la "stateless configuration". Contiene varios elementos:
  • Extended Unique Identifier (EUI): Es un valor hexadecimal de 64 bits para identificar la interface. Si no se específica, el dispositivo lo genera automáticamente con la mac.
  • Router Advertisement Message (RA): Un router IPv6 envía periódicamente este mensaje a los host o en respuesta a un RS (Router Solicitation) de un host. La información que puede ir en este mensaje RA es: direcciones IPv6 del router, MTU, rutas específicas, autoconfiguración y periodo de tiempo de la dirección asignada.
  • Router Solicitation (RS): los host los envían para descubrir si hay routers y sus propiedades. Cuando un router recibe un RS, este responde con un RA, donde se encuentra la información del router y la información para permitir la autoconfiguración.
  • Prefix List: esta table contiene las rutas IPv6. Cuando hay una entrada en esta tabla, el router la envía dentro del RA enviado a los host. Cada vez que un host recibe un RA, estos pueden usar las rutas para la autoconfiguración. 

Descubrimiento de Vecinos (ND - Neighbor Discovery)

Es el proceso para rastrear el estado de la alcanzabilidad de los vecinos en el enlace local (link local). Se define en la RFC 4861. Combina y mejora el ARP y el ICMP. ES a través de este proceso como se consigue el default gateway para los equipos a través de los RA.

Se usa ICMPv6 ND para la resolución de direcciones de capa 3 a capa 2. Es el equivalente al ARP  de IPv4. Tenemos los siguientes mensajes de ND:
  • Neighbor Solicitation (NS): equivale a un ARP Request
  • Neighbor Advertisement (NA): equivale a un ARP Reply
  • Router Solicitation (RS)
  • Router Advertisement (RA)

Un equipo ve a un vecino como alcanzable cuando el dispositivo recibe la confirmación de que el vecino recibió y procesó tráfico IP o un NS (Neighbor Solicitation). Si no, lo declara como inalcanzable. Un router con el ND habilitado puede envíar mensajes ND a sus nodos, obviamente. ND es opcional en los dispositivos IPv6.

Stateless Address Asigment (SLAAC) - RFC 4862

Es una nueva característica de IPv6. Automáticamente asigna direcciones IPv6 para cada enlace activo. Solo trabaja con direcciones /64. Por defecto no asgina direcciones fuera del gateway. Los clientes usan el Duplicate Address Detection (DAD) pra confirmar que su dirección es única. Hay que configurar los clientes para que no haya conflcito con el DHCP Stateful.

Stateless DHCP no mantiene una base de datos con las asociaciones ip.

 


Los pasos para la autoconfiguración de direcciones son:
  1. Al inicio, los host A y B generan cada uno su dirección "link-local" con sus mac.
  2. Cada host envía mensajes RS. Usan la dirección "link-local" como fuente de los RS y con destino multicast ff02::2
  3. El router IPv6 recibe los RS
  4. El router envía la confirmación con mensajes RA a los equipos. Estos RA tienen una lista con direcciones
  5. El host usa esa lista para ejecutar la autoconfuguración

No cumple la misma función de el DHCP  para IPv4 porque solo asigna opciones como los servidores DNS, WINS, TFTP, etc.



Configuración Stateful


En IPv6 también tenemos el servicio DHCP, que es conocido como DHCPv6 Stateful y se define en la RFC 3315.
  • Avisa a los hosts de que hay un DHCPv6 disponible
  • Las opciones se insertan en los Router Advertisement (RA)

Cumple las mismas funciones que el DHCP IPv4.


Direcciones IPv6 Multicast

Una dirección multicast es un idetificador para un grupo de nodos. Cuando un paquete es enviado en multicast, todos los miembros del nodo lo procesan. Se usa ICMPv6 para optimizar el tráfico multicast. A este proceso se le llama Multicast Listener Discovery (MLD).
Las direcciones multicast se identifican por empezar por FF o en binario por 1111 1111. Hay 3 tipos de direcciones multicast que se definen en la RFC 4291: 
  • Solicitude-Node: para los mensajes de Neighbor Solicitation (NS)
  • All-Nodes: para los mensajes de Router Advertisement (RA)
  • All-Routers: para los mensajes de Router Solicitation (RS)

Direcciones IPv6 Anycast

Este es un nuevo tipo de dirección en IPv6 definido en la RFC 2526. Se pueden asignar a un grupo de interfaces. Múltiples nodos pueden responder a la misma dirección anycast pero el paquete solo irá hacia uno de los nodos. Un paquete anycast irá hacia el nodo más cercano basándose en la distancia hacia ellos que determinan los protocolos de enrutamiento.
las direcciones anycast se pueden usar para varios servicios como por ejemplo cuando se quiere acceder a un grupo de servidores sin tener que configurar una lista de servidores.






No hay comentarios:

Publicar un comentario