O Traffic shaping no Linux
-
20-09-2019 - |
Pergunta
Onde posso aprender sobre o controle/interrogar a interface de rede no Linux?Gostaria de obter aplicação específica upload/download velocidades, e impor um limite de velocidade para uma aplicação específica.
Eu particularmente gosto de informações que podem me ajudar a escrever um traffic shaping aplicativo usando Python.
Solução
Você quer a suíte iproute2, na qual você usa o tc comando. Comandos TC parecem
tc class add dev eth2 parent 1: classid 1:1 htb rate 100Mbit ceil 100Mbit quantum 1600
Aqui está um aplicativo existente em forma de tráfego Python que usa iproute2.
Outras dicas
É realmente muito difícil de moldar por aplicação usando o kernel do linux ferramentas, a menos que o aplicativo usa endereços ip específicos e/ou portas que você pode correspondência.
Partindo do princípio que é o caso, então você precisa ler sobre iptables
e, em particular, fwmarks.Você também vai precisar de ler sobre tc
.Em combinação dessas duas ferramentas pode fazer o que quiser.O Linux Advanced Routing & Controle De Tráfego é um bom lugar para começar.
Assumindo que o seu aplicativo não usa um previsível conjunto de portas/endereço ip, em seguida, você precisará usar um espaço de utilizador shaper como Trickle.Este insere-se entre a aplicação e o kernel e formas o tráfego para aplicação em espaço de usuário.
Eu não acho que há qualquer relação direta python bindings for alguma destas ferramentas, mas seria simples para o script em python e só chamar os executáveis diretamente.
Há algum motivo para você desejar usar o Python? Como mencionado, provavelmente será transferido apenas para ferramentas já desenvolvidas para esse fim. No entanto, se você olhar em volta, poderá encontrar coisas como Click! modular router
, XORP
, e outros que fornecem uma queda para coisas que você deseja fazer - sem mencionar todas as sugestões já fornecidas (como iptables
e tc
)