Aller au contenu

Dégradation ​

L’écran Dégradation exécute un relais qui se place entre un client et la cible à laquelle il parle, et dégrade ce qui le traverse dans les deux sens : un mauvais Wi-Fi, une liaison mobile, un saut satellite, une liaison qui décroche. Utilisez-le pour voir comment votre client et votre appareil se comportent sur un réseau que vous n’avez pas sous la main.

Vous pointez le client vers le relais au lieu de la vraie cible ; le relais transmet tout à la cible, et les réponses au client, après avoir fait à chaque datagramme ou flux ce que dit son profil. Vous pouvez modifier le profil pendant qu’il tourne, sans abandonner le port.

Démarrer un relais ​

  1. Choisissez le Protocole : UDP pour les datagrammes (OSC, la plupart du trafic de contrôle de spectacle et de capteurs), TCP pour les flux (HTTP, MQTT, un appareil TCP).
  2. Réglez Écoute : l’IP:port sur lequel le relais écoute. 0.0.0.0:9010 reçoit le trafic du réseau ; 127.0.0.1:9010 seulement de cet ordinateur.
  3. Réglez Cible : l’IP:port de la vraie destination, ou un nom d’hôte et un port comme device.local:9000.
  4. Choisissez un préréglage ou réglez les valeurs du profil.
  5. Appuyez sur Démarrer le relais.
  6. Pointez votre client sur le port du relais au lieu de la cible — par exemple 127.0.0.1:9010 au lieu de 127.0.0.1:9000.

Arrêter le relais ferme le relais ; rien de ce qu’il retenait encore ne part après cela.

Valeurs par défaut : UDP, écoute sur 0.0.0.0:9010, cible 127.0.0.1:9000, 40 ms de latence, 15 ms de gigue et 2 % de perte.

Écoute est une adresse à lier, toujours IP:port. Un nom d’hôte dans Cible est résolu une fois, quand vous appuyez sur Démarrer le relais, comme une cible OSC ; un nom introuvable est refusé et aucun relais ne démarre. Protocole, Écoute et Cible sont fixés tant que le relais tourne ; arrêtez-le pour les modifier.

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

UDP ​

Le relais envoie chaque datagramme à la cible depuis un port qui lui est propre, et renvoie au client ce que la cible répond. Chaque datagramme connaît son propre sort, décidé à son arrivée.

Les réponses vont au client qui a envoyé le datagramme le plus récent : le relais sert un client à la fois.

TCP ​

Chaque connexion qu’un client ouvre vers le relais est jointe à une nouvelle connexion propre au relais vers la cible. Les deux flux de chaque connexion — client vers cible et cible vers client — sont dégradés bloc par bloc, au fur et à mesure que le relais les lit (jusqu’à 16 Kio à la fois). Un flux arrive toujours dans l’ordre, quelle que soit la gigue.

Quand la cible refuse la connexion, la connexion du client est réinitialisée.

Le profil ​

Les valeurs qu’un relais applique, dans les deux sens. Un relais UDP lit les valeurs du datagramme, un relais TCP celles du flux ; les autres sont masquées.

Sur UDP ​

ValeurCe qu’elle faitPlage
Hors ligne — rien ne passeChaque datagramme est abandonné, dans les deux sens, jusqu’à ce que vous le décocherez.on / off
LatenceAjoutée à chaque datagramme.0–1000 ms
GigueUn délai supplémentaire aléatoire, de 0 à cette valeur, pour chaque datagramme — si bien que les datagrammes peuvent arriver dans le désordre.0–500 ms
Perte de paquetsLa part de datagrammes qui n’arrivent jamais, chacun pour son propre compte.0–100 %
Pertes en rafaleLa probabilité qu’un datagramme déclenche une rafale de pertes : une liaison qui décroche un moment, contrairement à une perte dispersée.0–20 %
Longueur de rafale, datagrammesCombien de datagrammes une rafale perd en moyenne. Affiché quand Pertes en rafale est supérieur à 0 ; 5 quand vous le remontez pour la première fois.1–1000
DuplicationLa part de datagrammes livrés deux fois.0–100 %
CorruptionLa part de datagrammes avec un bit d’un octet inversé.0–100 %
RéordonnancementLa part de datagrammes retenus — de la latence, et au moins 20 ms — pour que ceux qui les suivent arrivent en premier.0–100 %
Bande passante, kbit/sUne limite de bande passante, en kilobits par seconde ; 0 signifie aucune. Les datagrammes font la queue pour la liaison à ce débit ; un datagramme qui attendrait plus d’une seconde est abandonné comme throttled.0, ou 8–10 000 000

