Konfiguration des QoS Agent
Abtastung und weitere Optionen können im Abschnitt environment der Datei lti_qos-agent.yml festgelegt werden. Nachfolgend ein Beispiel aller möglichen Anpassungen.
Hinweis: Nach jeder Änderung der Konfigurationsdatei eines laufenden Docker-Containers muss dieser mit dem folgenden Befehl neu gestartet werden:
docker compose -f lti_qos-agent.yml up -d
Intervalloptionen für jedes Protokoll
environment:
# Intervall zwischen Bandbreitenmessungen in Sekunden -- Mindestintervall: 60
- LTI_iperf3_session_interval=7200
# Intervall zwischen HTTP-Messungen in Sekunden -- Mindestintervall: .01
- LTI_http_interval=2.0
# Intervall zwischen HTTPS-Messungen in Sekunden -- Mindestintervall: .01
- LTI_https_interval=2.0
# Intervall zwischen TCP-Messungen in Sekunden -- Mindestintervall: .01
- LTI_tcp_interval=2.0
# Intervall zwischen UDP-Messungen in Sekunden -- Mindestintervall: .01
- LTI_udp_interval=2.0
# Intervall zwischen ICMP-Messungen in Sekunden -- Mindestintervall: .01
- LTI_icmp_interval=2.0
# Intervall zwischen TWAMP-Sitzungen in Sekunden -- Mindestintervall: 1
- LTI_twamp_session_interval=1
# Intervall zwischen Paketverlustmessungen in Sekunden -- Mindestintervall: 1
- LTI_packetlossudp_interval=5
Hinweis: Ein Protokoll lässt sich deaktivieren, indem seine Abtastrate auf -1 gesetzt wird.
Beispielsweise deaktiviert LTI_iperf3_session_interval=-1 iperf.
ICMP-spezifische Optionen
environment:
# ICMP-Zeitüberschreitung in Sekunden
- LTI_icmp_timeout=1
# Nutzlast des ICMP-Pakets in Bytes
# Ganzzahlformat verwenden, min.: 24, Standard: 56
# Entsprechende Ping-Option: -s
- LTI_icmp_packet_payload=56
iPerf3-spezifische Optionen
environment:
# UDP für die Bandbreitenmessung verwenden
# Entsprechende iperf3-Option: -u
- LTI_iperf3_udp=false
# Dauer des iperf-Tests (Sekunden)
# Entsprechende iperf3-Option: -t
- LTI_iperf3_test_duration=10
# Länge des Lese- oder Schreibpuffers (Standard 128K für TCP oder 1460 für UDP)
# Entsprechende iperf3-Option: -l
- LTI_iperf3_buffer_length=128K
# Zielbitrate in Bit/s (0 für unbegrenzt)
# Entsprechende iperf3-Option: -b
- LTI_iperf3_bitrate=1M
# Zeitintervall zwischen Paketen während eines Tests (Sekunden)
# Entsprechende iperf3-Option: -i
- LTI_iperf3_transmit_interval=1
# Upload- und Download-Messungen gleichzeitig ausführen, Standard false
- LTI_iperf3_bidir=false
Mehrere Profile
Der iPerf3-Runner unterstützt mehrere Testprofile, die abwechselnd ausgeführt werden. Um sowohl einen TCP- als auch einen UDP-Test auszuführen, definieren Sie ein zweites Profil mit denselben Variablen, wobei dem Präfix _2 angehängt wird:
environment:
# Erstes Profil: TCP standardmäßig
- LTI_iperf3_session_interval=7200
# Zweites Profil: UDP
- LTI_iperf3_2_session_interval=7200
- LTI_iperf3_2_udp=true
TWAMP-spezifische Optionen
environment:
# Erweiterte Auffülloption
- LTI_twamp_packet_use_zero_pad=false
# Pakete pro Sitzung -- Minimum: 1
- LTI_twamp_packet_count=15
# Intervall zwischen Paketen in Millisekunden -- Mindestintervall: 1
- LTI_twamp_packet_interval=100
# Größe der Nutzlast in Bit -- Minimum: 41, Maximum: 65535
- LTI_twamp_packet_payload=1024
# DSCP-Modus, Standard 0 (Best Effort)
# Weitere nützliche Werte:
# - 46, Expedited Forwarding (Sprache)
# - 53, Netzwerktests und -messungen
- LTI_twamp_packet_dscp=0
# TCP-Port ändern, Standard 12862
- LTI_twamp_control_port=12862
# UDP-Port ändern, Standard 12800
- LTI_twamp_session_port=12800
# Anzahl paralleler Sitzungen ändern (Bereich der verwendeten UDP-Ports), Standard 20
- LTI_twamp_max_parallel_sessions=20
Lifbe-spezifische Optionen
environment:
# Die detaillierte Liste der Netzuntertypen finden Sie unten
- LTI_lifbe_network_subtype=MOBILE_5G
# Netzwerkschnittstelle ["WIFI","MOBILE","ETH", "SAT"]
- LTI_lifbe_network_type=MOBILE
# Intervall zwischen Sitzungsmessungen in ms
- LTI_lifbe_session_interval_ms=3600000
# Anzahl der pro Sitzung gesendeten Messungen
- LTI_lifbe_measure_number=5
# Zeit zwischen zwei Messungen in ms
- LTI_lifbe_measure_interval_ms=800
# Messrichtung ['downlink'|'uplink'|'both']
- LTI_lifbe_measure_direction=both
| LTI_lifbe_network_subtype | Zielbandbreite (Download) | Zielbandbreite (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 |
Paketverlust-spezifische Optionen
environment:
# Intervall zwischen Sitzungsmessungen in Sekunden
- LTI_packetlossudp_interval=5
# Anzahl der Pakete pro Messsitzung -- Minimum: 3, Maximum: 200
- LTI_packetlossudp_packet_number=50
# Messrichtung ['downlink'|'uplink'|'both']
- LTI_packetlossudp_measure_direction=both
Erweiterte Optionen des Publishers
environment:
# Richtlinie für Kafka-Nachrichten (siehe unten) in ["FIFO", "TIMED_BURST", "RANDOM_TIMED_BURST", "CACHE_BURST"]
- LTI_kafka_sending_policy=FIFO
# Anzahl der im Speicher zwischengespeicherten Nachrichten. Bei vollem Cache gilt ein Prioritätssystem.
- LTI_kafka_cache_size=20
# Wird mit den Richtlinien "TIMED_BURST" und "RANDOM_TIMED_BURST" verwendet. Verzögerung in Sekunden zwischen Daten-Bursts.
- LTI_kafka_timed_burst_s=20
# Wird mit der Richtlinie "RANDOM_TIMED_BURST" verwendet. Fügt jedem Burst eine zufällige Verzögerung zwischen 0 und diesem Wert hinzu
- LTI_kafka_randomness_var_s=10
# Zeitüberschreitung für Kafka-Nachrichten in ms. Wird zum erneuten Senden nicht erfolgreicher Pakete verwendet.
- LTI_kafka_messages_timeout_ms=5000
Die verschiedenen Richtlinien funktionieren wie folgt:
-
"FIFO" ist das Standardverhalten. Das Informationspaket wird gesendet, sobald es erzeugt wird oder sobald erkannt wird, dass das Paket abgelaufen ist. Die Cache-Größe ist zweitrangig, da sie nur verwendet wird, wenn mehrere Pakete gleichzeitig als abgelaufen erkannt werden.
-
"TIMED_BURST" bedeutet, dass eingehende und abgelaufene Pakete zwischengespeichert und nur periodisch gesendet werden (mit einer Verzögerung zwischen den Sendungen gemäß LTI_kafka_timed_burst_s). Die Cache-Größe kann die Anzahl der Pakete begrenzen. Ist der Cache voll, haben die neuesten Pakete Vorrang, wobei einige für den ordnungsgemäßen Betrieb erforderliche Pakete, etwa Metadaten, zurückgehalten werden.
-
"RANDOM_TIMED_BURST" funktioniert wie "TIMED_BURST", fügt aber der Verzögerung zwischen dem Senden von Nachrichtenstapeln eine Zufallskomponente hinzu. Diese zusätzliche Verzögerung entspricht einem Wert im Bereich [ 0; LTI_kafka_randomness_var_s ], der bei jedem gesendeten Nachrichtenstapel zufällig gewählt wird.
-
"CACHE_BURST" ist eine Richtlinie, die das Cache-System optimal nutzt. Pakete werden nur dann stapelweise gesendet, wenn der Cache fast voll ist. Da wir warten, bis sich der Cache füllt, ist es durchaus möglich, dass eine große Anzahl gleichzeitig als abgelaufen erkannter Pakete die maximale Kapazität des Caches überschreitet. In diesem Fall werden die Pakete, die die maximale Kapazität überschreiten, verworfen (sofern sie nicht unverzichtbar sind).
Vollständige Konfigurationsdatei des qos-agent
So sähe die Konfigurationsdatei des qos-agent mit allen Standardparametern aus. Sie kann für Ihre eigene Installation verwendet und angepasst werden:
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
# Metadaten
- 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
#### PROTOKOLLINTERVALLE ####
- 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
#### PAKETVERLUST ####
- LTI_packetlossudp_interval=5
- LTI_packetlossudp_packet_number=50
- LTI_packetlossudp_measure_direction=both
#### KAFKA-PUBLISHER ####
- 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
Benutzerdefinierte Konfigurationen des Analyzer
Der Analyzer kann konfiguriert werden, indem Sie in das Verzeichnis lti_analyzer wechseln und die Datei docker-compose.yml bearbeiten. Führen Sie nach der Änderung den folgenden Befehl aus, um sie anzuwenden.
docker compose up -d
SMTP-Konfiguration für Warnungen
Bearbeiten Sie den Grafana-Abschnitt, um Ihre SMTP-Konfiguration hinzuzufügen
- GF_SMTP_ENABLED=true
# Durch Ihren SMTP-Host ersetzen
- GF_SMTP_HOST=smtp.example.com
# Durch Ihren SMTP-Benutzernamen ersetzen
- GF_SMTP_USER=myuser
# Durch Ihr SMTP-Passwort ersetzen
- GF_SMTP_PASSWORD=mysecret
Nachdem Sie diese Änderung vorgenommen und mit docker compose up -d angewendet haben, können Sie die E-Mail-Adressen der Empfänger im Grafana-Dashboard aktualisieren, indem Sie zu alerting > contact points gehen und Ihre E-Mail-Adresse zu den Adressen des Standard-Kontaktpunkts hinzufügen.