ZERO-COPY NETWORK I/O FOR VIRTUAL HOSTS
First Claim
1. A method of performing zero copy network Input/Output (I/O) operations in a computer system comprising a host operating system (O/S) executing an application that enables simultaneous operation of one or more guest operating systems (O/Ses) adapted for controlling execution of one or more guest processes, and a network interface device for receiving network packets from or forwarding network packets over a network via said host O/S, said host O/S implementing a method for emulating network I/O hardware device acceleration, said method comprising:
- a) receiving a physical memory address location known from the perspective of a guest O/S and corresponding to a guest process operating under control of said guest O/S which is to receive data from a network packet or provide data for assembly in a network packet;
b) performing an address translation to obtain from said physical memory address location known from the perspective of said guest O/S, a corresponding physical memory location accessible by the host O/S; and
, c) enabling host O/S access to said corresponding physical memory location for one of;
copying data directly thereto from a received network packet and accessing data located thereat for assembly into a network packet.
2 Assignments
0 Petitions
Accused Products
Abstract
Techniques for virtualized computer system environments running one or more virtual machines that obviate the extra host operating system (O/S) copying steps required for sending and receiving packets of data over a network connection, thus eliminating major performance problems in virtualized environment. Such techniques include methods for emulating network I/O hardware device acceleration-assist technology providing zero-copy I/O sending and receiving optimizations. Implementation of these techniques require a host O/S to perform actions including, but not limited to: checking of the address translations (ensuring availability and data residency in physical memory), checking whether the destination of a network packet is local (to another virtual machine within the computing system), or across an external network; and, if local, checking whether either the sending destination VM, receiving VM process, or both, supports emulated hardware accelerated-assist on the same physical system. This optimization, in particular, provides a further optimization in that the packet data checksumming operations may be omitted when sending packets between virtual machines in the same physical system.
276 Citations
37 Claims
-
1. A method of performing zero copy network Input/Output (I/O) operations in a computer system comprising a host operating system (O/S) executing an application that enables simultaneous operation of one or more guest operating systems (O/Ses) adapted for controlling execution of one or more guest processes, and a network interface device for receiving network packets from or forwarding network packets over a network via said host O/S, said host O/S implementing a method for emulating network I/O hardware device acceleration, said method comprising:
-
a) receiving a physical memory address location known from the perspective of a guest O/S and corresponding to a guest process operating under control of said guest O/S which is to receive data from a network packet or provide data for assembly in a network packet;
b) performing an address translation to obtain from said physical memory address location known from the perspective of said guest O/S, a corresponding physical memory location accessible by the host O/S; and
,c) enabling host O/S access to said corresponding physical memory location for one of;
copying data directly thereto from a received network packet and accessing data located thereat for assembly into a network packet. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of performing zero copy network Input/Output (I/O) receive operations in a computer system comprising a host operating system (O/S) executing an application that enables simultaneous operation of one or more guest operating systems adapted for controlling execution of one or more guest processes, and a network interface device for receiving network packets from a network, said network interface device implementing network I/O hardware device acceleration technology of which said host O/S is aware, said method implemented by said host O/S comprising:
-
a) determining from said guest O/S a guest O/S buffer location that is to receive the received packet;
b) performing an address translation to obtain from said guest O/S buffer location a corresponding physical memory location accessible by the host O/S;
c) informing the network interface device to forward said network packet directly to said physical memory location corresponding to said guest O/S buffer location. - View Dependent Claims (11, 12, 13)
-
-
14. A method of performing zero copy network Input/Output (I/O) receive operations in a computer system comprising a host operating system (O/S) executing an application that enables simultaneous operation of one or more guest operating systems adapted for controlling execution of one or more guest processes, and a network interface device for receiving network packets from a network, said network interface device implementing network I/O hardware device acceleration technology of which said host O/S is aware, said method implemented by said host O/S comprising:
-
a) receiving, from said guest O/S, a physical memory address location known from the perspective of a guest O/S and corresponding to a guest process operating under control of said guest O/S which is to receive a data portion from a network packet;
b) performing an address translation to obtain from said physical memory address location known from the perspective of said guest O/S, a corresponding physical memory location accessible by the host O/S; and
,c) informing the network interface device to forward said data portion of said network packet directly to said corresponding physical memory location of said guest process. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
-
21. A method of performing zero copy network Input/Output (I/O) operations in a computer system comprising a host operating system (O/S) executing an application that enables simultaneous operation of one or more guest operating systems (O/Ses) adapted for controlling execution of one or more guest processes, said host O/S adapted for emulating network I/O hardware device acceleration, said method comprising:
-
a) determining from a header portion of a packet located at a first guest O/S kernel buffer location associated with a first guest O/S and accessible by said host O/S, a destination for a corresponding data portion of said packet, said data portion of said packet located at a physical memory address known from the perspective of a second guest O/S; and
,b) determining whether said second guest O/S supports said host O/S emulating network I/O hardware device acceleration; and
,c) if said second guest O/S supports said host O/S emulating network I/O hardware device acceleration, performing address translations to determine physical memory locations that enable host O/S copying of said corresponding data portion of said packet directly to a second guest process and, copying of said header portion directly to a kernel buffer location associated with the second guest O/S. - View Dependent Claims (22, 23, 24, 25, 26)
-
-
27. A method of performing zero copy network Input/Output (I/O) operations in a computer system comprising a host operating system (O/S) executing an application that enables simultaneous operation of one or more guest operating systems (O/Ses) adapted for controlling execution of one or more guest processes, said host O/S adapted for emulating network I/O hardware device acceleration, said method comprising:
-
a) determining from a header portion of a packet located at a first guest O/S kernel buffer location associated with a first guest O/S and accessible by said host O/S, a destination for a corresponding data portion of said packet, said data portion of said packet located at a physical memory address known from the perspective of said host O/S; and
,b) if said destination is a second guest O/S in said computer system, determining whether said second guest process supports said host O/S emulating network I/O hardware device acceleration; and
,c) if said second guest O/S does not support said host O/S emulating network I/O hardware device acceleration, performing an address translation to determine a physical memory location that enables host O/S copying of said header portion and corresponding data portion of said packet directly to a kernel buffer location associated with the second guest O/S. - View Dependent Claims (28, 29, 30, 31)
-
-
32. A method of performing zero copy network Input/Output (I/O) operations in a computer system comprising a host operating system (O/S) executing an application that enables simultaneous operation of one or more guest operating systems (O/Ses) adapted for controlling execution of one or more guest processes, said host O/S adapted for emulating network I/O hardware device acceleration, said method comprising:
-
a) receiving a packet to be sent from a first guest process for receipt by a second guest process, said packet including a header portion and a data portion;
b) determining from said header portion of said packet, a destination for a corresponding data portion of said packet, said destination located at a physical memory address known from the perspective of a second guest O/S controlling reception of said packet; and
,c) if said second guest process operating in said computer system supports said host O/S emulating network I/O hardware device acceleration, performing address translations to determine physical memory locations that enable host O/S copying of said corresponding data portion of said packet directly to the second guest process and, copying of said header portion directly to a kernel buffer location associated with a second guest O/S. - View Dependent Claims (33, 34, 35, 36, 37)
-
Specification