En Google, luchamos por la equidad racial de la comunidad negra. Más información

Happy

Happy es una herramienta para la orquestación ligera de topologías de red simuladas. Úselo para probar protocolos de red y otros programas de ejecución distribuida en una sola máquina de desarrollo Linux sin usar hardware de dispositivo IoT.

¿Qué es?

Happy simula topologías de red complejas. En una sola máquina Linux, Happy puede crear múltiples nodos con pilas de red que son independientes entre sí. Algunos nodos pueden estar conectados a redes Thread simuladas, otros pueden conectarse a redes Wi-Fi, WAN (Internet) o celulares simuladas.

Happy aborda los siguientes casos de uso:

  • Prueba de protocolos de red y otros programas de ejecución distribuida en una sola máquina de desarrollo de Linux sin utilizar hardware
  • Realización de pruebas funcionales automatizadas en una red
  • Ejecución de varias redes paralelas simultáneas en el mismo sistema para mejorar el rendimiento de las pruebas

Happy resuelve estos problemas creando abstracciones de topología de red con una sobrecarga mínima para el usuario. Se pueden crear topologías complejas con una sola llamada de comando de shell. Happy admite tanto el uso interactivo como la creación de scripts automatizados.

Utilice los comandos de Happy shell para configurar, probar y depurar su código durante el desarrollo. La misma configuración de red y programas de prueba pueden entonces ser programados y usados ​​en pruebas automatizadas.

Empezar

La forma más rápida y sencilla de comenzar con Happy es pasar por Codelab. Guía al usuario a través de todos los fundamentos de Happy, que incluyen:

  • Crear y eliminar una topología
  • Conectando nodos juntos
  • Guardar y restaurar topologías
  • Conectar una topología a Internet
  • Tejido fundamental

Pruebe el Getting Started with Happy Codelab

Ver el programa de instalación y de uso para más información sobre cómo configurar y utilizar feliz.

Arquitectura

Happy modela lo siguiente:

  • Nodo - Un espacio de nombres Linux red. Los procesos que componen el nodo se ejecutan dentro de un espacio de nombres de red especificado.
  • Enlace - Una interfaz de red Linux. Feliz utiliza el veth dispositivo de red para apoyar L3 interfaces (IP) y el tap dispositivo de red para apoyar L2 interconecta fuera de la caja.
  • Red - espacios de nombres de red de Linux con un puente Ethernet en funcionamiento dentro de ellos.

Implementación

Happy es una colección de módulos de Python. Los módulos Core Happy proporcionan abstracciones para:

  • Administrar abstracciones de nodos
    • Agregar, modificar y eliminar nodos
    • Ejecución de un conjunto de procesos dentro del nodo
  • Gestionar enlaces
    • Agregar, modificar y eliminar enlaces
    • Asignar enlaces a un nodo y una red
    • Asignar y modificar asignaciones de direcciones
  • Gestionar redes
    • Crear, modificar y destruir redes
    • Conectividad de red
  • Gestionar el estado general del marco de forma coherente

La mayoría de las abstracciones implementadas por los módulos de Happy se asignan a comandos que invocan herramientas de red de Linux.

Feliz también contiene un conjunto de complementos que se encuentran en /plugins . Los complementos envuelven un conjunto de funciones relacionadas con una tecnología en particular. Por ejemplo, /plugins/weave contienen ayudantes que se colocan varias aplicaciones de tejido para ejecución dentro feliz.

Ejecución

Los usuarios pueden construir topologías simuladas a través de dos métodos:

  • Comandos de Shell - Todos los comandos están en /bin .
  • Secuencias de comandos de Python: importe módulos de Happy para llamar a los comandos de Happy en sus propias secuencias de comandos de Python. Los módulos están en /happy .

Para obtener más información sobre el uso de módulos felices en sus propios scripts de Python, consulte Python scripting .