EXHIBIT D

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 1 of 26
US010375215B1 

( 12 ) United States Patent 

Morris 

( 10 ) Patent No . : US 10 , 375 , 215 B1 

( 45 ) Date of Patent : * Aug . 6 , 2019 

( 54 ) METHODS , SYSTEMS , AND COMPUTER 

PROGRAM PRODUCTS FOR SHARING 

INFORMATION FOR DETECTING AN IDLE 

TCP CONNECTION 

( 58 ) Field of Classification Search 

CPC . . . . . . . . . . . . . . HO4L 69 / 16 

See application file for complete search history . 

( 56 ) References Cited 

( 71 ) Applicant : SITTING MAN , LLC , Raleigh , NC 

( US ) U . S . PATENT DOCUMENTS 

( 72 ) Inventor : Robert Paul Morris , Raleigh , NC ( US ) 6 , 412 , 006 B2 

7 , 404 , 210 B2 

7 , 426 , 569 B2 

7 , 684 , 346 B2 

7 , 720 , 989 B2 ( 73 ) Assignee : Jenam Tech , LLC , Longview , TX ( US ) 

6 / 2002 Naudus 

7 / 2008 Lin 

9 / 2008 Dunk 

3 / 2010 Valli 

5 / 2010 Dunk 

( * ) Notice : Subject to any disclaimer , the term of this ( Continued ) 

patent is extended or adjusted under 35 

U . S . C . 154 ( b ) by 0 days . 

This patent is subject to a terminal dis 

claimer . 

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 . ( 21 ) Appl . No . : 16 / 040 , 522 ( Continued ) 

( 22 ) Filed : Jul . 19 , 2018 Primary Examiner — Moustafa M Meky ( 74 ) Attorney , Agent , or Firm — Patrick E . Caldwell , Esq . ; The Caldwell Firm , LLC 

? ?? 

Related U . S . Application Data 

( 63 ) Continuation of application No . 15 / 915 , 047 , filed on 

Mar . 7 , 2018 , now Pat . No . 10 , 075 , 564 , which is a 

continuation of application No . 157694 , 802 , filed on 

Sep . 3 , 2017 , now Pat . No . 9 , 923 , 995 , which is a 

continuation - in - part of application No . 14 / 667 , 642 , filed on Mar . 24 , 2015 , now abandoned , 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 . 

( 57 ) ABSTRACT 

A computer - implemented method is provided , comprising causing access to be provided , to a client computer , to code 

that causes the client computer to operate in accordance with 

a protocol that is separate from TCP , in order to establish a 

protocol connection with another server computer , by : 

receiving a packet , detecting an idle time period parameter 

field in the packet , identifying metadata in the idle time 

period parameter field for an idle time period , where , after 

the idle time period is detected , the second protocol con 

nection is deemed inactive , and creating or modifying , by the client computer and based on the metadata , a timeout 

attribute associated with the second protocol connection . 

( 51 ) Int . Cl . G06F 15 / 16 

H04L 29 / 06 

( 52 ) U . S . CI . 

( 2006 . 01 ) 

( 2006 . 01 ) 

CPC . . . . . . H04L 69 / 16 ( 2013 . 01 ) 39 Claims , 8 Drawing Sheets 

Receive , by a second node from a first node , a first transmission 302 

control protocol ( TCP ) packet in a TCP connection 

- 304 

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 strear 

sent in the TCP connection by the second node is received by the 

first node 

- 306 modifying , based on the metadata , by the second node a timeout 

attribute associated with the TCP connection 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 2 of 26
US 10 , 375 , 215 B1 

Page 2 

( 56 ) References Cited 

U . S . PATENT DOCUMENTS 

7 , 729 , 271 B2 

8 , 073 , 964 B2 

8 , 219 , 606 B2 

9 . 923 , 995 B1 * 

2005 / 0054347 Al 

2005 / 0063304 A1 

2005 / 0135248 A1 * 

6 / 2010 Tsuchiya et al . 12 / 2011 Dunk 

7 / 2012 Morris 

3 / 2018 Morris G06F 9 / 50 

3 / 2005 Kakani 

3 / 2005 Sillasto et al . 6 / 2005 Ahuja . . . . . . . . . . . . . . . . . . . . . . . . . HO4L 47 / 10 

370 / 235 

2 / 2006 Carter et al . 1 / 2007 Tang H04L 29 / 06 

370 / 230 

10 / 2009 Lind et al . 3 / 2010 Johnson 

9 / 2011 Morris 

The TCP / IP Guide , p . 3 , http : / / www . tcpipguide . com / free / t _ TCPConnection ManagementandProblemHandlingtheConnec - 3 . 

htm , accessed Feb . 2010 , ( c ) 2003 - 2010 . Mathis , M . , Mandave , 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 / 

2006 / 0034179 AL Information Sciences Institute , http : / / tools . ietf . org / rfc / rfc793 . txt , Sep . 2007 / 0008884 A1 * 1981 . 

2009 / 0252072 Al 

2010 / 0057844 AL 

2011 / 0213820 Al 

OTHER PUBLICATIONS 

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 , 802 dated Nov . 29 , 2017 . Notice of Allowance for U . S . Appl . No . 16 / 040 , 517 dated Mar . 26 , 2019 . 

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 ” , * cited by examiner 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 3 of 26
U . S . Patent Aug . 6 , 2019 Sheet 1 of 8 US 10 , 375 , 215 B1 

Execution Environment 102 

Device / Node 100 

Output Device 

130 Input Device 128 

- Virtual IPU IPU Memory Memory118 18 - 1 

Physical IPU 

Memory 106 

Instruction 

Processing 

Unit 104 

Output 

Device 

Adapter 112 

Input Device 

Adapter 110 

Applications 

122 

L 116 

Other Libraries and 

Subsystems 124 Persistent 

Secondary 

Storage 108 

Network 

Interface 

Adapter 

To / From 

Operating Network 

System 120 114 

Fig . 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 4 of 26
U . S . Patent Aug . 6 , 2019 Sheet 2 of 8 US 10 , 375 , 215 B1 

202 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 204 

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 206 

provide the metadata for the first idle time period to the second node 

wwwwwwand 208 

Detect the first idle time period based on the first idle information 

Deactivate the TCP connection in response to detecting the first idle 210 

time period 

Fig . 2 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 5 of 26
U . S . Patent Aug . 6 , 2019 Sheet 3 of 8 US 10 , 375 , 215 B1 

302 Receive , by a second node from a first node , a first transmission 

control protocol ( TCP ) packet in a TCP connection 

no 304 

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 

- 306 modifying , based on the metadata , by the second node a timeout 

attribute associated with the TCP connection 

Fig . 3 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 6 of 26
U . S . Patent Aug . 6 , 2019 Sheet 4 of 8 US 10 , 375 , 215 B1 

Connection 

State 458 

Option 

Attribute 

ITP Policy 450 ITP Monitor 456 Handler 564 

Packet Generator 

452 

ITP Option 

Handler 1M 462 

Net Out - Port 454 Net In - Port 460 

Fig . 4a Fig . 4b 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 7 of 26
U . S . Patent Aug . 6 , 2019 Sheet 5 of 8 US 10 , 375 , 215 B1 

Execution Environment 502 

Network Application 504 

Application Protocol Layer 520 

Sockets 518 

App In - Port Settings 

Service 

526 

App Out 

522 Port 524 Option 

Attribute 

Handler 564 

Connection 

State 558 

Packet 

Generator 

Packet 

Handler 

516 Policy 

552 550 ITP Monitor 

556 

ITP Option 

Net Out Handler 562 

Port 554 

Net In - Port 

560 TCP Layer 506 

IP Layer 514 

Link Layer 512 

NIC 508 

Physical Layer 

510 

Fig . 5 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 8 of 26
son conco . com U . S . Patent Aug . 6 , 2019 Sheet 6 of 8 US 10 , 375 , 215 B1 

Second 

Node 

604 

. . . * * 

112 . 11253 

4411 . 

Network 

606 

13 

* * * 522973 

: : : : : 

* * * PRET : 

First Node 

602 

Fig . 6 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 9 of 26
U . S . Patent Aug . 6 , 2019 Sheet 7 of 8 US 10 , 375 , 215 B1 

First Node 

602 

Second 

Node 

604 

deinfo 702 

704 

GeneratePacket ( ITI ) 

706 . 1 Packet ( IH WY ) . 

708 

DetectIHO 

- - Packet ( ) 706 . 2 

706 . n Packet ( ) 

710 . 1 

Idle TimerSeto ) 

710 . 2 

IdlePop ( ) 

712 

Deactivate 

Fig . 7 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 10 of 26
U . S . Patent Aug . 6 , 2019 Sheet 8 of 8 US 10 , 375 , 215 B1 

804 - 806 

2 

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 

1 Source Port Destination Port 

et non ut ne she non state magna at wala na ako na m?n man se malo na temat ovat mo at maut venku na af met wat met wat maak noong non sto ne nan na ang natin matemat 

Sequence Number 

Acknowledgment Number 

Window | Data | TUJA PRIS / FI 

loffsetl Reserved | RICISISIYI 

G | KH | TININ 

* - * - * - * - * - * - * - * - - * - - - * - * - * 

Checksum 

* * * * * * * * * * * * * * * * * * * * * * * * * * * * 

Options 

- - Ver - * - * - * - - * - * - * - * - * - * - 

Urgent Pointer 

* * * - - - - - - - - = - - - - - - - - - 

Padding 

* - - - - - 

data 

802 

812 m 

814 

+ 

Source Address 1 

- - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - 

Destination Address o 

- * * * * * * * * * * * * * mon after - * * * * ww ws of - * * * * * * * * * * * * o of ww ww - | zero | PTCL I TCP Length 1 

form www ww w . w mom ofte ma ww www ww ww ww ws of ww ww mm ww ww wa waogle mwm ww wo wo wo wo wo ofte 

822 810 - - - - - - - - - - - - 

KIND 1 Length 1 ITP Data 1 

824 820 826 

Figures are adapted from RFC 793 

Fig . 8 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 11 of 26
US 10 , 375 , 215 B1 

METHODS , SYSTEMS , AND COMPUTER With respect to the keep - alive option , some argue that it 

PROGRAM PRODUCTS FOR SHARING is unnecessary and that it can waste network bandwidth . INFORMATION FOR DETECTING AN IDLE Some of these critics point out that a keep - alive packet can 

TCP CONNECTION bring down a TCP connection . Further , since nodes includ 

5 ing endpoints in a TCP connection do not cooperate in 

RELATED APPLICATIONS supporting the keep - alive option , the nodes may operate in 

opposition to one another and / or may waste resources by This application is a continuation of , and claims priority duplicating function , according to critics of the keep - alive 

to U . S . patent application Ser . No . 15 / 915 , 047 entitled option . “ METHODS , SYSTEMS , AND COMPUTER PROGRAM 10 Proponents of the keep - alive option claim there is a 

PRODUCTS FOR SHARING INFORMATION FOR benefit to detecting a dead peer / partner endpoint sooner . A 

DETECTING AN IDLE TCP CONNECTION , ” filed on node providing TCP keep - alive can also indirectly detect 

Mar . 7 , 2018 which , in turn , is a continuation of , and claims when a network is so congested that two nodes with end 

priority to U . S . patent application Ser . No . 15 / 694 , 802 , now points in a TCP connection are effectively disconnected . U . S . Pat . No . 9 , 923 , 995 , entitled “ METHODS , SYSTEMS , 15 Proponents argue that keep - alive can keep an inactive TCP 

