Packet tracking techniques for communication networks

Packet tracking techniques for communication networks are described. In an example embodiment, an apparatus may comprise circuitry, a tracking component for execution by the circuitry to, in response to a request of an initiator device to establish a packet transfer session, determine whether tracking information for the packet transfer session can be locally maintained and in response to a determination that the tracking information for the packet transfer session cannot be locally maintained, identify one or more tracking parameters for retention at the initiator device, and a communication component for execution by the circuitry to send an acceptance message to grant the request of the initiator device to establish the packet transfer session, the acceptance message to indicate a request for retention of the one or more tracking parameters. Other embodiments are described and claimed.

TECHNICAL FIELD

Embodiments herein generally relate to communications between computing devices in communication networks.

BACKGROUND

In order to exchange messages with each other, applications running on different computing devices in a communication network may make use of application-layer connectivity provided by a connectivity fabric of that communication 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 addressed to a recipient application running on that computing device may need to confirm that it has received all of the packets in which segments of the message have been encapsulated and notify the recipient application that the transfer of the message is complete.

DETAILED DESCRIPTION

Various embodiments may be generally directed to packet tracking techniques for communication networks. In an example embodiment, an apparatus may comprise circuitry, a tracking component for execution by the circuitry to, in response to a request of an initiator device to establish a packet transfer session, determine whether tracking information for the packet transfer session can be locally maintained and in response to a determination that the tracking information for the packet transfer session cannot be locally maintained, identify one or more tracking parameters for retention at the initiator device, and a communication component for execution by the circuitry to send an acceptance message to grant the request of the initiator device to establish the packet transfer session, the acceptance message to indicate a request for retention of the one or more tracking parameters. Other embodiments are described and claimed.

Various embodiments may comprise one or more elements. An element may comprise any structure arranged to perform certain operations. Each element may be implemented as hardware, software, or any combination thereof, as desired for a given set of design parameters or performance constraints. Although an embodiment may be described with a limited number of elements in a certain topology by way of example, the embodiment may include more or less elements in alternate topologies as desired for a given implementation. It is worthy to note that any reference to “one 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.

FIG. 1illustrates an example of an operating environment100that may be representative of various embodiments. In operating environment100, a communication network101comprises a plurality of computing devices102-1to102-5. In some embodiments, a connectivity fabric103of communication network101may generally enable communication among computing devices102-1to102-5. In various embodiments, in the context of the application layer, connectivity fabric103may generally enable the use of application-layer send operations to send messages for receipt via application-layer receive operations. In the example ofFIG. 1, computing device102-1may use a send operation104to send a message108to computing device102-2via connectivity fabric103, and computing device102-2may use a receive operation106to receive message108from computing device102-1via connectivity fabric103. The embodiments are not limited to this example.

FIG. 2illustrates an example of an operating environment200that may be representative of some embodiments. In operating environment200, in order to send message108to computing device102-2, computing device102-1may partition some or all of message108into a plurality of data segments210-1to210-N, where N is an integer greater than 1. In various embodiments, computing device102-1may then send each one of the plurality of data segments210-1to210-N to computing device102-2in a separate respective one of packets212-1to212-N. In some embodiments, each one of packets212-1to212-N may comprise a respective one of payloads214-1to214-N, each of which may contain the data segment to be carried by its associated packet. In various embodiments, computing device102-2may receive packets212-1to212-N, extract data segments210-1to210-N from respective payloads214-1to214-N, and reconstruct message108using data segments210-1to210-N. The embodiments are not limited to this example.

FIG. 3illustrates an example of a communications flow300that may be representative of a series of communications that may be exchanged between computing devices102-1and102-2in some embodiments. In various embodiments, the communications that computing devices102-1and102-2exchange according to communications flow300may comprise transport-layer communications. In some embodiments, computing devices102-1and102-2may exchange such transport-layer communications in support of application-layer communications between computing devices102-1and102-2. For example, communications flow300may be representative of communications that computing devices102-1and102-2may exchange in various embodiments in conjunction with the transmission of packets212-1to212-N from computing device102-1to computing device102-2in operating environment200ofFIG. 2, and packets212-1to212-N may comprise the various segments of application-layer message108. The embodiments are not limited to this example.

As shown inFIG. 3, communications flow300may begin at302, where computing device102-1may send a message transfer request message to computing device102-2. In some embodiments, this message transfer request may generally comprise a request on the part of a transport-layer entity at computing device102-1to establish a transport-layer session with a transport-layer entity at computing device102-2and to send one or more packets to the transport-layer entity at computing device102-2. At304, computing device102-2may send a message transfer acceptance message to computing device102-1. In various embodiments, this message transfer acceptance message may generally constitute an indication on the part of the transport-layer entity at computing device102-2that the transport-layer entity at computing device102-1may send the one or more packets as requested. In some embodiments, the message transfer request message sent at302may comprise a request-to-send (RTS), and the message transfer acceptance message sent at304may comprise a clear-to-send (CTS). In various embodiments, the exchange of the message transfer request and acceptance messages may constitute a handshake301. In some embodiments, handshake301may generally comprise a wire-level handshake between respective transport-layer entities at computing devices102-1and102-2. In various embodiments, the completion of handshake301may establish a transport-layer session between the respective transport-layer entities at computing devices102-1and102-2. The embodiments are not limited in this context.

