US10355997B2ActiveUtilityPatentIndex 82
System and method for improving TCP performance in virtualized environments
Est. expirySep 26, 2033(~7.2 yrs left)· nominal 20-yr term from priority
G06F 9/45558H04L 43/18H04L 47/193G06F 2009/45595
82
PatentIndex Score
9
Cited by
153
References
28
Claims
Abstract
A method and system of improving TCP performance by offloading TCP processing to a protocol acceleration module is provided. For example, one or more in-sequence data packets being transmitted between a protocol sender and a protocol receiver is observed, and either the protocol sender or receiver resides within a virtualized host. A determination is made whether the protocol packet buffer within the protocol acceleration module is full. In further examples, one or more in-sequence packets are processed in an accelerated mode, where the processing includes copying the in-sequence data packets into the protocol packet buffer.
Claims
exact text as granted — not AI-modifiedWe claim:
1. A method, comprising:
observing in-sequence data packets being transmitted in both directions between a protocol sender and a protocol receiver during a Transport Control Protocol (TCP) connection between the protocol sender and the protocol receiver, wherein at least one of the protocol sender and the protocol receiver resides within a virtualized host executing on a hypervisor of a server;
determining a protocol packet buffer within a protocol acceleration module is not full, wherein the protocol acceleration module is located within the hypervisor; and
processing, by the protocol acceleration module located within the hypervisor, the in-sequence data packets associated with the TCP connection in an accelerated mode, wherein the processing includes copying the in-sequence data packets associated with the TCP connection into the protocol packet buffer when the virtualized host is not scheduled, and further includes an early acknowledgement process.
2. The method of claim 1 , wherein the early acknowledgement process includes sending one or more early acknowledgements to the protocol sender for the copied in-sequence data packets.
3. The method of claim 2 , wherein the early acknowledgement process further includes:
observing the one or more protocol receiver acknowledgements for the copied one or more in-sequence data packets before a timeout period is expired; and
dropping the one or more protocol receiver acknowledgements for the copied one or more in-sequence data packets.
4. The method of claim 2 , wherein the early acknowledgement process further includes a packet loss recovery process.
5. The method of claim 4 , wherein the packet loss recovery process includes:
recognizing the one or more protocol receiver acknowledgements for the copied in-sequence data packets were not observed within a timeout period; and
retransmitting a copy of the copied in-sequence data packets from the protocol packet buffer.
6. The method of claim 4 , wherein the packet loss recovery process further includes:
observing a first protocol receiver acknowledgement for the copied one or more in-sequence data packets;
observing a first duplicate of the first protocol receiver acknowledgement for the copied one or more data packets;
observing a second duplicate of the first protocol receiver acknowledgement for the copied one or more in-sequence data packets;
determining one or more of the copied in-sequence data packets is lost based on a minimum of one duplicate of the first protocol receiver acknowledgements, a lost packet is inferred from an acknowledgement number from the first protocol receiver acknowledgement; and
retransmitting a copy of the lost packet from the protocol packet buffer even if a timeout period has not expired.
7. The method of claim 1 , wherein the processing of the in-sequence data packets in the accelerated mode further includes a flow control process for the in-sequence data packets during the TCP connection.
8. The method of claim 7 , wherein the early acknowledgement process further includes:
observing the protocol receiver specifying a window field value greater than zero;
sending one or more early acknowledgements to the protocol sender for the copied in-sequence data packets;
observing an update from the protocol receiver indicating the window field value is zero; and
processing the in-sequence data packets in a pass through mode until the protocol receiver specifies a window size value is greater than zero.
9. The method of claim 1 , wherein the processing the in-sequence data packets in the accelerated mode further includes a congestion control process for the in-sequence data packets during the TCP connection.
10. The method of claim 1 , wherein the processing the in-sequence data packets in the accelerated mode further includes the processing the in-sequence data packets along a transmit path having the protocol sender residing within a virtualized host, or the processing the in-sequence data packets along a receive path having the protocol receiver residing within a virtualized host.
11. The method of claim 1 , wherein the one or more in-sequence data packets are transmitted using a TCP protocol.
12. The method of claim 1 , wherein the protocol receiver resides within the virtualized host and wherein the processing the in-sequence data packets in the accelerated mode further comprising copying the in-sequence data packets into a receive side buffer of the protocol packet buffer.
13. The method of claim 1 , wherein the protocol sender resides within the virtualized host and wherein the processing the in-sequence data packets in the accelerated mode further comprising copying the in-sequence data packets into a transmit side buffer of the protocol accelerator buffer.
14. The method of claim 1 , wherein the processing the in-sequence data packets in the accelerated mode further includes in-band processing the in-sequence data packets in the accelerated mode.
15. A system, comprising:
a virtualized host including a processor; and
a protocol accelerator module, executable by the processor, configured to:
observe one or more in-sequence data packets being transmitted between a protocol sender and a protocol receiver during a Transport Control Protocol (TCP) connection between the protocol sender and the protocol receiver, wherein at least one of the protocol sender and the protocol receiver resides within a virtualized host executing on a hypervisor of a server;
store TCP connection information comprising one or more maximum size segment values for the one or more in-sequence data packets;
determine a protocol packet buffer within a protocol acceleration module is not full, wherein the protocol acceleration module is located within the hypervisor; and
process, based on the TCP connection information comprising the one or more maximum size segment values for the one or more in-sequence data packets, the one or more in-sequence data packets in an accelerated mode during the TCP connection, wherein the processing includes copying the one or more in-sequence data packets associated with the TCP connection into the protocol packet buffer when the virtualized host is not scheduled and sending one or more early acknowledgements to the protocol sender for the copied one or more in-sequence data packets associated with the TCP connection.
16. The system of claim 15 , wherein the protocol accelerator module includes protocol processing logic configured to process the one or more in-sequence data packets, the protocol processing logic communicatively coupled to a receive side and a transmit side of the protocol accelerator module, the one or more in-sequence data packets are transmitted away from a network on the receive side and the one or more in-sequence data packets are transmitted towards the network on the transmit side.
17. The system of claim 16 , wherein the protocol packet buffer includes a receive side buffer and a transmit side buffer communicatively coupled to the protocol processing logic, the receive side buffer configured to store a copy of the one or more in-sequence data packets on the receive side and the transmit side buffer configured to store a copy of the one or more in-sequence data packets on the receive side during the processing of the in-sequence data packets during the accelerated mode.
18. The system of claim 16 , wherein the protocol accelerator modules includes a flow table communicatively coupled to the protocol processing logic, the flow table configured to store status information of the copied one or more in-sequence packets stored within one of the receive side buffer and the transmit side buffer, the status information including a current mode of operation of the protocol accelerator module, the flow table further configured to store location information of the copied one or more in-sequence packets stored within one of the receive side buffer and the transmit side buffer.
19. The system of claim 16 , wherein the protocol accelerator modules includes a receive side timer and a transmit side timer communicatively coupled to the protocol processing logic, the receive side and the transmit side timers configured to provide a timeout period for observing one or more receiver acknowledgements for the one or more in-sequence data packets.
20. The system of claim 16 , wherein the protocol accelerator module includes a receive side congestion control module and a transmit side congestion control module communicatively coupled to the protocol processing logic.
21. A non-transitory machine-useable medium embodying instructions which, when executed by a machine, cause the machine to:
observe one or more in-sequence data packets being transmitted between a protocol sender and a protocol receiver during a Transport Control Protocol (TCP) session between the protocol sender and the protocol receiver, wherein at least one of the protocol sender and the protocol receiver resides within a virtualized host executing on a hypervisor of a server;
determine a protocol packet buffer within a protocol acceleration module is not full, wherein the protocol acceleration module is located within the hypervisor;
process, by the protocol acceleration module located within the hypervisor, the one or more in-sequence data packets associated with the TCP session in an accelerated mode, wherein the processing includes copying the one or more in-sequence data packets associated with the TCP session into the protocol packet buffer when the virtualized host is not scheduled; and
send one or more early acknowledgements to the protocol sender for the copied one or more in-sequence data packets.
22. The non-transitory machine-useable medium of claim 21 , wherein the instructions further configured to:
observe the one or more early acknowledgements for the copied one or more in-sequence data packets before a timeout period is expired; and
drop the one or more early acknowledgements for the copied one or more in-sequence data packets.
23. The non-transitory machine-useable medium of claim 21 , wherein the instructions further configured to:
recognize the one or more early acknowledgements for the copied one or more in-sequence data packets was not observed within a timeout period; and
retransmit a copy of the copied one or more in-sequence data packets from the protocol packet buffer.
24. The non-transitory machine-useable medium of claim 21 , wherein the instructions further configured to:
observe a first protocol receiver acknowledgement for the copied one or more in-sequence data packets;
observe a first duplicate of the first protocol receiver acknowledgement for the copied one or more in-sequence data packets;
observe a second duplicate of the first protocol receiver acknowledgement for the copied one or more in-sequence data packets;
determine one or more of the copied in-sequence data packets is lost based on a minimum of one duplicate of the first protocol receiver acknowledgements, a lost packet is inferred from the acknowledgement number; and
retransmit a copy of the lost packet from the protocol packet buffer even if a timeout period has not expired.
25. The non-transitory machine-useable medium of claim 21 , wherein the instructions further configured to
observe the protocol receiver specifying a receive window field value, the receive window field value is greater than zero;
observe an update from the protocol receiver indicating the window field value is zero for the copied one or more in-sequence data packets; and
process the one or more in-sequence data packets in a pass through mode until the window size value is greater than zero for the one or more in-sequence data packets.
26. The non-transitory machine-useable medium of claim 21 , wherein the instructions further configured to perform a congestion control process.
27. The non-transitory machine-usable medium of claim 21 , wherein the instructions further configured to perform a flow control process.
28. The non-transitory machine-useable medium of claim 21 , wherein the instructions further configured to observe and process one or more TCP in-sequence data packets.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.