Une rafale fonctionne ainsi : un datagramme qui n’est pas dans une rafale en déclenche une avec la probabilité Pertes en rafale ; chaque datagramme d’une rafale est perdu, et chacun la termine avec une probabilité de 1 sur Longueur de rafale, datagrammes, si bien qu’une rafale dure ce nombre de datagrammes en moyenne.

Un datagramme est décidé dans cet ordre : hors ligne, rafale, perte, bande passante, puis duplication, corruption, délai et réordonnancement pour chaque copie.

Sur TCP ​

ValeurCe qu’elle faitPlage
Hors ligne — rien ne passeRien ne circule, dans aucun sens, et les nouvelles connexions attendent la cible, jusqu’à ce que vous le décocherez — puis tout repart.on / off
LatenceAjoutée à chaque bloc d’un flux, dans les deux sens.0–1000 ms
GigueUn délai supplémentaire aléatoire, de 0 à cette valeur, pour chaque bloc — jamais en avance sur le bloc qui le précède.0–500 ms
Connexion réinitialiséeLa part de blocs qui réinitialisent leur connexion au lieu de passer : le client et la cible reçoivent tous deux une réinitialisation.0–100 %
Semi-ouverteLa part de blocs qui laissent leur connexion à demi ouverte : plus rien ne passe, dans aucun sens, et aucun des deux côtés n’est prévenu. Le relais garde les deux côtés ouverts, intacts, jusqu’à son arrêt.0–100 %
Bande passante, kbit/sUne limite de bande passante pour chaque flux de chaque connexion, en kilobits par seconde ; 0 signifie aucune. Au-delà d’une seconde de file, le relais cesse de lire, si bien que l’émetteur ralentit, comme sur une liaison lente. Rien n’est abandonné.0, ou 8–10 000 000

La perte, les rafales, la duplication, la corruption et le réordonnancement ne s’appliquent pas à TCP : un vrai flux TCP retransmet ce qu’il perd et se remet en ordre, si bien que ce qu’un client rencontre sur une mauvaise liaison, c’est du délai, un émetteur lent, des réinitialisations et des connexions qui cessent de répondre.

TIP

Les curseurs s’arrêtent à 1000 ms de latence et 500 ms de gigue. Le relais lui-même accepte jusqu’à 60 000 ms de chacune, par exemple depuis un fichier d’expérience.

Préréglages ​

Un préréglage règle chaque valeur en un clic. Sa pastille reste allumée tant que les valeurs sont encore celles du préréglage ; modifiez une valeur et elle s’éteint.

PréréglageSur UDPSur TCP
LAN1 ms ±11 ms ±1
Wi-Fi chargé20 ms ±30, 1 % de perte, rafales 1 % × 3, 0,5 % dupliqués, 2 % réordonnés20 ms ±30
4G60 ms ±25, 0,5 % de perte, 0,5 % réordonnés, 20 000 kbit/s60 ms ±25, 20 000 kbit/s
Satellite300 ms ±30, 1 % de perte, 2000 kbit/s300 ms ±30, 2000 kbit/s
Intermittent30 ms ±20, rafales 3 % × 1530 ms ±20, 0,2 % de blocs laissés à demi ouverts
Hors ligneRien ne passeRien ne circule

Le modifier pendant qu’il tourne ​