AND COMPUTER PROGRAM PRODUCTS FOR SHAR connection open . For example , some network nodes such as 

ING INFORMATION FOR DETECTING AN IDLE TCP firewalls are configured to close TCP connections deter 

CONNECTION , ” filed on Sep . 3 , 2017 which , in turn , is a mined to be idle or inactive in order to recover resources . continuation - in - part of , and claims priority to U . S . patent Keep - alive can prevent this . This is good from the perspec 

application Ser . No . 14 / 667 , 642 , entitled “ METHODS , 20 tive of the node sending keep - alive packets , but the keep 

SYSTEMS , AND COMPUTER PROGRAM PRODUCTS alive packets might cause the firewall to waste resources and 

FOR SELECTING A RESOURCE BASED ON A MEA - possibly block or terminate TCP connections with other 

SURE OF A PROCESSING COST , ” filed on Mar . 24 , 2015 nodes . which , in turn , is a continuation - in - part of and claims TCP keep - alive and the debate of its benefits and faults 

priority to U . S . patent application Ser . No . 13 / 477 , 402 , 25 have been around for decades . To date no mechanism to 

entitled “ METHODS , SYSTEMS , AND COMPUTER allow two TCP connection endpoints to cooperate in sup 

PROGRAM PRODUCTS FOR SHARING INFORMA porting the keep - alive option has been proposed or imple 

TION FOR DETECTING AN IDLE TCP CONNECTION , " mented . The broader issue of enabling cooperation and 

filed May 22 , 2012 which is a continuation of and claims negotiation between nodes in a TCP connection in detecting priority to U . S . patent application Ser . No . 12 / 714 , 454 , now 30 and managing idle , underactive , and / or dead TCP connec 

U . S . Pat . No . 8 , 219 , 606 , entitled “ METHODS , SYSTEMS , 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 

CONNECTION , ” filed Feb . 27 , 2010 . detecting an idle TCP connection . U . S . patent application Ser . No . 12 / 714 , 454 , entitled 35 

" METHODS , SYSTEMS , AND COMPUTER PROGRAM SUMMARY 

PRODUCTS FOR SHARING INFORMATION FOR 

DETECTING AN IDLE TCP CONNECTION , " filed Feb . The following presents a simplified summary of the 

27 , 2010 is incorporated herein by reference in its entirety disclosure in order to provide a basic understanding to the 

for all purposes . 40 reader . This summary is not an extensive overview of the 

This application is related to the following commonly 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 45 that is presented later . for Detecting an Idle TCP Connection " . A computer - implemented method is provided , compris ing : causing access to be provided to a server computer 

BACKGROUND including : a non - transitory memory storing a network appli 

cation , and one or more processors in communication with 

Various implementations of the transmission control pro - 50 the non - transitory memory , wherein the one or more pro 

tocol ( TCP ) in network nodes support a number of options cessors execute the network application to operate in accor 

that are not negotiated or even communicated between or dance with a first protocol including a transmission control 

among any of the nodes . Some of these options are included protocol ( TCP ) ; causing a TCP connection to be established 

in the specification of the TCP while others are not . For with a client computer , by : communicating a segment example , the TCP keep - alive option is supported by a 55 including at least one first synchronize bit , communicating 

number of implementations of the TCP . It is not , however , a first acknowledgement of the segment , and at least one 

part of the TCP specification as described in “ Request for second synchronize bit , and communicating a second 

Comments ” ( RFC ) document RFC 793 edited by John acknowledgement ; causing first data to be communicated 

Postel , titled “ Transmission Control Protocol , DARPA Inter - from the server computer to the client computer utilizing the 

net Program Internet Protocol Specification ” ( September 60 TCP connection in accordance with the TCP protocol and a 

1981 ) , which is incorporated here in its entirety by refer - hypertext transfer protocol ( HTTP ) , for being presented to a 

ence . One , both , or neither node including an endpoint in a user of the client computer , causing the server computer to 

TCP connection may support a keep - alive option for the permit second data , from the user of the client computer , to connection . Each node supports or does not support keep - be received at the server computer from the client computer 

alive for a TCP connection based on each node ' s require - 65 utilizing the TCP connection in accordance with the TCP 

ments without consideration for the other node in the TCP protocol and the hypertext transfer protocol ( HTTP ) ; and 

connection . causing access to be provided , to the client computer , to code 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 12 of 26
US 10 , 375 , 215 B1 

that causes the client computer to operate in accordance with client computer utilizing the TCP connection in accordance 

a second protocol that is separate from the TCP , in order to with the TCP protocol and the hypertext transfer protocol establish a second protocol connection with another server ( HTTP ) ; and providing access to code that causes the client 

computer , by : receiving a packet , detecting an idle time computer to operate in accordance with a second protocol period parameter field in the packet , identifying metadata in 5 that is different from the TCP and that operates above an 

the idle time period parameter field for an idle time period , Internet Protocol ( IP ) layer and below a hypertext transfer 

where , after the idle time period is detected , the second protocol ( HTTP ) application layer , in order to setup a second 

protocol connection is deemed inactive , and creating or protocol connection with another server computer , by : 

modifying , by the client computer and based on the meta - receiving , by the client computer from the another server 

data , a timeout attribute associated with the second protocol 10 computer , a packet , identifying metadata , that specifies a 

connection . number of seconds or minutes , in an idle time period Another computer - implemented method is provided com - parameter field in the packet for an idle time period during 

prising : providing access to a server computer including : a which , no packet is communicated that meets each of the 

non - transitory memory storing a network application , and following criteria : a ) communicated via the second protocol 

one or more processors in communication with the non - 15 connection , and b ) causes the second protocol connection to 

transitory memory , wherein the one or more processors be kept at least partially alive , and determining , by the client 

execute the network application to operate in accordance computer and based on the metadata , a timeout attribute 

with a first protocol including a transmission control proto - associated with the second protocol connection . col ( TCP ) ; causing a TCP connection to be established with Still yet another computer - implemented method is pro 

a client computer , by communicating a segment including at 20 vided comprising : providing access to a server computer 

least one first synchronize bit ; communicating a first including : a non - transitory memory storing instructions , and 

acknowledgement of the segment , and at least one second one or more processors in communication with the non 

synchronize bit ; and communicating a second acknowledge transitory memory , wherein the one or more processors 

ment ; causing first data to be communicated from the server execute the instructions such that a network application 

computer to the client computer utilizing the TCP connec - 25 operates in accordance with a first protocol including a 

tion in accordance with the TCP protocol and a hypertext transmission control protocol ( TCP ) that operates above an 

transfer protocol ( HTTP ) , for being presented to a user of the Internet Protocol ( IP ) layer and below a hypertext transfer 

client computer ; causing the server computer to permit protocol ( HTTP ) application layer , the server computer , second data , from the user of the client computer , to be when operating in accordance with the first protocol to set up 

received at the server computer from the client computer 30 a TCP connection with a client computer , configured to : 

utilizing the TCP connection in accordance with the TCP communicate a segment including at least one first synchro 

protocol and the hypertext transfer protocol ( HTTP ) ; and nize bit , communicate a first acknowledgement of the seg 

providing access to code that results in the client computer ment , and at least one second synchronize bit , and commu 

operating in accordance with a second protocol that is nicate a second acknowledgement ; causing first data to be 

separate from the TCP , in order to establish a second 35 communicated from the server computer to the client com 

protocol connection with another server computer , by : iden - puter utilizing the TCP connection in accordance with the 

tifying idle information for detecting an idle time period , TCP protocol and a hypertext transfer protocol ( HTTP ) , for 

after which , the second protocol connection is subject to being presented to a user of the client computer , causing the 

deactivation , generating a second protocol packet including server computer to permit second data , of the user of the 

an idle time period parameter field identifying metadata for 40 client computer , to be received at the server computer from 

the idle time period based on the idle information , and the client computer utilizing the TCP connection in accor 

sending , from the client computer to the another server dance with the TCP protocol and the hypertext transfer 

computer , the second protocol packet to provide the meta - protocol ( HTTP ) ; and providing access to code that results 

data for the idle time period to the another server computer , in the client computer operating in accordance with a second 

for use by the another server computer in creating or 45 protocol , that is different from the TCP and operates above 

modifying , based on the metadata , a timeout attribute asso - the IP layer and below the HTTP application layer , in order 

ciated with the second protocol connection . to setup a second protocol connection with another server 

Yet another computer - implemented method is provided computer , and to : receive idle information for use in detect 

comprising : providing access to a server computer includ - ing an idle time period during which no signal is commu 

ing : a non - transitory memory storing instructions , and one 50 nicated that meets each of the following criteria : a ) com 

or more processors in communication with the non - transi municated in the second protocol connection , and b ) results 

tory memory , wherein the one or more processors execute in the second protocol connection being at least partially 

the instructions such that a network application operates in kept alive , generate , based on the idle information , a second 

accordance with a first protocol including a transmission protocol packet including an idle time period parameter field 

control protocol ( TCP ) , the server computer , when operating 55 identifying metadata that is specified in a number of seconds 

in accordance with the first protocol to set up a TCP or minutes , and send , from the client computer to another 

connection with a client computer , configured to : commu - server computer and during the set up of the second protocol nicate a segment including at least one first synchronize bit connection , the second protocol packet to provide the meta 

communicate a first acknowledgement of the segment , and data to the another server computer , for use by the another 

at least one second synchronize bit , and communicate a 60 server computer in determining a timeout attribute associ 

second acknowledgement ; causing first data to be commu - ated with the second protocol connection . nicated from the server computer to the client computer Other methods and systems are also described for sharing utilizing the TCP connection in accordance with the TCP information for detecting an idle TCP connection . In one 

protocol and a hypertext transfer protocol ( HTTP ) , for being aspect , a method includes receiving , by a second node from 

presented to a user of the client computer ; causing the server 65 a first node , a first transmission control protocol ( TCP ) 

computer to permit second data , of the user of the client packet in a TCP connection . The method further includes 

computer , to be received at the server computer from the detecting a first idle time period header , in the first packet , 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 13 of 26
US 10 , 375 , 215 B1 

identifying metadata for a first idle time period , detectable BRIEF DESCRIPTION OF THE DRAWINGS 

by the first node , during which no TCP packet including data 

in a first TCP data stream sent in the TCP connection by the Objects and advantages of the present invention will 

second node is received by the first node . The method still become apparent to those skilled in the art upon reading this 

further includes modifying , based on the metadata , by the 5 description in conjunction with the accompanying drawings , second node a timeout attribute associated with the TCP in which like reference numerals have been used to desig connection . nate like or analogous elements , and in which : 

Further , a system for sharing information for detecting an FIG . 1 is a block diagram illustrating an exemplary 

idle TCP connection is described . The system includes an hardware device included in and / or otherwise providing an 

execution environment including an instruction processing 10 execution environment in which the subject matter may be 

unit configured to process an instruction included in at least implemented ; 

one of a net in - port component , an idle time period option FIG . 2 is a flow diagram illustrating a method for sharing 

handler component , and an option attribute handler compo - information for detecting an idle TCP connection according 

nent . The system includes the net in - port component con - to an aspect of the subject matter described herein ; 

figured for receiving , by a second node from a first node , a 15 FIG . 3 is a flow diagram illustrating another method for 

