1. A computer-implemented method for optimizing network communication between two or more virtual machines executing on the same computing system, the method comprising performing computer-implemented operations for: exposing a first virtual network interface controller (NIC) to a first virtual machine by way of a virtual machine manager, the virtual machine manager configured to control the execution of the two or more virtual machines; exposing a second virtual NIC to a second virtual machine by way of the virtual machine manager, wherein the virtual machine manager manages network communication between a physical NIC, the first virtual NIC, and the second virtual NIC; providing an address of a memory buffer of the virtual machine manager to the first virtual machine; receiving, by the memory buffer, a network message transmitted by the first virtual machine through the first virtual NIC using the address of the memory buffer; providing the address of the memory buffer to the second virtual machine and at least one operating system driver associated with the second virtual NIC, wherein the at least one operating system driver verifies the network message in the memory buffer; providing the network message received by the memory buffer to the second virtual machine and the operating system driver through the second virtual NIC; and blocking, by the virtual machine manager, execution of one or more operations of the second virtual machine to write data to the memory buffer until one or more operations of the first virtual machine to write data to the memory buffer are completed.