EXHIBIT C

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 1 of 25
| HAI LUI A UNHA US010075565B1 OUTLET ON T O WORK WITH 

( 12 ) United States Patent 

Morris 

( 10 ) Patent No . : US 10 , 075 , 565 B1 

( 45 ) Date of Patent : " Sep . 11 , 2018 

( 54 ) METHODS , SYSTEMS , AND COMPUTER OTHER PUBLICATIONS 

PROGRAM PRODUCTS FOR SHARING 

INFORMATION FOR DETECTING AN IDLE 

TCP CONNECTION 

Allman , M . , Paxson , V . , Stevens , W . , “ TCP Congestion Control ” , 

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

rfc2581 . txt , - Apr . 1999 . 

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

( US ) 

( 72 ) Inventor : Robert Paul Morris , Raleigh , NC ( US ) Primary Examiner — Moustafa M Meky ( 74 ) Attorney , Agent , or Firm — Patrick E . Caldwell , ( 73 ) Assignee : Sitting Man , LLC , Raleigh , NC ( US ) Esq . , The Caldwell Firm , LLC 

( * ) Notice : 

( 57 ) ABSTRACT 

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 . 

( 21 ) Appl . No . : 15 / 915 , 052 

( 22 ) Filed : Mar . 7 , 2018 

Related U . S . Application Data 

( 63 ) Continuation of application No . 15 / 694 , 803 , filed on 

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

( Continued ) 

( 51 ) Int . Cl . G06F 15 / 16 ( 2006 . 01 ) H04L 29 / 06 ( 2006 . 01 ) 

( 52 ) U . S . CI . 

CPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . H04L 69 / 16 ( 2013 . 01 ) ( 58 ) Field of Classification Search 

CPC . . . . . . . . . . . . . . . H04L 69 / 16 

See application file for complete search history . 

An apparatus is provided comprising : a server computer including : a non - transitory memory storing a network appli 

cation ; and one or more processors in communication with 

the non - transitory memory , wherein the one or more pro 

cessors execute the network application to operate in accor 

dance with a first protocol including a transmission control 

protocol ( TCP ) , the apparatus , when operating in accordance 

with the first protocol to establish a TCP connection with a 

client computer , configured to : communicate a segment 

including at least one first synchronize bit ; communicate a 

first acknowledgement of the segment , and at least one 

second synchronize bit ; and communicate a second 

acknowledgement ; said server computer , further configured 

to communicate , to the client computer , code that , when 

used by the client computer , causes the client computer to 

operate in accordance with a second protocol that is separate 

from the TCP , in order to establish a second protocol connection with another server computer , by : receiving a 

packet ; detecting an idle time period parameter field in the 

packet ; identifying metadata in the idle time period param 

eter field for an idle time period , where , after the idle time 

period is detected , the second protocol connection 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 . 

( 56 ) References Cited 

U . S . PATENT DOCUMENTS 

6 , 412 , 006 B2 

7 , 404 , 210 B2 

6 / 2002 Naudus 

7 / 2008 Lin 

( Continued ) 30 Claims , 8 Drawing Sheets 

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

control protocol ( TCP ) packet in a TCP connection 

304 

Detect a first idle time period header in the first packet , identifying 

metadata for a first idle time period , detectable by the first node , during which no TCP packet including data in a first TCP data 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 na na na na n naman 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 2 of 25
US 10 , 075 , 565 B1 

Page 2 

Related U . S . Application Data OTHER PUBLICATIONS 

continuation - in - part of application No . 14 / 667 , 642 , filed on Mar . 24 , 2015 , which is a continuation - in - part 

of application No . 13 / 477 , 402 , filed on May 22 , 2012 , now abandoned , which is a continuation of applica 

tion No . 12 / 714 , 454 , filed on Feb . 27 , 2010 , now Pat . No . 8 , 219 , 606 . 

( 56 ) References Cited 

U . S . PATENT DOCUMENTS 

7 , 426 , 569 B2 9 / 2008 Dunk 

7 , 684 , 346 B23 / 2010 Valli 

7 , 720 , 989 B2 5 / 2010 Dunk 

7 , 729 , 271 B2 6 / 2010 Tsuchiya et al . 

7 , 808 , 941 B2 * 10 / 2010 Ramos H04L 47 / 14 

370 / 310 

7 , 876 , 678 B2 * 1 / 2011 Ong . . . . . . . . . . . H04L 47 / 10 

370 / 230 . 1 

8 , 073 , 964 B2 12 / 2011 Dunk 

8 , 077 , 737 B2 * 12 / 2011 Ji H04L 45 / 10 

370 / 465 

8 , 219 , 606 B2 7 / 2012 Morris 

9 , 060 , 310 B2 * 6 / 2015 Ji . . . . . H04L 45 / 10 

9 , 923 , 996 B1 * 3 / 2018 Morris . . . . . . . . . . . . . . . . . . . . HO4L 69 / 16 

2005 / 0054347 AL 3 / 2005 Kakani 

2005 / 0063304 AL 3 / 2005 Sillasto et al . 2006 / 0034179 A 2 / 2006 Carter et al . 2008 / 0084826 A1 * 4 / 2008 Ong . . . . . . . . . . . . HO4L 47 / 10 

370 / 237 

2008 / 0095124 A1 * 4 / 2008 Ramos . . . . H04L 47 / 14 

370 / 336 

2009 / 0252072 Al 10 / 2009 Lind et al . 2010 / 0057844 A1 3 / 2010 Johnson 

2010 / 0074273 A1 * 3 / 2010 Ji H04L 45 / 10 

370 / 465 2011 / 0213820 AL 9 / 2011 Morris 

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

tion Sciences Institute , http : / / tools . ietf . org / rfc / rfc793 . txt , Sep . 1981 . Office Action Summary in U . S . Appl . No . 12 / 714 , 063 dated Jun . 21 , 2012 . Office Action Summary in U . S . Appl . No . 12 / 714 , 063 dated Mar . 4 , 

2013 . Office Action Summary in U . S . Appl . No . 12 / 714 , 063 dated Sep . 27 , 2013 . Office Action Summary in U . S . Appl . No . 12 / 714 , 454 dated Feb . 23 , 2012 . 

Office Action Summary in U . S . Appl . No . 13 / 477 , 402 dated Sep . 24 , 2014 . Office Action Summary in U . S . Appl . No . 15 / 694 , 802 dated Nov . 29 , 2017 

* cited by examiner 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 3 of 25
U . S . Patent Sep . 11 , 2018 Sheet 1 of 8 US 10 , 075 , 565 B1 

Execution Environment 102 

Device / Node 100 Output Device Input Device 

130 128 

Virtual IPU Memory 118 

Physical IPU 

Memory 106 

Instruction 

Processing 

Unit 104 

Output 

Device 

Adapter 112 

Input Device 

Adapter 110 

Applications 

122 

- 116 

Other Libraries and 

Subsystems 124 Persistent 

Secondary 

Storage 108 

To / From 

Network 

Interface 

Adapter 

114 

Operating Network 

System 120 

- - - - - - 

Fig . 1 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 4 of 25
atent Sep . 11 , 2018 Sheet 2 of 8 US 10 , 075 , 565 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 

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 

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

time period 

Fig . 2 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 5 of 25
atent Sep . 11 , 2018 Sheet 3 of 8 US 10 , 075 , 565 B1 

302 Receive , by a second node from a first node , a first transmission never control protocol ( TCP ) packet met 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-3 Filed 06/01/20 Page 6 of 25
U . S . Patent Sep . 11 , 2018 Sheet 4 of 8 | US 10 . 075 , 565 B1 

Connection 

State 458 

Option 

Attribute 

TP 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-3 Filed 06/01/20 Page 7 of 25
atent Sep . 11 , 2018 Sheet 5 of 8 US 10 , 075 , 565 B1 

Execution Environment 502 

Network Application 504 

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 ITP 

Generator 

552 

Packet 

Policy Handler 

550 516 ITP Monitor 

556 

wwwwwwwwwwwwwwwwwwwwwwwwwwwww 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-3 Filed 06/01/20 Page 8 of 25
se - - . . atent Sep . 11 , 2018 Sheet 6 of 8 US 10 , 075 , 565 B1 

Second 

Node 

604 . . . . . . . . 

Network 

606 

First Node 

602 

Fig . 6 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 9 of 25
atent Sep . 11 , 2018 Sheet 7 of 8 US 10 , 075 , 565 Bl 

First Node 

602 

Second 

Node 

604 

- idleinfo 702 

704 

GeneratePacket ( ITI ) 

706 . 1 - Packet ( IH ) 

708 

DetectlH 

- Packet ( ) 706 . 2 · · · 

706 . 1 - Packet ( ) it ith710 . 1 

Idle TimerSeto ) 

710 . 2 

diePop ( ) 

712 

Deactivate 

Fig . 7 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 10 of 25
U . S . Patent atent Sep . 11 , 2018 Sheet 8 of 8 US 10 , 075 , 565 B1 

804 806 0 

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

2 

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

- Source Port Destination Port hot 

- Sequence Number + 

- Acknowledgment Number phone 

- 

- 

| Data 1 IU | A | P | R | S | FI 

