So simulieren Sie Netzwerkpaketverlust und -verzögerung in Linux

So simulieren Sie Netzwerkpaketverlust und -verzögerung in Linux

netem und tc:

netem ist ein Netzwerksimulationsmodul, das von den Linux-Kernelversionen 2.6 und höher bereitgestellt wird. Mit diesem Funktionsmodul können komplexe Internetübertragungsleistungen wie geringe Bandbreite, Übertragungsverzögerung, Paketverlust usw. in einem lokalen Netzwerk mit guter Leistung simuliert werden. Viele Linux-Distributionen, die die Kernelversion Linux 2.6 (oder höher) verwenden, haben diese Kernelfunktion aktiviert, etwa Fedora, Ubuntu, Redhat, OpenSuse, CentOS, Debian usw.

tc ist ein Tool im Linux-System und sein vollständiger Name lautet Traffic Control. tc kann verwendet werden, um den Arbeitsmodus von netem zu steuern. Das heißt, wenn Sie netem verwenden möchten, sind mindestens zwei Bedingungen erforderlich. Erstens muss die netem-Funktion im Kernel enthalten sein, und zweitens muss tc erforderlich sein.

Es ist zu beachten, dass die in diesem Artikel vorgestellte Flusssteuerung nur die Paketsendeaktion steuern kann, nicht jedoch die Paketempfangsaktion. Gleichzeitig wirkt sie sich direkt auf die physische Schnittstelle aus. Wenn die physische eth0 gesteuert wird, ist auch die logische Netzwerkkarte (z. B. eth0:1) betroffen. Wenn Sie umgekehrt die logische Netzwerkkarte steuern, kann die Steuerung ungültig sein. (Hinweis: Mehrere Netzwerkkarten in einer virtuellen Maschine können als mehrere physische Netzwerkkarten in der virtuellen Maschine angesehen werden.)

Linux verfügt über ein TC-Tool (Traffic Control), mit dem sich Paketverluste und -verzögerungen im Netzwerk simulieren lassen. Wenn wir bei der Entwicklung eines Backend-Servers wissen möchten, ob der Server unter bestimmten Netzwerkpaketverlustbedingungen eine gute Leistung erbringt, können wir mit tc die Paketverlustrate simulieren.

Paketverlust simulieren

Der folgende Befehl kann einen Paketverlust simulieren und 10 % der Pakete, die den Netzwerkport eth0 verlassen, gehen zufällig verloren:

sudo tc qdisc add dev eth0 root netem Verlust 10 %

Analoge Verzögerung

Der folgende Befehl verzögert die vom Netzwerkport eth0 gesendeten Pakete um 40 ms:

sudo tc qdisc add dev eth0 root netem Verzögerung 40 ms

Paketverlust und Latenz in bestimmten Szenarien

Beachten Sie, dass die oben vorgestellten Befehle für den gesamten Netzwerkport eth0 gelten, das heißt, bei allen von eth0 ausgehenden Paketen kommt es zu zufälligen Paketverlusten oder Verzögerungen. Manchmal möchten wir jedoch, dass Paketverlust und Verzögerung nur eine bestimmte Zieladresse betreffen. Was sollen wir tun?

sudo tc qdisc add dev eth0 root-Handle 1: prio
sudo tc qdisc add dev eth0 parent 1:3 handle 30: Netem-Verlust 13 %, Verzögerung 40 ms
sudo tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 199.91.72.192 match ip dport 36000 0xffff flowid 1:3

Im obigen Befehl weisen wir tc an, 13 % Paketverlust und 40 ms Verzögerung für an 199.91.72.192:36000 gesendete Netzwerkpakete zu generieren, während an andere Zieladressen gesendete Netzwerkpakete nicht betroffen sind.

Löschen einer Regel

OK, denken Sie daran, nach der Simulation von Paketverlust und Latenz die Regel zu löschen:

sudo tc qdisc del dev eth0 root

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • So richten Sie duale Netzwerkkarten in Linux ein
  • Linux-Netzwerkprogrammierung: Beispiel für zuverlässige Dateiübertragung basierend auf UDP
  • Verwenden Sie netstat, um den Netzwerkstatus und den Portstatus in Linux anzuzeigen
  • Linux-Befehle lernen: 10 Netzwerkbefehle und Überwachungsbefehle
  • Zwei Skripte zum Überprüfen des Linux-Netzwerkstatus
  • Skript zur Überwachung des Netzwerkverkehrs unter Linux
  • Einführung in die grundlegende Netzwerkkonfigurationsmethode von Linux
  • Linux erkennt, ob der Server mit dem Netzwerk verbunden ist
  • Allgemeine Netzwerkbefehle in Linux
  • Eine der Netzwerküberwachungstechnologien unter Linux

<<:  Anwendungsbeispiele für React Hooks (6 gängige Hooks)

>>:  MySQL weist eine Riddle-Sicherheitslücke auf, die zum Verlust von Benutzernamen und Passwörtern führen kann

Artikel empfehlen

Detaillierte Erläuterung der Komponentenentwicklung des Vue-Dropdown-Menüs

In diesem Artikelbeispiel wird der spezifische Co...

MySQL-Transaktionsdetails

Inhaltsverzeichnis Einführung Vier Merkmale von T...

So installieren Sie Nginx an einem bestimmten Ort im Centos-System

Wie installiere ich Nginx an einem bestimmten Ort...

Informationen zur Installation des Python3.8-Images im Docker

Offizielle Docker Hub-Website 1. Suchen Sie nach ...

So fragen Sie schnell 10 Millionen Datensätze in MySQL ab

Inhaltsverzeichnis Normale Paging-Abfrage So opti...

Grundlegendes Handbuch für Webdesign 216 Websichere Farben

Die Farbdarstellung auf einer Webseite wird von ve...

Mehrere Möglichkeiten zur Implementierung eines 0-ms-Verzögerungstimers in js

Inhaltsverzeichnis WarteschlangeMikrotask asynchr...

Detailliertes Tutorial zur Integration von Apache Tomcat mit dem IDEA-Editor

1. Laden Sie das komprimierte Tomcat-Paket von de...

Verstümmelte Zeichen und Lösungen im MySQL-Zeichensatz

Vorwort Ein Zeichensatz ist eine Reihe von Symbol...