Aller au contenu

Configurations de l'QoS Agent

L'échantillonnage et d'autres options peuvent être définis dans la section environment du fichier lti_qos-agent.yml. Ci-dessous se trouve un exemple de toutes les personnalisations possibles.

Remarque : Toute modification du fichier de configuration d'un docker en cours d'exécution doit être suivie d'un redémarrage du docker en invoquant la commande suivante :

docker compose -f lti_qos-agent.yml up -d

Options d'intervalle, pour chaque protocole

    environment:

      # Intervalle entre les mesures de bande passante, en secondes -- intervalle minimum : 60
      - LTI_iperf3_session_interval=7200

      # Intervalle entre les mesures HTTP, en secondes -- intervalle minimum : .01
      - LTI_http_interval=2.0

      # Intervalle entre les mesures HTTPS, en secondes -- intervalle minimum : .01
      - LTI_https_interval=2.0

      # Intervalle entre les mesures TCP, en secondes -- intervalle minimum : .01
      - LTI_tcp_interval=2.0

      # Intervalle entre les mesures UDP, en secondes -- intervalle minimum : .01
      - LTI_udp_interval=2.0

      # Intervalle entre les mesures ICMP, en secondes -- intervalle minimum : .01
      - LTI_icmp_interval=2.0

      # Intervalle entre les sessions TWAMP, en secondes -- intervalle minimum : 1
      - LTI_twamp_session_interval=1   

      # Intervalle entre les mesures de perte de paquets, en secondes -- intervalle minimum : 1
      - LTI_packetlossudp_interval=5

Remarque : Il est possible de désactiver un protocole en définissant son taux d'échantillonnage à -1. Par exemple, spécifier LTI_iperf3_session_interval=-1 désactivera iperf.

Options spécifiques ICMP

    environment:

      # Délai d'expiration ICMP, en secondes
      - LTI_icmp_timeout=1

      # Charge utile du paquet ICMP, en octets
      # Utilisez un format entier, min : 24, par défaut : 56
      # Option équivalente Ping : -s
      - LTI_icmp_packet_payload=56

Options spécifiques iPerf3

    environment:

      # Utilisation d'UDP pour la mesure de bande passante
      # Option équivalente iperf3 : -u
      - LTI_iperf3_udp=false

      # Durée du test iperf (secondes) 
      # Option équivalente iperf3 : -t
      - LTI_iperf3_test_duration=10

      # Longueur du tampon à lire ou écrire (par défaut 128K pour TCP ou 1460 pour UDP)
      # Option équivalente iperf3 : -l
      - LTI_iperf3_buffer_length=128K

      # Débit cible en bits/sec (0 pour illimité)
      # Option équivalente iperf3 : -b
      - LTI_iperf3_bitrate=1M

      # Intervalle de temps entre les paquets pendant un test (secondes)
      # Option équivalente iperf3 : -i
      - LTI_iperf3_transmit_interval=1

      # Exécuter les mesures upload et download simultanément, par défaut false
      - LTI_iperf3_bidir=false

Profils multiples

Le runner iPerf3 prend en charge plusieurs profils de test qui s'exécutent en alternance. Pour exécuter à la fois un test TCP et un test UDP, définissez un second profil en utilisant les mêmes variables mais avec un _2 ajouté au préfixe :

    environment:
      # Premier profil : TCP par défaut
      - LTI_iperf3_session_interval=7200

      # Second profil : UDP
      - LTI_iperf3_2_session_interval=7200
      - LTI_iperf3_2_udp=true

Options spécifiques TWAMP

    environment:

      # Option de remplissage avancée
      - LTI_twamp_packet_use_zero_pad=false

      # Paquets par session -- minimum : 1
      - LTI_twamp_packet_count=15

      # Intervalle entre les paquets, en millisecondes -- intervalle minimum : 1
      - LTI_twamp_packet_interval=100

      # Taille de la charge utile, en bits -- minimum : 41, maximum : 65535
      - LTI_twamp_packet_payload=1024

      # Mode DSCP, Par défaut 0 (Best Effort)
      # Autres valeurs utiles : 
      # - 46, Expedited Forwarding (Voix)
      # - 53, Tests et mesures réseau
      - LTI_twamp_packet_dscp=0

      # Modifier le port TCP, par défaut 12862
      - LTI_twamp_control_port=12862

      # Modifier le port UDP, par défaut 12800
      - LTI_twamp_session_port=12800

      # Modifier le nombre de sessions parallèles (plage de ports UDP utilisés), par défaut 20
      - LTI_twamp_max_parallel_sessions=20

Options spécifiques Lifbe

    environment:

      # Vous pouvez consulter la liste détaillée des sous-types de réseau ci-dessous
      - LTI_lifbe_network_subtype=MOBILE_5G

      # Interface réseau ["WIFI","MOBILE","ETH", "SAT"]
      - LTI_lifbe_network_type=MOBILE

      # Intervalle entre les mesures de session, en ms
      - LTI_lifbe_session_interval_ms=3600000

      # Nombre de mesures à envoyer par session
      - LTI_lifbe_measure_number=5

      # Temps entre deux mesures, en ms
      - LTI_lifbe_measure_interval_ms=800

      # Direction de mesure ['downlink'|'uplink'|'both']
      - LTI_lifbe_measure_direction=both
