Comment simuler un environnement à faible bande passante et à latence élevée?

201

J'ai besoin de simuler une connexion à faible bande passante et à latence élevée à un serveur afin d'émuler les conditions d'un VPN sur un site distant. La bande passante et la latence devraient être ajustables afin que je puisse découvrir la meilleure combinaison afin d'exécuter notre progiciel.

Nic
la source
7
Grande question! Je serais ravi d'entendre quelques réponses liées au développement Web ASP .NET.
Carl

Réponses:

79

Pour macOS , il existe le conditionneur de liaison réseau qui simule la bande passante configurable, la latence et la perte de paquets. Il est contenu dans le package Outils supplémentaires pour Xcode . Capture d'écran

Jon Colverson
la source
12
Le panneau de préférences "Network Link Conditioner" fait partie des outils IO matériels pour XCode, que vous pouvez télécharger à partir de developer.apple.com/downloads
avernet
ne semble pas fonctionner avec Genymotion. (Écran noir)
Bruno
1
Lien de téléchargement pour les nouvelles versions de XCode: developer.apple.com/download/more/?q=Additional%20Tools
jstorm31
@ jstorm31 Merci. J'ai mis à jour la réponse avec le nom actuel du package et le lien actuel.
Jon Colverson
37

Il existe une excellente description de la configuration d'une machine FreeBSD pour faire exactement cela - prenez votre ancien bureau standard, ajoutez une carte réseau supplémentaire et construisez.

La publication est disponible à http://www.freebsd.org/doc/en/articles/filtering-bridges/article.html .

À l'étape 5 des instructions ci-dessus, vous activez un pare-feu. Pour simuler simplement une connexion IP différente, vous pouvez (par exemple) procéder comme suit:

Créez un fichier /etc/rc.firewall.56kcontenant les éléments suivants:

ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in    
ipfw pipe 1 config bw 56Kbit/s   
ipfw pipe 2 config bw 56Kbit/s

Et changez /etc/rc.conf... remplacez la ligne

firewall_type="open"

avec

firewall_type="/etc/rc.firewall.56k"

redémarrez, et vous avez un pont 56K!

Si vous travaillez à partir d'un Macintosh, ipfw est intégré par défaut à ce système d'exploitation. J'ai fait la même chose en acheminant le trafic réseau sur l'aéroport et via Ethernet, en le configurant de sorte que tout ce qui arrive sur l'aéroport ait les mêmes caractéristiques que tout ce que j'essaie d'émuler. Vous pouvez appeler les commandes ipfw directement depuis le terminal et obtenir les mêmes effets.

heckj
la source
27

Dans le passé, j'ai utilisé un pont utilisant la fonctionnalité Linux Netem (Network Emulation). Il est hautement configurable - permettant l'introduction de retards (le premier exemple est pour un WAN), la perte de paquets, la corruption, etc.

EDIT: Il existe également l' interface Web MasterShaper pour contrôler les paramètres.