Modifiez n’importe quelle valeur, ou choisissez un autre préréglage, pendant que le relais tourne : il s’applique un quart de seconde après votre dernière modification, sans abandonner le port ni les connexions. La console note chaque nouveau profil, et la ligne sous En direct dit ce que le relais fait maintenant — le nom du préréglage, ou les valeurs en bref, comme 60 ms ±25 · loss 2% · 20000 kbps.

Un datagramme ou un bloc est décidé par le profil en vigueur quand il arrive ; un élément déjà en route garde son délai.

Les compteurs ​

En direct montre ce que le relais a fait depuis son démarrage, les deux sens réunis, actualisé quatre fois par seconde.

Sur UDP :

CompteurQuoi
ReçusDatagrammes parvenus au relais.
TransmisDatagrammes transmis ; un datagramme dupliqué compte deux fois.
AbandonnésPerdus exprès : hors ligne, une rafale, ou une perte.
BridésAbandonnés par la limite de bande passante, ou parce que 10 000 étaient déjà en route.
DupliquésDatagrammes envoyés deux fois.
CorrompusCopies avec un bit inversé.
RéordonnésCopies retenues pour que de plus récentes les dépassent.
VolumeOctets transmis.

Sur TCP :

CompteurQuoi
ConnexionsConnexions ouvertes par des clients vers le relais.
ReçusBlocs lus par le relais, dans les deux sens.
TransmisBlocs qu’il a écrits.
RéinitialiséesConnexions réinitialisées.
Semi-ouvertesConnexions laissées à demi ouvertes.
RalentisCombien de fois un flux a attendu la limite de bande passante : l’émetteur a été ralenti, rien n’a été abandonné.
VolumeOctets écrits.

Avec la capture active, l’Inspecteur montre les datagrammes et blocs relayés — au plus un toutes les 25 ms, les deux sens réunis — chacun avec son sort : forwarded +43ms, · corrupted, · reordered, · copy 2/2, dropped (loss), dropped (burst), dropped (offline), throttled, et sur TCP reset et half-open. → va du client à la cible, ← de la cible au client.

Une trame relayée nomme de vraies sockets : local est l’adresse sur laquelle le relais écoute et Pair est où allait ce datagramme ou ce bloc — la cible, ou le client à qui une réponse est revenue. Le trajet termine le verdict : forwarded +43ms · client→target, dropped (loss) · target→client. Ainsi un datagramme relayé peut être conservé avec Enregistrer comme signal et est visé vers l’adresse vers laquelle il allait ; un bloc TCP est un morceau d’un flux et ne peut pas l’être (voir Inspecteur).

Le même trafic, le même sort ​

Chaque décision — quel datagramme est perdu, retardé de combien, corrompu où — est tirée de la graine du relais, séparément pour chaque sens et, sur TCP, pour chaque connexion. Avec la même graine et le même trafic, le relais abandonne les mêmes datagrammes et les retarde de la même façon.

L’écran Dégradation prend une nouvelle graine à chaque démarrage d’un relais. Pour répéter une exécution exactement, utilisez un nœud Dégradation dans une expérience : il tire de la graine de l’exécution, que vous pouvez épingler (voir Répéter une exécution défaillante).

Dans les expériences ​

Deux nœuds placent le même relais dans une expérience :

  • Dégradation ouvre un relais avant la première étape et le ferme quand l’exécution se termine, quelle que soit la façon. Ses adresses d’écoute et de cible n’acceptent que des paramètres ; la cible peut être un nom d’hôte, résolu au démarrage de l’exécution. Voir Nœuds.
  • Changer la dégradation bascule un relais de l’exécution vers un autre profil à partir de cette étape — propre, avec pertes, hors ligne, de nouveau propre — et le rapport de l’exécution compte ce que chaque phase a fait. Voir Nœuds.

Sur un nœud OSC ou UDP, Faire passer par une dégradation place un Dégradation devant lui et pointe le nœud vers le relais. Voir Défaillances.