LTI_lifbe_network_subtype Bande passante cible (Download) Bande passante cible (Upload)
WIFI_802_11ABG 36 Mbps 36 Mbps
WIFI_802_11AC 600 Mbps 600 Mbps
WIFI_802_11N 150 Mbps 150 Mbps
ETHERNET 24 Mbps 24 Mbps
ETHERNET_FAST 120 Mbps 120 Mbps
ETHERNET_GE 1200 Mbps 1200 Mbps
MOBILE_5G 840 Mbps 84 Mbps
MOBILE_EDGE 0.24 Mbps 0.24 Mbps
MOBILE_GPRS 0.08 Mbps 0.08 Mbps
MOBILE_HSDPA 24 Mbps 24 Mbps
MOBILE_HSPA 4.8 Mbps 4.8 Mbps
MOBILE_HSPAP 48 Mbps 48 Mbps
MOBILE_HSUPA 4.8 Mbps 4.8 Mbps
MOBILE_LTE 120 Mbps 120 Mbps
MOBILE_UMTS 0.32 Mbps 0.32 Mbps
SAT_GEO0 35 Mbps 5 Mbps
SAT_GEO1 100 Mbps 10 Mbps
SAT_GEO2 200 Mbps 15 Mbps
SAT_LEO_IRIDIUM 0.7 Mbps 0.35 Mbps
SAT_LEO_ONEWEB_10HLOW 75 Mbps 14 Mbps
SAT_LEO_ONEWEB 195 Mbps 32 Mbps
SAT_LEO_STARLINK 500 Mbps 40 Mbps
SAT_LEO_STARLINK_ENTERPRISE_GEN3 400 Mbps 40 Mbps
SAT_LEO_STARLINK_HIGH_PERF 350 Mbps 30 Mbps
SAT_LEO_STARLINK_MINI 100 Mbps 10 Mbps
SAT_LEO_STARLINK_STD 150 Mbps 20 Mbps

Options spécifiques de perte de paquets

    environment:

      # Intervalle entre les mesures de session, en secondes
      - LTI_packetlossudp_interval=5

      # Nombre de paquets par session de mesure -- minimum : 3, maximum : 200
      - LTI_packetlossudp_packet_number=50

      # Direction de mesure ['downlink'|'uplink'|'both']
      - LTI_packetlossudp_measure_direction=both

Options avancées de l'éditeur

    environment:

      # Politique des messages Kafka (voir ci-dessous) dans ["FIFO", "TIMED_BURST", "RANDOM_TIMED_BURST", "CACHE_BURST"]
      - LTI_kafka_sending_policy=FIFO

      # Nombre de messages mis en cache en mémoire. Les messages ont un système de priorité si le cache se remplit.
      - LTI_kafka_cache_size=20

      # Utilisé avec la politique "TIMED_BURST" et "RANDOM_TIMED_BURST". Délai en secondes entre les rafales de données.
      - LTI_kafka_timed_burst_s=20

      # Utilisé avec la politique "RANDOM_TIMED_BURST". Ajoute un délai aléatoire entre 0 et cette valeur à chaque rafale
      - LTI_kafka_randomness_var_s=10

      # Durée du délai d'expiration des messages Kafka en ms. Utilisé pour renvoyer les paquets non réussis.
      - LTI_kafka_messages_timeout_ms=5000

Les différentes politiques fonctionnent comme suit :

  • "FIFO" est le comportement par défaut. Il correspond à l'envoi du paquet d'information dès qu'il est produit, ou dès que le paquet est détecté comme ayant expiré. La taille du cache est d'importance secondaire, car elle n'est utilisée que lorsque plusieurs paquets sont détectés comme ayant expiré en même temps.

  • "TIMED_BURST" correspond à la mise en cache des paquets entrants et des paquets qui ont expiré, puis à leur envoi uniquement de manière périodique (avec un délai entre les envois correspondant à LTI_kafka_timed_burst_s). La taille du cache peut limiter le nombre de paquets. Si le cache est plein, la priorité est donnée aux paquets les plus récents, bien que certains paquets nécessaires au bon fonctionnement, tels que les métadonnées, soient mis de côté.

  • "RANDOM_TIMED_BURST" fonctionne comme "TIMED_BURST" mais ajoute une composante aléatoire au délai entre l'envoi de lots de messages. Ce délai supplémentaire correspond à une valeur dans la plage [ 0; LTI_kafka_randomness_var_s ] sélectionnée au hasard chaque fois qu'un lot de messages est envoyé.

  • "CACHE_BURST" est une politique pour faire le meilleur usage du système de cache. Les paquets ne seront envoyés par lots que lorsque le cache est presque plein. Comme nous attendons que le cache se remplisse, il est tout à fait possible qu'un grand nombre de paquets détectés simultanément comme ayant expiré dépassent la capacité maximale du cache. Dans ce cas, les paquets dépassant la capacité maximale seront abandonnés (à condition qu'ils ne soient pas essentiels).

