Simulieren Sie Paketverluste über einen Netzwerk-Switch

Simulieren Sie Paketverluste über einen Netzwerk-Switch

Wir haben hier einen Netzwerk-Switch und können ihn ganz einfach bitten, die Bandbreite zu begrenzen, die er zulässt, was sehr praktisch ist. Es wäre toll, wenn wir ihn auch bitten könnten, Paketverluste für uns zu generieren – dies mit WANem ist möglich, führt aber zu zusätzlichen Latenzen und wir arbeiten mit Echtzeitanwendungen, sodass jede zusätzliche Latenz für uns schlecht ist. Kennt jemand einen Netzwerk-Switch oder Router, der dies zulässt oder der gehackt werden kann, um dies zu ermöglichen?

Antwort1

Alle Switches, die eine Ratenbegrenzung entweder am Port oder am VLAN haben, sollten es Ihnen ermöglichen, Paketverluste zu „simulieren“. Wenn Ihre Anwendung 1 MB Datenverkehr benötigt, legen Sie die Begrenzung knapp darunter fest, und der Switch sollte Pakete verwerfen.

Denken Sie daran, dass alle Switches mit dieser Funktion eine Stichprobenprüfung durchführen müssen, um eine Begrenzung vornehmen zu können. Beispiel: Port 1 ist auf eine Begrenzung von 1 MB eingestellt. Port 1 sendet für den Bruchteil einer Sekunde 2 MB Datenverkehr. Der Großteil davon wird wahrscheinlich durchkommen. Dies liegt daran, dass der Switch erst dann erkennen und messen kann, wie viel Datenverkehr durchkommt, wenn er weiß, was er verwerfen soll. Je nach Anbieter kann dies auf viele Arten implementiert werden. Einige puffern und verwerfen dann Pakete aus dem Puffer, andere lassen nur den Moment ein- und ausgehen und begrenzen dann.

Wenn Sie genau wissen möchten, wie Ihre Anwendung reagiert, würde ich vorschlagen, eine BSD-Box direkt vor dem Computer aufzustellen, auf dem Sie die Anwendung testen. BSD (nur weil ich sie für meine Firewalls verwende) hat einen Befehl namensipfwDamit können Sie eine Verbindung direkt steuern. Nehmen wir also an, dass Ihr aktuelles Szenario das Folgende ist:

+--------------------+ +----------------+
| Anwendungsserver | ---> | Client-Computer |
+--------------------+ +----------------+

Ich verstehe, dass dies eine übermäßige Vereinfachung wäre, aber es veranschaulicht das Konzept. Was Sie tun können, ist, ein NAT in der Mitte einzurichten und es mit einer Ratenbegrenzung zu versehen.

+--------------------+ +-------------------------+ +----------------+
| Anwendungsserver | ---> | Rate Limit Box | ---> | Client-Computer |
| 10.0.0.5 | | 10.0.0.6 192.168.1.1 | | 192.168.1.2 |
+--------------------+ +-------------------------+ +----------------+

Auch hier weiß ich, dass dies eine übermäßige Vereinfachung ist. Ich habe IPs hinzugefügt, damit ich Ihnen zeigen kann, wie die Befehle in BSD auf der Rate Limit Box lauten würden. Richten Sie BSD zunächst so ein, dass es als normaler Router fungiert. Sie könnten pf sense usw. verwenden. Dann könnten Sie die folgenden Befehle in der Eingabeaufforderung hinzufügen.

ipfw-Pipe 1, Konfigurationsbreite 101 Kbit
ipfw fügt 1 Pipe 1 IP von 10.0.0.5 zu 192.168.1.2 hinzu
ipfw fügt 2 Pipes und 1 IP von 192.168.1.2 zu 10.0.0.5 hinzu

Dies würde eine 101-kB-Verbindung vom und zum Client zum Server simulieren. Sie können den Wert 101 dann beliebig ändern, um zu sehen, was bei verschiedenen Grenzwerten passiert. Der eigentliche Vorteil gegenüber einem Switch, der die Begrenzungsfunktionen unterstützt, besteht darin, dass es billig ist (ein einfacher Computer mit ein paar Schnittstellen) und dass Sie Wireshark verwenden können, um den Datenverkehr bei Bedarf aufzuzeichnen und dann zu sehen, was genau verloren geht und wie viel. Diese Informationen könnten beim Entwerfen einer besseren Anwendung sehr nützlich sein.

meiner bescheidenen Meinung nach

verwandte Informationen