Controle percentual de largura de banda dinâmica com tc

1

Alguém sabe se tc (iproute2) pode ser usado para dividir percentualmente a largura de banda disponível atualmente? Estamos em uma conexão GPRS na qual a largura de banda disponível muda com frequência. O que eu quero alcançar é o seguinte:

  • Saída para a porta x: 60% da largura de banda disponível
  • Saída para a porta y: 30% da largura de banda disponível
  • Todo o tráfego de saída: 10% da largura de banda disponível

Com o tc, consegui alcançar algo nessa direção usando um qdisc htb e criando 3 classes com uma taxa de 60/30/10 kbps. Usando um teto de 100kbs, as classes usariam qualquer largura de banda disponível abaixo de 100kbs, se disponível, mas nunca mais.

No entanto, esse tipo de largura de banda configurada estaticamente não é uma solução que funcionaria para nós, já que nossa largura de banda é extremamente variável e não queremos configurar um teto. Nosso objetivo é usar a largura de banda disponível o máximo possível. Idealmente, não queremos configurar uma taxa em bytes / segundos, mas em uma porcentagem. Isso é possível? Eu procurei o qdisc do prio, mas a documentação realmente está faltando.

Obrigado!

    
por Jeroen 01.02.2016 / 12:41

2 respostas

1

Após algumas pesquisas e graças ao comentário da EEAA, é claro que dividir a largura de banda disponível por cento não é possível.

    
por 05.02.2016 / 09:12
0

Você deve ser capaz de moldar seu tráfego com o hfsc: o tamanho da largura de banda de linkshare m2 deve ser percentual. Aqui está alguma documentação: ( 1 , 2 , 3 )

Você pode experimentar este código, por exemplo:

iptables -t mangle -A POSTROUTING -p tcp --dport 80 -j CLASSIFY --set-class 1:100
iptables -t mangle -A POSTROUTING -p tcp --dport 80 -j ACCEPT
iptables -t mangle -A POSTROUTING -p tcp --dport 22 -j CLASSIFY --set-class 1:200
iptables -t mangle -A POSTROUTING -p tcp --dport 22 -j ACCEPT
iptables -t mangle -A POSTROUTING -j CLASSIFY --set-class 1:300

tc qdisc del dev enp0s3 root
tc qdisc add dev enp0s3 root handle 1:0 hfsc default 100

tc class add dev enp0s3 parent 1:0 classid 1:10 hfsc ls m2 1000kbit

tc class add dev enp0s3 parent 1:10 classid 1:100 hfsc ls m2 600kbit
tc qdisc add dev enp0s3 parent 1:100 handle 110: fq_codel

tc class add dev enp0s3 parent 1:10 classid 1:200 hfsc ls m2 300kbit
tc qdisc add dev enp0s3 parent 1:200 handle 210: fq_codel

tc class add dev enp0s3 parent 1:10 classid 1:300 hfsc ls m2 100kbit
tc qdisc add dev enp0s3 parent 1:300 handle 310: fq_codel
    
por 05.02.2016 / 17:16