Simulador OpenSimMPLS

Simulador OpenSimMPLS

Muy de tarde en tarde, siempre hay alguna ocasión en la que uno desarrolla algo pensando en que será un proyecto “discreto” y sin embargo acaba dándose cuenta de que su proyecto tiene una aceptación insospechada. A mi me ocurrió eso con el simulador OpenSimMPLS;  Inicialmente, desarrollé este el simulador en el contexto de mi proyecto final de carrera (PFC) en 2004. El PFC en sí consistía en el diseño de una series de tecnologías que permitían recuperar paquetes perdidos en una red MPLS (Multi Protocol Label Switching) de forma local, evitando la retransmisión extremo-extremo de segmentos TCP (Transmission Control Protocol)  completos y, en definitiva, permitiendo ciertos niveles de Garantía de Servicio (GoS) al tráfico de la red. Así durante meses hice reingeniería de protocolos de comunicación y diseño de algoritmos y búferes, etc. Un trabajo bastante concienzudo. El proyecto se llamó “Soporte de Garantía de Servicio (GoS) sobre MPLS mediante Técnicas Activas”. OpenSimMPLS fue un desarrollo accesorio, necesario para comprobar que las tecnologías diseñadas suponían un avance objetivo y empírico; y aunque lo desarrollé con el mayor esmero posible, no pensé que tuviese demasiado impacto más allá del contexto del proyecto. Aún así lo liberé bajo GPL 2.0+ por si a alguien podía venirle bien.

opensimmpls-retrievals

Expansión

Las ideas técnicas de mi PFC han sido utilizadas en diversas universidades y en algunas propuestas más desarrolladas en tésis de máster, tésis doctorales e incluso en proyectos de empresas privadas. Pero lo que realmente ha “triunfado” ha sido OpenSimMPLS, el simulador en sí. Como aproximadamente dos años después de finalizarlo, el número de descargas comenzó a aumentar exponencialmente. Es el tiempo que tardan las publicaciones de revistas y congresos científicos en “surtir efecto” y llegar a la comunidad científica. Comenzaron a descargarlo de todos los continentes y en unos cinco años, en 2010-2011, ya se estaba utilizando en más de 130 países. Me sorprendió este número y mucho más cuando supe que la ONU reconoce “sólo” 194 países en todo el mundo. ¡Guau! Casi un 70% de todos los países del mundo. Comenzaron a llegarme consultas desde multitud de centros de investigación, universidades y empresas que lo estaban usando, desde U.S.A. hasta Arabia Saudí o Japón. E incluso una organización de Estados Unidos nominó al proyecto como mejor proyecto para enseñanza de ingeniería.

Lo más sorprendente es que creé OpenSimMPLS para demostrar que las mejoras que yo proponía para un dominio MPLS suponían un avance real con respecto al MPLS “habitual”. Y sin darme cuenta, lo que había hecho era un simulador MPLS bastante completo. Las extensiones creadas en el contexto de mi PFC se podían utilizar o no, pero como simulador MPLS OpenSimMPLS tiene unas ventajas enormes para docencia. Y es principalmente ahí donde se estaba utilizando: en docencia de redes MPLS en universidades de todo el mundo. También en I+D, aunque esto de forma más secundaria.

opensimmpls-repo-git

Problemas para crecer

