EXHIBIT E

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 1 of 28
US010306026B1 

( 12 ) United States Patent 

Morris 

( 10 ) Patent No . : US 10 , 306 , 026 B1 

( 45 ) Date of Patent : * May 28 , 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 ) 

( 73 ) Assignee : Jenam Tech , LLC , Longview , TX ( US ) 

6 , 412 , 006 B2 

7 , 404 , 210 B2 

7 , 426 , 569 B2 

7 , 684 , 346 B2 

7 , 720 , 989 B2 

7 , 729 , 271 B2 

6 / 2002 Naudus 

7 / 2008 Lin 

9 / 2008 Dunk 

3 / 2010 Valli 

5 / 2010 Dunk 

6 / 2010 Tsuchiya et al . 

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

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 

Office Action Summary in U . S . Appl . No . 12 / 714 , 063 dated Jun . 21 , 2012 . ( Continued ) 

Primary Examiner — Moustafa M Meky ( 74 ) Attorney , Agent , or Firm — Patrick E . Caldwell , Esq . ; The Caldwell Firm , LLC 

( 21 ) Appl . No . : 16 / 040 , 517 

( 22 ) Filed : Jul . 19 , 2018 

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 , which is a continuation - in - part of application No . 13 / 477 , 402 , filed on May 22 , 2012 , which c ontinuatif pplicationN . 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 . Ci . G06F 15 / 16 

H04L 29 / 06 

( 52 ) U . S . CI . CPC 

( 2006 . 01 ) 

( 2006 . 01 ) 

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

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

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

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 2 of 28
US 10 , 306 , 026 B1 

Page 2 

( 56 ) References Cited 

U . S . PATENT DOCUMENTS 

8 , 073 , 964 B2 

8 , 219 , 606 B2 

9 , 923 , 995 B1 * 

2005 / 0054347 A1 

2005 / 0063304 AL 

2005 / 0135248 A1 * 

12 / 2011 Dunk 

7 / 2012 Morris 

3 / 2018 Morris 

3 / 2005 Kakani 

3 / 2005 Sillasto et al . 6 / 2005 Ahuja . . . . . . . . 

G06F 9 / 50 

H04L 47 / 10 

370 / 235 

2006 / 0034179 AL 

2007 / 0008884 A1 * 

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

370 / 230 

Office Action Summary in U . S . Appl . No . 15 / 694 , 802 dated Nov . 29 , 2017 . Allman , M . , Paxson , V . , Stevens , W . , “ TCP Congestion Control ” , 

RFC 2581 , Internet Engineering Task Force , http : / / tools . ietf . org / rfc / 

rfc2581 . txt , — Apr . 1999 . Busatto , Fabio , “ TCP Keepalive Overview ” , TCP Keepalive HOWTO , Section 2 , http : / / tldp . org / HOWTO / html _ single / TCP - Keepalive 

HOWTO / # overview , accessed Jan . 2010 , May 2007 . Eggert , L . , Gont , F . , “ TCP User Timeout Option ” , RFC 5482 , Internet Engineering Task Force ( IEFT ) , http : / / tools . ietf . org / html / 

rfc5482 . txt , Mar . 2009 . Koziero , Charles M . , TCP Connection Management and Problem 

Handling , the Connection Reset Function , and TCP “ Keepalives ” , The TCP / IP Guide , p . 3 , http : / / www . tcpipguide . com / free / t _ TCPConnection ManagementandProblemHandlingtheConnec - 3 . 

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

Information Sciences Institute , http : / / tools . ietf . org / rfc / rfc793 . txt , Sep . 1981 . 

2009 / 0252072 A1 

2010 / 0057844 AL 

2011 / 0213820 AL 

10 / 2009 Lind et al . 3 / 2010 Johnson 

9 / 2011 Morris 

OTHER PUBLICATIONS 

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

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 3 of 28
U . S . Patent May 28 , 2019 Sheet 1 of 8 US 10 , 306 , 026 B1 

| Execution Environment 102 

Device / Node 100 

Output Device 

130 Input Device 

128 

Virtual IPU Memory 118 

Physical IPU 

Memory 106 

Instruction 

Processing 

Unit 104 

Output 

Device 

Adapter 112 

Input Device 

Adapter 110 

Applications 

122 

- 116 WWWWWWWWWW Other Libraries and 

Subsystems 124 Persistent 

Secondary 

Storage 108 

Network 

Interface 

Adapter 

114 

To / From 

Operating Network 

System 120 

FIO 1 

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 4 of 28
U . S . Patent May 28 , 2019 Sheet 2 of 8 US 10 , 306 , 026 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 

pe 206 Send the TCP packet in the TCP connection to the second node to 

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