first transmission control protocol ( TCP ) packet in a TCP sharing information for detecting an idle TCP connection 

connection . The system further includes the idle time period according to another aspect of the subject matter described option handler component configured for detecting a first herein ; 

idle time period header , in the first packet , identifying FIG . 4a and FIG . 4b show a block a diagram illustrating 

metadata for a first idle time period , detectable by the first 20 an arrangement of components for sharing information for 

node , during which no TCP packet including data in a first detecting an idle TCP connection according to a further 

TCP data stream sent in the TCP connection by the second aspect of the subject matter described herein ; 

node is received by the first node . The system still further FIG . 5 is a block diagram illustrating an arrangement of 

includes the option attribute handler component configured components for sharing information for detecting an idle 

for modifying , based on the metadata , by the second node a 25 TCP connection according to still another aspect of the 

timeout attribute associated with the TCP connection subject matter described herein ; 

In another aspect , a method for sharing information for FIG . 6 is a network diagram illustrating an exemplary detecting an idle TCP connection is described that includes system for sharing information for detecting an idle TCP 

receiving , by a first node , first idle information for detecting connection according to an aspect of the subject matter 

a first idle time period during which no TCP packet includ - 30 described herein ; 

ing data in a first data stream sent in the TCP connection by FIG . 7 is a message flow diagram illustrating an exem 

a second node is received by the first node . The method plary data and execution flow for sharing information for 

further includes generating a TCP packet including a first detecting an idle TCP connection according to an aspect of 

idle time period header identifying metadata for the first idle the subject matter described herein ; and 

time period based on the first idle information . The method 35 FIG . 8 is a diagram illustrating a structure for a packet still further includes sending the TCP packet in the TCP transmitted via a network according to an aspect of the 

connection to the second node to provide the metadata for subject matter described herein . the first idle time period to the second node . The method also 

includes detecting the first idle time period based on the first DETAILED DESCRIPTION 

idle information . The method additionally includes deacti - 40 

vating the TCP connection in response to detecting the first An exemplary device included in an execution environ 

idle time period . ment that may be configured according to the subject matter 

Still further , a system for sharing information for detect is illustrated in FIG . 1 . An execution environment includes 

ing an idle TCP connection is described . The system an arrangement of hardware and , optionally , software that 

includes an execution environment including an instruction 45 may be further configured to include an arrangement of 

processing unit configured to process an instruction included components for performing a method of the subject matter 

in at least one of an idle time period policy component , a described herein . packet generator component , a net out - port component , an An execution environment includes and / or is otherwise 

idle time period monitor component , and a connection state provided by one or more devices . An execution environment 

component . The system includes the idle time period policy 50 may include a virtual execution environment including 

component configured for receiving , by a first node , first idle software components operating in a host execution environ 

information for detecting a first idle time period during ment . Exemplary devices included in or otherwise providing 

which no TCP packet including data in a first data stream suitable execution environments for configuring according 

sent in the TCP connection by a second node is received by to the subject matter include personal computers , notebook 

the first node . The system includes the packet generator 55 computers , tablet computers , servers , hand - held and other 

component configured for generating a TCP packet includ mobile devices , multiprocessor devices , distributed devices , ing a first idle time period header identifying metadata for consumer electronic devices , and / or network - enabled 

the first idle time period based on the first idle information . devices . Those skilled in the art will understand that the 

The system still further includes the net out - port component components illustrated in FIG . 1 are exemplary and may 

configured for sending the TCP packet in the TCP connec - 60 vary by particular execution environment . tion to the second node to provide the metadata for the first FIG . 1 illustrates hardware device 100 included in execu 

idle time period to the second node . The system includes the tion environment 102 which includes instruction - processing idle time period monitor component configured for detecting unit ( IPU ) 104 , such as one or more microprocessors ; 

the first idle time period based on the first idle information . physical IPU memory 106 including storage locations iden 

The system includes the connection state component con - 65 tified by addresses in a physical memory address space of 

figured for deactivating the TCP connection in response to IPU 104 ; persistent secondary storage 108 , such as one or 

detecting the first idle time period . more hard drives and / or flash storage media ; input device 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 14 of 26
US 10 , 375 , 215 B1 

adapter 110 , such as key or keypad hardware , keyboard Execution environment 102 may receive user - provided adapter , and / or mouse adapter , output device adapter 112 , information via one or more input devices illustrated by such as a display or audio adapter for presenting information input device 128 . Input device 128 provides input informa 

to a user ; a network interface , illustrated by network inter - tion to other components in execution environment 102 via 

face adapter 114 , for communicating via a network such as 5 input device adapter 110 . Execution environment 102 may 

a LAN and / or WAN : and a communication mechanism that include an input device adapter for a keyboard , a touch 

couples elements 104 - 114 , illustrated as bus 116 . Elements screen , a microphone , a joystick , a television receiver , a 

104 - 114 may be operatively coupled by various means . Bus video camera , a still camera , a document scanner , a fax , a phone , a modem , a network adapter , and / or a pointing 116 may comprise any type of bus architecture , including a 

memory bus , a peripheral bus , a local bus , and / or a switch 10 device , to name a few exemplary input devices . 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 , 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 ) , graphics processing 15 input devices . External input devices may be connected to 

units ( GPU ) , application - specific integrated circuits ( ASIC ) , device 100 via corresponding communication interfaces 

and / or field programmable gate arrays ( FPGA ) . such as a serial port , a parallel port , and / or a universal serial IPU 104 may access machine code instructions and data bus ( USB ) port . Input device adapter 110 receives input and 

via one or more memory address spaces in addition to the provides a representation to bus 116 to be received by IPU 

physical memory address space . A memory address space 20 104 , physical IPU memory 106 , and / or other components includes addresses identifying locations in an IPU memory . included in execution environment 102 . IPU 104 may have more than one IPU memory . Thus , IPU Output device 130 in FIG . 1 exemplifies one or more 

104 may have more than one memory address space . IPU output devices that may be included in and / or may be 

104 may access a location in an IPU memory by processing external to and operatively coupled to device 100 . For 

an address identifying the location . The processed address 25 example , output device 130 is illustrated connected to bus 

may be in an operand of a machine code instruction and / or 116 via output device adapter 112 . Output device 130 may 

may be identified in a register or other portion of IPU 104 . be a display device . Exemplary display devices include 

FIG . 1 illustrates virtual IPU memory 118 spanning at liquid crystal displays ( LCDs ) , light emitting diode ( LED ) least part of physical IPU memory 106 and at least part of displays , and projectors . Output device 130 presents output 

persistent secondary storage 108 . Virtual memory addresses 30 of execution environment 102 to one or more users . In some 

in a memory address space may be mapped to physical embodiments , an output device is a device such as a phone , memory addresses identifying locations in physical IPU a joystick , and / or a touch screen . In addition to various types 

memory 106 . An address space for identifying locations in of display devices , exemplary output devices include print 

a virtual IPU memory is referred to as a virtual memory e rs , speakers , tactile output devices such as motion produc address space ; its addresses are referred to as virtual 35 ing devices , and other output devices producing sensory 

memory addresses ; and its IPU memory is known as a information detectable by a user . virtual IPU memory or virtual memory . The term IPU A device included in or otherwise providing an execution 

memory may refer to physical IPU memory 106 and / or environment may operate in a networked environment com 

virtual IPU memory 118 depending on the context in which municating with one or more devices ( not shown ) via one or 

the term is used . 40 more network interfaces . The terms " communication inter 

Various types of memory technologies may be included in face ” and “ network interface ” are used interchangeably . physical IPU memory 106 . Exemplary memory technologies FIG . 1 illustrates network interface adapter 114 as a network 

include static random access memory ( SRAM ) and / or interface included in execution environment 102 to opera dynamic RAM ( DRAM ) including variants such as dual data tively couple device 100 to a network . The terms “ network 

rate synchronous DRAM ( DDR SDRAM ) , error correcting 45 node ” and “ node ” in this document both refer to a device 

code synchronous DRAM ( ECC SDRAM ) , and / or RAM - having a network interface operatively coupled to a network . BUS DRAM ( RDRAM ) . Physical IPU memory 106 may E xemplary network interfaces include wireless network 

include volatile memory as illustrated in the previous sen - adapters and wired network adapters . Exemplary wireless 

tence and / or may include nonvolatile memory such as networks include a BLUETOOTH network , a wireless 

nonvolatile flash RAM ( NVRAM ) and / or read - only memory 50 802 . 11 network , and / or a wireless telephony network ( e . g . , 

( ROM ) . a cellular , PCS , CDMA , and / or GSM network ) . Exemplary Persistent secondary storage 108 may include one or more wired networks include various types of LANs , wide area 

flash memory storage devices , one or more hard disk drives , networks ( WANs ) , and personal area networks ( PAN ) . 

one or more magnetic disk drives , and / or one or more optical Exemplary network adapters for wired networks include 

disk drives . Persistent secondary storage may include 55 Ethernet adapters , Token - ring adapters , FDDI adapters , removable media . The drives and their associated computer - asynchronous transfer mode ( ATM ) adapters , and modems 

readable storage media provide volatile and / or nonvolatile of various types . Exemplary networks also include intranets 

storage for computer readable instructions , data structures , and internets such as the Internet . program components , and other data for execution environ FIG . 2 is a flow diagram illustrating a first method for 

ment 102 . 60 sharing information for detecting an idle TCP connection 

Execution environment 102 may include software com - according to an exemplary aspect of the subject matter 

ponents stored in persistent secondary storage 108 , in described herein . FIG . 3 is a flow diagram illustrating a 

remote storage accessible via a network , and / or in an IPU second method for sharing information for detecting an idle 

memory . FIG . 1 illustrates execution environment 102 TCP connection according to an exemplary aspect of the 

including operating system 120 , one or more applications 65 subject matter described herein . FIG . 4a is a block diagram 

122 , other program code and / or data components illustrated illustrating a system for sharing information for detecting an 

by other libraries and subsystems 124 . idle TCP connection according to the first method in FIG . 2 . 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 15 of 26
US 10 , 375 , 215 B1 

10 

FIG . 4b is a block diagram illustrating a system for sharing execution environment 502 . For ease of illustration , both 

information for detecting an idle TCP connection according first node 602 and second node 604 are configured with 

to the second method in FIG . 3 . It is expected that many , if adaptations of the arrangement in FIG . 4a and the arrange 

not most , systems configured to perform one of the methods ment in FIG . 4b . As such , the description of components and 

illustrated in FIG . 2 and FIG . 3 will also be configured to 5 corresponding operations with respect to execution environ 

perform the other method . ment 502 in FIG . 5 is applicable to both first node 602 and 

A system for sharing information for detecting an idle second node 604 in FIG . 6 . 

TCP connection according to the method illustrated in FIG . In FIG . 5 , network interface card ( NIC ) 508 is an exem 

2 includes an execution environment , such as execution plification of a network interface illustrated in FIG . 1 by environment 102 in FIG . 1 , including an instruction pro - 10 network interface adapter 114 . NIC 508 includes a physical cessing unit , such as IPU 104 , configured to process an layer component 510 operatively coupling execution envi 

instruction included in at least one of an idle time period ronment 502 to one or more physical media for carrying policy component 450 , a packet generator component 452 , communication signals . The media may be wired , such as an 

and a net out - port component 454 , a idle time period monitor Ethernet LAN operating over CAT 6 cabling , or may be 