Je note que Netem a très bien fonctionné pour mes applications, mais j'ai également fini par utiliser WANem plusieurs fois. L'ISO de démarrage fourni (et les images d'appliance virtuelle) le rendaient très pratique.

Kris Kumler
la source
Parfait pour mes besoins, et prêt à l'emploi sur mon serveur Ubuntu 14.04!
RobM
21

Charles

Je suis tombé sur Charles, l'application proxy de débogage Web, et j'ai réussi à émuler la latence du réseau. Il fonctionne sur Windows, Mac et Linux.

Charles sur Mac

Accélérateur de bande passante / Simulateur de bande passante

Charles peut être utilisé pour ajuster la bande passante et la latence de votre connexion Internet. Cela vous permet de simuler les conditions du modem à l'aide de votre connexion haut débit.

La bande passante peut être limitée à n'importe quel octet arbitraire par seconde. Cela permet de simuler n'importe quelle vitesse de connexion.

La latence peut également être définie sur n'importe quel nombre arbitraire de millisecondes. Le retard de latence simule la latence ressentie sur des connexions plus lentes, c'est-à-dire le délai entre l'envoi d'une demande et la réception de la demande à l'autre extrémité.

DummyNet

Vous pouvez également utiliser vmware pour exécuter BSD ou Linux et essayer cet article (DummyNet) ou celui-ci.

Eugene Yokota
la source
2
Charles est un proxy HTTP et ne convient donc que pour tester des applications HTTP. À chacun, mais à mon avis, c'est probablement l'un des pires logiciels que j'ai jamais utilisés. Je ne l'ai utilisé que pendant une courte période alors que je devais travailler sur un Mac. Pour les utilisateurs de Windows, je recommanderais Fiddler si vous avez besoin d'un proxy de débogage HTTP. Malheureusement, je n'ai rien trouvé d'autre que Charles pour OSX.
Brad
6
Salut Brad. Pouvez-vous nous dire quel genre de problèmes avez-vous eu?
Ante
17

J'ai trouvé ce petit programme soigné pour Windows appelé maladroit . C'est en quelque sorte un statut alpha, mais cela semble bien fonctionner pour moi, et c'est open source.

Edit: D'autres ont remarqué que vous ne pouvez pas limiter la bande passante avec maladroit, et c'est vrai. Vous ne pouvez ajouter que la latence et quelques autres erreurs liées au réseau. Cela disqualifiera cette réponse en tant que réponse valide à la question, mais puisque je l'ai bien utilisée lorsque je voulais simuler un mauvais réseau, je la laisserai ici tant qu'elle aura> 0 votes ou similaire.

Markus
la source
Comment contrôlez-vous la bande passante avec maladroit?
user3731622
3
Excellent programme. Juste ce dont j'avais besoin. Je le recommande. Fonctionne comme un charme et son super facile.
Jh62
1
Lorsque la plupart des gens disent "limiter la bande passante", ils sont probablement plus qu'heureux d'ajouter simplement des quantités massives de latence et de perte de paquets, car elles limitent effectivement la bande passante. De plus, ce programme est incroyablement simple à utiliser, bat tout ce que j'ai essayé sur Windows.
roule
13

Essayez WANem

WANem est un émulateur de réseau étendu, destiné à fournir une véritable expérience d'un réseau étendu / Internet, lors du développement / test d'applications sur un environnement LAN.

epatel
la source
1
J'ai essayé cela et je n'arrive pas à le faire fonctionner. Il n'obtiendra pas d'adresse IP de notre réseau pour une raison quelconque alors qu'aucun autre ordinateur n'a de problème avec elle.
Michael Beck
7

J'essaierais d'utiliser netem sur linux. Avec lui, vous pouvez simuler des retards supplémentaires, la corruption, la perte de paquets et la duplication. Il fonctionne même sur le périphérique de bouclage.

Josh
la source
Hé, avez-vous une commande équivalente pour Windows en tant que netem?
Shashi Ranjan
6

Un autre programme côté client (Windows uniquement), est NetLimiter - http://www.netlimiter.com

Kaliatech
la source
2
Netlimiter est bon, mais je pense qu'il ne fait qu'une faible bande passante - il ne peut pas changer la latence?
Nathan
La version bêta prévoit une simulation de latence répertoriée en tant que fonctionnalité planifiée. Il a été récemment publié et je ne l'ai pas encore utilisé pour voir si cette fonctionnalité est
arrivée
Cette fonctionnalité n'est pas arrivée en version bêta 9. Ugh.
cacba
4
Même la version bêta actuelle (NetLimiter 4) ne vous permet pas de modifier la latence.
influent
5

J'utilise NetBalancer sur ma machine Windows.

http://seriousbit.com/netbalancer/

Mises à jour du 07/10/2017 : La dernière version gratuite de NetBalancer est la 9.2.7. Le programme a une date d'expiration codée en dur. Avant de démarrer le service NetBalancer, vous devez rétablir l'horloge système avant le 2016-10-18. Consultez cet article pour plus de détails.

Tony
la source
Je vous remercie!! NetBalancer est le seul outil répertorié sur cette page que j'ai pu utiliser et qui peut contrôler la latence.
influent
4

Je suppose que tcpourrait faire le travail sur une plate-forme basée sur UNIX.

tcest utilisé pour configurer Traffic Control dans le noyau Linux
http://lartc.org/manpages/tc.txt

Sawan
la source
3

Pour simuler une connexion à faible bande passante pour tester des sites Web avec Google Chrome, vous pouvez accéder à l'onglet Réseau dans les outils F12 et sélectionner un niveau de bande passante à simuler ou créer une bande passante personnalisée à simuler.

user1785960
la source
1
Merci! Si vous ne le trouvez pas, c'est dans la console Chrome, onglet Réseau, à droite du bouton "Désactiver le cache". Sa valeur par défaut est "Pas de limitation".
Alan Willms
1

Si vous êtes sous Linux, je trouve que le programme Traffic Control est d'une grande aide pour ce genre de chose.

smo
la source
1

Il existe un produit de http://www.shunra.com appelé VE Desktop qui peut être utilisé pour simuler différentes conditions de réseau. Il vous permet de modifier les latences, la bande passante et la perte de paquets avec une interface utilisateur simple. La seule mise en garde est, ce n'est pas gratuit. J'espère que cela t'aides.

Shreedhar Kotekar
la source
1

Je cherche depuis un certain temps un outil facile à utiliser pour ce type de test. Je suis juste tombé sur l'autre jour: Network Delay Simulator

Si vous exécutez Windows, vous devriez le vérifier. C'était super facile à installer et à démarrer, et semble très bien fonctionner. Il vous permet de définir la bande passante, la latence et la perte de paquets dans chaque direction. L'autre chose vraiment sympa est que vous pouvez définir des "conditions de correspondance de flux" de sorte que cela n'affecte que le trafic que vous souhaitez. Oh ouais, et c'est gratuit.

marque
la source
1

je pense avoir trouvé ce dont j'avais besoin. vous pouvez peut-être utiliser le proxy charles ou slowy . J'espère que ça aide.

Moh Hasbi Assidiqi
la source
1

Jetez un œil à l'émulateur de réseau NE-ONE qui vous permet de configurer la bande passante, la latence, la perte de paquets, la réorganisation des paquets, la duplication de paquets, la fragmentation des paquets, l'encombrement du réseau et bien d'autres dégradations afin que vous puissiez créer des conditions réseau réelles dans le laboratoire . Différentes déficiences peuvent être configurées pour la liaison montante et descendante afin que vous puissiez avoir une très bonne liaison montante mais une très mauvaise expérience de liaison descendante, idéale pour voir comment l'application gère la mise en file d'attente TCP parce que les accusés de réception ne reviennent pas en temps opportun et la latence globale augmente donc!

Il y a une vidéo de présentation ici http://www.youtube.com/watch?v=DwtqlE7LcrQ présentation spécifiquement destinée aux développeurs de jeux, mais elle montre de quoi il s'agit. NE-ONE est configuré à l'aide d'un navigateur Web, il est donc très facile de l'installer et de le configurer - vous n'avez pas besoin d'être un gourou du réseau :-)

Il existe une version matérielle - http://www.itrinegy.com/index.php/products/network-emulators/ne-one - ou vous pouvez télécharger une version de l'appliance virtuelle (logiciel) qui s'exécute sous VMware ESXi Server. L'appliance virtuelle peut être téléchargée depuis Solution Exchange de VMware - solutionexchange.vmware.com/store/products/ne-one-flex-network-emulator

Peter White
la source
0

LANforge ICE est un émulateur de réseau qui met l'accent sur le routage virtuel, la gigue, la corruption et le retard. Des projets l'ont utilisé pour émuler une liaison satellite, des connexions par câble et modem et une émulation Wan à haute vitesse (10 Gbit). Vous pouvez utiliser une interface graphique Java pour créer vos réseaux virtuels et générer des rapports très détaillés sur le flux de trafic. Les produits LANforge fournissent également des fonctionnalités de génération de trafic: trame, Ethernet, couche 3 et trafic avec état (NFS, http). Les éditions récentes de LANforge ont également des fonctionnalités de test WiFi sophistiquées.

memnoch_proxy
la source
0

Vous pouvez essayer ceci: CovenantSQL / GNTE écrivez simplement YAML comme ceci:

group:
  - 
    name: china
    nodes:
      - 
        ip: 10.250.1.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.1.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "100ms 10ms 30%"
    loss: "1% 10%"
  - 
    name: us
    nodes:
      - 
        ip: 10.250.2.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.2.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "1000ms 10ms 30%"
    loss: "1% 10%"

network:
  -
    groups:
      - china
      - us
    delay: "200ms 10ms 1%"
    corrupt: "0.2%"
    rate: "10mbit"

courir ./generate scripts/your.yaml

auxten
la source