Packet tracking techniques for communication networks

Packet tracking techniques enable efficient packet delivery confirmation and application layer notification by delegating tracking management to the initiating device, addressing the challenge of overwhelmed receiving devices in communication networks.

DE112016005872B4Active Publication Date: 2025-08-07INTEL CORP
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
DE112016005872
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2015-12-21
Filing Date
2016-11-21
Publication Date
2025-08-07
Estimated Expiration
2036-11-21

AI Technical Summary

Technical Problem

Computing devices in communication networks face challenges in managing packet transmission tracking information efficiently, particularly when the receiving device cannot handle local tracking states, leading to incomplete message delivery confirmation and lack of notification to application layers.

Method used

Implementing packet tracking techniques that allow a computing device to delegate tracking information management to the initiating device by sending an accept message with a tracking parameter retention request, enabling the initiator to maintain tracking parameters during the packet transmission session.

Benefits of technology

Ensures complete packet delivery confirmation and timely notification to application layers, even when the receiving device is overwhelmed, by leveraging the initiator's tracking capabilities.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Device (550) comprising: a circuit (552); a tracking component (558) for execution by the circuit (552) to: in response to a request from an initiator device (500) to establish a packet transfer session, determining whether tracking information for the packet transfer session can be managed locally; and in response to a determination that the tracking information for the packet transfer session cannot be managed locally, identifying one or more tracking parameters (572) to be maintained at the initiator device (500); and a communication component (556), for execution by the circuit (552), for sending an acceptance message (562) to grant the request of the initiator device (500) to establish the packet transfer session, the acceptance message (562) being arranged to indicate a request to maintain the one or more tracking parameters (572).
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] Embodiments herein generally relate to communications between computing devices in communications networks. BACKGROUND

[0002] To exchange messages between different computing devices in a communications network, applications executing on different computing devices in a communications network may use application-layer connectivity provided by interconnect connectivity of that communications network. At the transport layer, messages exchanged by such applications may be segmented, and the segments may be encapsulated in packets for transmission. A computing device receiving a message intended for a recipient application executing on that computing device may need to acknowledge that it has received all packets containing segments of the message and inform the recipient application that the message transmission is complete.

[0003] US 2015 / 0089500 A1 relates to a method and system for improving TCP (Transmission Control Protocol) performance by offloading TCP processing to a protocol acceleration module. One or more data packets transmitted in sequence between a protocol sender and a protocol receiver are observed, and either the protocol sender or receiver is located within a virtualized host. It is determined whether the protocol packet buffer within the protocol acceleration module is full. One or more in-sequence packets are processed in an accelerated mode, wherein the processing includes copying the in-sequence data packets into the protocol packet buffer.

[0004] US 2012 / 0063309 A1 relates to a TCP transmission control apparatus and a TCP transmission control method for improving an efficient transmission control method in the transmission of data via TCP / IP.

[0005] US 7 089 304 B2 relates to methods, systems and computer program products for tracking the use of one or more services provided by one or more servers by a client.

[0006] US 2014 / 0330976 A1 refers to the stateless handling of TCP connections.

[0007] US 2015 / 0078160 A1 relates to systems and methods for avoiding catastrophic congestion failures and resource waste when transmitting large amounts of data over TCP / IP networks. SUMMARY OF THE INVENTION

[0008] According to the invention, devices having the features according to the main claim 1 and the independent claim 8, as well as non-volatile computer-readable storage media having the features according to the independent claims 15 and 21, respectively, are proposed. BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 illustrates an embodiment of a first operating environment. Fig. 2 illustrates an embodiment of a second operating environment. Fig. 3 illustrates one embodiment of a communication flow. Fig. 4 illustrates an embodiment of a third operating environment. Fig. 5 illustrates an embodiment of a first device and an embodiment of a second device. Fig. 6 illustrates an embodiment of a first logic flow. Fig. 7 illustrates an embodiment of a second logic flow. Fig. 8 illustrates an embodiment of a storage medium. Fig. 9 illustrates one embodiment of a computer architecture. Fig. 10 illustrates one embodiment of a communication architecture. DETAILED DESCRIPTION

[0009] Various embodiments may generally relate to packet tracking techniques for communication networks.In an exemplary embodiment, a device may comprise: circuitry, a tracking component, for execution by the circuitry, for: in response to a request from an initiator device to establish a packet transfer session, determining whether tracking information for the packet transfer session can be maintained locally, and in response to a determination that the tracking information for the packet transfer session cannot be maintained locally, identifying one or more tracking parameters to maintain at the initiator device, and a communication component, for execution by the circuitry, for sending an acceptance message to grant the request of the initiator device to establish the packet transfer session, wherein the acceptance message is provided to indicate a request to maintain the one or more tracking parameters.Other embodiments are also described and claimed.

[0010] Various embodiments may include one or more elements. An element may include any structure arranged to perform particular operations. Each element may be implemented in hardware, software, or any combination thereof, as desired for a given set of design parameters or performance constraints. Although an embodiment may be described by way of example with a limited number of elements in a particular topology, the embodiment may include more or fewer elements in alternative topologies, as desired for a given implementation. It should be noted that any reference to "an embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment.The appearances of the phrases "in one embodiment," "in some embodiments," and "in various embodiments" in various places in the specification are not necessarily all referring to the same embodiment.

[0011] Fig. 1 illustrates an example of an operating environment 100 that may be representative of various embodiments. In the operating environment 100, a communication network 101 includes a plurality of computing devices 102-1 to 102-5. In some embodiments, a connectivity structure 103 of the communication network 101 may generally enable communication between the computing devices 102-1 to 102-5. In various embodiments, the connectivity structure 103, in the context of the application layer, may generally enable the use of application-layer send operations to send messages for receipt via application-layer receive operations. In the example of Fig. 1, computing device 102-1 may use a send operation 104 to send a message 108 to computing device 102-2 via connectivity fabric 103, and computing device 102-2 may use a receive operation 106 to receive message 108 from computing device 102-1 via connectivity fabric 103. Embodiments are not limited to this example.

[0012] Fig. 2 illustrates an example of an operating environment 200 that may be representative of some embodiments. In the operating environment 200, to send the message 108 to the computing device 102-2, the computing device 102-1 may partition some or all of the messages 108 into a plurality of data segments 210-1 through 210-N, where N is an integer greater than 1. In various embodiments, the computing device 102-1 may then send each of the plurality of data segments 210-1 through 210-N to the computing device 102-2 in a separate one of the packets 212-1 through 212-N. In some embodiments, each of the packets 212-1 through 212-N may include a respective one of payloads 214-1 through 214-N, each of which may include the data segment to be carried by its associated packet.In various embodiments, computing device 102-2 may receive packets 212-1 through 212-N, extract data segments 210-1 through 210-N from respective payloads 214-1 through 214-N, and reconstruct message 108 using data segments 210-1 through 210-N. Embodiments are not limited to this example.

[0013] Fig. 3 illustrates an example of a communication flow 300 that may be representative of a series of communications that may be exchanged between computing devices 102-1 and 102-2 in some embodiments. In various embodiments, the communications that computing devices 102-1 and 102-2 exchange according to communication flow 300 may include transport layer communications. In some embodiments, computing devices 102-1 and 102-2 may exchange such transport layer communications to support application layer communications between computing devices 102-1 and 102-2. For example, communication flow 300 may be representative of communications that computing devices 102-1 and 102-2 may exchange in various embodiments in connection with the transfer of packets 212-1 to 212-N from computing device 102-1 to computing device 102-2 in operating environment 200 of Fig. 2, and packets 212-1 through 212-N may include the various segments of application layer message 108. Embodiments are not limited to this example.

[0014] As in Fig. 3, communication flow 300 may begin at 302, where computing device 102-1 may send a message transfer request message to computing device 102-2. In some embodiments, this message transfer request may generally comprise a request from a transport layer entity at computing device 102-1 to establish a transport layer session with a transport layer entity at computing device 102-2 and send one or more packets to the transport layer entity at computing device 102-2. At 304, computing device 102-2 may send a message transfer acceptance message to computing device 102-1.In various embodiments, this messaging acceptance message may generally represent an indication from the transport layer entity at computing device 102-2 that the transport layer entity at computing device 102-1 may transmit the one or more packets as requested. In some embodiments, the messaging request message sent at 302 may comprise a request to send (RTS), and the messaging acceptance message sent at 304 may comprise a clear-to-send (CTS). In various embodiments, the exchange of the messaging request and acceptance messages may constitute a handshake 301. In some embodiments, handshake 301 may generally comprise a wire-level handshake between respective transport layer entities at computing devices 102-1 and 102-2.In various embodiments, the completion of handshake 301 may establish a transport-layer session between the respective transport-layer entities at computing devices 102-1 and 102-2. Embodiments are not limited in this context.