In some embodiments, following receipt of the message transfer acceptance message from computing device102-2, computing device102-1may send packets1,2,3, and4to computing device102-2at306,308,310, and312, respectively. In various embodiments, the respective payloads of packets1,2,3, and4may each contain segments of an application-layer message such as message108ofFIG. 2. In the context of operating environment200ofFIG. 2, communications flow300may be representative of some embodiments in which N is equal to 4, such that message108is partitioned into four segments210-1to210-4which are delivered to computing device102-2in the respective payloads214-1to214-4of four packets212-1to212-4. As reflected inFIG. 3, packets1,2,3, and4may not necessarily arrive at computing device102-2in the same order as that in which they are sent by computing device102-1. In the example depicted inFIG. 3, packet2is the second packet sent by computing device102-1but the last packet received by computing device102-2. At each of314,316,318, and320, computing device102-2may send an acknowledgment to acknowledge receipt of a respective one of packets1,2,3, and4. Namely, computing device102-2may send a first acknowledgment at314to acknowledge packet1, a second acknowledgment at316to acknowledge packet3, a third acknowledgment at318to acknowledge packet4, and a fourth acknowledgment at320to acknowledge packet2. At322, the transport-layer entity at computing device102-2may determine that each required packet has been received. At324, message recipient application at computing device102-2may be notified that the transfer of the application-layer message is complete. The embodiments are not limited to this example.

FIG. 4illustrates an example of an operating environment400that may be representative of various embodiments. In operating environment400, computing devices102-1and102-2may generally engage in a transport-layer communications exchange in support of the delivery of an application-layer message from computing device102-1to computing device102-2. In some embodiments, this transport-layer communications exchange may be of a same or similar nature as that of communications flow300ofFIG. 3. In various embodiments, computing device102-1may send a message transfer request410to computing device102-2. In some embodiments, message transfer request410may comprise an RTS. In various embodiments, packet transfer request410may be the same as—or similar to—the message transfer request sent at302in communications flow300ofFIG. 3. In some embodiments, computing device102-2may grant message transfer request410by sending a message transfer acceptance412to computing device102-1. In various embodiments, message transfer acceptance412may comprise a CTS. In some embodiments, message transfer acceptance412may be the same as—or similar to—the message transfer acceptance sent at304in communications flow300ofFIG. 3.

In various embodiments, in response to receipt of message transfer acceptance412, computing device102-1may initiate a packet transfer procedure. In some embodiments, according to the packet transfer procedure, computing device102-1may transmit one or more packets414to computing device102-2. In various embodiments, packets414may be the same as—or similar to—the packets sent at306,308,310, and312in communications flow300ofFIG. 3. In some embodiments, computing device102-2may send one or more acknowledgments416to acknowledge one or more respective received packets414. In various embodiments, acknowledgments416may be the same as—or similar to—the acknowledgments sent at314,316,318, and320in communications flow300ofFIG. 3. In some embodiments, in conjunction with granting message transfer request410, computing device102-2may designate a receive buffer418in which to store packets received via the packet transfer procedure that computing device102-1initiates in response to message transfer acceptance412. In various embodiments, computing device102-2may then store each received packet414in that receive buffer418. The embodiments are not limited in this context.

In some embodiments, for any given transport-layer session via which it receives packets from another computing device, computing device102-2may maintain communication tracking information420. In various embodiments, in operating environment400, computing devices102-1and102-2may exchange message transfer request410and message transfer acceptance412and establish a transport-layer session, computing device102-2may receive packets414via that transport-layer session, and computing device102-2may maintain communication tracking information420for that transport-layer session. In some embodiments, computing device102-2may maintain respective communication tracking information420for each of multiple transport-layer sessions concurrently. In various embodiments, the communication tracking information420for any given transport-layer session may comprise a set of one or more tracking parameters. In some embodiments, for example, the communication tracking information420for the transport-layer session via which computing device102-2receives packets414may constitute one or more parameters comprised in a tracking parameter set422. In various embodiments, computing device102-2may allocate respective tracking states for each of multiple transport-layer sessions, and may associate the respective communication tracking information420for each transport-layer session with the tracking state for that transport-layer session. In some embodiments, for example, computing device102-2may allocate a tracking state for the transport-layer session via which it receives packets414and may associate tracking parameter set422with that tracking state. The embodiments are not limited in this context.

In various embodiments, tracking parameter set422may include packet tracking parameters424. In some embodiments, packet tracking parameters424may generally comprise one or more parameters that describe characteristics associated with the packets414that computing device102-2is to receive from computing device102-1. In various embodiments, packet tracking parameters424may include one or more parameters indicating and/or usable to determine a size of each packet414to be received from computing device102-1. In some embodiments, packet tracking parameters424may include one or more parameters indicating and/or usable to determine a number of packets414to be received from computing device102-1. In various embodiments, packet tracking parameters424may include one or more parameters indicating and/or usable to determine a collective amount of data comprised in the payloads of the various packets414to be received from computing device102-1. In some such embodiments, this collective amount of data may correspond to a size of an application-layer message, such as message108ofFIG. 2. In various embodiments, packet tracking parameters424may include one or more parameters identified based on packet description information411comprised in message transfer request410. For example, in some embodiments, message transfer request410may comprise packet description information411that identifies the size of each packet414and the size of the application-layer message that packets414are being used to convey, and computing device102-2may maintain packet tracking parameters424that identify these values. The embodiments are not limited to this example.