component 456 , and a connection state component 458 15 wireless such as an 802 . 11n LAN . Other exemplary physical 

illustrated in FIG . 4a . layer protocols and corresponding media are identified 

A system for sharing information for detecting an idle above . TCP connection performing the method illustrated in FIG . 3 NIC 508 may also include a portion of link layer com 

includes an execution environment , such as execution envi - ponent 512 . Link layer component 512 may provide for 

ronment 102 in FIG . 1 , including an instruction processing 20 communication between two nodes in a point - to - point com 

unit , such as IPU 104 , configured to process an instruction munication and / or two nodes in a local area network ( LAN ) . 

included in at least one of a net in - port component 460 , an Exemplary link layers and , their protocols have been 

idle time period option handler component 462 , an option described above including FDDI , ATM , and Ethernet . A 

attribute handler component 464 illustrated in FIG . 4b . portion of link layer component 512 is external to NIC 508 . Components illustrated in FIG . 4a may be adapted for 25 The external portion may be realized as a device driver for 

performing the method illustrated in FIG . 2 in a number of NIC 508 . execution environments . Components illustrated in FIG . 4b Link layer component 512 may receive data formatted as 

may be adapted for performing the method illustrated in one or more internet protocol ( IP ) packets from internet 

FIG . 3 in a number of execution environments . FIG . 5 is a protocol ( IP ) layer component 514 . Link layer component block diagram illustrating adaptations and / or analogs of the 30 512 packages data from IP layer component 514 according 

components of FIG . 4a and FIG . 4b in exemplary execution to the particular link layer protocol supported . Analogously , environment 502 including or otherwise provided by one or link layer component 512 interprets data , received as signals 

more nodes . The method depicted in FIG . 2 and the method transmitted by the physical media operatively coupled to 

depicted in FIG . 3 may be carried out by some or all of the physical layer component 510 , according to a particular link 

exemplary components and / or their analogs . 35 layer protocol supported . Link layer component 512 may 

The components illustrated in FIG . 4 and FIG . 5 may be strip off link layer specific data and transfer the payload of 

included in or otherwise may be combined with some or all link layer transmissions to IP layer component 514 . of the components of FIG . 1 to create a variety of arrange - IP layer component 514 illustrated in FIG . 5 is configured 

ments of components according to the subject matter to communicate with one or more remote nodes over a LAN 

described herein . 40 and / or a network of networks such as an intranet or the 

FIG . 6 illustrates first node 602 and second node 604 as Internet . IP layer component 514 may receive data formatted 

exemplary devices included in and / or otherwise adapted for as TCP packets from TCP layer component 506 . IP layer 

providing a suitable execution environment , such as execu - component 514 packages data from TCP layer component 

tion environment 502 illustrated in FIG . 5 , for an adaptation 506 into IP packets for transmission across a network . The 

of the arrangement of components in FIG . 4a and an 45 network may be and / or may include an internet . Analo 

adaptation of the arrangement of components in FIG . 46 . As gously , IP layer component 514 interprets data , received 

illustrated in FIG . 6 , first node 602 and second node 604 are from link layer component 512 as IP protocol data and 

operatively coupled to network 606 via respective network detects IP packets in the received data . IP layer component interfaces enabling first node 602 and second node 604 to 514 may strip off IP layer specific data and transfer the 

communicate . FIG . 7 is a message flow diagram illustrating 50 payload of one or more IP packets to TCP layer component 

an exemplary exchange of messages within and between 506 . first node 602 and second node 604 according to the subject In FIG . 5 , IP layer component 514 is operatively coupled 

matter described herein . to TCP layer component 506 . TCP layer component 506 is 

As stated , the various adaptations of the arrangements of configured to provide a TCP connection over network 606 

components in FIG . 4a and in FIG . 4b described herein are 55 for sending and / or receiving packets included in the TCP 

not exhaustive . connection between two nodes exemplified by first node 602 

In FIG . 5 , execution environment 502 illustrates a net - and second node 604 . work application 504 operating in a node configured to In a TCP connection including first node 602 and second 

communicate with one or more other nodes via the TCP node 604 , first node 602 may include a first TCP connection 

supported by TCP layer component 506 . For example , first 60 endpoint and second node 604 may include a second TCP 

node 602 may be included in and / or provide execution connection endpoint . The first and second TCP connection 

environment 502 . Network application 504 may be a first endpoints identify the TCP connection . The TCP connection 

application configured to communicate with an application may have other identifiers , in addition to the included 

operating in second node 604 via network 606 . Second node endpoints . 604 may be included in and / or provide another instance of 65 Components of execution environment 502 , in an aspect , execution environment 502 . The operation of both first node may interoperate with TCP layer component 506 directly . In 

602 and second node 604 are described with respect to another aspect , one or more components , such as network 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 16 of 26
US 10 , 375 , 215 B1 

11 12 

application 504 , may interoperate with TCP layer compo - a message received via a network , and / or a communication 

nent 506 indirectly . Network application 504 may exchange via a shared location in IPU memory and / or secondary 

data with TCP layer component 506 via sockets component storage . 

518 and / or an analog of sockets component 518 . Alterna Idle information may be received from a configuration tively or additionally , network application 504 may com - 5 storage location for TCP layer component 506 in an IPU 

municate with a remote node via an application protocol memory and / or in secondary storage 108 . The configured 

layer illustrated by application protocol layer component idle information may be maintained and / or otherwise man 

520 . Many application protocols currently exist and new aged by settings service component 526 configured to main 

application protocols will be developed . Exemplary appli - tain and / or manage various options or settings for TCP layer 

cation layer protocols include hypertext transfer protocol 10 component 506 and / or one or more TCP connections . ( HTTP ) , file transfer protocol ( FTP ) , and extensible mes . In an aspect , network application 504 provides idle infor 

saging and presence protocol ( XMPP ) . mation to ITP policy component 550 via settings service 

TCP layer component 506 in FIG . 5 may receive data component 526 interoperating with sockets component 518 . from any of various sources for transmitting in correspond Sockets component 518 and / or TCP layer component 506 

ing TCP connections to various corresponding identified 15 may support TCP options applicable globally for some or all 

TCP connection endpoints in one or more network nodes . TCP connections and / or may support TCP options on a per 

FIG . 5 illustrates application in - port ( app in - port ) compo connection basis . Per connection TCP options may override 

nent 522 providing an interface component for receiving global TCP options if global options are also supported . In 

data to transmit in a TCP connection . FIG . 5 illustrates TCP another aspect , idle information may be received from 

layer component 506 includes packet generator component 20 and / or otherwise received based on information via appli 552 configured to package data received by application cation protocol layer 520 , via sockets component 518 , in - port component 522 for transmitting in one or more TCP and / or directly from network application 504 . packets . The one or more TCP packets are provided to IP Application protocol layer 520 may provide idle infor 

layer component 514 via net out - port component 554 exem mation to ITP policy component 550 via settings service 

plifying an output interface component . 25 component 526 and , optionally , via sockets component 518 . Analogously , TCP layer component 506 interprets data Idle information provided by application protocol layer 520 

received from IP layer component 514 via net in - port may be based on data received from network application 

component 560 . The data is interpreted as TCP data and TCP 504 , based on a particular configuration of application 

packets are detected in the received data by net in - port protocol layer 520 , and / or received from a user and / or 

component 560 and / or packet handler component 516 . FIG . 30 administrator of one or both of network application 504 and 

5 illustrates TCP layer component 506 includes packet application protocol layer 520 . handler component 516 to strip off and / or otherwise process In an aspect , the idle information received may be based 

TCP layer specific data . Packet handler component 516 on a previous ITP header identified in a packet in the TCP 

interoperates with application out - port ( app out - port ) com connection received by first node 602 from second node 604 . ponent 524 to transfer data in the TCP packet included in a 35 The previous packet may be received by net in - port com 

TCP data stream to sockets component 518 , application ponent 560 . The previous ITP header may be detected by 

protocol layer 520 , network application 504 , and / or other ITP option handler component 562 interoperating with 

components associated with the local endpoint of the TCP packet handler component 516 . Idle information may be 

connection . Detailed information on the operation of TCP is identified and / or otherwise determined by ITP option han 

included in RFC 793 . 40 dler component 562 . ITP policy component 550 may inter 

With reference to the method illustrated in FIG . 2 , block operate with ITP option handler component 562 to receive 

202 illustrates the method includes receiving , by a first node , the idle information . first idle information for detecting a first idle time period Idle information received , determined , and / or otherwise 

during which no TCP packet including data in a first data identified may include and / or identify a duration of time for 

stream sent in the TCP connection by a second node is 45 detecting an idle time period . The duration may be specified 

received by the first node . Accordingly , a system for sharing according to various measures of time including seconds , information for detecting an idle TCP connection includes minutes , hours , and / or days . means for receiving , by a first node , first idle information for Alternatively or additionally , idle information may detecting a first idle time period during which no TCP packet include and / or identify a generator for determining a dura 

including data in a first data stream sent in the TCP con - 50 tion of time for detecting an idle time period . An exemplary 

nection by a second node is received by the first node . For generator may include a formula , an expression , a function , example , as illustrated in FIG . 4a , idle time period policy a policy , and / or other mechanism for generating and / or 

component 450 is configured for receiving , by a first node , otherwise identifying a duration of time . 

first idle information for detecting a first idle time period In an aspect , one or more algorithms for generating a 

during which no TCP packet including data in a first data 55 duration of time for detecting an idle time period may be 

stream sent in the TCP connection by a second node is associated with identifiers . The algorithm identifiers may be 

received by the first node . standardized within a group of nodes including first node 

FIG . 5 illustrates idle time period ( ITP ) policy component 602 and second node 604 . The received idle information 

550 as an adaptation of and / or analog of ITP policy com - may include and / or reference an algorithm identifier . First 

ponent 450 in FIG . 4a . One or more idle time period policy 60 node 602 and second node 604 may each maintain an 

components 550 operate in execution environment 502 . association between one or more of the algorithm identifiers 

Message 702 in FIG . 7 illustrates a communication and a duration generator such as a function and / or a class 

including and / or otherwise identifying idle information configured to perform the identified algorithm . received by ITP policy component 550 . Message 702 may duration generator may determine the duration of time 

take various forms in various aspects . Exemplary forms for 65 for detecting an idle time period based on one or more 

message 702 include a function / method invocation , a mes - attributes accessible to one or both of first node 602 and 

sage passed via a message queue , data transmitted via a pipe , second node 604 . Exemplary attributes include a measure of 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 17 of 26
US 10 , 375 , 215 B1 

13 14 

network latency , a measure of network congestion , an indi - keep - alive attributes in determining whether a keep - alive 

cation of the availability of a particular resource , a user option is active and / or in identifying its current state . specified attribute , a security attribute , an energy usage In response to identifying the idle information , ITP policy attribute , a user attribute such as role of the user , and / or a component 550 may activate , disable , and / or modify the 

measure of bandwidth supported by NIC 508 and / or a 5 state of the keep - alive option via interoperation with one or physical network medium operatively coupled to NIC 508 . more of settings service component 526 , connection state Alternatively or additionally , idle information may component 558 , and / or a keep - alive option handler . Thus , in include a parameter such as one or more of the attributes response to identifying the idle information , ITP policy identified in the previous paragraph for use in a duration component 550 may prevent and / or alter the time a keep generator for determining a duration of time for measuring 10 alive packet is sent to second node 604 from first node 602 . and / or otherwise detecting an idle time period . Alternatively or additionally , ITP policy component 550 ATCP connection may be identified by its endpoints . First 

