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.