A especificação do domínio libvirt já inclui essa funcionalidade. Você pode especificar configurações separadas para tráfego de entrada e saída. O exemplo dado na documentação do libvirt é:
<devices>
<interface type='network'>
<source network='default'/>
<target dev='vnet0'/>
<bandwidth>
<inbound average='1000' peak='5000' floor='200' burst='1024'/>
<outbound average='128' peak='256' burst='256'/>
</bandwidth>
</interface>
<devices>
Você pode ler mais no link