2009-10-10 31 views
5

從哪裏可以瞭解在Linux下控制/詢問網絡接口?我想獲得特定的應用程序上傳/下載速度,併爲特定應用程序強制實施速度限制。Linux下的流量整形

我特別喜歡可以幫助我使用Python編寫流量調整應用程序的信息。

回答

6

您需要iproute2套件,您可以在其中使用tc命令。 TC命令看起來像

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

這裏的an existing Python traffic-shaping application使用iproute2的。

+0

+1爲python指針。 – whatnick 2009-10-10 19:06:52

6

實際上,使用Linux內核工具對每個應用程序進行整形非常困難,除非應用程序使用特定的IP地址和/或可匹配的端口。

假設是這種情況,那麼您需要閱讀iptables,特別是fwmarks。您還需要閱讀tc。這兩種工具結合使用可以做你想做的事。 Linux Advanced Routing & Traffic Control是一個很好的開始。

假設您的應用程序不使用可預測的端口/ IP地址集,那麼您將需要使用像Trickle這樣的用戶空間整形器。這會在應用程序和內核之間插入,並在用戶空間中爲該應用程序構建流量。

我不認爲這些工具有任何直接的python綁定,但使用python編寫腳本並直接調用可執行文件很簡單。

+1

iptables可以在uid/gid上匹配本地生成的流量。如果您可以對部署環境的用戶/組設置進行一些控制,那麼這可以方便地在特定應用程序上執行工作。 – 2009-10-14 23:01:41

0

是否有任何理由希望使用python?如前所述,它可能只是爲了這個目的而轉交已經開發的工具。但是,如果你看看周圍,你可以找到的東西,如Click! modular routerXORP,和其他人的事情提供了一個活動的,你想做的事 - 更不用提已經提供的所有建議(如iptablestc

+0

這可能是爲了可維護性。在python商店中,如果有python包裝器,其他用戶將更快地生產。 – Dave 2012-12-10 12:00:21