just a last note: the tc will not "hardlimit" the connection, it works more like a balancing tool, for what i tested, but i think will you find the tips below help to make a better use of all the bandwidth your server have. if you want to set some kind of "guaranteed" bandwidth for a vm but allow it to take more bw when not all bw is in use, you can change the ceil numbers. see..
you have 100mbps to distribute for 10 vms (4 with 5mbps, 5 with 10mbps and 1 with 30mbps). the sum of all vms is exactly 100. but considering not all vms will use all the bandwidth at the same time, you can set they this way:
tc class add dev $DEV parent 1:1 classid 1:10 htb rate 5mbit ceil 10mbit burst 15k
tc class add dev $DEV parent 1:1 classid 1:20 htb rate 10mbit ceil 20mbit burst 15k
tc class add dev $DEV parent 1:1 classid 1:30 htb rate 30mbit ceil 50mbit burst 15k
#note i put a 5mbit rate and 10mbit ceil, it means class 1:10 can use up to 10mbit
#however, when other classes need more bw, it may be gradually reduced to 5mbit
I forgot also to warn you about the htb default. its '10' on the configuration i sent you. then, all IPs not configurated on the script, will be put on the 1:10 class.
Also, do not forgot to change "1: classid 1:1 htb rate 10mbit" to 100mbit on the outgoing script too, or your upload will be capped to 10mbits (and you said you have 100).
the prior number (set as 1 on this script for all IPs) may be set to a higher number for the LESS important vms (e.g., your own test VMs). if you create a 11st VM for your personal use, for example, set it this way:
tc filter add dev $DEV protocol ip parent 1:0 prio 5 u32 match ip src "$CT_IP11" flowid 1:10
note it have prio 5 (while all others are prio 1). it means your VM will have 5-10mbits to use, but ALL the bw (even the 5mbps rate) may be "stolen" if the other VMs are requesting bw -- good if your other 10 VMs (customers) are hosting VPS, cause they rarely needs too much bw at the same time. not good if they are for torrent seeding, file servers, etc, because all VMs will request more and more bw almost all the time, then your 11st VM will never have bw to use, because it have less priority than all other VMs.
if you have some kind of "unusual" VMs, or one of each type (one for file server, other for hosting, other for remote access, etc) it may be confusing to set a high number classes. you can then try
http://tcng.sourceforge.net/ -- tcng have an easier "scripting" language for high number of VMs.
good luck