QoS com qdiscs do TC: é possível que TODAS as conexões de saída tenham x limite de velocidade por IP exclusivo?

2

Estou tentando configurar a QoS no meu VPS para que eu possa ter uma nova conexão de saída com um IP exclusivo com velocidade x limitada.

Por exemplo:

  • tem 5 IPs públicos solicitando dados do meu VPS.
  • Quando o VPS envia dados de volta para cada um desses IPs, cada IP obtém 10mbps de velocidade de saída de banda dedicada.
  • Nunca elimine pacotes, em vez disso, coloque-os na fila se o cliente ultrapassar 10mbps.

Eu não quero limitar toda a porta eth0 a 10mbps de velocidade de saída, eu quero que cada IP público individual obtenha 10mbps.

Tenho IP públicos frequentemente diferentes em contato com meu VPS, portanto, prefiro não ter que escrever regras que sejam estáticas, o que me forçará a escrever individualmente cada regra de largura de banda por IP.

Isso é possível com os qdiscs do TC?

Eu examinei o que parece ser a configuração típica de qdics do HTB que me permite ter filtros etc. Mas parece que não consigo ver um exemplo ou literatura que descreva o que eu quero.

Estou usando o servidor Ubuntu 14.04.

UPDATE

Eu fiz o seguinte quando entendi a maneira como os qdiscs do TC funcionam um pouco melhor.

comandos que usei para uma configuração básica que parece funcionar sem problemas, já que os pacotes não estão caindo, mas entrando no token bucket (observação: isso não é altamente otimizado, mas parece funcionar muito bem):

tc qdisc add dev eth0 root handle 1: htb default 11
tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit
tc class add dev eth0 parent 1: classid 1:2 htb rate 20mbit
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 1.2.3.4 flowid 1:1
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 2.3.4.5 flowid 1:2
    
por RCG 29.01.2015 / 22:18

1 resposta

1

Eu não conheço um QDISC que faria isso diretamente. Com o CBQ / HTB / HFSC, na melhor das hipóteses você pode criar um número limitado de classes de 10mbps e, em seguida, hash de IPs de filtro para eles. Além das colisões de hash que obviamente aconteceriam, isso funcionaria.

Com alguma sorte, você pode definir esses limites diretamente na fonte (como no servidor da Web).

Mas se não for realmente sobre limitar a taxa, mas manter as coisas justas entre os clientes, talvez você esteja melhor com o SFQ / ESFQ. Embora não limite, fornece um tipo de equilíbrio.

    
por 30.01.2015 / 00:45