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.