Aller au contenu

Elina Traffic Controller (Elina-TC)

Introduction

Elina-TC est un outil puissant en ligne de commande pour la dégradation et l'émulation de réseau sur Linux. Il fournit une interface conviviale aux sous-systèmes Traffic Control (tc) et NetEm (netem) intégrés au noyau Linux, vous permettant de simuler une grande variété de conditions réseau réalistes sur une interface réseau donnée.

Elina-TC excelle en tant qu'outil autonome pour les tests réseau, l'analyse de résilience des applications et la validation des performances. Il est également conçu pour être intégré avec un générateur de trafic, tel qu'Elina-TG, vous permettant de générer du trafic d'application tout en dégradant simultanément le chemin réseau. Cela vous permet de mesurer et de comprendre l'impact direct des dégradations réseau sur les performances de l'application.

Pour un démarrage rapide, veuillez vous référer au document "1st-test-guide.md", qui fournit une procédure complète.

Comment ça fonctionne

Elina-TC applique des règles de dégradation réseau au trafic ingress (téléchargement) et egress (upload) d'une interface réseau spécifiée, vous permettant de tester l'impact des conditions réseau sur votre application. Il utilise un périphérique virtuel Intermediate Functional Block (ifb) pour effectuer ces modifications.

L'outil peut être exécuté dans plusieurs modes :

  • On-the-Fly : Pour appliquer rapidement des dégradations temporaires directement depuis la ligne de commande.
  • Batch : Pour exécuter des séquences de test automatisées en parcourant des profils de dégradation prédéfinis.
  • Interactive : Pour le contrôle en temps réel des conditions réseau, idéal pour le débogage et les tests exploratoires.
  • Validate : Pour vérifier la syntaxe et l'exactitude logique des fichiers de profil avant utilisation.

Configuration

Elina-TC est une application Python et nécessite Python 3.7+ sur un système d'exploitation Linux.

  1. Prérequis : Assurez-vous d'avoir les packages système nécessaires installés. Sur Debian/Ubuntu, cela peut être fait avec :
sudo apt-get update && sudo apt-get install -y python3-pip python3-venv iproute2
  1. Télécharger et décompresser l'outil :
wget https://api.latence.ca/software/elina-tc.zip
unzip elina-tc.zip
cd elina-tc-release
cp -r src/elina_tc/pyarmor_runtime_000000/ venv/lib/python3.12/site-packages/
  1. Configurer un environnement virtuel (Recommandé) : Ceci est fortement recommandé pour isoler les dépendances d'Elina-TC.
python3 -m venv venv
source venv/bin/activate
  1. Installer Elina-TC :
    • Pour l'outil en ligne de commande principal et l'interface Web (beta) :
# Cela installe elina-tc et ses dépendances d'exécution (comme tqdm)
pip install .[ui]

Cela rendra la commande elina-tc disponible et installera les bibliothèques nécessaires pour le serveur web.

  1. Configuration des Sudoers (CRITIQUE) :

    L'interface utilisateur et certaines fonctionnalités CLI exécutent elina-tc en utilisant sudo. Pour un fonctionnement sans mot de passe, vous devez configurer votre fichier sudoers pour permettre à votre utilisateur d'exécuter la commande elina-tc sans mot de passe.

    Tout d'abord, trouvez le chemin complet de la commande :

# Assurez-vous que votre environnement virtuel est actif
which elina-tc
# Exemple de sortie : /home/user/elina-tc-project/venv/bin/elina-tc

Ensuite, ajoutez la ligne correspondante au fichier sudoers. Remplacez votre_nom_utilisateur et le chemin d'exemple par vos détails réels. Utilisez sudo visudo pour éditer /etc/sudoers en toute sécurité :

votre_nom_utilisateur ALL=(ALL) NOPASSWD: /home/user/elina-tc-project/venv/bin/elina-tc

Modes d'utilisation (Interface en ligne de commande)

Une fois installé, Elina-TC est exécuté à l'aide de la commande elina-tc. Note : Toutes les commandes qui modifient les règles réseau nécessitent des privilèges sudo.

1. Mode Validate

  • Vérifie les fichiers de profil pour les erreurs :
elina-tc --validate -f profiles/satellite/profiles_LEO_Starlink.json

2. Mode On-the-Fly

  • Applique des dégradations directement :
sudo elina-tc -i eth0 --onthefly "delay 100ms loss 1%"
  • Cela appliquera 100 ms de délai et 1 % de perte de paquets à tout le trafic passant par eth0.

3. Mode Batch

  • Exécute des séquences de test à partir de profils :