Offset1 Reserved ( RICIS | SY | I | G | K | H | T | NINI 

Window - 

- 

I Checksum Urgent Pointer 

Options I Padding | ?

- 

- data 

802 

+ - - + - - + - - - - - - - - - - - - - - - - + - - - - - + - + - - 812 www onp rce Add 0 

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + IR - 814 

Destination Address 1 men +- 

E | zero | PTCL I TCP Length 1 

822 810 

1 to I + IH w 

A — 11 O H 

omen 

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

824 820 826 826 

Figures are adapted from RFC 793 

Fig . 8 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 11 of 25
US 10 , 075 , 565 B1 

nodes . 

METHODS , SYSTEMS , AND COMPUTER opposition to one another and / or may waste resources by 

PROGRAM PRODUCTS FOR SHARING duplicating function , according to critics of the keep - alive 

INFORMATION FOR DETECTING AN IDLE option . TCP CONNECTION Proponents of the keep - alive option claim there is a 

5 benefit to detecting a dead peer / partner endpoint sooner . A 

RELATED APPLICATIONS node providing TCP keep - alive can also indirectly detect 

when a network is so congested that two nodes with end This application is a continuation on of of , , and claims priority points in a TCP connection are effectively disconnected . to U . S . patent application Ser . No . 15 / 694 , 803 entitled Proponents argue that keep - alive can keep an inactive TCP “ METHODS , SYSTEMS , AND COMPUTER PROGRAM 10 connection open . For example , some network nodes such as PRODUCTS FOR SHARING INFORMATION FOR firewalls are configured to close TCP connections deter DETECTING AN IDLE TCP CONNECTION , ” filed on mined to be idle or inactive in order to recover resources . Sep . 3 , 2017 which , in turn , is a continuation - in - part of , and Keep - alive can prevent this . This is good from the perspec claims priority to U . S . patent application Ser . No . 14 / 667 , tive of the node sending keep - alive packets , but the keep 642 , entitled “ METHODS , SYSTEMS , AND COMPUTER 15 

PROGRAM PRODUCTS FOR SELECTING A alive packets might cause the firewall to waste resources and 

RESOURCE BASED ON A MEASURE OF A PROCESS - possibly possibly block block or or terminate terminate TCP TCP connections connections with with other other 

ING COST , ” filed on Mar . 24 , 2015 which , in turn , is a 

continuation - in - part of and claims priority to U . S . patent TCP keep - alive and the debate of its benefits and faults 

application Ser . No . 13 / 477 , 402 , entitled “ METHODS , 20 have been around for decades . To date no mechanism to 

SYSTEMS , AND COMPUTER PROGRAM PRODUCTS allow two TCP connection endpoints to cooperate in sup 

FOR SHARING INFORMATION FOR DETECTING AN porting the keep - alive option has been proposed or imple 

IDLE TCP CONNECTION , ” filed May 22 , 2012 which is a mented . The broader issue of enabling cooperation and 

continuation of and claims priority to U . S . patent application negotiation between nodes in a TCP connection in detecting Ser . No . 12 / 714 , 454 , entitled “ METHODS , SYSTEMS , 25 and managing idle , underactive , and / or dead TCP connec 

AND COMPUTER PROGRAM PRODUCTS FOR SHAR tions remains unaddressed . ING INFORMATION FOR DETECTING AN IDLE TCP Accordingly , there exists a need for methods , systems , CONNECTION , " filed Feb . 27 , 2010 . and computer program products for sharing information for 

U . S . patent application Ser . No . 12 / 714 , 454 , entitled detecting an idle TCP connection . “ METHODS , SYSTEMS , AND COMPUTER PROGRAM 30 

PRODUCTS FOR SHARING INFORMATION FOR SUMMARY 

DETECTING AN IDLE TCP CONNECTION , ” filed Feb . 27 , 2010 is incorporated herein by reference in its entirety The following presents a simplified summary of the 

for all purposes . disclosure in order to provide a basic understanding to the 

This application is related to the following commonly 35 reader . This summary is not an extensive overview of the 

owned U . S . Patent Applications , the entire disclosure of disclosure and it does not identify key / critical elements of 

which is incorporated by reference herein in its entirety for the invention or delineate the scope of the invention . Its sole 

all purposes : application Ser . No . 12 / 714 , 063 filed on 2010 purpose is to present some concepts disclosed herein in a 

Feb . 26 , entitled “ Methods , Systems , and Program Products simplified form as a prelude to the more detailed description 

for Detecting an Idle TCP Connection ” . 40 that is presented later . An apparatus is provided comprising : 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 the non - transitory memory , wherein the one or more pro 

tocol ( TCP ) in network nodes support a number of options 45 cessors execute the network application such that the net 

that are not negotiated or even communicated between or work application is configured to operate in accordance with 

among any of the nodes . Some of these options are included a first protocol including a transmission control protocol 

in the specification of the TCP while others are not . For ( TCP ) , the apparatus , when operating in accordance with the 

example , the TCP keep - alive option is supported by a first protocol to establish a TCP connection with a client 

number of implementations of the TCP . It is not , however , 50 computer , configured to : communicate a segment including 

part of the TCP specification as described in “ Request for at least one first synchronize bit ; communicate a first 

Comments ” ( RFC ) document RFC 793 edited by John acknowledgement of the segment , and at least one second 

Postel , titled “ Transmission Control Protocol , DARPA Inter synchronize bit ; and communicate a second acknowledge net Program Internet Protocol Specification ” ( September ment ; said server computer , further configured to commu 

1981 ) , which is incorporated here in its entirety by refer - 55 nicate , to the client computer , code that , when used by the 

ence . One , both , or neither node including an endpoint in a client computer , causes the client computer to operate in 

TCP connection may support a keep - alive option for the accordance with a second protocol that is separate from the 

connection . Each node supports or does not support keep - TCP , in order to establish a second protocol connection with 

alive for a TCP connection based on each node ' s require - another server computer , by : receiving a packet ; detecting an 

ments without consideration for the other node in the TCP 60 idle time period parameter field in the packet ; identifying 

connection . metadata in the idle time period parameter field for an idle 

With respect to the keep - alive option , some argue that it time period , detectable by the another server computer , is unnecessary and that it can waste network bandwidth . where , after the idle time period is detected , the second 

Some of these critics point out that a keep - alive packet can protocol connection is deemed inactive ; and creating or 

bring down a TCP connection . Further , since nodes includ - 65 modifying , by the client computer and based on the meta 

ing endpoints in a TCP connection do not cooperate in data , a timeout attribute associated with the second protocol supporting the keep - alive option , the nodes may operate in connection . 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 12 of 25
US 10 , 075 , 565 B1 

Another apparatus is provided comprising : a server com including a transmission control protocol ( TCP ) that oper 

puter including : a non - transitory memory storing a network ates above an Internet Protocol ( IP ) layer and below a 

application , and one or more processors in communication hypertext transfer protocol ( HTTP ) application layer , the 

with the non - transitory memory , wherein the one or more apparatus , when operating in accordance with the first 

processors execute the network application such that the 5 protocol to set up a TCP connection with a client computer , network application is configured to operate in accordance configured to : communicate a segment including at least one 

with a first protocol including a transmission control proto - first synchronize bit ; communicate a first acknowledgement 

col ( TCP ) , the apparatus , when operating in accordance with of the segment , and at least one second synchronize bit ; and 

the first protocol to establish a TCP connection with a client communicate a second acknowledgement ; said server com 

computer , configured to : communicate a segment including 10 puter , further configured to communicate , to the client 

at least one first synchronize bit ; communicate a first computer , code that , when used by the client computer , acknowledgement of the segment , and at least one second results in the client computer operating in accordance with 

synchronize bit ; and communicate a second acknowledge - a second protocol , that is different from the TCP and 

ment ; said server computer , further configured to commu - operates above the IP layer and below the HTTP application 

nicate , to the client computer , code that , when used by the 15 layer , in order to setup a second protocol connection with 

client computer , results in the client computer operating in another server computer , by : receiving idle information for 

accordance with a second protocol that is separate from the use in detecting an idle time period during which no signal 

TCP , in order to establish a second protocol connection with is communicated that meets each of the following criteria : a ) 

another server computer , by : receiving idle information for communicated in the second protocol connection , and b ) 

detecting an idle time period , after which , the second 20 results in the second protocol connection being at least 

protocol connection is subject to deactivation ; generating a partially kept alive ; generating , based on the idle informa 

second protocol packet including an idle time period param - tion , a second protocol packet including an idle time period 

eter field identifying metadata for the idle time period based parameter field identifying metadata that is specified in a 

on the idle information , and sending , from a client computer number of seconds or minutes ; and sending , from the client 

to the another server computer , the second protocol packet 25 computer to another server computer and during the set up 

to provide the metadata for the idle time period to the of the second protocol connection , the second protocol 

another server computer , for use by the another server p acket to provide the metadata to the another server com 

computer in creating or modifying , based on the metadata , puter , for use by the another server computer in determining 

a timeout attribute associated with the second protocol a timeout attribute associated with the second protocol 

connection . 30 connection . Yet another apparatus is provided comprising : a server Other methods and systems are also described for sharing 

computer including : a non - transitory memory storing information for detecting an idle TCP connection . In one 

instructions , and one or more processors in communication aspect , a method includes receiving , by a second node from 

with the non - transitory memory , wherein the one or more a first node , a first transmission control protocol ( TCP ) 

processors execute the instructions such that a network 35 packet in a TCP connection . The method further includes 

application operates in accordance with a first protocol detecting a first idle time period header , in the first packet , including a transmission control protocol ( TCP ) , the appa - identifying metadata for a first idle time period , detectable 

ratus , when operating in accordance with the first protocol to by the first node , during which no TCP packet including data 

set up a TCP connection , configured to : communicate a in a first TCP data stream sent in the TCP connection by the 

segment including at least one first synchronize bit ; com - 40 second node is received by the first node . The method still 

municate a first acknowledgement of the segment , and at further includes modifying , based on the metadata , by the 