In various embodiments, tracking parameter set422may include one or more message tracking parameters426. In some embodiments, message tracking parameters426may generally comprise one or more parameters that indicate a correspondence between the packets414that computing device102-2may receive from computing device102-1and an application-layer message, operation, or process. In various embodiments, message tracking parameters426may include one or more parameters indicating and/or usable to determine an application-layer receive operation to which a message reconstructed using packets414is to be delivered. In some embodiments, message tracking parameters426may include one or more parameters indicating an association between receive buffer418and such a receive operation. The embodiments are not limited to these examples.

In various embodiments, knowledge of packet tracking parameters424may generally enable computing device102-2to determine whether it has received all of the packets that it was intended to receive in conjunction with a given transport-layer session. For example, in some embodiments, the determination at322in communications flow300ofFIG. 3that computing device102-2has received each required packet may be made based on packet tracking parameters424. In various embodiments, knowledge of message tracking parameters426may generally enable computing device102-2to identify an application-layer operation or process that should be notified of the successful completion of a given packet transfer. For example, in some embodiments, computing device102-2may identify receive operation106ofFIG. 1based on message tracking parameters426and generate an event to notify receive operation106of the successful receipt of message108. The embodiments are not limited to these examples.

In various embodiments, there may be a limit to the overall amount of packet tracking information420that computing device102-2can maintain at any given point in time. For example, in some embodiments, computing device102-2may only be able to maintain a certain number of tracking states and/or tracking parameter sets422. In various embodiments, if such a limit has already been reached at the time of receipt of message transfer request410, computing device102-2may be unable to maintain communication tracking information420for its transport-layer session with computing device102-1. For example, computing device102-2may be unable to maintain a tracking parameter set422for its transport-layer session with computing device102-1if it is unable to allocate a tracking state for that session. In some embodiments, if computing device102-2is unable to maintain communication tracking information420, then computing device102-2may be unaware that it has received each of the required packets414once it has in fact received each such packet. For example, when it sends an acknowledgment of packet2at320in communications flow300ofFIG. 3, computing device102-2may be unaware that it has received each of the four packets that it is intended to receive if it has not been able to maintain communication tracking information420. In various embodiments, the inability to maintain communication tracking information420may also render computing device102-2unaware of the identity of the receive operation that is to be notified of the successful completion of the message transfer. The embodiments are not limited in this context.

Disclosed herein are packet tracking techniques that may be implemented in some embodiments in order to support the delivery of a message to a target device via a transport-layer packet transfer when the target device is not able to maintain tracking information for the transport-layer session via which the packets are transferred. According to various such techniques, a computing device that receives a message transfer request at a point in time at which it is unable to create a new tracking state entry may send a message transfer acceptance to accept the request, and the message transfer acceptance message may comprise a tracking delegation request to indicate that an initiator device is to maintain tracking information for the session. The embodiments are not limited in this context.

FIG. 5illustrates examples of apparatuses500and550that may be representative of apparatuses that may implement one or more of the disclosed packet tracking techniques according to some embodiments. Apparatus500may generally be representative of an initiator device that sends a request to establish a packet transfer session with a target device in order to send packets to that target device. Apparatus550may generally be representative of a target device that receives such a request. According to various embodiments, apparatus500may be representative of computing device102-1ofFIGS. 1-4, and apparatus550may be representative of computing device102-2ofFIGS. 1-4. As shown inFIG. 5, both of apparatuses500and550comprise multiple elements, including respective circuitry502and552and respective memories503and553. The embodiments, however, are not limited to the type, number, or arrangement of elements shown in this figure.

