Saltar a contenido

Configuraciones del QoS Agent

El muestreo y otras opciones pueden definirse en la sección environment del archivo lti_qos-agent.yml. A continuación se muestra un ejemplo de todas las personalizaciones posibles.

Nota: Cualquier modificación del archivo de configuración de un docker en ejecución debe ir seguida de un reinicio del docker invocando el siguiente comando:

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

Opciones de intervalo, para cada protocolo

    environment:

      # Intervalo entre las mediciones de ancho de banda, en segundos -- intervalo mínimo: 60
      - LTI_iperf3_session_interval=7200

      # Intervalo entre las mediciones HTTP, en segundos -- intervalo mínimo: .01
      - LTI_http_interval=2.0

      # Intervalo entre las mediciones HTTPS, en segundos -- intervalo mínimo: .01
      - LTI_https_interval=2.0

      # Intervalo entre las mediciones TCP, en segundos -- intervalo mínimo: .01
      - LTI_tcp_interval=2.0

      # Intervalo entre las mediciones UDP, en segundos -- intervalo mínimo: .01
      - LTI_udp_interval=2.0

      # Intervalo entre las mediciones ICMP, en segundos -- intervalo mínimo: .01
      - LTI_icmp_interval=2.0

      # Intervalo entre las sesiones TWAMP, en segundos -- intervalo mínimo: 1
      - LTI_twamp_session_interval=1   

      # Intervalo entre las mediciones de pérdida de paquetes, en segundos -- intervalo mínimo: 1
      - LTI_packetlossudp_interval=5

Nota: Es posible desactivar un protocolo estableciendo su frecuencia de muestreo en -1. Por ejemplo, especificar LTI_iperf3_session_interval=-1 desactivará iperf.

Opciones específicas de ICMP

    environment:

      # Tiempo de espera de ICMP, en segundos
      - LTI_icmp_timeout=1

      # Carga útil del paquete ICMP, en bytes
      # Utilice un formato entero, mín.: 24, por defecto: 56
      # Opción equivalente de Ping: -s
      - LTI_icmp_packet_payload=56

Opciones específicas de iPerf3

    environment:

      # Uso de UDP para la medición del ancho de banda
      # Opción equivalente de iperf3: -u
      - LTI_iperf3_udp=false

      # Duración de la prueba iperf (segundos) 
      # Opción equivalente de iperf3: -t
      - LTI_iperf3_test_duration=10

      # Longitud del búfer de lectura o escritura (por defecto 128K para TCP o 1460 para UDP)
      # Opción equivalente de iperf3: -l
      - LTI_iperf3_buffer_length=128K

      # Tasa de bits objetivo en bits/s (0 para ilimitado)
      # Opción equivalente de iperf3: -b
      - LTI_iperf3_bitrate=1M

      # Intervalo de tiempo entre paquetes durante una prueba (segundos)
      # Opción equivalente de iperf3: -i
      - LTI_iperf3_transmit_interval=1

      # Ejecutar las mediciones de subida y de bajada simultáneamente, por defecto false
      - LTI_iperf3_bidir=false

Perfiles múltiples

El runner de iPerf3 admite varios perfiles de prueba que se ejecutan de forma alterna. Para ejecutar tanto una prueba TCP como una prueba UDP, defina un segundo perfil utilizando las mismas variables pero añadiendo _2 al prefijo:

    environment:
      # Primer perfil: TCP por defecto
      - LTI_iperf3_session_interval=7200

      # Segundo perfil: UDP
      - LTI_iperf3_2_session_interval=7200
      - LTI_iperf3_2_udp=true

Opciones específicas de TWAMP

    environment:

      # Opción de relleno avanzada
      - LTI_twamp_packet_use_zero_pad=false

      # Paquetes por sesión -- mínimo: 1
      - LTI_twamp_packet_count=15

      # Intervalo entre paquetes, en milisegundos -- intervalo mínimo: 1
      - LTI_twamp_packet_interval=100

      # Tamaño de la carga útil, en bits -- mínimo: 41, máximo: 65535
      - LTI_twamp_packet_payload=1024

      # Modo DSCP, por defecto 0 (Best Effort)
      # Otros valores útiles: 
      # - 46, Expedited Forwarding (Voz)
      # - 53, Pruebas y mediciones de red
      - LTI_twamp_packet_dscp=0

      # Modificar el puerto TCP, por defecto 12862
      - LTI_twamp_control_port=12862

      # Modificar el puerto UDP, por defecto 12800
      - LTI_twamp_session_port=12800

      # Modificar el número de sesiones paralelas (rango de puertos UDP utilizados), por defecto 20
      - LTI_twamp_max_parallel_sessions=20

