Comment faire de faux paquets jetés (ou effectivement les faire échouer)?

Fond

Un de nos clients souffre des problèmes émergents périodiquement avec Internet lorsqu'il a rejeté les packages lorsque l'utilisateur charge le grand fichier. (leurs experts informatiques étudient le problème).

J'ai une application composée d'un serveur Web en cours d'exécution Windows 2008 R2 IIS7.5 et client sous contrôle Windows 7, Chrome, qui utilise de longues XMlHttpRequest Envoyer des "messages" du serveur au client.

Ce problème.

Ma requête devrait être tout à fait à l'abri de ces pertes de packages, mais dans la pratique, ce n'est pas le cas.

Je veux tester l'application dans divers scénarios de problèmes de réseau, par exemple, avec une perte aléatoire de colis dans 1% et avec une perte de paquets en sautillant, par exemple, avec une perte complète de colis sur 4000 MS, etc.

Je cherche une solution qui me permettra de "reproduire" le script et de tester mon application. je pourrais utiliser 3G Ou déconnectez le câble réseau, mais les effets ne sont pas très reproductibles.

Question.

Y a-t-il une annexe / Pilote que je peux installer sur votre ordinateur pour imiter "Rusé" Connexions Internet? Ou peut-être un périphérique ou un serveur proxy que puis-je utiliser sur le réseau pour imiter ces scénarios?

Je suppose que ce n'est pas très facile à faire sur un ordinateur moderne, car je m'attends à ce que la plupart des piles TCP soient déchargées sur une carte réseau, mais je pense que c'est une chose plutôt populaire qui peut être essayée, mais je n'ai pas de chance avec Google. Je suis plus compréhensible dans Windows, Mais la solution utilisant Linux En tant que client ou proxy, sera accueilli.
Invité:

Blanche

Confirmation de:

Un routeur Linux simple au milieu peut la rendre sans faille. Juste lire

netem

. Vous pouvez tout reproduire, y compris les packages perdus, les packages réorganisés, les packages endommagés et même retarder. Je l'utilise moi-même pour simuler des chaînes satellites.

Babette

Confirmation de:

Pour cela, j'ai utilisé TMNetSim. Il traite n'importe quel port que vous souhaitez, vous pouvez donc l'utiliser pour la plupart des applications.

http://www.tmurgent.com/Tools.aspx
Vous voudrez peut-être effectuer une capture de package corrélée sur le côté du client et du côté serveur, et déterminez si le client reçoit le package. RST. Si oui, alors de votre serveur. Et si cela se produit dans un temps prévisible, par exemple, après cinq minutes d'inaction.

Pour répondre aux questions, connectez-vous ou registre