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?