node 602 and / or second node 604 may include an endpoint operating in first node 602 may modify an attribute associ 

of the TCP connection . Alternatively or additionally , first ated with an acknowledgment timeout configured for TCP 

node 602 and / or second node 604 may include a proxy 15 laye layer component 506 . Modifying an acknowledgment tim 

endpoint representing an endpoint in a TCP connection . eout attribute may include creating the attribute , deleting the 

Nodes , that provide a network address translation ( NAT ) attribute , and / or modifying the attribute . ITP policy compo service , are exemplary nodes including proxy endpoints . nent 550 may interoperate with settings service component 

Anode including a TCP connection endpoint is referred to 526 , connection state component 558 , and / or an acknowl 

as a host . Hosts are typically user devices and / or servers that 20 edgment option handler component ( not shown ) to detect the 

typically operate at the edge of a network . While endpoints existence and state of one or more packet acknowledgment 

of most TCP connections are not typically included in attributes . In response to identifying the idle information , network nodes for relaying , routing , and / or otherwise for - ITP policy component 550 may modify the state of the 

warding TCP packet data within a network such as routing packet acknowledgment option . Thus , in response to iden 

nodes and switching nodes . Such network nodes may 25 tifying the idle information , ITP policy component 550 may 

include one or more connection endpoints for one or more prevent and / or alter the time an acknowledgment is sent in 

respective TCP connections . It should be understood that the a packet in a TCP connection . term " host ” refers to a role played by a device in a network . Returning to FIG . 2 , block 204 illustrates the method 

First node 602 and / or second node 604 may play the role of further includes generating a TCP packet including a first 

a host in a TCP connection and / or may be proxy nodes . 30 idle time period header identifying metadata for the first idle 

A node is referred to as being in or included in a TCP time period based on the first idle information . Accordingly , connection when the node includes an endpoint of the a system for sharing information for detecting an idle TCP 

connection and / or includes a proxy for a connection end connection includes means for generating a TCP packet point , referred to as a proxy endpoint . A proxy endpoint and including a first idle time period header identifying metadata 

an endpoint in a TCP connection may be in the same node 35 for the first idle time period based on the first idle informa 

or in different nodes . tion . For example , as illustrated in FIG . 4a , packet generator In FIG . 5 , connection state component 558 may maintain component 452 is configured for generating a TCP packet 

state information for one or more TCP connection endpoints including a first idle time period header identifying metadata 

and / or proxy endpoints of corresponding TCP connections for the first idle time period based on the first idle informa 

included in an instance of an execution environment , such as 40 tion . execution environment 502 , included in and / or provided by FIG . 5 illustrates packet generator component 552 as an 

first node 602 or second node 604 . adaptation of and / or analog of packet generator component 

First node 602 and / or second node 604 may play a role of 452 in FIG . 4a . One or more packet generator components 

a proxy node for a node including a TCP connection 552 operate in execution environment 502 . endpoint . First node 602 and / or second node 604 may 45 Packet generator component 552 in FIG . 5 may receive 

include a proxy endpoint representing an endpoint in a TCP idle information and / or information based on the received 

connection . A proxy node forwards TCP packet data , sent by idle information from ITP policy component 550 . Whether 

a host including a TCP connection endpoint , to another host and when packet generator component 552 receives infor 

including a corresponding connection endpoint represented mation for including an idle time period ( ITP ) header in a 

by a proxy endpoint included in the proxy node and vice 50 TCP packet may depend on a current state of the associated 

versa . Exemplary proxy nodes in addition to including TCP connection . In FIG . 5 , ITP policy component 550 may routing and / or switching capabilities may include a bridge , interoperate with connection state component 558 to deter 

a hub , a repeater , a gateway , and a firewall . mine whether and when to provide information to packet 

In an aspect , a TCP keep - alive option , a TCP user timeout , generator component 552 for including an ITP header in a 

a retransmission timeout , an acknowledgment timeout , and / 55 TCP packet . or another timeout associated with a TCP connection may be I n an aspect , an ITP header may be included in a packet modified based on the first idle information . exchanged during setup of TCP connection . RFC 793 

For example , in FIG . 5 , ITP policy component 550 describes a " three - way handshake ” for establishing a TCP 

operating in first node 602 may modify an attribute of a TCP connection . The synchronization requires each side to send 

keep - alive option provided by one or more keep - alive com - 60 it ' s own initial sequence number and to receive a confirma 

ponents that may include settings service component 526 . tion of it in acknowledgment from the other side . Each side 

Modifying a keep - alive attribute may include creating the must also receive the other side ' s initial sequence number 

attribute , deleting the attribute , and / or modifying the attri - and send a confirming acknowledgment . bute . ITP policy component 550 may interoperate with 1 ) ATMB SYN my sequence number is X 

settings service component 526 , connection state component 65 2 ) A B ACK your sequence number is X 

558 , and / or a keep - alive option handler component ( not 3 ) A B SYN my sequence number is Y 

shown ) to detect the existence and state of one or more 4 ) A?B ACK your sequence number is Y 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 18 of 26
US 10 , 375 , 215 B1 

15 16 

Because steps 2 and 3 can be combined in a single ITP data field 826 in FIG . 8 may include and / or otherwise 

message this is called the three way ( or three message ) identify metadata for the first idle time period . For example , handshake . an ITP data field in a packet may include and / or otherwise 

Other message exchanges may be used in setting up a identify one or more of a duration of time for detecting an 

TCP connection as those skilled in the art will understand . 5 idle time period , a duration generator for determining a 

Such other exchanges are not currently supported by the duration of time for detecting an idle time period , and a 

TCP as described in RFC 793 . The specified “ three - way parameter paramet for use in a duration generator for determining a 

handshake ” and other patterns of message exchange for duration of time for measuring and detecting an idle time 

setting up a TCP connection include packets that are con period . 

sidered to be in the TCP connection for purposes of this 10 Message 704 in FIG . 7 illustrates an invocation and / or 

other access to packet generator component 552 for gener disclosure . Including an ITP header may be restricted to ating a TCP packet including an ITP header based on packets exchanged in connection setup , excluded from pack received idle information . ets exchanged during connection establishment , or allowed Returning to FIG . 2 , block 206 illustrates the method in one or more packets exchanged during connection estab 

lishments and in packets exchanged after connection setup . nection to the second node to provide the metadata for the 

In an aspect , when connection state component 558 first idle time period to the second node . Accordingly , a and / or ITP policy component 550 determine an ITP header system for sharing information for detecting an idle TCP 

should be included in a TCP packet based on received idle connection further includes means for sending the TCP 

information , packet generator component 552 may include 20 packet in the TCP connection to the second node to provide the ITP header in a next TCP packet generated in response the metadata for the first idle time period to the second node . to data received via application in - port component 522 for For example , as illustrated in FIG . 4a , the net out - port 

sending to first node 602 . In another aspect , packet generator component 454 is configured for sending the TCP packet in 

component 552 may send the ITP header in a TCP packet in the TCP connection to the second node to provide the 

the TCP connection with no data included in the TCP data 25 metadata for the first idle time period to the second node . stream sent by first node 602 to second node 604 . Such a FIG . 5 illustrates net out - port component 554 as an 

packet is referred to as an empty Packet generator compo - adaptation of and / or analog of net out - port component 454 

nent 554 may send the empty TCP packet when TCP layer in FIG . 4a . One or more net out - port components 554 

component 506 has no for data from an application in second operate in execution environment 502 . Net out - port compo 

node 604 to send in the TCP data stream to first node 602 . 30 nent 554 is illustrated operatively coupled to packet genera Packet generator component 552 may generate a packet tor component 552 . Net out - port component 554 may 

according to the TCP specifications and may include a receive TCP packet data from packet generator component header identified as an ITP header in accordance with 552 and interoperate with IP layer component 514 to send 

specifications for including TCP option headers in a TCP the TCP packet in one or more IP packets via network 606 

packet . See RFC 793 for more details . FIG . 8 illustrates a 35 to second node 604 . Message 706 . 1 in FIG . 7 illustrates a 

format or structure for a TCP packet 802 as described in TCP packet including an ITP header sent by first node 602 

RFC 793 . Each “ + ” character in FIG . 8 , indicates a bit and received by second node 604 . boundary . TCP packet 802 specifies a location and format In one aspect , an ITP header may be sent to make sending 

for including a source port 804 portion including an iden - one or more TCP keep - alive packets by a partner node in the 

tifier for an endpoint of the TCP connection for a sending 40 connection unnecessary . A receiver of a packet including an 

node and a destination port 806 including an identifier for a ITP header , such as second node 604 , may keep a TCP 

corresponding endpoint of the TCP connection in a receiving connection alive based on information in the ITP header . node . IP packet 810 illustrates a format for an IP packet In another aspect , first node 602 may set a keep - alive 

header for an IP packet including TCP packet data . Source timeout attribute based on a duration of the first idle time 

address 812 specifies a location and format in an IP header 45 period identified in the first idle information and / or in the 

for including a network address identifying a network inter - metadata provided to second node 604 . For example , first 

face of the sending node , and destination address 814 node 602 may monitor a time period during which no 

identifying a network interface for the receiving node . A non - empty packets are sent or received in the TCP connec 

network address and a port number identify a connection tion . A keep - alive option handler and / or keep - alive compo 

endpoint in a network . Two endpoints identify a TCP 50 nent ( not shown ) operating in first node 602 may set a 

connection . keep - alive timer according to the timeout attribute , with a 

FIG . 8 also illustrates a format for an exemplary ITP duration that will result in the keep - alive timer expiring 

header 820 . A KIND location is specified for including an before an idle time period can occur . In response to detecting identifier indicating that the option is an idle time period a keep - alive timeout , which may be indicated by the expi 

( ITP ) option in an ITP header . Identifiers for option headers 55 ration of the keep - alive timer , the keep - alive option handler 

are currently under the control of the Internet Assigned and / or keep - alive policy component may provide informa 

Numbers Authority ( IANA ) . Length field 824 identifies a tion to packet generator component 552 to generate a TCP 

length of an ITP header . An ITP data field 826 is specified keep - alive packet . The packet generator component 552 

for including ITP header information for detecting an idle may provide the generated packet to net out - port component time period as described herein 60 554 for sending the TCP keep - alive packet to second node 

Those skilled in the art will recognize given this disclo - 604 to determine whether the TCP connection is active 

sure that an ITP header may have other suitable formats and and / or to keep the TCP connection active . may be included in a TCP packet in structures and locations In another aspect , ITP policy component 550 operating in 

other than those specified for TCP options in RFC 793 . An first node 602 may set a timer , analogous to the keep - alive 

equivalent or analog of an ITP header may be included in a 65 timer described in the previous paragraph that expires before 

footer of a protocol packet in an extension and / or variant of an time period can occur . In response the timer expiring , ITP 

the current TCP . policy component 550 may provide idle information to 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 19 of 26
US 10 , 375 , 215 B1 

18 

packet generator component 552 to generate a TCP packet may include detecting that all received data has been 

including a second ITP header . Content of the second ITP acknowledged and / or that all sent data has been acknowl 

header may be based on the first idle information received , edged . data received from second node 604 , information received In an aspect , ITP policy component 550 may include a 

from a network application that may be from a user , and / or 5 policy with a rule indicating that an idle time period cannot 