Fichier de configuration complet de qos-agent

Voici à quoi ressemblerait le fichier de configuration pour le qos-agent avec tous les paramètres par défaut. Il peut être utilisé et modifié pour votre propre installation :

version: '2.4'
services:
  qos-agent:
    image: registry.latence.ca/software/qos-agent:latest
    container_name: lti_qos-agent
    network_mode: bridge
    restart: always
    cap_add:
      - NET_ADMIN
      - NET_RAW
    logging:
      driver: json-file
    extra_hosts:
      - msgbus.latence.ca:REPLACE_BY_IP_OF_ANALYZER_HOST
    environment:
      - LTI_agent_id=REPLACE_BY_DESIRED_ID
      - LTI_customer_id=REPLACE_BY_CUSTOMER_ID
      - LTI_license_key=REPLACE_BY_LICENSE_KEY
      - LTI_reflector=REPLACE_BY_IP_OF_REFLECTOR_HOST

      # Métadonnées
      - LTI_agent_name=RELACE_BY_AGENT_NAME
      - LTI_agent_hardware=REPLACE_BY_HARDWARE_NAME
      - LTI_agent_net_type=REPLACE_BY_NETWORK_TYPE
      - LTI_agent_net_name=REPLACE_BY_NETWORK_NAME
      - LTI_agent_address=REPLACE_BY_AGENT_ADDRESS
      - LTI_agent_gps_pos=REPLACE_BY_AGENT_GEOLOCATION
      - LTI_agent_details=REPLACE_BY_AGENT_DETAILS
      - LTI_agent_expected_application_latency=REPLACE_BY_EXPECTED_APPLICATION_LATENCY
      - LTI_agent_expected_stability=REPLACE_BY_EXPECTED_STABILITY
      - LTI_agent_expected_packet_loss_rate=REPLACE_BY_EXPECTED_PACKET_LOSS

      #### INTERVALLES DE PROTOCOLE ####
      - LTI_iperf3_session_interval=7200
      - LTI_traceroute_interval=300.0
      - LTI_http_interval=2.0
      - LTI_https_interval=2.0
      - LTI_tcp_interval=2.0
      - LTI_udp_interval=2.0
      - LTI_icmp_interval=2.0
      - LTI_twamp_session_interval=1   
      - LTI_packetlossudp_interval=5

      #### ICMP ####
      - LTI_icmp_timeout=1
      - LTI_icmp_packet_payload=56

      #### IPERF ####
      - LTI_iperf3_udp=false
      - LTI_iperf3_test_duration=10
      - LTI_iperf3_buffer_length=128K
      - LTI_iperf3_bitrate=1M
      - LTI_iperf3_transmit_interval=1

      #### TWAMP ####
      - LTI_twamp_packet_use_zero_pad=false
      - LTI_twamp_packet_count=15
      - LTI_twamp_packet_interval=100
      - LTI_twamp_packet_payload=1024
      - LTI_twamp_packet_dscp=0
      - LTI_twamp_control_port=12862
      - LTI_twamp_session_port=12800
      - LTI_twamp_max_parallel_sessions=20

      #### LIFBE ####
      - LTI_lifbe_network_subtype=MOBILE_5G
      - LTI_lifbe_network_type=MOBILE
      - LTI_lifbe_session_interval_ms=3600000
      - LTI_lifbe_measure_number=5
      - LTI_lifbe_measure_interval_ms=800
      - LTI_lifbe_measure_direction=both

      #### PERTE DE PAQUETS ####
      - LTI_packetlossudp_interval=5
      - LTI_packetlossudp_packet_number=50
      - LTI_packetlossudp_measure_direction=both

      #### ÉDITEUR KAFKA ####
      - LTI_kafka_sending_policy=FIFO
      - LTI_kafka_cache_size=20
      - LTI_kafka_timed_burst_s=20
      - LTI_kafka_randomness_var_s=10
      - LTI_kafka_messages_timeout_ms=5000

Configurations personnalisées de l'analyzer

L'analyzer peut être configuré en allant dans le répertoire lti_analyzer et en modifiant le fichier docker-compose.yml. Après la modification, exécutez la commande suivante pour l'appliquer.

docker compose up -d

Configuration SMTP pour les alertes

Modifiez la section grafana pour ajouter vos configurations SMTP

      - GF_SMTP_ENABLED=true

      # Remplacer par votre hôte SMTP
      - GF_SMTP_HOST=smtp.example.com

      # Remplacer par votre nom d'utilisateur SMTP
      - GF_SMTP_USER=myuser

      # Remplacer par votre mot de passe SMTP
      - GF_SMTP_PASSWORD=mysecret

Après avoir effectué cette modification et l'avoir appliquée en exécutant docker compose up -d, vous pouvez mettre à jour les adresses e-mail des destinataires dans le tableau de bord grafana en allant dans alerting > contact points et en ajoutant votre adresse e-mail aux adresses du point de contact par défaut.