`
`US009923995B1
`
`( 12 ) United States Patent
`Morris
`
`( 10 ) Patent No . :
`( 45 ) Date of Patent :
`
`US 9 , 923 , 995 B1
`* Mar . 20 , 2018
`
`( 54 ) METHODS , SYSTEMS , AND COMPUTER
`PROGRAM PRODUCTS FOR SHARING
`INFORMATION FOR DETECTING AN IDLE
`TCP CONNECTION
`( 71 ) Applicant : SITTING MAN , LLC , Raleigh , NC
`( US )
`( 72 ) Inventor : Robert Paul Morris , Raleigh , NC ( US )
`( 73 ) Assignee : Sitting Man , LLC , Raleigh , NC ( US )
`Subject to any disclaimer , the term of this
`( * ) Notice :
`patent is extended or adjusted under 35
`U . S . C . 154 ( b ) by 0 days .
`This patent is subject to a terminal dis
`claimer .
`( 21 ) Appl . No . : 15 / 694 , 802
`Sep . 3 , 2017
`( 22 )
`Filed :
`
`Related U . S . Application Data
`( 63 ) Continuation - in - part of application No . 14 / 667 , 642 ,
`filed on Mar . 24 , 2015 , which is a continuation - in - part
`of application No . 13 / 477 , 402 , filed on May 22 , 2012 ,
`now abandoned , which is
`a continuation of
`application No . 12 / 714 , 454 , filed on Feb . 27 , 2010 ,
`now Pat . No . 8 , 219 , 606 .
`Int . C1 .
`( 2006 . 01 )
`GOOF 15 / 16
`H04L 29 / 06
`( 2006 . 01 )
`U . S . CI .
`. . . . . . . . . . . . . . . . . . . . . H04L 69 / 16 ( 2013 . 01 )
`???
`( 58 ) Field of Classification Search
`. . . . . . . . . . . . . . . . . HO4L 69 / 16
`CPC . . . . . . . . . . . . . . . .
`See application file for complete search history .
`
`( 51 )
`
`( 52 )
`
`( 56 )
`
`References Cited
`U . S . PATENT DOCUMENTS
`6 , 412 , 006 B2 *
`6 / 2002 Naudus
`H04L 45 / 00
`370 / 437
`7 , 404 , 210 B2 *
`7 / 2008 Lin . . . . . . . . . . . . . . . . . . . . H04L 63 / 1458
`370 / 392
`7 , 426 , 569 B2 *
`9 / 2008 Dunk . . . . . . . . . . . . . . . . . . . . H04L 67 / 14
`709 / 203
`3 / 2010 Valli . . . . . . . . . . . . . . . . . . . H04L 43 / 10
`7 , 684 , 346 B2 *
`370 / 252
`7 , 720 , 989 B2 *
`5 / 2010 Dunk . . . . . . . . . . . . . . . .
`H04L 67 / 14
`709 / 224
`7 , 729 , 271 B2 *
`6 / 2010 Tsuchiya . . . . . . . .
`H04L 43 / 022
`370 / 252
`( Continued )
`OTHER PUBLICATIONS
`Allman , M . , Paxson , V . , Stevens , W . , “ TCP Congestion Control ” ,
`RFC 2581 , Internet Engineering Task Force , http : / / tools . ietf . org / rfc /
`rfc2581 . txt , — Apr . 1999 .
`
`( Continued )
`Primary Examiner — Moustafa M Meky
`( 74 ) Attorney , Agent , or Firm — Patrick E . Caldwell ,
`Esq . ; The Caldwell Firm , LLC
`( 57 )
`ABSTRACT
`Methods and systems are described for sharing information
`for detecting an idle connection . In one aspect , a second
`node receives a packet in a connection . A portion in the
`packet is detected identifying metadata for a period , detect
`able by a first node . The second node modifies a timeout
`associated with the connection based on the metadata . In
`another aspect , a first node receives information for detect
`ing a period . A packet is generated including a portion
`identifying metadata for the period based on the informa
`tion , and sent to the second node .
`30 Claims , 8 Drawing Sheets
`
`Receive , 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
`
`- 202
`
`Generate a TCP packet including a first idle time period header
`identify metadata for the first idle time period based on the first idle
`information
`
`Send 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
`
`Detect the first idle time period based on the first idle information
`
`204
`
`206
`
`- 208
`
`Deactivate the TCP connection in response to detecting the first idle
`time period
`
`- 210
`
`Page 1 of 24
`
`GOOGLE EXHIBIT 1010
`
`
`
`US 9 , 923 , 995 B1
`Page 2
`
`( 56 )
`
`References Cited
`U . S . PATENT DOCUMENTS
`
`12 / 2011 Dunk . . . . . . . . . . . . . . . . . . . H04L 67 / 14
`8 , 073 , 964 B2 *
`709 / 224
`7 / 2012 Morris . . . . . . . . . . . . . . . . . . H04L 69 / 16
`8 , 219 , 606 B2 *
`709 / 201
`3 / 2005 Kakani . . . . . . . . . . . . . . . . H04W 28 / 18
`2005 / 0054347 Al *
`455 / 452 . 1
`3 / 2005 Sillasto et al .
`2005 / 0063304 AL
`2006 / 0034179 A1 2 / 2006 Carter et al .
`. . . . . H04W 76 / 045
`2009 / 0252072 A1 *
`10 / 2009 Lind
`370 / 311
`2010 / 0057844 A1 *
`3 / 2010 Johnson . . . . . . . . . . . . . . GO6F 3 / 0611
`709 / 203
`2011 / 0213820 AL
`9 / 2011 Morris
`
`OTHER PUBLICATIONS
`Busatto , Fabio , “ TCP Keepalive Overview ” , TCP Keepalive
`HOWTO , Section 2 , http : / / tldp . org / HOWTO / html _ single / TCP
`Keepalive - HOWTO / # overview , accessed Jan . 2010 , May 2007 .
`Eggert , L . , Gont , F . , “ TCP User Timeout Option ” , RFC 5482 ,
`Internet Engineering Task Force ( IEFT ) , http : / / tools . ietf . org / html /
`rfc5482 . txt , Mar . 2009 .
`
`Koziero , Charles M . , TCP Connection Management and Problem
`Handling , the Connection Reset Function , and TCP “ Keepalives ” ,
`The TCP / IP Guide ,
`p .
`3 ,
`http : / / www . tcpipguide . com / free /
`t _ TCPConnection ManagementandProblemHandlingtheConnec
`3 , htm , accessed Feb . 2010 , ( c ) 2003 - 2010 .
`Mathis , M . , Mahdave , J . , Floyd , S . , Romanow , A . , “ TCP Selective
`Acknowledgement Options ” , RFC 2018 , Internet Engineering Task
`Force , http : / / tools . ietf . org / rfc / rfc2018 . txt , Oct . 1996 .
`Nagle , John , “ Congestion Control in IP / TCP Internetworks ” , RFC
`896 , Ford Aerospace and Communications Corporation , http : / / tools .
`ietf . org / rfc / rfc896 . txt , Jan . 1984 .
`Postel , John ( ed . ) , Editor ;
`“ Transmission Control Protocol
`DARPA Internet Protocol Specification ” , RFC 793 , USC / Informa
`tion Sciences Institute , http : / / tools . ietf . org / rfc / rfc793 . txt , Sep . 1981 .
`Office Action Summary in U . S . Appl . No . 12 / 714 , 063 dated Jun . 21 ,
`2012 .
`Office Action Summary in U . S . Appl . No . 12 / 714 , 063 dated Mar . 4 ,
`2013 .
`Office Action Summary in U . S . Appl . No . 12 / 714 , 063 dated Sep . 27 ,
`2013 .
`Office Action Summary in U . S . Appl . No . 12 / 714 , 454 dated Feb . 23 ,
`2012 .
`Office Action Summary in U . S . Appl . No . 13 / 477 , 402 dated Sep . 24 ,
`2014 .
`Office Action Summary in U . S . Appl . No . 15 / 694 , 803 dated Nov .
`29 , 2017 .
`* cited by examiner
`
`Page 2 of 24
`
`
`
`U . S . Patent
`
`Mar . 20 , 2018
`
`Sheet 1 of 8
`
`US 9 , 923 , 995 B1
`
`To / From Network
`
`Network Interface Adapter 114
`
`Persistent Secondary Storage 108
`
`116
`
`124 Other Libraries and Subsystems
`
`
`
`
`Applications 122
`
`Operating System 120
`
`
`
`Input Device 128
`
`
`
`Input Device Adapter 110
`
`
`
`Output Device 130
`
`Output Device Adapter 112
`Instruction Processing Unit
`
`104
`
`
`
`Physical IPU Memory 106
`
`
`
`Virtual IPU Memory 118
`
`
`
`Execution Environment 102
`
`
`
`Device / Node 100
`
`Fig . 1
`
`Page 3 of 24
`
`
`
`U . S . Patent
`
`Mar . 20 , 2018
`
`Sheet 2 of 8
`
`US 9 , 923 , 995 B1
`
`Receive , 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
`
`Generate a TCP packet including a first idle time period header
`identify metadata for the first idle time period based on the first idle
`information
`
`Send 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
`
`Detect the first idle time period based on the first idle information
`
`202
`
`204
`
`206
`
`208
`
`Deactivate the TCP connection in response to detecting the first idle
`time period
`
`210
`
`Fig . 2
`
`Page 4 of 24
`
`
`
`U . S . Patent
`
`Mar . 20 , 2018
`
`Sheet 3 of 8
`
`US 9 , 923 , 995 B1
`
`Receive , by a second node from a first node , a first transmission
`control protocol ( TCP ) packet in a TCP connection
`
`Detect 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
`
`modifying , based on the metadata , by the second node a timeout
`attribute associated with the TCP connection
`
`302
`
`304
`
`306
`
`Fig . 3
`
`Page 5 of 24
`
`
`
`U . S . Patent
`
`Mar . 20 , 2018
`
`Sheet 4 of 8
`
`US 9 , 923 , 995 B1
`
`Connection
`State 458
`
`ITP Policy 450
`
`ITP Monitor 456
`
`452
`452
`
`HH Packet Generator
`
`Net Out - Port 454
`
`Fig . 4a
`
`Option
`Attribute
`Handler 564
`
`ITP Option
`Handler 462
`
`Net In - Port 460
`
`Fig . 4b
`
`Page 6 of 24
`
`
`
`U . S . Patent
`
`Mar . 20 , 2018
`
`Sheet 5 of 8
`
`US 9 , 923 , 995 B1
`
`Execution Environment 502
`
`App Out
`Port 524
`
`Packet
`Handler
`516
`
`Net In - Port
`560
`
`Network Application 504
`Application Protocol Layer 520
`Sockets 518
`Option
`Option
`Attribute
`Handler 564
`
`Settings
`Service
`Service
`526
`
`App In - Port
`
`522 Port
`
`Packet
`Generator
`552
`
`ITP
`Policy
`550
`
`Net Out
`Port 554
`
`Connection
`State 558
`
`ITP Monitor
`556
`
`ITP Option
`Handler 562
`TCP Layer 506
`IP Layer 514
`Link Layer 512
`NIC 508
`Physical Layer
`510
`
`Fig . 5
`
`Page 7 of 24
`
`
`
`en men www .
`
`U . S . Patent
`
`Mar . 20 , 2018
`
`Sheet 6 of 8
`
`US 9 , 923 , 995 B1
`
`Second
`Node
`604
`
`n
`
`Network
`606
`
`RSS
`
`First Node
`602
`
`Fig . 6
`
`Page 8 of 24
`
`
`
`atent
`
`NIar . 20 , 2018
`
`Sheet 7 0f8
`
`US 9 , 923 , 995 B1
`
`Second
`Node
`604
`
`- Packet ( IH )
`
`- Packetf )
`?
`?
`?
`- Packet )
`
`_ 708 _
`708
`
`DetectIHO
`
`706 . 2
`
`First Node
`602
`
`- Idlelnfo
`
`1 _ 704
`704
`GeneratePacket ( ITI )
`706 , 1
`
`706 . h
`
`710 . 1
`
`Idle TimerSeto )
`
`710 . 2
`
`712
`
`IdlePop )
`
`Deactivate
`
`Fig . 7
`
`Page 9 of 24
`
`
`
`U . S . Patent
`
`Mar . 20 , 2018
`
`Sheet 8 of 8
`
`US 9 , 923 , 995 B1
`
`804
`2
`3
`
`0
`
`1
`
`4
`
`5
`
`8
`
`9 O 0
`
`1
`
`2
`
`3
`
`4
`
`5
`
`6
`
`7
`
`8
`
`O
`
`N
`
`V w
`
`4
`
`5
`
`6
`
`7
`
`8
`
`9
`
`O
`
`1
`
`W
`
`806
`
`-
`
`B
`
`ce Port
`
`+ +
`
`I
`
`tinati
`un
`? D
`
`Port
`
`Sequence Number
`Acknowledgment Number
`
`.
`
`| Data |
`TU A | P | R | S | F |
`| Offsetl Reserved | RICISISTY | I | |
`G | K | H | T | N | N |
`
`Window
`
`-
`
`-
`
`Checksum
`
`Options
`
`Urgent Pointer
`Padding
`I
`
`data
`
`-
`
`|
`
`802
`
`812
`
`7
`
`I ce Ad
`Source Address
`
`+
`
`I
`
`—
`
`zero
`
`+
`
`+
`
`+
`
`I
`
`-
`
`Destination Address
`TCP Length
`| PTCL
`LE 1
`
`+
`
`TEL
`
`AT
`
`822
`
`-
`
`-
`
`-
`
`+
`
`-
`
`-
`
`-
`
`-
`
`-
`
`-
`
`-
`
`- + -
`
`-
`
`KIND
`
`—
`
`I ??
`
`- -
`TP D
`
`1
`
`-
`
`0
`
`810
`It 1
`KIND | Length |
`820
`824
`-
`Figures are adapted from RFC 793
`
`814
`
`+
`
`-
`
`+
`
`1
`
`+
`
`—
`
`- +
`
`—
`
`978
`
`Fig . 8
`
`Page 10 of 24
`
`
`
`US 9 , 923 , 995 B1
`
`node providing TCP keep - alive can also indirectly detect
`METHODS , SYSTEMS , AND COMPUTER
`when a network is so congested that two nodes with end
`PROGRAM PRODUCTS FOR SHARING
`points in
`a TCP connection are effectively disconnected .
`INFORMATION FOR DETECTING AN IDLE
`Proponents argue that keep - alive can keep an inactive TCP
`TCP CONNECTION
`connection open . For example , some network nodes such as
`RELATED APPLICATIONS
`firewalls are configured to close TCP connections deter
`mined to be idle or inactive in order to recover resources .
`Keep - alive can prevent this . This is good from the perspec
`This application is a continuation - in - part of , and claims
`tive of the node sending keep - alive packets , but the keep
`priority to U . S . patent application Ser . No . 14 / 667 , 642 ,
`entitled “ METHODS , SYSTEMS , AND COMPUTER 10 alive packets might cause the firewall to waste resources and
`PROGRAM PRODUCTS FOR SELECTING
`A
`possibly block or terminate TCP connections with other
`RESOURCE BASED ON A MEASURE OF A PROCESS -
`nodes .
`ING COST , ” filed on Mar . 24 , 2015 which , in turn , is a
`TCP keep - alive and the debate of its benefits and faults
`continuation - in - part of and claims priority to U . S . patent
`have been around for decades . To date no mechanism to
`application Ser . No . 13 / 477 , 402 , entitled “ METHODS , 15 allow two TCP connection endpoints to cooperate in sup
`SYSTEMS , AND COMPUTER PROGRAM PRODUCTS
`porting the keep - alive option has been proposed or imple
`FOR SHARING INFORMATION FOR DETECTING AN
`mented . The broader issue of enabling cooperation and
`IDLE TCP CONNECTION , " filed May 22 , 2012 which is a
`negotiation between nodes in a TCP connection in detecting
`continuation of and claims priority to U . S . patent application
`and managing idle , underactive , and / or dead TCP connec
`Ser . No . 12 / 714 , 454 , entitled “ METHODS , SYSTEMS , 20 tions remains unaddressed .
`AND COMPUTER PROGRAM PRODUCTS FOR SHAR -
`Accordingly , there exists a need for methods , systems ,
`ING INFORMATION FOR DETECTING AN IDLE TCP
`and computer program products for sharing information for
`detecting an idle TCP connection .
`CONNECTION , " filed Feb . 27 , 2010 .
`U . S . patent application Ser . No . 12 / 714 , 454 , entitled
`SUMMARY
`“ METHODS , SYSTEMS , AND COMPUTER PROGRAM 25
`PRODUCTS FOR SHARING INFORMATION FOR
`The following presents a simplified summary of the
`DETECTING AN IDLE TCP CONNECTION , ” filed Feb .
`27 , 2010 is incorporated herein by reference in its entirety
`disclosure in order to provide a basic understanding to the
`reader . This summary is not an extensive overview of the
`for all purposes .
`This application is related to the following commonly 30 disclosure and it does not identify key / critical elements of
`owned U . S . Patent Applications , the entire disclosure of
`the invention or delineate the scope of the invention . Its sole
`which is incorporated by reference herein in its entirety for
`purpose is to present some concepts disclosed herein in a
`all purposes : application Ser . No . 12 / 714 , 063 filed on 2010
`simplified form as a prelude to the more detailed description
`Feb . 26 , entitled “ Methods , Systems , and Program Products
`that is presented later .
`An apparatus is provided comprising : a non - transitory
`for Detecting an Idle TCP Connection ” .
`memory storing instructions , and one or more processors in
`BACKGROUND
`communication with the non - transitory memory , wherein
`the one or more processors execute the instructions for :
`Various implementations of the transmission control pro -
`receiving , by a second node from a first node , a transmission
`tocol ( TCP ) in network nodes support a number of options 40 control protocol ( TCP ) - variant packet in advance of a TCP
`that are not negotiated or even communicated between or
`variant connection being established ; detecting an idle time
`among any of the nodes . Some of these options are included
`period parameter field in the TCP - variant packet ; identifying
`in the specification of the TCP while others are not . For
`metadata in the idle time period parameter field for an idle
`example , the TCP keep - alive option is supported by a
`time period that is detectable by the first node and , during
`number of implementations of the TCP . It is not , however , 45 which , no packet is communicated in the TCP - variant con
`part of the TCP specification as described in “ Request for
`n ection to keep the TCP - variant connection active ; and
`Comments " ( RFC ) document RFC 793 edited by John
`modifying , by the second node and based on the metadata ,
`Postel , titled “ Transmission Control Protocol , DARPA Inter -
`a timeout attribute associated with the TCP - variant connec
`net Program Internet Protocol Specification ” ( September
`tion .
`1981 ) , which is incorporated here in its entirety by refer - 50
`Another apparatus is provided comprising : a non - transi
`ence . One , both , or neither node including an endpoint in a
`tory memory storing instructions , and one or more proces
`TCP connection may support a keep - alive option for the
`sors in communication with the non - transitory memory ,
`connection . Each node supports or does not support keep
`wherein the one or more processors execute the instructions
`alive for a TCP connection based on each node ' s require -
`for : receiving idle information for detecting an idle time
`ments without consideration for the other node in the TCP 55 period , during which , no packet is communicated in a
`connection .
`transmission control protocol ( TCP ) - variant connection to
`With respect to the keep - alive option , some argue that it
`keep the TCP - variant connection active ; generating a TCP
`is unnecessary and that it can waste network bandwidth .
`variant packet including an idle time period parameter field
`Some of these critics point out that a keep - alive packet can
`identifying metadata for the idle time period based on the
`bring down a TCP connection . Further , since nodes includ - 60 idle information ; and sending , from a first node to a second
`ing endpoints in
`a TCP connection do not cooperate in
`node , the TCP - variant packet in advance of the TCP - variant
`supporting the keep - alive option , the nodes may operate in
`connection being established to provide the metadata for the
`opposition to one another and / or may waste resources by
`idle time period to the second node , for use by the second
`duplicating function , according to critics of the keep - alive
`node in modifying , based on the metadata , a timeout attri
`option .
`65 bute associated with the TCP - variant connection .
`Proponents of the keep - alive option claim there is a
`Yet another apparatus is provided comprising : a non
`benefit to detecting a dead peer / partner endpoint sooner . A
`transitory memory storing a network application ; and one or
`
`35
`
`Page 11 of 24
`
`
`
`US 9 , 923 , 995 B1
`
`connection . The system further includes the idle time period
`more processors in communication with the non - transitory
`option handler component configured for detecting a first
`memory , wherein the one or more processors execute the
`idle time period header , in the first packet , identifying
`network application such that the network application is
`metadata for a first idle time period , detectable by the first
`configured to operate in accordance with a non - transmission
`control protocol ( TCP ) protocol that operates above an 5 node , during which no TCP packet including data in a first
`Internet Protocol ( IP ) layer and below a hypertext transfer
`TCP data stream sent in the TCP connection by the second
`protocol ( HTTP ) application layer , the apparatus , when
`node is received by the first node . The system still further
`operating in accordance with the non - TCP protocol , config
`includes the option attribute handler component configured
`ured to : receive , by a second node from a first node , a
`for modifying , based on the metadata , by the second node a
`non - TCP packet during a setup of a non - TCP connection ; 10 timeout attribute associated with the TCP connection
`identify metadata , that specifies a number of seconds or
`In another aspect , a method for sharing information for
`minutes , in
`an idle time period parameter field in
`the
`detecting an idle TCP connection is described that includes
`non - TCP packet , for an idle time period that is detectable by
`receiving , by a first node , first idle information for detecting
`the first node , where , as a result of a detection of the idle
`time period , the non - TCP connection is subject to deactiva - 15
`a first idle time period during which no TCP packet includ
`ing data in a first data stream sent in the TCP connection by
`tion ; and determine , based on the metadata , a timeout
`attribute associated with the non - TCP connection ; wherein
`a second node is received by the first node . The method
`the apparatus , when operating in accordance with the TCP
`further includes generating a TCP packet including a first
`protocol , is configured to perform a three - way TCP hand -
`idle time period header identifying metadata for the first idle
`shake for establishing a TCP connection that is different than 20 time period based on the first idle information . The method
`still further includes sending the TCP packet in the TCP
`the non - TCP connection .
`Still yet another apparatus is provided comprising : a
`connection to the second node to provide the metadata for
`non - transitory memory storing a network application ; and
`the first idle time period to the second node . The method also
`one or more processors in communication with the non -
`includes detecting the first idle time period based on the first
`transitory memory , wherein the one or more processors 25 idle information . The method additionally includes deacti
`execute the network application such that the network
`vating the TCP connection in response to detecting the first
`application is configured to operate in accordance with a
`idle time period .
`non - transmission control protocol ( TCP ) protocol that oper -
`Still further , a system for sharing information for detect
`ates above an Internet Protocol ( IP ) layer and below a
`ing an idle TCP connection is described . The system
`hypertext transfer protocol ( HTTP ) application layer , the 30 includes an execution environment including an instruction
`apparatus , when operating in accordance with the non - TCP
`processing unit configured to process an instruction included
`protocol , configured to : receive idle information for use in
`in at least one of an idle time period policy component , a
`detecting an idle time period that results in a non - TCP
`packet generator component , a net out - port component , an
`connection being subject to deactivation ; generate , based on
`idle time period monitor component , and a connection state
`the idle information , a non - TCP packet including an idle 35 component . The system includes the idle time period policy
`time period parameter field identifying metadata that is
`component configured for receiving , by a first node , first idle
`specified in a number of seconds or minutes , and send , from
`information for detecting a first idle time period during
`a first node to a second node and for establishing the
`which no TCP packet including data in a first data stream
`non - TCP connection , the non - TCP packet to provide the
`sent in the TCP connection by a second node is received by
`metadata to the second node , for use by the second node in 40 the first node . The system includes the packet generator
`determining a timeout attribute associated with the non - TCP
`component configured for generating a TCP packet includ
`connection ; wherein the apparatus , when operating in accor -
`ing a first idle time period header identifying metadata for
`dance with the TCP protocol , is configured to perform a
`the first idle time period based on the first idle information .
`three - way TCP handshake for establishing a TCP connection
`The system still further includes the net out - port component
`45 configured for sending the TCP packet in the TCP connec
`that is separate from the non - TCP connection .
`Other methods and systems are also described for sharing
`tion to the second node to provide the metadata for the first
`information for detecting an idle TCP connection . In one
`idle time period to the second node . The system includes the
`aspect , a method includes receiving , by a second node from
`idle time period monitor component configured for detecting
`a first node , a first transmission control protocol ( TCP )
`the first idle time period based on the first idle information .
`packet in a TCP connection . The method further includes 50 The system includes the connection state component con
`detecting a first idle time period header , in the first packet ,
`figured for deactivating the TCP connection in response to
`identifying metadata for a first idle time period , detectable
`detecting the first idle time period .
`by the first node , during which no TCP packet including data
`BRIEF DESCRIPTION OF THE DRAWINGS
`in a first TCP data stream sent in the TCP connection by the
`second node is received by the first node . The method still 55
`further includes modifying , based on the metadata , by the
`Objects and advantages of the present invention will
`second node a timeout attribute associated with the TCP
`become apparent to those skilled in the art upon reading this
`description in conjunction with the accompanying drawings ,
`connection .
`Further , a system for sharing information for detecting an
`in which like reference numerals have been used to desig
`idle TCP connection is described . The system includes an 60 nate like or analogous elements , and in which :
`execution environment including an instruction processing
`FIG . 1 is a block diagram illustrating an exemplary
`unit configured to process an instruction included in at least
`hardware device included in and / or otherwise providing an
`one of a net in - port component , an idle time period option
`execution environment in which the subject matter may be
`handler component , and an option attribute handler compo -
`implemented ;
`nent . The system includes the net in - port component con - 65
`FIG . 2 is a flow diagram illustrating a method for sharing
`figured for receiving , by a second node from a first node , a
`information for detecting an idle TCP connection according
`first transmission control protocol ( TCP ) packet in a TCP
`to an aspect of the subject matter described herein ;
`
`Page 12 of 24
`
`
`
`US 9 , 923 , 995 B1
`
`units ( GPU ) , application - specific integrated circuits ( ASIC ) ,
`FIG . 3 is a flow diagram illustrating another method for
`and / or field programmable gate arrays ( FPGA ) .
`sharing information for detecting an idle TCP connection
`IPU 104 may access machine code instructions and data
`according to another aspect of the subject matter described
`via one or more memory address spaces in addition to the
`herein ;
`FIG . 4a and FIG . 4b show a block a diagram illustrating 5 physical memory address space . A memory address space
`an arrangement of components for sharing information for
`includes addresses identifying locations in an IPU memory .
`detecting an idle TCP connection according to a further
`IPU 104 may have more than one IPU memory . Thus , IPU
`104 may have more than one memory address space . IPU
`aspect of the subject matter described herein ;
`FIG . 5 is a block diagram illustrating an arrangement of
`104 may access a location in an IPU memory by processing
`components for sharing information for detecting an idle 10 an address identifying the location . The processed address
`TCP connection according to still another aspect of the
`may be in an operand of a machine code instruction and / or
`may be identified in a register or other portion of IPU 104 .
`subject matter described herein ;
`FIG . 6 is a network diagram illustrating an exemplary
`FIG . 1 illustrates virtual IPU memory 118 spanning at
`system for sharing information for detecting an idle TCP
`least part of physical IPU memory 106 and at least part of
`connection according to an aspect of the subject matter 15 persistent secondary storage 108 . Virtual memory addresses
`in a memory address space may be mapped to physical
`described herein ;
`FIG . 7 is a message flow diagram illustrating an exem
`memory addresses identifying locations in physical IPU
`plary data and execution flow for sharing information for
`memory 106 . An address space for identifying locations in
`detecting an idle TCP connection according to an aspect of
`a virtual IPU memory is referred to as a virtual memory
`20 address space ; its addresses are referred to as virtual
`the subject matter described herein ; and
`FIG . 8 is a diagram illustrating a structure for a packet
`memory addresses ; and its IPU memory is known as a
`virtual IPU memory or virtual memory . The term
`IPU
`transmitted via a network according to an aspect of the
`memory may refer to physical IPU memory 106 and / or
`subject matter described herein .
`virtual IPU memory 118 depending on the context in which
`DETAILED DESCRIPTION
`25 the term is used .
`Various types of memory technologies may be included in
`An exemplary device included in an execution environ -
`physical IPU memory 106 . Exemplary memory technologies
`include static random access memory ( SRAM ) and / or
`ment that may be configured according to the subject matter
`is illustrated in FIG . 1 . An execution environment includes
`dynamic RAM ( DRAM ) including variants such as dual data
`an arrangement of hardware and , optionally , software that 30 rate synchronous DRAM ( DDR SDRAM ) , error correcting
`may be further configured to include an arrangement of
`code synchronous DRAM ( ECC SDRAM ) , and / or RAM
`components for performing a method of the subject matter
`BUS DRAM ( RDRAM ) . Physical IPU memory 106 may
`described herein .
`include volatile memory as illustrated in the previous sen
`An execution environment includes and / or is otherwise
`tence and / or may include nonvolatile memory such as
`provided by one or more devices . An execution environment 35 nonvolatile flash RAM ( NVRAM ) and / or read - only memory
`may include a virtual execution environment including
`( ROM ) .
`Persistent secondary storage 108 may include one or more
`software components operating in a host execution environ
`ment . Exemplary devices included in or otherwise providing
`flash memory storage devices , one or more hard disk drives ,
`suitable execution environments for configuring according
`one or more magnetic disk drives , and / or one or more optical
`to the subject matter include personal computers , notebook 40 disk drives . Persistent secondary storage may include
`computers , tablet computers , servers , hand - held and other
`removable media . The drives and their associated computer
`mobile devices , multiprocessor devices , distributed devices ,
`readable storage media provide volatile and / or nonvolatile
`consumer electronic devices , and / or network - enabled
`storage for computer readable instructions , data structures ,
`devices . Those skilled in the art will understand that the
`program components , and other data for execution environ
`components illustrated in FIG . 1 are exemplary and may 45 ment 102 .
`Execution environment 102 may include software com
`vary by particular execution environment .
`FIG . 1 illustrates hardware device 100 included in execu -
`ponents stored in persistent secondary storage 108 , in
`remote storage accessible via a network , and / or in an IPU
`tion environment 102 which includes instruction - processing
`unit ( IPU ) 104 , such as one or more microprocessors ;
`memory . FIG . 1 illustrates execution environment 102
`physical IPU memory 106 including storage locations iden - 50 including operating system 120 , one or more applications
`tified by addresses in a physical memory address space of
`122 , other program code and / or data components illustrated
`IPU 104 ; persistent secondary storage 108 , such as one or
`by other libraries and subsystems 124 .
`more hard drives and / or flash storage media ; input device
`Execution environment 102 may receive user - provided
`adapter 110 , such as key or keypad hardware , keyboard
`information via one or more input devices illustrated by
`adapter , and / or mouse adapter ; output device adapter 112 , 55 input device 128 . Input device 128 provides input informa
`such as a display or audio adapter for presenting information
`tion to other components in execution environment 102 via
`to a user ; a network interface , illustrated by network inter -
`input device adapter 110 . Execution environment 102 may
`face adapter 114 , for communicating via a network such as
`include an input device adapter for a keyboard , a touch
`a LAN and / or WAN ; and a communication mechanism that
`screen , a microphone , a joystick , a television receiver , a
`couples elements 104 - 114 , illustrated as bus 116 . Elements 60 video camera , a still camera , a document scanner , a fax , a
`104 - 114 may be operatively coupled by various means . Bus
`phone , a modem , a network adapter , and / or a pointing
`116 may comprise any type of bus architecture , including a
`device , to name a few exemplary input devices .
`memory bus , a peripheral bus , a local bus , and / or a switch -
`Input device 128 included in execution environment 102
`ing fabric .
`may be included in device 100 as FIG . 1 illustrates or may
`IPU 104 is an instruction execution machine , apparatus , 65 be external ( not shown ) to device 100 . Execution environ
`or device . Exemplary IPUs include one or more micropro -
`ment 102 may include one or more internal and / or external
`cessors , digital signal processors ( DSP