En realidad, es una forma bastante difícil por aplicación utilizando las herramientas del kernel de Linux, a menos que la aplicación utilice direcciones IP y/o puertos específicos con los que pueda coincidir.
Suponiendo que es el caso, tendrá que leer iptables
y, en particular, fwmarks. También necesitará leer en tc
. En combinación, esas dos herramientas pueden hacer lo que quieras. El Linux Advanced Routing & Traffic Control es un buen lugar para comenzar.
Suponiendo que su aplicación no usa un conjunto predecible de puertos/direcciones IP, entonces necesitará usar un modelador de espacio de usuario como Trickle. Esto se inserta entre la aplicación y el núcleo y da forma al tráfico para esa aplicación en el espacio de usuario.
No creo que haya ningún enlace directo de python para ninguna de esas herramientas, pero sería sencillo crear las secuencias de comandos utilizando python y simplemente llamar directamente a los ejecutables.
+1 para punteros de pitón. – whatnick