least one second synchronize bit ; and communicate a second second node a timeout attribute associated with the TCP 

acknowledgement ; said server computer , further configured connection . 

to communicate , to a client computer , code that , when used Further , a system for sharing information for detecting an 

by the client computer , causes the client computer to operate 45 idle TCP connection is described . The system includes an 

in accordance with a second protocol that is different from execution environment including an instruction processing 

the TCP and that operates above an Internet Protocol ( IP ) unit configured to process an instruction included in at least 

layer and below a hypertext transfer protocol ( HTTP ) appli - one of a net in - port component , an idle time period option cation layer , in order to setup a second protocol connection handler component , and an option attribute handler compo 

with another server computer , by : receiving , by the client 50 nent . The system includes the net in - port component con 

computer from the another server computer , a packet ; iden - figured for receiving , by a second node from a first node , a 

tifying metadata , that specifies a number of seconds or first transmission control protocol ( TCP ) packet in a TCP 

minutes , in an idle time period parameter field in the packet connection . The system further includes the idle time period 

for an idle time period that is detectable by the another option handler component configured for detecting a first 

server computer and , during which , no packet is communi - 55 idle time period header , in the first packet , identifying 

cated that meets each of the following criteria : a ) commu - metadata for a first idle time period , detectable by the first 

nicated via the second protocol connection , and b ) causes the node , during which no TCP packet including data in a first 

second protocol connection to be kept at least partially alive ; TCP data stream sent in the TCP connection by the second 

and determining , by the client computer and based on the node is received by the first node . The system still further 

metadata , a timeout attribute associated with the second 60 includes the option attribute handler component configured protocol connection . for modifying , based on the metadata , by the second node a Still yet another apparatus is provided comprising : a timeout attribute associated with the TCP connection 

server computer including : a non - transitory memory storing In another aspect , a method for sharing information for 

instructions ; and one or more processors in communication detecting an idle TCP connection is described that includes 

with the non - transitory memory , wherein the one or more 65 receiving , by a first node , first idle information for detecting 

processors execute the instructions such that a network a first idle time period during which no TCP packet includ 

application operates in accordance with a first protocol ing data in a first data stream sent in the TCP connection by 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 13 of 25
US 10 , 075 , 565 B1 

a second node is received by the first node . The method FIG . 7 is a message flow diagram illustrating an exem 

further includes generating a TCP packet including a first plary data and execution flow for sharing information for 

idle time period header identifying metadata for the first idle detecting an idle TCP connection according to an aspect of 

time period based on the first idle information . The method the subject matter described herein ; and 

still further includes sending the TCP packet in the TCP 5 FIG . 8 is a diagram illustrating a structure for a packet connection to the second node to provide the metadata for transmitted via a network according to an aspect of the 

the first idle time period to the second node . The method also subject matter described herein . includes detecting the first idle time period based on the first 

idle information . The method additionally includes deacti DETAILED DESCRIPTION 

vating the TCP connection in response to detecting the first 10 

idle time period . An exemplary device included in an execution environ 

Still further , a system for sharing information for detect - ment that may be configured according to the subject matter 

ing an idle TCP connection is described . The system is illustrated in FIG . 1 . An execution environment includes 

includes an execution environment including an instruction an arrangement of hardware and , optionally , software that 

processing unit configured to process an instruction included 15 may be further configured to include an arrangement of 

in at least one of an idle time period policy component , a components for performing a method of the subject matter 

packet generator component , a net out - port component , an described herein . idle time period monitor component , and a connection state An execution environment includes and / or is otherwise 

component . The system includes the idle time period policy provided by one or more devices . An execution environment 

component configured for receiving , by a first node , first idle 20 may include a virtual execution environment including information for detecting a first idle time period during software components operating in a host execution environ 

which no TCP packet including data in a first data stream ment . Exemplary devices included in or otherwise providing 

sent in the TCP connection by a second node is received by suitable execution environments for configuring according the first node . The system includes the packet generator to the subject matter include personal computers , notebook 

component configured for generating a TCP packet includ - 25 computers , tablet computers , servers , hand - held and other 

ing a first idle time period header identifying metadata for mobile devices , multiprocessor devices , distributed devices , the first idle time period based on the first idle information . consumer electronic devices , and / or network - enabled 

The system still further includes the net out - port component devices . Those skilled in the art will understand that the configured for sending the TCP packet in the TCP connec components illustrated in FIG . 1 are exemplary and may 

tion to the second node to provide the metadata for the first 30 vary by particular execution environment . idle time period to the second node . The system includes the FIG . 1 illustrates hardware device 100 included in execu 

idle time period monitor component configured for detecting tion environment 102 which includes instruction processing the first idle time period based on the first idle information . unit ( IPU ) 104 , such as one or more microprocessors ; 

The system includes the connection state component con physical IPU memory 106 including storage locations iden 

figured for deactivating the TCP connection in response to 35 tified by addresses in a physical memory address space of 

detecting the first idle time period . IPU 104 ; persistent secondary storage 108 , such as one or 

more hard drives and / or flash storage media ; input device 

BRIEF DESCRIPTION OF THE DRAWINGS adapter 110 , such as key or keypad hardware , keyboard adapter , and / or mouse adapter ; output device adapter 112 , Objects and advantages of the present invention will 40 such as a display or audio adapter for presenting information 

become apparent to those skilled in the art upon reading this to a user ; a network interface , illustrated by network inter 

description in conjunction with the accompanying drawings , face adapter 114 , for communicating via a network such as 

in which like reference numerals have been used to desig - a LAN and / or WAN , and a communication mechanism that 

nate like or analogous elements , and in which : couples elements 104 - 114 , illustrated as bus 116 . Elements 

FIG . 1 is a block diagram illustrating an exemplary 45 104 - 114 may be operatively coupled by various means . Bus 

hardware device included in and / or otherwise providing an 116 may comprise any type of bus architecture , including a 

execution environment in which the subject matter may be memory bus , a peripheral bus , a local bus , and / or a switch implemented ; ing fabric . FIG . 2 is a flow diagram illustrating a method for sharing IPU 104 is an instruction execution machine , apparatus , information for detecting an idle TCP connection according 50 or device . Exemplary IPUs include one or more micropro 

to an aspect of the subject matter described herein ; cessors , digital signal processors ( DSP ) , graphics processing 

FIG . 3 is a flow diagram illustrating another method for units ( GPU ) , application - specific integrated circuits ( ASIC ) , sharing information for detecting an idle TCP connection and / or field programmable gate arrays ( FPGA ) . 

according to another aspect of the subject matter described IPU 104 may access machine code instructions and data 

herein ; 55 via one or more memory address spaces in addition to the 

FIG . 4a and FIG . 4b show a block a diagram illustrating physical memory address space . A memory address space 

an arrangement of components for sharing information for includes addresses identifying locations in an IPU memory . detecting an idle TCP connection according to a further IPU 104 may have more than one IPU memory . Thus , IPU 

aspect of the subject matter described herein ; 104 may have more than one memory address space . IPU 

FIG . 5 is a block diagram illustrating an arrangement of 60 104 may access a location in an IPU memory by processing 

components for sharing information for detecting an idle an address identifying the location . The processed address 

TCP connection according to still another aspect of the may be in an operand of a machine code instruction and / or 

subject matter described herein ; may be identified in a register or other portion of IPU 104 . FIG . 6 is a network diagram illustrating an exemplary FIG . 1 illustrates virtual IPU memory 118 spanning at 

system for sharing information for detecting an idle TCP 65 least part of physical IPU memory 106 and at least part of 

connection according to an aspect of the subject matter persistent secondary storage 108 . Virtual memory addresses 

described herein ; in a memory address space may be mapped to physical 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 14 of 25
US 10 , 075 , 565 B1 

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 ing devices , and other output devices producing sensory 

memory addresses ; and its IPU memory is known as a 5 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 . more network interfaces . The terms " communication inter 

Various types of memory technologies may be included in 10 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 node ” and “ node ” in this document both refer to a device 

