Patent ID: 8739179

Claim:
A method for low-overhead data transfer, comprising: initiating, by a first application, a Transmission Communication Protocol (TCP) connection with a second application, wherein the first application is executing on a first computer in a first virtual machine, the second application is executing on a second computer in a second virtual machine, and the first computer and the second computer are located on a chassis and communicate over a chassis interconnect, wherein the first computer is directly connected to the chassis interconnect at a first Peripheral Component Interface Express (PCI-E) end point and the second computer is directly connected to the chassis interconnect at a second PCI-E endpoint; establishing, in response to the initiation, the TCP connection between the first application and the second application; selecting, by a first Virtual Network Interface Card (VNIC), a second protocol from a group consisting of the first protocol and the second protocol based on a determination that the TCP connection between the first application and the second application is a local TCP connection, wherein the first VNIC is located on the first computer and is interposed between the first virtual machine and the chassis interconnect, wherein the TCP connection is the local TCP connection when the first application and the second application are executing on separate physical computers connected to the chassis, and wherein the first protocol is TCP and the second protocol comprises using a low-overhead data transfer; based on the selection of the second protocol: providing, by the first application, pre-post buffer information to the second application, wherein the pre-post buffer information corresponds to a location in a physical memory of the first computer and wherein the location in physical memory corresponds to a virtual memory address of the first application; and transferring data, by the second application, to the first application using the pre-post buffer information, wherein transferring the data comprises writing the data directly into the location in the physical memory of the first computer.