IP4JVM

Abelenda, Roger - Corrales, Ignacio

Supervisor(es): Sabiguero Yawelak, Arie

Resumen:

El presente informe contiene el detalle del desarrollo de nuestro proyecto de grado, el cual consistió en mejorar y completar un prototipo ya existente que agrega el manejo de stacks de protocolos a la máquina virtual Java. La herramienta consiste en un framework enteramente programado en lenguaje Java que implementa un stack de protocolos y al cual se le puede agregar un protocolo cualquiera programado, éste también, enteramente en Java. La comunicación con el dispositivo físico de red está implementada con el uso de JNI. Mediante la integración de este stack a una máquina virtual Java obtuvimos una plataforma capaz de interpretar y ejecutar código Java pero que a su vez prescinde de las funcionalidades de red brindadas por el sistema operativo y utiliza las implementadas por nuestro stack. Además del framework comentado anteriormente, se encuentran implementados también algunos protocolos de distintas capas que permiten una comunicación entre dos nodos a nivel de capa de aplicaciones. El protocolo de enlace de datos implementado en la herramienta es Ethernet II, IPv6 para capa de Internet y para capa de transporte se encuentran implementados tanto TCP como UDP. Sin embargo, y si bien con estos protocolos ya se obtiene una capacidad de conectividad amplia a nivel de cualquiera de las capas mencionadas, cualquier usuario de la herramienta podría agregar un protocolo a elección al framework sin mayores dificultades, siempre y cuando obtenga una implementación de dicho protocolo programada en Java. Por ejemplo, un usuario podría querer usar su propia implementación de TCP que tenga ciertos aspectos diferentes a la implementación realizada por nosotros y podría hacerlo sin mayores dificultades. Otra posibilidad en este sentido sería la de usar el framework para desarrollar en Java y probar un nuevo protocolo de cualquier capa. El proyecto consistió en varias fases como ser estudio previo, instalación del ambiente de desarrollo, análisis del prototipo existente, identificación de los cambios a realizar a dicho prototipo, ejecución de estos cambios, migrar el stack a una máquina virtual que considerásemos mejor en base a ciertos criterios, diseño y desarrollo del protocolo TCP, ejecución de una herramienta Java que utilice TCP sobre nuestro stack. Cada una de estas fases conjuntamente con el desarrollo y resultados obtenidos de las mismas se detallan más adelante en el documento.


Detalles Bibliográficos
2007
Networking en Java
JNI
Framework
Modelos de Capas de Red
Stack de Protocolos
SableBm
OpenJDK
Español
Universidad de la República
COLIBRI
http://hdl.handle.net/20.500.12008/3107
Acceso abierto
Licencia Creative Commons Atribución – No Comercial – Sin Derivadas (CC BY-NC-ND 4.0)
Resumen:
Sumario:El presente informe contiene el detalle del desarrollo de nuestro proyecto de grado, el cual consistió en mejorar y completar un prototipo ya existente que agrega el manejo de stacks de protocolos a la máquina virtual Java. La herramienta consiste en un framework enteramente programado en lenguaje Java que implementa un stack de protocolos y al cual se le puede agregar un protocolo cualquiera programado, éste también, enteramente en Java. La comunicación con el dispositivo físico de red está implementada con el uso de JNI. Mediante la integración de este stack a una máquina virtual Java obtuvimos una plataforma capaz de interpretar y ejecutar código Java pero que a su vez prescinde de las funcionalidades de red brindadas por el sistema operativo y utiliza las implementadas por nuestro stack. Además del framework comentado anteriormente, se encuentran implementados también algunos protocolos de distintas capas que permiten una comunicación entre dos nodos a nivel de capa de aplicaciones. El protocolo de enlace de datos implementado en la herramienta es Ethernet II, IPv6 para capa de Internet y para capa de transporte se encuentran implementados tanto TCP como UDP. Sin embargo, y si bien con estos protocolos ya se obtiene una capacidad de conectividad amplia a nivel de cualquiera de las capas mencionadas, cualquier usuario de la herramienta podría agregar un protocolo a elección al framework sin mayores dificultades, siempre y cuando obtenga una implementación de dicho protocolo programada en Java. Por ejemplo, un usuario podría querer usar su propia implementación de TCP que tenga ciertos aspectos diferentes a la implementación realizada por nosotros y podría hacerlo sin mayores dificultades. Otra posibilidad en este sentido sería la de usar el framework para desarrollar en Java y probar un nuevo protocolo de cualquier capa. El proyecto consistió en varias fases como ser estudio previo, instalación del ambiente de desarrollo, análisis del prototipo existente, identificación de los cambios a realizar a dicho prototipo, ejecución de estos cambios, migrar el stack a una máquina virtual que considerásemos mejor en base a ciertos criterios, diseño y desarrollo del protocolo TCP, ejecución de una herramienta Java que utilice TCP sobre nuestro stack. Cada una de estas fases conjuntamente con el desarrollo y resultados obtenidos de las mismas se detallan más adelante en el documento.