Saltar al contenido

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é ​

  1. 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).
  2. Define Escucha: el IP:port en el que escucha el relé. 0.0.0.0:9010 acepta tráfico de la red; 127.0.0.1:9010, solo de este equipo.
  3. Define Destino: el IP:port del destino real, o un nombre de host y un puerto como device.local:9000.
  4. Elige un preajuste o define los valores del perfil.
  5. Pulsa Iniciar relé.
  6. Apunta tu cliente al puerto del relé en lugar del destino, por ejemplo 127.0.0.1:9010 en vez de 127.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.

text
client ──► relay (0.0.0.0:9010) ──► target (127.0.0.1:9000)
client ◄── relay ◄───────────────── target

UDP ​

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 ​

ValorQué haceIntervalo
Sin conexión — no pasa nadaCada datagrama se descarta, en ambos sentidos, hasta que lo desmarques.activado / desactivado
LatenciaSe añade a cada datagrama.0–1000 ms
JitterUn retardo extra aleatorio, de 0 a este, para cada datagrama, así que los datagramas pueden llegar desordenados.0–500 ms
Pérdida de paquetesLa proporción de datagramas que nunca llegan, cada uno por su cuenta.0–100 %
Pérdida en ráfagasLa 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, datagramasCuá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ónLa proporción de datagramas entregados dos veces.0–100 %
CorrupciónLa proporción de datagramas con un bit de un byte invertido.0–100 %
ReordenaciónLa 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/sUn 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 ​

ValorQué haceIntervalo
Sin conexión — no pasa nadaNo fluye nada, en ningún sentido, y las conexiones nuevas esperan al destino, hasta que lo desmarques; entonces todo continúa.activado / desactivado
LatenciaSe añade a cada fragmento de un flujo, en ambos sentidos.0–1000 ms
JitterUn retardo extra aleatorio, de 0 a este, para cada fragmento, nunca por delante del fragmento anterior.0–500 ms
Restablecer conexiónLa proporción de fragmentos que restablecen su conexión en lugar de pasar: tanto el cliente como el destino reciben un restablecimiento.0–100 %
SemiabiertaLa 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/sUn 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.

PreajusteSobre UDPSobre TCP
LAN1 ms ±11 ms ±1
Wi-Fi saturada20 ms ±30, 1 % de pérdida, ráfagas 1 % × 3, 0,5 % duplicados, 2 % reordenados20 ms ±30
4G60 ms ±25, 0,5 % de pérdida, 0,5 % reordenados, 20 000 kbit/s60 ms ±25, 20 000 kbit/s
Satélite300 ms ±30, 1 % de pérdida, 2000 kbit/s300 ms ±30, 2000 kbit/s
Intermitente30 ms ±20, ráfagas 3 % × 1530 ms ±20, 0,2 % de los fragmentos quedan semiabiertos
Sin conexiónNo pasa nadaNo 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:

ContadorQué
RecibidosDatagramas que llegaron al relé.
ReenviadosDatagramas reenviados; uno duplicado cuenta dos veces.
DescartadosPerdidos a propósito: sin conexión, una ráfaga o pérdida.
LimitadosDescartados por el límite de ancho de banda, o porque ya iban 10 000 de camino.
DuplicadosDatagramas enviados dos veces.
CorrompidosCopias con un bit invertido.
ReordenadosCopias retenidas para que otras posteriores las adelantaran.
VolumenBytes reenviados.

Sobre TCP:

ContadorQué
ConexionesConexiones que los clientes hicieron al relé.
RecibidosFragmentos que leyó el relé, en ambos sentidos.
ReenviadosFragmentos que reenvió.
RestablecidasConexiones restablecidas.
SemiabiertasConexiones que quedaron semiabiertas.
RetenidosCuántas veces un flujo esperó por el límite de ancho de banda: el emisor se ralentizó, no se descartó nada.
VolumenBytes 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.