208 

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

Deactivate the TCP connection in response to detecting the first idle 

time period 

210 Deactivate the TCP conn 

Fig . 2 

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 5 of 28
U . S . Patent May 28 , 2019 Sheet 3 of 8 US 10 , 306 , 026 B1 

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

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 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-5 Filed 06/01/20 Page 6 of 28
U . S . Patent May 28 , 2019 Sheet 4 of 8 US 10 , 306 , 026 B1 

Connection 

State 458 

Option 

Attribute 

ITP Policy 450 ITP Monitor 456 Handler 564 

Packet Generator 

452 

ITP Option 

Handler 462 

Net Out - Port 454 Net In - Port 460 

Fig . 4a Fig . 4b 

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 7 of 28
U . S . Patent May 28 , 2019 Sheet 5 of 8 US 10 , 306 , 026 B1 

Execution Environment 502 

Network Application 504 www w wwwwwwwwwwwwwwwwwwwwwwwww www 

Application Protocol Layer 520 

Sockets 518 

App In - Port 

522 

Settings 

Service 

526 

App Out 

Port 524 Option 

Attribute 

Handler 564 

Connection 

State 558 

Packet 

Generator 

552 

ITP 

Policy 

550 

Packet 

Handler 

516 ITP Monitor 

556 

ITP Option 

Net Out Handler 562 Net In - Port 

Port 554 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-5 Filed 06/01/20 Page 8 of 28
U . S . Patent May 28 , 2019 Sheet 6 of 8 US 10 , 306 , 026 B1 

Second 

Node 

604 

* * * * * 

Network 

606 

First Node 

602 

Fig . 6 

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 9 of 28
atent May 28 , 2019 Sheet 7 of 8 US 10 , 306 , 026 B1 

First Node 

602 

Second 

Node 

604 

w dleInfo - 702 

704 

GeneratePacket ( ITI ) 

706 . 1 Packet ( IH ) . 

708 708 DetectIHO 

- Packet ( ) 706 . 2 

706 . n are n Packet ( a 

710 . 1 

Idle TimerSeto ) 

710 . 2 

IdlePop ( ) 

712 

Deactivate 

Fig . 7 

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 10 of 28
U . S . Patent May 28 , 2019 Sheet 8 of 8 US 10 , 306 , 026 B1 

806 annoncen 

1 0 

804 

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 

en man wife ma m?n man wife mo na san maken me men man außer Raja m te me mijn man for a man man wife was nie ma nie mam mien naman na mas mijn man immer vor min man water van mijn man with more sin man nie ma na mas mage see nn man ne samo da nam nije samo na 

Source Port Destination Port 

en man nie ma non tam mihin mo nan man unfin som den man inte me na man wife me mijn man who was man man ungfer ww n?n man wife w nim nam um mom man man se me nje men are ma non man wife was no man ang mas made me me me me me me me me me me me min 

1 Sequence Number 

Acknowledgment Number 

of the moon method after som ofte me after som ofte me after one motor on the men her som ofte memoton me after man ofte me nofor oh me for m o ther one of man efter som att man of meer afar men om other more after one after one after one motor one after one motor me afin 

| Data TUJA PIRS F1 

