Google is committed to advancing racial equity for Black communities. See how.

Happy

Happy è uno strumento per l'orchestrazione leggera di topologie di rete simulate. Usalo per testare i protocolli di rete e altri programmi di esecuzione distribuita su una singola macchina di sviluppo Linux senza utilizzare l'hardware del dispositivo IoT.

Che cos'è?

Happy simula topologie di rete complesse. Su una singola macchina Linux, Happy può creare più nodi con stack di rete indipendenti l'uno dall'altro. Alcuni nodi possono essere connessi a reti Thread simulate, altri possono connettersi a reti Wi-Fi, WAN (Internet) o cellulari simulate.

Happy affronta i seguenti casi d'uso:

  • Testare i protocolli di rete e altri programmi di esecuzione distribuita su una singola macchina di sviluppo Linux senza utilizzare l'hardware
  • Esecuzione di test funzionali automatizzati su una rete
  • Esecuzione di più reti parallele simultanee sullo stesso sistema per migliorare il throughput dei test

Happy risolve questi problemi creando astrazioni della topologia di rete con un sovraccarico utente minimo. È possibile creare topologie complesse con una singola chiamata di comando della shell. Happy supporta sia l'uso interattivo che lo scripting automatizzato.

Usa i comandi della shell Happy per configurare, testare ed eseguire il debug del loro codice durante lo sviluppo. La stessa configurazione di rete e gli stessi programmi di test possono quindi essere script e utilizzati nei test automatizzati.

Iniziare

Il modo più semplice e veloce per iniziare con Happy è passare attraverso il Codelab. Guida l'utente attraverso tutti i fondamenti di Happy, tra cui:

  • Creazione ed eliminazione di una topologia
  • Nodi di rete insieme
  • Salvataggio e ripristino di topologie
  • Connessione di una topologia a Internet
  • Fondamenti di tessitura

Prova la Guida introduttiva con Happy Codelab

Vedere Configurazione e utilizzo per ulteriori informazioni sulla configurazione e l'utilizzo Felice.

Architettura

Modelli felici i seguenti:

  • Nodo - namespace rete A Linux. I processi che comprendono il nodo vengono eseguiti all'interno di uno spazio dei nomi di rete specificato.
  • Collegamento - interfaccia di rete A Linux. Felice utilizza la veth dispositivo di rete per supportare interfacce L3 (IP) e il tap dispositivo di rete per supportare L2 interfacce fuori dalla scatola.
  • Network - spazi dei nomi di rete Linux con un bridge Ethernet in esecuzione al loro interno.

Implementazione

Happy è una raccolta di moduli Python. I moduli Core Happy forniscono astrazioni per:

  • Gestire le astrazioni dei nodi
    • Aggiunta, modifica ed eliminazione di nodi
    • Esecuzione di un insieme di processi all'interno del nodo
  • Gestire i link
    • Aggiunta, modifica ed eliminazione di collegamenti
    • Assegnazione di collegamenti a un nodo e a una rete
    • Assegnazione e modifica dell'assegnazione degli indirizzi
  • Gestire le reti
    • Creazione, modifica e distruzione di reti
    • Connettività di rete
  • Gestire lo stato generale del framework in modo coeso

La maggior parte delle astrazioni implementate dai moduli Happy sono mappate in comandi che invocano strumenti di rete Linux.

Felice contiene anche una serie di plug-in si trovano in /plugins . I plug-in avvolgono un insieme di funzionalità relative a una particolare tecnologia. Ad esempio, /plugins/weave contengono aiutanti che avvolgono le varie applicazioni Weave per l'esecuzione all'interno di Felice.

Esecuzione

Gli utenti possono creare topologie simulate tramite due metodi:

  • Comandi di shell - Tutti i comandi sono in /bin .
  • Script Python: importa i moduli Happy per chiamare i comandi Happy nei tuoi script Python. I moduli sono in /happy .

Per ulteriori informazioni su come usare i moduli Happy nei propri script Python, vedi scripting Python .