Testando o Linux HTB fica aquém da expectativa

1

Estou tentando testar o Linux HTB , fazendo o exemplo mais simples apenas para ver se funciona de fato.
Eu estou criando uma raiz e dando a ela 200kbps , então eu crio 3 classes que cada uma recebe uma porção do 200kbps .

              - Root -
             /   |    \
            /    |     \
           /     |      \
          /      |       \
         /       |        \
        /        |         \
    100kbps    60kbps     40kbps

O que eu quero ver no final é que quando eles correm por 60 segundos eu entendo a primeira classe usou metade da largura de banda, a segunda 30% da largura de banda e a última classe usou 20% da largura de banda.

Agora vem a configuração para o teste.
Criei a árvore acima e apliquei os filtros.

tc qdisc add dev eno2 root handle 1: htb default 30
tc class add dev eno2 parent 1: classid 1:1 htb rate 200kbps ceil 200kbps
tc class add dev eno2 parent 1:1 classid 1:10 htb rate 100kbps ceil 200kbps
tc class add dev eno2 parent 1:1 classid 1:20 htb rate 60kbps ceil 200kbps
tc class add dev eno2 parent 1:1 classid 1:30 htb rate 40kbps ceil 200kbps
tc filter add dev eno2 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:10
tc filter add dev eno2 protocol ip parent 1:0 prio 1 u32 match ip dport 25 0xffff flowid 1:20
tc filter add dev eno2 protocol ip parent 1:0 prio 1 u32 match ip dport 36 0xffff flowid 1:30

Para o teste, usei iperf .
Eu abri 3 terminais para os servidores:

sudo iperf -s -p 25 -i 1
sudo iperf -s -p 36 -i 1
sudo iperf -s -p 80 -i 1

Em seguida, conectou os 3 clientes com um parâmetro de quanto tempo de execução (60 segundos).

iperf -c 132.74.120.45 -p 25 -t 60
iperf -c 132.74.120.45 -p 36 -t 60
iperf -c 132.74.120.45 -p 80 -t 60

Os resultados são um pouco estranhos ... parece que cada um usou a mesma quantidade de largura de banda, independentemente da alocação original?


Alémdisso,verifiqueiqueadisciplinadafilaéHTBusandoocomandobmon,comovocêpodevernafiguraabaixo.

O que estou fazendo de errado?

    
por Tony Tannous 23.11.2017 / 10:28

1 resposta

1

A modelagem de tráfego HTB só funciona em dispositivos de saída. Então, se você quer testar a funcionalidade, você tem que testá-lo contra o destino que pode ser alcançado através da interface em forma. Veja o desenho:

PC---\
PC----switch----(eno1)router with HTB shaping(eno2)----Internet
PC---/                                        ^^^^ 
                               Shaping is done on the ougtoing device

Portanto, o tráfego na rede interna não é limitado. Apenas o tráfego, que sai da rede (através de eno2, neste caso) é limitado pela disciplina de enfileiramento HTB.

    
por 23.11.2017 / 11:25