iptables em combinação com tc deve ser capaz de fazer isso se o OP estiver no Linux. Iptables possui um módulo chamado connbytes que pode corresponder ao número de bytes que passaram pelo fluxo até o momento. Use isso para "marcar" pacotes em fluxos que enviaram muitos bytes. Por exemplo, você pode ter uma regra que marca todos os pacotes em fluxos entre 1 MByte e 10 MBytes com a marca "1" e outra que marca todos os pacotes em fluxos maiores que 10 MBytes com a marca "2".
Em seguida, você configura as classes de modelagem de tráfego como padrão (= = abaixo de 1 Mbyte), para a marca "1" e marca "2".
A vantagem dessa solução é que você não precisa penalizar os usuários, a menos que consumam coletivamente muita largura de banda. A desvantagem é que estas são ferramentas um pouco complexas que levam algumas leituras para envolver sua cabeça.
iptables e tc estão incluídos na maioria das distros. Você também pode querer olhar para tcng, o que torna radicalmente mais simples formular conjuntos de regras tc.