loffsetl Reserved ( RICISIS Y II Window 

NAMAN ( G | K | H TINNI 

www 

1 Checksum Urgent Pointer 

en son me me me me me me me me me me men man na may nan men mer om mijn man enfer me nje venn mer mom min man aber se nadam se ne sme m?n man aber man en vra me me me me me me me me me me me me me me me mam nje mar sin man enfer me ne 

Options Padding 

en me me me me me me me nje vam nifer www mijn man win mo man man unfin men när man mijn we min me maken van mijn man nila som sin man min van de mon enfer von den man ang mama na man man som man mem me me me me me me me me me me me me me me me me 

data 

en men man may m?n van mijn www m?n van mijn mos nda non me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me me men mer var min man water some men man wife some medias 

802 . . . . . 

812 sovereen 

814 

Source Address 

worfen wo w mowa ww with a more w men within the some more now was often come move on now more mone w want when 

Destination Address 

prije sam nan men man som man man van mijn van man som man kan man man van een man was van sen ver weg van waar weer van van men man was man nan men en 

| zero | PTCL I TCP Length 1 

mate van ser man was man se me van en nae man man som man som var sem eiga men sen man som man som man van de ver van man man se vaan one man seda 

822 810 

man - - - - - o mar er som om - - - - w nogle sowe - - Moe ever - 

KIND Length 1 ITP Data | - ww ff - - - - - - - - - - - - + 

824 820 826 

Figures are adapted from RFC 793 

Fig . 8 

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 11 of 28
US 10 , 306 , 026 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-5 Filed 06/01/20 Page 12 of 28
US 10 , 306 , 026 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-5 Filed 06/01/20 Page 13 of 28
US 10 , 306 , 026 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-5 Filed 06/01/20 Page 14 of 28
US 10 , 306 , 026 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-5 Filed 06/01/20 Page 15 of 28
US 10 , 306 , 026 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-5 Filed 06/01/20 Page 16 of 28
US 10 , 306 , 026 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 . derment 562 pi n t 550maintr 

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-5 Filed 06/01/20 Page 17 of 28
US 10 , 306 , 026 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-5 Filed 06/01/20 Page 18 of 28
15 

US 10 , 306 , 026 B1 

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-5 Filed 06/01/20 Page 19 of 28
US 10 , 306 , 026 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-5 Filed 06/01/20 Page 20 of 28
US 10 , 306 , 026 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-5 Filed 06/01/20 Page 21 of 28
US 10 , 306 , 026 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-5 Filed 06/01/20 Page 22 of 28
US 10 , 306 , 026 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 exhaustive . 15 I claim : 

It should be understood that the various components 1 . A method , comprising : 

illustrated in the various block diagrams represent logical at a node : 

components that are configured to perform the functionality receiving , from another node , a transmission control 

described herein and may be implemented in software , protocol ( TCP ) - variant packet in advance of a TCP 

hardware , or a combination of the two . Moreover , some or 20 variant connection being established ; 

all of these logical components may be combined , some may detecting an idle time period parameter field in the 

be omitted altogether , and additional components may be TCP - variant packet ; 

added while still achieving the functionality described identifying metadata in the idle time period parameter herein . Thus , the subject matter described herein may be field for an idle time period and , during which , no 

embodied in many different variations , and all such varia - 25 packet is communicated in the TCP - variant connec 

tions are contemplated to be within the scope of what is tion to keep the TCP - variant connection active ; and 

claimed . modifying , based on the metadata , a timeout attribute 

To facilitate an understanding of the subject matter associated with the TCP - variant connection . described above , many aspects are described in terms of 2 . The method of claim 1 wherein the timeout attribute is 

sequences of actions that may be performed by elements of 30 an attribute of a keep - alive . a computer system . For example , it will be recognized that 3 . The method of claim 1 wherein at least one of : 

the various actions may be performed by specialized circuits the node includes a server , the server being configured to : 

or circuitry ( e . g . , discrete logic gates interconnected to in response to the receiving , send , to the another node , perform a specialized function ) , by program instructions another TCP - variant packet in advance of the TCP 

being executed by one or more instruction processing units , 35 variant connection being established , the another TCP 

or by a combination of both . The description herein of any variant packet including other metadata for the idle 

sequence of actions is not intended to imply that the specific time period ; or 

order described for performing that sequence must be fol the node includes a client , the client being configured such 

lowed . that the receiving is performed subsequent to sending , Moreover , the methods described herein may be embod - 40 to the another node , another TCP - variant packet in 

ied in executable instructions stored in a computer readable advance of the TCP - variant connection being estab 

medium for use by or in connection with an instruction lished including other metadata for the idle time period . execution machine , system , apparatus , or device , such as a 4 . The method of claim 3 wherein , regardless as to 

computer - based or processor - containing machine , system , whether the node is the server or the client , the metadata is 

apparatus , or device . As used herein , a “ computer readable 45 the same as the other metadata . medium ” may include one or more of any suitable media for 5 . The method of claim 3 wherein , regardless as to 

storing the executable instructions of a computer program in whether the node is the server or the client , the metadata is 

one or more of an electronic , magnetic , optical , electromag - different from the other metadata . netic , and infrared form , such that the instruction execution 6 . The method of claim 1 wherein the timeout attribute is 

machine , system , apparatus , or device may read ( or fetch ) 50 specified in at least one of a number of seconds or minutes . the instructions from the computer readable medium and 7 . The method of claim 1 wherein the timeout attribute is 

execute the instructions for carrying out the described meth - used to keep the TCP - variant connection open in response to 

ods . A non - exhaustive list of conventional exemplary com - being inactive , and to prevent one or more other nodes from 

puter readable media includes a portable computer diskette ; closing the TCP - variant connection in response to being 

a random access memory ( RAM ) ; a read only memory 55 inactive . ( ROM ) ; an erasable programmable read only memory 8 . The method of claim 1 wherein the metadata is used as 

( EPROM or Flash memory ) ; optical storage devices , includ - input of an algorithm for determining a duration of time 

ing a portable compact disc ( CD ) , a portable digital video specified by the timeout attribute . disc ( DVD ) , a high definition DVD ( HD - DVDTM ) , a Blu 9 . The method of claim 8 wherein the algorithm is 

rayTM disc ; and the like . 60 determined based on at least one particular attribute . Thus , the subject matter described herein may be embod 10 . The method of claim 1 wherein the modification of the 

ied in many different forms , and all such forms are contem - timeout attribute results from a negotiation between the 

plated to be within the scope of what is claimed . It will be another node and the node via a negotiation protocol of a 

understood that various details may be changed without TCP - variant protocol . 

departing from the scope of the claimed subject matter . 65 11 . The method of claim 1 and further comprising : 

Furthermore , the foregoing description is for the purpose of detecting the idle time period based on the timeout 

illustration only , and not for the purpose of limitation , as the attribute ; and 

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 23 of 28
US 10 , 306 , 026 B1 

25 26 

in response to detecting the idle time period , deactivating 29 . The method of claim 1 wherein the node modifies , the TCP - variant connection by releasing a resource based on the metadata , the timeout attribute associated with 

allocated for the TCP - variant connection by one of the the TCP - variant connection , in connection with negotiating , nodes without signaling another one of the nodes that with the another node , a duration of the idle time period . is related to the detection of the idle time period . 5 30 . The method of claim 1 wherein the node modifies , 12 . The method of claim 1 wherein at least one of the based on the metadata , the timeout attribute associated with 

detecting or the identifying is performed at a TCP - variant the TCP - variant connection , after sending , to the another 

layer other than a TCP layer , where the TCP - variant layer is node , a different TCP - variant packet with different metadata 

above an Internet Protocol ( IP ) layer and below a hypertext in an idle time period parameter field thereof . transfer protocol ( HTTP ) application layer . 10 31 . The method of claim 1 wherein a duration of the idle 

13 . The method of claim 1 and further comprising : time period is configured by an application via an analog of 

executing a network application that is configured to a socket . 

perform a 3 - way TCP handshake for establishing a TCP 32 . The method of claim 1 wherein the metadata is 

connection that is different than the TCP - variant con - identified by an application via an analog of a socket . nection , and wherein the network application is con - 15 33 . A method , comprising : 

figured to establish the TCP - variant connection instead at a node : 

of the TCP connection in order to permit negotiation , receiving idle information for detecting an idle time 

between the another node and the node , of the timeout period , during which , no packet is communicated in 

attribute , where the timeout attribute is not available in a transmission control protocol ( TCP ) - variant con 

response to establishing the TCP connection , but is 20 nection to keep the TCP - variant connection active ; 

available in response to establishing the TCP - variant generating a TCP - variant packet including an idle time 

connection so that the TCP - variant connection is period parameter field identifying metadata for the 

capable of being at least partially closed as a result of idle time period based on the idle information ; and 

being inactive based on the timeout attribute . sending , from the node to another node , the TCP 

14 . The method of claim 1 wherein the TCP - variant 25 variant packet in advance of the TCP - variant con 

packet and the metadata included therewith are received nection being established to provide the metadata for 

from the another node , without any prior signaling from the the idle time period to the another node , for use by 

node to the another node . the another node in modifying , based on the meta 

15 . The method of claim 1 wherein one or more keep data , a timeout attribute associated with the TCP 

alive packets are communicated , based on the idle time 30 variant connection . period . 34 . The method of claim 33 wherein modifying the 

16 . The method of claim 1 wherein one or more keep timeout attribute reduces a number of keep - alive signals that 

alive packets are communicated , based on a keep - alive are required to be communicated . period . 35 . The method of claim 33 wherein the TCP - variant 

17 . The method of claim 1 wherein one or more keep - 35 packet and the metadata included therewith are sent by the 

alive packets are communicated , based on a keep - alive node to the another node , without any prior signaling 

period that is , in turn , based on the idle time period . received by the node from the another node . 18 . The method of claim 17 wherein the keep - alive period 36 . The method of claim 33 wherein the metadata 

is not user - configurable . includes a first value and the timeout attribute is capable of 

19 . The method of claim 17 wherein the keep - alive period 40 being modified to include a second value that is different 

is not configurable , while the idle time period is configu - than the first value of the metadata . rable . 37 . The method of claim 33 wherein the timeout attribute 

20 . The method of claim 17 wherein the one or more is specified in a number of seconds . keep - alive packets are empty . 38 . The method of claim 33 wherein the modification of 

21 . The method of claim 17 wherein the keep - alive period 45 the timeout attribute results from a negotiation between the 

is administered using a keep - alive timer . another node and the node . 22 . The method of claim 21 wherein the keep - alive timer 39 . The method of claim 33 and further comprising : 

is separate from an idle timer that is used to administer the detecting the idle time period based on the idle informa 

idle time period . tion ; and 

23 . The method of claim 17 wherein the one or more 50 in response to detecting the idle time period , deactivating keep - alive packets are conditionally communicated based the TCP - variant connection . on at least one keep - alive attribute . 40 . The method of claim 33 wherein at least the gener 24 . The method of claim 23 wherein the keep - alive ating is performed at a TCP - variant layer other than a TCP 

attribute is separate from the timeout attribute . layer , where the TCP - variant layer is above an Internet 

25 . The method of claim 1 wherein a negotiation is 55 Protocol ( IP ) layer and below a hypertext transfer protocol 

performed between the node and the another node as to the ( HTTP ) application layer . idle time period . 41 . The method of claim 33 and further comprising : 

26 . The method of claim 1 wherein the TCP - variant executing a network application that is configured to 

packet is received for the purpose of negotiating a duration perform , in another scenario , a 3 - way TCP handshake 

of the idle time period . 60 for establishing a TCP connection that is different than 

27 . The method of claim 1 wherein the TCP - variant the TCP - variant connection , and wherein the network 

packet is received for informational purposes and not for application is configured to establish the TCP - variant 

negotiating a duration of the idle time period . connection instead of the TCP connection and thus 

28 . The method of claim 1 wherein the node modifies , permit a negotiation , between the another node and the 

based on the metadata , the timeout attribute associated with 65 node , of the timeout attribute , where a negotiated the TCP - variant connection , without an ability to negotiate , timeout attribute is not available in response to estab 

with the another node , a duration of the idle time period . lishing the TCP connection , but is available in response 

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 24 of 28
US 10 , 306 , 026 B1 

27 28 

to establishing the TCP - variant connection so that the 54 . The method of claim 52 and further comprising : 

TCP - variant connection is at least partially closed as a detecting the idle time period based on the timeout 

result of being inactive based on the negotiated timeout attribute ; and 

attribute . deactivating the non - TCP connection by communicating 

42 . The method of claim 33 wherein the TCP - variant 5 a particular packet between the another node and the 

packet and the metadata included therewith are sent by the node , in response to detecting the idle time period . 

node to the another node , in response to receiving , by the 55 . The method of claim 52 wherein one or more keep 

node from the another node , another TCP - variant packet alive packets are communicated , based on a keep - alive 

with other metadata . period that is , in turn , based on the idle time period . 10 56 . The method of claim 55 wherein the keep - alive period 43 . The method of claim 33 wherein one or more keep - 10 is not configurable , while the idle time period is configu alive packets are communicated , based on a keep - alive rable . period that is , in turn , based on the idle time period . 57 . The method of claim 55 wherein the one or more 44 . The method of claim 43 wherein the keep - alive period keep - alive packets are conditionally communicated based is not user configurable . 15 on at least one keep - alive attribute . 45 . The method of claim 43 wherein the keep - alive period 58 . The method of claim 55 wherein the node determines , is not configurable , while the idle time period is configu - based on the metadata , the timeout attribute associated with 

rable . the non - TCP connection , without an ability to negotiate , 46 . The method of claim 43 wherein the keep - alive period with the another node , a duration of the idle time period . is administered using a keep - alive timer that is separate from 20 59 . The method of claim 55 wherein the node determines , an idle timer that is used to administer the idle time period . based on the metadata , the timeout attribute associated with 

47 . The method of claim 43 wherein the one or more the non - TCP connection , in connection with negotiating , keep - alive packets are conditionally communicated based with the another node , a duration of the idle time period . on at least one keep - alive attribute . 60 . The method of claim 55 wherein a duration of the idle 

48 . The method of claim 47 wherein the keep - alive 25 time period is configured by an application via an analog of 

attribute is separate from the timeout attribute . a socket . 

49 . The method of claim 33 wherein the TCP - variant 61 . A method comprising : 

packet is sent for the purpose of negotiating a duration of the at a node configured to execute a network application 

idle time period . such that the network application is operates in accor 

50 . The method of claim 33 wherein the TCP - variant 30 dance with a non - transmission control protocol ( TCP ) 

protocol that operates above an Internet Protocol ( IP ) packet is sent for informational purposes and not for nego 

tiating a duration of the idle time period . layer and below a hypertext transfer protocol ( HTTP ) application layer : 51 . The method of claim 33 wherein a duration of the idle receiving idle information for use in detecting an idle time period is configured by an application via an analog of 25 time period that results in a non - TCP connection 

a socket . being subject to deactivation ; 52 . A method comprising : generating , based on the idle information , a non - TCP at a node configured to execute a network application packet including an idle time period parameter field 

such that the network application operates in accor identifying metadata that is specified in at least one dance with a non - transmission control protocol ( TCP ) 40 of a number of seconds or minutes ; and 

protocol that operates above an Internet Protocol ( IP ) sending , from the node to another node and for estab 

layer and below a hypertext transfer protocol ( HTTP ) lishing the non - TCP connection , the non - TCP packet application layer : to provide the metadata to the another node , for use 

receiving , from another node , a non - TCP packet during by the another node in determining a timeout attri 

a setup of a non - TCP connection ; 45 bute associated with the non - TCP connection ; 

identifying metadata , that specifies at least one of a wherein a three - way TCP handshake is performed for 

number of seconds or minutes , in an idle time period establishing a TCP connection that is separate from the 

parameter field in the non - TCP packet , for an idle non - TCP connection . time period , where , as a result of a detection of the 62 . The method of claim 61 wherein : 

idle time period , the non - TCP connection is subject 50 the determination of the timeout attribute results from a 

to deactivation ; and negotiation between the another node and the node ; 

determining , based on the metadata , a timeout attribute during the idle time period , no non - TCP packet including 

associated with the non - TCP connection ; data is communicated in the non - TCP connection , and 

wherein , based on operating in accordance with the TCP further comprising : 

protocol , a three - way TCP handshake is performed for 55 detecting the idle time period based on the idle infor 

establishing a TCP connection that is different than the mation ; and 

non - TCP connection . in response to detecting the idle time period , deacti 

53 . The method of claim 52 wherein : vating the non - TCP connection by at least partially 

the non - TCP packet and the idle time period parameter closing the non - TCP connection by one of the nodes 

field included therewith are operable for being received 60 without communication between the node and the 

from the another node , without any prior signaling another node that is related to the detection of the 

from the node to the another node ; idle time period . the determination of the timeout attribute results from a 63 . The method of claim 62 wherein at least one of : 

negotiation between the another node and the node ; and the communication includes only receiving ; 

the metadata includes a first value and the timeout attri - 65 the communication includes only sending ; 

bute is determined to include a second value that is the communication includes receiving and sending ; 

different than the first value of the metadata . a non - TCP protocol includes a variant to the TCP ; 

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 25 of 28
US 10 , 306 , 026 B1 

29 30 

15 . 

25 

the non - TCP packet is sent directly from the node to the based on operating in accordance with a second pro 

another node ; tocol , that is separate from the TCP , to establish a 

the non - TCP packet is sent from the node to the another second protocol connection : 

node via at least one other node ; receiving , from another node , a packet ; 

the idle time period parameter field is part of a data 5 detecting an idle time period parameter field in the 

portion in the non - TCP packet ; packet ; 

the idle time period parameter field is part of a header of identifying metadata in the idle time period param 

the non - TCP packet ; eter field for an idle time period , where , in the idle information is received based on a previous response to the idle time period being detected , the 10 header ; second protocol connection is deemed inactive ; 

the timeout attribute is capable being the same as the and 

metadata ; creating or modifying , based on the metadata , a 

the timeout attribute is capable being different from the timeout attribute associated with the second pro 

metadata ; tocol connection . the idle time period is specified in a number of seconds ; 69 . The method of claim 68 wherein creating or modify the idle time period is specified in a number of minutes ; ing the timeout attribute renders one or more keep - alive 

the m utattribute species duration packets in the second protocol connection unnecessary . the non - TCP packet is informational ; 70 . The method of claim 68 wherein at least one of : 

a TCP protocol operates directly above the IP layer ; 20 the node includes a server , the server being configured to : 

a TCP protocol operates directly below the HTTP appli based on the receiving , send , to the another node , cation layer ; another packet in advance of the second protocol the non - TCP protocol operates directly above the IP layer ; connection being established , another packet including the non - TCP protocol operates directly below the HTTP other metadata for the idle time period ; or application layer ; the node includes a client , the client being configured such the determination of the timeout attribute includes at least that the receiving is performed subsequent to sending , one of modifying , creating , or deleting the timeout to the another node , another packet in advance of the attribute ; second protocol connection being established including the network application provides the idle information to a other metadata for the idle time period . ITP policy component via a settings service component 30 71 . The method of claim 70 wherein the metadata is the interoperating with a sockets component ; same as the other metadata . during the idle time period , a non - TCP packet including 72 . The method of claim 70 wherein the metadata is data is received by the node where the non - TCP packet different from the other metadata . including data is sent by the another node ; during the idle time period , a non - TCP packet including 35 73 . The method of claim 70 wherein the metadata is based 

data is received by the another node where the non on the other metadata . TCP packet including data is sent by the node ; or 74 . The method of claim 68 wherein the timeout attribute 

during the idle time period , a non - TCP packet including is specified in at least one of a number of seconds or minutes . data is received by the node where the non - TCP packet 75 . The method of claim 68 wherein the metadata is used 

including data is sent in the TCP connection . 40 as input of an algorithm for determining a duration of time 

64 . The method of claim 61 wherein : associated with the timeout attribute . one or more keep - alive packets are communicated , based 76 . The method of claim 75 wherein the algorithm is 

on a keep - alive period that is , in turn , based on the idle determined , in response to the identification of the metadata 

time period ; and based on at least one particular attribute not related to 

the keep - alive period is not configurable , while the idle 45 the metadata . time period is configurable ; and 77 . The method of claim 68 wherein the creation or the 

the one or more keep - alive packets are conditionally modification of the timeout attribute results from a negotia communicated based on at least one keep - alive attri tion between the another node and the node via a negotiation bute . protocol specific to the second protocol . 65 . The method of claim 64 and further comprising : 50 78 . The method of claim 68 and further comprising : 

configuring the node to cause the another node to determine , detecting the idle time period based on the timeout 

based on the metadata , the timeout attribute associated with attribute ; and 

the non - TCP connection , without an ability to negotiate , deactivating the second protocol connection in response with the node , a duration of the idle time period . to detecting the idle time period . 66 . The method of claim 64 and further comprising : 55 79 . The method of claim 68 wherein the second protocol 

configuring the node to cause the another node to determine , is utilized instead of the TCP in order to permit negotiation , based on the metadata , the timeout attribute associated with between the another node and the node , of the timeout 

the non - TCP connection , in connection with negotiating , attribute , where a negotiated timeout attribute is not avail 

with the node , a duration of the idle time period . able based on operating in accordance with the TCP , but is 

67 . The method of claim 64 wherein a duration of the idle 60 available based on establishing the second protocol connec time period is configured by an application via an analog of tion so as to permit the second protocol connection to be at 

a socket . least partially closed based on the negotiated timeout attri 

68 . A method comprising : bute in response to the second protocol connection being 

at a node configured with a network application that is inactive . configured to operate in accordance with a first protocol 65 80 . The method of claim 68 wherein the timeout attribute 

including a transmission control protocol ( TCP ) to is used to determine whether to at least partially close the 

establish a TCP connection : second protocol connection when inactive . 

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 26 of 28
US 10 , 306 , 026 B1 

31 32 

81 . The method of claim 68 wherein the packet and the 92 . A method comprising : 

metadata included therewith are received from the another at a node with a network application that operates in 

node , without requiring any prior signaling from the node to accordance with a first protocol including a transmis 

the another node . sion control protocol ( TCP ) that operates above an 

82 . A method comprising : Internet Protocol ( IP ) layer and below a hypertext 

at a node including a network application configured to transfer protocol ( HTTP ) application layer : 

operate in accordance with a first protocol including a based on operating in accordance with a second pro 

transmission control protocol ( TCP ) to establish a TCP tocol that is different from the TCP , to set up a second 

connection : protocol connection , where the second protocol 

based on operating in accordance with a second pro operates above the IP layer and below the HTTP 

tocol , that is separate from the TCP , to establish a application layer : 

receiving , from another node , a packet ; second protocol connection : identifying metadata , that specifies at least one of a receiving idle information for detecting an idle time number of seconds or minutes , in an idle time period , in connection with which , the second 15 period parameter field in the packet for an idle protocol connection is subject to deactivation ; time period and , during which , no packet is com generating a second protocol packet including an idle municated that meets each of the following crite time period parameter field identifying metadata ria : a ) communicated via the second protocol for the idle time period based on the idle infor connection , and b ) causes the second protocol mation ; and 20 connection to be kept at least partially alive ; and 

