Hallo,
ich habe einen Server mit Debian Wheezy 7.7 (aktuelle Stable) und 2 Netzwerkkarten.
Der Server dient als Router ins Internet, das heißt, der gesamte Traffic vom internen Netzwerk läuft darüber.
Nun möchte ich einem bestimmten Client einen gewissen Datendurchsatz sicherstellen, zB. 200Kb down- und 100kB upload (ins Internet). Dieser Client hat über iptables (forward) einen direkten Zugang vom Internet. Alle anderen Clients können den Rest nutzen, aber der eine Client muss immer min. diesen Durchsatz haben.
Wie kann ich das am besten realisieren?
Danke im Voraus
Mudla
Datendurchsatz auf ein bestimmtes Minimum setzen
-
- Beiträge: 138
- Registriert: 31.03.2011 12:51:42
Re: Datendurchsatz auf ein bestimmtes Minimum setzen
Hmm, ich kann dir ein paar Stichworte liefern, aber wie man es jetzt genau umsetzt, weiß ich gerade leider auch nicht...
tc ; traffic control ; traffic shaping ; wondershaper
tc ; traffic control ; traffic shaping ; wondershaper
Debian 7 Wheezy mit Gnome 3 auf Xeon 1230V2, Asus P8H77, 16 GB DDR3, 120 GB Samsung 830 SSD, Gigabyte GTX 660
Re: Datendurchsatz auf ein bestimmtes Minimum setzen
Du kannst mit iptables(8) den Client raussuchen und einen Marker auf alle seine Verbindungen setzen. Den kannst du wiederum mit tc(8) auslesen und entsprechend alle nicht-matchenden Verbindungen auf "Normalgeschwindigkeit der Leitung minus Reserve" heruntershapen, sodass (zumindest bei stabilen Bruttodatenraten) fuer den speziellen Client ein bestimmter Trafficdurchsatz reserviert wird.
Hier [1] wird das aehnlich gemacht, die Seite habe ich auf der Suche nach hilfreicher Doku in meinen Bookmarks entdeckt.
Gruss Cae
[1] http://sirlagz.net/2013/01/27/how-to-tu ... fi-router/
Hier [1] wird das aehnlich gemacht, die Seite habe ich auf der Suche nach hilfreicher Doku in meinen Bookmarks entdeckt.
Gruss Cae
[1] http://sirlagz.net/2013/01/27/how-to-tu ... fi-router/
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Datendurchsatz auf ein bestimmtes Minimum setzen
Hallo,
danke erstmal für die Antworten. Ich werd mir die genannten Programme mal näher ansehen.
@Cae:
Der Link sieht schon mal vielversprechend aus, aber ich hab leider keine stabile Bandbreite. Mal hab ich 3Mbit download, mal 5Mbit, der Upload schwankt auch. Deshalb wird das schwierig, ein gutes Mittelmaß zu finden.
Eigentlich dachte ich eher an den umgekehrten Weg, dass wenn der Client grad keine Verbindungen hat, alle die volle Bandbreite haben, wenn aber der eine Client Verbindungen hat, dann soll ihm eine gewisse Bandbreite zur Verfügung stehen.
Grüße
Mudla
danke erstmal für die Antworten. Ich werd mir die genannten Programme mal näher ansehen.
@Cae:
Der Link sieht schon mal vielversprechend aus, aber ich hab leider keine stabile Bandbreite. Mal hab ich 3Mbit download, mal 5Mbit, der Upload schwankt auch. Deshalb wird das schwierig, ein gutes Mittelmaß zu finden.
Eigentlich dachte ich eher an den umgekehrten Weg, dass wenn der Client grad keine Verbindungen hat, alle die volle Bandbreite haben, wenn aber der eine Client Verbindungen hat, dann soll ihm eine gewisse Bandbreite zur Verfügung stehen.
Grüße
Mudla
Re: Datendurchsatz auf ein bestimmtes Minimum setzen
Ich glaube das geht nicht so enfach. Du kannst etweder Einen festen Kanal mit 200Kbps einrichten. Oder allen Traffic vom client bevorzugen. Aber 200Kbps oder mehr ist schwer.
Das was am nächsten an deine implementation kommt:
Mit tc queue mit 2 sub queues: Die eine bekommt so viel höhere Prio, dass die praktisch immer vorrang. Alls mit einem bestimmten mark geht ind die Bevorzugte.
Mit iptables tust du dann mit bis zu einem bestimmten (hashlimit) die Pakete von einem bestimmten Client (-s) marken (-mark).
Problem: Schießt dir der Cliebt über die 200Kbps raus, geht er in nicht bevorzugte queue. So weit so gut. Nur wenn er dann wider drunter fällt, überholen deine Paket plötzlich die anderen, was bei TCP zu nem ordentlichen performance einbruch führt.
Du kannst versuchen dem entgegen zu wirken, indem du die queues sehr klein hälltst.
Also ich würde das so machen:
2 queues In die eine kommt der eine, in die andere alles andere. Dann verteilst du 10:1 für die andere. Dann bekommt der Client auch bei 3Mbit noch seine 300Kbps. und bei 5 halt entsprechend mehr. Ungenutzte ressourcen bekommt die jeweils andere queue. Aber: Wenn beide mit volldamf senden bekommt der "bevorzugte Client" eben auch nur 300Kb.
Das was am nächsten an deine implementation kommt:
Mit tc queue mit 2 sub queues: Die eine bekommt so viel höhere Prio, dass die praktisch immer vorrang. Alls mit einem bestimmten mark geht ind die Bevorzugte.
Mit iptables tust du dann mit bis zu einem bestimmten (hashlimit) die Pakete von einem bestimmten Client (-s) marken (-mark).
Problem: Schießt dir der Cliebt über die 200Kbps raus, geht er in nicht bevorzugte queue. So weit so gut. Nur wenn er dann wider drunter fällt, überholen deine Paket plötzlich die anderen, was bei TCP zu nem ordentlichen performance einbruch führt.
Du kannst versuchen dem entgegen zu wirken, indem du die queues sehr klein hälltst.
Also ich würde das so machen:
2 queues In die eine kommt der eine, in die andere alles andere. Dann verteilst du 10:1 für die andere. Dann bekommt der Client auch bei 3Mbit noch seine 300Kbps. und bei 5 halt entsprechend mehr. Ungenutzte ressourcen bekommt die jeweils andere queue. Aber: Wenn beide mit volldamf senden bekommt der "bevorzugte Client" eben auch nur 300Kb.
rot: Moderator wanne spricht, default: User wanne spricht.