CA2425706A1 - Method to synchronize and upload an offloaded network stack connection with a network stack - Google Patents

Method to synchronize and upload an offloaded network stack connection with a network stack Download PDF

Info

Publication number
CA2425706A1
CA2425706A1 CA002425706A CA2425706A CA2425706A1 CA 2425706 A1 CA2425706 A1 CA 2425706A1 CA 002425706 A CA002425706 A CA 002425706A CA 2425706 A CA2425706 A CA 2425706A CA 2425706 A1 CA2425706 A1 CA 2425706A1
Authority
CA
Canada
Prior art keywords
state
initial
peripheral device
layer
offload
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CA002425706A
Other languages
French (fr)
Other versions
CA2425706C (en
Inventor
James Pinkerton
Abolade Gbadegesin
Sanjay Kaniyar
Nelamangal Krishnaswamy Srinivas
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CA2425706A1 publication Critical patent/CA2425706A1/en
Application granted granted Critical
Publication of CA2425706C publication Critical patent/CA2425706C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/10Streamlined, light-weight or high-speed protocols, e.g. express transfer protocol [XTP] or byte stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/166IP fragmentation; TCP segmentation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level

Abstract

A method to synchronize and upload an offloaded network stack connection between a host network stack and peripheral device is presented. A state object for each layer in the stack is sent to the device that includes state variables that are classified as a constant, a cached variable handled by the host, or a delegated variable handled by the device. State that must be updated by the network stack and the peripheral device is cleanly divided. For example, statistics are tracked by the host, the device, or the host and the device. A statistic tracked by both the host and peripheral device is divided into non-overlapping portions and combined to produce the statistic. Once an upload is initiated, the device achieves a consistent state and hands delegated states to the stack. Each layer in the stack takes control of its delegated state and resources at the device are freed.

Claims (44)

1. A method to upload an offloaded network stack state object from a first path going from a peripheral device to a switch layer to a second path going from the peripheral device through a plurality of software layers and the switch layer, the plurality of software layers including an intermediate layer, the network stack state object having at least one cached state and at least one delegated state, the method comprising the steps of:
commanding the intermediate layer to take control of the at least one delegated state after the at least one delegated state has been received; and sending data through the second path.
2. The method of claim 1 further comprising the step of initiating an upload of the offloaded network stack state object.
3. The method of claim 1 wherein the plurality of layers includes a network layer, the peripheral device having a network delegated state, the method further comprising the steps of:
decrementing a count of a number of offloaded transport connections for the network delegated state; and if the count is decremented to zero:
sending a message to the peripheral device to send the network delegated state to the network layer.
4. The method of claim 1 wherein the plurality of layers includes a framing layer, the peripheral device having a framing delegated state, the method further comprising the steps of:

decrementing a framing count of a number of offloaded network layer states for the framing delegated state; and if the framing count is decremented to zero:
sending a message to the peripheral device to send the framing delegated state to the framing layer.
5. The method of claim 1 further comprising the step of determining if the upload should be initiated.
6. The method of claim 5 wherein the step of determining if the upload should be initiated includes at least one of:
determining if an amount of data being forwarded to the peripheral device is above a maximum threshold;
determining if the peripheral device can not process a function;
determining if an application is not pre-posting buffers; and determining if the amount of data being forwarded to the peripheral device is below a minimum bandwidth.
7. A computer-readable medium having computer executable instructions for performing the steps of claim 1.
8. The computer-readable medium of claim 7 having further computer executable instructions for performing the step of determining if the upload should be initiated, the step of determining if the upload should be initiated includes at least one of:

determining if an amount of data being forwarded to the peripheral device is above a maximum threshold;
determining if the peripheral device can not process a function;
determining if an application is not pre-posting buffers; and determining if the amount of data being forwarded to the peripheral device is below a minimum bandwidth.
9. The computer-readable medium of claim 7 wherein the plurality of layers includes a network layer and a framing layer, the peripheral device having a network delegated state and a framing delegated state, the computer-readable medium having further computer executable instructions for performing the steps of:
decrementing a count of a number of offloaded transport connections for the network delegated state; and if the count is decremented to zero:
sending a message to the peripheral device to send the network delegated state to the network layer;
decrementing a framing count of a number of offloaded network layer states for the framing delegated state; and if the framing count is decremented to zero:
sending a message to the peripheral device to send the framing delegated state to the framing layer.
10. A method to upload an offloaded network stack state object and at least one associated protocol from a first path going from a peripheral device to a switch layer to a second path going from the peripheral device through a plurality of software layers and the switch layer, the plurality of software layers including an intermediate layer, the network stack state object having a cached state and a delegated state, the method comprising the steps of:
completing outstanding requests with a transfer status;
handing the delegated state to the switch layer;
freeing resources in the peripheral device for the intermediate layer; and sending data through the second path.
11. The method of claim 10 further comprising the step of initiating an upload of the offloaded network stack state object and the at least one associated protocol.
12. The method of claim 10 wherein the plurality of layers includes a network layer, the peripheral device having a network delegated state, the method further comprising the steps of sending the network delegated state to the network layer if all offloaded connections from the transport layer have been uploaded.
13. The method of claim 10 wherein the plurality of layers includes a framing layer, the peripheral device having a framing delegated state, the method further comprising the steps of:
sending the framing delegated state to the framing layer if all offloaded connections from the network layer have been uploaded.
14. The method of claim 10 further comprising the step of determining if the upload should be initiated.
15. The method of claim 14 wherein the step of determining if the upload should be initiated includes at least one of:
determining if an amount of data being forwarded from the switch layer to the peripheral device is above a maximum threshold;
determining if there is a lack of activity in the offloaded network stack connection;
determining if the peripheral device can not process a function;
determining if connection behavior is unsuitable for offload;
determining if an upload will enable higher priority state objects to use peripheral device resources if peripheral device resource availability is below a threshold;
determining if an application is not pre-posting buffers; and determining if the amount of data being forwarded to the peripheral device is above a maximum bandwidth.
16. A computer-readable medium having computer executable instructions for performing the steps of claim 10.
17. The computer-readable medium of claim 16 having further computer executable instructions for performing the step comprising determining if the upload should be initiated, the step of determining if the upload should be initiated including at least one of:
determining if an amount of data being forwarded from the switch layer to the peripheral device is above a maximum threshold;
determining if there is a lack of activity in the offloaded network stack connection;
determining if the peripheral device can not process a function;
determining if connection behavior is unsuitable for offload;

determining if an upload will enable higher priority state objects to use peripheral device resources if peripheral device resource availability is below a threshold;
determining if an application is not pre-posting buffers; and determining if the amount of data being forwarded to the peripheral device is above a maximum bandwidth.
18. A method of synchronizing an offloaded network stack state object between a host and a peripheral device in a host having a plurality of software layers, each software layer having at least one state variable, the method comprising the steps of:
for each software layer in the plurality of software layers:
classifying the at least one state variable to be one of a constant variable, a cached variable, and a delegated variable;
sending the at least one state variable to the peripheral device; and if the at least one state variable has been classified as a cached variable:
processing the cached variable by the host; and updating the cached variable in the peripheral device if the cached variable has changed.
19. The method of claim 18 wherein one of the plurality of software layers is a transport layer and wherein the at least one state variable is classified as a constant variable, the at least one state variable including at least one of a destination port, a source port, a window scale factor, and an offload handle.
20. The method of claim 18 wherein one of the plurality of software layers is a network layer and wherein the at least one state variable is classified as a constant variable, the at least one state variable including at least one of a destination IP address and a source IP address.
21. The method of claim 18 wherein one of the plurality of software layers is a TCP layer and wherein the at least one state variable is classified as a cached variable, the at least one state variable including at least one of a TCP variable and an IP variable.
22. The method of claim 18 wherein one of the plurality of software layers is a network layer and wherein the at least one state variable is classified as a cached variable, the at least one state variable including an offload handle.
23. The method of claim 18 wherein one of the plurality of software layers is a framing layer and wherein the at least one state variable is classified as a cached variable, the at least one state variable including an ARP address.
24. The method of claim 18 wherein one of the plurality of software layers is an IP security layer and wherein the constant variable includes at least one of a source port, a destination port, a protocol type, and security association variables.
25. The method of claim 18 wherein one of the plurality of software layers is an IP security layer and wherein the cached variable includes at least one of a rekey on byte count, a stop on byte count, a rekey at a predefined tick, a stop at a predefined tick, and a maximum idle time for which a security association may be used.
26. The method of claim 18 further comprising the steps of:
if the at least one state variable has been classified as a delegated variable:
processing the at least one state variable by the peripheral device; and updating the at least one state variable if the delegated variable has changed.
27. The method of claim 26 wherein one of the plurality of software layers is a TCP layer and wherein the at least one state variable is classified as a delegated variable, the at least one state variable including at least one of a current TCP state, a receive window size, a sequence number for next RECV, a maximum send window, a current congestion window, a maximum sequence number sent, and a sequence number for a next SEND.
28. The method of claim 26 wherein one of the plurality of software layers is a network layer and wherein the at least one state variable is classified as a delegated variable, the at least one state variable including an IP packet id start value
29. The method of claim 26 wherein one of the plurality of software layers is an IP security layer and wherein the delegated variable includes at least one of a count of the bytes encrypted or decrypted with a security association, a life time of the security association, and an idle time of the security association.
30. A computer-readable medium having computer executable instructions for performing the steps of claim 18.
31. The computer-readable medium of claim 30 having further computer executable instructions for performing the steps comprising:
processing each delegated variable by the peripheral device; and for each cached variable: updating the cached variable if the cached variable has changed.
32. A method to conserve resources in a peripheral device that is processing at least one offloaded state and an associated protocol for a plurality of intermediate software layers, the at least one offloaded state having a state object, the method comprising the steps of:
storing an initial state object for a first offloaded state;
receiving an initial offload handle for the initial state object from the peripheral device;
handing the initial offload handle to the peripheral device on a subsequent offload if the state object is the initial state object; and receiving a new offload handle on the subsequent offload if the state object is a new state object.
33. The method of claim 32 wherein the initial state object includes an initial transport state object, the initial offload handle includes an initial transport offload handle, and the new offload handle includes a new transport offload handle, and wherein the steps of handing the initial offload handle to the peripheral device on a subsequent offload if the state object is the initial state object and receiving a new offload handle on the subsequent offload if the state object is a new state object includes the steps of:

handing the initial transport offload handle to the peripheral device on a subsequent offload if the transport state object is the initial transport state object;
and receiving a new transport offload handle on the subsequent offload if the transport state object is a new transport state object.
34. The method of claim 32 wherein the initial state object includes an initial network state object, the initial offload handle includes an initial network layer offload handle, and the new offload handle includes a new network layer offload handle, and wherein the steps of handing the initial offload handle to the peripheral device on a subsequent offload if the state object is the initial state object and receiving a new state offload on the subsequent offload if the state object is a new state object includes the steps of:
handing the initial network layer offload handle to the peripheral device on a subsequent offload if the network state object is the initial network state object; and receiving a new network layer offload handle on the subsequent offload if the network state object is a new network state object.
35. The method of claim 32 wherein the initial state object includes an initial framing state object, the initial offload handle includes an initial framing layer offload handle, and the new offload handle includes a new framing layer offload handle, and wherein the steps of handing the initial offload handle to the peripheral device on a subsequent offload if the state object is the initial state object and receiving a new offload handle on the subsequent offload if the state object is a new state object includes the steps of:
handing the initial framing layer offload handle to the peripheral device on a subsequent offload if the framing state object is the initial framing state object; and receiving a new framing layer offload handle on the subsequent offload if the framing state object is a new framing state object.
36. The method of claim 32 wherein the at least one offloaded state includes a transport state object, a network layer state object, and a framing layer state object, and wherein:
the step of storing the initial state object for the first offloaded state comprises storing an initial transport state object, an initial network layer state object, and an initial framing layer state object for a first offloaded connection;
the step of receiving the initial offload handle for the initial state entry from the peripheral device comprises receiving an initial transport state offload handle for the initial transport state object, an initial network layer offload handle for the initial network layer state object, and an initial framing layer offload handle for the initial framing layer state object for the first offloaded connection;
the step of handing the initial offload handle to the peripheral device on a subsequent offload if the state entry has not changed from the initial state comprises:
handing the initial transport state offload handle to the peripheral device on a subsequent offload if the transport state object is the initial transport state object;
handing the initial network layer offload handle to the peripheral device on the subsequent offload if the network layer state object is the initial network layer state object; and handing the initial framing layer offload handle to the peripheral device on the subsequent offload if the framing layer state object has not changed from the initial framing layer state object; and the step of receiving the new offload handle on the subsequent offload if the state entry has changed from the initial state after the peripheral device has allocated resources for the state entry comprises:
receiving a new transport state offload handle on the subsequent offload if the transport state object is a new transport state object;
receiving a new network layer offload handle on the subsequent offload if the network layer state object is a new network layer state object; and receiving a new framing layer offload handle on the subsequent offload if the framing layer state object is a new framing layer state object.
37. A computer-readable medium for performing the steps of claim 32.
38. The computer readable medium of claim 37 wherein the at least one offloaded state includes at least one of a transport state object, a network layer state object, and a framing layer state object, and wherein:
the step of storing the initial state object for the first offloaded state comprises storing at least one of an initial transport state object, an initial network layer state object, and an initial framing layer state object for a first offloaded connection;
the step of receiving the initial offload handle for the initial state entry from the peripheral device comprises receiving at least one of an initial transport state offload handle for the initial transport state object, an initial network layer offload handle for the initial network layer state object, and an initial framing layer offload handle for the initial framing layer state object for the first offloaded connection;

the step of handing the initial offload handle to the peripheral device on a subsequent offload if the state entry has not changed from the initial state comprises handing at least one of the initial transport state offload handle to the peripheral device on a subsequent offload if the transport state object is the initial transport state object, the initial network layer offload handle to the peripheral device on the subsequent offload if the network layer state object is the initial network layer state object, and the initial flaming layer offload handle to the peripheral device on the subsequent offload if the framing layer state object has not changed from the initial framing layer state object; and the step of receiving the new offload handle on the subsequent offload if the state entry has changed from the initial state after the peripheral device has allocated resources for the state entry comprises receiving at least one of a new transport state offload handle on the subsequent offload if the transport state object is a new transport state object, a new network layer offload handle on the subsequent offload if the network layer state object is a new network layer state object, a new framing layer offload handle on the subsequent offload if the framing layer state object is a new framing layer state object.
39. A method to obtain statistics for a network stack having at least one intermediate software layer and at least one network state object offloaded to a peripheral device, the network state object having at least one of a constant state variable, a cached state variable, and a delegated state variable, the network stack controlled by a host and the offloaded network state object processed by the peripheral device the method comprising the steps of:
for each intermediate software layer:
obtaining statistics from the host for host maintained statistics;

obtaining statistics from the peripheral device for peripheral device maintained statistics;
obtaining statistics from the host and peripheral device for host and peripheral device maintained statistics; and combining the peripheral device maintained statistics and the host and peripheral device maintained statistics to the host maintained statistics.
40. The method of claim 39 wherein the statistics are transport control protocol management information base statistics and wherein the host maintained statistics include at least one of a ts_RtoAlgorithm statistic, a ts_rtomin statistic, a ts_RtoMax statistic, a ts_RtoMaxConn statistic, a ts_ActiveOpens statistic, a ts_PassiveOpens statistic, a ts_AttemptFails statistic, a ts_EstabResets statistic, and a is numcons statistic.
41. The method of claim 39 wherein the statistics are transport control protocol management information base statistics and wherein the host and peripheral maintained statistics include at least one of a t_CurrEstab statistic, a ts_InSegs statistic, a ts_OutSegs statistic, a ts_RetransSegs statistic, a ts_InErrs statistic, and a ts_OutRsts statistic.
42. The method of claim 39 wherein the statistics are Internet protocol version four management information statistics and wherein the host maintained statistics include at least one of an ipsi_Forwarding statistic, an ipsi_DefaultTTL statistic, an ipsi_InAddrErrors statistic, an ipsi_ForwDatagrams statistic, an ipsi_UnknownProtos statistic, an ipsi_RoutingDiscards statistic, an ipsi_ReasmTimeout statistic, a ipsi_FagOKs statistic, an ipsi_FragFails statistic, an ipsi_FragCreates statistic, an ipsi_NumIf statistic, an ipsi_NumAddr statistic, and an ipsi_NumRoutes statistic.
43. The method of claim 39 wherein the statistics are Internet protocol version four management information statistics and wherein the host and peripheral device maintained statistics include at least one of an ipsi_InReceives statistic, an ipsi_InHdrErrors statistic, ipsi InDiscards statistic, an ipsi_InDelivers statistic, an ipsi_OutRequests statistic, an ipsi_OutDiscards statistic, an ipsi_OutNoRoutes statistic, an ipsi_ReamsReqds statistic, an ipsi_ReasmOKs statistic, and an ipsi_ReasmFails statistic.
44. A computer-readable medium for performing the steps of claim 39.
CA2425706A 2002-04-30 2003-04-14 Method to synchronize and upload an offloaded network stack connection with a network stack Expired - Fee Related CA2425706C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/135,630 US7181531B2 (en) 2002-04-30 2002-04-30 Method to synchronize and upload an offloaded network stack connection with a network stack
US10/135,630 2002-04-30

Publications (2)

Publication Number Publication Date
CA2425706A1 true CA2425706A1 (en) 2003-10-30
CA2425706C CA2425706C (en) 2010-02-16

Family

ID=29249503

Family Applications (1)

Application Number Title Priority Date Filing Date
CA2425706A Expired - Fee Related CA2425706C (en) 2002-04-30 2003-04-14 Method to synchronize and upload an offloaded network stack connection with a network stack

Country Status (12)

Country Link
US (2) US7181531B2 (en)
EP (1) EP1361512B1 (en)
JP (2) JP4638658B2 (en)
KR (1) KR100938519B1 (en)
CN (1) CN100552626C (en)
AT (1) ATE396453T1 (en)
AU (1) AU2003203727B2 (en)
BR (1) BR0301035A (en)
CA (1) CA2425706C (en)
DE (1) DE60321082D1 (en)
MX (1) MXPA03003787A (en)
RU (1) RU2336652C2 (en)

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978379A (en) 1997-01-23 1999-11-02 Gadzoox Networks, Inc. Fiber channel learning bridge, learning half bridge, and protocol
US8782199B2 (en) * 1997-10-14 2014-07-15 A-Tech Llc Parsing a packet header
US8539112B2 (en) 1997-10-14 2013-09-17 Alacritech, Inc. TCP/IP offload device
US6697868B2 (en) * 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US6757746B2 (en) * 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6904519B2 (en) * 1998-06-12 2005-06-07 Microsoft Corporation Method and computer program product for offloading processing tasks from software to hardware
US7430171B2 (en) 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US8019901B2 (en) 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
WO2002084499A1 (en) 2001-04-11 2002-10-24 Chelsio Communications, Inc. Multi-purpose switching network interface controller
US8218555B2 (en) 2001-04-24 2012-07-10 Nvidia Corporation Gigabit ethernet adapter
US7239636B2 (en) 2001-07-23 2007-07-03 Broadcom Corporation Multiple virtual channels for use in network devices
US7295555B2 (en) 2002-03-08 2007-11-13 Broadcom Corporation System and method for identifying upper layer protocol message boundaries
US7543087B2 (en) * 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
US7007103B2 (en) * 2002-04-30 2006-02-28 Microsoft Corporation Method to offload a network stack
US7558873B1 (en) * 2002-05-08 2009-07-07 Nvidia Corporation Method for compressed large send
US7437548B1 (en) 2002-07-11 2008-10-14 Nvidia Corporation Network level protocol negotiation and operation
US7411959B2 (en) 2002-08-30 2008-08-12 Broadcom Corporation System and method for handling out-of-order frames
US7934021B2 (en) 2002-08-29 2011-04-26 Broadcom Corporation System and method for network interfacing
US7346701B2 (en) 2002-08-30 2008-03-18 Broadcom Corporation System and method for TCP offload
US8180928B2 (en) 2002-08-30 2012-05-15 Broadcom Corporation Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney
US7313623B2 (en) 2002-08-30 2007-12-25 Broadcom Corporation System and method for TCP/IP offload independent of bandwidth delay product
US7058797B2 (en) * 2002-09-10 2006-06-06 Veritas Operating Corporation Use of off-motherboard resources in a computer system
US7177790B2 (en) * 2002-11-13 2007-02-13 Hewlett-Packard Development Company, L.P. Method and apparatus for providing virtual devices
US7596634B2 (en) * 2002-12-12 2009-09-29 Millind Mittal Networked application request servicing offloaded from host
US7680944B1 (en) * 2003-02-28 2010-03-16 Comtrol Corporation Rapid transport service in a network to peripheral device servers
US7370082B2 (en) * 2003-05-09 2008-05-06 Microsoft Corporation Remote invalidation of pre-shared RDMA key
US8417852B2 (en) * 2003-06-05 2013-04-09 Nvidia Corporation Uploading TCP frame data to user buffers and buffers in system memory
US7913294B1 (en) 2003-06-24 2011-03-22 Nvidia Corporation Network protocol processing for filtering packets
US7526577B2 (en) * 2003-09-19 2009-04-28 Microsoft Corporation Multiple offload of network state objects with support for failover events
US8285881B2 (en) * 2003-09-10 2012-10-09 Broadcom Corporation System and method for load balancing and fail over
US7689702B1 (en) * 2003-10-31 2010-03-30 Sun Microsystems, Inc. Methods and apparatus for coordinating processing of network connections between two network protocol stacks
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US7636372B2 (en) * 2003-12-19 2009-12-22 Broadcom Corporation Method and system for providing smart offload and upload
US8549170B2 (en) 2003-12-19 2013-10-01 Nvidia Corporation Retransmission system and method for a transport offload engine
US7349999B2 (en) * 2003-12-29 2008-03-25 Intel Corporation Method, system, and program for managing data read operations on network controller with offloading functions
US8359349B2 (en) * 2004-03-18 2013-01-22 Nokia Corporation System and associated terminal, method and computer program product for uploading content
US20050246443A1 (en) * 2004-03-31 2005-11-03 Intel Corporation Management of offload operations in a network storage driver
US7783769B2 (en) 2004-03-31 2010-08-24 Intel Corporation Accelerated TCP (Transport Control Protocol) stack processing
KR100587560B1 (en) * 2004-05-07 2006-06-08 삼성전자주식회사 Method and apparatus for communicating with outer system in link local address system
US7945705B1 (en) 2004-05-25 2011-05-17 Chelsio Communications, Inc. Method for using a protocol language to avoid separate channels for control messages involving encapsulated payload data messages
US20050281262A1 (en) * 2004-06-17 2005-12-22 Zur Uri E Method and system for supporting read operations for iSCSI and iSCSI chimney
US7493427B2 (en) * 2004-07-14 2009-02-17 International Business Machines Corporation Apparatus and method for supporting received data processing in an offload of network protocol processing
US7533176B2 (en) * 2004-07-14 2009-05-12 International Business Machines Corporation Method for supporting connection establishment in an offload of network protocol processing
US7930422B2 (en) * 2004-07-14 2011-04-19 International Business Machines Corporation Apparatus and method for supporting memory management in an offload of network protocol processing
US7386566B2 (en) * 2004-07-15 2008-06-10 Microsoft Corporation External metadata processing
US7165118B2 (en) * 2004-08-15 2007-01-16 Microsoft Corporation Layered message processing model
US8248939B1 (en) 2004-10-08 2012-08-21 Alacritech, Inc. Transferring control of TCP connections between hierarchy of processing mechanisms
US7783880B2 (en) 2004-11-12 2010-08-24 Microsoft Corporation Method and apparatus for secure internet protocol (IPSEC) offloading with integrated host protocol stack management
US7730196B2 (en) * 2004-12-03 2010-06-01 Microsoft Corporation Efficient transfer of messages using reliable messaging protocols for web services
US20060153215A1 (en) * 2004-12-20 2006-07-13 Linden Cornett Connection context prefetch
US8219622B2 (en) * 2005-02-09 2012-07-10 Verizon Business Global Llc Systems and methods for providing extended peering
US7568056B2 (en) * 2005-03-28 2009-07-28 Nvidia Corporation Host bus adapter that interfaces with host computer bus to multiple types of storage devices
US7475167B2 (en) * 2005-04-15 2009-01-06 Intel Corporation Offloading data path functions
US7516252B2 (en) * 2005-06-08 2009-04-07 Intel Corporation Port binding scheme to create virtual host bus adapter in a virtualized multi-operating system platform environment
US7660306B1 (en) 2006-01-12 2010-02-09 Chelsio Communications, Inc. Virtualizing the operation of intelligent network interface circuitry
US7724658B1 (en) 2005-08-31 2010-05-25 Chelsio Communications, Inc. Protocol offload transmit traffic management
US7715436B1 (en) 2005-11-18 2010-05-11 Chelsio Communications, Inc. Method for UDP transmit protocol offload processing with traffic management
US7660264B1 (en) 2005-12-19 2010-02-09 Chelsio Communications, Inc. Method for traffic schedulign in intelligent network interface circuitry
US7616563B1 (en) 2005-08-31 2009-11-10 Chelsio Communications, Inc. Method to implement an L4-L7 switch using split connections and an offloading NIC
US7760733B1 (en) 2005-10-13 2010-07-20 Chelsio Communications, Inc. Filtering ingress packets in network interface circuitry
JP4872412B2 (en) * 2006-03-31 2012-02-08 日本電気株式会社 Information detection processing method and apparatus
US7895646B2 (en) * 2006-05-25 2011-02-22 International Business Machines Corporation IKE daemon self-adjusting negotiation throttle
US8112803B1 (en) * 2006-12-22 2012-02-07 Symantec Corporation IPv6 malicious code blocking system and method
US8935406B1 (en) 2007-04-16 2015-01-13 Chelsio Communications, Inc. Network adaptor configured for connection establishment offload
US20080263171A1 (en) * 2007-04-19 2008-10-23 Alacritech, Inc. Peripheral device that DMAS the same data to different locations in a computer
US8060644B1 (en) 2007-05-11 2011-11-15 Chelsio Communications, Inc. Intelligent network adaptor with end-to-end flow control
US7826350B1 (en) 2007-05-11 2010-11-02 Chelsio Communications, Inc. Intelligent network adaptor with adaptive direct data placement scheme
US8589587B1 (en) 2007-05-11 2013-11-19 Chelsio Communications, Inc. Protocol offload in intelligent network adaptor, including application level signalling
US7831720B1 (en) 2007-05-17 2010-11-09 Chelsio Communications, Inc. Full offload of stateful connections, with partial connection offload
US20090019160A1 (en) * 2007-07-12 2009-01-15 International Business Machines Corporation Method and system for workload management utilizing tcp/ip and operating system data
US8539513B1 (en) 2008-04-01 2013-09-17 Alacritech, Inc. Accelerating data transfer in a virtual computer system with tightly coupled TCP connections
US8341286B1 (en) * 2008-07-31 2012-12-25 Alacritech, Inc. TCP offload send optimization
RU2477930C2 (en) * 2008-08-04 2013-03-20 ЗетТиИ Корпорейшн Method and system for transmitting flow multimedia data with zero copying
US20100058082A1 (en) * 2008-08-27 2010-03-04 Lenovo (Singapore) Ple., Ltd. Maintaining network link during suspend state
US9306793B1 (en) 2008-10-22 2016-04-05 Alacritech, Inc. TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies
US8572251B2 (en) * 2008-11-26 2013-10-29 Microsoft Corporation Hardware acceleration for remote desktop protocol
KR101145385B1 (en) 2010-05-31 2012-05-15 (주)이앤비소프트 Data upload method using shortcut
WO2011152593A1 (en) * 2010-05-31 2011-12-08 Hyo-Hwan Bae Data upload method using shortcut
US8582581B2 (en) * 2010-09-28 2013-11-12 Cooper Technologies Company Dual-port ethernet traffic management for protocol conversion
CN102148748B (en) * 2010-10-26 2014-05-21 华为技术有限公司 Method and system for spreading pseudowire routing and sink node equipment
CN102571912B (en) * 2010-12-08 2014-09-10 中国科学院声学研究所 Method for realizing unload protocol stack based on multi-core processor and hybrid operating system
US8868710B2 (en) * 2011-11-18 2014-10-21 Amazon Technologies, Inc. Virtual network interface objects
US9581675B2 (en) * 2012-08-24 2017-02-28 Tektronix, Inc. Virtual model adapter removal and substitution technique for cascaded networks
US9191209B2 (en) * 2013-06-25 2015-11-17 Google Inc. Efficient communication for devices of a home network
US10313231B1 (en) * 2016-02-08 2019-06-04 Barefoot Networks, Inc. Resilient hashing for forwarding packets
US10063407B1 (en) 2016-02-08 2018-08-28 Barefoot Networks, Inc. Identifying and marking failed egress links in data plane
WO2017213654A1 (en) * 2016-06-09 2017-12-14 Intel Corporation Offloading processing from user equipment to network
US20180152393A1 (en) * 2016-11-28 2018-05-31 Microsoft Technology Licensing, Llc Application resource usage reduction
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10237206B1 (en) 2017-03-05 2019-03-19 Barefoot Networks, Inc. Equal cost multiple path group failover for multicast
US10404619B1 (en) 2017-03-05 2019-09-03 Barefoot Networks, Inc. Link aggregation group failover for multicast
CN110460544B (en) 2018-05-08 2021-09-07 华为技术有限公司 Identification distribution method of switches in stack, optical cable and related equipment
US11032367B2 (en) 2018-07-16 2021-06-08 Microsoft Technology Licensing, Llc Long upload time detection and management
KR102151987B1 (en) * 2018-11-23 2020-09-04 한국과학기술원 Method for dynamic offloading proxy server function from host to network adapter in proxy server and proxy server performing the same
CN110113407B (en) * 2019-04-30 2021-08-17 上海连尚网络科技有限公司 Applet state synchronization method, apparatus and computer storage medium
WO2020236275A1 (en) 2019-05-23 2020-11-26 Cray Inc. System and method for facilitating dynamic command management in a network interface controller (nic)
US11855834B2 (en) * 2020-06-02 2023-12-26 Apple Inc. Traffic sink interface
US11368361B2 (en) 2020-06-05 2022-06-21 Microsoft Technology Licensing, Llc Tamper-resistant service management for enterprise systems
WO2022051985A1 (en) * 2020-09-10 2022-03-17 Qualcomm Incorporated Managing a communication link for transfer control protocol communications
RU208657U1 (en) * 2021-04-23 2021-12-29 Российская Федерация, от имени которой выступает ФОНД ПЕРСПЕКТИВНЫХ ИССЛЕДОВАНИЙ Model of the onboard computer of an aircraft weapon

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5727142A (en) * 1996-05-03 1998-03-10 International Business Machines Corporation Method for a non-disruptive host connection switch after detection of an error condition or during a host outage or failure
US6094712A (en) * 1996-12-04 2000-07-25 Giganet, Inc. Computer network interface for direct mapping of data transferred between applications on different host computers from virtual addresses to physical memory addresses application data
KR19980063990A (en) * 1996-12-11 1998-10-07 윌리엄비.켐플러 How to allocate and deallocate transmission resources within the local multipoint distribution service system
US6591302B2 (en) * 1997-10-14 2003-07-08 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US6427171B1 (en) * 1997-10-14 2002-07-30 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US6757746B2 (en) * 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US6389479B1 (en) * 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US7133940B2 (en) * 1997-10-14 2006-11-07 Alacritech, Inc. Network interface device employing a DMA command queue
US6697868B2 (en) * 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US5937169A (en) * 1997-10-29 1999-08-10 3Com Corporation Offload of TCP segmentation to a smart adapter
US6765901B1 (en) * 1998-06-11 2004-07-20 Nvidia Corporation TCP/IP/PPP modem
US6904519B2 (en) * 1998-06-12 2005-06-07 Microsoft Corporation Method and computer program product for offloading processing tasks from software to hardware
US6141705A (en) * 1998-06-12 2000-10-31 Microsoft Corporation System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed
JP2001230812A (en) * 2000-02-14 2001-08-24 Hitachi Ltd Network connector off-loading communication start processing and method using it
CN1276372C (en) 2000-09-29 2006-09-20 艾拉克瑞技术公司 Intelligent networks storage interface system and devices
US7007103B2 (en) * 2002-04-30 2006-02-28 Microsoft Corporation Method to offload a network stack

Also Published As

Publication number Publication date
US20030204631A1 (en) 2003-10-30
US20050182854A1 (en) 2005-08-18
ATE396453T1 (en) 2008-06-15
US7181531B2 (en) 2007-02-20
JP2004030612A (en) 2004-01-29
EP1361512A2 (en) 2003-11-12
EP1361512B1 (en) 2008-05-21
JP4638658B2 (en) 2011-02-23
KR20030085484A (en) 2003-11-05
RU2336652C2 (en) 2008-10-20
JP2011018373A (en) 2011-01-27
DE60321082D1 (en) 2008-07-03
CN1458590A (en) 2003-11-26
AU2003203727B2 (en) 2009-04-23
EP1361512A3 (en) 2005-11-30
CA2425706C (en) 2010-02-16
AU2003203727A1 (en) 2003-11-13
KR100938519B1 (en) 2010-01-25
AU2003203727A8 (en) 2003-11-13
US7171489B2 (en) 2007-01-30
MXPA03003787A (en) 2005-08-26
BR0301035A (en) 2004-08-17
CN100552626C (en) 2009-10-21

Similar Documents

Publication Publication Date Title
CA2425706A1 (en) Method to synchronize and upload an offloaded network stack connection with a network stack
US10652147B2 (en) Packet coalescing
JP4829896B2 (en) Method, system and article for improved network performance by avoiding data corruption
EP1494426B1 (en) Secure network processing
US9350667B2 (en) Dynamically assigning packet flows
US20050060418A1 (en) Packet classification
Pit-Claudel et al. Stateless load-aware load balancing in p4
RU2003112727A (en) METHOD OF SYNCHRONIZING AND TRANSFERING THE UNLOADED NETWORK STACK CONNECTION TO THE NETWORK STACK
CN112631788B (en) Data transmission method and data transmission server
US20040093415A1 (en) Method and system for managing connections in a computer network
US10298494B2 (en) Reducing short-packet overhead in computer clusters
US11134060B2 (en) Mobile virtual private network configuration
US10187317B1 (en) Methods for traffic rate control and devices thereof
US10715495B2 (en) Congestion control during communication with a private network
US20040228280A1 (en) Dynamic blocking in a shared host-network interface
Kim et al. fFTP: a fast file transfer protocol for home N-screen platform
JP2011193055A (en) Communication device and communication method
US10764360B2 (en) Managing persistent TCP connections in an IPVS environment
CN114237546A (en) Management method of cache queue, electronic device and storage medium
WO2016079626A1 (en) Reducing short-packet overhead in computer clusters
Chen et al. Multimedia stream oriented improvement for lightweight TCP/IP stack

Legal Events

Date Code Title Description
EEER Examination request
MKLA Lapsed

Effective date: 20140415