code synchronous DRAM ( ECC SDRAM ) , and / or RAM - 15 having a network interface operatively coupled to a network . BUS DRAM ( RDRAM ) . Physical IPU memory 106 may Exemplary 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 802 . 11 network , and / or a wireless telephony network ( e . g . , 

( ROM ) . 20 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 ( PANs ) . 

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 Ethernet adapters , Token - ring adapters , FDDI adapters , removable media . The drives and their associated computer - 25 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 . sharing information for detecting an idle TCP connection 

Execution environment 102 may include software com - 30 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 subject matter described herein . FIG . 4a is a block diagram 

122 , other program code and / or data components illustrated 35 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 . 

Execution environment 102 may receive user - provided FIG . 4b is a block diagram illustrating a system for sharing 

information via one or more input devices illustrated by information for detecting an idle TCP connection according 

input device 128 . Input device 128 provides input informa - to the second method in FIG . 3 . It is expected that many , if 

tion to other components in execution environment 102 via 40 not most , systems configured to perform one of the methods 

input device adapter 110 . Execution environment 102 may illustrated in FIG . 2 and FIG . 3 will also be configured to 

include an input device adapter for a keyboard , a touch perform the other method . screen , a microphone , a joystick , a television receiver , a A system for sharing information for detecting an idle 

video camera , a still camera , a document scanner , a fax , a TCP connection according to the method illustrated in FIG . phone , a modem , a network adapter , and / or a pointing 45 2 includes an execution environment , such as execution 

device , to name a few exemplary input devices . environment 102 in FIG . 1 , including an instruction pro Input device 128 included in execution environment 102 cessing unit , such as IPU 104 , configured to process an 

may be included in device 100 as FIG . 1 illustrates or may instruction included in at least one of an idle time period be external ( not shown ) to device 100 . Execution environ policy component 450 , a packet generator component 452 , ment 102 may include one or more internal and / or external 50 and a net out - port component 454 , a idle time period monitor 

input devices . External input devices may be connected to component 456 , and a connection state component 458 

device 100 via corresponding communication interfaces illustrated in FIG . 4a . such as a serial port , a parallel port , and / or a universal serial system for sharing information for detecting an idle 

bus ( USB ) port . Input device adapter 110 receives input and TCP connection performing the method illustrated in FIG . 3 

provides a representation to bus 116 to be received by IPU 55 includes an execution environment , such as execution envi 

104 , physical IPU memory 106 , and / or other components ronment 102 in FIG . 1 , including an instruction processing included in execution environment 102 . unit , such as IPU 104 , configured to process an instruction 

Output device 130 in FIG . 1 exemplifies one or more included in at least one of a net in - port component 460 , an 

output devices that may be included in and / or may be idle time period option handler component 462 , an option 

external to and operatively coupled to device 100 . For 60 attribute handler component 464 illustrated in FIG . 4b . example , output device 130 is illustrated connected to bus Components illustrated in FIG . 4a may be adapted for 

116 via output device adapter 112 . Output device 130 may performing the method illustrated in FIG . 2 in a number of 

be a display device . Exemplary display devices include execution environments . Components illustrated in FIG . 4b 

liquid crystal displays ( LCDs ) , light emitting diode ( LED ) may be adapted for performing the method illustrated in 

displays , and projectors . Output device 130 presents output 65 FIG . 3 in a number of execution environments . FIG . 5 is a 

of execution environment 102 to one or more users . In some block diagram illustrating adaptations and / or analogs of the 

embodiments , an output device is a device such as a phone , components of FIG . 4a and FIG . 46 in exemplary execution 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 15 of 25
US 10 , 075 , 565 B1 

10 

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 . layer protocol supported . Link layer component 512 may The components illustrated in FIG . 4 and FIG . 5 may be 5 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 . and / or a network of networks such as an intranet or the 

FIG . 6 illustrates first node 602 and second node 604 as 10 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 network may be and / or may include an internet . Analo 

adaptation of the arrangement of components in FIG . 4b . As 15 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 payload of one or more IP packets to TCP layer component 

an exemplary exchange of messages within and between 20 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 for sending and / or receiving packets included in the TCP 

not exhaustive . 25 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 endpoint and second node 604 may include a second TCP 

node 602 may be included in and / or provide execution 30 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 Components of execution environment 502 , in an aspect , execution environment 502 . The operation of both first node 35 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 

execution environment 502 . For ease of illustration , both application 504 , may interoperate with TCP layer compo first node 602 and second node 604 are configured with nent 506 indirectly . Network application 504 may exchange 

adaptations of the arrangement in FIG . 4a and the arrange - data with TCP layer component 506 via sockets component 

ment in FIG . 4b . As such , the description of components and 40 518 and / or an analog of sockets component 518 . Alterna 

corresponding operations with respect to execution environ - tively or additionally , network application 504 may com 

ment 502 in FIG . 5 is applicable to both first node 602 and municate with a remote node via an application protocol second node 604 in FIG . 6 . layer illustrated by application protocol layer component 

In FIG . 5 , network interface card ( NIC ) 508 is an exem 520 . Many application protocols currently exist and new 

plification of a network interface illustrated in FIG . 1 by 45 application protocols will be developed . Exemplary appli 

network interface adapter 114 . NIC 508 includes a physical cation layer protocols include hypertext transfer protocol 

layer component 510 operatively coupling execution envi - ( HTTP ) , file transfer protocol ( FTP ) , and extensible mes 

ronment 502 to one or more physical media for carrying saging and presence protocol ( XMPP ) . 

communication signals . The media may be wired , such as an TCP layer component 506 in FIG . 5 may receive data 

Ethernet LAN operating over CAT 6 cabling , or may be 50 from any of various sources for transmitting in correspond 

wireless such as an 802 . 11n LAN . Other exemplary physical ing TCP connections to various corresponding identified 

layer protocols and corresponding media are identified TCP connection endpoints in one or more network nodes . above . FIG . 5 illustrates application in - port ( app in - port ) compo 

NIC 508 may also include a portion of link layer com - nent 522 providing an interface component for receiving 

ponent 512 . Link layer component 512 may provide for 55 data to transmit in a TCP connection . FIG . 5 illustrates TCP 

communication between two nodes in a point - to - point com - layer component 506 includes packet generator component munication and / or two nodes in a local area network ( LAN ) . 552 configured to package data received by application Exemplary link layers and , their protocols have been in - port component 522 for transmitting in one or more TCP 

described above including FDDI , ATM , and Ethernet . A packets . The one or more TCP packets are provided to IP 

portion of link layer component 512 is external to NIC 508 . 60 layer component 514 via net out - port component 554 exem 

The external portion may be realized as a device driver for p lifying an output interface component . NIC 508 . Analogously , TCP layer component 506 interprets data 

Link layer component 512 may receive data formatted as received from IP layer component 514 via net in - port 

one or more internet protocol ( IP ) packets from internet component 560 . The data is interpreted as TCP data and TCP 

protocol ( IP ) layer component 514 . Link layer component 65 packets are detected in the received data by net in - port 512 packages data from IP layer component 514 according component 560 and / or packet handler component 516 . FIG . to the particular link layer protocol supported . Analogously , 5 illustrates TCP layer component 506 includes packet 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 16 of 25
US 10 , 075 , 565 B1 

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 The previous packet may be received by net in - port com 

TCP data stream to sockets component 518 , application 5 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 . dler component 562 . ITP policy component 550 may inter With reference to the method illustrated in FIG . 2 , block 10 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 

stream sent in the TCP connection by a second node is identified may include and / or identify a duration of time for 

detecting an idle time period . The duration may be specified received by the first node . Accordingly , a system for sharing 15 

information for detecting an idle TCP connection includes according to various measures of time including seconds , 

means for receiving , by a first node , first idle information for minutes , hours , and / or days . detecting a first idle time period during which no TCP packet Alternatively or additionally , idle information may including data in a first data stream sent in the TCP con include and / or identify a generator for determining a dura 

nection by a second node is received by the first node . For 20 tion of time for detecting an idle time period . An exemplary example , as illustrated in FIG . 4a , idle time period policy generator may include a formula , an expression , a function , component 450 is configured for receiving , by a first node , a policy , and / or other mechanism for generating and / or 

first idle information for detecting a first idle time period otherwise identifying a duration of time . during which no TCP packet including data in a first data In an aspect , one or more algorithms for generating a 

stream sent in the TCP connection by a second node is 25 duration of time for detecting an idle time period may be 

received by the first node . associated with identifiers . The algorithm identifiers may be 

FIG . 5 illustrates idle time period ( ITP ) policy component standardized within a group of nodes including first node 

550 as an adaptation of and / or analog of ITP policy com - 602 and second node 604 . The received idle information 

ponent 450 in FIG . 4a . One or more idle time period policy may include and / or reference an algorithm identifier . First 

components 550 operate in execution environment 502 . 30 node 602 and second node 604 may each maintain an 

Message 702 in FIG . 7 illustrates a communication association between one or more of the algorithm identifiers 

including and / or otherwise identifying idle information and a duration generator such as a function and / or a class 

received by ITP policy component 550 . Message 702 may configured to perform the identified algorithm . 

take various forms in various aspects . Exemplary forms for duration generator may determine the duration of time 

message 702 include a function / method invocation , a mes - 35 for detecting an idle time period based on one or more 

sage passed via a message queue , data transmitted via a pipe , attributes accessible to one or both of first node 602 and 

a message received via a network , and / or a communication second node 604 . Exemplary attributes include a measure of 

via a shared location in IPU memory and / or secondary network latency , a measure of network congestion , an indi 

storage . cation of the availability of a particular resource , a user 

Idle information may be received from a configuration 40 specified attribute , a security attribute , an energy usage 

storage location for TCP layer component 506 in an IPU attribute , a user attribute such as role of the user , and / or a 

memory and / or in secondary storage 108 . The configured measure of bandwidth supported by NIC 508 and / or a 

idle information may be maintained and / or otherwise man - physical network medium operatively coupled to NIC 508 . aged by settings service component 526 configured to main Alternatively or additionally , idle information may tain and / or manage various options or settings for TCP layer 45 include a parameter such as one or more of the attributes 

component 506 and / or one or more TCP connections . identified in the previous paragraph for use in a duration 

In an aspect , network application 504 provides idle infor - generator for determining a duration of time for measuring 

mation to ITP policy component 550 via settings service and / or otherwise detecting an idle time period . component 526 interoperating with sockets component 518 . ATCP connection may be identified by its endpoints . First 

Sockets component 518 and / or TCP layer component 506 50 node 602 and / or second node 604 may include an endpoint 

may support TCP options applicable globally for some or all of the TCP connection . Alternatively or additionally , first 

TCP connections and / or may support TCP options on a per n ode 602 and / or second node 604 may include a proxy 

connection basis . Per connection TCP options may override endpoint representing an endpoint in a TCP connection . 

global TCP options if global options are also supported . In Nodes , that provide a network address translation ( NAT ) another aspect , idle information may be received from 55 service , are exemplary nodes including proxy endpoints . and / or otherwise received based on information via appli Anode including a TCP connection endpoint is referred to 

cation protocol layer 520 , via sockets component 518 , as a host . Hosts are typically user devices and / or servers that 

and / or directly from network application 504 . typically operate at the edge of a network . While endpoints Application protocol layer 520 may provide idle infor - of most TCP connections are not typically included in 

mation to ITP policy component 550 via settings service 60 network nodes for relaying , routing , and / or otherwise for 

component 526 and , optionally , via sockets component 518 . warding TCP packet data within a network such as routing 

Idle information provided by application protocol layer 520 nodes and switching nodes . Such network nodes may 

may be based on data received from network application include one or more connection endpoints for one or more 

504 , based on a particular configuration of application respective TCP connections . It should be understood that the 

protocol layer 520 , and / or received from a user and / or 65 term “ host ” refers to a role played by a device in a network . administrator of one or both of network application 504 and First node 602 and / or second node 604 may play the role of 

application protocol layer 520 . a host in a TCP connection and / or may be proxy nodes . 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 17 of 25
US 10 , 075 , 565 B1 

13 14 

A node is referred to as being in or included in a TCP a system for sharing information for detecting an idle TCP 

connection when the node includes an endpoint of the connection includes means for generating a TCP packet connection and / or includes a proxy for a connection end including a first idle time period header identifying metadata 

point , referred to as a proxy endpoint . A proxy endpoint and for the first idle time period based on the first idle informa 

an endpoint in a TCP connection may be in the same node 5 tion . For example , as illustrated in FIG . 4a , packet generator 

or in different nodes . component 452 is configured for generating a TCP packet 

In FIG . 5 , connection state component 558 may maintain including a first idle time period header identifying metadata 

state information for one or more TCP connection endpoints for the first idle time period based on the first idle informa 

and / or proxy endpoints of corresponding TCP connections tion . included in an instance of an execution environment , such as 10 FIG . 5 illustrates packet generator component 552 as an 

execution environment 502 , included in and / or provided by adaptation of and / or analog of packet generator component 

first node 602 or second node 604 . 452 in FIG . 4a . One or more packet generator components First node 602 and / or second node 604 may play a role of 552 operate in execution environment 502 . a proxy node for a node including a TCP connection Packet generator component 552 in FIG . 5 may receive 

endpoint . First node 602 and / or second node 604 may 15 idle information and / or information based on the received 

include a proxy endpoint representing an endpoint in a TCP idle information from ITP policy component 550 . Whether 

connection . A proxy node forwards TCP packet data , sent by and when packet generator component 552 receives infor 

a host including a TCP connection endpoint , to another host m ation for including an idle time period ( ITP ) header in a 

including a corresponding connection endpoint represented TCP packet may depend on a current state of the associated 

by a proxy endpoint included in the proxy node and vice 20 TCP connection . In FIG . 5 , ITP policy component 550 may 

versa . Exemplary proxy nodes in addition to including interoperate with connection state component 558 to deter 

routing and / or switching capabilities may include a bridge , mine whether and when to provide information to packet 

a hub , a repeater , a gateway , and a firewall generator component 552 for including an ITP header in a 

In an aspect , a TCP keep - alive option , a TCP user timeout , TCP packet . a retransmission timeout , an acknowledgment timeout , and / 25 In an aspect , an ITP header may be included in a packet 

or another timeout associated with a TCP connection may be exchanged during setup of TCP connection . RFC 793 

modified based on the first idle information . describes a " three - way handshake ” for establishing a TCP 

For example , in FIG . 5 , ITP policy component 550 connection . The synchronization requires each side to send 

operating in first node 602 may modify an attribute of a TCP it ' s own initial sequence number and to receive a confirma 

keep - alive option provided by one or more keep - alive com - 30 tion of it in acknowledgment from the other side . Each side 

ponents that may include settings service component 526 . must also receive the other side ' s initial sequence number 

Modifying a keep - alive attribute may include creating the and send a confirming acknowledgment . attribute , deleting the attribute , and / or modifying the attri 1 ) AB SYN my sequence number is X 