In some embodiments, apparatuses500and550may comprise respective circuitry502and552. Circuitry502and circuitry552may both be arranged to execute one or more software or firmware implemented modules or components, which may include respective communication components506and556and respective tracking components508and558. In various embodiments, either or both of circuitry502and circuitry552may comprise circuitry of a processor or logic device, such as a complex instruction set computer (CISC) microprocessor, a reduced instruction set computing (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 dual-core mobile processor, or any other microprocessor or central processing unit (CPU). In some embodiments, either or both of circuitry502and circuitry552may comprise circuitry of a dedicated processor, such as a controller, a microcontroller, an embedded processor, a chip multiprocessor (CMP), a co-processor, 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 forth. In various embodiments, either or both of circuitry502and circuitry552may 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 context.

In various embodiments, apparatuses500and550may comprise or be arranged to communicatively couple with respective memories503and553. Either or both of memories503and553may be implemented using any machine-readable or computer-readable media capable of storing data, including both volatile and non-volatile memory. For example, either or both of memories503and553may include 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 media suitable for storing information. It is worthy of note that some portion or all of memories503and553may be included on the same respective integrated circuits as circuitry502and circuitry552, or alternatively some portion or all of memories503and553may be disposed on integrated circuits or other media, for example hard disk drives, that are external to the respective integrated circuits of circuitry502and circuitry552. Although memories503and553are comprised within respective apparatuses500and550inFIG. 5, memories503and553may be external to respective apparatuses500and550in some embodiments. The embodiments are not limited in this context.

In some embodiments, communication component506may be executed by circuitry502to generally manage communications between apparatus500and one or more remote devices. In various embodiments, communication component556may be executed by circuitry552to generally manage communications between apparatus550and one or more remote devices. In some embodiments, communication components506and556may be operative to send and/or receive messages in a communication network, such as communication network101ofFIG. 1. In various embodiments, communications components506and556may additionally comprise logic, circuitry, and/or instructions operative to perform various operations in support of such communications. Examples of such operations may include—without limitation—selection of transmission and/or reception parameters and/or timing, packet and/or protocol data unit (PDU) construction and/or deconstruction, encoding and/or decoding, error detection, and/or error correction. The embodiments are not limited to these examples.

In some embodiments, tracking component508may be executed by circuitry502to maintain tracking information in support of communications performed by communication component506. In various embodiments, tracking component558may be executed by circuitry552to maintain tracking information in support of communications performed by communication component556. In some embodiments, tracking components508and558may maintain tracking information for various transport-layer sessions during which respective communication components506and556may send and/or receive packets. In various embodiments, tracking components508and558may 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.

In some embodiments, circuitry502may execute an application504at apparatus500, and circuitry552may execute an application554at apparatus550. In various embodiments, applications504and554may comprise respective instances of a same application. In some other embodiments, applications504and554may comprise different applications. In various embodiments, application-layer connectivity between apparatuses500and550may generally enable applications504and554to send application-layer messages to each other. In some embodiments, application504may use a send operation505to send an application-layer message507to application554, and application554may use a receive operation555to receive that application-layer message507. In various embodiments, application-layer message507may be the same as—or similar to—message108ofFIGS. 1 and 2. In some embodiments, in order to enable application-layer message507to be conveyed to apparatus550, communication component506may partition application-layer message507into a plurality of data segments and send each such data segment to apparatus550in one of a respective plurality of packets514. In various embodiments, packets514may be the same as—or similar to—packets414ofFIG. 4. The embodiments are not limited in this context.

In some embodiments, communication component506may send a request message510to apparatus550. In various embodiments, request message510may comprise a request-to-send (RTS) message. In some embodiments, request message510may comprise a request to establish a packet transfer session with apparatus550in order to send packets514to apparatus550. In various such embodiments, the packet transfer session to be established may comprise a transport-layer session. In some embodiments, communication component556may receive request message510at apparatus550and may elect to grant the request to establish the packet transfer session. In various embodiments, tracking component558may determine whether tracking information for the packet transfer session can be locally maintained. In some embodiments, tracking component558may determine whether tracking information for the packet transfer session can be locally maintained based on whether a tracking state can be allocated for the packet transfer session. In various embodiments, in response to a determination that tracking information for the packet transfer session cannot be locally maintained, tracking component558may identify one or more tracking parameters572to be retained at apparatus500during the packet transfer session. The embodiments are not limited in this context.

In some embodiments, communication component556may select a receive buffer568for use at apparatus550to store packets514to be received during the packet transfer session. In various embodiments, receive buffer568may comprise or correspond to a set of memory resources of memory553. In some embodiments, communication component556may identify one or more receive buffers that are allocated to receive operation555and may select receive buffer568from among those one or more identified receive buffers. In various embodiments, communication component556may send an acceptance message562to apparatus500in order to grant the request to establish the packet transfer session. In some embodiments, acceptance message562may comprise a clear-to-send (CTS) message. In various embodiments, communication component556may use acceptance message562to indicate a request that tracking parameters572be retained at apparatus500during the packet transfer session. In some embodiments, communication component556may include tracking parameters572within acceptance message562. In various embodiments, tracking parameters572may include an identifier associated with receive buffer568. In some embodiments, tracking parameters572may include an identifier associated with receive operation555. In various embodiments, acceptance message562may comprise a message of a designated type for use in indicating requests for initiator-side tracking parameter retention. For example, in some embodiments, acceptance message562may comprise an enhanced CTS (ECTS) designated for use when indicating an initiator-side tracking parameter retention request. In various other embodiments, communication component556may set a flag, bit, field, parameter value, or other type of information element within acceptance message562in order to use acceptance message562to indicate the request for initiator-side tracking parameter retention. The embodiments are not limited in this context.

In some embodiments, communication component506may receive acceptance message562from apparatus500and determine that the request to establish the packet transfer session has been granted. In various embodiments, tracking component508may configure a tracking parameter set522for the packet transfer session. In some embodiments, tracking component508may allocate a tracking state for the packet transfer session and associate tracking parameter set522with the allocated tracking state. In various embodiments, tracking component508may store tracking parameter set522in memory503. In some embodiments, tracking component508may identify one or more initiator-side tracking parameters528and retain the one or more initiator-side tracking parameters528in tracking parameter set522. In various embodiments, initiator-side tracking parameters528may include an identifier associated with send operation505. In some embodiments, initiator-side tracking parameters528may include one or more parameters describing characteristics of application-layer message507. In various embodiments, initiator-side tracking parameters528may include one or more parameters describing characteristics of packets514. The embodiments are not limited to these examples.

In various embodiments, tracking component508may determine that acceptance message562comprises a tracking parameter retention request. In some embodiments, in response to this determination, tracking component508may retain one or more target-side tracking parameters530for the packet transfer session. In various embodiments, tracking component508may retain the one or more target-side tracking parameters530in the tracking parameter set522that it configures for the packet transfer session. In some embodiments, the one or more target-side tracking parameters530may include one or more tracking parameters572comprised in acceptance message562. In various embodiments, the one or more target-side tracking parameters530may include an identifier associated with receive operation555. In some embodiments, the one or more target-side tracking parameters530may include an identifier associated with receive buffer568. The embodiments are not limited to these examples.

In various embodiments, in response to receipt of acceptance message562, communication component506may send a plurality of packets514to apparatus550during a packet transfer session established with apparatus550. In some embodiments, communication component556may receive the plurality of packets514at apparatus550. In various embodiments, communication component556may store the plurality of packets514in receive buffer568. In some embodiments, communication component556may send a plurality of acknowledgments566to apparatus500, and each such acknowledgment566may acknowledge a respective one of the plurality of packets514. In various embodiments, tracking component508may maintain packet acknowledgment information532at apparatus500during the packet transfer session. In some embodiments, tracking component508may maintain packet acknowledgment information532based on acknowledgments566sent by apparatus550. In various embodiments, at any point in time during the packet transfer session, packet acknowledgment information532may identify each packet514that has been acknowledged by apparatus550. The embodiments are not limited in this context.

In some embodiments, tracking component508may determine that apparatus550has acknowledged each of the plurality of packets514. In various embodiments, tracking component508may perform this determination based on packet acknowledgment information532. In some embodiments, in response to such a determination, communication component506may send a transfer completion notification534to apparatus550. In various embodiments, communication component506may include the one or more target-side tracking parameters530within the transfer completion notification534. In some embodiments, communication component556may receive transfer completion notification534at apparatus550. In various embodiments, in response to receipt of transfer completion notification534, communication component556may retrieve the plurality of packets514from receive buffer568and assemble the plurality of packets. In some embodiments, based on the assembled plurality of packets514, communication component556may reconstruct application-layer message507. The embodiments are not limited in this context.

In various embodiments, tracking component508may retrieve one or more target-side tracking parameters530from transfer completion notification534and assemble completion information586based on the one or more retrieved target-side tracking parameters530. In some embodiments, tracking component508may identify receive operation555based on one or more such parameters. In various embodiments, tracking component508may return completion information586to the application554associated with receive operation555. The embodiments are not limited in this context.

Operations for the above embodiments may be further described with reference to the following figures and accompanying examples. Some of the figures may include a logic flow. Although such figures presented herein may include a particular logic flow, it can be appreciated that the logic flow merely provides an example of how the general functionality as described herein can be implemented. Further, the given logic flow does not necessarily have to be executed in the order presented unless otherwise indicated. In addition, 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 context.

FIG. 6illustrates an example of a logic flow600that may be representative of the implementation of one or more of the disclosed packet tracking techniques according to some embodiments. For example, logic flow600may be representative of operations that may be performed in some embodiments by circuitry552in apparatus550ofFIG. 5. As shown inFIG. 6, a request of an initiator device to establish a packet transfer session may be received at602. For example, communication component556ofFIG. 5may receive request message510from apparatus500. At604, it may be determined whether tracking information for the packet transfer session can be locally maintained. For example, tracking component558ofFIG. 5may determine whether tracking information for a packet transfer session with apparatus500can be locally maintained. If it is determined at604that the tracking information can be locally maintained, the logic flow may end. If it is determined at604that the tracking information cannot be locally maintained, flow may pass to606. At606, one or more tracking parameters may be identified for retention at the initiator device. For example, tracking component558ofFIG. 5may identify tracking parameters572. At608, an acceptance message may be sent to grant the request to establish the packet transfer session, and the acceptance message may indicate a request for retention of the one or more tracking parameters. For example, communication component556ofFIG. 5may send acceptance message562to apparatus500, and acceptance message562may indicate a request for retention of tracking parameters572. The embodiments are not limited to these examples.

FIG. 7illustrates an example of a logic flow700that may be representative of the implementation of one or more of the disclosed packet tracking techniques according to various embodiments. For example, logic flow700may be representative of operations that may be performed in some embodiments by circuitry502in apparatus500ofFIG. 5. As shown inFIG. 7, a request to establish a packet transfer session with a target device may be sent at702. For example, communication component506ofFIG. 5may send request message510. At704, an acceptance message may be received from the target device. For example, communication component506ofFIG. 5may receive acceptance message562from apparatus550. At706, it may be determined whether the acceptance message comprises a tracking parameter retention request. For example, tracking component508ofFIG. 5may determine whether acceptance message562comprises a tracking parameter retention request. If it is determined that the acceptance message comprises a tracking parameter retention request, flow may pass to708. At708, one or more target-side tracking parameters for the packet transfer session may be retained. For example, tracking component508ofFIG. 5may retain one or more target-side tracking parameters530in tracking parameter set522. From508, flow may pass to710. If it is determined at706that the acceptance message does not comprise a tracking parameter retention request, flow may pass directly from706to710. At710, a plurality of packets may be sent to the target device. For example, communication component506ofFIG. 5may send a plurality of packets714to apparatus550. The embodiments are not limited to these examples.

FIG. 8illustrates an embodiment of a storage medium800. Storage medium800may 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, storage medium800may comprise an article of manufacture. In some embodiments, storage medium800may store computer-executable instructions, such as computer-executable instructions to implement one or both of logic flow600ofFIG. 6and logic flow700ofFIG. 7. Examples of a computer-readable storage medium or 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, writeable or re-writeable memory, and so forth. 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. The embodiments are not limited in this context.

FIG. 9illustrates an embodiment of an exemplary computing architecture900suitable for implementing various embodiments as previously described. In various embodiments, the computing architecture900may comprise or be implemented as part of an electronic device. In some embodiments, the computing architecture900may be representative, for example, of one or both of apparatuses500and550ofFIG. 5. The embodiments are not limited in this context.

The computer902may include various types of computer-readable storage media in the form of one or more lower speed memory units, including an internal (or external) hard disk drive (HDD)914, a magnetic floppy disk drive (FDD)916to read from or write to a removable magnetic disk918, and an optical disk drive920to read from or write to a removable optical disk922(e.g., a CD-ROM or DVD). The HDD914, FDD916and optical disk drive920can be connected to the system bus908by a HDD interface924, an FDD interface926and an optical drive interface928, respectively. The HDD interface924for external drive implementations can include at least one or both of Universal Serial Bus (USB) and IEEE 1394 interface technologies.

The drives and associated computer-readable media provide volatile and/or nonvolatile storage of data, data structures, computer-executable instructions, and so forth. For example, a number of program modules can be stored in the drives and memory units910,912, including an operating system930, one or more application programs932, other program modules934, and program data936. In one embodiment, the one or more application programs932, other program modules934, and program data936can include, for example, various applications and/or components of one or both of apparatuses500and550ofFIG. 5.

A monitor944or other type of display device may be also connected to the system bus908via an interface, such as a video adaptor946. The monitor944may be internal or external to the computer902. In addition to the monitor944, a computer typically includes other peripheral output devices, such as speakers, printers, and so forth.

When used in a LAN networking environment, the computer902is connected to the LAN952through a wire and/or wireless communication network interface or adaptor956. The adaptor956can facilitate wire and/or wireless communications to the LAN952, which may also include a wireless access point disposed thereon for communicating with the wireless functionality of the adaptor956.

When used in a WAN networking environment, the computer902can include a modem958, or is connected to a communications server on the WAN954, or has other means for establishing communications over the WAN954, such as by way of the Internet. The modem958, which can be internal or external and a wire and/or wireless device, connects to the system bus908via the input device interface942. In a networked environment, program modules depicted relative to the computer902, or portions thereof, can be stored in the remote memory/storage device950. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used.

FIG. 10illustrates a block diagram of an exemplary communications architecture1000suitable for implementing various embodiments as previously described. The communications architecture1000includes various common communications elements, such as a transmitter, receiver, transceiver, radio, network interface, baseband processor, antenna, amplifiers, filters, power supplies, and so forth. The embodiments, however, are not limited to implementation by the communications architecture1000.

As shown inFIG. 10, the communications architecture1000comprises includes one or more clients1002and servers1004. The clients1002and the servers1004are operatively connected to one or more respective client data stores1008and server data stores1010that can be employed to store information local to the respective clients1002and servers1004, such as cookies and/or associated contextual information. Any one of clients1002and/or servers1004may implement one or more of apparatus500and apparatus550ofFIG. 5, logic flow600ofFIG. 6, logic flow700ofFIG. 7, storage medium800ofFIG. 8, and computing architecture900ofFIG. 9. In various embodiments, one or both of apparatuses500and550ofFIG. 5may be implemented in one or more switching devices and/or routing devices in communication framework1006.

The clients1002and the servers1004may communicate information between each other using a communication framework1006. The communications framework1006may implement any well-known communications techniques and protocols. The communications framework1006may be implemented as a packet-switched network (e.g., public networks such as the Internet, private networks such as an enterprise intranet, and so forth), 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 suitable gateways and translators).

