traffic shaping sotto Linux
-
20-09-2019 - |
Domanda
Dove posso conoscere il controllo / interrogare l'interfaccia di rete sotto Linux? Mi piacerebbe ottenere applicativi velocità di upload / download specifici, e far rispettare un limite di velocità per una specifica applicazione.
Mi piacerebbe piace particolarmente informazioni che possono aiutarmi a scrivere un'applicazione traffic shaping utilizzando Python.
Soluzione
Si vuole la suite iproute2, in cui si utilizza il href="http://www.linuxfoundation.org/en/Net:Iproute2_examples" rel="nofollow noreferrer"> tc comando Ecco un'applicazione traffico-shaping Python esistente che utilizza iproute2. tc class add dev eth2 parent 1: classid 1:1 htb rate 100Mbit ceil 100Mbit quantum 1600
Altri suggerimenti
In realtà è molto difficile preannuncia per ogni applicazione utilizzando gli strumenti del kernel Linux, a meno che l'applicazione utilizza gli indirizzi e / o le porte IP specifici è possibile abbinare via.
Supponendo che è il caso, allora avrete bisogno di leggere su iptables
ed in particolare fwmarks. Avrete anche bisogno di leggere su tc
. In combinazione questi due strumenti possono fare quello che vuoi. Il Linux Advanced Routing & Traffic Control è un buon punto di partenza.
Supponendo che l'applicazione non fa uso di un insieme prevedibile di porte / indirizzi IP allora avrete bisogno di utilizzare uno shaper userspace come Trickle . Questo si inserisce tra l'applicazione e il kernel e dà forma al traffico per l'applicazione in userspace.
Non credo che ci siano i binding python dirette di uno di tali strumenti, ma sarebbe semplice script utilizzando Python e solo chiamando direttamente gli eseguibili.
C'è un motivo che si desidera utilizzare Python? Come già detto, è probabile che solo la mano-off per già sviluppato strumenti per questo scopo. Tuttavia, se si guarda intorno, si possono trovare cose come Click! modular router
, XORP
, e altri che forniscono un drop-in per le cose che vuoi fare - per non parlare di tutti i suggerimenti già previste (come iptables
e tc
)