Post on 23-Jan-2016
IPv6 & Java- 1 - Mayo 2001
ESTRATEGIAS DE TRANSICIÓN A IPv6 EN
ENTORNOS JAVA
Óscar Saavedra Villa
IPv6 & Java- 2 - Mayo 2001
Índice
Introducción.
Análisis del paquete java.net.
Diseño de los cambios.
Fase de codificación.
Pruebas.
Conclusiones.
IPv6 & Java- 3 - Mayo 2001
Índice
INTRODUCCIÓN.
Análisis del paquete java.net.
Diseño de los cambios.
Fase de codificación.
Pruebas.
Conclusiones.
IPv6 & Java- 4 - Mayo 2001
Introducción
Entorno 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”.
IPv6 & Java- 5 - Mayo 2001
Introducción
Necesidad de un nuevo protocolo IP
Entorno actual IPv4 obsoleto. Número de dispositivos conectados. Seguridad. Movilidad. Calidad de servicio. Etc.
IPv6 & Java- 6 - Mayo 2001
Introducción
Ventajas 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.
IPv6 & Java- 7 - Mayo 2001
Introducción
Mecanismos de transición
Dual IP Stack Implementation.
Embedding IPv4 Addresses Into IPv6 Addresses.
IPv6 over IPv4 Tunneling.
IPv4/IPv6 Header Transition.
IPv6 & Java- 8 - Mayo 2001
Introducción
Objetivo 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 aplicaciones comunicarse
tanto con nodos IPv4 como con nodos IPv6.
IPv6 & Java- 9 - Mayo 2001
Índice
Introducción.
ANÁLISIS DEL PAQUETE JAVA.NET.
Diseño de los cambios.
Fase de codificación.
Pruebas.
Conclusiones.
IPv6 & Java- 10 - Mayo 2001
Análisis del paquete java.net
Composició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.
IPv6 & Java- 11 - Mayo 2001
Análisis del paquete java.net
Diagrama UML
PlainDatagramSocketImpl(from net)
DatagramSocket(from net)
InetAddressImpl(from net)
Socket(from net)
InetAddress(from net)
ServerSocket(from net)
SocketImpl(from net)
SocketOptions
(from net)
MulticastSocket(from net)
DatagramSocketImpl(from net)
delega en
produce
delega en
delega en delega en delega en
SocketImplFactory(from net)
<<Interface>>
PlainSocketImpl(from net)
DatagramPacket(from net)
SocketInputStream(from net)
SocketOutputStream(from net)
IPv6 & Java- 12 - Mayo 2001
Análisis del paquete java.net
Conclusiones Delegación Sustitución.
Estructura en niveles o capas.
PROGR./DESARR.
API
NÚCLEO
JDK
IPv6 & Java- 13 - Mayo 2001
Índice
Introducción.
Análisis del paquete java.net.
DISEÑO DE LOS CAMBIOS.
Fase de codificación.
Pruebas.
Conclusiones.
IPv6 & Java- 14 - Mayo 2001
Diseño de los cambios
La interfaz JNI
Código Java
JNI
Código C
API sockets
Librerías S.O.
API
NÚCLEO
API
IPv6 & Java- 15 - Mayo 2001
Diseño de los cambios
Basic 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.
IPv6 & Java- 16 - Mayo 2001
Diseño de los cambios
Los cambios
Código Java
JNI
Código C
API sockets IPv6
Librerías S.O.
API
IPv6 & Java- 17 - Mayo 2001
Diseño de los cambios
Estrategia de realización Clases que representan las direcciones IP.
Clases encargadas del protocolo UDP.
Clases encargadas del protocolo TCP.
IPv6 & Java- 18 - Mayo 2001
Índice
Introducción.
Análisis del paquete java.net.
Diseño de los cambios.
FASE DE CODIFICACIÓN.
Pruebas.
Conclusiones.
IPv6 & Java- 19 - Mayo 2001
Fase de codificación
Algunos detalles Las direcciones IP.
El cliente SOCKS v4/v5.
El soporte para multicast.
Etc.
IPv6 & Java- 20 - Mayo 2001
Fase de codificación
Las direcciones IP Java 2 de Sun para Linux int address; JANO byte 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.
IPv6 & Java- 21 - Mayo 2001
Fase de codificación
Herramienta 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.
IPv6 & Java- 22 - Mayo 2001
Ficheros de configuración XML: build.xml
Fase de codificación
Herramienta de compilación: Ant
Proyecto
...
Objetivo 1
Objetivo 2
Tarea 1.1
...
Tarea 2.1
...
<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>
IPv6 & Java- 23 - Mayo 2001
Índice
Introducción.
Análisis del paquete java.net.
Diseño de los cambios.
Fase de codificación.
PRUEBAS.
Conclusiones.
IPv6 & Java- 24 - Mayo 2001
Pruebas
Consideraciones 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.
IPv6 & Java- 25 - Mayo 2001
Pruebas
Marco 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.
IPv6 & Java- 26 - Mayo 2001
Pruebas
Marco 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
Prueba 2
Test 1.1
...
Test 2.1
...
IPv6 & Java- 27 - Mayo 2001
Pruebas
Ciclo de ejecución
$>ant alltests$>ant alltests Compilaciónftes. Java
Compilaciónftes. Java
Creaciónfichero .jarCreación
fichero .jar
EjecuciónTest_PDSIEjecuciónTest_PDSI
Creacióncabeceras JNI
Creacióncabeceras JNI
Creaciónlibrería .soCreación
librería .soCompilaciónbatería JUnitCompilaciónbatería JUnit
Compilaciónftes. C
Compilaciónftes. C
EjecuciónTest_IA
EjecuciónTest_IA
Conversión XML HTMLConversión XML HTML $>_$>_Ejecución
Test_PSIEjecuciónTest_PSI
IPv6 & Java- 28 - Mayo 2001
Pruebas
Ciclo de ejecución
$>ant alltests$>ant alltests <javac=“src”><javac=“src”> <jar><jar>
<junit=“PDSI”><junit=“PDSI”>
<javah><javah>
<exec=“ld”><exec=“ld”><javac=“test”><javac=“test”> <exec=“gcc”><exec=“gcc”><junit=“IA”><junit=“IA”>
<junitreport><junitreport> $>_$>_<junit=“PSI”><junit=“PSI”>
IPv6 & Java- 29 - Mayo 2001
Índice
Introducción.
Análisis del paquete java.net.
Diseño de los cambios.
Fase de codificación.
Pruebas.
CONCLUSIONES.
IPv6 & Java- 30 - Mayo 2001
Conclusiones
Resumen 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.
IPv6 & Java- 31 - Mayo 2001
Conclusiones
JANO 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.
IPv6 & Java- 32 - Mayo 2001
Conclusiones
Mejoras y futuros trabajos Flow labels.
Traffic classes.
Authentication.
Hop-By-Hop options.
Destination options.
Routing header options.
IPv6 & Java- 33 - Mayo 2001
Conclusiones
Má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.
IPv6 & Java- 34 - Mayo 2001
Índice
Introducción.
Análisis del paquete java.net.
Diseño de los cambios.
Fase de codificación.
Pruebas.
Conclusiones.