The following examples pertain to further embodiments:

Example 1 is an apparatus, comprising circuitry, a tracking component for execution by the circuitry to in response to a request of an initiator device to establish a packet transfer session, determine whether tracking information for the packet transfer session can be locally maintained, and in response to a determination that the tracking information for the packet transfer session cannot be locally maintained, identify one or more tracking parameters for retention at the initiator device, and a communication component for execution by the circuitry to send an acceptance message to grant the request of the initiator device to establish the packet transfer session, the acceptance message to indicate a request for retention of the one or more tracking parameters.

Example 2 is the apparatus of Example 1, the tracking component for execution by the circuitry to determine whether the tracking information can be locally maintained based on whether a tracking state can be allocated for the packet transfer session.

Example 3 is the apparatus of any of Examples 1 to 2, the communication component for execution by the circuitry to identify one or more receive buffers allocated to a receive operation associated with the packet transfer session, and select a receive buffer for the packet transfer session from among the one or more identified receive buffers.

Example 4 is the apparatus of Example 3, the communication component for execution by the circuitry to include an identifier for the selected receive buffer in the acceptance message.

Example 5 is the apparatus of any of Examples 3 to 4, the communication component for execution by the circuitry to include an identifier for the receive operation in the acceptance message.

Example 6 is the apparatus of any of Examples 3 to 5, the communication component for execution by the circuitry to receive a plurality of packets from the initiator device during the packet transfer session, and store the plurality of packets in the selected receive buffer.

