Why this is needed
In testing linux bridging I noticed a problem that took me much longer then I feel comfortable admitting. You cannot break out the VLANs to from a physical device and also use that physical device (attached to a bridge) to forward forward the entire trunk to a set of VMs. The reason this occurs is that once linux starts inspecting for vlans on an interface to split them out it discards all those you do not have defined, so you have to trick it.
I had my Trunk on eth1. What you need to do is directly attach eth1 to a bridge (vmbr1). This bridge now has the entire trunk associated with it. Here's the fun part, you can break out vlans on the bridge, so you would have an interface for vlan 13 named vmbr1.13 and then attach that to a brige, allowing you to have a group of machines only exposed to vlan 13.
The networking goes like this.
/-> vmbr1.13 -> vmbr13 -> VM2 eth1 -> vmbr1 ---> VM1 \-> vmbr1.42 -> vmbr42 -> VM3
Here is the script I used with proxmox (you can set up the bridge in proxmox, but not the source for the bridges data (the 'input'). This is for VLANs 1-13 and assumes you have vyatta set up the target bridges. I had this start at boot (via rc.local).
vconfig add vmbr1 2 vconfig add vmbr1 3 vconfig add vmbr1 4 vconfig add vmbr1 5 vconfig add vmbr1 6 vconfig add vmbr1 7 vconfig add vmbr1 9 vconfig add vmbr1 10 vconfig add vmbr1 11 vconfig add vmbr1 12 vconfig add vmbr1 13 ifconfig eth1 up ifconfig vmbr1 up ifconfig vmbr1.2 up ifconfig vmbr1.3 up ifconfig vmbr1.4 up ifconfig vmbr1.5 up ifconfig vmbr1.6 up ifconfig vmbr1.7 up ifconfig vmbr1.8 up ifconfig vmbr1.9 up ifconfig vmbr1.10 up ifconfig vmbr1.11 up ifconfig vmbr1.12 up ifconfig vmbr1.13 up brctl addif vmbr1 eth1 brctl addif vmbr2 vmbr1.2 brctl addif vmbr3 vmbr1.3 brctl addif vmbr4 vmbr1.4 brctl addif vmbr5 vmbr1.5 brctl addif vmbr6 vmbr1.6 brctl addif vmbr7 vmbr1.7 brctl addif vmbr8 vmbr1.8 brctl addif vmbr9 vmbr1.9 brctl addif vmbr10 vmbr1.10 brctl addif vmbr11 vmbr1.11 brctl addif vmbr12 vmbr1.12 brctl addif vmbr13 vmbr1.13