Fundamentos de IPv6 – Parte 3

ipv6

Al igual que en IPv4, en IPv6 se definen varios tipos de direcciones, en este protocolo se utiliza la dirección ::1/128 para representar la dirección de loopback (en IPv4 se utiliza la dirección (127.0.0.1/8).

Cuando se posee una dirección sin especificar, se utiliza la dirección ::/128, mientras que la ruta por defecto es asignado al prefijo ::/0.

Dentro del direccionamiento de IPv6, se especifican las siguientes categorías de direcciones:

  • Unicast
  • Multicast
  • Anycast

NOTA: cabe destacar, que ya no se utilizan las direcciones broadcast, estas fueron reemplazadas por las direcciones multicast.

Las direcciones unicast son similares en IPv6 y en IPv4, las cuales son asignados a un host o interfaz para recibir o enviar paquetes. En este “nuevo” protocolo (más de 20 años desde que se propuso en la IETF), se soportan 3 tipos principales de unicast, los que son: unique local (anteriormente conocido como site-local), global unicast y link-local.

Con respecto a las direcciones global unicast, estas son definidas en el post anterior, Fundamentos de IPv6 – Parte 2.

Una dirección unique local, a diferencia de las direcciones global unicast, representan al direccionamiento privado de IPv4. Todas las direcciones unique local empiezan con los dígitos hexadecimales FD (se reserva el prefijo FC00::/7, y el octavo bit se configura en 1), y no se encuentran registrados por alguna autoridad de numeración (como la IANA, ICANN, algún RIR o ISPs).

Para poder utilizar estas direcciones, es necesario seguir ciertas reglas para poder asignarlas:

  • Iniciar con los dígitos hexadecimales FD.
  • Seleccionar un único global ID de 40 bits.
  • Utilizar este global ID en conjunto con los primeros dígitos para crear un prefijo de 48 bits.
  • Al igual que cuando se asigna una dirección global unicast, se usan los siguientes 16 bits para crear la subred, y los próximos 64 como ID de interfaz.

unique-local

Ahora que sabemos sobre las direcciones global unicast y unique local, es momento de pasar a las direcciones link-local para finalizar con los unicast.

Las direcciones link-local son direcciones que se generan en cada host o equipo de L3 que trabaje con IPv6, las cuales son utilizadas por diversos protocolos de IPv6 y para el routing (este punto lo veremos en otro post con más detalle).

Es necesario señalar, que los paquetes con estas direcciones no son reenviados por los equipos de capa 3, por lo tanto, estos no salen del dominio L2 local.

Las direcciones link-local se autogeneran en las interfaces de los dispositivos que trabajan con IPv6 (hosts y routers), con el fin de poder solventar algún problema que pueda aparecer antes de que estos aprendan una dirección global unicast.

La IETF en la RFC 4291 ha reservado el prefijo FE80::/10 para este tipo de direcciones, y la estructura de esta dirección es:

ipv6-link-local1

Para configurar el ID de la interfaz, se pueden usar los métodos de EUI-64 o algún proceso random para su configuración (esto depende del vendor del sistema operativo).

Finalizado con las direcciones unicast de IPv6, es tiempo de hablar de las direcciones multicast designadas para este protocolo.

Los multicast tienen asignados los dígitos hexadecimales FF, y la estructura de su direccionamiento está definido, al igual que las link-local, en la RFC 4291. Estas direcciones son similares en ambas versiones del protocolo.

ipv6-multicast1

Los 4 bits siguientes al campo flags indican el scope de la red IPv6 para la que está destinado el tráfico. Los routers utilizan este campo para determinar si se puede reenviar dicho tráfico. Los restantes 112 bits de la dirección forman el ID de grupo.

Estas direcciones son utilizadas para comunicaciones de uno a varios, donde esos varios deben pertenecer a un grupo multicast.

Los valores que puede tomar scope son:

  • 0 = reserved
  • 1 = Interface-Local scope
  • 2 = Link-Local scope
  • 3 = reserved
  • 4 = Admin-Local scope
  • 5 = Site-Local scope
  • 6 = (unassigned)
  • 7 = (unassigned)
  • 8 = Organization-Local scope
  • 9 = (unassigned)
  • A = (unassigned)
  • B = (unassigned)
  • C = (unassigned)
  • D = (unassigned)
  • E = Global scope
  • F = reserved

En IPv6, por lo general se definen 2 tipos de multicast, los cuales son:

  • Assigned multicast: en estas direcciones se encuentran:
  • All Nodes multicast: se reserva la dirección FF02::1, la cual representa a la dirección broadcast en IPv4, y es utilizada para que todos los dispositivos que trabajan con IPv6 contesten a esta dirección.
  • All Routers multicast: se reserva la dirección FF02::2, la que representa a todos los routers.
  • Solicited-Node multicast: es una dirección que se configura en cada interfaz que trabaja con IPv6, y que es utilizada por el protocolo NDP en reemplazo de ARP, por lo tanto, nos ayuda a descubrir la dirección L2 de la IP por la que se pregunta. Esta dirección está definida con el prefijo FF02:0:0:0:0:1:FF::/104, y los últimos 24 bits (6 dígitos hex) corresponden a los últimos bits de la dirección unicast que se tenga configurada en la interfaz.

A continuación, se presenta una lista de algunas direcciones multicast:

Dirección Descripción
FF02::1 Todos los nodos
FF02::2 Todos los routers
FF02::5 Todos los routers OSPFv3
FF02::6 Todos los DR OSPFv3
FF02::9 Todos los routers RIPng
FF02::A Todos los routers EIGRPv6
FF02::1:2 Todos los agentes relay DHCPv6

Para finalizar con este post, hablaremos de las direcciones Anycast.

Cómo define la sección 2.6 del RFC 4291, las direcciones anycast son direcciones asignadas a más de una interfaz, con el objetivo de que cuando se envía un paquete a este tipo de dirección, se enrute a la interfaz más cercana que tenga dicha dirección (en base a la medida de distancia del protocolo de enrutamiento).

El formato de las direcciones anycast corresponden al mismo que las direcciones unicast, por lo tanto, depende de la configuración de esta para poder identificarla.