I would like to ask a question concerning the communications between two child partitions under Hyper-V.
Let’s consider the following scenario. Let’s say we’ve got child partitions A and B. The former one is a Windows guest, and the latter one is a custom non-MSFT OS that is paravirtualised for the purpose of running specifically under Hyper-V. These two have to pass fairly large amounts of data to one another. The amounts of data that is passed between them and the frequency of these “exchanges” are comparable to the ones between SMB( or NFS) client and server on a corporate network. Therefore, the efficiency is an absolute must here.
Once these two guests physically reside on the same machine there must be some room for optimisation. For example, we can significantly reduce the overhead that is introduced the network stack. The very first thing that gets into my head in this situation is designing a custom non-routable Layer 3 protocol (i.e writing a custom NDIS protocol driver and exclusively binding it to a system-provided virtual NIC that is specifically reserved for this purpose ), effectively eliminating the overhead of TCPIP.SYS, as well as PSCHED.SYS and friends. However, I wonder if it is possible to go further than that, and to avoid the overhead that is introduced by NDIS layer as well.
Therefore, my questions are
- Is it possible to design a custom Vmbus Windows driver? This driver has to be a fully “supported” one - no hacking, no hooking, and, generally speaking, impeccable enough to qualify even for Mr.Burn’s approval, let alone for MSFT certification
2 In case if the answer to the above question is positive, is the potential performance enhancement worth the whole trouble of taking this path? Certainly, an optimisation like a shared buffer would come in handy in this situation, but, judging from Hyper-V functional specification, it does not seem to allow passing the pages between the guests in XEN-like fashion.
Therefore, I am not sure whether it is worth the whole trouble
In general, what is the best way to go in the above mentioned situation?