There are plenty of articles out there describing how to run Hyper-V on vSphere, e.g. https://www.pluralsight.com/blog/tutorials/run-hyper-v-vsphere-5-1
However after following these instructions I found I still had an issue with my configuration. My Hyper-V guest VMs would pick up an IP address from DHCP but I couldn’t communicate with them subsequently. There are a number of potential causes of this, including a mis-configuration of the Hyper-V vSwitch. However, in my case the cause was in the layer above – on my ESXi host.
After giving it some thought I assumed that there was an issue with the fact that I had a Hyper-V vSwitch connected to a port on the ESXi vSwitch which was essentially configured like an access port, rather than a trunk port. This enabled me to find the solution:
I enabled promiscuous mode on the port group that my Hyper-V VM was attached to and the problem was resolved (this can also be done on the vSwitch if preferred). Makes sense as, without this enabled, the ESXi vSwitch only permits packets from the Hyper-V VM MAC address – rejecting the packets from the VMs hosted on the Hyper-V VM.
Something to look out for if you’re trying this yourself.