[0015] In some embodiments, after receiving the message transfer acceptance message from computing device 102-2, computing device 102-1 may send packets 1, 2, 3, and 4 to computing device 102-2 at 306, 308, 310, and 312, respectively. In various embodiments, the respective payloads of packets 1, 2, 3, and 4 may each include segments of an application layer message, such as message 108 of Fig. 2. In connection with the operating environment 200 of Fig. 2, the communication flow 300 may be representative of some embodiments in which N is equal to 4, such that the message 108 is divided into four segments 210-1 to 210-4, which are delivered to the computing device 102-2 in the respective payloads 214-1 to 214-4 of four packets 212-1 to 212-4. As in Fig. 3, packets 1, 2, 3, and 4 do not necessarily have to arrive at the computing device 102-2 in the same order as those sent by the computing device 102-1. In the Fig. 3, packet 2 is the second packet sent by computing device 102-1, but the last packet received by computing device 102-2. At each of 314, 316, 318, and 320, computing device 102-2 may send an acknowledgment to acknowledge receipt of a respective one of packets 1, 2, 3, and 4. That is, computing device 102-2 may send a first acknowledgment (ACK) at 314 to acknowledge packet 1, a second acknowledgment at 316 to acknowledge packet 3, a third acknowledgment at 318 to acknowledge packet 4, and a fourth acknowledgment at 320 to acknowledge packet 2. At 322, the transport layer entity at computing device 102-2 may determine that each required packet has been received. At 324, the message recipient application at computing device 102-2 may be notified that the transmission of the application layer message is complete.The embodiments are not limited to this example.

[0016] Fig. 4 illustrates an example of an operating environment 400 that may be representative of various embodiments. In the operating environment 400, the computing devices 102-1 and 102-2 may generally engage in a transport-layer communication exchange to support the delivery of an application-layer message from the computing device 102-1 to the computing device 102-2. In some embodiments, this transport-layer communication exchange may be of the same or similar nature as the communication flow 300 of Fig. 3. In various embodiments, computing device 102-1 may send a message transfer request 410 to computing device 102-2. In some embodiments, message transfer request 410 may include an RTS. In various embodiments, packet transfer request 410 may be the same as or similar to the message transfer request sent at 302 in communication flow 300 of Fig. 3. In some embodiments, computing device 102-2 may grant message transfer request 410 by sending a message transfer acceptance 412 to computing device 102-1. In various embodiments, message transfer acceptance 412 may include a CTS. In some embodiments, message transfer acceptance 412 may be the same as—or similar to—the message transfer acceptance such as that sent at 304 in communication flow 300 of Fig. 3 is sent.

[0017] In various embodiments, computing device 102-1 may initiate a packet transfer procedure in response to receiving message transfer acceptance 412. In some embodiments, computing device 102-1 may transfer one or more packets 414 to computing device 102-2 according to the packet transfer procedure. In various embodiments, packets 414 may be the same as—or similar to—the packets transmitted at 306, 308, 310, and 312 in communication flow 300 of Fig. 3. In some embodiments, computing device 102-2 may send one or more acknowledgments 416 to acknowledge one or more respective received packets 414. In various embodiments, acknowledgments 416 may be the same as—or similar to—acknowledgments 316, 318, and 320 sent at 314 in communication flow 300 of Fig. 3. In some embodiments, in connection with granting the message transfer request 410, the computing device 102-2 may designate a receive buffer 418 for storing packets received via the packet transfer procedure that the computing device 102-1 initiates in response to the message transfer acceptance 412. In various embodiments, the computing device 102-2 may then store each received packet 414 in this receive buffer 418. The embodiments are not limited in this context.

[0018] In some embodiments, computing device 102-2 may maintain communication tracking information 420 for each given transport layer session over which it receives packets from another computing device. In various embodiments, in operating environment 400, computing devices 102-1 and 102-2 may exchange message transfer request 410 and message transfer acceptance 412 and establish a transport layer session, computing device 102-2 may receive packets 414 over that transport layer session, and computing device 102-2 may maintain communication tracking information 420 for that transport layer session. In some embodiments, computing device 102-2 may maintain respective communication tracking information 420 for each of multiple transport layer sessions simultaneously.In various embodiments, the communication tracking information 420 for any given transport layer session may include a set of one or more tracking parameters. For example, in some embodiments, the communication tracking information 420 for the transport layer session over which the computing device 102-2 receives packets 414 may form one or more parameters included in a tracking parameter set 422. In various embodiments, the computing device 102-2 may assign respective tracking states for each of a plurality of transport layer sessions and may associate the respective communication tracking information 420 for each transport layer session with the tracking state for that transport layer session.For example, in some embodiments, computing device 102-2 may assign a tracking state for the transport layer session over which it receives packets 414 and may associate tracking parameter set 422 with that tracking state. Embodiments are not limited in this context.

[0019] In various embodiments, tracking parameter set 422 may include packet tracking parameters 424. In some embodiments, packet tracking parameters 424 may generally include one or more parameters describing characteristics associated with packets 414 that computing device 102-2 is to receive from computing device 102-1. In various embodiments, packet tracking parameters 424 may include one or more parameters indicating and / or usable to determine a size of each packet 414 to be received by computing device 102-1. In some embodiments, packet tracking parameters 424 may include one or more parameters indicating and / or usable to determine a number of packets 414 to be received by computing device 102-1.In various embodiments, packet tracking parameters 424 may include one or more parameters that indicate and / or are usable to determine a collective amount of data included in the payload of the various packets 414 to be received by computing device 102-1. In some such embodiments, this collective amount of data may be similar to the size of an application-layer message, such as message 108 of FIG. Fig. 2. In various embodiments, the packet tracking parameters 424 may include one or more parameters identified based on the packet description information 411 included in the message transfer request 410. For example, in some embodiments, the message transfer request 410 may include packet description information 411 identifying the size of each packet 414 and the size of the application-layer message used to transmit the packets 414, and the computing device 102-2 may maintain packet tracking parameters 424 identifying these values. Embodiments are not limited to this example.

[0020] In various embodiments, the tracking parameter set 422 may include one or more message tracking parameters 426. In some embodiments, the message tracking parameters 426 may generally include one or more parameters indicating a correspondence between the packets 414 that the computing device 102-2 may receive from the computing device 102-1 and an application-layer message, operation, or process. In various embodiments, the message tracking parameters 426 may include one or more parameters indicating and / or usable to determine an application-layer receive operation to which a message reconstructed using packets 414 should be delivered.In some embodiments, message tracking parameters 426 may include one or more parameters indicating an association between receive buffer 418 and such a receive operation. Embodiments are not limited to these examples.

[0021] In various embodiments, knowledge of the packet tracking parameters 424 may generally enable the computing device 102-2 to determine whether it has received all the packets it should receive in connection with a given transport layer session. For example, in some embodiments, the determination at 322 in the communication flow 300 may be Fig. 3, that the computing device 102-2 has received each required packet, based on packet tracking parameters 424. In various embodiments, knowledge of the message tracking parameters 426 may generally enable the computing device 102-2 to identify an application layer operation or process that should be informed of the successful completion of a given packet transmission. For example, in some embodiments, the computing device 102-2 may inform the receiving operation 106 of Fig. 1 based on message tracking parameters 426 and generate an event to notify the receive operation 106 of the successful receipt of message 108. Embodiments are not limited to these examples.

[0022] In various embodiments, there may be a limit to the total amount of packet tracking information 420 that computing device 102-2 can manage at any given time. For example, in some embodiments, computing device 102-2 may only be able to manage a certain number of tracking states and / or tracking parameter sets 422. In various embodiments, if such a limit has already been reached at the time of receiving a message transfer request 410, computing device 102-2 may not be able to manage the communication tracking information 420 for its transport-layer session with computing device 102-1.For example, computing device 102-2 may not be able to manage a tracking parameter set 422 for its transport-layer session with computing device 102-1 if it is unable to assign a monitor state for that session. In some embodiments, if computing device 102-2 is unable to manage communication tracking information 420, computing device 102-2 may not know that it has received each of the required packets 414 after it has actually received each such packet. For example, if it receives an acknowledgment of packet 2 at 320 in communication flow 300 of FIG. Fig. 3, computing device 102-2 may be unaware that it has received each of the four packets to be received if it is unable to manage communication tracking information 420. In various embodiments, the inability to manage communication tracking information 420 may also result in computing device 102-2 being unaware of the identity of the receiving operation that is to be informed of the successful completion of the message transmission. The embodiments are not limited in this context.

[0023] Disclosed herein are packet tracking techniques that may be implemented in some embodiments to assist in the delivery of a message to a destination device via a transport-layer packet transfer when the destination device cannot maintain tracking information for the transport-layer session over which the packets are being transferred. According to various such techniques, a computing device that receives a message transfer request at a time when it is unable to generate a new tracking state entry may send a message transfer acceptance to accept the request, and the message transfer acceptance message may include a tracking delegation request to indicate that an initiator device should maintain tracking information for the session. The embodiments are not limited in this context.

[0024] Fig. 5 illustrates examples of devices 500 and 550 that may be representative of devices that may implement one or more of the disclosed packet tracking techniques, according to some embodiments. Device 500 may generally be representative of an initiator device that sends a request to establish a packet transfer session with a target device to send packets to that target device. Device 550 may generally be representative of a target device that receives such a request. According to various embodiments, device 500 may be representative of computing device 102-1 of Fig. 1 to 4, and the device 550 may be representative of the computing device 102-2 of the Fig. 1 to 4 should be representative. As in Fig. 5, both devices 500 and 550 include several elements, including respective circuits 502 and 552 and respective memories 503 and 553. However, embodiments are not limited to the type, number, or arrangement of elements shown in this figure.