bute . ITP policy component 550 may interoperate with 2 ) A B ACK your sequence number is X 

settings service component 526 , connection state component 35 3 ) A B SYN my sequence number is Y 

558 , and / or a keep - alive option handler component ( not 4 ) A?B ACK your sequence number is Y 

shown ) to detect the existence and state of one or more Because steps 2 and 3 can be combined in a single keep - alive attributes in determining whether a keep - alive message this is called the three way ( or three message ) 

option is active and / or in identifying its current state . handshake . In response to identifying the idle information , ITP policy 40 Other message exchanges may be used in setting up a 

component 550 may activate , disable , and / or modify the TCP connection as those skilled in the art will understand . state of the keep - alive option via interoperation with one or Such other exchanges are not currently supported by the 

more of settings service component 526 , connection state TCP as described in RFC 793 . The specified “ three - way 

component 558 , and / or a keep - alive option handler . Thus , in handshake ” and other patterns of message exchange for 

response to identifying the idle information , ITP policy 45 setting up a TCP connection include packets that are con 

component 550 may prevent and / or alter the time a keep - sidered to be in the TCP connection for purposes of this 

alive packet is sent to second node 604 from first node 602 . disclosure . Including an ITP header may be restricted to 

Alternatively or additionally , ITP policy component 550 packets exchanged in connection setup , excluded from pack 

operating in first node 602 may modify an attribute associ - ets exchanged during connection establishment , or allowed 

ated with an acknowledgment timeout configured for TCP 50 in one or more packets exchanged during connection estab 

layer component 506 . Modifying an acknowledgment tim lishments and in packets exchanged after connection setup . eout attribute may include creating the attribute , deleting the In an aspect , when connection state component 558 

attribute , and / or modifying the attribute . ITP policy compo - and / or ITP policy component 550 determine an ITP header 

nent 550 may interoperate with settings service component should be included in a TCP packet based on received idle 

526 , connection state component 558 , and / or an acknowl - 55 information , packet generator component 552 may include 

edgment option handler component ( not shown ) to detect the the ITP header in a next TCP packet generated in response 

existence and state of one or more packet acknowledgment to data received via application in - port component 522 for 

attributes . In response to identifying the idle information , sending to first node 602 . In another aspect , packet generator 

ITP policy component 550 may modify the state of the component 552 may send the ITP header in a TCP packet in 

packet acknowledgment option . Thus , in response to iden - 60 the TCP connection with no data included in the TCP data 

tifying the idle information , ITP policy component 550 may stream sent by first node 602 to second node 604 . Such a 

prevent and / or alter the time an acknowledgment is sent in packet is referred to as an empty Packet generator compo 

a packet in a TCP connection . nent 554 may send the empty TCP packet when TCP layer Returning to FIG . 2 , block 204 illustrates the method component 506 has no for data from an application in second 

further includes generating a TCP packet including a first 65 node 604 to send in the TCP data stream to first node 602 . idle time period header identifying metadata for the first idle Packet generator component 552 may generate a packet time period based on the first idle information . Accordingly , according to the TCP specifications and may include a 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 18 of 25
15 

US 10 , 075 , 565 B1 

16 

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 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 - 5 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 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 10 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 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 15 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 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 20 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 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 25 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 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 30 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 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 . 35 policy component 550 may provide idle information to 

ITP data field 826 in FIG . 8 may include and / or otherwise packet generator component 552 to generate a TCP packet identify metadata for the first idle time period . For example , including a second ITP header . Content of the second ITP 

an ITP data field in a packet may include and / or otherwise header may be based on the first idle information received , identify one or more of a duration of time for detecting an data received from second node 604 , information received 

idle time period , a duration generator for determining a 40 from a network application that may be from a user , and / or 

duration of time for detecting an idle time period , and a on any information accessible to TCP layer component 506 

parameter for use in a duration generator for determining a in execution environment 502 in first node 602 . The TCP 

duration of time for measuring and detecting an idle time packet generated by packet generator component 552 is 

period . provided to IP layer component 514 via net out - port com 

Message 704 in FIG . 7 illustrates an invocation and / or 45 ponent 554 to send to second node 604 in the TCP connec 

other access to packet generator component 552 for gener - tion . Along with sending the message , first node 602 may 

ating a TCP packet including an ITP header based on reset and / or otherwise restart detection of the first idle time 

received idle information . period . Thus , a second ITP header may be sent in a second 

Returning to FIG . 2 , block 206 illustrates the method TCP packet by first node 602 to second node 602 along with 

further includes sending the TCP packet in the TCP con - 50 restarting detection of the first idle time period . Alterna 

nection to the second node to provide the metadata for the tively , first node 602 may reset and initiate detection of an 

first idle time period to the second node . Accordingly , a idle time period with a different duration than the previous 

system for sharing information for detecting an idle TCP idle time period , based on the idle information for generating 

connection further includes means for sending the TCP the second ITP header . packet in the TCP connection to the second node to provide 55 Returning to FIG . 2 , block 208 illustrates the method 

the metadata for the first idle time period to the second node . further includes detecting the first idle time period based on 

For example , as illustrated in FIG . 4a , the net out - port the first idle information . Accordingly , a system for sharing 

component 454 is configured for sending the TCP packet in information for detecting an idle TCP connection further 

the TCP connection to the second node to provide the includes means for detecting the first idle time period based 

metadata for the first idle time period to the second node . 60 on the first idle information . For example , as illustrated in 

FIG . 5 illustrates net out - port component 554 as an FIG . 4a , the idle time period monitor component 456 is 

adaptation of and / or analog of net out - port component 454 configured for idle time period monitor . in FIG . 4a . One or more net out - port components 554 FIG . 5 illustrates idle time period monitor component 556 

