Como ajustar a largura de banda em uma interface de rede Linux?

54

Existe uma maneira de restringir a largura de banda em um NIC no linux? Eu gostaria de poder simular uma conexão arbitrariamente lenta.

    
por Mark Borgerding 28.08.2008 / 04:27

7 respostas

31

O módulo de kernel netem , controlado pela iproute.

Você precisa compilar o Netem com o kernel:

Networking -->
   Networking Options -->
     QoS and/or fair queuing -->
        Network emulator

Uma vez carregado o módulo netem, o tc do iproute permite coisas como:

tc qdisc add dev  tap0 root netem delay 50ms loss 50% 

(perda de pacotes de 50%, atraso extra de 50 ms)

    
por 28.04.2009 / 11:14
27

Lado do cliente, certo?

trickle deve fazer o que quiser. Se você estiver executando o Ubuntu (ou o Debian, eu acho), você pode instalá-lo com sudo apt-get install trickle e depois executá-lo. trickle -s -d 10 -u 10 firefox (ou assim, eu não usei isso há algum tempo) executaria o firefox, limitando sua velocidade de download e upload para 10 kilobytes por segundo.

    
por 28.08.2008 / 04:31
16

Eu encontrei uma maneira de evitar que minha caixa de comer toda a largura de banda disponível na rede usando uma ferramenta chamada 'Wondershaper' no Ubuntu. Eu espero que ele exista em outros Linux também. Eu posso limitar a largura de banda que meu PC doméstico linux pode consumir usando o seguinte comando.

sudo wondershaper eth0 1000 200

Isso limita o limite de download para 1.000 kilobits e uplaod para 200 kilobits. Consulte as man pages do Wondershaper para mais informações / opções.

    
por 20.12.2010 / 10:34
8

O NIST cria um simulador de rede chamado NistNet.

link (link parece morto)

link

A NistNet permite que você faça um roteador que emule um link de comunicação de sua escolha.

Para uma operação mais simples, você o tem em uma caixa com duas placas de rede entre duas redes.

Por exemplo, eu tinha um aplicativo que tinha que funcionar em um link de satélite.

Os dados podem passar pelo link de 2Mbps com latência BIG. O controle tinha que passar por um link de 128kbps, com a mesma latência.

NistNet ajudou a fazer tudo funcionar em 128kbps.

Usando o NistNet eu poderia simular não apenas a largura de banda, mas também a latência, e também descarta pacotes para você, simulando um link ocupado ou não confiável.

Se você quiser simular uma conexão arbitrária, não restrinja apenas a largura de banda, Enrole a latência também.

Não esqueça de fragmentar os pacotes também. Você pode configurar pequenas MTUs agradáveis no link falso.

O IIRC adicionando jitter de pacotes permitirá que você descubra se consegue lidar com pacotes fora de ordem.

    
por 28.08.2008 / 05:08
4

Eu pessoalmente usei o Wondershaper no passado para isso, embora ele tenha sido escrito para um caso de uso oposto - aproveitando ao máximo sua conexão ADSL.

Vou ter que experimentar os outros mencionados aqui.

    
por 01.09.2008 / 22:34
3

Você pode usar o proxy do squid instalado localmente para limitar a largura de banda, por exemplo, para testar uma página da web em um link lento:

  1. Instale o squid proxy da sua distribuição - no meu Fedora foi tão fácil quanto yum install squid .

  2. Adicione o seguinte a /etc/squid/squid.conf :

    delay_pools 1 em delay_class 1 1 em delay_access 1 allow all em delay_parameters 1 16000/16000

    Isso limitará a largura de banda para cerca de 128 kbps (16000 Bps).

  3. Inicie o squid : /etc/init.d/squid start

  4. Configure seu navegador para usar o servidor proxy localhost port 3128 .

por 19.05.2011 / 13:58
3
Ninguém ainda mencionou o ip_relay, chamado "iprelay" nos repositórios do Debian. Ele funciona como um proxy TCP, em vez de interceptar chamadas da mesma forma que trickle , e funciona com qualquer aplicativo que possa usar um proxy (por exemplo, um navegador da Web) ou aceitar uma porta de destino definida pelo usuário , ssh, ftp, curl, et cetera ).

É um pouco mais difícil de configurar, mas muitas vezes funciona em situações em que o fluxo não vai.

    
por 19.04.2012 / 01:51