É um conjunto válido de comandos, mas o problema é que a marca acontece depois que o qdisc de entrada é processado.
Eu quero limitar a velocidade de download de qualquer IP para 800kbit, (isso funciona) E eu quero limitar a velocidade de download de pacotes marcados para 400kbit.
Não recebo nenhum erro, mas não limita a velocidade de download dos pacotes marcados com o número 30. Eu confirmei com iptables-save -c que os pacotes estão sendo marcados corretamente. Então eu acho que minha sintaxe de filtro para o identificador de recebimento 30 está errada, mesmo que não haja erro.
/sbin/tc qdisc add dev $DEV handle ffff: ingress
/sbin/tc filter add dev $DEV parent ffff: prio 40 protocol ip handle 30 fw police rate 400kbit burst 10k drop flowid :1
#slightly different order of parameters, also doesn't work
/sbin/tc filter add dev $DEV parent ffff: protocol ip prio 40 handle 30 fw police rate 400kbit burst 10k drop flowid :1
#if I set the priority to 50 then I get an error saying "We have an error talking to the kernel"
#kernel is 4.4.50
/sbin/tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 800kbit burst 10k drop flowid :1
Um comando tc similar (taxa de policiamento de pacotes marcados) é dado como o seguinte exemplo %código% link O mesmo exemplo também aparece aqui link
Se eu adicionar manualmente outra regra para um IP específico com uma prioridade igual acima do catchall ou menor prioridade, então posso limitar as velocidades a 400kbit / s. Mas eu quero limitar a velocidade dos pacotes marcados / desconfigurados pelo iptables.