------------------------------------------------------------------------ Direccionamiento IPv6 Versión preliminar 20/03/2001 ------------------------------------------------------------------------ Luis Fernando Bustamante, lbustamante EN fluidsignal.com www.fluidsignal.com Fluid Signal S.A. ------------------------------------------------------------------------ 1. Introducción. Para poder entender como IPv6 puede solucionar problemas actuales y futuros encontrados en IPv4, hay que entender primero porque fue motivado. Además, se analizarán algunos aspectos de IPv6, en cuanto a beneficios sobre IPv4 como también sus esquemas de direccionamiento pueden servirnos para construir redes mas eficientes y escalables. 2. Historia. A principios de los 90, era claro que la Internet iba a ser un proyecto que crecería a pasos inimaginados. Mas y mas direcciones se fueron delegando a un paso alarmante, y para todos estaba muy claro sobre las futuras limitantes que se podrían presentar en cuanto a entidades que podian conectarse a la siempre creciente red de redes. Pero inicialmente el numero no era un problema, IPv4 usa un esquema de direccionamiento de 32bits, por lo tanto el numero de host posible es de 2^32, lo cual equivale a 4200 millones. El real problema se encuentra es en la asignación de direcciones, apesar de la implementación de estrategias de direccionamiento como CIDR el espacio de direcciones estaba siendo desperdiciado. Adicional a esto, habia una necesidad de extender la funcionalidad de la capa de red con caracteristicas como QoS, encriptación punto a punto, enrutamiento de origen y autenticación entre otros hicieron cada vez mas claro que un nuevo protocolo de Internet tenía que ser adoptado en un futuro cercano. Tomó muchos años para la IETF plantear una nueva versión de IP. Como la IETF produce estandares "abiertos", invitó a toda la comunidad al desarrollo para que dieran a conocer sus necesidades y espectativas de este nuevo protocolo. Una de las soluciones iniciales al problema de direccionamiento en IPv4 fue conocido como SIPP (Simple IP Plus), donde simplemente se aumentaba el tamaño de las direcciones IP a 64bits y se mejoraban ciertos aspectos de IPv4, como lo eran mejores estrategias de enrutamiento. SIPP era lo mas cercano a lo que la Internet necesitaría después de unas modificaciones. Las direcciones pasaron de 64bits a 128 y se le asignó el nombre de IPv6 (IPv5 ya habia sido asignado a otro protocolo, conocido como ST-2, que servia para soporte nativo de ATM en Internet). 3. Caracteristicas de IPv6 Los cambios en IPv6 se pueden clasificar en 6 categorías. Direcciones mas grandes. Este es el cambio mas notorio de IPv6, se cuadruplica el tamaño de 32 bits a 128 bits. El espacio de direcciones de IPv6 es tan grande que no puede ser llenado en un futuro próximo. Jerarquías de direccionamiento extendidas. IPv6 al usar un espacio de direccionamiento mas amplio, permite crear niveles adicionales de direccionamiento. Formato de encabezado flexible. IPv6 usa un formato nuevo y complemente incompatible con el anterior con encabezados opcionales en su formato estandar. Opciones mejoradas. IPv6 permite incluir en el datagrama información de control. Se incluyen facilidades que IPv4 no proveia. Se proveen extensiones del protocolo. Esto permite que la IEFT a medida que vayan saliendo nuevas especificaciones de un protocolo o hardware, se hagan los cambios necesarios para el mejor manejo de la informacion a nivel de la capa de red. Soporte para autoconfiguración. Provee capacidad a redes privadas para que se asignen ellas mismas direcciones y se comiencen a comunicar sin depender de un enrutador o configuración manual. Soporte para asignación de recursos. Al proveer abstracción de flujo y servicios diferenciados, los recursos en la red pueden ser asignados en la red de acuerdo a necesidades especificas (QoS) 4. Encabezado en IPv6. IPv6 cambia completamente el encabezado del datagrama. Como se ve en la figura posee un encabezado base de tamaño fijo, seguido por cero o mas encabezados de extension, y luego la carga util del datagrama (data) | <----- Opcional ----> | +--------+--------+-----+--------+-------------+ | Base | Ext1 | ... | ExtN | DATA ... | | Header | Header | | Header | | +--------+--------+-----+--------+-------------+ Encabezado base. Apesar que IPv6 debe acomodar mas direcciones mas grandes, un encabezado base IPv6 contiene menos información que la que posee IPv4. Algunos campos estáticos y opciones de IPv4 han sido movidos en IPv6 a los encabezados de extensión. Cambios básicos del protocolo. -Ha sido eliminado el HLEN, y la longitud de datagrama fue remplazado por la longitud de la carga útil (PAYLOAD LENGTH). -Las direcciones origen y destino han sido incrementadas en 16 octetos cada una. -La información de fragmentación paso de ser un campo estatico, a un encabezado de extensión. -El TTL fue remplazado por el campo HOP LIMIT. -SERVICE TYPE renombra como TRAFFIC CLASS, y provee funcionalidad adicional con el nuevo campo FLOW LABEL. -PROTOCOL fue remplezado por un campo que especifica el tipo del próximo encabezado. 4 8 20 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| Traffic Class | Flow Label | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload Length | Next Header | Hop Limit | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Source Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Destination Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -Version. Es un campo de 4 bits que designa que el paquete es de IPv6 (0110) Todo el software IP debe verificar este campo antes de procesar el datagrama, para ver si el formato coincide con las especificaciones y la versión esperada. -Clase de tráfico Este es un campo de 8 bits donde se puede dar especificar un identificador de diferenciación de tráfico. Actualmente varios grupos de la IETF estan trabajando en la forma que mejor se pueda usar este campo. Uno de estos es DiffServ, el cual esta clasificando el trafico mas importante asignandole mayor prioridad. Similar al los bits de precedencia de IPv4. -Etiqueta de flujo Este campo de 20 bits es usado cuando se necesita un manejo especial de un paquete. Este contiene información que los enrutadores usan para asociar ciertos datagramas con un flujo y prioridad especifica. Por ejemplo se quiere establecer una videoconferencia, por lo tanto se fija un flujo que garantice un retardo minimo entre el audio y el video. Tambien un ISP podría contratar con sus clientes un flujo de datos especifico, o distribuido de acuerdo a servicios o sitios que visita (QoS) -Longitud de la carga útil. Es un entero de 16 bits usado para designar la longitud de la carga útil del datagrama IP (información), sin el encabezado base, la cual esta dada en octetos. Esto da 2^16 posibilidades, alrededor de 64000 octetos. Teniendo la posibilidad de transmitir paquetes tan grandes, en ciertas circunstancias puede significar un gran aumento en eficiencia. Cuando los paquetes son grandes, el numero de paquetes necesarios para enviar cierta información es menor, y cuando hay menos paquetes para enrutar, entonces el enrutador tiene mas tiempo para enrutar otros paquetes, o realizar otras tareas (manejo de cache, mantenimiento de tablas, etc). Los encabezados extendidos si se incluyen en la longitud de la carga útil. -Próximo encabezado. Este campo es designado para que los enrutadores sepan si hay mas encabezados consecuentes que deben ser analizados en el datagrama. Este campo de 8 bits permite 255 posibilidades, de las cuales actualmente se tienen definidas unas cuantas. 1. Hop-by-hop Header Son las propiedades que cada nodo por el que pase un paquete debe analizar. 2. Destination Options Header I Son las opciones que el destino tiene para el manejo del paquete, este con el uso del encabezado hop by hop, puede denotar que el destino es el siguiente router. 3. Routing Header Define una lista de nodos intermedios por el cual un paquete debe pasar para llegar a su destino. 4. Fragment Header Es usado por el origen para enviar paquetes que son mas grandes que el MTU definido. Contrariamente a IPv4, IPv6 no permite fragmentar un paquete durante el transito. Para esto descubre en la ruta por medio de ICMPv6 y el Hop-by-hop header el MTU minimo de la ruta. Entonces este encabezado se usa cuando se requiere mandar un paquete mas grande que el MTU descubierto. 5. Authentication Header Permite garantizar que un paquete si pertenece al origen. 6. Encrypted Security Payload Header Ahora que se puede garantizar que un paquete pertenece al origen, se debe garantizar que la carga útil pueda ser leida solo por el host destino. El encabezado de autenticación y este proveen lo que se conoce como IPsec. 7. Destination Options Header II A diferencia del encabezado de destino I, este solo posee opciones para el destino, como las opciones de seguridad se encuentran antes, estas opciones se consideran seguras de extremo a extremo. -Limite de saltos. Cumple una funcionalidad similar al TTL en IPv4. Espeficica el numero de saltos que un paquete, a nivel de la capa de red, puede tener. Un limite de estos es de mucha importancia para que no se den ciclos infinitos cuando haya problemas de enrutamiento. Al igual que en IPv4 este campo es de 8 bits y es inicializado en 255, decrementandose en 1 cuando pasa por un enrutador. -Dirección origen. Es la dirección de la máquina que origina el paquete. -Dirección destino. A diferencia de IPv4, esta no es necesariamente la dirección del destino, puede ser una dirección intermedia al destino, de acuerdo a los encabezados extendidos que se use (NEXT HEADER) 5. Notación de direcciones. Diferente a IPv4 que usa 4 octetos separados por puntos en notacion decimal, IPv6 al tener que denotar una dirección de 128bits usa 8 campos hexadecimales, de 16 bits cada uno. El uso de hexadecimales en IPv6 nos sirve para una notoria reducción en el tamaño de la dirección, ya que cada byte se puede denotar en 2 hexadecimales Por ejemplo una dirección en IPv6 podría verse asi: 3FC2:43AB:3240:0000:85E2:0002:2900:00AC, se usan dos puntos (:) para la delimitación de campos. A veces las direcciones se pueden tornar un poco confusas por ser tan largas, pero se pueden utilizar convenciones adicionales para su reduccion. -Todos los ceros a la izquiera se pueden eliminar. -Si uno de los campos tiene solo ceros se puede obviar el campo dejandolo vacio. -Si hay varios campos vacios, se eliminan los dos puntos de tal modo que solo queden dos consecutivos. 3FFE:43AB:3240:0000:85E2:0002:2900:00AC pasaría a ser: 3FFE:43AB:3240::85E2:2:2900:AC 3FFE:FE34:32AB:0000:0000:0000:0000:0001 podría expresarse como: 3FFE:FE34:32AB::1 6. Organización jerárquica de direcciones. Cuando IPv4 surgió, solo se clasificaban las redes de tres maneras (Clase A, B, y C), y la tarea de enrutamiento era muy básica, pero era claro que esta clasificación no era la mas eficiente, y fue cuando estrategias de delegación de redes como CIDR que el concepto de clases prácticamente desapareció, permitiendo agregar redes pequeñas en superredes, y partiendolas en redes mas pequeñas. Este mecanismo mejoró notablemente la distribución del espacio IP pero a su vez trajo una consecuencia, la tarea de enrutamiento. Ya con esto las tablas de enrutamiento crecerían, y la labor de llevar un paquete a su destino podría costar recursos adicionales, que no fueron previstos cuando se tenia una clasificiacion de 3 tipos. Apesar de que se solucionó un problema, el de asignación de espacios, pero se originó otro que eran complejas tablas de enrutamiento que podría disminuir la complejidad en la red. IPv6 debido a esto, trata de establecer ciertas politicas de tal modo que se pueda administrar el nuevo espacio de direcciones con una asignación adecuada, y a su vez que la tarea de enrutamiento sea lo suficientemente eficaz para la transmisión de paquetes. Una de las ventajas que tiene IPv6 sobre CIDR es que divide la direccion en 6 campos, de tal modo que se pueda identificar la pertenencia de un host a una entidad especifica, usando varios bits iniciales para hacer mas efectiva la tarea de enrutamiento. Direccion unicast. 3 13 8 24 16 64bits +---+-------+-----+-----------+---------+--------------------------+ |FP | TLA | RES | NLA | SLA | Interface ID | | | ID | | ID | ID | | +---+-------+-----+-----------+---------+--------------------------+ FP: Format Prefix. Para una dirección unicast, IPv6 siempre tiene los mismos 3bits. Estos equivalen a 001, y son para designar que la dirección es unicast y es globalmente enrutable en Internet. Esto sirve para que los enrutadores sepan como manejar los paquetes, un paquete multicast se enruta de manera diferente a uno unicast TLA ID Top Level Aggregator Identifier. Estos 13 bits dicen a que entidad agregadora de nivel superior pertenece la dirección. Una entidad agregadora de nivel superior son los ISPs que hacen parte del backbone central de internet como Sprint o WorldCom. Estos delegaran direcciones en su dominio a los clientes que tengan. RES. Son bits reservados por ahora, y la IETF aun no ha especificado que quiere hacer con ellos. Serían utiles para que los TLA incrementen el numero posible de direcciones unicast en su espacio. NLA ID. Next Level Aggregator ID. Equivalen a organizaciones pequeñas hasta grandes proveedores regionales de acuerdo al numero al ID que reciban de su TLA, este espacio lo dividiran en partes que serán delegadas a sus clientes. SLA ID. Site Level Agregator. Define una entidad que no delega direcciones a otras entidades, en este campo encontramos los ISPs que prestan servicio de dial up o cable modem entre otros. Interface ID. Los ultimos 64bits equivalen a lo que en IPv4 se llama hostID. Son usados para distinguir un host de otro y son de caracter único 7. Bibliografía. Wegner, J.D. y Rockel, R. "IP Adressing and Subnetting with IPv6" Syngress Editors, 2000. Comer, D. "Internetworking with TCP/IP. Vol 1.", Cuarta edición. Prentice Hall, 2000. Deering, S. y Hiden, R. "Internet Protocol version 6 (IPv6)" RFC 2460, Diciembre 1998.