operate in execution environment 502 . Net out - port compo - as an adaptation of and / or analog of idle time period monitor 

nent 554 is illustrated operatively coupled to packet genera - 65 component 456 in FIG . 4a . One or more idle time period 

tor component 552 . Net out - port component 554 may monitor components 556 operate in execution environment 

receive TCP packet data from packet generator component 502 . 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 19 of 25
US 10 , 075 , 565 B1 

17 18 

In an aspect , in response to receiving the first idle infor - 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 5 duration of the idle time period . ITP monitor component 556 

duration of time for detecting the idle time period . The 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 10 an idle time period may be static and / or may be dynamic , identified based on the received idle information . 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 15 cation between ITP monitor component 556 and a timer 

identifying a duration of time , a duration generator , and / or 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 20 ing message 706 . 2 through message 706 . n . Those skilled in 

potential idle time period based on one or more specified 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 25 detecting an idle time period . received acknowledgment for all data sent via the TCP 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 - 30 ponent 556 as marking an occurrence of the first idle time 

edge all data received in a TCP data stream in the TCP 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 . may include detecting that all received data has been In a further aspect , in response to detecting the expiration acknowledged and / or that all sent data has been acknowl - 35 of a timer set as described above , a TCP keep - alive packet edged . may be sent by first node 602 to determine whether the TCP 

In an aspect , ITP policy component 550 may include a connection is action and / or to keep the TCP connection 

policy with a rule indicating that an idle time period cannot active . When the keep - alive packet is sent , an acknowledg 

begin while a TCP packet sent by first node 602 remains ment timer may be set . If a timeout of the acknowledgment 

unacknowledged by second node 604 . ITP policy compo - 40 timer is detected indicating no TCP packet has been received 

nent 550 may prevent ITP monitor component 556 from acknowledging the keep - alive packet , the first idle time 

initiating detection of an idle time period while unacknowl period may be detected in response to and / or otherwise 

edged data exists . In a further aspect , a time duration may be based on the timeout of the acknowledgment timer . associated and / or included in the policy identifying a limit to In FIG . 5 , ITP policy component 550 in first node 602 

a period of waiting to receive acknowledgment of TCP 45 may provide a duration identified based on the received idle 

packet data sent by first node 602 . In one aspect , waiting for information to a keep - alive monitor component ( not shown ) . 

lack of an acknowledgment for an empty packet does not The keep - alive monitor component may configure a keep 

delay detection of an idle time period , while in another alive timer to expire based on the identified duration . In 

aspect ITP monitor component 556 will not initiate detection response to detecting expiration of the keep - alive timer , ITP 

while an empty packet remains unacknowledged . 50 monitor component 556 may invoke packet generator com 

In an aspect , idle information , received by a node may be ponent 552 to generate a TCP keep - alive packet . First node 

included in and / or otherwise based on a previous idle time 602 may send the TCP packet to second node 604 . The TCP 

period header identified in a previous TCP packet received keep - alive packet may be sent to prevent detection of an idle 

in the TCP connection by the node from a remote node prior time period by second node 604 and / or may otherwise be 

to sending an ITP header based on the idle information by 55 sent to detect by first node 602 whether the TCP connection 

the node . For example , the first idle information received by is active . ITP policy component 550 in first node 602 may be based on First node 602 may set an acknowledgment timer asso 

an idle time period header included a TCP packet in the TCP ciated with sending the packet . If the acknowledgment timer 

connection sent by second node 604 and received by first expires before a TCP packet is received from second node 

node 602 prior to sending the first TCP packet by first node 60 602 acknowledging the packet sent , ITP monitor component 

602 . The exchange of ITP headers may include a negotiation 556 may detect the idle time period in response to and / or 

between first node 602 and second node 604 . otherwise based on expiration of the acknowledgment timer . A duration of time may be identified based on the idle Receiving a packet from second node 604 included in the 

information received by ITP policy component in first node TCP connection is an event that , in various aspects , may 602 . A timer may be set according to the identified duration . 65 directly and / or indirectly indicate the beginning of a poten Detecting the first idle time period may include and / or tial idle time period . A potential idle time period may begin otherwise may be based on detecting the timer expiration . at some specified point during and / or after processing a 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 20 of 25
US 10 , 075 , 565 B1 

19 20 

received TCP packet . In one aspect , an empty TCP packet When ITP monitor component 556 in first node 602 

may be received while a potential idle time period is being detects an idle time period , ITP monitor component 556 may 

monitored . That is , a beginning of the potential idle time provide an indication to connection state component 558 . period has been detected . In response to receiving the empty The indication may indicate that the idle time period for the 

TCP packet , monitoring of the current potential time period 5 TCP connection has been detected and / or otherwise may 

may be aborted . Further , in response to receiving the empty instruct connection state component 558 and / or other com 

TCP packet , a beginning of a next potential idle time period ponents in TCP layer component 506 to deactivate the TCP 

may be detected . connection . Message 712 in FIG . 7 illustrates a communi 

In FIG . 5 , ITP policy component 550 and ITP monitor cation to deactivate the TCP connection communicated in 

component 556 may operate to reset and / or initiate detection response to detecting the idle time period . of an idle time period in response to receiving an empty TCP Deactivating the TCP connection may include closing the 

packet . First node 602 may receive an empty packet . In TCP connection . A TCP connection may be closed using a 

response , ITP monitor component 556 may receive an event three - way handshake packet exchange described in RFC 

and / or other indication to reset detection of an idle time 15 793 . Deactivating the TCP connection may include sending period . Resetting the detecting process may be based on a TCP packet by the detecting node to reset the TCP 

whether or not a received empty TCP packet matches a connection . According to RFC 793 , first node 602 may send 

specified condition . ITP option handler component 562 may a TCP packet including a reset ( RST ) bit set to “ 1 ” to 

be configured to determine whether a received empty TCP indicate a connection reset . Deactivating the TCP connec 

packet matches the condition . If ITP option handler com - 20 tion may include , alternatively or additionally , releasing a 

ponent 562 determines the empty packet matches the con resource allocated for maintaining and / or activating the TCP 

dition , ITP monitor component 556 may be instructed to connection . reset and / or restart detection of the first idle time period With respect to the method illustrated in FIG . 3 , block 302 including detecting the beginning of a next potential time illustrates the method includes receiving , by a second node 

period . 25 from a first node , a first transmission control protocol ( TCP ) The condition may match received TCP packets including packet in a TCP connection . Accordingly , a system for 

ITP headers and / or other TCP option headers . A condition sharing information for detecting an idle TCP connection 

may match a port number and / or other field in TCP packet . includes means for receiving , by a second node from a first 

Acondition may further be based on a network address in an node , a first transmission control protocol ( TCP ) packet in a 

IP header including the TCP packet . 30 TCP connection . For example , as illustrated in FIG . 4b , the 

In a further aspect , first node 602 may receive via network net in - port component 460 is configured for receiving , by a 

606 from second node 604 a TCP packet in the TCP second node from a first node , a first transmission control 

connection including an second ITP header . Message 706 . 2 protocol ( TCP ) packet in a TCP connection . 

in FIG . 7 illustrates the TCP packet sent by second node 604 . FIG . 5 illustrates net in - port component 560 as an adap ITP option handler component 562 may identify the second 35 tation of and / or analog of net in - port component 460 in FIG . ITP header received from second node 604 . The identified 4b . One or more net in - port components 560 operate in 

second ITP header may be for detecting by first node 602 an execution environment 502 . idle time period , during which no TCP packet in the TCP As described above , net in - port component 560 in FIG . 5 

connection is received , by the first node 602 that includes may operate in an instance of execution environment 502 

data in the first TCP data stream from second node 604 . The 40 and / or an analog included in and / or including second node 

first idle time period may be detected by ITP monitor 604 . The TCP packet , illustrated by message 706 . 1 in FIG . 

component 556 in first node 602 based on the second ITP 7 and described above , may be received by net in - port header and based on the received idle information . The component 560 in second node 604 . The TCP packet may 

second ITP header received in the TCP packet from second include data in a second TCP data stream sent by first node 

node 604 may be based on the first ITP header in the TCP 45 602 to second node 604 to deliver to a user of TCP layer 

packet sent in the TCP connection by first node 602 to component 506 in second node 604 such as network appli 

second node 604 . cation 504 . Alternatively , the TCP packet may be an empty In some aspects , the first node and second node 604 may TCP packet . The received TCP packet may be a packet 

continue to exchange ITP headers . Information in the included in setting up the TCP connection as described 

exchanged ITP headers may be based on ITP headers 50 above . received in the TCP connection and / or on data accessible Returning to FIG . 3 , block 304 illustrates the method 

locally to one or both of the nodes . In some aspects , the further includes detecting a first idle time period header , in 

exchange may be a negotiation while in other the exchange the first packet , identifying metadata for a first idle time 

may simply be informational . period , detectable by the first node , during which no TCP 

Returning to FIG . 2 , block 210 illustrates the method 55 packet including data in a first TCP data stream sent in the 

further includes deactivating the TCP connection in response TCP connection by the second node is received by the first 

to detecting the first idle time period . Accordingly , a system node . Accordingly , a system for sharing information for 

for sharing information for detecting an idle TCP connection detecting an idle TCP connection includes means for detect 

further includes means for deactivating the TCP connection ing a first idle time period header , in the first packet , in response to detecting the first idle time period . For 60 identifying metadata for a first idle time period , detectable 

example , as illustrated in FIG . 4a , the connection state by the first node , during which no TCP packet including data 

component 458 is configured for deactivating the TCP in a first TCP data stream sent in the TCP connection by the 

