340 likes | 509 Views
E STRATEGIAS D E T RANSICIÓN A IP v 6 E N E NTORNOS J AVA. Óscar Saavedra Villa. Índice. Introducción. Análisis del paquete java.net . Diseño de los cambios. Fase de codificación. Pruebas. Conclusiones. Índice. INTRODUCCIÓN. Análisis del paquete java.net . Diseño de los cambios.
E N D
ESTRATEGIAS DE TRANSICIÓN AIPv6EN ENTORNOS JAVA Óscar Saavedra Villa
Índice • Introducción. • Análisis del paquete java.net. • Diseño de los cambios. • Fase de codificación. • Pruebas. • Conclusiones.
Índice • INTRODUCCIÓN. • Análisis del paquete java.net. • Diseño de los cambios. • Fase de codificación. • Pruebas. • Conclusiones.
IntroducciónEntorno Actual • Sociedad de la Información (SI). • Tecnologías de la Información y las Comunicaciones (TIC). • Entorno complejo y turbulento. • “Todo el mundo, toda la información, en cualquier momento, en cualquier lugar”.
IntroducciónNecesidad de un nuevo protocolo IP • Entorno actual IPv4 obsoleto. • Número de dispositivos conectados. • Seguridad. • Movilidad. • Calidad de servicio. • Etc.
IntroducciónVentajas de IPv6 frente IPv4 • Mayor capacidad de direccionamiento. • Servicios de seguridad. • Soporte integrado de la movilidad. • Soporte para calidad de servicio (QoS). • Simplificación de cabeceras. • Otras.
IntroducciónMecanismos de transición • Dual IP Stack Implementation. • Embedding IPv4 Addresses Into IPv6 Addresses. • IPv6 over IPv4 Tunneling. • IPv4/IPv6 Header Transition.
IntroducciónObjetivo del proyecto Realizar una implementación de la pila dual de protocolos IP en Java, que permita a las aplicaciones existentes y a las nuevas aplicacionescomunicarse tanto con nodos IPv4 como con nodos IPv6.
Índice • Introducción. • ANÁLISIS DEL PAQUETE JAVA.NET. • Diseño de los cambios. • Fase de codificación. • Pruebas. • Conclusiones.
Análisis del paquete java.netComposición • Clases encargadas de los URL. • Clases encargadas de los sockets. • Clases encargadas de las direcciones IPv4. • Clases encargadas del protocolo UDP. • Clases encargadas del protocolo TCP.
Análisis del paquete java.netConclusiones • Delegación Sustitución. • Estructura en niveles o capas. PROGR./DESARR. API JDK NÚCLEO
Índice • Introducción. • Análisis del paquete java.net. • DISEÑO DE LOS CAMBIOS. • Fase de codificación. • Pruebas. • Conclusiones.
Diseño de los cambiosLa interfaz JNI API Código Java API JNI NÚCLEO Código C API sockets Librerías S.O.
Diseño de los cambiosBasic Socket Interface for IPv6 • API usado por el 90% de las aplicaciones. • Cambios especificados en el RFC 2553. • Funciones del núcleo de sockets. • Estructuras de datos para las direcciones. • Funciones de traducción de nombres a direcciones. • Funciones de conversión de direcciones.
Diseño de los cambiosLos cambios API Código Java JNI Código C API sockets IPv6 Librerías S.O.
Diseño de los cambiosEstrategia de realización • Clases que representan las direcciones IP. • Clases encargadas del protocolo UDP. • Clases encargadas del protocolo TCP.
Índice • Introducción. • Análisis del paquete java.net. • Diseño de los cambios. • FASE DE CODIFICACIÓN. • Pruebas. • Conclusiones.
Fase de codificaciónAlgunos detalles • Las direcciones IP. • El cliente SOCKS v4/v5. • El soporte para multicast. • Etc.
Fase de codificaciónLas direcciones IP • Java 2 de Sun para Linux int address; • JANObyte address[]; • Ventajas: • Válido tanto para direcciones IPv4 como direcciones IPv6. • Longitud del array distingue entre un tipo u otro de dirección. • Inconvenientes: • Aumenta la complejidad de algunas funciones.
Fase de codificaciónHerramienta de compilación: Ant • “It’s a kind of like make, without make’s wrinkles”. • Ventajas: • Escrita en Java Independiente de la plataforma. • Extensión de tareas mediante clases Java. • Utilización de XML en los ficheros de configuración. • Permite ejecutar comandos de shell.
Fase de codificaciónHerramienta de compilación: Ant • Ficheros de configuración XML: build.xml Proyecto ... <project name=”prueba” default=”compilar”> <target name=”compilar”> <mkdir dir=”build”/> <javac srcdir=”src” dstdir=”build”> <include name=”*.java”/> </javac> </target> <target name=”jar” depends=”compilar”> <mkdir dir=”lib”/> <jar jarfile=”test.jar” includes=”*.class”/> </target> </project> Objetivo 1 Tarea 1.1 ... Objetivo 2 Tarea 2.1 ...
Índice • Introducción. • Análisis del paquete java.net. • Diseño de los cambios. • Fase de codificación. • PRUEBAS. • Conclusiones.
PruebasConsideraciones iniciales • Probar es descubrir errores; cuantos más mejor. • La prueba exhaustiva es imposible. • Hay que documentar las pruebas. • Las pruebas requieren tiempo y esfuerzo.
PruebasMarco de pruebas: JUnit • Objetivo: Automatizar e integrar las pruebas en el proceso de compilación. • Solución: JUnit. • Características: • Es muy sencillo. • Se integra con Ant, mediante la tarea <junit>. • Comprueba los resultados e informa de ellos. • Está íntegramente escrito en Java.
PruebasMarco de pruebas: JUnit • Una batería de pruebas. • Cuatro pruebas: • InetAddressTest. • PlainDatagramSocketTest. • PlainSocketTest. • SocksTest. • Al menos, un test por cada método. • testGetByName(). • Etc. Batería de pruebas ... Prueba 1 Test 1.1 ... Prueba 2 Test 2.1 ...
PruebasCiclo de ejecución $>ant alltests Compilación ftes. Java Creación fichero .jar Creación cabeceras JNI Ejecución Test_IA Compilación batería JUnit Creación librería .so Compilación ftes. C Ejecución Test_PDSI Ejecución Test_PSI Conversión XML HTML $>_
PruebasCiclo de ejecución $>ant alltests <javac=“src”> <jar> <javah> <junit=“IA”> <javac=“test”> <exec=“ld”> <exec=“gcc”> <junit=“PDSI”> <junit=“PSI”> <junitreport> $>_
Índice • Introducción. • Análisis del paquete java.net. • Diseño de los cambios. • Fase de codificación. • Pruebas. • CONCLUSIONES.
ConclusionesResumen • Situación:Entorno actual IPv4 obsoleto IPv6. • Problema: Transición entre versiones. • Solución: Mecanismos de transición. • Objetivo: Implementar pila dual IPv4/IPv6 en Java. • Resultado: JANO.
ConclusionesJANO • Proceso de desarrollo sw: C.V. en cascada. • Ritmo de desarrollo: ~400 horas de trabajo. • Análisis: ~50 horas. • Diseño: ~25 horas. • Codificación: ~80 horas. • Pruebas: ~100 horas. • Redacción de la memoria: ~145 horas. • Redacción continua de la memoria.
ConclusionesMejoras y futuros trabajos • Flow labels. • Traffic classes. • Authentication. • Hop-By-Hop options. • Destination options. • Routing header options.
ConclusionesMás información • JANO: • http://sourceforge.net/projects/jano • IPv6: • http://www.ipv6.org/ • http://www.stardust.com/ipv6/ • http://playground.sun.com/ipng/ • http://www.6bone.net/ • Etc.
Índice • Introducción. • Análisis del paquete java.net. • Diseño de los cambios. • Fase de codificación. • Pruebas. • Conclusiones.