Limitar a largura de banda de saída em uma interface específica

32

Gostaria de saber a maneira mais fácil de limitar a largura de banda de saída para uma interface. Quero limitar a velocidade da porta de saída para que as transferências de arquivos entre meus servidores não falhem durante o horário de pico.

Qual é a solução mais fácil? Eu sei que poderia usar, iptablesmas estou procurando uma instalação / configuração simples.

Gabe
fonte
HTB funciona muito bem. Limitação de taxa muito flexível. sourceforge.net/projects/htbinit

Respostas:

37

ethtool

Você pode alterar a velocidade agregada da porta da NIC usando ethtool.

$ sudo ethtool -s eth0 speed 10

Isso definirá a porta para 10 MB, por exemplo.

maravilhoso

Você também pode usar a ferramenta wondershaperpara fazê-lo. NOTA: A velocidade deve estar em kilobits por segundo.

$ sudo wondershaper eth1 downspeed upspeed

Por exemplo:

$ sudo wondershaper eth0 10000 280

gotejar

Uma terceira opção é Trickle . O truque pode ser usado por programa pelos usuários ou como um daemon que limita completamente a NIC.

Modo de usuário - página de manual trickle

$ sudo trickle -d 20 -u 20 wget http://www.google.com/bigfile

Acelera 20K / s no tráfego para cima e para baixo por isso wget, tudo o mais não será limitado.

Modo daemon - página de manual enganada

No modo daemon, trickledpode limitar um grupo de programas a um limite fixo de largura de banda. Para iniciar o daemon, execute o comando trickled:

$ sudo trickled -d 20 -u 20

modelador

Uma quarta opção é o pyshaper . É uma opção única entre as opções, pois inclui a GUI e monitora e define dinamicamente a largura de banda ao longo do tempo. Você pode conferir a página de manual do pyshaper para mais detalhes.

                                            pyshaper gui

Referências

slm
fonte
Limitar o uso da largura de banda dos aplicativos problemáticos via cgroups provavelmente também valeria a pena se o kernel o suportar.
Bratchley
O wondershaper não está funcionando Não sei por que (o `wondershaper eth0 1000 1000` não tem largura de banda da Internet igual ao` sudo trickled -d 20 -u 20`.) Preciso limitar uma interface de rede. largura de banda, não apenas aplicativos específicos. como pode fazer isso?
Arash
trickle não funcionou para mim, mas o wonderershaper fez o truque!
peschü
1

O Wondershaper foi editado pela última vez em 2002, mas ainda funciona no Fedora 21 hoje. Mas observe, existem apenas algumas opções disponíveis como argumentos e você não pode especificar a velocidade de upload / download na linha de comando, conforme especificado aqui - pelo menos, não na versão de download 1.1a, lançada em 16 de abril de 2002. É necessário editar o arquivo e é um script de shell. Não é difícil para quem conhece um pouco de concha.

O uso é:

wondershaper (este definirá sua largura de banda de acordo com os valores no arquivo)

wondershaper status
wondershaper stop

Você pode usá-lo enquanto o link estiver ativo, o que é legal.

Mike S
fonte
1

Outra opção é o ' iproute2 ', que parece ser uma ferramenta de roteamento / modelagem de tráfego madura e amplamente disponível. Eu o encontrei como um RPM (provavelmente muitos outros pacotes também, não parecia). No momento da redação deste documento, a versão mais recente era 4.4.0, criada em 25 de janeiro de 2016.

Observando a sintaxe da configuração, ela parece ser relativamente simples (embora não tão simples quanto ifconfigou route.)

Verde
fonte
6
Sua resposta não aborda como alguém realmente usaria o iproute2 para limitar a largura de banda de saída. Você pode elaborar por favor?
Michael