Eu tenho um requisito para limitar o tráfego total de entrada para 5mbit. Eu sei que isso pode ser alcançado usando o seguinte comando tc
:
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 police rate 5mbit burst 10k drop flowid :1
Problema:
Eu tenho dois fluxos de tráfego, digamos tcp e udp. Meu objetivo é limitar o tráfego total de tcp e udp para 5mbit e dar prioridade mais alta ao tcp do que o udp.
Isto é, se o tráfego total de entrada for 7mbit, eu preciso apenas de 5mbit com menos perdas em tcp (já que tem prioridade mais alta).
Eu sei que posso escrever duas regras diferentes com, digamos, 3mbit e 2mbit, como:
tc filter add dev eth0 parent ffff: protocol ip prio 10 u32 match u32 'tcp' 0xff police rate 3mbit burst 10k drop flowid :1
tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match u32 'udp' 0xff police rate 2mbit burst 10k drop flowid :1
mas isso limitará os pacotes tcp a 3mbits, mesmo que não haja pacotes udp.
Pergunta:
Existe alguma abordagem para que eu possa limitar a largura de banda total de entrada e descartar pacotes em excesso com base na prioridade?