sending , from the node to another node , the second determining , based on the metadata , a timeout attri 

protocol packet to provide the metadata for the bute associated with the second protocol connec 

idle time period to the another node , for use by the tion . another node in creating or modifying , based on 93 . The method of claim 92 wherein : 

the metadata , a timeout attribute associated with 25 nothing is communicated that meets each of the criteria , the second protocol connection . during the idle time period ; 

83 . The method of claim 82 wherein the timeout attribute the determination of the timeout attribute results from a 

is an attribute of the idle time period . negotiation between the another node and the node ; and 

84 . The method of claim 82 wherein the second protocol the metadata includes a first value and the timeout attri 

packet and the metadata included therewith are sent by the 30 bute is determined to include a second value that is 

different than the first value of the metadata . node to the another node , without any prior signaling 94 . The method of claim 92 and further comprising : between the node and the another node . detecting the idle time period based on the timeout 85 . The method of claim 82 wherein the metadata attribute ; and includes a first value and the timeout attribute is capable of 25 35 deactivating the second protocol connection by commu being created or modified to include a second value that is nicating a particular packet between the another node different than the first value of the metadata . and the node , in response to detecting the idle time 

86 . The method of claim 82 wherein the timeout attribute period . is at least one of a number of seconds or minutes . 95 . The method of claim 94 wherein at least one of : 