sudo elina-tc -i eth0 -f profiles/impairments/profiles_PacketLoss_Degradation.json -n 1 --show-stats

4. Mode Interactive

  • Pour le contrôle en direct et le débogage :
sudo elina-tc -i eth0 -f profiles/cellular/5g_5qi_profiles.json --interactive
  • Une fois à l'intérieur, utilisez des commandes comme list, apply "5G - 5QI-82 (V2X)", watch stats, et clear.

L'interface Web (Beta)

Elina-TC inclut également une interface utilisateur interactive complémentaire (Beta). Elle est conçue pour simplifier l'utilisation du CLI et faciliter les opérations fréquentes. Vous pouvez trouver des informations détaillées, y compris les instructions de configuration et d'utilisation, dans le fichier web_ui/README_web_ui.md.

La bibliothèque de profils prédéfinis

Elina-TC est livré avec une bibliothèque étendue de profils de dégradation conçus par des experts situés dans le répertoire profiles/. Ceux-ci sont organisés par technologie réseau pour vous aider à simuler rapidement les conditions du monde réel :

  • /cellular : Émule les conditions de réseau mobile. Comprend des profils pour la 4G LTE basés sur les identifiants de classe QoS (QCI) et la 5G basés sur les identifiants QoS 5G (5QI) et le découpage réseau (eMBB, URLLC). Parfait pour tester les applications mobiles, les appareils IoT et les cas d'utilisation de véhicules connectés (V2X).

  • /satellite : Simule les caractéristiques uniques des réseaux satellites. Comprend des profils pour les constellations en orbite terrestre basse (LEO) comme Starlink (faible latence, performances variables), l'orbite terrestre moyenne (MEO) et les satellites géostationnaires (GEO) traditionnels (latence élevée et stable). Idéal pour les applications maritimes, aérospatiales et IoT distantes.

  • /wireless : Modélise les réseaux locaux sans fil courants. Contient des profils pour diverses conditions WiFi (idéales, congestionnées), Bluetooth et réseaux IoT basse consommation, vous aidant à tester les applications dans des environnements domestiques, de bureau ou d'appareils courte portée.

  • /asymmetric : Simule des réseaux avec différentes caractéristiques de téléchargement et d'envoi. Comprend des profils pour les technologies à large bande comme le câble DOCSIS et la fibre optique jusqu'au domicile (FTTH), où les vitesses de téléchargement sont généralement beaucoup plus élevées que les vitesses d'envoi.

  • /industrial : Modélise les réseaux trouvés dans les environnements de technologie opérationnelle (OT). Comprend des profils pour les protocoles industriels tels que Profinet, EtherNet/IP et Modbus. Essentiel pour tester la résilience des systèmes d'automatisation industrielle et SCADA.

  • /impairments : Contient des profils génériques de base conçus pour tester la résilience des applications contre des problèmes spécifiques. Comprend des séquences pour une perte de paquets progressivement croissante, une latence croissante ou la simulation d'un chemin Internet congestionné. Parfait pour identifier les points de rupture des applications.

Utilisation d'Elina-TC avec un générateur de trafic

La véritable puissance d'Elina-TC est libérée lorsqu'il est utilisé pour contrôler les conditions réseau pour le trafic généré par un autre outil, tel qu'Elina-TG.

  • Sur la machine serveur (exécutant Elina-TC) : Utilisez Elina-TC pour appliquer une condition réseau spécifique (par exemple, un réseau mobile 5G instable) à l'interface réseau du serveur.
  • Sur la machine cliente (exécutant Elina-TG) : Utilisez Elina-TG pour générer une charge de travail d'application réaliste (par exemple, une simulation d'appel Zoom) dirigée vers le serveur.

Cette combinaison vous permet de mesurer précisément comment votre application se comporte dans des scénarios de dégradation réseau spécifiques, reproductibles et réalistes.

Notes importantes

  • Permissions : Presque toutes les commandes elina-tc qui modifient le réseau nécessitent des privilèges sudo.
  • Instantanés d'état : Avant de modifier une interface, Elina-TC enregistre automatiquement la configuration tc existante dans un fichier journal horodaté (elina-tc_state_*.log) dans votre répertoire actuel, fournissant une piste d'audit.
  • Nettoyage : Elina-TC est conçu pour nettoyer de manière robuste toutes ses règles et périphériques virtuels lorsqu'il se termine ou est interrompu (Ctrl+C).
  • Documentation détaillée : Pour un aperçu complet de toutes les fonctionnalités et arguments de ligne de commande, veuillez vous référer au fichier principal README.md inclus dans le package.