Opciones específicas de Lifbe

    environment:

      # Puede consultar la lista detallada de subtipos de red más abajo
      - LTI_lifbe_network_subtype=MOBILE_5G

      # Interfaz de red ["WIFI","MOBILE","ETH", "SAT"]
      - LTI_lifbe_network_type=MOBILE

      # Intervalo entre las mediciones de sesión, en ms
      - LTI_lifbe_session_interval_ms=3600000

      # Número de mediciones que se envían por sesión
      - LTI_lifbe_measure_number=5

      # Tiempo entre dos mediciones, en ms
      - LTI_lifbe_measure_interval_ms=800

      # Dirección de la medición ['downlink'|'uplink'|'both']
      - LTI_lifbe_measure_direction=both
LTI_lifbe_network_subtype Ancho de banda objetivo (Download) Ancho de banda objetivo (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

Opciones específicas de pérdida de paquetes

    environment:

      # Intervalo entre las mediciones de sesión, en segundos
      - LTI_packetlossudp_interval=5

      # Número de paquetes por sesión de medición -- mínimo: 3, máximo: 200
      - LTI_packetlossudp_packet_number=50

      # Dirección de la medición ['downlink'|'uplink'|'both']
      - LTI_packetlossudp_measure_direction=both

Opciones avanzadas del publicador

    environment:

      # Política de mensajes Kafka (ver más abajo) en ["FIFO", "TIMED_BURST", "RANDOM_TIMED_BURST", "CACHE_BURST"]
      - LTI_kafka_sending_policy=FIFO

      # Número de mensajes almacenados en caché en memoria. Los mensajes tienen un sistema de prioridad si la caché se llena.
      - LTI_kafka_cache_size=20

      # Se utiliza con las políticas "TIMED_BURST" y "RANDOM_TIMED_BURST". Retardo en segundos entre las ráfagas de datos.
      - LTI_kafka_timed_burst_s=20

      # Se utiliza con la política "RANDOM_TIMED_BURST". Añade un retardo aleatorio entre 0 y este valor a cada ráfaga
      - LTI_kafka_randomness_var_s=10

      # Duración del tiempo de espera de los mensajes Kafka en ms. Se utiliza para reenviar los paquetes no enviados correctamente.
      - LTI_kafka_messages_timeout_ms=5000

Las distintas políticas funcionan de la siguiente manera:

  • "FIFO" es el comportamiento predeterminado. Corresponde al envío del paquete de información en cuanto se produce, o en cuanto se detecta que el paquete ha expirado. El tamaño de la caché tiene una importancia secundaria, ya que solo se utiliza cuando se detecta que varios paquetes han expirado al mismo tiempo.

  • "TIMED_BURST" corresponde al almacenamiento en caché de los paquetes entrantes y de los paquetes que han expirado, para después enviarlos únicamente de forma periódica (con un retardo entre envíos correspondiente a LTI_kafka_timed_burst_s). El tamaño de la caché puede limitar el número de paquetes. Si la caché está llena, se da prioridad a los paquetes más recientes, aunque algunos paquetes necesarios para el correcto funcionamiento, como los metadatos, se reservan.

  • "RANDOM_TIMED_BURST" funciona como "TIMED_BURST" pero añade un componente aleatorio al retardo entre el envío de lotes de mensajes. Este retardo adicional corresponde a un valor dentro del rango [ 0; LTI_kafka_randomness_var_s ] seleccionado aleatoriamente cada vez que se envía un lote de mensajes.

  • "CACHE_BURST" es una política para aprovechar al máximo el sistema de caché. Los paquetes solo se enviarán por lotes cuando la caché esté casi llena. Como esperamos a que la caché se llene, es muy posible que un gran número de paquetes detectados simultáneamente como expirados supere la capacidad máxima de la caché. En ese caso, los paquetes que superen la capacidad máxima se descartarán (siempre que no sean esenciales).

Archivo de configuración completo del qos-agent

Este es el aspecto que tendría el archivo de configuración del qos-agent con todos los parámetros predeterminados. Puede utilizarse y modificarse para su propia instalación:

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

      # Metadatos
      - 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

      #### INTERVALOS DE PROTOCOLO ####
      - 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

      #### PÉRDIDA DE PAQUETES ####
      - LTI_packetlossudp_interval=5
      - LTI_packetlossudp_packet_number=50
      - LTI_packetlossudp_measure_direction=both

      #### PUBLICADOR 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

Configuraciones personalizadas del analyzer

El analyzer puede configurarse yendo al directorio lti_analyzer y modificando el archivo docker-compose.yml. Después de la modificación, ejecute el siguiente comando para aplicarla.

docker compose up -d

Configuración SMTP para las alertas

Modifique la sección de grafana para añadir sus configuraciones SMTP

      - GF_SMTP_ENABLED=true

      # Sustituir por su host SMTP
      - GF_SMTP_HOST=smtp.example.com

      # Sustituir por su nombre de usuario SMTP
      - GF_SMTP_USER=myuser

      # Sustituir por su contraseña SMTP
      - GF_SMTP_PASSWORD=mysecret

Después de realizar esta modificación y de aplicarla ejecutando docker compose up -d, puede actualizar las direcciones de correo electrónico de los destinatarios en el panel de control de grafana yendo a alerting > contact points y añadiendo su dirección de correo electrónico a las direcciones del punto de contacto predeterminado.