connection in response to detecting the first idle time period . second node is received by the first node . For example , as 

FIG . 5 illustrates connection state component 558 as an illustrated in FIG . 4b , idle time period option handler 

adaptation of and / or analog of connection state component 65 component 462 is configured for detecting a first idle time 

458 in FIG . 4a . One or more connection state components period header , in the first packet , identifying metadata for a 

558 operate in execution environment 502 . first idle time period , detectable by the first node , during 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 21 of 25
US 10 , 075 , 565 B1 

22 

which no TCP packet including data in a first TCP data 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 5 In response to identifying the idle time period header , ITP 

period option handler component 462 in FIG . 4b . One or 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 10 handler component 564 may prevent and / or alter the time a 

packet , including the ITP header sent by first node 602 , may 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 - 15 packet acknowledgment option provided by TCP layer com 

tify the received packet to packet handler component 516 . 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 20 tings service component 526 , connection state component 

components in TCP layer component 506 to identify por - 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 - 25 564 may modify the state of the packet acknowledgment 

nent 562 . Message 708 in FIG . 7 exemplifies activation of 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 30 tion . operating in second node 604 may detect and / or otherwise 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 

and / or a parameter for a duration generator . The first idle header inform and / or otherwise identify to a second node in 

time period header may identify metadata including and / or 35 the connection one or more durations for detecting an idle 

identifying for detection of the first idle time period by first time period by one or both nodes . Given multiple purposes , node 602 a duration of time , a generator for determining a one or more types of ITP headers may be supported and / or 

duration of time , and / or an input for determining a duration an ITP header may be structured to support one or more of 

of time . the described services . An exchange of ITP headers may be 

Returning to FIG . 3 , block 306 illustrates the method yet 40 informational and / or may be included in negotiation 

further includes modifying , based on the metadata , by the between two nodes included in a TCP connection . When 

second node a timeout attribute associated with the TCP used in a negotiation , an ITP header may be included in a 

connection . Accordingly , a system for sharing information negotiation protocol that has an identifiable end during a 

for detecting an idle TCP connection includes means for portion of the existence of a TCP connection or may be 

modifying , based on the metadata , by the second node a 45 included in a negotiation that may remain ongoing through 

timeout attribute associated with the TCP connection . For out the existence of a TCP connection . Those skilled in the 

example , as illustrated in FIG . 4b , the option attribute art will recognize the list of services in this paragraph is not 

handler component 464 is configured for modifying , based exhaustive . on the metadata , by the second node a timeout attribute It should be understood that the various components 

associated with the TCP connection . 50 illustrated in the various block diagrams represent logical 

FIG . 5 illustrates option attribute handler component 564 components that are configured to perform the functionality 

as an adaptation of and / or analog of option attribute handler described herein and may be implemented in software , component 464 in FIG . 4b . One or more option attribute hardware , or a combination of the two . Moreover , some or 

handler components 564 operate in execution environment all of these logical components may be combined , some may 

502 . 55 be omitted altogether , and additional components may be 

In an aspect , ITP option handler component 562 may one added while still achieving the functionality described 

or more attribute option handler components 564 to modify herein . Thus , the subject matter described herein may be 

one or more corresponding attributes of a keep - alive option , embodied in many different variations , and all such varia 

a TCP user timeout , a retransmission timeout , an acknowl - tions are contemplated to be within the scope of what is 

edgment timeout , and another timeout associated with the 60 claimed . TCP connection , in response to identifying the ITP header . To facilitate an understanding of the subject matter 

The modifying may be based on the content of the ITP described above , many aspects are described in terms of 

header . sequences of actions that may be performed by elements of 

For example , ITP option handler component 562 in sec a computer system . For example , it will be recognized that 

ond node 604 may interoperate with a keep - alive attribute 65 the various actions may be performed by specialized circuits 

option handler component 564 directly and / or indirectly via or circuitry ( e . g . , discrete logic gates interconnected to 

settings service component 526 , connection state component perform a specialized function ) , by program instructions 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 22 of 25
24 

US 10 , 075 , 565 B1 

23 

being executed by one or more instruction processing units , in accordance with a second protocol that is separate 

or by a combination of both . The description herein of any from the TCP , in order to establish a second protocol 

sequence of actions is not intended to imply that the specific connection with another server computer , by : receiving order described for performing that sequence must be fol a packet ; detecting an idle time period parameter field 

lowed . in the packet ; 

Moreover , the methods described herein may be embod identifying metadata in the idle time period parameter ied in executable instructions stored in a computer readable field for an idle time period , where , after the idle time 

medium for use by or in connection with an instruction period is detected , the second protocol connection is 

execution machine , system , apparatus , or device , such as a deemed inactive ; and creating or modifying , by the 

computer - based or processor - containing machine , system , 10 client computer and based on the metadata , a timeout 

apparatus , or device . As used herein , a " computer readable attribute associated with the second protocol connec 

medium ” may include one or more of any suitable media for tion . storing the executable instructions of a computer program in 2 . The apparatus of claim 1 wherein the code , when used 

one or more of an electronic , magnetic , optical , electromag - by the client computer , causes the client computer to operate 

netic , and infrared form , such that the instruction execution 15 such that the creating or modifying the timeout attribute 

machine , system , apparatus , or device may read ( or fetch ) renders one or more keep - alive packets in the second 

the instructions from the computer readable medium and protocol connection unnecessary . execute the instructions for carrying out the described meth - 3 . The apparatus of claim 1 wherein the code , when used 

ods . A non - exhaustive list of conventional exemplary com - by the client computer , causes the client computer to operate 

puter readable media includes a portable computer diskette ; 20 such that the receiving is performed subsequent to sending , a random access memory ( RAM ) ; a read only memory by the client computer to the another server computer , ( ROM ) ; an erasable programmable read only memory another packet including other metadata including an idle 

( EPROM or Flash memory ) ; optical storage devices , includ - time period parameter . ing a portable compact disc ( CD ) , a portable digital video 4 . The apparatus of claim 3 wherein the metadata is the 

disc ( DVD ) , a high definition DVD ( HD - DVDTM ) , a Blu - 25 same as the other metadata . rayTM disc ; and the like . 5 . The apparatus of claim 3 wherein the metadata is 

Thus , the subject matter described herein may be embod - different from the other metadata . ied in many different forms , and all such forms are contem - 6 . The apparatus of claim 3 wherein the metadata is based 

plated to be within the scope of what is claimed . It will be on the other metadata . understood that various details may be changed without 30 7 . The apparatus of claim 1 wherein the code , when used 

departing from the scope of the claimed subject matter . by the client computer , causes the client computer to operate 

Furthermore , the foregoing description is for the purpose of such that the timeout attribute is specified in a number of 

illustration only , and not for the purpose of limitation , as the seconds or minutes . scope of protection sought is defined by the claims as set 8 . The apparatus of claim 1 wherein the code , when used 

forth hereinafter together with any equivalents thereof 35 by the client computer , causes the client computer to operate 

entitled to . such that the metadata is used as input of an algorithm for 

All methods described herein may be performed in any determining a duration of time associated with the timeout 

order unless otherwise indicated herein explicitly or by attribute . context . The use of the terms “ a ” and “ an ” and “ the ” and 9 . The apparatus of claim 8 wherein the algorithm is 

similar referents in the context of the foregoing description 40 determined , in response to the identification of the metadata 

and in the context of the following claims are to be construed and based on at least one particular attribute not related to 

to include the singular and the plural , unless otherwise the metadata . indicated herein explicitly or clearly contradicted by con - 10 . The apparatus of claim 1 wherein the code , when used 

text . The foregoing description is not to be interpreted as by the client computer , causes the client computer to operate indicating any non - claimed element is essential to the prac - 45 such that the creation or the modification of the timeout 

tice of the subject matter as claimed . attribute results from a negotiation between the client com 

I claim : puter and the another server computer via a negotiation 1 . An apparatus comprising : protocol specific to the second protocol . 

a server computer including : 11 . The apparatus of claim 1 wherein the code , when used 

a non - transitory memory storing a network application ; 50 by the client computer , causes the client computer to operate 

and in accordance with the second protocol that is separate from 

one or more processors in communication with the the TCP to : 

non - transitory memory , wherein the one or more detect the idle time period based on the timeout attribute ; 

processors execute the network application to oper and 

ate in accordance with a first protocol including a 55 deactivate the second protocol connection in response to 

transmission control protocol ( TCP ) , the server com detecting the idle time period . puter , when operating in accordance with the first 12 . The apparatus of claim 1 wherein the code , when used 

protocol to establish a TCP connection with a client by the client computer , causes the client computer to utilize 

computer , configured to : the second protocol instead of the TCP in order to permit communicate a segment including at least one first 60 communication , between the client computer and the 

synchronize bit ; another server computer , of the timeout attribute , where no 

communicate a first acknowledgement of the seg . timeout attribute is communicated when establishing the 

ment , and at least one second synchronize bit ; and TCP connection in accordance with the TCP , but is available 

communicate a second acknowledgement ; when establishing the second protocol connection so as to 

said server computer , further configured to communicate , 65 permit the second protocol connection to be placed in a 

to the client computer , code that , when used by the particular state based on the timeout attribute when the 

client computer , causes the client computer to operate second protocol connection is inactive , where the particular 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 23 of 25
US 10 , 075 , 565 B1 

25 26 

state is such that only one of the client computer or the operating such that the creation or the modification of the 

another server computer is allowed to transmit data to the timeout attribute results from an exchange between the 

other one . client computer and the another server computer . 

13 . The apparatus of claim 1 wherein the code , when used 21 . The apparatus of claim 15 wherein the code , when 

