Limitando a largura de banda da interface com tc no Linux

8

Eu tenho um roteador linux que tem uma interface de 10GBe no lado de fora e interfaces de ethernet Gigabit ligadas no interior.

No momento, temos orçamento para 2GBit / s. Se excedermos essa taxa em mais de 5% da média por um mês, seremos cobrados pela capacidade total de 10Gbit / s. Um passo em frente em termos de dólares.

Então, quero limitar isso a 2GBit / s na interface de 10GBe.

O filtro TBF pode ser ideal, mas esse comentário é preocupante.

On all platforms except for Alpha, it is able to shape up to 1mbit/s of normal traffic with ideal minimal burstiness, sending out data exactly at the configured rates.

Devo estar usando o TBF ou algum outro filtro para aplicar essa taxa à interface e como eu faria isso? Eu não entendo o exemplo dado aqui: Traffic Control HOWTO

Em particular "Exemplo 9. Criando um TBF de 256kbit / s"

tc qdisc add dev eth0 handle 1:0 root dsmark indices 1 default_index 0
tc qdisc add dev eth0 handle 2:0 parent 1:0 tbf burst 20480 limit 20480 mtu 1514 rate 32000bps

Como é calculada a taxa de 256K bit / s? Neste exemplo, 32000bps = 32k bytes por segundo. Desde tc usa bps = bytes por segundo. Eu acho que estouro e limite entram em jogo, mas como você escolheria números sensatos para atingir a taxa desejada?

Isso não é um erro. Eu testei isso e deu uma taxa próxima de 256K, mas não exatamente isso.

EDITAR

Depois de fazer muitas leituras e testes, cheguei à conclusão de que o TBF é inadequado por causa da largura de banda envolvida. Quaisquer que sejam as configurações que eu tentei, não consegui obter TBF para fornecer largura de banda > ~ 50Mbit / s. De acordo com lartc.org/lartc.pdf, o método RED é melhor para dar forma à largura de banda > 100Mbit / s, então tentarei usar isso.

No entanto, escolha o valor a min (ou seja, o tamanho médio da fila em que a marcação se torna uma possibilidade). O exemplo dado é isto:

You should set the min by calculating that highest acceptable base queueing latency you wish, and multiply it by your bandwidth. For instance, on my 64kbit/s ISDN link, I might want a base queueing latency of 200ms so I set min to 1600 bytes.

  1. como você escolheria a maior latência de enfileiramento de base aceitável? O exemplo é para 64kbit / s.

  2. O que seria aceitável para 2Gbit / s?

por Matt 28.11.2012 / 01:43

3 respostas

2

  1. Você deve escolher latência de fila aceitável com base no tipo de tráfego.

    • Por exemplo, para filas de voz mais que 200ms já é um problema.
    • Embora ter um buffer de 500ms para o tráfego de ftp / torrent não seja um grande problema.
  2. A latência / estratégia de filas é uma questão de tipo de tráfego e não de velocidade da interface. Por exemplo, VOIP, talvez, não deve ser enfileirado. Infelizmente a documentação do tc RED não é muito clara, é melhor você ler algumas informações do RED no site da Juniper / Cisco e aplicar esse conhecimento a tc.

por 12.12.2013 / 20:21
1

How is the 256K bit/s rate calculated? In this example, 32,000bps = [32,000] bytes per second.

Sim, a matemática está correta. Se você está vendo um número próximo a 256k, provavelmente está um pouco abaixo. De onde você está medindo esse número? Se for downlaod do seu navegador ou algo semelhante, eles não contam a sobrecarga de cabeçalhos de pacotes, mas tc conta tudo.

    
por 28.11.2012 / 07:08
0

Aqui está uma explicação completa, que pode ajudar você a entender tudo link

    
por 02.05.2015 / 01:50