on any information accessible to TCP layer component 506 begin while a TCP packet sent by first node 602 remains 

in execution environment 502 in first node 602 . The TCP unacknowledged by second node 604 . ITP policy compo 

packet generated by packet generator component 552 is nent 550 may prevent ITP monitor component 556 from 

initiating detection of an idle time period while unacknowl provided to IP layer component 514 via net out - port com 

ponent 554 to send to second node 604 in the TCP connec 10 edged data exists . In a further aspect , a time duration may be 

associated and / or included in the policy identifying a limit to tion . Along with sending the message , first node 602 may a period of waiting to receive acknowledgment of TCP reset and / or otherwise restart detection of the first idle time packet data sent by first node 602 . In one aspect , waiting for period . Thus , a second ITP header may be sent in a second lack of an acknowledgment for an empty packet does not TCP packet by first node 602 to second node 602 along with second node buz along with 15 delay detection of an idle time period , while in another restarting detection of the first idle time period . Alterna aspect ITP monitor component 556 will not initiate detection 

tively , first node 602 may reset and initiate detection of an while an empty packet remains unacknowledged . idle time period with a different duration than the previous In an aspect , idle information , received by a node may be 

idle time period , based on the idle information for generating included in and / or otherwise based on a previous idle time 

the second ITP header . 20 period header identified in a previous TCP packet received 

Returning to FIG . 2 , block 208 illustrates the method in the TCP connection by the node from a remote node prior 

further includes detecting the first idle time period based on to sending an ITP header based on the idle information by the first idle information . Accordingly , a system for sharing the node . For example , the first idle information received by information for detecting an idle TCP connection further ITP policy component 550 in first node 602 may be based on 

includes means for detecting the first idle time period based 25 an idle time period header included a TCP packet in the TCP 

on the first idle information . For example , as illustrated in connection sent by second node 604 and received by first 

FIG . 4a , the idle time period monitor component 456 is node 602 prior to sending the first TCP packet by first node 

configured for idle time period monitor . 602 . The exchange of ITP headers may include a negotiation 

FIG . 5 illustrates idle time period monitor component 556 between first node 602 and second node 604 . 

as an adaptation of and / or analog of idle time period monitor or 30 A duration of time may be identified based on the idle 

component 456 in FIG . 4a . One or more idle time period information received by ITP policy component in first node 

602 . A timer may be set according to the identified duration . monitor components 556 operate in execution environment Detecting the first idle time period may include and / or 502 . otherwise may be based on detecting the timer expiration . In an aspect , in response to receiving the first idle infor 35 ITP monitor component 556 may set a timer configured to mation , ITP policy component 550 may store a value rep expire in a time duration identified based on the first idle resenting a duration of time in a configuration storage information received by ITP policy component 550 . The 

location . Alternatively , or additionally , ITP policy compo - identified duration may be longer , shorter , or equal to a 

nent 550 may invoke a duration generator to determine a duration of the idle time period . ITP monitor component 556 duration of time for detecting the idle time period . The 40 may use multiple timers . ITP monitor component 556 may 

duration generator may be preconfigured for the TCP con - recalculate and / or otherwise generate a new idle duration 

nection and / or may be identified based on the idle informa - based on the idle information at one or more times during tion received . As described , the invoked generator may be detection of the first idle time period . That is , a duration of 

invoked with a parameter included in and / or otherwise an idle time period may be static and / or may be dynamic , identified based on the received idle information . 45 changing based on attribute information accessible during 

ITP policy component 550 may interoperate with ITP the detection process and / or based on one or more duration 

monitor component 556 to identify the duration for detecting generators . the idle time period . ITP monitor component 556 , in various Message 710 . 1 illustrates a call and / or other communi 

aspects , may receive information including and / or otherwise cation between ITP monitor component 556 and a timer 

identifying a duration of time , a duration generator , and / or 50 component in first node 602 to set a timer included in 

a parameter for a duration generator . ITP monitor compo detecting an idle time period . Prior to the setting the timer , nent 556 may initiate and / or restart a process for detecting first node 602 and second node 602 may be active in 

an idle time period . In an aspect , ITP monitor component exchanging TCP packets as illustrated by messages includ 

556 detects and / or otherwise identifies a beginning of a ing message 706 . 2 through message 706 . n . Those skilled in 

potential idle time period based on one or more specified 55 the art will recognize that detection of an idle time period 

events . may not include explicitly and / or directly using a timer . ITP 

In an aspect , detecting the first idle time period by ITP monitor component 556 may monitor other events as a 

monitor component 556 may include detecting a time period proxy or indirect mechanism for initiating detection and 

in the idle time period during which first node 602 has detecting an idle time period . received acknowledgment for all data sent via the TCP 60 ITP monitor component 556 may detect one or more 

connection in the TCP data stream by first node 602 to events configured to indicate that an idle time period has 

second node 604 . Further , the first idle time period may occurred . For example , expiration of a timer or multiple 

include a time period during which first node 602 has sent associated timers may be interpreted by ITP monitor com 

one or more TCP packets to second node 604 to acknowl - ponent 556 as marking an occurrence of the first idle time 

edge all data received in a TCP data stream in the TCP 65 period . Message 710 . 2 illustrates ITP monitor component connection from second node 604 to first node 602 . Detect - 556 receiving information identifying expiration of a timer 

ing the first idle time period by ITP monitor component 556 for detecting the first idle time period . 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 20 of 26
US 10 , 375 , 215 B1 

20 

In a further aspect , in response to detecting the expiration ITP option handler component 562 may identify the second 

of a timer set as described above , a TCP keep - alive packet ITP header received from second node 604 . The identified 

may be sent by first node 602 to determine whether the TCP second ITP header may be for detecting by first node 602 an 

connection is action and / or to keep the TCP connection idle time period , during which no TCP packet in the TCP 

active . When the keep - alive packet is sent , an acknowledg - 5 connection is received , by the first node 602 that includes 

ment timer may be set . If a timeout of the acknowledgment data in the first TCP data stream from second node 604 . The timer is detected indicating no TCP packet has been received first idle time period may be detected by ITP monitor acknowledging the keep - alive packet , the first idle time component 556 in first node 602 based on the second ITP period may be detected in response to and / or otherwise header and based on the received idle information . The based on the timeout of the acknowledgment timer . 10 second ITP header received in the TCP packet from second In FIG . 5 , ITP policy component 550 in first node 602 node 604 may be based on the first ITP header in the TCP may provide a duration identified based on the received idle packet sent in the TCP connection by first node 602 to information to a keep - alive monitor component ( not shown ) . The keep - alive monitor component may configure a keep second node 604 . alive timer to expire based on the identified duration . In 15 In some aspects , the first node and second node 604 may 

response to detecting expiration of the keep - alive timer , ITP continue to exchange ITP headers . Information in the 

monitor component 556 may invoke packet generator com exchanged ITP headers may be based on ITP headers 

ponent 552 to generate a TCP keep - alive packet . First node received in the TCP connection and / or on data accessible 

602 may send the TCP packet to second node 604 . The TCP locally to one or both of the nodes . In some aspects , the 

keep - alive packet may be sent to prevent detection of an idle 20 exchange may be a negotiation while in other the exchange time period by second node 604 and / or may otherwise be may simply be informational . sent to detect by first node 602 whether the TCP connection Returning to FIG . 2 , block 210 illustrates the method 

is active . further includes deactivating the TCP connection in response First node 602 may set an acknowledgment timer asso - to detecting the first idle time period . Accordingly , a system 

ciated with sending the packet . If the acknowledgment timer 25 for sharing information for detecting an idle TCP connection 

expires before a TCP packet is received from second node further includes means for deactivating the TCP connection 602 acknowledging the packet sent , ITP monitor component in response to detecting the first idle time period . For 556 may detect the idle time period in response to and / or example , as illustrated in FIG . 4a , the connection state otherwise based on expiration of the acknowledgment timer . component 458 is configured for deactivating the TCP Receiving a packet from second node 604 included in the 30 connection in response to detecting the first idle time period . TCP connection is an event that , in various aspects , may FIG . 5 illustrates connection state component 558 as an directly and / or indirectly indicate the beginning of a poten adaptation of and / or analog of connection state component tial idle time period . A potential idle time period may begin 458 in FIG . 4a . One or more connection state components at some specified point during and / or after processing a 

received TCP packet . In one aspect , an empty TCP packet Let 35 36 558 operate in execution environment 502 . may be received while a potential idle time period is being When ITP monitor component 556 in first node 602 

monitored . That is , a beginning of the potential idle time detects an idle time period , ITP monitor component 556 may 

period has been detected . In response to receiving the empty provide an indication to connection state component 558 . TCP packet , monitoring of the current potential time period The indication may indicate that the idle time period for the 

may be aborted . Further , in response to receiving the empty 40 TCP connection has been detected and / or otherwise may 

TCP packet , a beginning of a next potential idle time period instruct connection state component 558 and / or other com 

may be detected . ponents in TCP layer component 506 to deactivate the TCP 

In FIG . 5 , ITP policy component 550 and ITP monitor connection . Message 712 in FIG . 7 illustrates a communi 

component 556 may operate to reset and / or initiate detection cation to deactivate the TCP connection communicated in 

of an idle time period in response to receiving an empty TCP 45 response to detecting the idle time period . packet . First node 602 may receive an empty packet . In Deactivating the TCP connection may include closing the 

response , ITP monitor component 556 may receive an event TCP connection . A TCP connection may be closed using a 

and / or other indication to reset detection of an idle time three - way handshake packet exchange described in RFC 

period . Resetting the detecting process may be based on 793 . Deactivating the TCP connection may include sending 

whether or not a received empty TCP packet matches a 50 a TCP packet by the detecting node to reset the TCP 

specified condition . ITP option handler component 562 may connection . According to RFC 793 , first node 602 may send 

be configured to determine whether a received empty TCP a TCP packet including a reset ( RST ) bit set to “ 1 ” to 

packet matches the condition . If ITP option handler com - indicate a connection reset . Deactivating the TCP connec 

ponent 562 determines the empty packet matches the con - tion may include , alternatively or additionally , releasing a 

dition , ITP monitor component 556 may be instructed to 55 resource allocated for maintaining and / or activating the TCP 

reset and / or restart detection of the first idle time period connection . including detecting the beginning of a next potential time with respect to the method illustrated in FIG . 3 , block 302 period . illustrates the method includes receiving , by a second node 

The condition may match received TCP packets including from a first node , a first transmission control protocol ( TCP ) 

ITP headers and / or other TCP option headers . A condition 60 packet in a TCP connection . Accordingly , a system for 

may match a port number and / or other field in TCP packet . sharing information for detecting an idle TCP connection 

A condition may further be based on a network address in an includes means for receiving , by a second node from a first 

IP header including the TCP packet . node , a first transmission control protocol ( TCP ) packet in a 

In a further aspect , first node 602 may receive via network TCP connection . For example , as illustrated in FIG . 4b , the 

606 from second node 604 a TCP packet in the TCP 65 net in - port component 460 is configured for receiving , by a 

connection including an second ITP header . Message 706 . 2 second node from a first node , a first transmission control 

in FIG . 7 illustrates the TCP packet sent by second node 604 . protocol ( TCP ) packet in a TCP connection . 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 21 of 26
US 10 , 375 , 215 B1 

21 22 

FIG . 5 illustrates net in - port component 560 as an adap and / or a parameter for a duration generator . The first idle 

