O qdisc HTB implementa o conceito de rajadas que é um pouco do que você quer - envia uma taxa total de hardware até a quantidade de dados especificada no parâmetro "burst". Para obter uma diminuição gradual, seria necessário aninhar classes HTB e, provavelmente, você não desejaria fazê-lo excessivamente, já que isso aumenta muito a complexidade da configuração. Mas o próprio mecanismo de modelagem de tráfego do Linux é sem estado, ele age apenas nos pacotes, e não nas conexões. Usando apenas filtros tc, você só pode diferenciar pacotes com base em cabeçalhos IP / TCP.
Portanto, se você precisar classificar diferentemente com base nas conexões, a abordagem mais direta provavelmente seria usar a correspondência iptables "--connbytes" e uma marca de pacote (-j MARK target) para empurrar os pacotes de uma conexão para a fila correta ( rápido / desaceleração)
Veja a seção de palavras sobre o gerenciamento de largura de banda do guia do LARTC e / ou o abrangente "Soluções de largura de banda de origem aberta" whitepaper para mais informações.
Além disso, se você precisar dar forma ao fluxo ascendente e ao fluxo descendente, dê uma olhada na implementação da interface do IMQ virtual - foi concebido especificamente para este fim.