`DETECTING AN IDLE TCP CONNECTION
`RELATED APPLICATIONS
`[0001] This application is a continuation of, and claims priority to U.S.
`Patent Application No. 15/915,047 entitled "METHODS, SYSTEMS, AND COMPUTER
`PROGRAM PRODUCTS FOR SHARING INFORMATION FOR DETECTING AN IDLE
`TCP CONNECTION," filed on 03-07-2018 which, in turn, is a continuation of,
`and claims priority to U.S. Patent Application No. 15/694,802, now U.S. Patent
`No. 9,923,995, entitled "METHODS, SYSTEMS, AND COMPUTER PROGRAM PRODUCTS FOR
`SHARING INFORMATION FOR DETECTING AN IDLE TCP CONNECTION," filed on
`09-03-2017 which, in turn, is a continuation-in-part of, and claims priority
`to U.S. Patent Application No. 14/667,642, entitled "METHODS, SYSTEMS, AND
`COMPUTER PROGRAM PRODUCTS FOR SELECTING A RESOURCE BASED ON A MEASURE
`OF A PROCESSING COST," filed on 03-24-2015 which, in turn, is a
`continuation-in-part of and claims priority to U.S. Patent Application No.
`13/477,402, entitled "METHODS, SYSTEMS, AND COMPUTER PROGRAM PRODUCTS FOR
`SHARING INFORMATION FOR DETECTING AN IDLE TCP CONNECTION," filed
`05-22-2012
`which is a continuation of and claims priority to U.S. Patent Application No.
`12/714,454, now U.S. Patent No. 8,219,606, entitled "METHODS, SYSTEMS, AND
`COMPUTER PROGRAM PRODUCTS FOR SHARING INFORMATION FOR DETECTING AN IDLE TCP
`CONNECTION," filed 02- 27-2010-27-2010.
`[0002] U.S. Patent Application No. 12/714,454, entitled "METHODS, SYSTEMS,
`AND COMPUTER PROGRAM PRODUCTS FOR SHARING INFORMATION FOR
`DETECTING AN IDLE TCP CONNECTION," filed 02-27-2010 is incorporated herein
`by reference in its entirety for all purposes.
`[0003] This application is related to the following commonly owned U.S. Patent
`Applications, the entire disclosure of which is incorporated by reference
`herein in its entirety for all purposes: Application No. 12/714,063 (Docket
`No 0110) filed on 2010/02/26, entitled "Methods, Systems, and Program Products
`for Detecting an Idle TCP Connection".
`BACKGROUND
`[0004] Various implementations of the transmission control protocol (TCP) in
`network nodes support a number of options that are not negotiated or even
`communicated between or among any of the nodes. Some of these options are
`included in the specification of the TCP while others are not. For example,
`the TCP keep-alive option is supported by a number of implementations of the
`TCP. It is not, however, part of the TCP specification as described in "Request
`for Comments" (RFC) document RFC 793 edited by John Postel, titled
`"Transmission Control Protocol, DARPA Internet Program Internet Protocol
`Specification" (September 1981), which is incorporated here in its entirety
`by reference. One, both, or neither node including an endpoint in a TCP
`connection may support a keep-alive option for the connection. Each node
`supports or
`does not support keep-alive for a TCP connection based on each node's
`requirements without consideration for the other node in the TCP connection.
`
`Page 1 of 27
`
`GOOGLE EXHIBIT 1052
`
`
`
`[0005] With respect to the keep-alive option, some argue that it is
`unnecessary and that it can waste network bandwidth. Some of these critics
`point out that a keep-alive packet can bring down a TCP connection. Further,
`since nodes including endpoints in a TCP connection do not cooperate in
`supporting the keep-alive option, the nodes may operate in opposition to one
`another and/or may waste resources by duplicating function, according to
`critics of the keep-alive option.
`[0006] Proponents of the keep-alive option claim there is a benefit to
`detecting a dead peer/partner endpoint sooner. A node providing TCP keep-alive
`can also indirectly detect when a network is so congested that two nodes with
`endpoints in a TCP connection are effectively disconnected. Proponents argue
`that keep-alive can keep an inactive TCP connection open. For example, some
`network nodes such as firewalls are configured to close TCP connections
`determined to be idle or inactive in order to recover resources. Keep-alive
`can prevent this. This is good from the perspective of the node sending
`keep-alive packets, but the keep-alive packets might cause the firewall to
`waste resources and possibly block or terminate TCP connections with other
`nodes.
`[0007] TCP keep-alive and the debate of its benefits and faults have been
`around for decades. To date no mechanism to allow two TCP connection endpoints
`to cooperate in supporting the keep-alive option has been proposed or
`implemented. The broader issue of enabling cooperation and negotiation
`between nodes in a TCP connection in
`detecting and managing idle, underactive, and/or dead TCP connections remains
`unaddressed.
`[0008] Accordingly, there exists a need for methods, systems, and computer
`program products for sharing information for detecting an idle TCP connection.
`SUMMARY
`[0009] The following presents a simplified summary of the disclosure in order
`to provide a basic understanding to the reader. This summary is not an
`extensive overview of the disclosure and it does not identify key/critical
`elements of the invention or delineate the scope of the invention. Its sole
`purpose is to present some concepts disclosed herein in a simplified form as
`a prelude to the more detailed description that is presented later.
`[0010] An apparatusA computer-implemented method is provided, comprising:
`causing access to be provided to a server computer including: a non-transitory
`memory storing instructions;a network application, and one or more processors
`in communication with the non-transitory memory, wherein the one or more
`processors execute the instructions for: receiving, by a second node
`fromnetwork application to operate in accordance with a first node,protocol
`including a transmission control protocol (TCP)-variant packet in advance of;
`causing a TCP variant connection beingto be established; with a client
`computer, by: communicating a segment including at least one first synchronize
`bit, communicating a first acknowledgement of the segment, and at least one
`second synchronize bit, and communicating a second acknowledgement; causing
`first data to be communicated
`
`Page 2 of 27
`
`
`
`from the server computer to the client computer utilizing the TCP connection
`in accordance with the TCP protocol and a hypertext transfer protocol (HTTP),
`for being presented to a user of the client computer; causing the server
`computer to permit second data, from the user of the client computer, to be
`received at the server computer from the client computer utilizing the TCP
`connection in accordance with the TCP protocol and the hypertext transfer
`protocol (HTTP); and causing access to be provided, to the client computer,
`to code that causes the client computer to operate in accordance with a second
`protocol that is separate from the TCP, in order to establish a second protocol
`connection with another server computer, by: receiving a packet, detecting
`an idle time period parameter field in the TCP variant packet;, identifying
`metadata in the idle time period parameter field for an idle time period that
`is detectable by the first node and, during which, no packet is communicated
`in the TCP variant connection to keep the TCP variant connection active;,
`where, after the idle time period is detected, the second protocol connection
`is deemed inactive, and creating or modifying, by the second nodeclient
`computer and based on the metadata, a timeout attribute associated with the
`TCP-variantsecond protocol connection.
`[0011] Another apparatuscomputer-implemented method is provided comprising:
`providing access to a server computer including: a non-transitory memory
`storing instructions;a network application, and one or more processors in
`communication with the non-transitory memory, wherein the one or more
`processors execute the instructions for: receiving idle information for
`detecting an idle time period, during which, no packet is communicated in a
`transmission control protocol (TCP)-variant connection to keepnetwork
`application to operate in accordance with a first protocol including a
`transmission control protocol (TCP); causing a TCP connection to be
`established with a client computer, by communicating a segment including at
`least one first synchronize bit; communicating a
`first acknowledgement of the segment, and at least one second synchronize bit;
`and communicating a second acknowledgement; causing first data to be
`communicated from the server computer to the client computer utilizing the
`TCP-variant
`connection active;in accordance with the TCP protocol and a hypertext
`transfer protocol (HTTP), for being presented to a user of the client computer;
`causing the server computer to permit second data, from the user of the client
`computer, to be received at the server computer from the client computer
`utilizing the TCP connection in accordance with the TCP protocol and the
`hypertext transfer protocol (HTTP); and providing access to code that results
`in the client computer operating in accordance with a second protocol that
`is separate from the TCP, in order to establish a second protocol connection
`with another server computer, by: identifying idle information for detecting
`an idle time period, after which, the second protocol connection is subject
`to deactivation, generating a TCP-variantsecond protocol packet including an
`idle time period parameter field identifying metadata for the idle time period
`based on the idle information;, and sending, from a first node to athe client
`computer to the another server computer, the second node, the
`TCP variantprotocol packet in advance of the TCP variant connection being
`established to provide the metadata for the idle time period to the second
`nodeanother server computer, for use by the second nodeanother server computer
`in creating or modifying, based on the metadata, a timeout attribute
`associated with the TCP-variantsecond protocol connection.
`
`Page 3 of 27
`
`
`
`[0012] Yet another apparatuscomputer-implemented method is provided
`comprising: providing access to a server computer including: a non-transitory
`memory storing a network application;instructions, and one or more processors
`in communication with the non- transitory memory, wherein
`the one or more processors execute the network applicationinstructions such
`that thea network application is configured to operateoperates in accordance
`with a non-first protocol including a transmission control protocol (TCP)
`protocol, the server computer, when operating in accordance with the first
`protocol to set up a TCP connection with a client computer, configured to:
`communicate a segment including at least one first synchronize bit,
`communicate a first acknowledgement of the segment, and at least one second
`synchronize bit, and communicate a second acknowledgement; causing first data
`to be communicated from the server computer to the client computer utilizing
`the TCP connection in accordance with the TCP protocol and a hypertext transfer
`protocol (HTTP), for being presented to a user of the client computer; causing
`the server computer to permit second data, of the user of the client computer,
`to be received at the server computer from the client computer utilizing the
`TCP connection in accordance with the TCP protocol and the hypertext transfer
`protocol (HTTP); and providing access to code that causes the client computer
`to operate in accordance with a second protocol that is different from the
`TCP and that operates above an Internet Protocol (IP) layer and below a
`hypertext transfer protocol (HTTP) application layer, the apparatus, when
`operating in accordance with the non-TCP protocol, configured to: receive,
`by a second node from a first nodein order to setup a second protocol connection
`with another server computer, by: receiving, by the client computer from the
`another server computer, a non-TCP packet during a setup of a non- TCP
`connection; identify, identifying metadata, that specifies a number of
`seconds or minutes, in an idle time period parameter field in the non-TCP
`packet, for an idle time period that is detectable by the first node, where,
`as a result of a detection of the idle time period, the non TCP connection
`is subject to deactivation;during which, no packet is communicated that meets
`each of the following criteria: a) communicated via the second protocol
`connection, and b) causes the second protocol connection to be kept at
`least partially alive, and determining, by the client computer and determine,
`based on the metadata, a timeout attribute associated with the non-TCP
`connection; wherein the apparatus, when operating in accordance with the
`TCPsecond protocol, is configured to perform a three-
`way TCP handshake for establishing a TCP connection that is different than
`the non TCP connection.
`[0013] Still yet another apparatuscomputer-implemented method is provided
`comprising: providing access to a server computer including: a non-transitory
`memory storing a network application;instructions, and one or more processors
`in communication with the non-transitory memory, wherein the one or more
`processors execute the network applicationinstructions such that thea network
`application is configured to operateoperates in accordance with a non-first
`protocol including a transmission control protocol (TCP) protocol that
`operates above an Internet Protocol (IP) layer and below a hypertext transfer
`protocol (HTTP) application layer, the apparatusserver computer, when
`operating in accordance with the non-TCPfirst protocol to set up a TCP
`connection with a client computer, configured to: communicate a segment
`
`Page 4 of 27
`
`
`
`including at least one first synchronize bit, communicate a first
`acknowledgement of the segment, and at least one second synchronize bit, and
`communicate a second acknowledgement; causing first data to be communicated
`from the server computer to the client computer utilizing the TCP connection
`in accordance with the TCP protocol and a hypertext transfer protocol (HTTP),
`for being presented to a user of the client computer; causing the server
`computer to permit second data, of the user of the client computer, to be
`received at the server computer from the client computer utilizing the TCP
`connection in accordance with the TCP protocol and the hypertext transfer
`protocol (HTTP); and providing access to code that results in the client
`computer operating in accordance with a second protocol, that is different
`from the TCP and operates above the IP layer and below the
`HTTP application layer, in order to setup a second protocol connection with
`another server computer, and to: receive idle information for use in detecting
`an idle time period thatduring which no signal is communicated that meets each
`of the following criteria: a) communicated in the second protocol connection,
`and b) results in a non-TCPthe second protocol connection being subject to
`deactivation;at least partially kept alive, generate, based on the idle
`information, a non-TCPsecond protocol packet including an idle time period
`parameter field identifying metadata that is specified in a number of seconds
`or minutes;, and send, from a first node to a second nodethe client computer
`to another server computer and for establishingduring the non TCPset up of
`the second protocol connection, the non-TCPsecond protocol packet to provide
`the metadata to the second nodeanother server computer, for use by the second
`nodeanother server computer in determining a timeout attribute associated
`with the non-TCP connection; wherein the apparatus, when operating in
`accordance with the TCP protocol, is configured to perform a three-way TCP
`handshake for establishing a TCP connection that is separate from the
`non-TCPsecond protocol connection.
`[0014] Other methods and systems are also described for sharing information
`for detecting an idle TCP connection. In one aspect, a method includes
`receiving, by a second node from a first node, a first transmission control
`protocol (TCP) packet in a TCP connection. The method further includes
`detecting a first idle time period header, in the first packet, identifying
`metadata for a first idle time period, detectable by the first node, during
`which no TCP packet including data in a first TCP data stream sent in the TCP
`connection by the second node is received by the first node. The method still
`further includes modifying, based on the metadata, by the second node a timeout
`attribute associated with the TCP connection.
`[0015] Further, a system for sharing information for detecting an idle TCP
`connection is described. The system includes an execution environment
`including an instruction processing unit configured to process an instruction
`included in at least one of a net in- port component, an idle time period option
`handler component, and an option attribute handler component. The system
`includes the net in-port component configured for receiving, by a second node
`from a first node, a first transmission control protocol (TCP) packet in a
`TCP connection. The system further includes the idle time period option
`handler component configured for detecting a first idle time period header,
`in the first packet, identifying metadata for a first idle time period,
`detectable by the first node, during which no TCP packet including data in
`a first TCP data stream sent in the TCP connection by the second node is
`
`Page 5 of 27
`
`
`
`received by the first node. The system still further includes the option
`attribute handler component configured for modifying, based on the metadata,
`by the second node a timeout attribute associated with the TCP connection
`[0016] In another aspect, a method for sharing information for detecting an
`idle TCP connection is described that includes receiving, by a first node,
`first idle information for detecting a first idle time period during which
`no TCP packet including data in a first data stream sent in the TCP connection
`by a second node is received by the first node. The method further includes
`generating a TCP packet including a first idle time period header identifying
`metadata for the first idle time period based on the first idle information.
`The method still further includes sending the TCP packet in the TCP connection
`to the second node to provide the metadata for the first idle time period to
`the second node. The method also includes detecting the first idle time period
`based on the first idle information. The method additionally includes
`deactivating the TCP connection in response to detecting the first idle time
`period.
`[0017] Still further, a system for sharing information for detecting an idle
`TCP connection is described. The system includes an execution environment
`including an instruction processing unit configured to process an instruction
`included in at least one of an idle time period policy component, a packet
`generator component, a net out-port component, an idle time period monitor
`component, and a connection state component. The system includes the idle time
`period policy component configured for receiving, by a first node, first idle
`information for detecting a first idle time period during which no TCP packet
`including data in a first data stream sent in the TCP connection by a second
`node is received by the first node. The system includes the packet generator
`component configured for generating a TCP packet including a first idle time
`period header identifying metadata for the first idle time period based on
`the first idle information. The system still further includes the net out-port
`component configured for sending the TCP packet in the TCP connection to the
`second node to provide the metadata for the first idle time period to the second
`node. The system includes the idle time period monitor component configured
`for detecting the first idle time period based on the first idle information.
`The system includes the connection state component configured for
`deactivating the TCP connection in response to detecting the first idle time
`period.
`BRIEF DESCRIPTION OF THE DRAWINGS
`[0018] Objects and advantages of the present invention will become apparent
`to those skilled in the art upon reading this description in conjunction with
`the accompanying drawings, in which like reference numerals have been used
`to designate like or analogous elements, and in which:
`[0019] Fig. 1 is a block diagram illustrating an exemplary hardware device
`included in and/or otherwise providing an execution environment in which the
`subject matter may be implemented;
`[0020] Fig. 2 is a flow diagram illustrating a method for sharing information
`for detecting an idle TCP connection according to an aspect of the subject
`matter described herein;
`
`Page 6 of 27
`
`
`
`[0021] Fig. 3 is a flow diagram illustrating another method for sharing
`information for detecting an idle TCP connection according to another aspect
`of the subject matter described herein;
`[0022] Fig. 4 isa and Fig. 4b show a block a diagram illustrating an arrangement
`of components for sharing information for detecting an idle TCP connection
`according to a further aspect of the subject matter described herein;
`[0023] Fig. 5 is a block diagram illustrating an arrangement of components
`for sharing information for detecting an idle TCP connection according to
`still another aspect of the subject matter described herein;
`[0024] Fig. 6 is a network diagram illustrating an exemplary system for sharing
`information for detecting an idle TCP connection according to an aspect of
`the subject matter described herein;
`[0025] Fig. 7 is a message flow diagram illustrating an exemplary data and
`execution flow for sharing information for detecting an idle TCP connection
`according to an aspect of the subject matter described herein; and
`[0026] Fig. 8 is a diagram illustrating a structure for a packet transmitted
`via a network according to an aspect of the subject matter described herein.
`DETAILED DESCRIPTION
`[0027] An exemplary device included in an execution environment that may be
`configured according to the subject matter is illustrated in Fig. 1. An
`execution environment includes an arrangement of hardware and, optionally,
`software that may be further configured to include an arrangement of
`components for performing a method of the subject matter described herein.
`[0028] An execution environment includes and/or is otherwise provided by one
`or more devices. An execution environment may include a virtual execution
`environment
`including software components operating in a host execution environment.
`Exemplary devices included in or otherwise providing suitable execution
`environments for configuring according to the subject matter include personal
`computers, notebook computers, tablet computers, servers, hand-held and other
`mobile devices, multiprocessor devices, distributed devices, consumer
`electronic devices, and/or network-enabled devices. Those skilled in the art
`will understand that the components illustrated in Fig. 1 are exemplary and
`may vary by particular execution environment.
`[0029] Fig. 1 illustrates hardware device 100 included in execution
`environment 102 which includes instruction-processing unit (IPU) 104, such
`as one or more microprocessors; physical IPU memory 106 including storage
`locations identified by addresses in a physical memory address space of IPU
`104; persistent secondary storage 108, such as one or more hard drives and/or
`flash storage media; input device adapter 110, such as key or keypad hardware,
`keyboard adapter, and/or mouse adapter; output device adapter 112, such as
`a display or audio adapter for presenting information to a user; a network
`interface, illustrated by network interface adapter 114, for communicating
`
`Page 7 of 27
`
`
`
`via a network such as a LAN and/or WAN; and a communication mechanism that
`couples elements 104-114, illustrated as bus 116. Elements 104-114 may be
`operatively coupled by various means. Bus 116 may comprise any type of bus
`architecture, including a memory bus, a peripheral bus, a local bus, and/or
`a switching fabric.
`[0030] IPU 104 is an instruction execution machine, apparatus, or device.
`Exemplary IPUs include one or more microprocessors, digital signal processors
`(DSP), graphics processing units (GPU), application-specific integrated
`circuits (ASIC), and/or field programmable gate arrays (FPGA).
`[0031] IPU 104 may access machine code instructions and data via one or more
`memory address spaces in addition to the physical memory address space. A
`memory address space includes addresses identifying locations in an IPU
`memory. IPU 104 may have more than one IPU memory. Thus, IPU 104 may have more
`than one memory address space. IPU 104 may access a location in an IPU memory
`by processing an address identifying the location. The processed address may
`be in an operand of a machine code instruction and/or may be identified in
`a register or other portion of IPU 104.
`[0032] Fig. 1 illustrates virtual IPU memory 118 spanning at least part of
`physical IPU memory 106 and at least part of persistent secondary storage 108.
`Virtual memory addresses in a memory address space may be mapped to physical
`memory addresses identifying locations in physical IPU memory 106. An address
`space for identifying locations in a virtual IPU memory is referred to as a
`virtual memory address space; its addresses are referred to as virtual memory
`addresses; and its IPU memory is known as a virtual IPU memory or virtual
`memory. The term IPU memory may refer to physical IPU memory 106 and/or virtual
`IPU memory 118 depending on the context in which the term is used.
`[0033] Various types of memory technologies may be included in physical IPU
`memory
`106. Exemplary memory technologies include static random access memory (SRAM)
`and/or dynamic RAM (DRAM) including variants such as dual data rate
`synchronous DRAM (DDR SDRAM), error correcting code synchronous DRAM (ECC
`SDRAM), and/or RAMBUS DRAM (RDRAM). Physical IPU memory 106 may include
`volatile memory as illustrated in the previous sentence and/or may include
`nonvolatile memory such as nonvolatile flash RAM (NVRAM) and/or read-only
`memory (ROM).
`[0034] Persistent secondary storage 108 may include one or more flash memory
`storage devices, one or more hard disk drives, one or more magnetic disk
`drives, and/or one or more optical disk drives. Persistent secondary storage
`may include removable media. The drives and their associated
`computer-readable storage media provide volatile and/or nonvolatile storage
`for computer readable instructions, data structures, program components, and
`other data for execution environment 102.
`[0035] Execution environment 102 may include software components stored in
`persistent secondary storage 108, in remote storage accessible via a network,
`and/or in an IPU memory. Fig. 1 illustrates execution environment 102
`including operating system 120, one or more applications 122, other program
`code and/or data components illustrated by other libraries and subsystems 124.
`
`Page 8 of 27
`
`
`
`[0036] Execution environment 102 may receive user-provided information via
`one or more input devices illustrated by input device 128. Input device 128
`provides input information to other components in execution environment 102
`via input device adapter
`110. Execution environment 102 may include an input device adapter for a
`keyboard, a touch screen, a microphone, a joystick, a television receiver,
`a video camera, a still camera, a document scanner, a fax, a phone, a modem,
`a network adapter, and/or a pointing device, to name a few exemplary input
`devices.
`[0037] Input device 128 included in execution environment 102 may be included
`in device 100 as Fig. 1 illustrates or may be external (not shown) to device
`100. Execution environment 102 may include one or more internal and/or
`external input devices.
`External input devices may be connected to device 100 via corresponding
`communication interfaces such as a serial port, a parallel port, and/or a
`universal serial bus (USB) port. Input device adapter 110 receives input and
`provides a representation to bus 116 to be received by IPU 104, physical IPU
`memory 106, and/or other components included in execution environment 102.
`[0038] Output device 130 in Fig. 1 exemplifies one or more output devices that
`may be included in and/or may be external to and operatively coupled to device
`100. For example, output device 130 is illustrated connected to bus 116 via
`output device adapter 112. Output device 130 may be a display device. Exemplary
`display devices include liquid crystal displays (LCDs), light emitting diode
`(LED) displays, and projectors. Output device 130 presents output of
`execution environment 102 to one or more users. In some embodiments, an output
`device is a device such as a phone, a joystick, and/or a touch screen. In
`addition to various types of display devices, exemplary output devices include
`printers, speakers, tactile output devices such as
`motion producing devices, and other output devices producing sensory
`information detectable by a user.
`[0039] A device included in or otherwise providing an execution environment
`may operate in a networked environment communicating with one or more devices
`(not shown) via one or more network interfaces. The terms "communication
`interface" and "network interface" are used interchangeably. Fig. 1
`illustrates network interface adapter 114 as a network interface included in
`execution environment 102 to operatively couple device 100 to a network. The
`terms "network node" and "node" in this document both refer to a device having
`a network interface operatively coupled to a network.
`[0040] Exemplary network interfaces include wireless network adapters and
`wired network adapters. Exemplary wireless networks include a BLUETOOTH
`network, a wireless 802.11 network, and/or a wireless telephony network (e.g.,
`a cellular, PCS, CDMA, and/or GSM network). Exemplary wired networks include
`various types of LANs, wide area networks (WANs), and personal area networks
`(PANs). Exemplary network adapters for wired networks include Ethernet
`adapters, Token-ring adapters, FDDI adapters, asynchronous transfer mode
`(ATM) adapters, and modems of various types. Exemplary networks also include
`intranets and internets such as the Internet.
`
`Page 9 of 27
`
`
`
`[0041] Fig. 2 is a flow diagram illustrating a first method for sharing
`information for detecting an idle TCP connection according to an exemplary
`aspect of the subject matter described herein. Fig. 3 is a flow diagram
`illustrating a second method for sharing information for detecting an idle
`TCP connection according to an exemplary
`aspect of the subject matter described herein. Fig. 4a is a block diagram
`illustrating a system for sharing information for detecting an idle TCP
`connection according to the first method in Fig. 2. Fig. 4b is a block diagram
`illustrating a system for sharing information for detecting an idle TCP
`connection according to the second method in Fig.
`3. It is expected that many, if not most, systems configured to perform one
`of the methods illustrated in Fig. 2 and Fig. 3 will also be configured to
`perform the other method.
`[0042] A system for sharing information for detecting an idle TCP connection
`according to the method illustrated in Fig. 2 includes an execution
`environment, such as execution environment 102 in Fig. 1, including an
`instruction processing unit, such as IPU 104, configured to process an
`instruction included in at least one of an idle time period policy component
`450, a packet generator component 452, and a net out-port component 454, a
`idle time period monitor component 456, and a connection state component 458
`illustrated in Fig. 4a.
`[0043] A system for sharing information for detecting an idle TCP connection
`performing the method illustrated in Fig. 3 includes an execution environment,
`such as execution environment 102 in Fig. 1, including an instruction
`processing unit, such as IPU 104, configured to process an instruction
`included in at least one of a net in-port component 460, an idle time period
`option handler component 462, an option attribute handler component 464
`illustrated in Fig. 4b.
`[0044] Components illustrated in Fig. 4a may be adapted for performing the
`method illustrated in Fig. 2 in a number of execution environments. Components
`illustrated in Fig. 4b may be adapted for performing the method ill