tation of and / or analog of net in - port component 460 in FIG . time period header may identify metadata including and / or 

4b . One or more net in - port components 560 operate in identifying for detection of the first idle time period by first 

execution environment 502 . node 602 a duration of time , a generator for determining a 

As described above , net in - port component 560 in FIG . 5 5 duration of time , and / or an input for determining a duration 

may operate in an instance of execution environment 502 of time . and / or an analog included in and / or including second node Returning to FIG . 3 , block 306 illustrates the method yet 

604 . The TCP packet , illustrated by message 706 . 1 in FIG . further includes modifying , based on the metadata , by the 

7 and described above , may be received by net in - port second node a timeout attribute associated with the TCP 

component 560 in second node 604 . The TCP packet may 10 connection . Accordingly , a system for sharing information 

include data in a second TCP data stream sent by first node for detecting an idle TCP connection includes means for 

602 to second node 604 to deliver to a user of TCP layer modifying , based on the metadata , by the second node a 

component 506 in second node 604 such as network appli - timeout attribute associated with the TCP connection . For 

cation 504 . Alternatively , the TCP packet may be an empty example , as illustrated in FIG . 4b , the option attribute 

TCP packet . The received TCP packet may be a packet 15 handler component 464 is configured for modifying , based 

included in setting up the TCP connection as described on the metadata , by the second node a timeout attribute 

above . associated with the TCP connection . Returning to FIG . 3 , block 304 illustrates the method FIG . 5 illustrates option attribute handler component 564 

further includes detecting a first idle time period header , in as an adaptation of and / or analog of option attribute handler 

the first packet , identifying metadata for a first idle time 20 component 464 in FIG . 4b . One or more option attribute 

period , detectable by the first node , during which no TCP handler components 564 operate in execution environment 

packet including data in a first TCP data stream sent in the 502 . TCP connection by the second node is received by the first In an aspect , ITP option handler component 562 may one 

node . Accordingly , a system for sharing information for or more attribute option handler components 564 to modify 

detecting an idle TCP connection includes means for detect - 25 one or more corresponding attributes of a keep - alive option , ing a first idle time period header , in the first packet , a TCP user timeout , a retransmission timeout , an acknowl 

identifying metadata for a first idle time period , detectable edgment timeout , and another timeout associated with the 

by the first node , during which no TCP packet including data TCP connection , in response to identifying the ITP header . in a first TCP data stream sent in the TCP connection by the The modifying may be based on the content of the ITP 

second node is received by the first node . For example , as 30 header . illustrated in FIG . 4b , idle time period option handler For example , ITP option handler component 562 in sec 

component 462 is configured for detecting a first idle time ond node 604 may interoperate with a keep - alive attribute 

period header , in the first packet , identifying metadata for a option handler component 564 directly and / or indirectly via 

first idle time period , detectable by the first node , during settings service component 526 , connection state component which no TCP packet including data in a first TCP data 35 558 , and / or a keep - alive policy component ( not shown ) to 

stream sent in the TCP connection by the second node is detect the existence and state of one or more keep - alive 

received by the first node . attributes in determining whether the keep - alive option is 

FIG . 5 illustrates idle time period option handler compo - active and / or the state of the keep - alive option . nent 562 as an adaptation of and / or analog of idle time I n response to identifying the idle time period header , ITP 

period option handler component 462 in FIG . 4b . One or 40 option handler component 562 may activate , disable , and / or 

more idle time period option handler components 562 oper - modify the state of the keep - alive option via interoperation 

ate in execution environment 502 . with the keep - alive attribute option handler . Thus , in 

In FIG . 5 , ITP option handler component 562 is opera - response to identifying the idle information , attribute option tively coupled to packet handler component 516 The TCP handler component 564 may prevent and / or alter the time a 

packet , including the ITP header sent by first node 602 , may 45 keep - alive packet is sent by second node 604 to first node 

be received , and identified as a TCP packet by net in - port 602 . component 560 operating in second node 604 . As illustrated Alternatively or additionally , an attribute option handler 

in FIG . 5 , net in - port component 560 and / or an analog of net component 564 may modify an attribute associated with a 

in - port component 560 may provide and / or otherwise iden - packet acknowledgment option provided by TCP layer com 

tify the received packet to packet handler component 516 . 50 ponent 506 in first node 602 . Modifying a packet acknowl 

Packet handler component 516 may detect various portions edgment attribute may include creating the attribute , delet 

of the TCP packet according to the TPC packet 802 structure ing the attribute , and / or modifying the attribute . Attribute 

as illustrated in FIG . 8 . Alternatively , packet handler com - option handler component 564 may interoperate with set 

ponent 516 may provide some or all of the packet to various tings service component 526 , connection state component 

components in TCP layer component 506 to identify por - 55 558 , and / or an acknowledgment policy component not 

tions of the packet according to the TCP specification and / or shown ) to detect the existence and state of one or more 

according to a particular implementation . packet acknowledgment attributes . In response to identify 

The ITP header sent by first node 602 may be received by ing the idle information , attribute option handler component and / or otherwise identified by ITP option handler compo - 564 may modify the state of the packet acknowledgment 

nent 562 . Message 708 in FIG . 7 exemplifies activation of 60 option . Thus , in response to identifying the idle information , ITP option handler component 562 for detecting the ITP attribute option handler component 564 may prevent and / or 

header in the TCP packet received from first node 602 by alter the time an acknowledgment is sent in a packet data 

second node 604 . from second node 604 to first node 602 in the TCP connec 

In various aspects , ITP option handler component 562 tion . operating in second node 604 may detect and / or otherwise 65 As described herein an ITP header for detecting an idle 

determine a duration of time for associated with detection of time period for a TCP connection may serve a number of 

the idle time period by first node 602 , a duration generator , purposes . A first node in a TCP connection may via an ITP 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 22 of 26
US 10 , 375 , 215 B1 

23 24 

header inform and / or otherwise identify to a second node in scope of protection sought is defined by the claims as set 

the connection one or more durations for detecting an idle forth hereinafter together with any equivalents thereof 

time period by one or both nodes . Given multiple purposes , entitled to . 

one or more types of ITP headers may be supported and / or All methods described herein may be performed in any 

an ITP header may be structured to support one or more of 5 order unless otherwise indicated herein explicitly or by 

the described services . An exchange of ITP headers may be context . The use of the terms “ a ” and “ an ” and “ the ” and 

informational and / or may be included in negotiation similar referents in the context of the foregoing description between two nodes included in a TCP connection . When and in the context of the following claims are to be construed 

used in a negotiation , an ITP header may be included in a to include the singular and the plural , unless otherwise 

negotiation protocol that has an identifiable end during a 10 indicated herein explicitly or clearly contradicted by con 

portion of the existence of a TCP connection or may be text . The foregoing description is not to be interpreted as 

included in a negotiation that may remain ongoing through indicating any non - claimed element is essential to the prac 

out the existence of a TCP connection . Those skilled in the tice of the subject matter as claimed . art will recognize the list of services in this paragraph is not I claim : 

exhaustive . 15 1 . A computer - implemented method , comprising : 

It should be understood that the various components at a server node : illustrated in the various block diagrams represent logical causing data to be sent to a client node ; and 

components that are configured to perform the functionality providing access , to the client node , to code that , in 

described herein and may be implemented in software , response to being used by the client node , causes the 

hardware , or a combination of the two . Moreover , some or 20 client node to : 

all of these logical components may be combined , some may receive , by the client node , a transmission control 

be omitted altogether , and additional components may be protocol ( TCP ) - variant packet , added while still achieving the functionality described detect an idle time period parameter field in the 

herein . Thus , the subject matter described herein may be TCP - variant packet , embodied in many different variations , and all such varia - 25 identify metadata in the idle time period parameter tions are contemplated to be within the scope of what is field for an idle time period , during which , no 

claimed . packet is communicated in a TCP - variant connec 

To facilitate an understanding of the subject matter tion to keep the TCP - variant connection active , described above , many aspects are described in terms of and 

sequences of actions that may be performed by elements of 30 determine , based on the metadata , a timeout attribute 

a computer system . For example , it will be recognized that associated with the TCP - variant connection . the various actions may be performed by specialized circuits 2 . The method of claim 1 wherein the code , to which the 

or circuitry ( e . g . , discrete logic gates interconnected to access is provided , is configured such that , in response to 

perform a specialized function ) , by program instructions being used by the client node , causes the client node to 

being executed by one or more instruction processing units , 35 operate such that one or more keep - alive packets are com 

or by a combination of both . The description herein of any municated , based on the idle time period . sequence of actions is not intended to imply that the specific 3 . The method of claim 1 wherein the code , to which the 

order described for performing that sequence must be fol - access is provided , is configured such that , in response to 

lowed . being used by the client node , causes the client node to 

Moreover , the methods described herein may be embod - 40 operate such that one or more keep - alive packets are com 

ied in executable instructions stored in a computer readable municated , based on a keep - alive period . medium for use by or in connection with an instruction 4 . The method of claim 1 wherein the code , to which the 

execution machine , system , apparatus , or device , such as a access is provided , is configured such that , in response to 

computer - based or processor - containing machine , system , being used by the client node , causes the client node to 

apparatus , or device . As used herein , a “ computer readable 45 operate such that one or more keep - alive packets are com 

medium ” may include one or more of any suitable media for m unicated , based on a keep - alive period that is , in turn , storing the executable instructions of a computer program in based on the idle time period . one or more of an electronic , magnetic , optical , electromag - 5 . The method of claim 4 wherein the code , to which the 

netic , and infrared form , such that the instruction execution access is provided , is configured such that , in response to 

machine , system , apparatus , or device may read ( or fetch ) 50 being used by the client node , causes the client node to 

the instructions from the computer readable medium and operate such that the keep - alive period is not user - configu 

execute the instructions for carrying out the described meth - rable . ods . A non - exhaustive list of conventional exemplary com - 6 . The method of claim 4 wherein the code , to which the 

puter readable media includes a portable computer diskette ; access is provided , is configured such that , in response to 

a random access memory ( RAM ) ; a read only memory 55 being used by the client node , causes the client node to 

( ROM ) ; an erasable programmable read only memory operate such that the keep - alive period is not configurable , ( EPROM or Flash memory ) ; optical storage devices , includ - while the idle time period is configurable . ing a portable compact disc ( CD ) , a portable digital video 7 . The method of claim 4 wherein the code , to which the 

disc ( DVD ) , a high definition DVD ( HD - DVDTM ) , a Blu - access is provided , is configured such that , in response to 

RayTM disc ; and the like . 60 being used by the client node , causes the client node to 

Thus , the subject matter described herein may be embod operate such that the one or more keep - alive packets are 

ied in many different forms , and all such forms are contem - empty . plated to be within the scope of what is claimed . It will be 8 . The method of claim 4 wherein the code , to which the 

understood that various details may be changed without access is provided , is configured such that , in response to 

departing from the scope of the claimed subject matter . 65 being used by the client node , causes the client node to 

Furthermore , the foregoing description is for the purpose of operate such that the keep - alive period is administered using 

illustration only , and not for the purpose of limitation , as the a keep - alive timer . 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 23 of 26
US 10 , 375 , 215 B1 

25 26 

9 . The method of claim 8 wherein the code , to which the sors in communication with the non - transitory memory 

access is provided , is configured such that , in response to for executing the network application to operate in 

being used by the client node , causes the client node to accordance with a first protocol including a transmis 