87 . The method of claim 82 wherein the creation or the 40 the communication includes only receiving ; 

modification of the timeout attribute results from a negotia the communication includes only sending ; 

tion between the another node and the node . the communication includes receiving and sending ; 

88 . The method of claim 82 and further comprising : the particular packet is communicated between the 

detecting the idle time period ; and another node and the node , by being communicated 

deactivating the second protocol connection by commu - 45 from the another node to the node ; 

nicating a particular packet between the another node the particular packet is communicated between the 

and the node , in response to detecting the idle time another node and the node , by being communicated 

period . from the node to the another node ; 

89 . The method of claim 82 wherein the second protocol the second protocol includes a variant to the TCP ; 

is utilized instead of the TCP in order to permit negotiation , 50 the second protocol includes an extension to the TCP ; 

between the another node and the node , of the timeout the second protocol includes a non - TCP protocol ; 

attribute , where the negotiation of the timeout attribute is not the second protocol connection includes a first connection 

available based on operating in accordance with the TCP , but that is set up ; 

is available in response to establishing the second protocol the second protocol connection includes an initial con 

connection so as to permit the second protocol connection to 55 nection that is set up ; 

be at least partially closed in response to being inactive the metadata specifies a number of seconds ; 

based on the timeout attribute . the metadata specifies a number of minutes ; 

