Explicação do script de gerenciamento de largura de banda chamando tc

2

Eu tenho alguns scripts no Linux para gerenciar a largura de banda da Internet, mas não entendo o que eles fazem.

Qual é o significado dos seguintes scripts:

tc qdisc add dev $IF root handle 1: htb default 256
tc class add dev $IF parent 1: classid 1:1 htb rate $max 
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.0.1:4001
echo 1 > /proc/sys/net/ipv4/ip_forward

E:

tc class add dev $IF parent 1:1 classid 1:$(($n)) htb rate "$1"kbps ceil "$2"kbps 
tc filter add dev $IF protocol ip parent 1:0 prio 2 u32 match ip dst "$line"/32 flowid 1:$(($n))

#ack   
tc filter add dev $IF parent 1: protocol ip prio 1 u32 match ip dst "$line"/32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid 1:$(($n))

E:

tc class add dev $IF parent 1:1 classid 1:256 htb rate 60kbps
    
por M.Movaffagh 08.04.2013 / 15:18

1 resposta

3

O HTB é um qdisc não conservador. Isso limita a velocidade de saída. Se mais dados forem enfileirados na interface do que os que podem ser desenfileirados pelo HTB com os limites fornecidos, os pacotes serão descartados.

O script está incompleto, por isso não está claro o que ele faz.

O tráfego enfileirado para essa interface deve ser dado a uma determinada classe. 1: 0 é o qdisc, 1: 1, 1: 2, ... 1: 256 são as classes que pertencem a este qdisc. Cada turma pode ter sua própria configuração.

tc filter determina qual classe é responsável por um determinado pacote. Se nenhum for encontrado, a definição qdisc fará com que 1: 256 seja a classe padrão configurada estaticamente no seu caso. Os outros são configurados "dinamicamente" (no entanto, isso não faz parte do código que você mostrou).

Parece haver uma lista de hosts de destino (endereços IP únicos), todos com largura de banda garantida. Se um pacote for direcionado a um desses hosts, ele será colocado na classe responsável por esse host. Existem mais condições do que apenas o IP alvo, mas não entendo os filtros u8 e u16 sem procurar. Isso pode filtrar TCP versus UDP, suas portas, sinalizadores TCP, tamanho do pacote e coisas do tipo.

    
por 08.04.2013 / 20:19