Verwenden Sie tc unter Linux und dummynet unter FreeBSD, um die Bandbreite zu begrenzen

4466
lcbrevard

Wir haben ein Netzwerkprodukt, das unter Linux läuft und in Netzwerken mit geringer Bandbreite getestet werden muss.

Wir konnten 'tc' (Verkehrssteuerung) in Linux und Dummynet in FreeBSD verwenden, um Verzögerung (Latenz) mit vorhersagbarem Verhalten einzuführen.

Wenn wir jedoch versuchen, die Bandbreite mit einem dieser beiden zu drosseln, scheint dies keine großen Auswirkungen zu haben.

Hier ist ein Beispiel für den Versuch, die Bandbreite mit 'tc' auf 512 Kbps einzustellen:

tc qdisc change dev eth0 root tbf-Rate 512kbit-Burst 1540 

Wenn wir jedoch 'scp' über diese Verbindung laufen lassen, sehen wir Geschwindigkeiten, die viel höher sind als wir erwarten.

Hier sind die Ergebnisse der Einstellung verschiedener Bandbreiten sowohl in Dummynet als auch in tc. Sie können sehen, dass es einige Auswirkungen hat, aber nicht sehr viel.

BW _______DUMMYNET__________ __________ TC __________ 10 Mbps 1 m, 3,489 s 4,0 MB / s 1 m, 2,732 s 4,1 MB / s 8 Mbps 1 m, 3,461 s 4,0 MB / 1 m, 2,728 s 4,1 MB / s 6 Mbit / s 1 m, 3,905 s 4,0 MB / s 1 m, 2,710 s 4,0 MB / s 1 Mbit / s 1 m, 3,261 s 4,0 MB / s 1 m, 2,680 s 4,0 MB / s 512 Kbps 1 m, 26,175 s 3,0 MB / s 1 m 25,409 s 3,0 MB / s 256 kbit / s 2 m, 39,079 s 1,6 MB / s 2m 53,004 s 1,5 MB / s 128 kbps 5 m, 3,501 s 852,7 kB / s 5 m, 50,491 s 739,7 kb / s 64 kbit / s 9 m, 48,907 s 463,3 kB / s 9 m, 53,105 s 436,5 kB / s 

Ich habe nicht die Syntax, die wir für DUMMYNET verwendet haben, aber ich werde sie später posten.

5
Dies könnte unser Problem für 'tc' lösen, aber wenn jemand weiß, wie man Dummynet einrichtet, wäre das gut zu wissen. Ein potenzieller Kunde muss diesen Ablauf in einer Dummynet-basierten Netzwerkemulation sehen. Hier ist der Beitrag mit der 'tc'-Info: http://superuser.com/questions/147156/simulating-a-low-bandwidth-high-latency-network-connection-on-linux lcbrevard vor 13 Jahren 0
Ich arbeite daran, es mit einem Proof-Video in vm (dummynet bridge) zum Laufen zu bringen ... es kann etwas dauern, bis es funktioniert und das Video aufnimmt und postet, aber es kommt RobotHumans vor 13 Jahren 0
Beachten Sie, dass Sie im Dummy-Netz nicht nur einen Grenzwert haben, sondern auch einen Verzögerungsparameter RobotHumans vor 13 Jahren 0
Hoppla ... Ich habe unten kommentiert, bevor ich das gesehen habe. Die Kundenumgebung hat die Bandbreite UND die lange Verzögerung (> 500ms) reduziert. Wir haben gezeigt, dass die Bandbreitenreduzierung mit den obigen Tests einfach nicht funktioniert. Wenn wir uns nur verzögern, erhalten wir die erwarteten Ergebnisse. Wir kamen zu dem Schluss, dass unser Setup für die Bandbreitenreduzierung sowohl bei Tc als auch bei Dummynet falsch war! lcbrevard vor 13 Jahren 0

2 Antworten auf die Frage

4
Sean Reifschneider

Es gibt eine Frage zu Serverfault, die ich mit einem ausführlicheren Beispiel für die Verwendung von tc und iptables zur Begrenzung des Datenverkehrs beantwortet habe . Dieses Beispiel stammt von einem Setup, das wir auf unserem Spiegelserver haben, und es funktioniert sehr gut.

2
RobotHumans

Ich würde die Filterung für die betreffende Box nicht ausführen, ich würde sie in einer dedizierten Box / VM zwischen den beiden fraglichen Tech-Komponenten ausführen. Auf diese Weise können Sie eine saubere Basislinie ausführen und die Ergebnisse angemessener auswerten.

Hier finden Sie einige nützliche Informationen: http://www.dummycloud.com/screenshots

obwohl tc es für dich tun sollte

Wir haben ein dediziertes System zum Ausführen von Dummynet und eine dedizierte VM zum Ausführen von 'tc' verwendet, aber ich glaube, die Syntax / Reihenfolge der Befehle war falsch. lcbrevard vor 13 Jahren 0
Gibt es eine Präferenz? Mit der Arbeit, die ich mit Dummynet und Video in die VM stecke, bin ich vielleicht bereit, sie für Sie in Live-Medien zu verwandeln RobotHumans vor 13 Jahren 0
Ich muss beide Szenarien verstehen. Einer unserer potenziellen Kunden zieht es vor, ein dediziertes System zu verwenden, auf dem FreeBSD 8.1-RELEASE mit einigen Kernel-Modifikationen und Dummynet ausgeführt wird. Meine Testumgebung funktioniert einfacher mit VMs für alles. Ich werde mit tc viel besser vertraut, muss aber auch Dummynet lernen. lcbrevard vor 13 Jahren 0
okay, kein Problem ... da freebsd REQUIRED ist, muss ich möglicherweise meine vm neu starten (dummynet ist jetzt auf debianized verfügbar und ich habe wenig Erfahrung mit BSD, daher kann es etwas länger dauern ... legen Sie es in die Hardware und stellen Sie sicher, dass Sie über Netzwerktreiber verfügen .....). RobotHumans vor 13 Jahren 0