[0025] In some embodiments, devices 500 and 550 may include respective circuits 502 and 552. Circuit 502 and circuit 552 may both be configured to execute one or more software- or firmware-implemented modules or components, which may include respective communication components 506 and 556 and corresponding tracking components 508 and 558.In various embodiments, one or both of circuitry 502 and circuitry 552 may comprise circuitry of a processor or logic device, such as a complex instruction set computer (CISC) microprocessor, a reduced instruction set computer (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, an x86 instruction set compatible processor, a processor implementing a combination of instruction sets, a multi-core processor such as a dual-core processor or a dual-core mobile processor, or any other microprocessor or central processing unit (CPU).In some embodiments, one or both of circuitry 502 and circuitry 552 may comprise circuitry of a dedicated processor, such as a controller, a microcontroller, an embedded processor, a chip multiprocessor (CMP), a coprocessor, a digital signal processor (DSP), a network processor, a media processor, an input / output (I / O) processor, a media access control (MAC) processor, a radio baseband processor, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a programmable logic device (PLD), and so on.In various embodiments, one or both of circuit 502 and circuit 552 may be implemented using any of various commercially available processors, including, without limitation, AMD® Athlon®, Duron®, and Opteron® processors; ARM® application, embedded, and secure processors; IBM® and Motorola® DragonBall® and PowerPC® processors; IBM and Sony® Cell processors; Intel® Atom®, Celeron®, Core (2) Duo®, Core i3, Core i5, Core i7, Itanium®, Pentium®, Xeon®, Xeon Phi®, and XScale® processors; and similar processors. The embodiments are not limited in this regard.

[0026] In various embodiments, devices 500 and 550 may include or be configured to be communicatively coupled to respective memories 503 and 553. One or both of memories 503 and 553 may be implemented as both volatile and non-volatile memory using any machine-readable or computer-readable medium capable of storing data.For example, one or both of the memories 503 and 553 may comprise read-only memory (ROM), random access memory (RAM), dynamic RAM (DRAM), double data rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, polymer memory such as ferroelectric polymer memory, ovonic memory, phase change or ferroelectric memory, silicon oxide nitride oxide silicon (SONOS) memory, magnetic or optical cards, or any other type of medium suitable for storing information.It should be noted that some or all of the memories 503 and 553 may be included in the same respective integrated circuits, such as circuit 502 and circuit 552, or, alternatively, some or all of the memories 503 and 553 may be located in integrated circuits or other media, such as hard disk drives, external to the respective integrated circuits of circuit 502 and circuit 552. Although the memories 503 and 553 are shown in the respective devices 500 and 550 in . Fig. 5, in some embodiments, memories 503 and 553 may be located external to the respective devices 500 and 550. The embodiments are not limited in this context.

[0027] In some embodiments, the communication component 506 may be implemented by the circuitry 502 to generally manage communications between the device 500 and one or more remote devices. In various embodiments, the communication component 556 may be implemented by the circuitry 552 to generally manage communications between the device 550 and one or more remote devices. In some embodiments, the communication components 506 and 556 may be configured to send and / or receive messages in a communication network, such as the communication network 101 of Fig. 1. In various embodiments, communication components 506 and 556 may additionally include logic, circuitry, and / or instructions configured to perform various operations to support such communications. Examples of such operations may include, without limitation, the selection of transmit and / or receive parameters and / or timing, construction and / or deconstruction of packets and / or protocol data units (PDUs), encoding and / or decoding, error detection, and / or error correction. Embodiments are not limited to these examples.

[0028] In some embodiments, tracking component 508 may be executed by circuitry 502 to manage tracking information in support of communications performed by communication component 506. In various embodiments, tracking component 558 may be executed by circuitry 552 to manage tracking information in support of communications performed by communication component 556. In some embodiments, tracking components 508 and 558 may manage tracking information for various transport layer sessions during which respective communication components 506 and 556 may send and / or receive packets.In various embodiments, tracking components 508 and 558 may maintain tracking information that identifies applications, application-layer messages, and / or send / receive operations associated with such transport-layer sessions. The embodiments are not limited in this context.

[0029] In some embodiments, circuitry 502 may execute an application 504 at device 500, and circuitry 552 may execute an application 554 at device 550. In various embodiments, applications 504 and 554 may comprise respective instances of the same application. In some other embodiments, applications 504 and 554 may comprise different applications. In various embodiments, application layer connectivity between devices 500 and 550 generally may enable applications 504 and 554 to send application layer messages to each other. In some embodiments, application 504 may use a send operation 505 to send an application layer message 507 to application 554, and application 554 may use a receive operation 555 to receive that application layer message 507.In various embodiments, application layer message 507 may be the same or a similar message as message 108 of FIGS. Fig. 1 and Fig. 2. In some embodiments, to enable the application layer message 507 to be transmitted to the device 550, the communication component 506 may split the application layer message 507 into multiple data segments and send each such data segment to the device 550 in one of a respective plurality of packets 514. In various embodiments, the packets 514 may be the same—or similar—to the packets 414 of Fig. 4. The embodiments are not limited in this context.

[0030] In some embodiments, the communication component 506 may send a request message 510 to the device 550. In various embodiments, the request message 510 may comprise a request to send (RTS) message. In some embodiments, the request message 510 may comprise a request to establish a packet transfer session with the device 550 for sending packets 514 to the device 550. In various such embodiments, the packet transfer session to be established may comprise a transport layer session. In some embodiments, the communication component 556 may receive the request message 510 at the device 550 and may choose to grant the request to establish the packet transfer session. In various embodiments, the tracking component 558 may determine whether tracking information for the packet transfer session can be maintained locally.In some embodiments, the tracking component 558 may determine whether tracking information for the packet transfer session can be managed locally based on whether a tracking state can be assigned for the packet transfer session. In various embodiments, in response to a determination that tracking information for the packet transfer session cannot be managed locally, the tracking component 558 may identify one or more tracking parameters 572 to be maintained at the device 500 during the packet transfer session. Embodiments are not limited in this context.

[0031] In some embodiments, the communications component 556 may select a receive buffer 568 for use at the device 550 to store packets 514 to be received during the packet transfer session. In various embodiments, the receive buffer 568 may include or correspond to a set of memory resources of the memory 553. In some embodiments, the communications component 556 may identify one or more receive buffers assigned to the receive operation 555 and may select the receive buffer 568 from the one or more identified receive buffers. In various embodiments, the communications component 556 may send an acceptance message 562 to the device 500 to grant the request to establish the packet transfer session. In some embodiments, the acceptance message 562 may include a clear to send (CTS) message.In various embodiments, the communication component 556 may use the acceptance message 562 to indicate a request that the tracking parameters 572 be retained at the device 500 during the packet transfer session. In some embodiments, the communication component 556 may include tracking parameters 572 within the acceptance message 562. In various embodiments, the tracking parameters 572 may include an identifier associated with the receive buffer 568. In some embodiments, the tracking parameters 572 may include an identifier associated with the receive operation 555. In various embodiments, the acceptance message 562 may include a message of a particular type for use in indicating requests to retain the initiator-side tracking parameter.For example, in some embodiments, the acceptance message 562 may include an extended CTS (ECTS) intended for use in indicating an initiator-side tracking parameter retention request. In various other embodiments, the communication component 556 may set a flag, bit, field, parameter value, or other type of information element within the acceptance message 562 to use the acceptance message 562 to indicate the request to retain the initiator-side tracking parameter. The embodiments are not limited in this context.

[0032] In some embodiments, the communications component 506 may receive the acceptance message 562 from the device 500 and determine that the request to establish the packet transfer session has been granted. In various embodiments, the tracking component 508 may configure a tracking parameter set 522 for the packet transfer session. In some embodiments, the tracking component 508 may assign a tracking state for the packet transfer session and associate the tracking parameter set 522 with the assigned tracking state. In various embodiments, the tracking component 508 may store the tracking parameter set 522 in the memory 503. In some embodiments, the tracking component 508 may identify one or more initiator-side tracking parameters 528 and maintain the one or more initiator-side tracking parameters 528 in the tracking parameter set 522.In various embodiments, the initiator-side tracking parameters 528 may include an identifier associated with the send operation 505. In some embodiments, the initiator-side tracking parameters 528 may include one or more parameters describing characteristics of the application-layer message 507. In various embodiments, the initiator-side tracking parameters 528 may include one or more parameters describing properties of packets 514. Embodiments are not limited to these examples.

[0033] In various embodiments, the tracking component 508 may determine that the acceptance message 562 includes a tracking parameter retention request. In some embodiments, in response to this determination, the tracking component 508 may retain one or more target-side tracking parameters 530 for the packet transfer session. In various embodiments, the tracking component 508 may retain the one or more target-side tracking parameters 530 in the tracking parameter set 522 that it configures for the packet transfer session. In some embodiments, the one or more target-side tracking parameters 530 may include one or more tracking parameters 572 included in the acceptance message 562. In various embodiments, the one or more target-side tracking parameters 530 may include an identifier associated with the receive operation 555.In some embodiments, the one or more target-side tracking parameters 530 may include an identifier associated with the receive buffer 568. Embodiments are not limited to these examples.

[0034] In various embodiments, in response to receiving the acceptance message 562 during an established packet transfer session with the device 550, the communication component 506 may send a plurality of packets 514 to the device 550. In some embodiments, the communication component 556 may receive the plurality of packets 514 at the device 550. In various embodiments, the communication component 556 may store the plurality of packets 514 in the receive buffer 568. In some embodiments, the communication component 556 may send a plurality of acknowledgments 566 to the device 500, and each such acknowledgment 566 may acknowledge a respective one of the plurality of packets 514. In various embodiments, the tracking component 508 may maintain packet acknowledgment information 532 at the device 500 during the packet transfer session.In some embodiments, the tracking component 508 may maintain packet acknowledgment information 532 based on acknowledgments 566 sent by the device 550. In various embodiments, the packet acknowledgment information 532 may identify each packet 514 acknowledged by the device 550 at any time during the packet transmission session. Embodiments are not limited in this context.

[0035] In some embodiments, the tracking component 508 may determine that the device 550 has acknowledged each of the plurality of packets 514. In various embodiments, the tracking component 508 may make this determination based on the packet acknowledgment information 532. In some embodiments, in response to such a determination, the communications component 506 may send a transfer completion message 534 to the device 550. In various embodiments, the communications component 506 may include the one or more destination-side tracking parameters 530 within the transfer completion message 534. In some embodiments, the communications component 556 may receive a transfer completion message 534 at the device 550.In various embodiments, in response to receiving the transmission completion notification 534, the communication component 556 may retrieve the plurality of packets 514 from the receive buffer 568 and assemble the plurality of packets. In some embodiments, the communication component 556 may reconstruct the application layer message 507 based on the assembled plurality of packets 514. The embodiments are not limited in this context.

[0036] In various embodiments, the tracking component 508 may retrieve one or more target-side tracking parameters 530 from the transfer completion notification 534 and compile completion information 586 based on the one or more retrieved target-side tracking parameters 530. In some embodiments, the tracking component 508 may identify the receive operation 555 based on one or more such parameters. In various embodiments, the tracking component 508 may return the completion information 586 to the application 554 associated with the receive operation 555. The embodiments are not limited in this context.

[0037] Operations for the above embodiments may be further described with reference to the following figures and the accompanying examples. Some of the figures may include a logic flow. Although such figures illustrated herein may include a particular logic flow, it should be appreciated that the logic flow merely provides one example of how the general functionality described herein may be implemented. Furthermore, the given logic flow does not necessarily need to be performed in the order illustrated unless otherwise noted. Moreover, the given logic flow may be implemented by a hardware element, a software element executed by a processor, or any combination thereof. The embodiments are not limited in this regard.

[0038] Fig. 6 illustrates an example of a logic flow 600 that may be representative of the implementation of one or more of the disclosed packet tracing techniques, according to some embodiments. For example, the logic flow 600 may be representative of operations performed, in some embodiments, by the circuitry 552 in the device 550 of Fig. 5 can be carried out. As in Fig. 6, a request from an initiator device to establish a packet transmission session may be received at 602. For example, the communication component 556 of Fig. 5 receive a request message 510 from the device 500. At 604, it may be determined whether the tracking information for the packet transfer session can be managed locally. For example, the tracking component 558 of Fig. 5 determine whether the tracking information for a packet transfer session with device 500 can be managed locally. If it is determined at 604 that the tracking information can be managed locally, the logic flow may end.

[0039] If it is determined at 604 that the tracking information cannot be managed locally, the flow may proceed to 606. At 606, one or more tracking parameters may be identified to be maintained at the initiator device. For example, the tracking component 558 of Fig. 5, the tracking parameters 572 may be identified. At 608, an acceptance message may be sent to grant the request to establish the packet transfer session, and the acceptance message may indicate a request to retain the one or more tracking parameters. For example, the communication component 556 of Fig. 5 may send the acceptance message 562 to the device 500, and the acceptance message 562 may indicate a request to retain the tracking parameters 572. Embodiments are not limited to these examples.

[0040] Fig. 7 illustrates an example of a logic flow 700 that may be representative of the implementation of one or more of the disclosed packet tracing techniques according to various embodiments. For example, the logic flow 700 may be representative of operations performed, in some embodiments, by the circuitry 502 in the device 500 of Fig. 5 can be carried out. As in Fig. 7, a request to establish a packet transmission session with a destination device may be sent at 702. For example, the communication component 506 of Fig. 5 send a request message 510. At 704, an acceptance message may be received from the target device. For example, the communication component 506 of Fig. 5 may receive an acceptance message 562 from the device 550. At 706, it may be determined whether the acceptance message includes a tracking parameter retention request. For example, the tracking component 508 of Fig. 5 determine whether the acceptance message 562 includes a trace parameter retention request. If it is determined that the acceptance message includes a trace parameter retention request, the flow may proceed to 708. At 708, one or more target-side trace parameters may be retained for the packet transfer session. For example, the trace component 508 of Fig. 5 maintain the one or more tracking parameters 530 in the target-side parameter set 522. From 508, the flow may transition to 710. If it is determined at 706 that the acceptance message is not a tracking parameter retention request, the flow may transition directly from 706 to 710. At 710, multiple packets may be sent to the target execution. For example, the communication component 506 may Fig. 5 send multiple packets 714 to device 550. The embodiments are not limited to these examples.

[0041] Fig. 8 illustrates one embodiment of a storage medium 800. The storage medium 800 may comprise any non-transitory computer-readable storage medium or machine-readable storage medium, such as an optical, magnetic, or semiconductor storage medium. In various embodiments, the storage medium 800 may comprise an article of manufacture. In some embodiments, the storage medium 800 may store computer-executable instructions, such as computer-executable instructions to execute one or both of the logic flow 600 of Fig. 6 and the logic flow 700 of Fig. 7. Examples of a computer-readable storage medium or a machine-readable storage medium may include any tangible media capable of storing electronic data, including volatile memory or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writable or rewritable memory, and so on. Examples of computer-executable instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, object-oriented code, visual code, and the like. Embodiments are not limited in this context.

[0042] Fig. 9 illustrates an embodiment of an exemplary computer architecture 900 suitable for implementing various embodiments as described above. In various embodiments, the computer architecture 900 may comprise or be implemented as part of an electronic device. In some embodiments, the computer architecture 900 may, for example, be suitable for one or both of the devices 500 and 550 of Fig. 5 may be representative. The embodiments are not limited in this context.

[0043] As used in this application, the terms "system," "component," and "module" are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution, examples of which are provided by the example computer architecture 900. For example, a component may be, but is not limited to, a process running on a processor, a processor, a hard disk drive, multiple storage drives (of optical and / or magnetic storage), an object, an executable file, a thread of execution, a program, and / or a computer. For illustrative purposes, both an application running on a server and the server may be a component. One or more components may reside within a process and / or thread of execution, and a component may be localized on one computer and / or distributed between two or more computers.Furthermore, components may be communicatively coupled to one another through various types of communication media to coordinate operations. The coordination may involve the unidirectional or bidirectional exchange of information. For example, the components may communicate information in the form of signals transmitted over the communication media. The information may be implemented as signals assigned to various signal lines. In such assignments, each message is a signal. However, other embodiments may alternatively use data messages. Such data messages may be sent over various connections. Example connections include parallel interfaces, serial interfaces, and bus interfaces.

[0044] Computer architecture 900 includes various common computer elements, such as one or more processors, multi-core processors, co-processors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, video cards, audio cards, multimedia input / output (I / O) components, power supplies, and so on. However, embodiments are not limited to implementation by computer architecture 900.

[0045] As in Fig. 9, the computer architecture 900 includes a processing unit 904, a system memory 906, and a system bus 908. The processing unit 904 may be any of various commercially available processors, including, without limitation, AMD® Athlon®, Duron®, and Opteron® processors; ARM® application, embedded, and secure processors; IBM® and Motorola® DragonBall® and PowerPC® processors; IBM and Sony® Cell processors; Intel® Celeron®, Core (2) Duo®, Itanium®, Pentium®, Xeon®, and XScale® processors; and similar processors. Dual microprocessors, multi-core processors, and other multiprocessor architectures may also be used as the processing unit 904.

[0046] System bus 908 provides an interface for system components, including, but not limited to, system memory 906, to processing unit 904. System bus 908 may be any of several types of bus structures, further connecting to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using several commercially available bus architectures. Interface adapters may connect to system bus 908 via a slot architecture. Example slot architectures may include, without limitation, an Accelerated Graphics Port (AGP), a Card Bus, an (enhanced) industry standard architecture ((E)ISA), a Micro-Channel Architecture (MCA), a NuBus, Peripheral Component Interconnect (enhanced) (PCI(X)), PCI Express, PCMCIA (Personal Computer Memory Card International Association), and the like.

[0047] The system memory 906 may include various types of computer-readable storage media in the form of one or more higher-speed memory devices, such as read-only memory (ROM), random access memory (RAM), dynamic random access memory (DRAM), double data rate DRAM (DDRAM), synchronous DRAM (SDRAM), static random access memory (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, polymer memory such as ferroelectric polymer memory, ovonic memory, phase-change or ferroelectric memory, silicon oxide nitride oxide silicon (SONOS) memory, magnetic or optical cards, a variety of devices such as redundant array of independent disks (RAID) drives, solid-state storage devices (e.g.,USB storage, solid-state drives (SSD), and any other type of storage media suitable for storing information). In the . Fig. In the illustrated embodiment shown in Figure 9, system memory 906 may include non-volatile memory 910 and / or volatile memory 912. A basic input / output system (BIOS) may be stored in non-volatile memory 910.

[0048] The computer 902 may include various types of computer-readable storage media in the form of one or more lower-speed storage devices, including an internal (or external) hard disk drive (HDD) 914, a magnetic disk drive (FDD) 916 for reading from or writing to a removable magnetic disk 918, and an optical disk drive 920 for reading from or writing to a removable optical disk 922 (e.g., a CD-ROM or DVD). The HDD 914, the FDD 916, and the optical disk drive 920 may be connected to the system bus 908 via an HDD interface 924, an FDD interface 926, and an optical drive interface 928, respectively. The HDD interface 924 for external drive implementations may include at least one or both of Universal Serial Bus (USB) and IEEE 1394 interface technology.

[0049] The drives and the associated computer-readable media provide volatile and / or non-volatile storage of data, data structures, computer-executable instructions, and so forth. For example, a number of program modules may be stored in the drives and storage units 910, 912, including an operating system 930, one or more application programs 932, other program modules 934, and program data 936. In one embodiment, the one or more application programs 932, other program modules 934, and program data 936 may, for example, be various applications and / or components of one or both of the devices 500 and 550 of Fig. 5.

[0050] A user can enter instructions and information into computer 902 via one or more wired / wireless input devices, for example, a keyboard 938 and a pointing device such as a mouse 940. Other input devices may include microphones, infrared (IR) remote controls, radio remote controls, gamepads, styluses, card readers, dongles, fingerprint readers, gloves, graphics tablets, joysticks, keyboards, retina readers, touchscreens (e.g., capacitive, resistive, etc.), trackballs, trackpads, sensors, styluses, and the like. These and other input devices are often connected to processing unit 904 via an input device interface 942 coupled to system bus 908, but may be connected through other interfaces, such as a parallel port, an IEEE 1394 serial port, a gaming port, a USB port, an IR interface, and so on.

[0051] A monitor 944 or other type of display device may also be connected to the system bus 908 via an interface, such as a video adapter 946. The monitor 944 may be internal or external to the computer 902. In addition to the monitor 944, a computer typically includes other peripheral output devices, such as speakers, printers, and so on.

[0052] Computer 902 may operate in a networked environment using logical connections via wired and / or wireless communication with one or more remote computers, such as remote computer 948. Remote computer 948 may be a workstation, a server computer, a router, a personal computer, a portable computer, a microprocessor-based entertainment device, a peer device, or other common network node, and typically includes many or all of the elements described with respect to computer 902, although for brevity, only memory / storage device 950 is illustrated. The illustrated logical connections include wired / wireless connectivity to a local area network (LAN) 952 and / or larger networks, for example, a wide area network (WAN) 954.Such LAN and WAN network environments are common in offices and companies, and facilitate enterprise-wide computer networks, such as intranets, all of which can be connected to a global communications network, such as the Internet.

[0053] When used in a LAN network environment, computer 902 is connected to LAN 952 via a wired and / or wireless communications network interface or adapter 956. Adapter 956 may facilitate wired and / or wireless communication with LAN 952, which may also have a wireless access point disposed therein to communicate with the wireless functionality of adapter 956.

[0054] When used in a WAN network environment, computer 902 may include a modem 958 or be connected to a communications server in WAN 954, or have other means for establishing communications over WAN 954, for example, over the Internet. Modem 958, which may be internal or external and a wired and / or wireless device, is connected to system bus 908 via input device interface 942. In a networked environment, program modules illustrated with respect to computer 902 or portions thereof may be stored in remote memory / storage device 950. It should be appreciated that the network connections shown are exemplary, and other means for establishing a communication link between the computers may be used.

[0055] Computer 902 is operable to communicate with wired and wireless devices or devices using the IEEE 802 family of standards, such as wireless devices operatively arranged in wireless communications (e.g., IEEE 802.16 radio modulation techniques). These include, among others, Wi-Fi (or "Wireless Fidelity"), WiMax, and Bluetooth™. Thus, communication may be a predefined structure as in a conventional network or simply ad hoc communication between at least two devices. Wi-Fi networks use radio technologies referred to as IEEE 802.11x (a, b, g, n, etc.) to provide secure, reliable, and high-speed wireless connectivity. A Wi-Fi network can be used to connect computers to each other and to the Internet and wired networks (which use IEEE 802.3-related media and functions).

[0056] Fig. 10 illustrates a block diagram of an exemplary communication architecture 1000 suitable for implementing various embodiments as described above. The communication architecture 1000 includes various common communication elements, such as a transmitter, a receiver, a transceiver, a radio, a network interface, a baseband processor, an antenna, an amplifier, a filter, power supplies, and so on. However, the embodiments are not limited to implementation by the communication architecture 1000.

[0057] As in Fig. 10, the communication architecture 1000 includes one or more clients 1002 and servers 1004. The clients 1002 and the servers 1004 are operatively connected to one or more client data stores 1008 and server data stores 1010, which can be used to store information such as cookies and / or associated context information locally in the respective clients 1002 and servers 1004. Each of the clients 1002 and / or servers 1004 can use one or more of the device 500 and the device 550 of Fig. 5, of the logic flow 600 of Fig. 6, of the logic flow 700 of Fig. 7, the storage medium 800 of Fig. 8, and the computer architecture 900 of Fig. 9. In various embodiments, one or both of the devices 500 and 550 may be Fig. 5 may be implemented in one or more switching devices and / or routing devices in the communication framework 1006.

[0058] Clients 1002 and servers 1004 can exchange information using a communication framework 1006. Communication framework 1006 can implement any known communication technologies and protocols. Communication framework 1006 can be implemented as a packet-switched network (e.g., public networks such as the Internet, private networks such as a corporate intranet, etc.), a circuit-switched network (e.g., the public switched telephone network), or a combination of a packet-switched network and a circuit-switched network (with appropriate gateways and translators).

[0059] The communication framework 1006 may implement various network interfaces configured to accept, communicate, and connect to a communication network. A network interface may be considered a special form of input / output interface. Network interfaces may use connection protocols including, without limitation, direct connect, Ethernet (e.g., thick, thin, twisted pair 10 / 100 / 1000 Base-T, and the like), token ring, wireless network interfaces, cellular network interfaces, IEEE 802.11a-x network interfaces, IEEE 802.16 network interfaces, IEEE 802.20 network interfaces, and the like. Further, multiple network interfaces may be used to connect to different types of communication networks.For example, multiple network interfaces may be used to enable communication over broadcast, multicast, and unicast networks. Should processing requirements require greater speed and capacity, distributed network controller architectures may similarly be used to aggregate, balance, and otherwise increase the communication bandwidth required by clients 1002 and servers 1004. A communication network may be any combination of a wired and / or wireless network, including, without limitation, a direct connection, a secured user-defined connection, a private network (e.g., a corporate intranet), a public network (e.g.,the Internet), a personal area network (PAN), a local area network (LAN), a metropolitan area network (MAN), an operating mission as nodes on the Internet (OMNI), a wide area network (WAN), a wireless network, a cellular network, and other communication networks.

[0060] Various embodiments may be implemented using hardware elements, software elements, or a combination of both. Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, etc.), integrated circuits, application-specific integrated circuits (ASICs), programmable logic devices (PLDs), digital signal processors (DSPs), field-programmable gate arrays (FPGAs), logic gates, registers, semiconductor devices, chips, microchips, chipsets, and so on.Examples of software may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (APIs), instruction sets, sets of instructions, computer code, code segments, computer code sections, words, values, symbols, or any combination thereof. Determining whether an embodiment is implemented using hardware elements and / or software elements may vary according to any number of factors, such as a desired computation rate, power level, thermal tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds, and other design or performance constraints.

[0061] As used herein, the term "circuit" may refer to an application-specific integrated circuit (ASIC), an electronic circuit, a processor (shared, dedicated, or group) and / or memory (shared, dedicated, or group) executing one or more software or firmware programs, a combinational logic circuit, and / or other suitable hardware components that provide the described functionality. In some embodiments, the circuit may be implemented in, or functions associated with the circuit may be implemented by, one or more software or firmware modules. In some embodiments, the circuit may include logic operable at least partially in hardware.

[0062] One or more aspects of at least one embodiment may be implemented by representative instructions stored on a machine-readable medium representing various logic within the processor that, when read by a machine, cause the machine to fabricate logic for performing the techniques described herein. Such representations, known as "IP cores," may be stored on a tangible, machine-readable medium and delivered to various customers or manufacturing facilities for loading into the manufacturing machines that actually manufacture the logic or processor.For example, some embodiments may be implemented using a machine-readable medium or article that can store an instruction or set of instructions that, when executed by a machine, can cause the machine to perform a method and / or operations according to the embodiments. Such a machine may, for example, comprise any suitable processing platform, computing platform, computing device, processing device, computing system, processing system, computer, processor, or the like, and may be implemented using any suitable combination of hardware and / or software.The machine-readable medium or article may, for example, be any suitable type of memory unit, memory device, memory article, memory medium, storage device, storage article, storage medium and / or storage unit, for example a memory, removable or non-removable media, erasable or non-erasable media, writable or rewritable media, digital or analog media, a hard disk, floppy disk, CD-ROM, recordable CD (CD-R), rewritable CD (CD-RW), optical disk, magnetic media, magneto-optical media, removable memory cards or floppy disks, various types of digital versatile disk (DVD), a tape, a cassette, or the like.The instructions may comprise any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, encrypted code, and the like, which may be implemented using any high-level, low-level, object-oriented, visual, compiled and / or interpreted programming language.

[0063] The following examples concern further embodiments: Example 1 is an apparatus comprising: a circuit, a tracking component, for execution by the circuit, for determining, in response to a request from an initiator device to establish a packet transfer session, whether tracking information for the packet transfer session can be maintained locally, in response to a determination that the tracking information for the packet transfer session cannot be maintained locally, identifying one or more tracking parameters to maintain at the initiator device, and a communication component, for execution by the circuit, for sending an acceptance message to grant the request of the initiator device to establish the packet transfer session, the acceptance message being provided to indicate a request to maintain the one or more tracking parameters. Example 2 is the apparatus of Example 1, wherein the tracking component is configured to be executed by the circuit for determining whether the tracking information can be managed locally based on whether a tracking state can be assigned for the packet transfer session. Example 3 is the device of any one of Examples 1 to 2, wherein the communication component is configured, for execution by the circuit, to identify one or more receive buffers assigned to a receive operation associated with the packet transfer session and select a receive buffer for the packet transfer session from the one or more identified receive buffers. Example 4 is the device of Example 3, wherein the communication component is configured to be executed by the circuitry for including an identifier for the selected receive buffer in the acceptance message. Example 5 is the device according to any one of examples 3 to 4, wherein the communication component, for execution by the circuit, is provided for identifying an identifier for the receive operation in the acceptance message. Example 6 is the device of any one of examples 3 to 5, wherein the communication component, for execution by the circuit, is configured to receive a plurality of packets from the initiator device during the packet transmission session and to store the plurality of packets in the selected receive buffer. Example 7 is the device of Example 6, wherein the communication component is configured to be executed by the circuitry for sending a respective acknowledgment of each of the plurality of packets. Example 8 is the device of any one of examples 6 to 7, wherein the communication component is configured, for execution by the circuit, to retrieve the plurality of packets from the selected receive buffer and to assemble the plurality of packets in response to receiving a transmission completion message for the packet transmission session. Example 9 is the device of Example 8, wherein the transmission completion message comprises the one or more tracking parameters. Example 10 is the apparatus of Example 9, wherein the tracking component is configured, for execution by the circuit, to retrieve the one or more tracking parameters from the transmission completion message, assemble completion information for the packet transmission session based on the one or more retrieved tracking parameters, and return the completion information to an application associated with the receive operation. Example 11 is the device of Example 10, wherein the tracking component is configured to be performed by the circuitry to identify the receive operation based on at least one of the one or more retrieved tracking parameters. Example 12 is a system comprising a device according to any one of Examples 1 to 11 and at least one network interface. Example 13 is an apparatus comprising: a circuit, a communication component, for execution by the circuit, for sending a request to establish a packet transfer session with a target device, and, in response to receiving an acceptance message from the target device, sending a plurality of packets to the target device, and a tracking component, for execution by the circuit, for maintaining the one or more target-side tracking parameters for the packet transfer session in response to a determination that the acceptance message includes a tracking parameter retention request. Example 14 is the apparatus of Example 13, wherein the tracking component is configured, for execution by the circuit, to configure a tracking parameter set for the packet transfer session and maintain the one or more destination-side tracking parameters in the tracking parameter set. Example 15 is the apparatus of Example 14, wherein the tracking component is configured to be executed by the circuitry for assigning a tracking state for the packet transmission session and associating the tracking parameter set with the assigned tracking state. Example 16 is the device of any one of examples 14 to 15, wherein the tracking component is configured, for execution by the circuitry, to identify one or more initiator-side tracking parameters for the packet transfer session, and maintain the one or more initiator-side tracking parameters in the tracking parameter set. Example 17 is the device of any of Examples 13 to 16, wherein the acceptance message comprises at least one of the one or more target-side tracking parameters. Example 18 is the device of any of Examples 13 to 17, wherein the one or more target-side tracking parameters comprise an identifier for a receive operation of the target device. Example 19 is the device of any of Examples 13 to 18, wherein the one or more target-side tracking parameters comprise an identifier for a receive buffer of the target device. Example 20 is the apparatus of any one of Examples 13 to 19, wherein the tracking component is configured to be executed by the circuitry to manage packet acknowledgment information during the packet transmission session, the packet acknowledgment information configured to identify packets acknowledged by the destination device. Example 21 is the apparatus of any one of Examples 13 to 20, wherein the communication component is configured, for execution by the circuit, to send a transmission completion message to the target device in response to a determination that the target device has acknowledged receipt of each of the plurality of packets. Example 22 is the device of Example 21, wherein the transmission completion message comprises an identifier for a receive operation associated with the packet transmission session. Example 23 is the device of any one of examples 21 to 22, wherein the transmission completion message includes an identifier for a receive buffer of the destination device. Example 24 is a system including a device according to any one of examples 13 to 23 and at least one network interface. Example 25 is at least one computer-readable storage medium comprising a set of instructions that, in response to execution on a computing device, cause the computing device to, in response to a request from an initiator device, establish a packet transfer session, determine whether tracking information for the packet transfer session can be maintained locally, identify one or more tracking parameters to maintain at the initiator device in response to a determination that the tracking information for the packet transfer session cannot be maintained locally, and send an acceptance message to grant the initiator device's request to establish the packet transfer session, wherein the acceptance message is configured to indicate a request to maintain the one or more tracking parameters. Example 26 is the at least one computer-readable storage medium of Example 25, comprising instructions that, in response to execution on the computing device, cause the computing device to determine whether the tracking information can be managed locally based on whether a tracking state can be assigned for the packet transfer session. Example 27 is the at least one computer-readable storage medium of any of Examples 25-26, comprising instructions that, in response to execution on the computing device, cause the computing device to identify one or more receive buffers associated with a receive operation associated with the packet transfer session and select a receive buffer for the packet transfer session from the one or more identified receive buffers. Example 28 is the at least one computer-readable storage medium of Example 27, comprising instructions that, in response to execution on the computing device, cause the computing device to include an identifier for the selected receive buffer in the accept message. Example 29 is the at least one computer-readable storage medium of any of Examples 27-28, comprising instructions that, in response to execution on the computing device, cause the computing device to include an identifier for the receive operation in the acceptance message. Example 30 is the at least one computer-readable storage medium of any of Examples 27 to 29, comprising instructions that, in response to execution on the computing device, cause the computing device to receive a plurality of packets from the initiator device during the packet transfer session and to store the plurality of packets in the selected receive buffer. Example 31 is the at least one computer-readable storage medium of Example 30, comprising instructions that, in response to execution on the computing device, cause the computing device to send a respective acknowledgment of each of the plurality of packets. Example 32 is the at least one computer-readable storage medium of any of Examples 30-31, comprising instructions that, in response to execution on the computing device, cause the computing device to retrieve the plurality of packets from the selected receive buffer and to assemble the plurality of packets in response to receiving a transfer completion notification for the packet transfer session. Example 33 is the at least one computer-readable storage medium of Example 32, wherein the transfer completion notification comprises the one or more tracking parameters. Example 34 is the at least one computer-readable storage medium of Example 33, comprising instructions that, in response to execution on the computing device, cause the computing device to retrieve the one or more tracking parameters from the transfer completion notification, assemble the completion information for the packet transfer session based on the one or more retrieved tracking parameters, and return the completion information to an application associated with the receive operation. Example 35 is the at least one computer-readable storage medium of Example 34, comprising instructions that, in response to execution on the computing device, cause the computing device to identify the receive operation based on at least one of the retrieved one or more tracking parameters. Example 36 is at least one computer-readable storage medium comprising a set of instructions that, in response to execution on a computing device, cause the computing device to send a request to establish a packet transfer session with a target device, in response to receiving an acceptance message from the target device, to send a plurality of packets to the target device, and in response to a determination that the acceptance message includes a maintain tracking parameter request, to maintain one or more target-side tracking parameters for the packet transfer session. Example 37 is the at least one computer-readable storage medium of Example 36, comprising instructions that, in response to execution on the computing device, cause the computing device to configure a tracking parameter set for the packet transfer session and to maintain the one or more target-side tracking parameters in the tracking parameter set. Example 38 is the at least one computer-readable storage medium of Example 37, comprising instructions that, in response to execution on the computing device, cause the computing device to assign a tracking state for the packet transfer session and to associate the tracking parameter set with the assigned tracking state. Example 39 is the at least one computer-readable storage medium of any of Examples 37-38, comprising instructions that, in response to execution on the computing device, cause the computing device to identify one or more initiator-side tracking parameters for the packet transfer session and to maintain the one or more initiator-side tracking parameters in the tracking parameter set. Example 40 is the at least one computer-readable storage medium of any of Examples 36 to 39, wherein the acceptance message comprises at least one of the one or more target-side tracking parameters. Example 41 is the at least one computer-readable storage medium of any of Examples 36 to 40, wherein the one or more target-side tracking parameters comprise an identifier for a receive operation of the target device. Example 42 is the at least one computer-readable storage medium of any of Examples 36 to 41, wherein the one or more target-side tracking parameters comprise an identifier for a receive buffer of the target device. Example 43 is the at least one computer-readable storage medium of any of Examples 36 to 42, comprising instructions that, in response to execution on the computing device, cause the computing device to maintain packet acknowledgment information during the packet transfer session, wherein the packet acknowledgment information is configured to identify packets acknowledged by the target device Example 44 is the at least one computer-readable storage medium of any of Examples 36 to 43, comprising instructions that, in response to execution on the computing device, cause the computing device to send a transfer completion notification to the target device in response to a determination that the target device has acknowledged receipt of each of the plurality of packets. Example 45 is the at least one computer-readable storage medium of Example 44, wherein the transfer completion notification comprises an identifier for a receive operation associated with the packet transfer session. Example 46 is the at least one computer-readable storage medium of any of Examples 44 to 45, wherein the transfer completion message includes an identifier for a receive buffer of the target device. Example 47 is a method comprising: in response to a request from an initiator device to establish a packet transfer session, determining, by a processor circuit, whether tracking information for the packet transfer session can be maintained locally, identifying one or more tracking parameters to maintain at the initiator device in response to a determination that the tracking information for the packet transfer session cannot be maintained locally, and sending an acceptance message to grant the request of the initiator device to establish the packet transfer session, the acceptance message being configured to indicate a request to maintain the one or more tracking parameters. Example 48 is the method of Example 47, comprising: determining whether the tracking information can be managed locally based on whether a tracking state can be assigned for the packet transfer session. Example 49 is the method of any one of Examples 47 to 48, comprising: identifying one or more receive buffers assigned to a receive operation associated with the packet transfer session, and selecting a receive buffer for the packet transfer session from the one or more identified receive buffers. Example 50 is the method of Example 49, comprising including an identifier for the selected receive buffer in the acceptance message. Example 51 is the method of any one of examples 49 to 50, comprising having an identifier for the receive operation in the acceptance message. Example 52 is the method of any one of Examples 49 to 51, comprising receiving a plurality of packets from the initiator device during the packet transfer session and storing the plurality of packets in the selected receive buffer. Example 53 is the method of Example 52, comprising sending a respective acknowledgment of each of the plurality of packets. Example 54 is the method of any one of Examples 52 to 53, comprising retrieving the plurality of packets from the selected receive buffer and assembling the plurality of packets in response to receiving a transmission completion notification for the packet transmission session. Example 55 is the method of Example 54, wherein the transfer completion notification comprises the one or more tracking parameters. Example 56 is the method of Example 55, comprising retrieving the one or more tracking parameters from the transfer completion message, assembling completion information for the packet transfer session based on the one or more retrieved tracking parameters, and returning the completion information to an application associated with the receive operation. Example 57 is the method of Example 56, comprising identifying the receive operation based on at least one of the one or more retrieved tracking parameters. Example 58 is the at least one computer-readable storage medium comprising a set of instructions that, in response to execution on a computing device, cause the computing device to perform a method according to any one of Examples 46 to 57. Example 59 is an apparatus comprising means for performing a method according to any one of Examples 46 to 57. Example 60 is a system including the device of Example 59 and at least one network interface. Example 61 is a method comprising: sending, by a computing device, a request to establish a packet transfer session with a target device, sending a plurality of packets to the target device in response to receiving an acceptance message from the target device, and maintaining one or more target-side tracking parameters for the packet transfer session in response to a determination that the acceptance message includes a tracking parameter retention request. Example 62 is the method of Example 61, comprising configuring a tracking parameter set for the packet transfer session and maintaining the one or more target-side tracking parameters in the tracking parameter set. Example 63 is the method of Example 62, comprising assigning a tracking state for the packet transfer session and associating the tracking parameter set with the assigned tracking state. Example 64 is the method of any of Examples 62 to 63, comprising identifying one or more initiator-side tracking parameters for the packet transfer session and maintaining the one or more initiator-side tracking parameters in the tracking parameter set. Example 65 is the method of any one of examples 61 to 64, wherein the acceptance message comprises at least one of the one or more target-side tracking parameters. Example 66 is the method of any one of examples 61 to 65, wherein the one or more target-side tracking parameters comprise an identifier for a receive operation of the target device. Example 67 is the method of any one of examples 61 to 66, wherein the one or more target-side tracking parameters comprise an identifier for a receive buffer of the target device. Example 68 is the method of any one of examples 61 to 67, comprising managing packet acknowledgment information during the packet transmission session, wherein the packet acknowledgment information is configured to identify packets acknowledged by the destination device. Example 69 is the method of any one of Examples 61 to 68, comprising sending a transmission completion notification to the target device in response to a determination that the target device has acknowledged receipt of each of the plurality of packets. Example 70 is the method of Example 69, wherein the transfer completion message includes an identifier for a receive operation associated with the packet transfer session. Example 71 is the method of any one of examples 69 to 70, wherein the transmission completion message comprises an identifier for a receive buffer of the destination device. Example 72 is at least one computer-readable storage medium comprising a set of instructions that, in response to execution on a computing device, cause the computing device to perform a method according to any one of examples 61 to 71. Example 73 is an apparatus comprising means for performing a method according to any one of Examples 61 to 71. Example 74 is a system including the device of Example 73 and at least one network interface. Example 75 is an apparatus comprising: means for determining, in response to a request from an initiator device to establish a packet transfer session, whether tracking information for the packet transfer session can be maintained locally, means for identifying one or more tracking parameters to maintain at the initiator device in response to a determination that the tracking information for the packet transfer session cannot be maintained locally, and means for sending an acceptance message to grant the request of the initiator device to establish the packet transfer session, the acceptance message being provided to indicate a request to maintain the one or more tracking parameters. Example 76 is the apparatus of Example 75, comprising means for determining whether the tracking information can be managed locally based on whether a tracking state can be assigned for the packet transfer session. Example 77 is the apparatus of any one of examples 75 to 76, comprising means for identifying one or more receive buffers assigned to a receive operation associated with the packet transfer session, and means for selecting a receive buffer for the packet transfer session from the one or more identified receive buffers. Example 78 is the apparatus of Example 77, comprising means for including an identifier for the selected receive buffer in the accept message. Example 79 is the device of any one of examples 77 to 78, comprising means for including an identifier for the receive operation in the acceptance message. Example 80 is the apparatus of any one of examples 77 to 79, comprising means for receiving a plurality of packets from the initiator device during the packet transmission session and means for storing the plurality of packets in the selected receive buffer. Example 81 is the apparatus of Example 80, comprising means for transmitting a respective acknowledgment of each of the plurality of packets. Example 82 is the apparatus of any one of examples 80 to 81, comprising means for retrieving the plurality of packets from the selected receive buffer and assembling the plurality of packets in response to receiving a transmission completion notification for the packet transmission session. Example 83 is the device of Example 82, wherein the transmission completion notification comprises the one or more tracking parameters. Example 84 is the apparatus of Example 83, comprising means for retrieving the one or more tracking parameters from the transmission completion message, means for assembling completion information for the packet transmission session based on the one or more retrieved tracking parameters, and means for returning the completion information to an application associated with the receive operation. Example 85 is the device of Example 84, comprising means for identifying the receive operation based on at least one of the one or more retrieved tracking parameters. Example 86 is a system including a device according to any one of examples 75 to 85 and at least one network interface. Example 87 is an apparatus comprising means for sending a request to establish a packet transfer session with a target device, means for sending a plurality of packets to the target device in response to receiving an acceptance message from the target device, and means for maintaining the one or more target tracking parameters for the packet transfer session in response to a determination that the acceptance message includes a tracking parameter maintenance request. Example 88 is the apparatus of Example 87, comprising means for configuring a tracking parameter set for the packet transfer session and means for maintaining the one or more destination tracking parameters in the tracking parameter set. Example 89 is the apparatus of Example 88, comprising means for assigning a tracking state for the packet transmission session and means for associating the tracking parameter set with the assigned tracking state. Example 90 is the apparatus of any one of Examples 88 to 89, comprising means for identifying one or more initiator-side tracking parameters for the packet transfer session and means for maintaining the one or more initiator-side tracking parameters in the tracking parameter set. Example 91 is the device of any of Examples 87 to 91, wherein the acceptance message comprises at least one of the one or more target-side tracking parameters. Example 92 is the device of any of Examples 87 to 91, wherein the one or more target-side tracking parameters comprise an identifier for a receive operation of the target device. Example 93 is the device of any of examples 87 to 92, wherein the one or more target-side tracking parameters comprise an identifier for a receive buffer of the target device. Example 94 is the apparatus of any one of examples 87 to 93, comprising means for managing packet acknowledgment information during the packet transmission session, wherein the packet acknowledgment information is configured to identify packets acknowledged by the destination device. Example 95 is the apparatus of any one of Examples 87 to 94, comprising means for sending a transmission completion message to the target device in response to a determination that the target device has acknowledged receipt of each of the plurality of packets. Example 96 is the device of Example 95, wherein the transmission completion message comprises an identifier for a receive operation associated with the packet transmission session. Example 97 is the device of any one of examples 95 to 96, wherein the transmission completion message comprises an identifier for a receive buffer of the destination device. Example 98 is a system including a device according to any one of examples 87 to 97 and at least one network interface.

[0064] To provide a thorough understanding of the embodiments, numerous specific details have been set forth herein. However, those skilled in the art will understand that the embodiments may be practiced without these specific details. In other instances, well-known operations, components, and circuits have not been described in detail in order not to obscure the embodiments. It will be appreciated that the specific structural and functional details disclosed herein may be representative and do not necessarily limit the scope of the embodiments.

[0065] Some embodiments may be described using the terms "coupled" and "connected," along with their derivatives. These terms are not intended to be synonymous with each other. For example, some embodiments may be described using the terms "connected" and / or "coupled" to indicate that two or more elements are in direct physical or electrical contact with each other.

[0066] However, the term “coupled” can also mean that two or more elements are not in direct contact with each other, but still cooperate or interact with each other.

[0067] Unless expressly stated otherwise, it should be appreciated that terms such as "processing," "calculating," "calculating," "determining," or the like refer to the action and / or processes of a computer or computer system, or similar electronic computing device, that manipulates and / or transforms data represented as physical quantities (e.g., electronically) in the registers and / or memories of the computer system into other data similarly represented as physical quantities in the memories, registers, or other such information storage, transmission, or display devices of the computer system. Embodiments are not limited in this context.

[0068] It should be noted that the methods described herein need not be performed in the described order or in any particular sequence. Furthermore, various activities described with respect to the methods identified herein may be performed in a serial or parallel manner.

[0069] Although specific embodiments have been illustrated and described herein, it should be appreciated that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. It should be understood that the above description is presented in an illustrative and not restrictive manner. Combinations of the above embodiments and other embodiments not specifically described herein will become apparent to those skilled in the art upon review of the above description. Thus, the scope of various embodiments includes any other applications in which the above compositions, structures, and methods are utilized.

[0070] It is emphasized that the Abstract of Disclosure is provided to comply with 37 CFR § 1.72(b), which requires an abstract that allows the reader to quickly determine the nature of the technical disclosure. It is given with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. Furthermore, it can be seen in the foregoing Detailed Description that various features are grouped together in a single embodiment to simplify the disclosure. This method of disclosure is not to be construed as reflecting an intent that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims indicate, inventive subject matter lies in fewer than all of the features of a single disclosed embodiment.Thus, the following claims are hereby incorporated into the detailed description, each claim on its own representing a separate preferred embodiment. In the appended claims, the terms "have" and "in which" are used as the simple English equivalents of the respective terms "comprising" and "wherein."

[0071] Furthermore, the terms “first,” “second,” and “third,” etc., are used merely as labels and are not intended to impose any numerical requirements on their objects.

[0072] Although the subject matter has been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as exemplary forms for implementing the claims.

Claims

[1] Device (550) comprising: a circuit (552); a tracking component (558) for execution by the circuit (552) to: in response to a request from an initiator device (500) to establish a packet transfer session, determining whether tracking information for the packet transfer session can be managed locally; and in response to a determination that the tracking information for the packet transfer session cannot be managed locally, identifying one or more tracking parameters (572) to be maintained at the initiator device (500); and a communication component (556), for execution by the circuit (552), for sending an acceptance message (562) to grant the request of the initiator device (500) to establish the packet transfer session, the acceptance message (562) being arranged to indicate a request to maintain the one or more tracking parameters (572). [2] The device (550) of claim 1, wherein the tracking component (558) is configured to be executed by the circuit (552) to determine whether the tracking information can be managed locally based on whether a tracking state can be assigned for the packet transfer session. [3] The device (550) of claim 1, wherein the communication component (556) is configured to be executed by the circuit (552) to: identifying one or more receive buffers assigned to a receive operation (555) associated with the packet transfer session; and Selecting a receive buffer (568) for the packet transmission session from the one or more identified receive buffers. [4] The device (550) of claim 3, wherein the communication component (556) for execution by the circuit (552) is arranged to include one or both of an identifier for the receive buffer (568) and an identifier for the receive operation (555) in the acceptance message (562). [5] The device (550) of claim 3, wherein the communication component (556) is configured to be executed by the circuit (552) to: Receiving a plurality of packets (514) from the initiator device (500) during the packet transmission session; Sending a respective acknowledgment of each of the plurality of packets (514); and Storing each of the plurality of packets (514) in the selected receive buffer (568). [6] The device (550) of claim 5, wherein the communication component (556), for execution by the circuitry (552), is arranged to retrieve the plurality of packets (514) from the selected receive buffer (568) and assemble the plurality of packets (514) in response to receiving a transmission completion message (586) for the packet transmission session, the transmission completion message (586) being arranged to include the one or more tracking parameters (572). [7] The device (550) of claim 6, wherein the tracking component (558) is arranged to be executed by the circuit (552) to: retrieving the one or more tracking parameters (572) from the transfer completion message (586); compiling completion information for the packet transmission session based on the one or more tracking parameters (572); and Returning the completion information to an application (554) associated with the receive operation (555). [8] Device (500) comprising: a circuit (502); a communication component (506) for execution by the circuit (502) to: Sending a request (510) to establish a packet transmission session with a destination device (550); and in response to receiving an acceptance message (562) from the target device (550), sending a plurality of packets (514) to the target device (550); and a tracking component (508) for execution by the circuitry (502) configured to maintain one or more destination-side tracking parameters (530) for the packet transfer session in response to a determination that the acceptance message (562) includes a tracking parameter maintenance request. [9] The device (500) of claim 8, wherein the tracking component (508), for execution by the circuitry (502), is arranged to manage packet acknowledgment information (532) during the packet transmission session, the packet acknowledgment information (532) being arranged to identify packets (514) that are acknowledged by the destination device (550). [10] The device (500) of claim 9, wherein the communication component (506), for execution by the circuit (502), is configured to send a transmission completion message (534) to the destination device (550) in response to a determination that the destination device (550) has acknowledged receipt of each of the plurality of packets (514). [11] The device (500) of claim 10, wherein the transmission completion message (534) is configured to include the one or more destination-side tracking parameters (530). [12] The device (500) of claim 8, wherein the one or more target-side tracking parameters (530) are configured to comprise one or both of: an identifier for a receive operation (555) of the target device (550); and an identifier for a receive buffer (568) of the target device (550). [13] The device (500) of claim 8, wherein the tracking component (508) is arranged to be executed by the circuit (502) to: Assigning a tracking state for the packet transfer session; Assigning a tracking parameter set (522) to the assigned tracking state; and Maintaining the one or more target-side tracking parameters (530) in the tracking parameter set (522). [14] The device (500) of claim 13, wherein the tracking component (508), for execution by the circuit (502), is arranged to maintain one or more initiator-side tracking parameters (528) in the tracking parameter set (522). [15] One or more non-transitory computer-readable storage media comprising a set of instructions that, in response to execution on a computing device, cause the computing device to: in response to a request from an initiator device to establish a packet transfer session (602), determining whether tracking information for the packet transfer session can be managed locally (604); identifying one or more tracking parameters to be maintained at the initiator device (606) in response to a determination that the tracking information for the packet transfer session cannot be managed locally (604); and Sending an acceptance message to grant the initiator device's request to establish the packet transfer session (608), the acceptance message being configured to indicate a request to retain the one or more tracking parameters. [16] The one or more non-transitory computer-readable storage media of claim 15, comprising instructions that, in response to execution on the computing device, cause the computing device to determine whether the tracking information can be managed locally (604) based on whether a tracking state can be assigned for the packet transfer session. [17] The one or more non-transitory computer-readable storage media of claim 15, comprising instructions that, in response to execution on the computing device, cause the computing device to: Identifying one or more receive buffers assigned to a receive operation associated with the packet transfer session; and Selecting a receive buffer for the packet transmission session from the one or more identified receive buffers. [18] The one or more non-transitory computer-readable storage media of claim 17, comprising instructions that, in response to execution on the computing device, cause the computing device to: Receiving multiple packets from the initiator device during the packet transmission session; Sending a respective acknowledgment of each of the plurality of packets; and Store each of the multiple packets in the selected receive buffer. [19] The one or more non-transitory computer-readable storage media of claim 18, comprising instructions that, in response to execution on the computing device, cause the computing device to retrieve the plurality of packets from the selected receive buffer and to assemble the plurality of packets in response to receiving a transfer completion message for the packet transfer session, the transfer completion message being configured to include the one or more tracking parameters. [20] The one or more non-transitory computer-readable storage media of claim 19, comprising instructions that, in response to execution on the computing device, cause the computing device to: retrieving the one or more tracking parameters from the transfer completion notification; Compiling completion information for the packet transmission session based on the one or more tracking parameters; and Return the completion information to an application associated with the receive operation. [21] One or more non-transitory computer-readable storage media comprising a set of instructions that, in response to execution on a computing device, cause the computing device to: Sending a request to establish a packet transmission session with a target device (702); Sending a plurality of packets to the target device in response to receiving an acceptance message from the target device (710); and Maintaining one or more destination tracking parameters for the packet transfer session (708) in response to a determination that the acceptance message includes a tracking parameter retention request (706). [22] The one or more non-transitory computer-readable storage media of claim 21, comprising instructions that, in response to execution on the computing device, cause the computing device to maintain packet acknowledgment information during the packet transfer session, the packet acknowledgment information being configured to identify packets acknowledged by the destination device. [23] The one or more non-transitory computer-readable storage media of claim 21, comprising instructions that, in response to execution on the computing device, cause the computing device to send a transfer completion message to the target device in response to a determination that the target device has acknowledged receipt of each of the plurality of packets, the transfer completion message being configured to include the one or more target-side tracking parameters. [24] The one or more non-transitory computer-readable storage media of claim 21, wherein the one or more target-side tracking parameters are configured to comprise one or both of: an identifier for a receiving operation of the target device; and an identifier for a receive buffer of the target device. [25] The one or more non-transitory computer-readable storage media of claim 21, comprising instructions that, in response to execution on the computing device, cause the computing device to: Assigning a tracking state for the packet transfer session; Assigning a tracking parameter set to the assigned tracking state; Maintaining one or more initiator-side tracking parameters in the tracking parameter set; and Maintaining the one or more target-side tracking parameters in the tracking parameter set.

Citation Information

Patent Citations

  • TCP transmission control device and method of control of TCP transmission

    US20120063309A1

  • Stateless load balancing of connections

    US20140330976A1

  • Enhanced large data transmissions and catastrophic congestion avoidance over TCP / IP networks

    US20150078160A1

  • System and method for improving TCP performance in virtualized environments

    US20150089500A1

  • Metered Internet usage

    US7089304B2