netzwerkdude
Goto Top

WAN mit einem Linux PC simulieren (sog. "impairment node" bauen)

Wenn man schnell eine Applikation testen möchte wie Sie sich unter WAN Bedingungen verhält, hilft ein sogenanntes "impairment node" also ein Gerät auf der Strecke die Leitungsqualität beeinflusst, so kann eine Teilstrecke im LAN so schlecht gemacht werden wie eine beliebig schlechte WAN Strecke.
So eins lässt sich schnell mit einem Linux System realisieren - ob nun virtuell oder physisch ist schlussendlich egal, in diesem Beispiel machen wir eine physischen Aufbau:
Netzseite A Switch <> USB NIC - Onboard NIC <> Netzseite B Switch

Was man braucht:
- Ubuntu 1804 (mit Gnome) auf einem PC mit zwei Ethernet Schnittstellen (z.B. Onboard + USB Ethernet Dongle)

Wir bridgen die beiden NICs zusammen, und verbinden Sie so auf Layer2
Dazu bemühen wir uns der Kommandozeilentool des GnomeNetwork Managers (falls ihr das Netzwerk anders managed, Netplan o.ä. dann entsprechend anders gestalten):

1. Überblick verschaffen wie die Netzwerkkarten heißen:

hier aufschreiben wie die Devices heißen, in meinem Fall sinds:
enp0s25 und enx504eaaa89ec1

Prüfen ob im GnomeNetworkManager schon Profile hinterlegt sind:
Falls ja, die Verbindungen auf Down setzen:

2. Bridge erstellen:
STP auf der Bridge abschalten:
Und der Bridge nun die physischen NICs zuordnen:

Wenn "nmcli con show" alles grün anzeigt, sollte es eigentlich i.O. sein.
Ab jetzt ist der PC ein Switch!
(Falls es nicht gleich geht, evtl. noch die Bridge aus/anmachen: mit



3. Nun müssen wir noch eins der beiden interface mit Fehlern behaften, nehmen wir das enx504eaaa89ec1:
hierbei wird ein delay von 50ms +-5ms mit einer normalverteilung der streuung und ein fester wert von 1% loss simuliert

Man kann das nach seinem gutdünken anpassen, hier die doku zu netem:
https://wiki.linuxfoundation.org/networking/netem
Wenn man die Regel anpasst, muss statt der "add" ein "change" in den Befehl

Will man noch zusätzlich weitere Regeln, so muss man einen Befehl dazuketten, machen wir noch eine Bandbreitenbegrenzung dazu:
Hierbei ist der Wert nach rate interessant (wir setzern es hier auf 2mbit), brust und latency helfen nur der Pipelinesteuerung, mehr dazu im Link unten

mehr dazu in der TBF Manpage:
http://man7.org/linux/man-pages/man8/tc-tbf.8.html
einem Post der das Bucket bei rbf erklärt:
https://unix.stackexchange.com/questions/100785/bucket-size-in-tbf
Und etwas zu Rule Chaining:
https://www.excentis.com/blog/use-linux-traffic-control-impairment-node- ...

Viel Spaß
N-Dude

Content-Key: 425353

Url: https://administrator.de/contentid/425353

Ausgedruckt am: 03.10.2022 um 19:10 Uhr