Open vSwitch
Open vSwitch, abreviado OVS, es un software de código abierto diseñado para ser utilizado como un switch virtual en entornos de servidores virtualizados. Es el encargado de reenviar el tráfico entre diferentes máquinas virtuales (VMs) en el mismo host físico y también reenviar el tráfico entre las máquinas virtuales y la red física. Esta bajo licencia Apache 2.0. IntroducciónOpen vSwitch es un software multicapa para switches cuyo objetivo es la implementación de una plataforma de calidad que soporte interfaces de gestión estándar y que exponga las funciones de forwarding de forma programable. Se puede decir que Open vSwitch es una de las implementaciones más populares de OpenFlow. Este software está bien adaptado para funcionar como un switch virtual en ambientes implementados con máquinas virtuales. Además de exponer interfaces estándar de control y visibilidad con la capa de red virtual, fue diseñado para soportar una distribución a través de múltiples servidores físicos. Open vSwitch soporta numerosas tecnologías de virtualización basadas en Linux:
También se ha integrado en muchos sistemas de gestión virtuales como OpenStack, OpenQRM, OpenNebula y oVirt. Open vSwitch permite más capacidades que los módulos regulares de kernel Linux, aun cuando la ruta de datos está dentro del propio kernel Linux, lo que lo hace ideal para la construcción de esquemas de redes virtuales para nubes o para investigación de nuevos protocolos de red. La mayor parte del código está escrito sobre una plataforma independiente en C y es fácilmente portable a otros entornos. CaracterísticasLa versión actual de Open vSwitch es compatible con las siguientes características:
DescripciónOpen vSwitch dispone de un diseño de mayor complejidad que los "bridges", siendo este compuesto por varios componentes. Mientras que los bridges solo se ejecutan en el espacio del kernel del Host, el Open vSwitch, al necesitar un código más complejo que los bridges para poder proporcionar todas las funcionalidades avanzadas, aparte de hacer uso del espacio del kernel, también se ejecuta en el user space, y así puede tomar la decisión de cómo procesar los “nuevos” paquetes. Sabemos que el kernel space y el user space son dos separaciones lógicas de la memoria que tienen los Sistemas Operativos, y así poder proteger al sistema de fallos o ataques. En el espacio del kernel se ejecutarían los módulos y los drivers del sistema, mientras que en el espacio de usuarios se encontraría la mayoría del Software. Cuando nos referimos a un paquete "nuevo" queremos decir que es un tipo de paquete perteneciente a un flujo del cual no se ha realizado todavía ninguna decisión de forwarding, y por tanto dicha decisión no puede encontrarse en la caché. Cuando un paquete de un nuevo flujo llega al Open vSwitch, este realizará una decisión bajo el "user space", pero los sucesivos paquetes de ese flujo serán encaminados directamente por el "kernel space", así es mucho más rápido y por lo tanto mayor rendimiento. ComponentesLos principales componentes son:
Este proceso es el Core del Open vSwitch, y se ha de comunicar con los otros dos componentes. El proceso ovs-vswitchd debe comunicarse con el ovsdb-server para poder guardar y aplicar las configuraciones almacenadas en la base de datos albergada por el servidor ovsdb-server. Esta comunicación se realiza mediante sockets Unix con el protocolo OVSDB. El módulo del kernel openvswitch_mod.ko también debe ser contactado por el demonio ovs-vswitchd para poder tomar decisiones sobre los nuevos flujos que proporciona el kernel. Para ello utiliza el protocolo netlink el cual permite comunicar el espacio del kernel con el del usuario.
Por ejemplo, algunas de las tablas que existen en esa base de datos, las cuales contienen la configuración de sus elementos correspondientes son:
Esta base de datos puede ser modificada desde elementos externos utilizando el protocolo Open vSwitch Database Management Protocol (OVSDB).
HerramientasAlgunas herramientas que proporciona Open vSwitch:
Open vSwitch puede ser portado a diferentes plataformas de hardware y diferentes sistemas operativos. Además se ejecuta en servidores físicos y soporta la administración remota de una manera que hace que así sea más fácil para los desarrolladores de las plataformas de virtualización. La configuración del Open vSwitch es controlada por un esquema de base de datos organizada en varias tablas, todo realizado en el espacio de usuario (el módulo del kernel se utiliza estrictamente para la transmisión). Esta base de datos es persistente en los reinicios, y está basado en JSON. Protocolos gestión externaOpen vSwitch proporciona dos protocolos de gestión externa que están diseñados especialmente para la gestión remota de redes virtualizadas, necesitando el uso de un controlador que centralice la gestión de flujos:
Permite consultar y modificar las tablas de flujos del proceso ovs-vswitchd, haciendo posible que el Software residente en el controller tome decisiones atendiendo a una serie de variables, y "reprograme" dinámicamente el comportamiento del Open vSwitch con este protocolo, para que los paquetes sean reenviados en consecuencia a uno u otro puerto. Por otro lado, el protocolo Openflow permite modificar la tabla de flujos, pero de lo que no es capaz es de cambiar la configuración de un dispositivo, por ejemplo deshabilitando una interfaz, por lo que para todas las gestiones que no estén directamente relacionadas con la modificación de las tablas de flujos se utilizará el protocolo OVSDB.
El protocolo OVSDB management protocol, como se ha visto, permite consultar y modificar la configuración del Open vSwitch, permitiendo un medio de reprogramar las variables de la base de datos interna, realizando de esta manera tareas como por ejemplo:
Los siguientes son los diferentes métodos de jsonRPC especificados por el protocolo. List_dbs: List databases Get_schema: Get schema Transact: operations on database Cancel: cancel transact request Monitor: monitor certain table columns Update: sent by server to client for tables that are monitored Monitor_cancel: cancelling monitor request Lock, steal, unlock: locking, unlocking operations on database Echo: to check liveliness Además el método Transact puede hacer distintas operaciones de base de datos como seleccionar, insertar, eliminar, actualizar, etc. Ventajas del OVSSabemos que Open vSwitch es un sustituto de los “bridges” a la hora de dar conectividad a las máquinas virtuales. Además su funcionamiento, que puede ser a través de un “controller” o “standlone” tiene ciertas ventajas. Las ventajas de este sustituto de los bridges a la hora de dar conectividad a las máquinas virtuales son varias. Algunas de ellas se pueden encontrar en ambos métodos de funcionamiento (standalone y con Controller), mientras que otras son exclusivas de la utilización de flujos programados regidos por Controller. Incorporan funcionalidades de red similares a los switches Hardware El Open vSwitch, aparte de las funcionalidades L2 y L3, VLAN etiquetadas (por puerto) y agregar enlaces, también administra funcionalidades propias de un switch Hardware configurable, que son las que características compatibles que definíamos anteriormente como pueden ser SPAN/RSPAN, Netflow/sFlow, QoS, Túneles GRE, etc. Las configuraciones de VLANs y agregados se realizan directamente sobre el Open vSwitch, no sobre terceros elementos como pueden ser “bondings”, un bridge por VLAN, etc. Por lo que se asemejan de este modo a los switches Hardware.
Compatibilidad con Software basado en bridges Cuando Open vSwitch necesitase ser compatible con software´s que están basados en bridges, se tendría que configurar el Open vSwitch de manera que imitara el comportamiento de un “bridge” frente a las VLANs. Así que, tendríamos un “bridge” (puente) por cada VLAN, en lugar de tener un Open vSwitch, en el que cada puerto tiene una configuración propia como si fuese un switch tradicional. Offloading de procesamiento de paquetes a Hardware Una ventaja añadida de Open vSwitch es que está diseñado para poder realizar el procesamiento en Hardware, es decir, que puede realizar un offloading del procesamiento de paquetes a las NICs de los Host KVMs en los que residen, en lugar de hacerlo por Software, con lo que así se mejora del rendimiento. Casos prácticosA continuación describiremos usos comunes de Open vSwitch en entornos virtuales: Gestión centralizada: Los interfaces para la configuración centralizada y las notificaciones asíncronas pueden ser utilizadas para crear un único switch lógico sobre varios Open vSwitches ejecutándose en servidores físicos diferentes. Básicamente, un proceso de gestión global abstrae una vista lógica de los switches y su configuración y permite a los administradores operar con esa vista lógica en lugar de con switches individuales. Es responsabilidad de este proceso de gestión el asegurar que cualquier estado de configuración de los switches individuales acoplados a las entidades lógicas se mantenga estable, como la unión, salida, y migración de VMs. Redes privadas virtuales: Un creciente segmento de la virtualización es el "cloud hosting" en el cual, un host ajeno (third part host) alberga máquina virtual de múltiples clientes (inquilinos) . Idealmente, para utilizar mejor el hardware, estos ambientes debe co - localizar los inquilinos en la misma infraestructura física y proporcionar fuertes garantías de aislamiento al mismo tiempo. De la misma manera que un grupo de máquinas físicas pueden estar conectados entre sí a través de una red dedicada, en un entorno virtualizado una colección de máquinas virtuales puede estar conectados entre sí a través de una red privada virtual implementada en la parte superior de una infraestructura de red física compartida. Si todas las máquinas virtuales de un solo arrendatario están en el mismo host físico, o si están en hosts separados donde cada uno dedica una NIC para conectarse a un switch físico aislado, el apoyo a estas redes privadas virtuales es simple. Sin embargo, cuando las máquinas virtuales que comparten una red privada se distribuyen en varios hosts y / o múltiple switches físicos, la capa de red de virtualización debe soportar la creación dinámica de superposición. Open vSwitch soporta túneles de tipo GRE y VLAN. Mobility between IP subnets: Una limitación bien sabida por las plataformas de virtualización comerciales de hoy en día es que la migración debe ocurrir dentro de una misma subred IP. Esto se debe a la imposibilidad de mantener sesiones de transporte TCP si se cambia la dirección del host destino. La migración entre subredes es deseable por varias razones. Por ejemplo si una red tiene problemas de escalamiento en cuanto al número de hosts, Hay diversas formas de conseguir esto con Open vSwitch un proceso de gestión global. La más directa es unir un modelo similar a Mobile IP en el que un Open vSwitch base recibe todos los paquetes dirigidos a una máquina virtual y luego reenvía los paquetes a la verdadera dirección del host usando tunelado. El proceso de gestión global debe manejar reglas de tunelado consistentes en la localización de las máquinas virtuales dentro de la red.
Véase también
Referencias
Enlaces externos
|