Zum Inhalt

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.