Example 7 is the apparatus of Example 6, the communication component for execution by the circuitry to send a respective acknowledgment of each of the plurality of packets.

Example 8 is the apparatus of any of Examples 6 to 7, the communication component for execution by the circuitry to retrieve the plurality of packets from the selected receive buffer and assemble the plurality of packets in response to receipt of a transfer completion notification for the packet transfer session.

Example 9 is the apparatus of Example 8, the transfer completion notification to comprise the one or more tracking parameters.

Example 10 is the apparatus of Example 9, the tracking component for execution by the circuitry to retrieve the one or more tracking parameters from the transfer completion notification, assemble 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 11 is the apparatus of Example 10, the tracking component for execution 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 an apparatus according to any of Examples 1 to 11, and at least one network interface.

Example 13 is an apparatus, comprising circuitry, a communication component for execution by the circuitry to send a request to establish a packet transfer session with a target device, and in response to receipt of an acceptance message from the target device, send a plurality of packets to the target device, and a tracking component for execution by the circuitry to retain one or more target-side tracking parameters for the packet transfer session in response to a determination that the acceptance message comprises a tracking parameter retention request.

Example 14 is the apparatus of Example 13, the tracking component for execution by the circuitry to configure a tracking parameter set for the packet transfer session, and retain the one or more target-side tracking parameters in the tracking parameter set.