operate such that the keep - alive timer is separate from an sion control protocol ( TCP ) : 

idle timer that is used to administer the idle time period . 5 causing a TCP connection to be established with a 

10 . The method of claim 4 wherein the code , to which the client computer ; 

access is provided , is configured such that , in response to causing first data to be communicated from the server 

being used by the client node , causes the client node to computer to the client computer utilizing the TCP 

operate such that the one or more keep - alive packets are connection in accordance with the TCP protocol and 

conditionally communicated based on at least one keep - alive 10 a hypertext transfer protocol ( HTTP ) , for being pre 

attribute . sented to a user of the client computer ; 

11 . The method of claim 10 wherein the code , to which receiving second data , from the user of the client 

the access is provided , is configured such that , in response computer , utilizing the TCP connection in accor 

to being used by the client node , causes the client node to dance with the TCP protocol and the HTTP protocol ; 

operate such that the keep - alive attribute is separate from the 15 and 

timeout attribute . permitting access to code that , based on use by the 

12 . The method of claim 1 wherein the code , to which the client computer , results in the client computer oper 

access is provided , is configured such that , in response to ating in accordance with a second protocol that is 

being used by the client node , causes the client node to separate from the TCP , in order to establish a second 

operate such that a negotiation is performed between another 20 protocol connection with another server computer , server node and the client node as to the idle time period . by : 

13 . The method of claim 1 wherein the code , to which the identifying idle information for detecting an idle 

access is provided , is configured such that , in response to time period , based on which , the second protocol being used by the client node , causes the client node to connection is subject to deactivation , operate such that the TCP - variant packet is received for the 25 generating a second protocol packet including an idle 

purpose of negotiating a duration of the idle time period . time period parameter field identifying metadata 

14 . The method of claim 1 wherein the code , to which the for the idle time period based on the idle infor 

access is provided , is configured such that , in response to mation , and 

being used by the client node , causes the client node to sending , from the client computer to the another 

operate such that the TCP - variant packet is received for 30 server computer , the second protocol packet to 

informational purposes and not for negotiating a duration of provide the metadata for the idle time period to the 

the idle time period . another server computer , for use by the another 

15 . The method of claim 1 wherein the code , to which the server computer in creating or modifying , based 

access is provided , is configured such that , in response to on the metadata , a timeout attribute associated 

being used by the client node , causes the client node to 35 with the second protocol connection . determine , based on the metadata , the timeout attribute 21 . The computer - implemented method of claim 20 

associated with the TCP - variant connection , without an wherein : 

ability to negotiate , with another server node , a duration of the use of the code by the client computer results in the 

the idle time period . client computer utilizing the second protocol instead of 

16 . The method of claim 1 wherein the code , to which the 40 the TCP in order to send , from the client computer to 

access is provided , is configured such that , in response to the another server computer , the second protocol being used by the client node , causes the client node to packet , where the second protocol packet is not sent 

determine , based on the metadata , the timeout attribute based on establishing the TCP connection in accor 

associated with the TCP - variant connection , after negotiat dance with the TCP , but is sent based on establishing 

ing , with another server node , a duration of the idle time 45 the second protocol connection so as to permit the 

period . second protocol connection to be at least partially 

17 . The method of claim 1 wherein the code , to which the closed in response to being inactive based on the 

access is provided , is configured such that , in response to timeout attribute ; 

being used by the client node , causes the client node to the access to the code is permitted by permitting the client 

determine , based on the metadata , the timeout attribute 50 computer to receive the code from the server computer 

associated with the TCP - variant connection , after sending , utilizing the TCP connection and the HTTP protocol ; 

to another server node , a different TCP - variant packet with the timeout attribute is specified in a number of seconds ; 

different metadata in an idle time period parameter field the use of the code by the client computer results in the 

thereof . client computer operating such that the timeout attri 

18 . The method of claim 1 wherein the code , to which the 55 bute is used to keep the second protocol connection 

access is provided , is configured such that , in response to open in response to being inactive , and to prevent the 

being used by the client node , causes the client node to another server computer from closing the second pro 

operate such that a duration of the idle time period is tocol connection in response to being inactive ; and 

configured by an application via an analog of a socket . the use of the code by the client computer results in the 

19 . The method of claim 1 wherein the code , to which the 60 client computer operating such that the identifying the 

access is provided , is configured such that , in response to idle information is performed at a non - TCP layer other 

being used by the client node , causes the client node to than a TCP layer , where the non - TCP layer is above an 

operate such that the metadata is identified by an application Internet Protocol ( IP ) layer and below an HTTP appli via an analog of a socket . cation layer . 20 . A computer - implemented method comprising : 65 22 . The method of claim 21 wherein the code , to which 

at a server computer including a non - transitory memory the access is permitted , is configured to , based on use by the 

storing a network application , and one or more proces client computer , result in the client computer operating such 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 24 of 26
27 

US 10 , 375 , 215 B1 

28 

that one or more keep - alive packets are communicated , application layer , in order to setup a second protocol based on a keep - alive period that is , in turn , based on the idle connection with another server computer , by : 

time period . receiving , by the client computer from the another 

23 . The method of claim 22 wherein the code , to which server computer , a packet , the access is permitted , is configured to , based on use by the 5 identifying metadata , that specifies a number of client computer , result in the client computer operating such seconds or minutes , in an idle time period param that the keep - alive period is not configurable , while the idle eter field in the packet for an idle time period time period is configurable . during which , no packet is communicated that 24 . The method of claim 22 wherein the code , to which meets each of the following criteria : a ) commu the access is permitted , is configured to , based on use by the 10 nicated via the second protocol connection , and b ) client computer , result in the client computer operating such causes the second protocol connection to be kept that the keep - alive period is administered using a keep - alive at least partially alive , and timer that is separate from an idle timer that is used to 

administer the idle time period . determining , by the client computer and based on the 

25 . The method of claim 22 wherein the code , to which 15 metadata , a timeout attribute associated with the 

the access is permitted , is configured to , based on use by the second protocol connection . client computer , result in the client computer operating such 32 . The method of claim 31 wherein the code , to which 

that the one or more keep - alive packets are conditionally the access is permitted , is configured to cause the client 

communicated based on at least one keep - alive attribute . computer to operate such that : 

26 . The method of claim 25 wherein the code , to which 20 one or more keep - alive packets are communicated , based 

the access is permitted , is configured to , based on use by the on a keep - alive period that is , in turn , based on the idle 

client computer , result in the client computer operating such time period ; 

that the keep - alive attribute is separate from the timeout the keep - alive period is not configurable , while the idle 

attribute time period is configurable ; and 

27 . The method of claim 21 wherein the code , to which 25 the one or more keep - alive packets are conditionally the access is permitted , is configured to , based on use by the communicated based on at least one keep - alive attri client computer , result in the client computer operating such bute . that the second protocol packet is sent for the purpose of 33 . The method of claim 32 wherein the code , to which negotiating a duration of the idle time period . the access is permitted , is configured to cause the client 28 . The method of claim 21 wherein the code , to which 30 computer to determine , based on the metadata , the timeout the access is permitted , is configured to , based on use by the attribute associated with the second protocol connection , client computer , result in the client computer operating such without an ability to negotiate , with the another server that the second protocol packet is sent for informational 

purposes and not for negotiating a duration of the idle time computer , a duration of the idle time period . 

35 34 . The method of claim 32 wherein the code , to which 

29 . The method of claim 21 wherein the code , to which the access is permitted , is configured to cause the client 

the access is permitted , is configured to , based on use by the computer to determine , based on the metadata , the timeout 

client computer , result in the client computer operating such attribute associated with the second protocol connection , that a duration of the idle time period is configured by a after negotiating , with the another server computer , a dura 

particular application via an analog of a socket . 40 tion of the idle time period . 

30 . The method of claim 29 wherein the code , to which 35 . The method of claim 32 wherein the code , to which the access is permitted , is configured to , based on use by the the access is permitted , is configured to cause the client 

client computer , result in the client computer operating such computer to operate such that a duration of the idle time 

that one or more keep - alive packets are communicated , period is configured by an application via an analog of a 

based on a keep - alive period that is , in turn , based on the idle 45 socket . time period . 36 . The method of claim 31 wherein the code , to which 31 . A computer - implemented method comprising : the access is permitted , is configured to cause the client 

at a server computer including a non - transitory memory computer to operate such that at least one of : 

storing instructions , and one or more processors in the access to the code is permitted by sending the code 

communication with the non - transitory memory for 50 from the server computer to the client computer ; 

executing the instructions such that the server computer the access to the code is permitted by receiving the code 

operates in accordance with a first protocol including a from the another server computer ; 

transmission control protocol ( TCP ) in order to set up the communication includes only receiving ; 

a TCP connection with a client computer : the communication includes only sending ; 

causing first data to be communicated from the server 55 the communication includes receiving and sending ; 

computer to the client computer utilizing the TCP the second protocol includes a variant to the TCP ; 

connection in accordance with the TCP protocol and the second protocol includes an extension to the TCP ; 

a hypertext transfer protocol ( HTTP ) , for being pre the second protocol includes a non - TCP protocol ; 

sented to a user of the client computer ; the second protocol connection includes a first connection 

receiving , at the server computer , second data of the 60 that is set up ; 

user of the client computer , utilizing the TCP con the second protocol connection includes an initial con 

nection in accordance with the TCP protocol and the nection that is set up ; 

HTTP protocol ; and the metadata specifies a number of seconds ; 

permitting access to code that causes the client com the metadata specifies a number of minutes ; 

puter to operate in accordance with a second protocol 65 the packet is informational ; 

that is different from the TCP and that operates above the packet is received directly by the another server 

an Internet Protocol ( IP ) layer and below an HTTP computer from the client computer ; 

period . 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 25 of 26
29 

US 10 , 375 , 215 B1 

30 

the packet is received by the another server computer the code includes at least one of : a readable instruction , a 

from the client computer via at least one other inter data structure , or a program component ; 

mediate computer ; the code resides at the server computer that is different 

the timeout attribute is capable being the same as the from the another server computer , and is fetched from 

metadata ; 5 the server computer by the client computer ; or the timeout attribute is capable being different from the during the idle time period , a data - equipped second pro metadata ; tocol packet is capable of being received by the client the timeout attribute specifies a time duration ; computer in another connection separate from the sec the determining the timeout attribute includes at least one ond protocol connection . of modifying , creating , or deleting the timeout attri - 10 37 . The method of claim 31 wherein the code , to which bute ; the access is permitted , is configured to cause the client the second protocol operates directly above the IP layer ; computer to operate such that the access to the code is the second protocol operates directly below a HTTP permitted by sending the code from the server computer to application layer ; 

the code includes machine code or program code ; the client computer . 

the code includes at least one instruction ; 38 . The method of claim 31 wherein the code , to which 

the code is used in connection with a link component ; the access is permitted , is configured to cause the client 

the code includes a readable instruction ; computer to operate such that the access to the code is 

the code includes a data structure ; permitted by receiving the code at the client computer from 

the code includes a program component ; the another server computer . 

the code is a readable instruction ; 39 . The method of claim 31 wherein the access to the code 

the code is a data structure ; is permitted by the server computer allowing the code to be 

the code is a program component ; communicated to the client computer from the another 

the code is software ; server computer . 

the code includes one or more links ; 

20 

Case 6:20-cv-00453-ADA Document 1-4 Filed 06/01/20 Page 26 of 26