Comment puis-je simuler une mauvaise connexion Internet à des fins de test?


105

Je développe un jeu multijoueur en ligne. Cela fonctionne bien lorsque je le teste sur le réseau local, mais avant de le publier, j'aimerais tester le fonctionnement de l'expérience utilisateur pour une personne qui n'a pas une aussi bonne connexion au serveur. Comment puis-je simuler une mauvaise connexion Internet avec une latence élevée, une faible bande passante, une gigue et des pertes de paquets occasionnelles dans un environnement local?


69
Envoyez-le moi pour le tester! Les connexions dans mon pays sont horribles par défaut.
Stephan

7
Un objectif louable. J'aimerais que les studios publiés fassent de même. Epic Games, je te regarde.
Gusdor

7
Rechercher un ami à proximité qui utilise Comcast ...
WernerCD

12
Simuler une mauvaise connexion Internet contient les réponses actuelles et plus encore.
MichaelHouse

2
J'ai tout de suite pensé à cette autre question récente de la SE: superuser.com/questions/637594/…
Patrick M

Réponses:


63

Je pense que Dummynet est ce que vous recherchez. Dummynet est un outil d’émulation de réseau capable de simuler les limitations de bande passante, les retards, les pertes de paquets, etc. Vous pouvez facilement choisir le trafic que vous voulez intercepter et configurer les limitations, par exemple pour limiter tout le trafic TCP entrant à 2 Mbit / s

ipfw add pipe 2 in proto tcp
ipfw pipe 2 config bw 2Mbit/s

Vous voyez que la sélection du trafic est effectuée par le pare-feu ipfw connu et que les canaux fournissent les fonctionnalités de limitation.

Il est disponible pour FreeBSD, Linux et Windows.


ça marche avec l'adaptateur de bouclage Windows?
Andriy Tylychko

pour répondre à ma propre question, non, cela ne fonctionne pas pour moi sous Windows 8.1, même après avoir désactivé le renforcement des pilotes signés
Andriy Tylychko le

@AndyT Avez-vous trouvé quelque chose qui fonctionne avec le bouclage? Il semble difficile de trouver quelque chose qui tue les paquets et qui fonctionne avec le bouclage.
AaronLS

@AaronLS: veuillez consulter une autre réponse ici: gamedev.stackexchange.com/a/100779/4731
Andriy Tylychko

33

Conditionneur de liaison réseau

Si vous utilisez un Mac, vous pouvez utiliser le conditionneur de liaison réseau.

Volet Préférences du conditionneur de liaison réseau

Vous pouvez simuler divers cas de mauvaises connexions Internet, notamment Edge et 3G.

De plus, vous pouvez créer vos propres profils avec vos propres paramètres:

Profils personnalisés du conditionneur de liaison réseau

Il est téléchargeable gratuitement dans Xcode (allez à Xcode → Ouvrir l’outil pour les développeurs → Plus d’outils pour les développeurs… et téléchargez le logiciel Hardware IO Tools pour Xcode ).


J'aime ces outils, mais j'ai besoin de quelque chose que je puisse utiliser pour des tests automatisés. Est-ce que quelqu'un sait s'il y a une interface en ligne de commande pour cela?
Erik B

15

Si vous êtes sur Linux, vous pouvez utiliser netem pour simuler tous les problèmes possibles liés au réseau, comme une latence élevée, une bande passante réduite, des pertes de paquets, etc.

Il existe une option pour les fenêtres appelée NetLimiter mais je ne l’ai pas utilisée, je ne peux donc pas en témoigner.

Je viens de trouver un Mac App appelé SlowlyApp .


1
-1 comme avec les autres réponses. Ce ne sont que des liens. Veuillez mettre à jour la réponse pour inclure des descriptions de ce que les applications font et comment elles le font.
MichaelHouse

8
@ Byte56: Ces applications simulent une connexion réseau lente et / ou peu fiable, comme le demande la question. Je suis sûr que la façon dont ils le font est en dehors de la portée de ce site. Je dirais que c’est une excellente réponse à la question posée; s'il y a un problème, c'est dans la question, pas dans les réponses.
Ilmari Karonen