Example 15 is the apparatus of Example 14, the tracking component for execution by the circuitry to allocate a tracking state for the packet transfer session, and associate the tracking parameter set with the allocated tracking state.

Example 16 is the apparatus of any of Examples 14 to 15, the tracking component for execution by the circuitry to identify one or more initiator-side tracking parameters for the packet transfer session, and retain the one or more initiator-side tracking parameters in the tracking parameter set.

Example 17 is the apparatus of any of Examples 13 to 16, the acceptance message to comprise at least one of the one or more target-side tracking parameters.

Example 18 is the apparatus of any of Examples 13 to 17, the one or more target-side tracking parameters to include an identifier for a receive operation of the target device.

Example 19 is the apparatus of any of Examples 13 to 18, the one or more target-side tracking parameters to include an identifier for a receive buffer of the target device.

Example 20 is the apparatus of any of Examples 13 to 19, the tracking component for execution by the circuitry to maintain packet acknowledgment information during the packet transfer session, the packet acknowledgment information to identify packets acknowledged by the target device.

Example 21 is the apparatus of any of Examples 13 to 20, the communication component for execution by the circuitry 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 22 is the apparatus of Example 21, the transfer completion notification to contain an identifier for a receive operation associated with the packet transfer session.

Example 23 is the apparatus of any of Examples 21 to 22, the transfer completion notification to contain an identifier for a receive buffer of the target device.

Example 24 is a system, comprising an apparatus according to any 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 being executed on a computing device, cause the computing device to in response to a request of an initiator device to establish a packet transfer session, determine whether tracking information for the packet transfer session can be locally maintained, identify one or more tracking parameters for retention at the initiator device in response to a determination that the tracking information for the packet transfer session cannot be locally maintained, and send an acceptance message to grant the request of the initiator device to establish the packet transfer session, the acceptance message to indicate a request for retention of 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 being executed on the computing device, cause the computing device to determine whether the tracking information can be locally maintained based on whether a tracking state can be allocated for the packet transfer session.

Example 27 is the at least one computer-readable storage medium of any of Examples 25 to 26, comprising instructions that, in response to being executed on the computing device, cause the computing device to identify one or more receive buffers allocated to a receive operation associated with the packet transfer session, and select a receive buffer for the packet transfer session from among 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 being executed on the computing device, cause the computing device to include an identifier for the selected receive buffer in the acceptance message.

Example 29 is the at least one computer-readable storage medium of any of Examples 27 to 28, comprising instructions that, in response to being executed 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 being executed on the computing device, cause the computing device to receive a plurality of packets from the initiator device during the packet transfer session, and 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 being executed 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 to 31, comprising instructions that, in response to being executed on the computing device, cause the computing device to retrieve the plurality of packets from the selected receive buffer and assemble the plurality of packets in response to receipt of a transfer completion notification for the packet transfer session.

Example 33 is the at least one computer-readable storage medium of Example 32, the transfer completion notification to comprise 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 being executed on the computing device, cause the computing device to retrieve the one or more tracking parameters from the transfer completion notification, assemble 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 being executed on the computing device, cause the computing device to identify the receive operation based on at least one of the one or more retrieved tracking parameters.

Example 36 is at least one computer-readable storage medium comprising a set of instructions that, in response to being executed on a computing device, cause the computing device to send a request to establish a packet transfer session with a target device, send a plurality of packets to the target device in response to receipt of an acceptance message from the target device, and retain one or more target-side tracking parameters for the packet transfer session in response to a determination that the acceptance message comprises a tracking parameter retention request.

Example 37 is the at least one computer-readable storage medium of Example 36, comprising instructions that, in response to being executed on the computing device, cause the computing device to configure a tracking parameter set for the packet transfer session, and retain 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 being executed on the computing device, cause the computing device to allocate a tracking state for the packet transfer session, and associate the tracking parameter set with the allocated tracking state.

Example 39 is the at least one computer-readable storage medium of any of Examples 37 to 38, comprising instructions that, in response to being executed on the computing device, cause the computing device to identify one or more initiator-side tracking parameters for the packet transfer session, and retain 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, the acceptance message to comprise 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, the one or more target-side tracking parameters to include 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, the one or more target-side tracking parameters to include 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 being executed on the computing device, cause the computing device to maintain packet acknowledgment information during the packet transfer session, the packet acknowledgment information 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 being executed 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, the transfer completion notification to contain 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, the transfer completion notification to contain an identifier for a receive buffer of the target device.

Example 47 is a method, comprising in response to a request of an initiator device to establish a packet transfer session, determining, by a processor circuit, whether tracking information for the packet transfer session can be locally maintained, identifying one or more tracking parameters for retention at the initiator device in response to a determination that the tracking information for the packet transfer session cannot be locally maintained, and sending an acceptance message to grant the request of the initiator device to establish the packet transfer session, the acceptance message to indicate a request for retention of the one or more tracking parameters.

Example 48 is the method of Example 47, comprising determining whether the tracking information can be locally maintained based on whether a tracking state can be allocated for the packet transfer session.

