Ist es möglich, einen künstlichen Netzwerkpaketverlust oder eine Latenz zu verursachen?

7

Ich versuche, einige Probleme in einer bereitgestellten Anwendung zu reproduzieren, in der der MSSQL-Server und der Client auf zwei separaten Computern ausgeführt werden. Ich denke, es kann Netzwerkprobleme zwischen den beiden Maschinen geben, daher möchte ich versuchen, diese Bedingungen auf zwei virtuellen Hyper-V-Maschinen (auf demselben virtuellen Server) zu reproduzieren. Natürlich ist das Netzwerk für diese virtuellen Maschinen "lokal", so dass es tatsächlich weit von den Bedingungen in einer Live-Umgebung entfernt ist.

Gibt es ein Programm, das ich auf einer der beiden virtuellen Maschinen ausführen kann und das die Netzwerkleistung beeinträchtigt? Oder vielleicht andere Workarounds? Eine Möglichkeit, die Bedingungen zu reproduzieren, besteht beispielsweise darin, die VMs auf separaten Hyper-V-Servern an geografisch verteilten Standorten auszuführen (der SQL-Verkehr geht also über VPN oder ähnliches) - dies ist jedoch meiner Meinung nach etwas langwierig. Es muss einen einfacheren Weg geben.

Nick Bolton
quelle

Antworten:

3

Unter Linux würden Sie netem verwenden, unter FreeBSD würden Sie Dummynet verwenden.

Keine dieser Lösungen würde auf einem einzelnen Windows-Computer mit Hyper-V funktionieren. Ich habe gesucht und kann keine Windows Hyper-V-kompatiblen Netzwerkemulatoren finden.

Sie können zwei VMs auf zwei verschiedenen physischen Computern mit einer Linux- oder FreeBSD-Box dazwischen platzieren. Es sieht jedoch nicht so aus, als gäbe es eine Lösung, die auf einem einzelnen VM-Host genau das tut, was Sie wollen.

Jon Lasser
quelle
1

Dummynet sollte für Sie funktionieren: http://info.iet.unipi.it/~luigi/dummynet/

Es installiert einen Dienst auf der Netzwerkkarte und legt dann über die Befehlszeile Ihre Parameter fest.

Ich habe es verwendet, um den Website-Zugriff über eine Verbindung mit hoher Latenz oder geringer Bandbreite unter Windows XP zu testen, und es funktioniert sehr gut.

Jeff Miles
quelle
Im Moment gibt es keinen signierten 64-Bit-Treiber für Win7 / 8, was dies (leider) für einige Benutzer ausschließt.
Shuckc
1

Eine weitere Methode ist das eigenständige Network Emulator Toolkit (NEWT), das trotz seines Alters durchaus in der Lage ist und für x86- und x64-Windows-Betriebssysteme funktioniert.

https://blog.mrpol.nl/2010/01/14/network-emulator-toolkit/

Mithilfe der im Installationsprogramm enthaltenen XML-Vorlagen können Sie schnell Latenz, Bandbreite, Jitter und andere Netzwerkvariablen simulieren.

Ich habe diese Anwendung auf allen Windows-Versionen von XP -> Windows 10 getestet und verwendet.

Geben Sie hier die Bildbeschreibung ein

Jeff Miles
quelle
0

Klingt so, als ob Sie Netem brauchen

Sie können Paketverlust, Latenz, Jitter usw. Einfügen

Eddy
quelle
0

Wenn es nur darum geht, Pakete zu verzögern, können Sie unter Linux einfach die Warteschlangendisziplinen tc und daisy-chain (z. B. HTB ) verwenden:

[...] HTB als Kind eines anderen HTB ist NICHT dasselbe wie eine Klasse unter einer anderen Klasse innerhalb desselben HTB. Dies liegt daran, dass eine Klasse in HTB senden kann, sobald Hardware-Geräte dies können. Die Verzögerung der Untergrenzenklasse ist also nur durch die Ausrüstung und nicht durch die Vorfahren begrenzt. In HTB unter HTB-Fall simuliert der äußere HTB neue Hardware-Geräte mit allen Konsequenzen (größere Verzögerung)

Verluste können auch mit iptables und dem randomModul eingeführt werden :

# for randomly dropping 10% of incoming packets:
iptables -A INPUT -m statistic --mode random --probability 0.1 -j DROP

# and for dropping 10% of outgoing packets:
iptables -A OUTPUT -m statistic --mode random --probability 0.1 -j DROP
krisdigitx
quelle