OpenSimMPLS pasó un riguroso proceso de calidad durante su desarrollo, principalmente porque iba a ser utilizado para validar resultados de I+D y por tanto debía evitarse que el simulador fuera el punto débil del proceso. Y de hecho pocos bugs se han reportado en su historia (no nos engañemos, los ha habido, pero muy pocos). La mayor parte de las consultas que desde distintos lugares han hecho a lo largo de su historia están relacionadas con:

  • Facilidad para extender las funcionalidades de los nodos MPLS. Ciertamente el simulador no estaba especialmente diseñado para ello; se desarrollo para un momento y un objetivo concreto. Pedían algo más modular, tipo plugins.
  • Documentación en inglés. Fallo gordo. Al desarrollarlo sin pensar en que iba a tener ese alcance, clases, métodos, atributos, documentación interna y externa… estaban en español. Bastante bien documentado, eso si, pero en español. Al menos el código fuente esta internacionalizado y el simulador aparece en español o inglés dependiendo de dónde se ejecute. Pero claro, extender un código que está en un idioma que no conoces, es complicado.
  • El proyecto hace uso de características que con el paso de tiempo Java ha dejado como deprecated y muchas personas comentan la posibilidad de actualizar el simulador para que haga uso de las características de los Java más modernos.
  • El proyecto estaba en SourceForge sobre un repositorio CVS (Concurrent Version System). En 2004 no era inusual, pero ya más adelante Subversion primero y Git después han suplido a CVS que casi se ha extinguido. Bien, pues desarrolladores de todos los lugares pedían el cambio de repositorio.
  • Problemas de licencias. Otros desarrolladores querían ampliar el simulador pero querían aprovechar componentes que ya tenían y con otras licencias incompatibles con la licencia GPL utilizada por OpenSimMPLS. No hubiera hecho caso a estas peticiones si no se hubieran repetido incesantemente y de forma recurrente desde multitud de lugares del mundo.
  • No existía una comunidad. Ciertamente no. No pensaba que el proyecto tendría tanta transcendencia y no me preocupé de que la hubiera hasta que me di cuenta que habría sido buena idea… pero ya era tarde.

O sea, que la mayor parte de los problemas del proyecto no han sido tanto del aumento de uso, sino del paso del tiempo. Necesitaba ser “remozado”. Y yo, que hacía más e una década que acabé el proyecto, me vi dedicando cada vez más “ratos” a la semana contestando preguntas, modificando funciones, etc. Había que cambiar algo, de raíz.

Relanzamiento del proyecto

La mayor parte de las cosas que pedían en uno y otro lugar eran más o menos sencillas. Cuestión sólo de echar ratos. Así pues puse en marcha un plan de modernización de OpenSimMPLS que le permitiera seguir siendo un proyecto fresco y actual y que facilitar su extensión a medio plazo:

  • Cambio del repositorio original CVS en SourfeForge a un nuevo repositorio Git en GitHub.
  • El cambio de licencia. En ese momento era GPL 3.0+ y me incliné por una licencia más permisiva y amigable con el software comercial. La Apache Software License 2.0 (había que revisar contribuciones y librerías de terceros para ver si era factible).
  • Actualización de la interfaz de usuario, con un nuevo look and feel más moderno.
  • La centralización de todo en GitHub, incluida la antigua web, que pasaría al Wiki de GitHub.
  • La refactorización del código fuente para cambiar el nombre de variables, métodos, clases, atributos, interfaces… al inglés.
  • La traducción/refactorización de toda la documentación interna del proyecto al inglés.
  • Identificar, en el código, los lugares donde es necesario hacer modificaciones para corregir algún aspecto o actualizar para versiones superiores de Java.
  • Creación de un canal de comunicación par dudas o para compartir conocimiento del simulador:
Web de OpenSimMPLS
Web de OpenSimMPLS

No todas las medidas están finalizadas aún. De hecho algunas aún no han empezado. Pero una gran parte sí. Especialmente aquello que más impide que el proyecto sea extendido por terceros: la traducción al inglés y la refactorización del código. Esa tarea está bastante avanzada. Al igual que el tema de los repositorios o el cambio de licencia. Con ello, espero que este proyecto viva al menos otros 10 años bien tal como está o bien como un fork que evolucione de forma paralela. Ya hay forks del proyecto en GitHub que no han podido hacer pull requests dado que yo estoy en pleno proceso de ejecución de las tareas descritas 🙁 ¡Sorry! En cualquier caso, las descargas del proyecto son más o menos constantes de unas 1.000 cada mes, ya que las releases están intactas y listas para usarse.

Pues este es el proyecto OpenSimMPLS. Si quieres contribuir, usarlo, saber más o compartir experiencias, no dudes en ponerte en contacto a través de cualquier a de los medios descritos.

Deja un comentario

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

1 × dos =