Was ist die beste Lösung für die Verkehrssteuerung in einem großen System (ca. 2000 Benutzer)?

11

Folgende Situation: Wir sind eine Gruppe von Studenten, die die Internetverbindung für die örtlichen Wohnheime verwalten, mit insgesamt etwa 2000 Endbenutzern.

Wir haben ein Verkehrspunktsystem, jeder MB Down- oder Upload kostet Punkte, neue Punkte werden stundenweise hinzugefügt. Im Moment blockieren wir den Internetzugang eines Benutzers, wenn er alle seine Punkte ausgegeben hat (indem wir ihn in eine REJECT-Richtlinie in iptables auf unserem Debian-Gateway-Router einfügen).

Wir möchten nur die Bandbreite eines Benutzers begrenzen. Was ist der beste Weg, dies zu tun?

Die einfache Antwort wäre, ein Ratenlimit für den Switch-Port des Benutzers festzulegen (meistens Cisco Catalyst 3550s). Dies ist jedoch unerwünscht, da der Verkehr innerhalb unseres eigenen Netzwerks und zum Universitätsnetzwerk unbegrenzt bleiben sollte. Gibt es eine Möglichkeit, die Bandbreite nur für Pakete mit einem bestimmten Ziel- oder Quell-IP-Bereich (also sowohl Egress als auch Ingress) in Cisco IOS zu begrenzen? Ich konnte nichts finden.

Die andere Möglichkeit wäre, den Datenverkehr auf unserem Gateway-Router zu steuern. Mir fallen mehrere Lösungen ein:

  • tc oder tcng - beide scheinen eine eher arkane Syntax zu haben und bieten keine guten Funktionen für die Kontrolle des IP-Verkehrs. Eine dedizierte QDisc für so viele Leute würde den Router wahrscheinlich ziemlich verlangsamen. Darüber hinaus ist die Dokumentation zu beiden ziemlich veraltet.

  • shorewall - scheint eine ziemlich ordentliche Syntax für Konfigurationen zu haben, ich bin mir jedoch nicht sicher, ob es diese Menge an Verkehr und Benutzern verarbeiten kann und ob es für die Begrenzung des IP-Verkehrs geeignet ist

  • pfSense - sieht aus wie ein Betriebssystem für Zwecke wie das unsere. Es würde jedoch erfordern, dass wir unseren Gateway-Router vollständig neu installieren. Wir haben keine anderen BSD-Systeme und pfSense müsste über sehr gute Funktionen zur Verkehrsabrechnung verfügen (wir verwenden dort derzeit fprobe-ulog und ulog-acctd).

Was ist deine Erfahrung? Welche Lösung entspricht unseren Anforderungen und kann am einfachsten gewartet werden? Hast du noch andere ideen

Wenn Sie zusätzliche Informationen zu unserem System benötigen, zögern Sie bitte nicht zu fragen.

Danke im Voraus.


EDIT : Ich habe das System mit iptablesund implementiert tc.

Jeder Benutzer hat ein / 28-Subnetz, eine VPN-IP (beide ab 10.0.0.0/8) und eine externe IP, die alle über eine iptables-Kette gesteuert werden. Diese Kette hat nur eine Regel, eine einfache RETURN.

Alle fünf Minuten liest ein Python-Skript die Bytezähler dieser Regeln aus. Es setzt die Zähler zurück und aktualisiert das Verkehrspunktkonto des Benutzers in unserer PostgreSQL-Datenbank.

Wenn der Punktestand eines Benutzers unter einen bestimmten Schwellenwert fällt, werden zwei TC-Klassen für diesen Benutzer erstellt (eine für die eingehende und eine für die ausgehende Schnittstelle auf unserem Gateway-Router). Die IPs werden in TC-Filter eingegeben, die zu diesen Klassen gehören. Die Klassen sind durch einen HTB geschwindigkeitsbegrenzt.

Im Vergleich zum vorherigen System mit fprobe-ulogund ist ulog-acctddies viel schneller, da die Bytezählung von iptables durchgeführt wird.

Die Netzwerkgeschwindigkeit hat sich für unsere Benutzer erheblich verbessert.

Christoph Wurm
quelle

Antworten:

2

