Como o excesso de largura de banda é distribuído no linux htb?

5

Digamos que eu tenha 100 kbps de largura de banda

                - Root - 100kbps
                /       \
               /         \
              /           \
             /             \
            /               \
           /                 \
Assured  30kbps             10kbps

E eu asseguro Classe A 30kbps e Classe B 10kbps. 60kbps são a reserva ou o excesso de largura de banda

No manual do HTB , ele diz

Any unused bandwidth can be used by any class which needs it (in proportion of its allocated share).

No entanto, quando eu corro o seguinte teste, que é ilustrado na arte ascii acima:

tc qdisc add dev eno1 root handle 1: htb
tc class add dev eno1 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps
tc class add dev eno1 parent 1:1 classid 1:10 htb rate 10kbps ceil 100kbps
tc class add dev eno1 parent 1:1 classid 1:20 htb rate 30kbps ceil 100kbps
tc filter add dev eno1 protocol ip parent 1:0 prio 1 u32 match ip dport 8000 0xffff flowid 1:10
tc filter add dev eno1 protocol ip parent 1:0 prio 1 u32 match ip dport 8001 0xffff flowid 1:20

Eu recebo os seguintes resultados: 56kbps para a classe A e 37kbps para a classe B

Qual é uma proporção de ~ 1,5, enquanto eu esperava que a proporção fosse de 3: 1, como a alocação inicial.

Parece que os 30 e 10 foram servidos, então o excesso foi dividido igualmente entre as duas classes, o que faz sentido, pois no código diz que a árvore RedBlack segurando essas duas classes, o scheduler faz um RR nelas. / p>

Minha pergunta é o excesso de largura de banda dividido igualmente como resultados e código sugerir? (talvez eu tenha entendido mal o código)

Ou devo esperar uma proporção de 3: 1 entre as classes A e B?

    
por Tony Tannous 19.06.2018 / 16:59

2 respostas

3

Veja o "quantum" nos documentos do HTB. Todo o bw não alocado é manipulado pelo algoritmo WRR de acordo com os quantums da classe.

    
por 26.06.2018 / 10:33
0

Tanto quanto sei, a "quota atribuída" significa ceil. Então, se você quer a proporção de 3: 1, você precisa escrever:

tc class add dev eno1 parent 1:1 classid 1:10 htb rate 10kbps ceil 100kbps
tc class add dev eno1 parent 1:1 classid 1:20 htb rate 30kbps ceil 300kbps

Como a classe raiz tem um ceil a 100kbps, ele não oferecerá mais de 100kbps, e a opção de 300kbps está aqui apenas para especificar a proporção.

    
por 26.06.2018 / 04:06