Tentando entender a taxa de subclasses de HTB

4

Atualmente estou estudando a oportunidade de usar um servidor Ubuntu para fornecer QoS em vez do meu roteador de classe do consumidor. Li muitos recursos sobre as disciplinas de enfileiramento e HTB - que parecem ser o que eu preciso para minhas necessidades de QoS, e mesmo que pareça claro agora, ainda há algo que os bugs me com taxa de subclasses.

Vamos dar uma olhada nesta configuração de amostra encontrada como resposta a essa pergunta :

tc class add dev eth0 parent 1: classid 1:1 htb rate 90kbps ceil 90kbps
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30kbps ceil 60kbps
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 30kbps ceil 60kbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 30kbps ceil 60kbps

Isto é muito simples quando você sabe como tc funciona: as três subclasses têm uma largura de banda garantida de 30kbps, mas podem emprestar mais 30 kbps de largura de banda disponível de sua classe pai (30 + 30 = 60kbps ceil).

Este exemplo faz sentido para mim. A largura de banda total da classe pai é de 90kbps e cada uma das três subclasses tem garantia de 30kbps - 3 x 30kbps = 90kbps.

Agora, vamos dar uma olhada neste outro exemplo deste tutorial :

# tc class add dev eth0 parent 1: classid 1:1 htb rate 6mbit burst 15k
# tc class add dev eth0 parent 1:1 classid 1:10 htb rate 5mbit burst 15k
# tc class add dev eth0 parent 1:1 classid 1:20 htb rate 3mbit ceil 6mbit burst 15k
# tc class add dev eth0 parent 1:1 classid 1:30 htb rate 1kbit ceil 6mbit burst 15k

É onde as coisas estão ficando confusas para mim. A primeira subclasse é garantida uma largura de banda de 5mbit, enquanto a segunda é garantida a largura de banda de 3mbit. Mas a classe pai só tem uma largura de banda de 6mbit!

Qual é o propósito de tal regra? Nenhuma das subclasses poderá obter sua largura de banda garantida.

Ainda mais confuso é a conclusão do tutorial:

HTB certainly looks wonderful – if 10: and 20: both have their guaranteed bandwidth, and more is left to divide, they borrow in a 5:3 ratio, just as you would expect.

Como as duas classes podem ter sua largura de banda garantida e seu pai ainda tem largura de banda para emprestar?

Sem dúvida, há algo que sinto falta aqui. Poderia ser o tutorial que é falho, mas eu encontrei um monte de outras amostras com o mesmo tipo de configuração confusa - aqui por exemplo:

/sbin/tc class add dev eth3 parent 1: classid 1:1 htb rate 2000kbit
/sbin/tc class add dev eth3 parent 1:1 classid 1:10 htb prio 1 rate 1500kbit ceil 1950kbit
/sbin/tc class add dev eth3 parent 1:1 classid 1:20 htb prio 2 rate 500kbit ceil 1600kbit

Com esta configuração, em qual caso a classe 1:20 poderia emprestar largura de banda à classe pai (é permitido emprestar até 1600kbit) já que a largura de banda garantida de seu irmão é 1500kbit - e 1500kbit de seu irmão mais 500kbit de sua própria largura de banda garantida já correspondem à largura de banda de 2000kbit pai.

Alguém pode esclarecer a situação?

    
por Eric MORAND 06.05.2014 / 16:49

1 resposta

1

Você entendeu como funciona o htb.
No entanto, você precisa olhar mais de perto seus exemplos: ambas as classes pai não possuem a opção ceil e, em seguida, usarão mais largura de banda, se disponível. Se no último exemplo, a classe pai tinha rate 2000kbit ceil 2000kbit , a classe filha não conseguiria emprestar muita largura de banda.

No entanto, eu concordo que no exemplo de 5 + 3Mbit, ambas as classes não terão a largura de banda garantida se a largura de banda for maior que 6Mbit.
Este é provavelmente um erro.

    
por 05.01.2017 / 14:44