1
Techniquement, la question demande "Comment puis-je simuler une mauvaise connexion Internet". Il ne demande pas d'applications pour le faire. Mais oui, je pense que cette question sort du cadre de ce site.
MichaelHouse


7

Comment puis-je simuler une mauvaise connexion Internet avec une latence élevée, une faible bande passante, une gigue et des pertes de paquets occasionnelles dans un environnement local?

Si vous utilisez Windows, vous pouvez essayer SoftPerfect Connection Emulator . Il s'agit essentiellement d'un pilote qui s'injecte entre votre application et la couche réseau (similaire à Wireshark / WinPCAP) pour la carte réseau sélectionnée et peut simuler une bande passante limitée, une latence, une perte de paquet, etc. L'interface utilisateur est simple et directe.

C'est un produit commercial, mais le procès vous laisse faire des "interférences" de 30 secondes qui devraient vous suffire pour juger si cet outil fait ce que vous voulez.

Une autre option multiplateforme est DummyNet , qui se comporte de la même manière (via ipfw) mais est un peu moins facile à utiliser.

Je voudrais tester comment l'expérience utilisateur fonctionne pour quelqu'un qui n'a pas une aussi bonne connexion au serveur.

Je pense que cette partie de la question pourrait être reformulée comme suit: "comment gérer la latence du réseau dans mon application?" Dead Reckoning est une technique couramment utilisée et efficace . L'article lié l'explique mieux que moi, mais l'idée de base est que vos clients "simulent" en quelque sorte l'emplacement de chaque entité et son rôle dans un algorithme. Chaque fois qu'une entité s’écarte de cet algorithme (entrée du joueur, événement côté serveur, etc.), elle envoie une mise à jour à chaque client.


5

Je ne l'ai pas utilisé depuis un moment, mais j'ai utilisé Charles pour tester cela. Il s’agit d’une application avec divers outils de diagnostic réseau, dont la simulation des problèmes évoqués: "une mauvaise connexion Internet avec une latence élevée, une bande passante réduite, une gigue et des pertes de paquets occasionnelles".


1
Au premier abord, il semble que Charles soit une sorte de proxy HTTP, il ne peut donc pas mettre en forme le trafic TCP ou UDP. Est-ce que je manque quelque chose?
vbo

et il a même eu +5, wft?
Marian Paździoch

er je ne suis pas sûr de ce que signifie "mettre en forme un trafic TCP ou UDP", mais j’utilise cet outil précisément pour répondre à la question posée par le PO, à savoir simuler une mauvaise connexion Internet.
Jhocking

1
@jhocking Il signifie que cela ne fonctionne que pour le trafic HTTP. Beaucoup de jeux en temps réel utilisent TCP ou UDP.
AaronLS

0

Si vous êtes avertis avec Fiddler , et vous êtes uniquement intéressé par HTTP / 1 vous pouvez alors ce script.

Fiddler ne prend pas en charge HTTP / 2, son interception entraînant la rétrogradation de tout le trafic HTTP en HTTP / 1.


Intéressant. Pouvez-vous fournir plus de détails? Peut-être un exemple de script?
Philipp

@Philipp Cette réponse ( stackoverflow.com/a/47401557/442351 ) en donne un exemple.
BanksySan

Il ne supporte que http? Pas même les websockets? Ensuite, je ne pense pas que cela soit très utile dans le développement de jeux. Si vous vous inquiétez de la latence, vous n'utiliserez pas http en premier lieu. Mais merci de le mentionner quand même.
Philipp

@Philipp supporte WebSockets, juste HTTP / 2 chaud. Bien que vous devriez regarder HTTP / 2, ce n'est rien comme HTTP / 1, plus de blocage en tête de ligne, plus de poignée de main multiple, plus d'en-têtes et / ou de cookies en double.
BanksySan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.