Ich bin mir nicht sicher, wie interessiert Sie daran sind, Ihr gesamtes Setup neu zu konfigurieren (dh Debian zu ersetzen) oder wie machbar es wäre, so etwas hinter Ihrem Gateway zu platzieren, aber FreeBSD hat eine Funktion in ipfw, die als Dummynet bekannt ist . Da es sich so anhört, als hätten Sie keine Lust auf einen dedizierten Hardware-Traffic-Shaper, ist dies möglicherweise eine Option für Sie. Wir verwenden es derzeit, um eingehenden und ausgehenden SMTP-Verkehr über eines unserer Proxy-Gateways zu drosseln, um zu verhindern, dass ein veraltetes NFS-Backend-System überfordert wird und anschließend nicht mehr reagiert.

Mit einigen Skripten und einer intelligenten Konfiguration Ihrer Regelsätze wäre es möglich, Tausende einzelner IP-Adressen im Verkehr zu steuern.

brent
quelle
0

Ich muss fragen, was wir verwenden, aber unsere ResTek-Mitarbeiter haben an der Internetgrenze eine Appliance, die Funktionen für die Dienstqualität übernimmt. Es hat eine Standardpriorität für nicht klassifizierte Streams und priorisiert anderen Datenverkehr basierend auf Regeln. Es ist die Prioritätsfunktion, die es wirklich verkauft, da sie auch einen Squid-basierten Caching-Cluster betreiben, der in der Border Appliance als höchste Priorität aufgeführt ist. Die Leute in ihrem Netzwerk haben dann die Wahl, mit normaler (und etwas blöder) Priorität im Internet zu surfen oder den Proxy zu verwenden und eine sehr schnelle Antwort zu erhalten. Sie nehmen auch Prioritätsanforderungen für Spieleserver entgegen, da sie selbstverständlich latenzempfindlich, aber mit geringer Bandbreite sind.

Es gibt eine Menge Arbeit bei der Bearbeitung von Gaming-Server-Anfragen, aber diese bleiben langsam auf der Strecke, da sich immer mehr Spiele von privaten Servern entfernen. Insgesamt höre ich, dass es für sie ziemlich gut funktioniert. Sie können verhindern, dass Bittorrent den gesamten anderen Datenverkehr überflutet, und die YouTube-Ladezeiten der Nutzer schnell halten.

sysadmin1138
quelle
0

Bei so vielen Benutzern werden die meisten einfachen softwarebasierten Dinge zusammenbrechen.

Betrachten Sie Packeteer und ähnliche Geräte. Heutzutage sind sie fast teurer als nur mehr Bandbreite zu kaufen (in den USA und in Europa sind wir armen Leute in Australien immer noch sehr teuer).

LapTop006
quelle
Leider können wir es uns nicht leisten, viel Geld in dieses Projekt zu investieren, weder für einen dedizierten Packet Shaper noch für mehr Bandbreite. Unser System funktioniert derzeit. Die Frage ist, wie wir, anstatt Benutzer zu blockieren, die ihren zugewiesenen Datenverkehr überschritten haben, nur die ihnen zur Verfügung stehende Bandbreite reduzieren können.
Christoph Wurm
0

Dummynet ist meiner Meinung nach ein sehr guter Vorschlag. Aber ich bin mir sicher, dass iptables auch in der Lage sind, den Datenverkehr zu gestalten , sodass Sie dies einfach auf Ihrer Debian-Box tun können.

Monomythos
quelle
0

tc sollte gut funktionieren. Ich glaube, Sie möchten Ihre aktuellen iptables-Regeln so ändern, dass sie den Verkehr markieren und nicht ablehnen. Dann können Sie eine kleine Anzahl von tc-Regeln verwenden, um die Verkehrsformung auf diese markierten Flüsse anzuwenden.

Schauen Sie sich auch ipset an, um die Liste der gedrosselten Benutzer zu verwalten. http://ipset.netfilter.org/

Justin
quelle
0

Trafficpanel scheint eine Lösung zu sein. Unter anderem:

  • Begrenzung der maximalen HTTP-Geschwindigkeit pro Verbindung
  • Begrenzung des Gesamtverkehrs von Webressourcen pro lokalem Netzwerkhost
  • Protokollieren Sie den Internetverkehr pro lokalem Netzwerkhost
  • Begrenzung der maximalen Verkehrsgeschwindigkeit pro lokalem Netzwerkhost
  • Begrenzung des gesamten Internetverkehrs pro lokalem Netzwerkhost

Eigentlich habe ich das Ding noch nie ausprobiert, sieht aber ok aus.

AlekS
quelle