US9270608B2ActiveUtilityA1
Multi-stage large send offload
Assignee: MICROSOFT TECHNOLOGY LICENSING LLCPriority: Mar 11, 2010Filed: Feb 17, 2014Granted: Feb 23, 2016
Est. expiryMar 11, 2030(~3.7 yrs left)· nominal 20-yr term from priority
H04L 47/365H04L 47/36
62
PatentIndex Score
1
Cited by
24
References
24
Claims
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
exact text as granted — not AI-modifiedWhat is claimed:
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.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.