Ainda estou me envolvendo no tráfego e encontrando o Manual de disciplina de simulação de HTB Linux - usuário orientar uma ótima leitura. Seus exemplos descrevem quase exatamente o que você está fazendo.
Eu tenho um link de 1,5 Mbit / s que quero compartilhar com 150 usuários.
Minha configuração é a seguinte:
Caixa Linux com 3 NICs eth0 - ip público eth1 - sub-rede A - 50 usuários (ips estáticos) eth2 - sub-rede B - 100 usuários (via dhcp)
Estou usando o squid como um proxy transparente na porta 3128. servidor dhcp usando as portas 67 e 68.
Eu estava criando, mas acho que os pacotes não estão indo para as filas certas
#!/bin/bash
DEV=eth0
RATE_MAIN=2048kbit
CEIL_MAIN=2048kbit
BURST=1b
CBURST=1b
RATE_DEFAULT=1024kbit
CEIL_DEFAULT=$CEIL_MAIN
PRIO_DEFAULT=3
RATE_P2P=1024Kbit
CEIL_P2P=$CEIL_MAIN
PRIO_P2P=4
RATE_IND=32kbit
CEIL_IND=$CEIL_DEFAULT
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 30
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE_MAIN ceil $CEIL_MAIN
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $RATE_DEFAULT ceil $CEIL_MAIN burst $BURST cburst $CBURST prio $PRIO_WEB
## some other sub class for p2p other traffic
tc class add dev $DEV parent 1:1 classid 1:20 htb rate $RATE_P2P ceil $CEIL_P2P burst $BURST cburst $CBURST prio $PRIO_P2P
$IPS_NET1=50
$IPS_NET2=100
let $IPS=$IPS_NET1+$IPS_NET2
for ((i=1; i<= $IPS; i++))
do
let CLASSID=($i+100)
let HANDLE=($i+100)
tc class add dev $DEV parent 1:10 classid 1:$CLASSID htb rate $RATE_IND ceil $CEIL_IND
tc qdisc add dev $DEV parent 1:$CLASSID handle $HANDLE: sfq perturb 10
done
## Generate IP addresses ##
IP_ADDRESSES=""
# Subnet A
BASE_IP=10.10.10.
for ((i=2; i<=$IPS_NET1+1; i++))
do
TEMP="$BASE_IP$i"
IP=ADDRESSES="$IP_ADDRESSES $TEMP"
done
# Subnet B
BASE_IP=192.168.0.
for ((i=2; i<=$IPS_NET2+1; i++))
do
TEMP="$BASE_IP$i"
IP_ADDRESSES="$IP_ADDRESSES $TEMP"
done
## FILTERS ##
j=1
U32="tc filter add dev $DEV protocol ip parent 1:0 prio $PRIO_DEFAULT u32"
for NET in $IP_ADDRESSES; do
let CLASSID=($j+100)
$U32_DEFAULT match ip src $NET/32 flowid 1:$CLASSID
$U32_DEFAULT match ip dst $NET/32 flowid 1:$CLASSID
let j=j+1
done
Vocês podem me ajudar a descobrir o que há de errado com isso?
basicamente eu quero que minhas aulas sejam
1: 1 (1,5 Mbit) 1:10 (1024 Kbit) 1:20 (1024 Kbit) (200 ips cada com 32 kbit)
Ainda estou me envolvendo no tráfego e encontrando o Manual de disciplina de simulação de HTB Linux - usuário orientar uma ótima leitura. Seus exemplos descrevem quase exatamente o que você está fazendo.
Parece que você está tentando criar uma classe por endereço IP, geralmente isso não é feito, especialmente quando você tem uma quantidade tão pequena de largura de banda para começar.
Eu tentaria algo como o Wondershaper primeiro.
Mas 1,5 Mbit / s com 150 usuários? Isso provavelmente não vai funcionar. Você não disse o que esses usuários farão, espero que eles tenham bloqueado máquinas que só podem executar um aplicativo de intranet.
Se o seu link tiver apenas 1,5 MBit / s, por que você tem um RATE_MAIN de 2048kbit (que é mais de 2 MBit / s)? Se você se encontra em tc com relação à sua largura de banda máxima absoluta, ele nunca conseguirá gerenciar a largura de banda nem perto de como você a configurou.
Observe também que geralmente 1,5 MBit / s são 1500 kbit / se 1500000 bit / s. No entanto, em tc 1 mbit é igual a 1024 kbit, o que equivale a 1048576 bit / s.
Se o seu link for de 1,5 MBit / s, seu máximo teórico é 187500 bps (em tc bps significa BYTES por segundo , não bits por segundo, como estamos acostumados) e para ter tráfego efetivo filtrando, você geralmente precisa diminuir isso por uma porcentagem realística. Se não houver sobrecarga de protocolo adicional envolvida (diferente de TCP / IP, mas isso já é contabilizado automaticamente pelo tc), então você pode levar 90% disso. Se você tem uma linha DSL por trás dele (talvez com SNAP + LLC + PPPoE + AAL5 + ATM), é melhor você levar apenas 80% disso.
Por último, mas não menos importante, você tenta dar a cada usuário uma classe de 32 kbit (em tc que é 32 * 1024 kbit / s).
150 * 32 = 4800
Você está ciente de que esta é WAY OVER sua velocidade de linha, está?
Se você espera que o HTB funcione corretamente e a maneira como a maioria das pessoas espera que ele funcione, a soma de todas as taxas e tetos das classes para crianças não pode exceder a taxa e o teto de sua classe pai. E você está bem longe disso (1024 é o valor da sua classe pai).
Tags traffic-shaping