US9270608B2ActiveUtilityA1

Multi-stage large send offload

62
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-modified
What 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.