90 . The method of claim 82 wherein the timeout attribute the packet is informational ; 

serves to keep the second protocol connection open in the packet is received directly by the node from the 

response to being inactive , and to prevent one or more other 60 another node ; 

nodes from closing the second protocol connection in the packet is received by the node from the another node 

response to being inactive . via at least one other intermediate node ; 

91 . The method of claim 82 wherein the second protocol the timeout attribute is capable being the same as the 

packet and the metadata included therewith are sent by the metadata ; 

node to the another node , in response to receiving , by the 65 the timeout attribute is capable being different from the 

node from the another node , another second protocol packet metadata ; 

with other metadata . the timeout attribute specifies a time duration ; 

Case 6:20-cv-00453-ADA Document 1-5 Filed 06/01/20 Page 27 of 28
33 

US 10 , 306 , 026 B1 

34 

the determining the timeout attribute includes at least one cated that meets each of the following criteria : a ) of modifying , creating , or deleting the timeout attri communicated in the second protocol connection , bute ; and b ) results in the second protocol connection 

the TCP operates directly above the IP layer ; being at least partially kept alive ; 

the TCP operates directly below the HTTP application 5 generating , based on the idle information , a second 

layer ; protocol packet including an idle time period 

the second protocol operates directly above the IP layer ; parameter field identifying metadata that is speci 