by the client computer , causes the client computer to operate 5 used by the client computer , results in the client computer 

such that the timeout attribute is used to determine whether operating in accordance with the second protocol that is 

to at least partially close the second protocol connection separate from the TCP , by : 

when inactive . detecting the idle time period ; and 

14 . The apparatus of claim 1 wherein the code is com deactivating the second protocol connection by commu 

municated by permitting the client computer to fetch the 10 nicating a particular packet between the client com 

code from the server computer utilizing the TCP connection puter and the another server computer , in response to 

and a hypertext transfer protocol ( HTTP ) . detecting the idle time period . 15 . An apparatus comprising : 22 . The apparatus of claim 15 wherein the code , when 

a server computer including : used by the client computer , results in the client computer 

a non - transitory memory storing a network application ; 15 utilizing the second protocol instead of the TCP in order to 

and permit negotiation , between the client computer and the 

one or more processors in communication with the another server computer , of the timeout attribute , where the 

non - transitory memory , wherein the one or more timeout attribute is not communicated when establishing the 

processors execute the network application to oper TCP connection in accordance with the TCP , but is com 

ate in accordance with a first protocol including a 20 municated when establishing the second protocol connec 

transmission control protocol ( TCP ) , the server com - tion so as to permit the second protocol connection to be at 

puter , when operating in accordance with the first least partially closed when inactive based on the timeout 

protocol to establish a TCP connection with a client attribute . computer , configured to : 23 . The apparatus of claim 15 wherein the code , when 

communicate a segment including at least one first 25 used by the client computer , results in the client computer synchronize bit ; operating such that the timeout attribute serves to keep the 

communicate a first acknowledgement of the seg - second protocol connection open when inactive , and to 

ment , and at least one second synchronize bit ; and prevent the another server from closing the second protocol communicate a second acknowledgement ; connection when inactive . said server computer further configured to communicate , 30 24 . The apparatus of claim 15 wherein the code , when 

to the client computer , code that , when used by the used by the client computer , results in the client computer client computer , results in the client computer operating operating such that the second protocol packet and the 

in accordance with a second protocol that is separate metadata included therewith are sent by the client computer 

from the TCP , in order to establish a second protocol to the another server computer , in response to receiving , by connection with another server computer , by : identify - 35 the client computer from the another server computer , ing idle information for detecting an idle time period , another second protocol packet with other metadata . after which , the second protocol connection is subject 25 . An apparatus comprising : 

to deactivation ; generating a second protocol packet a server computer including : 

including an idle time period parameter field identify a non - transitory memory storing instructions ; and 

ing metadata for the idle time period based on the idle 40 one or more processors in communication with the 

information ; and sending , from the client computer to non - transitory memory , wherein the one or more 

the another server computer , the second protocol packet processors execute the instructions such that a net 

to provide the metadata for the idle time period to the work application operates in accordance with a first 

another server computer , for use by the another server protocol including a transmission control protocol 

computer in creating or modifying , based on the meta - 45 ( TCP ) , the server computer , when operating in accor 

data , a timeout attribute associated with the second dance with the first protocol to set up a TCP con 

protocol connection . nection , configured to : 

16 . The apparatus of claim 15 wherein the code , when communicate a segment including at least one first 

used by the client computer , results in the client computer synchronize bit ; 

operating such that the timeout attribute is an attribute of the 50 communicate a first acknowledgement of the seg idle time period . ment , and at least one second synchronize bit ; and 

17 . The apparatus of claim 15 wherein the code is communicate a second acknowledgement ; 

communicated by permitting the client computer to fetch the said server computer further configured to communicate , code from the server computer utilizing the TCP connection to a client computer , code that , when used by the client 

and a hypertext transfer protocol ( HTTP ) . 55 computer , causes the client computer to operate in 

18 . The apparatus of claim 15 wherein the code , when accordance with a second protocol that is different from 

used by the client computer , results in the client computer the TCP and that operates above an Internet Protocol 

operating such that the metadata includes a first value and ( IP ) layer and below a hypertext transfer protocol 

the timeout attribute is capable of being created or modified , ( HTTP ) application layer , in order to setup a second 

by the another server computer , to include a second value 60 protocol connection with another server computer , by : 

that is different than the first value of the metadata . receiving , by the client computer from the another 

19 . The apparatus of claim 15 wherein the code , when server computer , a packet ; identifying metadata , that 

used by the client computer , results in the client computer specifies a number of seconds or minutes , in an idle 

operating such that the timeout attribute is a number of time period parameter field in the packet for an idle 

seconds or minutes . 65 time period , during which , no packet is communicated 

20 . The apparatus of claim 15 wherein the code , when that meets each of the following criteria : a ) communi 

used by the client computer , results in the client computer cated via the second protocol connection , and b ) causes 

Case 6:20-cv-00453-ADA Document 1-3 Filed 06/01/20 Page 24 of 25
US 10 , 075 , 565 B1 

27 28 

10 

25 

30 

the second protocol connection to be kept at least the client computer to operate in accordance with the second partially alive ; and determining , by the client computer protocol that is different from the TCP , by : 

and based on the metadata , a timeout attribute associ - detecting the idle time period based on the timeout 

ated with the second protocol connection . attribute ; and 

26 . The apparatus of claim 25 wherein the code is 5 deactivating the second protocol connection by commu 

nicating a particular packet between the client com communicated by permitting the client computer to fetch the puter and the another server computer , in response to code from the server computer utilizing the TCP connection detecting the idle time period . and a hypertext transfer protocol ( HTTP ) . 29 . An apparatus comprising : 

27 . The apparatus of claim 26 wherein at least one of : a server computer including : 

the communication includes only receiving ; a non - transitory memory storing instructions ; and 

the communication includes only sending ; one or more processors in communication with the 

the communication includes receiving and sending ; non - transitory memory , wherein the one or more 

the instructions are separate from the network application ; processors execute the instructions such that a net 

the instructions are part of the network application ; work application operates in accordance with a first 

the first acknowledgement of the segment and the at least protocol including a transmission control protocol 

one second synchronize bit are communicated together ; ( TCP ) that operates above an Internet Protocol ( IP ) 

the communication of : the segment including the at least layer and below a hypertext transfer protocol 

one first synchronize bit , the first acknowledgement of ( HTTP ) application layer , the server computer con 

the segment , the at least one second synchronize bit , figured to operate in accordance with the first pro 

and the second acknowledgement , is carried out via a tocol to set up a TCP connection with a client 

3 - way handshake ; computer ; 

the segment includes a signal ; said server computer further configured to communicate , the segment includes a packet ; to the client computer , a data structure that , when used 

the second protocol includes a variant to the TCP ; by the client computer , results in the client computer 

the second protocol includes an extension to the TCP ; operating in accordance with a second protocol , that is 

different from the TCP and operates above the IP layer the second protocol includes a non - TCP protocol ; 

the second protocol connection includes a first connection and below the HTTP application layer , in order to setup 

that is set up ; a second protocol connection with another server com 

the second protocol connection includes an initial con puter , by : identifying idle information for use in detect 

nection that is set up ; ing an idle time period during which no signal is 

the metadata specifies a number of seconds ; communicated that meets each of the following criteria : 

the metadata specifies a number of minutes ; a ) communicated in the second protocol connection , 

the packet is informational ; and b ) results in the second protocol connection being 

the packet is received directly by the another server 2 kept alive ; generating , based on the idle information , a 

computer from the client computer , second protocol packet including an idle time period 

the packet is received by the another server computer parameter field identifying metadata that is specified in 

from the client computer via at least one other inter a number of seconds or minutes ; and sending , from the 

mediate computer ; client computer to another server computer and during 

the code includes machine code or program code ; the set up of the second protocol connection , the second 

the code includes a readable instruction ; protocol packet to provide the metadata to the another 

the code includes a data structure ; server computer , for use by the another server computer 

the code includes a program component ; in determining a timeout attribute associated with the 

the code is an instruction ; second protocol connection . the code is a data structure ; 30 . The apparatus of claim 29 wherein the data structure 

the code is a program component ; 45 is communicated by permitting the client computer to fetch 

the code is software ; the data structure from the server computer utilizing the TCP 

the timeout attribute is capable being the same as the the connection and a hypertext transfer protocol ( HTTP ) ; 

metadata ; wherein the data structure , when used by the client 

the timeout attribute is capable being different from the computer , results in the client computer operating in 

metadata ; accordance with the second protocol that is different 

the timeout attribute specifies a time duration ; from the TCP such that the determination of the timeout 

the determining the timeout attribute includes at least one attribute results from an exchange between the client 

of modifying , creating , or deleting the timeout attri computer and the another server computer ; and 

bute ; wherein the data structure , when used by the client 

computer , further results in the client computer oper the second protocol operates directly above the IP layer ; 

the second protocol operates directly below the HTTP ating in accordance with the second protocol that is 

application layer ; or different from the TCP , by : 

during the idle time period , a data - equipped second pro detecting the idle time period based on the idle infor 

tocol packet is capable of being received by the client mation ; and 

computer in another connection separate from the sec releasing a resource allocated for the second protocol 

ond protocol connection . connection by one of the client computer and the 

28 . The apparatus of claim 25 wherein the code is another server computer without signaling another 

communicated by permitting the client computer to fetch the one of the client computer and the another server 

code from the server computer utilizing the TCP connection computer , in connection with the detection of the idle 

and a hypertext transfer protocol ( HTTP ) , and further time period . wherein the code , when used by the client computer , causes * * * * * 

35 

40 

50 

55 

60 

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