IPV6 :: una pequeña introducción ::

Varios

Estos dí­as estoy liado con el tema IPV6 y voy a resumir un poco mis limitados conocimientos del tema.

Ya sabemos que los rangos de IPV4 se están agotando y RIPE, prácticamente ya no ofrece, con lo que, o reutilizamos las nuestras o no queda otra que empezar a migrar cosas a ipv6.

El camino es lento, pero las cifras de uso de ipv4 son:

– 1981: Publicación del protocolo IPV4.
– 1985: 6% de ipv4 usadas.
– 2001: 66% de ipv4 utilizadas.
– 2010: 96% en uso.

De las caracterí­sticas de IPV6 nuevas tenemos:

– Direccionamiento IP casi infinito
– Desaparece el NAT
– Eliminación de la dirección de broadcast (un gran paso)
– Se simplifica los headers, para permitir mayor eficiencia en los routers
– Soporte para movilidad y seguridad nativo.

Otros cambios importantes que tenemos, comparando con ipv4:

– IPv4 –> 32 bits de longitud, que hacen un total de 4.200.000.000 de nodos posibles.
– IPv6 –> 128 bits o 16 bytes: 4 veces los bits de ipv4 !!!!
– 3.4 x 10^38 de posibles direcciones IP’s

Cambios en el Header :
IPv4

——————————————————-

version | IHL | type of service | total Length
——————————————————-
identification | Flags | Fragment Offset
——————————————————-
Time To Live | Protocol | Header Checksum
——————————————————-
source address
——————————————————-
destination address
——————————————————-
options | padding
——————————————————-

Algunas notaciones de la cabecera:

– Version : en ipv4, el valor es 4 ;-)
– IHL : Internet header lenght, que resumiendo un poco, este campo especifica el tamaño de la cabecera.
– Type Of Service: Contiene el type of Service o el DSCP (Differentiated Services Code Point), usado para el QoS y marcar los paquetes.
– Total Lenght: Este campo de 16 bit, define el tamaño total del paquete, incluyendo la cabecera y los datos, en Bytes. El valor mí­nimo son 20 bytes y el máximo 65535.
– Identification: Como bien indica este campo, es usado principalmente para identificar de manera única los fragmentos de un un datagrama.
– Flags : un campo de 3 bits que son :
– bit 1 = 0 ; reservado y debe ser 0
– bit 2 = DF o don’t fragment
– bit 3 = MF o More fragments
– Fragment Offset
– TTL : usado para prevenir loops. El valor inicial es 255 y a medida que el paquete atraviesa routers, se va decrementando 1.
– Protocol : Especifica el tipo de protocolo que transporta, siendo:
– 17 : udp
– 6 : tcp
– 51 : esp
– 50 : AH
– 47 : Gre
– Header ckechsum : Cuando un paquete llega al router, calcula el checksum de la cabecera y compara el valor con el campo checksum …. si no coincide, el paquete es descartado.
– Source address
– Destination Address
– options

Y ahora una cabecera de IPv6 :

——————————————–
Version | Traffic Class | Flow Label
——————————————–
Payload Lenght | Next Header | Hop Limit
——————————————–
source address
——————————————–
destination address
——————————————–

A primera vista, observamos que se ha simplificado bastante el tema, facilitando la vida a los routers ( el procesador, entre otras cosas…)

– Version : 4 bits y fijo 0110 (6 en binary) ;-)
– Traffic Class : Idem que en IPv4; contiene por ejemplo el DSCP
– Flow Label (20 bits): Se puede usar para clasificar los distintos flujos… por ejemplo, en ipv4 los flujos son determinados a partir de las direcciones IP origen / destino, puertos y transporte.
– Payload Lenght (16 bits)
– Next Header (8 bits): Apunta al siguiente header (rollo puntero en C ;-) )
– Hop Limit (8 bits) : Sustituye al TTL en version ipv4… si el valor llega a 0, el paquete es descartado.
– Source address: dirección ip, esta vez pasa de 32 a 128 bit el tamaño del campo
– Destination address: idem de arriba.

Otra cosa que me llama la atención, es que, teóricamente, desaparece la fragmentación de paquetes, con lo que ganamos en eficiencia en los routers…. Para ello, IPv6 usa un proceso de MTU discovery que determina el valor óptimo que deberá tener: el source, intenta el enví­o de un paquete con el tamaño que ha especificado los protocolos de capa superior (tcp, udp..)… si el dispositivo recibe la respuesta con «packet too big», entonces :
– Retransmite el paquete mtu discover con una mtu más pequeña.
– Este proceso es repetido mientras que el dispositivo reciba «packet too big».

Ahora toca ver la representación de ip’s en IPv6:

2001:0114:abcd:0000:0000:0000:0001:0004

Y ésto se puede representar como:

2001:0114:abcd::1:4
||
—–> usado para acortar 0 y Sí“LO SE PUEDE USAR 1… si tenemos más 0, o lo usamos la primera vez o con la segunda… IMPORTANTE

la máscara, puede llegar hasta los 128 bits (equivalente en IPv4 al /32).

::/0 –> es la IP por default, mientras dura la negociación de IP, equivalente a ipv4 0.0.0.0 o unespecified address

Copiando un poco la notación de las clases de IPv4 (Clase a,b o c), tenemos con el primer grupo:

0000 | Rango reservado por EEUU (ejército ??)
1FFF | » » » »
2000 | min: usado por direcciones ip’s públicas
3FFF | max: usado por direcciones ip’s públicas
…. | resto reservadas por ahora
FC00 | Ip’s privadas dentro de un site
FE80 | Direcciones de link local
FF00 | Direcciones de multicast

Haciendo referencia a las direcciones de link local:

– No son enrutables, por lo que no salen del segmento de red.
– se generan en parte, con la mac address del dispositivo (EUI 64)
– Cada host, debe de tener una.

Las direcciones FE80, son equivalentes a las 169.254.0.0 /16 (PIPA o private ip address) y se generan en función de la mac address con las funciones de SPLIT y FLIP, que definiremos en la siguiente entrada.

Coming soon !!!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.