Degradación
La pantalla Degradación ejecuta un relé que se sitúa entre un cliente y el destino con el que habla, y degrada lo que pasa por él en ambos sentidos: un Wi-Fi malo, un enlace móvil, un salto por satélite, un enlace que se cae. Úsalo para ver cómo se comportan tu cliente y tu dispositivo en una red que no tienes a mano.
Apunta el cliente al relé en lugar del destino real; el relé reenvía todo al destino, y las respuestas de vuelta al cliente, después de hacer con cada datagrama o flujo lo que dice su perfil. Puedes cambiar el perfil mientras funciona, sin soltar el puerto.
Iniciar un relé
- Elige el Protocolo: UDP para datagramas (OSC, la mayor parte del tráfico de control de espectáculos y de sensores), TCP para flujos (HTTP, MQTT, un dispositivo TCP).
- Define Escucha: el
IP:porten el que escucha el relé.0.0.0.0:9010acepta tráfico de la red;127.0.0.1:9010, solo de este equipo. - Define Destino: el
IP:portdel destino real, o un nombre de host y un puerto comodevice.local:9000. - Elige un preajuste o define los valores del perfil.
- Pulsa Iniciar relé.
- Apunta tu cliente al puerto del relé en lugar del destino, por ejemplo
127.0.0.1:9010en vez de127.0.0.1:9000.
Detener relé cierra el relé; nada de lo que aún retenía sale después de eso.
Valores predeterminados: UDP, escucha en 0.0.0.0:9010, destino 127.0.0.1:9000, 40 ms de latencia, 15 ms de jitter y 2 % de pérdida.
Escucha es una dirección a la que enlazarse, siempre IP:port. Un nombre de host en Destino se resuelve una vez, cuando pulsas Iniciar relé, igual que un destino OSC; un nombre que no se encuentra se rechaza y no arranca ningún relé. Protocolo, Escucha y Destino quedan fijos mientras el relé funciona; detenlo para cambiarlos.
client ──► relay (0.0.0.0:9010) ──► target (127.0.0.1:9000)
client ◄── relay ◄───────────────── targetUDP
El relé envía cada datagrama al destino desde un puerto propio, y envía lo que responde el destino de vuelta al cliente. Cada datagrama corre su propia suerte, decidida cuando llega.
Las respuestas van al cliente que envió el datagrama más reciente: el relé atiende a un cliente a la vez.
TCP
Cada conexión que un cliente hace al relé se une a una conexión nueva del propio relé hacia el destino. Ambos flujos de cada conexión —del cliente al destino y del destino al cliente— se degradan fragmento a fragmento, a medida que el relé los lee (hasta 16 KiB a la vez). Un flujo siempre llega en orden, sea cual sea el jitter.
Cuando el destino rechaza la conexión, la conexión del cliente se restablece.
El perfil
Los valores que aplica un relé, en ambos sentidos. Un relé UDP lee los valores del datagrama, uno TCP los del flujo; los demás se ocultan.
Sobre UDP
| Valor | Qué hace | Intervalo |
|---|---|---|
| Sin conexión — no pasa nada | Cada datagrama se descarta, en ambos sentidos, hasta que lo desmarques. | activado / desactivado |
| Latencia | Se añade a cada datagrama. | 0–1000 ms |
| Jitter | Un retardo extra aleatorio, de 0 a este, para cada datagrama, así que los datagramas pueden llegar desordenados. | 0–500 ms |
| Pérdida de paquetes | La proporción de datagramas que nunca llegan, cada uno por su cuenta. | 0–100 % |
| Pérdida en ráfagas | La probabilidad de que un datagrama inicie una ráfaga de pérdidas: un enlace que se cae un momento, a diferencia de una pérdida dispersa. | 0–20 % |
| Longitud de ráfaga, datagramas | Cuántos datagramas pierde una ráfaga de media. Se muestra cuando Pérdida en ráfagas es mayor que 0; 5 cuando lo subes por primera vez. | 1–1000 |
| Duplicación | La proporción de datagramas entregados dos veces. | 0–100 % |
| Corrupción | La proporción de datagramas con un bit de un byte invertido. | 0–100 % |
| Reordenación | La proporción de datagramas retenidos —por la latencia, y al menos 20 ms— para que los que van detrás lleguen antes. | 0–100 % |
| Ancho de banda, kbit/s | Un límite de ancho de banda, en kilobits por segundo; 0 es ninguno. Los datagramas se ponen en cola para el enlace a este ritmo; uno que esperaría más de un segundo se descarta por limitación. | 0, u 8–10 000 000 |
Una ráfaga funciona así: un datagrama que no está en una ráfaga inicia una con la probabilidad Pérdida en ráfagas; todos los datagramas de una ráfaga se pierden, y cada uno la termina con una probabilidad de 1 entre Longitud de ráfaga, datagramas, así que una ráfaga dura eso de media.
Un datagrama se decide en este orden: sin conexión, ráfaga, pérdida, ancho de banda y luego duplicación, corrupción, retardo y reordenación para cada copia.
Sobre TCP
| Valor | Qué hace | Intervalo |
|---|---|---|
| Sin conexión — no pasa nada | No fluye nada, en ningún sentido, y las conexiones nuevas esperan al destino, hasta que lo desmarques; entonces todo continúa. | activado / desactivado |
| Latencia | Se añade a cada fragmento de un flujo, en ambos sentidos. | 0–1000 ms |
| Jitter | Un retardo extra aleatorio, de 0 a este, para cada fragmento, nunca por delante del fragmento anterior. | 0–500 ms |
| Restablecer conexión | La proporción de fragmentos que restablecen su conexión en lugar de pasar: tanto el cliente como el destino reciben un restablecimiento. | 0–100 % |
| Semiabierta | La proporción de fragmentos que dejan su conexión semiabierta: no pasa nada más, en ningún sentido, y a ninguno de los dos lados se le dice. El relé mantiene ambos lados abiertos, intactos, hasta que se detiene. | 0–100 % |
| Ancho de banda, kbit/s | Un límite de ancho de banda para cada flujo de cada conexión, en kilobits por segundo; 0 es ninguno. Pasado un segundo de cola, el relé deja de leer, así que el emisor se ralentiza, como en un enlace lento. No se descarta nada. | 0, u 8–10 000 000 |
La pérdida, las ráfagas, la duplicación, la corrupción y la reordenación no se aplican a TCP: un flujo TCP real retransmite lo que pierde y se pone en orden, así que lo que un cliente encuentra en un enlace malo es retardo, un emisor lento, restablecimientos y conexiones que dejan de responder.
TIP
Los deslizadores llegan hasta 1000 ms de latencia y 500 ms de jitter. El relé en sí admite hasta 60 000 ms de cada uno, por ejemplo desde un archivo de experimento.
Preajustes
Un preajuste define todos los valores con un clic. Su etiqueta permanece encendida mientras los valores siguen siendo los del preajuste; cambia cualquier valor y se apaga.
| Preajuste | Sobre UDP | Sobre TCP |
|---|---|---|
| LAN | 1 ms ±1 | 1 ms ±1 |
| Wi-Fi saturada | 20 ms ±30, 1 % de pérdida, ráfagas 1 % × 3, 0,5 % duplicados, 2 % reordenados | 20 ms ±30 |
| 4G | 60 ms ±25, 0,5 % de pérdida, 0,5 % reordenados, 20 000 kbit/s | 60 ms ±25, 20 000 kbit/s |
| Satélite | 300 ms ±30, 1 % de pérdida, 2000 kbit/s | 300 ms ±30, 2000 kbit/s |
| Intermitente | 30 ms ±20, ráfagas 3 % × 15 | 30 ms ±20, 0,2 % de los fragmentos quedan semiabiertos |
| Sin conexión | No pasa nada | No fluye nada |
Cambiarlo mientras funciona
Cambia cualquier valor, o elige otro preajuste, mientras el relé funciona: se aplica un cuarto de segundo después de tu último cambio, sin soltar el puerto ni las conexiones. La consola anota cada perfil nuevo, y la línea bajo En vivo dice qué hace ahora el relé: el nombre del preajuste, o los valores en resumen, como 60 ms ±25 · loss 2% · 20000 kbps.
Un datagrama o fragmento se decide con el perfil vigente cuando llega; uno que ya va de camino conserva su retardo.
Los contadores
En vivo muestra lo que ha hecho el relé desde que arrancó, los dos sentidos juntos, actualizado cuatro veces por segundo.
Sobre UDP:
| Contador | Qué |
|---|---|
| Recibidos | Datagramas que llegaron al relé. |
| Reenviados | Datagramas reenviados; uno duplicado cuenta dos veces. |
| Descartados | Perdidos a propósito: sin conexión, una ráfaga o pérdida. |
| Limitados | Descartados por el límite de ancho de banda, o porque ya iban 10 000 de camino. |
| Duplicados | Datagramas enviados dos veces. |
| Corrompidos | Copias con un bit invertido. |
| Reordenados | Copias retenidas para que otras posteriores las adelantaran. |
| Volumen | Bytes reenviados. |
Sobre TCP:
| Contador | Qué |
|---|---|
| Conexiones | Conexiones que los clientes hicieron al relé. |
| Recibidos | Fragmentos que leyó el relé, en ambos sentidos. |
| Reenviados | Fragmentos que reenvió. |
| Restablecidas | Conexiones restablecidas. |
| Semiabiertas | Conexiones que quedaron semiabiertas. |
| Retenidos | Cuántas veces un flujo esperó por el límite de ancho de banda: el emisor se ralentizó, no se descartó nada. |
| Volumen | Bytes reenviados. |
Con la captura activada, el Inspector muestra los datagramas y fragmentos retransmitidos —como máximo uno cada 25 ms, los dos sentidos juntos—, cada uno con su suerte: forwarded +43ms, · corrupted, · reordered, · copy 2/2, dropped (loss), dropped (burst), dropped (offline), throttled y, sobre TCP, reset y half-open. → es del cliente al destino, ← del destino al cliente.
Una trama retransmitida nombra sockets reales: local es la dirección en la que escucha el relé y Par es hacia dónde iba ese datagrama o fragmento: el destino, o el cliente al que volvió una respuesta. El tramo cierra el veredicto: forwarded +43ms · client→target, dropped (loss) · target→client. Así que un datagrama retransmitido se puede guardar con Guardar como señal y se dirige a la dirección hacia la que iba; un fragmento TCP es un trozo de un flujo y no se puede (consulta Inspector).
El mismo tráfico, la misma suerte
Cada decisión —qué datagrama se pierde, cuánto se retrasa, dónde se corrompe— se sortea a partir de la semilla del relé, por separado para cada sentido y, sobre TCP, para cada conexión. Con la misma semilla y el mismo tráfico, el relé descarta los mismos datagramas y los retrasa igual.
La pantalla Degradación toma una semilla nueva cada vez que inicias un relé. Para repetir una ejecución exactamente, usa un nodo Degradación en un experimento: sortea a partir de la semilla de la ejecución, que puedes fijar (consulta Repetir una ejecución con fallos).
En experimentos
Dos nodos meten el mismo relé en un experimento:
- Degradación abre un relé antes del primer paso y lo cierra cuando termina la ejecución, termine como termine. Sus direcciones de escucha y destino solo aceptan parámetros; el destino puede ser un nombre de host, resuelto cuando empieza la ejecución. Consulta Nodos.
- Cambiar degradación cambia un relé de la ejecución a otro perfil a partir de ese paso —limpio, con pérdidas, sin conexión, limpio otra vez— y el informe de la ejecución cuenta lo que hizo cada fase. Consulta Nodos.
En un nodo OSC o UDP, Pasar por una degradación coloca un Degradación delante y apunta el nodo al relé. Consulta Fallos.
Véase también
- Emuladores: el destino que poner detrás del relé.
- Inspector: la suerte de cada datagrama.
- UDP y TCP