“Siempre que realizo una presentación sobre virtualización de redes y seguridad recibo esta pregunta, debido a que tradicionalmente se ha requerido hardware especial para entregar desempeño en tareas como reenvío de paquetes y cifrado”, comenta Waldir Montoya, Systems Engineer para la región Norte de América Latina de VMware, La pregunta es: “¿cómo es el desempeño de las redes y seguridad basadas en software?”
Su respuesta a la pegunta arranca analizando los beneficios del modelo virtualizado de redes y seguridad:
- Capacidad de mover segmentos de red dinámicamente, incluso entre centros de datos para recuperación de aplicaciones.
- Extender segmentos de red entre centros de datos sin tener los problemas inherentes a la operación de Ethernet como lo son: Flooding para descubrir la ubicación de las direcciones MAC y Broadcast por resoluciones de ARP que identifican la dirección MAC de un host a partir de su dirección IP. (Usualmente se le atribuyen los problemas de conectividad en extensiones capa 2 a Spanning-tree, pero es importante recordar que el mismo no genera loops de conectividad, sino que los evita).
- Aprovisionar políticas de seguridad que se mantengan actualizadas sin intervención manual.
- Aprovisionar aplicaciones con sus requerimientos de conectividad y seguridad.
- Reducción de tiempos fuera de las ventanas de mantenimiento, ya que se pueden mover los componentes dinámicamente sin perder las sesiones, incluso en escenarios donde la red mantiene tablas con el estado de las mismas, por ejemplo en traslaciones de NAT o sesiones persistentes en escenarios de balanceo de carga.
- Adquisición de componentes de red bajo a petición, evitando el exceso de aprovisionamiento al momento de compra de soluciones.
- Compra de componentes unitarios para servicios de red o seguridad, ya que el modelo de alta disponibilidad es entregado por la plataforma de virtualización y no por la implementación de varios componentes del mismo tipo.
- Implementar esquemas de diagnóstico mediante generación de paquetes con características determinadas, lo que permite encontrar la ubicación exacta de inconvenientes.
- Modelos locales de inserción y encadenamiento de servicios (Service insertion y Service chaining) en cada host, en donde se estén ejecutando las aplicaciones o máquinas virtuales, sin la necesidad de reenviar el tráfico de red a un punto de control específico. Un servicio puede hacer referencia a balanceadores de carga, cortafuegos, IPSs o a cualquier elemento de red o seguridad que tradicionalmente ha tenido que estar en medio de la comunicación entre hosts, para garantizar que los mismos procesen el tráfico.

Otra de las preguntas que siguen a la primera es: ¿Qué podemos implementar en software? “Primero es necesario aclarar que las implementaciones de servicios de red y seguridad basadas en software usan el hardware para alcanzar un alto desempeño, la diferencia radica en que el hardware que se usa está basado en silicio comercial (Procesadores x86 Intel, AMD y fabricantes de otros componentes como tarjetas de red)”. Combinando arquitecturas de software y silicio comercial es posible optimizar en varios ítems. Montoya destaca:
- AES: El mecanismo de cifrado AES ha sido optimizado en hardware, ya que los procesadores standard x86 han ido evolucionando e implementando instrucciones como generación de claves, cifrado y manipulación de matrices lo que permite hacer la descarga (offload) del procesamiento al hardware.
- TCP offload: Algunos fabricantes de NICs (Network Interface Cards) o tarjetas de red, entregan la capacidad de realizar la segmentación de grandes paquetes haciendo uso de hardware, tarea que usualmente es realizada por el stack de TCP/IP del sistema operativo y que hace uso considerable de la CPU.
- Librerías de procesamiento de paquetes: DPDK y 6WIND son ejemplos y entregan la posibilidad de recibir y enviar paquetes con un número mínimo de ciclos de CPU, usualmente para aplicaciones que corren en Userland (Espacio del usuario). Un sistema operativo divide la memoria virtual en espacio de kernel y espacio de usuario con el fin de entregar seguridad, evitando que fallas de aplicaciones afecten el núcleo o kernel del sistema operativo, al igual que separación entre procesos. Un virtual appliance (máquina virtual con funciones de servicios de red o seguridad) corre en espacio del usuario, al igual que otros agentes de comunicación con el hypervisor. Esto varía particularmente en cada implementación y según las API que entrega el hypervisor. La implementación particular de un host ESXi puede verse aquí.
- Implementaciones basadas en kernel: Algunas implementaciones de funciones de red y seguridad se ejecutan directamente en espacio de kernel, lo cual indica que están altamente integradas con el hypervisor, entregando altos niveles de seguridad y desempeño.
- Arquitecturas de sistemas: Existen diferentes modelos de implementación de la tecnología para obtener escalabilidad. Un sistema puede escalar vertical u horizontalmente. Cuando hablamos de escalabilidad vertical hacemos referencia al aumento de las capacidades de hardware de un mismo elemento, esto se traduce en más CPU, memoria, discos etc. Cuando hablamos de escalabilidad horizontal, hacemos referencia a la replicación de un sistema para que el procesamiento sea distribuido por cada uno de los componentes duplicados. Poniendo el concepto de escalabilidad en perspectiva, asumamos que queremos transportar 200 personas entre dos sitios mediante un avión de tamaño tal, que puedan viajar todas las personas de una sola vez (Escalabilidad vertical), otra forma sería enviando varios aviones pequeños en un solo ciclo (Escalabilidad horizontal). Ambos esquemas de escalabilidad presentan sus ventajas y desventajas y que varían dependiendo del entorno. Escalar de forma vertical tiene sus límites y complicaciones, entre estas está la necesidad de asistencia de hardware en la medida en que aumenta el procesamiento, y la horizontal tiene complicaciones importantes, ya que implementar sistemas computacionales distribuidos posee retos como la distribución de estado, mantener consistencia, evitar la fragmentación y garantizar la disponibilidad de la información.
- Multihilo: Hoy en día los procesadores poseen varios cores (núcleos) internamente independientes, que facilitan la optimización a nivel de software mediante la creación de múltiples threads (hilos) en la aplicación, de tal forma que paralelamente se puedan ejecutar múltiples funciones en un único ciclo de reloj de CPU. Un host ESXi utiliza características de este tipo como RSS (Receive Side Scaling), lo que le permite recibir tráfico del mundo físico distribuyendo el procesamiento en múltiples COREs, sin disminuir el desempeño o tasa de recepción. Es por esto que para sacar provecho de un procesador con múltiples núcleos, es importante que la arquitectura de software pueda implementar modelos de paralelismo para obtener el uso de todos los recursos disponibles.
- Acceso directo al hardware desde el espacio de usuario: Existen tecnologías como SR-IOV y Direct Path donde las máquinas virtuales pueden acceder directamente al hardware sin pasar por la administración de las solicitudes de E/S (Entrada y Salida) que entrega el hypervisor. Cada vez tenemos un ecosistema más rico de herramientas que entregan el desempeño adecuado en soluciones de red y seguridad basadas en software, teniendo en cuenta que toda la industria se está volcando a este concepto por la cantidad de beneficios que se obtienen. En una publicación subsecuente discutiremos SDN, NFV, microsegmentación, esquemas de seguridad distribuida, aislamiento de aplicaciones y otros conceptos relacionados con estos nuevos modelos de entrega de servicios que se habilitan mediante el uso de abstracciones en software.
[youtube_sc url=”https://youtu.be/B6T4cU21dys”]









