2009-10-10 24 views
5

Wo kann ich etwas über das Steuern/Abfragen der Netzwerkschnittstelle unter Linux erfahren? Ich möchte spezifische Upload-/Download-Geschwindigkeiten für Anwendungen erhalten und eine Geschwindigkeitsbegrenzung für eine bestimmte Anwendung durchsetzen.Traffic Shaping unter Linux

Ich würde besonders gerne Informationen, die mir helfen können, eine Traffic-Shaping-Anwendung mit Python schreiben.

Antwort

6

Sie möchten die iproute2-Suite, in der Sie den Befehl tc verwenden. tc nachgucken wie

tc class add dev eth2 parent 1: classid 1:1 htb rate 100Mbit ceil 100Mbit quantum 1600 

an existing Python traffic-shaping application Hier ist die iproute2 verwendet.

+0

+1 für Python-Zeiger. – whatnick

6

Es ist eigentlich ziemlich hart Forming pro Anwendung mit den Linux-Kernel-Tools, es sei denn, die Anwendung verwendet bestimmte IP-Adressen und/oder Ports, die Sie anpassen können.

Angenommen, dass dies der Fall ist, dann müssen Sie auf iptables und insbesondere fwmarks lesen. Sie müssen auch auf tc nachlesen. In Kombination können diese zwei Werkzeuge tun, was Sie wollen. Die Linux Advanced Routing & Traffic Control ist ein guter Anfang.

Angenommen, Ihre Anwendung verwendet keine vorhersehbaren Ports/IP-Adressen, dann müssen Sie einen Userspace-Shaper wie Trickle verwenden. Dies fügt sich zwischen der Anwendung und dem Kernel ein und formt den Datenverkehr für diese Anwendung im Benutzerbereich.

Ich glaube nicht, dass es irgendwelche direkte Python-Bindungen für irgendwelche dieser Werkzeuge gibt, aber es wäre einfach, sie mit Python zu skripten und die ausführbaren Dateien direkt aufzurufen.

+1

iptables kann auf uid/gid für lokal generierten Datenverkehr abgleichen. Dies ist eine bequeme Möglichkeit, bestimmte Anwendungen zu bearbeiten, sofern Sie die Benutzer-/Gruppenkonfiguration der Implementierungsumgebung steuern können. –

0

Gibt es einen Grund, warum Sie Python verwenden möchten? Wie erwähnt, wird es wahrscheinlich nur zu bereits entwickelten Werkzeugen für diesen Zweck reichen. wenn man sich aber anschaut, kann man Dinge wie Click! modular router, XORP, und andere finden, dass ein Drop-in für Dinge bereitstellen möchten Sie tun - nicht zu erwähnen, alle Vorschläge bereits vorgesehen (wie iptables und tc)

+0

Es könnte für die Wartbarkeit sein. In einem Python-Shop werden andere Benutzer schneller produktiv, wenn es einen Python-Wrapper gibt. – Dave