A classe pai no meu script de regras de TC não funciona como é garantido! Alguém pode me dizer o que está errado com o meu script? Aqui estão alguns detalhes sobre a minha pergunta:
No capítulo "9.5.4.4. Configuração de amostra" de Roteamento avançado de Linux & HOWTO DE CONTROLE DE TRÂNSITO , vemos que podemos limitar a taxa total de classes secundárias especificando uma classe pai, mesmo que as taxas de soma das classes filhas sejam maiores que as da classe pai.
Mas eu tentei na minha máquina, apenas para descobrir que não funciona como esperado. Abaixo está meu script, a porta 22 é usada pelo SecureCRT. A classe pai limita as portas 80 e 22 a uma taxa total de 100 KB, e as classes filhas as limitam a 60 KB e 80 KB, respectivamente.
# tc qdisc add dev eth0 root handle 1:0 cbq bandwidth 10Mbit \
avpkt 1000 cell 8
# tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 10Mbit \
rate 800kbit weight 80kbit prio 8 allot 1514 cell 8 maxburst 20 \
avpkt 1000 bounded
# tc class add dev eth0 parent 1:1 classid 1:3 cbq bandwidth 10Mbit \
rate 480kbit weight 48kbit prio 5 allot 1514 cell 8 maxburst 20 \
avpkt 1000
# tc class add dev eth0 parent 1:1 classid 1:4 cbq bandwidth 10Mbit \
rate 640kbit weight 64kbit prio 5 allot 1514 cell 8 maxburst 20 \
avpkt 1000
# tc qdisc add dev eth0 parent 1:3 handle 30: sfq
# tc qdisc add dev eth0 parent 1:4 handle 40: sfq
# tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip \
sport 80 0xffff flowid 1:3
# tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip \
sport 22 0xffff flowid 1:4