the second protocol operates directly below the HTTP fied in at least one of a number of seconds or 

application layer ; minutes ; and 

during the idle time period , a data - equipped second pro - 10 sending , from the node to another node and during 

tocol packet is capable of being received by the node in the set up of the second protocol connection , the 

another connection separate from the second protocol second protocol packet to provide the metadata to 

connection ; or the another node , for use by the another node in 

during the idle time period , a data - equipped second pro determining a timeout attribute associated with the 

tocol packet is capable of being received by the another 13 second protocol connection . 97 . The method of claim 96 wherein : node in another connection separate from the second the determination of the timeout attribute results from a protocol connection . 96 . A method comprising : negotiation between the another node and the node , and 

at a node including a network application that operates in further comprising : 

accordance with a first protocol including a transmis - 20 detecting the idle time period based on the idle infor 

sion control protocol ( TCP ) that operates above an mation ; and 

Internet Protocol ( IP ) layer and below a hypertext releasing a resource allocated for the second protocol 

transfer protocol ( HTTP ) application layer to set up a connection by one of the nodes without signaling 

TCP connection : another one of the nodes in connection with the 

based on the network application operating in accor - 25 detection of the idle time period . dance with a second protocol , that is different from 98 . The method of claim 96 , wherein , based on the 

the TCP , to set up a second protocol connection , network application operating in accordance with the second 

where the second protocol operates above the IP protocol to set up the second protocol connection , the second 

layer and below the HTTP application layer : protocol operates exclusively above the IP layer and below 

receiving idle information for use in detecting an idle le 30 the HTTP application layer . time period during which no signal is communi 

25 

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