[en] Network Function Virtualization (NFV) is a promising technology that proposes to move packet processing from dedicated hardware middle-boxes to software running on commodity servers. As such, NFV brings the possibility of outsourcing enterprise Network Function (NFs) processing to the cloud. However, for a Cloud Service Provider (CSP) to offer such services, several research problems still need to be addressed. When an enterprise outsources its NFs to a CSP, the CSP is responsible for deciding: (1) where initial Virtual NFs (VNFs) should be instantiated, and (2) what, when and where additional VNFs should be instantiated to satisfy the traffic changes (scaling), (3) how to update the network configurations with minimum impact on network performances, etc. This brings the requirement of a cloud management framework for VNFs and the cloud infrastructure related operations: provisioning, configuring, maintaining and scaling of the VNFs, as well as configuring and updating of the cloud network. In this thesis we explore three aspects of a cloud management framework for VNF: (1) dynamic resource allocation, (2) VNFs scaling methods and (3) dynamic load balancing. In the context of dynamic resource allocation for VNFs, we explore two resource allocation algorithms for: (1) the initial placement of VNFs, and (2) the scaling of VNFs to support traffic changes. We propose two approximation approaches (heuristic based): (1) Iterated Local Search (ILS) and (2) Genetic Programming (GP) to implement the resource allocation algorithms. We compare these heuristic based approaches with a traditional resource allocation approach: Integer Linear Programming (ILP). In the context of VNFs scaling methods, we explored three different scaling approaches: (1) vertical scaling, (2) migration and (3) horizontal. We analyse the three scaling methods in-terms of their practical implementation aspects as well as the optimization aspects with respect to the management. In the context of dynamic load balancing, we explore load balancing approaches that maintain affinity and handle states and sessions of the traffic, so that the requirement of state migration is avoided. We propose a session-aware load balancing algorithm based on consistent hashing.

[es] La virtualización de funciones de redes (NFV) es una tecnología prometedora que propone mover el procesamiento de paquetes de cajas intermedias de hardware dedicadas al procesamiento especializado de paquetes a módulos de software que se ejecuta en servidores no especializados. Como tal, NFV crea la posibilidad de externalizar de las redes empresariales el procesamiento hecho por funciones de redes (NFs) a la nube. Sin embargo, para que un Proveedor de Servicios en la Nube (CSP) ofrezca tales servicios, todavía hay que resolver varios problemas. Cuando una empresa subcontrata sus NF a un CSP, el CSP es responsable de decidir: (1) dónde deben instanciarse las NF virtuales iniciales (VNF), y (2) qué tipo, cuándo y dónde deben instanciarse VNF adicionales para satisfacer los cambios de tráfico (Escalamiento), (3) cómo actualizar las configuraciones de la red con el mínimo impacto en los rendimientos de la misma, etc. Esto requiere de un marco de gestión de la nube para VNFs y las operaciones relacionadas con la infraestructura de nube: provisiona miento, mantenimiento y escalado de les VNS. Así como la configuración y actualización de la red en la nube. En esta tesis exploramos tres aspectos de un marco de gestión de la nube para VNF: (1) asignación dinámica de recursos, (2) métodos de escalado para VNFs y (3) balanceo de carga dinámico. En el contexto de la asignación dinámica de recursos para VNFs, exploramos dos algoritmos de asignación de recursos para: (1) la ubicación inicial de VNFs, y (2) la escala de VNFs para apoyar los cambios de tráfico. Proponemos dos métodos de aproximación (basadas en heurísticas): (1) Búsqueda Local Iterada (ILS) y (2) Programación Genética (GP) para implementar los algoritmos de asignación de recursos. Comparamos estos enfoques heurísticos con en un enfoque tradicional de asignación de recursos: Programación Lineal Entera (ILP). En el contexto de los métodos de escalde VNFs, hemos explorado tres enfoques de escala diferentes: (1) escalamiento vertical, (2) la migración y (3) horizontal. Analizamos los tres métodos de escalado en términos de sus aspectos de implementación práctica, así como los aspectos de optimización con respecto a la gestión. En el contexto del balanceo de carga dinámico, exploramos enfoques de equilibrio de carga que mantienen la afinidad y manejan estados y sesiones del tráfico, de manera que se evita el la necesidad de migración del estado. Proponemos un algoritmo de equilibrio de carga que considera sesiones basado en funciones de hash consistente.