Haikunet : an intent programming language for the software defined networking paradigm - Laurito, Andrés (2017)
Los lenguajes de programación orientados a intents están tomando un rol cada vez más importante en el paradigma de Software Defined Networking (SDN). A pesar de ello, la gran mayoría de estos lenguajes de programación son soluciones acopladas rígidamente a controladores SDN específicos, dificultando su reuso y portabilidad. Además, los lenguajes existentes no suelen implementar herramientas de verificación para detectar errores en los intents antes de que estos sean aplicados a la red que se pretende manipular en forma programática. En esta tesis presentamos Haikunet, un lenguaje de programación orientado a intents que implementa capacidades básicas de verificación y es agnóstico frente a controladores SDN. Esta última propiedad es lograda gracias al uso de TopoGen, una nueva herramienta genérica para traducir y generar topologías de redes desarrollada en el marco de esta tesis. TopoGen es usado para generar modelos de grafos y de simulación para la topología analizada. Sobre el modelo de grafos realizamos verificaciones de propiedades estáticas, mientras que con los modelos de simulación abrimos el camino para la verificación de propiedades dinámicas. La semántica operacional de Haikunet es presentada siguiendo el estilo de Structural Operational Semantics (SOS), esto es, un conjunto de reglas de inferencia que define de manera inductiva la relación de reducción. Estas reglas de inferencia son dadas en dos niveles: 1. En un conjunto de reglas gramaticales de grafos, que describen cómo cada operación del lenguaje afecta a la topología de la red y 2. Mediante reglas de inferencia, que describen el cómputo de un programa en Haikunet. En este trabajo presentamos distintos escenarios, en donde mostramos como Haikunet puede detectar errores en intents antes de que estos sean aplicados en la red. Todos los escenarios considerados fueron probados contra los controladores actualmente soportados por Haikunet: ONOS y OpenDayLight.