FreeBSD Traffic Shaping

kashee Opeiah

FreeBSD rockz
Hallo,
ich habe folgende Aufgabe bekommen.
Ich soll ein System bauen was mir die Bandbreite begrentz.
Dabei soll ich aber ca. 10 verschiedenen Netzten unterschiedliche Bandbreiten zuweisen. D.h ein Netz hat 2Mbit das nächste 5Mbit usw., ist das mit FreeBSD möglich. Eine Suche bisher ergab ipfw, ist das dafür gedacht? Gibt es alternativen?

Wie zuverlässig ist der Taffic Shaper? Wenn auf einmal viele Anfragen kommen soll der nicht gleich "zusammenbrechen" oder die volle Bandbreite hergeben ^^

Mfg KO
 
Also, FreeBSD bietet zwei Trafficshaper und beide werden über die Paketfilter angesprochen. Prinzipiell routet der Paketfilter die Pakete in den Trafficshaper, der sie entsprechend behandelt. Was du willst, ist mit beiden Lösungen absolut problemlos möglich.

Option 1 ist "dummynet". Dummynet wurde speziell für FreeBSD geschrieben, war Mitte der 90er einer der ersten für die breite Masse verfügbaren Trafficshaper und integriert ausschließlich in ipfw2. Dummynet ist in Sachen Features praktisch ungeschlagen, er kann Bandbreiten begrenzen, Pakete priorisieren, Pakete verlangsamen, Paketverlust simulieren (lustig um WOW-Spieler zu ärgern) und noch einiges mehr. Dazu bietet er verschiedene Algorithmen zur Paketgewichtung. Dummynet wird außerdem in einer ganzen Reihe professioneller Netzwerkprodukte eingesetzt, u.a. Anwendungen von Cisco, Juniper, Isilon und Netapp integrieren ihn. Auch im ISP-Bereich ist Dummynet beliebt. Grund ist neben den vielfältigen Möglichkeiten vor allem die hohe Geschwindigkeit und der geringe Overhead. Nachteilig ist, dass Dummynet recht komplex ist und nicht gerade eingänglich. Was auch für das benötigte ipfw2 gilt. Auch findet man im Netz nur wenige, gute Anleitungen. Dummynet kann als Modul geladen werden und benötigt keinen angepassten Kernel.

Option 2 ist ALTQ. ALTQ wurde ursprünglich losgelöst von BSDs entwickelt, aber irgendwann von OpenBSD in pf integeriert. ALTQ kann man unter FreeBSD mit ipfw2 und pf nutzen, je nach dem was man bevorzugt. ALTQ benötigt Unterstützung durch die Netzwerkkarte, aber praktisch alle relevanten sind unterstützt. Außerdem muss man einen angepassten Kernel bauen. Der große Vorteil von ALTQ ist, dass es einfach ist und gut dokumentiert. Einen Filter mit ALTQ zu bauen ist merklich einfacher als mit Dummynet, dafür kann ALTQ aber weniger. Zum Beispiel keine Pakete verzögern. Auch sind die SMP-Fähigkeiten von ALTQ begrenzt.

Jetzt endlich hängt es halt von den persönlichen Präferenzen ab. Ein wirkliches "besser" und "schlechter" gibt es zwischen beiden eigentlich nicht. Im Zweifel würde ich zu ALTQ raten, da es einfach deutlich einfacher einzurichten ist, als Dummynet.

Zum Lesen:
Die Manpage zu ipfw enthält auch gleich die Doku zu Dummynet: http://www.freebsd.org/cgi/man.cgi?...ion=0&manpath=FreeBSD+7.2-RELEASE&format=html

ALTQ: http://www.freebsd.org/cgi/man.cgi?...ion=0&manpath=FreeBSD+7.2-RELEASE&format=html

ALTQ in der OpenBSD FAQ: http://www.openbsd.org/faq/pf/queueing.html#altq
 
Hi,
erst einmal vielen Dank Yamagi für deine sehr ausführliche Antwort.
Ich hätte mal eine Technische Frage zum Traffic Shaping.
Ist das sehr Rechenlastig, sprich zwingt das die CPU zu höchstleistungen?
Auf was sollte Hardwaretechnisch besonders geachtet werden? (RAM, CPU ...)

Ist es denn möglich ipfw, dummynet, ALTQ in einer Jail laufen zu lassen?

Mfg KO
 
Also zur ersten Frage. Traffic Shaping benötigt eher wenig CPU-Leistung, wenn man entsprechende Netzwerkkarten hat. Was die Last verursacht ist nämlich nicht das Shapen selbst, sondern eher das Umkopieren der Pakete in der Maschine. Die Intel Server-Karten sind da wie immer sehr zu empfehlen, da sie höchst effizient arbeiten. Es hängt natürlich von der Menge an Paketen ab, die dort bewegt werden sollen, aber ein kleinerer Dualcore sollte selbst mehrere Gigabit-Verbindungen problemlos schaffen. Im Zweifel würde ich mein Geld eher in die Netzwerkkarte investieren als in überzüchtete CPUs und in sehr viel RAM. RAM schadet bekanntlich nicht, aber da die Pakete ja nur rein und sofort wieder rausgehen, sollten da zwei Gigabyte eigentlich auch locker reichen. Das alles unter der Annahme, dass du kein extrem großes Setup baust.

Nein, mit FreeBSD 7.2 kann man sowas leider nicht Jailen. FreeBSD 8.0 legt mit seiner Netzwerkstackvirtualisierung die technischen Grundlagen dazu, allerdings weiß leider nicht, ob diese die Traffic Shaper und Paketfilter bereits mit abdeckt. Grundsätzlich ist da aber auch nicht viel drin zu sehen dort etwas zu Jailen, da die Pakete den Kernel nie verlassen. Du hast also normalerweise für den Shaper selbst gar keine Userland-Dienste laufe, die du wegsperren könntest.
 
Zurück
Oben