IP Library Granted Patent US 9,270,608
Granted Patent B2
US 9,270,608 · App. 14/182,229 · Granted Feb 23, 2016

Multi-stage large send offload

Inventors: John A. Starks (Seattle, WA); Keith L. Mange (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L47/365H04L47/36
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,270,608
App. No.
14/182,229
Granted
Feb 23, 2016
Kind
B2
Abstract

A network stack sends very large packets with large segment offload (LSO) by performing multi-pass LSO. A first-stage LSO filter is inserted between the network stack and the physical NIC. The first-stage filter splits very large LSO packets into LSO packets that are small enough for the NIC. The NIC then performs a second pass of LSO by splitting these sub-packets into standard MTU-sized networking packets for transmission on the network.

Claims (37)

1. A method for transmitting packets over a network, comprising:

receiving at a first operating system operating on a computing device, an indicator of a first large segment offload (LSO) packet size wherein the first LSO packet size is a multiple of a second LSO packet size that is supported by a network interface card connected to the computing device;

formatting data into a first packet of a first LSO packet size;

transferring the first packet to a second operating system on the same computing device;

splitting the first packet on the second operating system into multiple LSO packets of a second LSO packet size;

sending the multiple LSO packets to the network interface card for transmission on the network in packets of a size supported by the network.

2. The method as recited in claim 1 comprising copying a packet header from the first packet to the multiple LSO packets.

3. The method as recited in claim 1 comprising adjusting a TCP sequence number for the multiple LSO packets.

4. The method as recited in claim 1 wherein the first LSO packet size is based at least in part on a size supported by a virtual machine management system.

5. The method as recited in claim 1 wherein the first operating system is a guest operating system executing on a virtual machine.

6. The method as recited in claim 5 wherein the transferring the first packet to the second operating system is performed by a virtual network interface card driver.

7. The method as recited in claim 1 wherein the second operating system is a host operating system.

8. The method as recited in claim 1 wherein the splitting of the first packet is performed by a virtual switch.

9. A computer-readable storage device having stored thereon computer-readable instructions, the computer-readable instructions, upon execution on a computing device causing a system at least to:

receive at a first operating system operating on a computing device, an indicator of a first large segment offload (LSO) packet size wherein the first LSO packet size is a multiple of a second LSO packet size that is supported by a network interface card connected to the computing device;

format data into a first packet of a first LSO packet size;

transfer the first packet to a second operating system on the same computing device wherein the first packet is split on the second operating system into multiple LSO packets of a second LSO packet size and the multiple LSO packets sent to the network interface card for transmission on the network in packets of a size supported by the network.

10. The computer-readable storage device as recited in claim 9 , the computer-readable instructions, upon execution on a computing device causing the system at least to copy a packet header from the first packet to the multiple LSO packets.

11. The computer-readable storage device as recited in claim 9 , the computer-readable instructions, upon execution on a computing device causing the system at least to adjust a TCP sequence number for the multiple LSO packets.

12. The computer-readable storage device as recited in claim 9 wherein the first LSO packet size is based at least in part on a size supported by a virtual machine management system.

13. The computer-readable storage device as recited in claim 9 wherein the first operating system is a guest operating system executing on a virtual machine.

14. The computer-readable storage device as recited in claim 13 wherein the computer-readable instructions, that upon execution on a computing device cause the system at least to transfer the first packet to the second operating system is performed by a virtual network interface card driver.

15. The computer-readable storage device as recited in claim 9 wherein the second operating system is a host operating system.

16. The computer-readable storage device as recited in claim 9 wherein the computer-readable instructions, that upon execution on a computing device cause the system at least to split the first packet is performed by a virtual switch.

17. A system comprising:

one or more processing devices;

at least one memory in communication with the one or more processing devices when the system is operational, the at least one memory having stored thereon computer-readable instructions, the computer-readable instructions, upon execution on the one or more processing devices causing the system at least to:

receive at a first operating system operating on a computing device, an indicator of a first large segment offload (LSO) packet size wherein the first LSO packet size is a multiple of a second LSO packet size that is supported by a network interface card connected to the computing device;

format data into a first packet of a first LSO packet size;

transfer the first packet to a second operating system on the same computing device wherein the first packet is split on the second operating system into multiple LSO packets of a second LSO packet size and the multiple LSO packets sent to the network interface card for transmission on the network in packets of a size supported by the network.

18. The system as recited in claim 17 , wherein the computer-readable instructions that upon execution on the at least one processing devices cause the system at least to copy a packet header from the first packet to the multiple LSO packets.

19. The system as recited in claim 17 , wherein the computer-readable instructions that upon execution on the at least one processing devices cause the system at least to adjust a TCP sequence number for the multiple LSO packets.

20. The system as recited in claim 17 wherein the first LSO packet size is based at least in part on a size supported by a virtual machine management system.

21. The system as recited in claim 17 wherein the first operating system is a guest operating system executing on a virtual machine.

22. The system as recited in claim 21 wherein the computer-readable instructions that upon execution on the at least one processing devices cause the system at least to transfer the first packet to the second operating system is performed by a virtual network interface card driver.

23. The system as recited in claim 17 wherein the second operating system is a host operating system.

24. The system as recited in claim 17 wherein the computer-readable instructions that upon execution on the at least one processing devices cause the system at least to split the first packet is performed by a virtual switch.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
Continuity (2)
Continuation 12722434 · Mar 11, 2010
Related Publication 20140161123A1 · Jun 12, 2014