You need to create an interface that's connected to the vlan (like "eth1.2102" for vlan 2102). Then you create a bridge ("br2102") that has the vlan interface as a member. You can use the /etc/sysconfig/network-scripts entries to do that, don't assign IPs to those interfaces. Then use the bridge interface in the qemu/kvm configration as the interface for the virtual machine.
Config example (Tested on Centos 6.0):
ifcfg-eth1:
DEVICE=eth1
BOOTPROTO=static
BROADCAST=0.0.0.0
HWADDR=00:15:17:dc:ff:ff # use your mac here
IPADDR=0.0.0.0
NETMASK=0.0.0.0
NETWORK=0.0.0.0
ONBOOT=yes
IPV6INIT=no
NOZEROCONF=yes
TYPE=Ethernet
ifcfg-eth1.2102:
VLAN=yes
DEVICE=eth1.2102
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPV6INIT=no
IPADDR=0.0.0.0
NETMASK=0.0.0.0
NETWORK=0.0.0.0
BRIDGE=br2102
ifcfg-br2102:
DEVICE=br2102
TYPE=Bridge
ONBOOT=yes
# BOOTPROTO=none
BOOTPROTO=static
IPADDR=
NETMASK=
"ifup br2102" should bring up all those interfaces. Be sure to have this in /etc/sysctl.conf:
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
Troubleshooting: use "tcpdump -i eth1.2102 -n" and tcpdump -i br2102 -n" to see the traffic on those interfaces. "brctl show" is handy to see the bridge config with the virtual machine interface on the bridge added after startup. PXE booting has a problem, you need to interrupt at the PXE prompt for around 10 seconds before the interface is available. Otherwise the PXE rom doesn't get an IP.