Example 49 is the method of any of Examples 47 to 48, comprising identifying one or more receive buffers allocated to a receive operation associated with the packet transfer session, and selecting a receive buffer for the packet transfer session from among 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 of Examples 49 to 50, comprising including an identifier for the receive operation in the acceptance message.

Example 52 is the method of any 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 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 receipt of a transfer completion notification for the packet transfer session.

Example 55 is the method of Example 54, the transfer completion notification to comprise 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 notification, 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 at least one computer-readable storage medium comprising a set of instructions that, in response to being executed on a computing device, cause the computing device to perform a method according to any of Examples 46 to 57.

Example 59 is an apparatus, comprising means for performing a method according to any of Examples 46 to 57.

Example 60 is a system, comprising the apparatus 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 receipt of an acceptance message from the target device, and retaining one or more target-side tracking parameters for the packet transfer session in response to a determination that the acceptance message comprises 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 retaining the one or more target-side tracking parameters in the tracking parameter set.

Example 63 is the method of Example 62, comprising allocating a tracking state for the packet transfer session, and associating the tracking parameter set with the allocated 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 retaining the one or more initiator-side tracking parameters in the tracking parameter set.

Example 65 is the method of any of Examples 61 to 64, the acceptance message to comprise at least one of the one or more target-side tracking parameters.

Example 66 is the method of any of Examples 61 to 65, the one or more target-side tracking parameters to include an identifier for a receive operation of the target device.

Example 67 is the method of any of Examples 61 to 66, the one or more target-side tracking parameters to include an identifier for a receive buffer of the target device.

Example 68 is the method of any of Examples 61 to 67, comprising maintaining packet acknowledgment information during the packet transfer session, the packet acknowledgment information to identify packets acknowledged by the target device.

Example 69 is the method of any of Examples 61 to 68, comprising sending 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 70 is the method of Example 69, the transfer completion notification to contain an identifier for a receive operation associated with the packet transfer session.

Example 71 is the method of any of Examples 69 to 70, the transfer completion notification to contain an identifier for a receive buffer of the target device.

Example 72 is at least one computer-readable storage medium comprising a set of instructions that, in response to being executed on a computing device, cause the computing device to perform a method according to any of Examples 61 to 71.

Example 73 is an apparatus, comprising means for performing a method according to any of Examples 61 to 71.

Example 74 is a system, comprising the apparatus of Example 73, and at least one network interface.

Example 75 is an apparatus, comprising means for, in response to a request of an initiator device to establish a packet transfer session, determining whether tracking information for the packet transfer session can be locally maintained, means for identifying one or more tracking parameters for retention at the initiator device in response to a determination that the tracking information for the packet transfer session cannot be locally maintained, and means for sending an acceptance message to grant the request of the initiator device to establish the packet transfer session, the acceptance message to indicate a request for retention of the one or more tracking parameters.

Example 76 is the apparatus of Example 75, comprising means for determining whether the tracking information can be locally maintained based on whether a tracking state can be allocated for the packet transfer session.

Example 77 is the apparatus of any of Examples 75 to 76, comprising means for identifying one or more receive buffers allocated to a receive operation associated with the packet transfer session, and means for selecting a receive buffer for the packet transfer session from among 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 acceptance message.

Example 79 is the apparatus of any 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 of Examples 77 to 79, comprising means for receiving a plurality of packets from the initiator device during the packet transfer 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 sending a respective acknowledgment of each of the plurality of packets.

Example 82 is the apparatus of any 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 receipt of a transfer completion notification for the packet transfer session.

Example 83 is the apparatus of Example 82, the transfer completion notification to comprise 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 transfer completion notification, means for assembling completion information for the packet transfer 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 apparatus 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, comprising an apparatus according to any 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 receipt of an acceptance message from the target device, and means for retaining one or more target-side tracking parameters for the packet transfer session in response to a determination that the acceptance message comprises a tracking parameter retention 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 retaining the one or more target-side tracking parameters in the tracking parameter set.

Example 89 is the apparatus of Example 88, comprising means for allocating a tracking state for the packet transfer session, and means for associating the tracking parameter set with the allocated tracking state.

Example 90 is the apparatus of any of Examples 88 to 89, comprising means for identifying one or more initiator-side tracking parameters for the packet transfer session, and means for retaining the one or more initiator-side tracking parameters in the tracking parameter set.

Example 91 is the apparatus of any of Examples 87 to 91, the acceptance message to comprise at least one of the one or more target-side tracking parameters.

Example 92 is the apparatus of any of Examples 87 to 91, the one or more target-side tracking parameters to include an identifier for a receive operation of the target device.

Example 93 is the apparatus of any of Examples 87 to 92, the one or more target-side tracking parameters to include an identifier for a receive buffer of the target device.

Example 94 is the apparatus of any of Examples 87 to 93, comprising means for maintaining packet acknowledgment information during the packet transfer session, the packet acknowledgment information to identify packets acknowledged by the target device.

Example 95 is the apparatus of any of Examples 87 to 94, comprising means for sending 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 96 is the apparatus of Example 95, the transfer completion notification to contain an identifier for a receive operation associated with the packet transfer session.

Example 97 is the apparatus of any of Examples 95 to 96, the transfer completion notification to contain an identifier for a receive buffer of the target device.

Example 98 is a system, comprising an apparatus according to any of Examples 87 to 97, and at least one network interface.