The problem definately occurrs between the VM (Zeroshell) and the host (ESX 3.5). I was able to test my switch with a borrowed 802.1q router and vlans definately work.
While I did discover that on ESX Server in order to pass VLAN’s along to the guest OS, one must specify a vlan ID of 4095 on the Port Group containing the VM, http://www.vmware.com/pdf/esx3_vlan_wp.pdf that has been done ans still no luck.
One thing I noticed is that the two Broadcom NIC’s on my ESX are running a driver called tg3 and the two Intel NIC’s are running an e1000 driver, but the VM (Zeroshell) itself sees: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10) . Could the virtual NIC driver be causing Zeroshell not to pass along tagged packets?