EXHIBIT F

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 1 of 25
I 11111111111111 1111 11111111 1111 1111 1111111 11111 111111111 1111111 

c12) United States Patent 

Morris 

(54) METHODS, SYSTEMS, AND COMPUTER

PROGRAM PRODUCTS FOR SHARING

INFORMATION FOR DETECTING AN IDLE

TCP CONNECTION

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

(US) 

(72) Inventor: Robert Paul Morris, Raleigh, NC (US)

(73) Assignee: Sitting Man, LLC, Raleigh, NC (US)

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

patent is extended or adjusted under 35 

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

This patent is subject to a terminal disclaimer. 

(21) Appl. No.: 15/694,802

(22) Filed: Sep. 3, 2017 

Related U.S. Application Data 

(63) Continuation-in-part of application No. 14/667,642,

filed on Mar. 24, 2015, which is a continuation-in-part

of application No. 13/4 77,402, filed on May 22, 2012,

now abandoned, which is a continuation of

application No. 12/714,454, filed on Feb. 27, 2010,

now Pat. No. 8,219,606.

(51) Int. Cl.

G06F 15116

H04L 29106

(52) U.S. Cl.

(2006.01) 

(2006.01) 

CPC .................................... H04L 69/16 (2013.01) 

( 58) Field of Classification Search

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

See application file for complete search history. 

US009923 995B 1 

(10) Patent No.: US 9,923,995 Bl 

(45) Date of Patent: *Mar. 20, 2018

(56) References Cited 

U.S. PATENT DOCUMENTS 

6,412,006 B2 * 6/2002 Naudus ................... H04L 45/00 

370/437 

7,404,210 B2 * 7/2008 Lin ..................... H04L 63/1458 

370/392 

7,426,569 B2 * 9/2008 Dunk ...................... H04L 67/14 

709/203 

7,684,346 B2 * 3/2010 Valli ....................... H04L 43/10 

370/252 

7,720,989 B2 * 5/2010 Dunk ...................... H04L 67/14 

709/224 

7,729,271 B2 * 6/2010 Tsuchiya ............... H04L 43/022 

370/252 

(Continued) 

OTHER PUBLICATIONS 

Allman, M., Paxson, V., Stevens, W., "TCP Congestion Control", 

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

rfc2581.txt,-Apr. 1999. 

(Continued) 

Primary Examiner - Moustafa M Meky 

(74) Attorney, Agent, or Firm - Patrick E. Caldwell,

Esq.; The Caldwell Firm, LLC

(57) ABSTRACT 

Methods and systems are described for sharing information 

for detecting an idle connection. In one aspect, a second 

node receives a packet in a connection. A portion in the 

packet is detected identifying metadata for a period, detectable by a first node. The second node modifies a timeout 

associated with the connection based on the metadata. In 

another aspect, a first node receives information for detecting a period. A packet is generated including a portion 

identifying metadata for the period based on the information, and sent to the second node. 

30 Claims, 8 Drawing Sheets 

Receive, by a first node, first idle information for detecting a first idle 

time period during which no TCP packet including data in a first data 

stream sent 1n the TCP connection by a second node 1s received by 

202 

the first node 

Generate a TCP packet including a first idle time period header 

identify metadata for the first idle time period based on the first idle 

information 

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

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

Deactivate the TCP connection in response to detecting the first idle 

lime period 

204 

206 

208 

210 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 2 of 25
US 9 , 923 , 995 B1 

Page 2 

( 56 ) References Cited 

U . S . PATENT DOCUMENTS 

8 , 073 , 964 B2 * 12 / 2011 Dunk . . . . . . . . . . . . . . . . . . . H04L 67 / 14 

709 / 224 

8 , 219 , 606 B2 * 7 / 2012 Morris . . . . . . . . . . . . . . . . . . H04L 69 / 16 

709 / 201 

2005 / 0054347 Al * 3 / 2005 Kakani . . . . . . . . . . . . . . . . H04W 28 / 18 

455 / 452 . 1 

2005 / 0063304 AL 3 / 2005 Sillasto et al . 2006 / 0034179 A1 2 / 2006 Carter et al . 2009 / 0252072 A1 * 10 / 2009 Lind . . . . . H04W 76 / 045 

370 / 311 

2010 / 0057844 A1 * 3 / 2010 Johnson . . . . . . . . . . . . . . GO6F 3 / 0611 

709 / 203 

2011 / 0213820 AL 9 / 2011 Morris 

Koziero , Charles M . , TCP Connection Management and Problem 

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

3 , htm , accessed Feb . 2010 , ( c ) 2003 - 2010 . Mathis , M . , Mahdave , J . , Floyd , S . , Romanow , A . , “ TCP Selective Acknowledgement Options ” , RFC 2018 , Internet Engineering Task 

Force , http : / / tools . ietf . org / rfc / rfc2018 . txt , Oct . 1996 . Nagle , John , “ Congestion Control in IP / TCP Internetworks ” , RFC 

896 , Ford Aerospace and Communications Corporation , http : / / tools . ietf . org / rfc / rfc896 . txt , Jan . 1984 . Postel , John ( ed . ) , Editor ; “ Transmission Control Protocol 

DARPA Internet Protocol Specification ” , RFC 793 , USC / Informa 

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

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

OTHER PUBLICATIONS 

Busatto , Fabio , “ TCP Keepalive Overview ” , TCP Keepalive 

HOWTO , Section 2 , http : / / tldp . org / HOWTO / html _ single / TCP 

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

rfc5482 . txt , Mar . 2009 . * cited by examiner 

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

U . S . Patent 

Device /Node100 

Output Device130 

Input Device128 

Virtual IPUMemory 118 

Physical IPUMemory 106

Instruction Processing Unit 104

Output Device Adapter 112

Input DeviceAdapter 110

Mar . 20 , 2018 

Applications 122 

116 

Other Libraries andSubsystems 124

Persistent Secondary Storage 108

Network Interface Adapter 114 

Sheet 1 of 8 

To /FrmNetwork 

Operating System 120

Fig .1

US 9 , 923 , 995 B1 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 4 of 25
U . S . Patent Mar . 20 , 2018 Sheet 2 of 8 US 9 , 923 , 995 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-6 Filed 06/01/20 Page 5 of 25
U . S . Patent Mar . 20 , 2018 Sheet 3 of 8 US 9 , 923 , 995 B1 

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

control protocol ( TCP ) packet in a TCP connection 

304 

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

metadata for a first idle time period , detectable by the first node , during which no TCP packet including data in a first TCP data stream 

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

first node 

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

attribute associated with the TCP connection 

Fig . 3 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 6 of 25
U . S . Patent Mar . 20 , 2018 Sheet 4 of 8 US 9 , 923 , 995 B1 

Connection 

State 458 

Option 

Attribute 

ITP Policy 450 ITP Monitor 456 Handler 564 

HH Packet Generator ITP Option 

452 Handler 462 452 

Net Out - Port 454 Net In - Port 460 

Fig . 4a Fig . 4b 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 7 of 25
U . S . Patent Mar . 20 , 2018 Sheet 5 of 8 US 9 , 923 , 995 B1 

Execution Environment 502 

Network Application 504 

Application Protocol Layer 520 

Sockets 518 

App In - Port 

522 Port Settings 

Service Service Option App Out 

Port 524 526 Option 

Attribute 

Handler 564 

Connection 

State 558 

Packet 

Generator 

552 

ITP 

Policy 

550 

Packet 

Handler 

516 ITP Monitor 

556 

ITP Option 

Net Out Handler 562 Net In - Port 

Port 554 560 TCP Layer 506 

IP Layer 514 

Link Layer 512 

NIC 508 

Physical Layer 

510 

Fig . 5 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 8 of 25
en U . S . Patent men www Mar . 20 , 2018 Sheet 6 of 8 

. 

US 9 , 923 , 995 B1 

Second 

Node 

604 

Network 

606 

n 

RSS 

First Node 

602 

Fig . 6 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 9 of 25
atent NIar . 20 , 2018 Sheet 7 0f8 US 9 , 923 , 995 B1 

First Node 

602 

Second 

Node 

604 

- Idlelnfo 

704 

GeneratePacket ( ITI ) 

1 _ 704 

706 , 1 - Packet ( IH ) 

_ 708 _ 708 

DetectIHO 

- Packetf ) 706 . 2 

? ? ? 

706 . h - Packet ) 

710 . 1 

Idle TimerSeto ) 

710 . 2 

IdlePop ) 

712 

Deactivate 

Fig . 7 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 10 of 25
U . S . Patent Mar . 20 , 2018 Sheet 8 of 8 US 9 , 923 , 995 B1 

804 806 W 

0 1 2 3 4 5 8 9 O 0 1 2 3 4 5 6 7 N 8 O V w 4 5 6 7 8 9 O 1 

+ I + 

- B ce Port ? D un tinati Port 

Sequence Number . 

Acknowledgment Number 

- | Data | TU A | P | R | S | F | | Offsetl Reserved | RICISISTY | I | | 

G | K | H | T | N | N | 

Window 

- Checksum Urgent Pointer 

Options I Padding | 

- data 

802 

+ 

812 Source I ce Ad Address 7 - 

+ + 814 

Destination Address 1 I + + I + + 

zero | PTCL — LE 1- TEL TCP Length — 

+ AT 

822 810 - - - + - - - - - - - - + - - I - - 1 - - + 

KIND KIND — | Length | ?? TP D 0 — It 1 

824 820 - 978 

Figures are adapted from RFC 793 

Fig . 8 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 11 of 25
US 9 , 923 , 995 B1 

METHODS , SYSTEMS , AND COMPUTER node providing TCP keep - alive can also indirectly detect 

PROGRAM PRODUCTS FOR SHARING when a network is so congested that two nodes with end 

INFORMATION FOR DETECTING AN IDLE points in a TCP connection are effectively disconnected . TCP CONNECTION Proponents argue that keep - alive can keep an inactive TCP 

connection open . For example , some network nodes such as 

RELATED APPLICATIONS firewalls are configured to close TCP connections deter 

mined to be idle or inactive in order to recover resources . This application is a continuation - in - part of , and claims Keep - alive can prevent this . This is good from the perspec priority to U . S . patent application Ser . No . 14 / 667 , 642 , tive of the node sending keep - alive packets , but the keep 

entitled “ METHODS , SYSTEMS , AND COMPUTER 10 alive packets might cause the firewall to waste resources and 

PROGRAM PRODUCTS FOR SELECTING A possibly block or terminate TCP connections with other 

RESOURCE BASED ON A MEASURE OF A PROCESS - nodes . 

ING COST , ” filed on Mar . 24 , 2015 which , in turn , is a TCP keep - alive and the debate of its benefits and faults 

continuation - in - part of and claims priority to U . S . patent have been around for decades . To date no mechanism to 

application Ser . No . 13 / 477 , 402 , entitled “ METHODS , 15 allow two TCP connection endpoints to cooperate in sup SYSTEMS , AND COMPUTER PROGRAM PRODUCTS porting the keep - alive option has been proposed or imple 

FOR SHARING INFORMATION FOR DETECTING AN mented . The broader issue of enabling cooperation and 

IDLE TCP CONNECTION , " filed May 22 , 2012 which is a negotiation between nodes in a TCP connection in detecting continuation of and claims priority to U . S . patent application and managing idle , underactive , and / or dead TCP connec 

Ser . No . 12 / 714 , 454 , entitled “ METHODS , SYSTEMS , 20 tions remains unaddressed . AND COMPUTER PROGRAM PRODUCTS FOR SHAR - Accordingly , there exists a need for methods , systems , ING INFORMATION FOR DETECTING AN IDLE TCP and computer program products for sharing information for 

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

“ METHODS , SYSTEMS , AND COMPUTER PROGRAM 25 SUMMARY 

PRODUCTS FOR SHARING INFORMATION FOR 

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

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

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

This application is related to the following commonly 30 disclosure and it does not identify key / critical elements of 

owned U . S . Patent Applications , the entire disclosure of the invention or delineate the scope of the invention . Its sole 

which is incorporated by reference herein in its entirety for purpose is to present some concepts disclosed herein in a 

all purposes : application Ser . No . 12 / 714 , 063 filed on 2010 simplified form as a prelude to the more detailed description Feb . 26 , entitled “ Methods , Systems , and Program Products that is presented later . for Detecting an Idle TCP Connection ” . 35 An apparatus is provided comprising : a non - transitory 

memory storing instructions , and one or more processors in 

BACKGROUND communication with the non - transitory memory , wherein 

the one or more processors execute the instructions for : 

Various implementations of the transmission control pro - receiving , by a second node from a first node , a transmission 

tocol ( TCP ) in network nodes support a number of options 40 control protocol ( TCP ) - variant packet in advance of a TCP 

that are not negotiated or even communicated between or variant connection being established ; detecting an idle time 

among any of the nodes . Some of these options are included period parameter field in the TCP - variant packet ; identifying in the specification of the TCP while others are not . For metadata in the idle time period parameter field for an idle 

example , the TCP keep - alive option is supported by a time period that is detectable by the first node and , during 

number of implementations of the TCP . It is not , however , 45 which , no packet is communicated in the TCP - variant con 

part of the TCP specification as described in “ Request for n ection to keep the TCP - variant connection active ; and 

Comments " ( RFC ) document RFC 793 edited by John modifying , by the second node and based on the metadata , Postel , titled “ Transmission Control Protocol , DARPA Inter - a timeout attribute associated with the TCP - variant connec 

net Program Internet Protocol Specification ” ( September tion . 1981 ) , which is incorporated here in its entirety by refer - 50 Another apparatus is provided comprising : a non - transi 

ence . One , both , or neither node including an endpoint in a tory memory storing instructions , and one or more proces 

TCP connection may support a keep - alive option for the sors in communication with the non - transitory memory , connection . Each node supports or does not support keep wherein the one or more processors execute the instructions 

alive for a TCP connection based on each node ' s require - for : receiving idle information for detecting an idle time 

ments without consideration for the other node in the TCP 55 period , during which , no packet is communicated in a 

connection . transmission control protocol ( TCP ) - variant connection to 

With respect to the keep - alive option , some argue that it keep the TCP - variant connection active ; generating a TCP 

is unnecessary and that it can waste network bandwidth . variant packet including an idle time period parameter field 

Some of these critics point out that a keep - alive packet can identifying metadata for the idle time period based on the 

bring down a TCP connection . Further , since nodes includ - 60 idle information ; and sending , from a first node to a second 

ing endpoints in a TCP connection do not cooperate in node , the TCP - variant packet in advance of the TCP - variant 

supporting the keep - alive option , the nodes may operate in connection being established to provide the metadata for the 

opposition to one another and / or may waste resources by idle time period to the second node , for use by the second 

duplicating function , according to critics of the keep - alive node in modifying , based on the metadata , a timeout attri 

option . 65 bute associated with the TCP - variant connection . Proponents of the keep - alive option claim there is a Yet another apparatus is provided comprising : a non 

benefit to detecting a dead peer / partner endpoint sooner . A transitory memory storing a network application ; and one or 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 12 of 25
US 9 , 923 , 995 B1 

more processors in communication with the non - transitory connection . The system further includes the idle time period 

memory , wherein the one or more processors execute the option handler component configured for detecting a first 

network application such that the network application is idle time period header , in the first packet , identifying 

configured to operate in accordance with a non - transmission metadata for a first idle time period , detectable by the first 

control protocol ( TCP ) protocol that operates above an 5 node , during which no TCP packet including data in a first 

Internet Protocol ( IP ) layer and below a hypertext transfer TCP data stream sent in the TCP connection by the second 

protocol ( HTTP ) application layer , the apparatus , when node is received by the first node . The system still further operating in accordance with the non - TCP protocol , config includes the option attribute handler component configured ured to : receive , by a second node from a first node , a for modifying , based on the metadata , by the second node a non - TCP packet during a setup of a non - TCP connection ; 10 timeout attribute associated with the TCP connection identify metadata , that specifies a number of seconds or In another aspect , a method for sharing information for minutes , in an idle time period parameter field in the detecting an idle TCP connection is described that includes non - TCP packet , for an idle time period that is detectable by receiving , by a first node , first idle information for detecting the first node , where , as a result of a detection of the idle time period , the non - TCP connection is subject to deactiva - 15 a first idle time period during which no TCP packet includ 

tion ; and determine , based on the metadata , a timeout ing data in a first data stream sent in the TCP connection by 

attribute associated with the non - TCP connection ; wherein a second node is received by the first node . The method 

the apparatus , when operating in accordance with the TCP further includes generating a TCP packet including a first 

protocol , is configured to perform a three - way TCP hand - idle time period header identifying metadata for the first idle 

shake for establishing a TCP connection that is different than 20 time period based on the first idle information . The method 

the non - TCP connection . still further includes sending the TCP packet in the TCP 

Still yet another apparatus is provided comprising : a connection to the second node to provide the metadata for 

non - transitory memory storing a network application ; and the first idle time period to the second node . The method also 

one or more processors in communication with the non - includes detecting the first idle time period based on the first 

transitory memory , wherein the one or more processors 25 idle information . The method additionally includes deacti 

execute the network application such that the network vating the TCP connection in response to detecting the first 

application is configured to operate in accordance with a idle time period . 

non - transmission control protocol ( TCP ) protocol that oper - Still further , a system for sharing information for detect 

ates above an Internet Protocol ( IP ) layer and below a ing an idle TCP connection is described . The system hypertext transfer protocol ( HTTP ) application layer , the 30 includes an execution environment including an instruction 

apparatus , when operating in accordance with the non - TCP processing unit configured to process an instruction included 

protocol , configured to : receive idle information for use in in at least one of an idle time period policy component , a 

detecting an idle time period that results in a non - TCP packet generator component , a net out - port component , an 

connection being subject to deactivation ; generate , based on idle time period monitor component , and a connection state 

the idle information , a non - TCP packet including an idle 35 component . The system includes the idle time period policy time period parameter field identifying metadata that is component configured for receiving , by a first node , first idle 

specified in a number of seconds or minutes , and send , from information for detecting a first idle time period during 

a first node to a second node and for establishing the which no TCP packet including data in a first data stream 

non - TCP connection , the non - TCP packet to provide the sent in the TCP connection by a second node is received by metadata to the second node , for use by the second node in 40 the first node . The system includes the packet generator determining a timeout attribute associated with the non - TCP component configured for generating a TCP packet includ 

connection ; wherein the apparatus , when operating in accor - ing a first idle time period header identifying metadata for 

dance with the TCP protocol , is configured to perform a the first idle time period based on the first idle information . three - way TCP handshake for establishing a TCP connection The system still further includes the net out - port component 

that is separate from the non - TCP connection . 45 configured for sending the TCP packet in the TCP connec 

Other methods and systems are also described for sharing tion to the second node to provide the metadata for the first 

information for detecting an idle TCP connection . In one idle time period to the second node . The system includes the 

aspect , a method includes receiving , by a second node from idle time period monitor component configured for detecting 

a first node , a first transmission control protocol ( TCP ) the first idle time period based on the first idle information . packet in a TCP connection . The method further includes 50 The system includes the connection state component con 

detecting a first idle time period header , in the first packet , figured for deactivating the TCP connection in response to 

identifying metadata for a first idle time period , detectable detecting the first idle time period . by the first node , during which no TCP packet including data 

in a first TCP data stream sent in the TCP connection by the BRIEF DESCRIPTION OF THE DRAWINGS 

second node is received by the first node . The method still 55 

further includes modifying , based on the metadata , by the Objects and advantages of the present invention will 

second node a timeout attribute associated with the TCP become apparent to those skilled in the art upon reading this 

connection . description in conjunction with the accompanying drawings , Further , a system for sharing information for detecting an in which like reference numerals have been used to desig 

idle TCP connection is described . The system includes an 60 nate like or analogous elements , and in which : 

execution environment including an instruction processing FIG . 1 is a block diagram illustrating an exemplary unit configured to process an instruction included in at least hardware device included in and / or otherwise providing an 

one of a net in - port component , an idle time period option execution environment in which the subject matter may be 

handler component , and an option attribute handler compo - implemented ; 

nent . The system includes the net in - port component con - 65 FIG . 2 is a flow diagram illustrating a method for sharing 

figured for receiving , by a second node from a first node , a information for detecting an idle TCP connection according first transmission control protocol ( TCP ) packet in a TCP to an aspect of the subject matter described herein ; 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 13 of 25
US 9 , 923 , 995 B1 

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 ; via one or more memory address spaces in addition to the 

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

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

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 104 may access a location in an IPU memory by processing 

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

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

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 least part of physical IPU memory 106 and at least part of 

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

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

FIG . 7 is a message flow diagram illustrating an exem memory addresses identifying locations in physical IPU 

plary data and execution flow for sharing information for memory 106 . An address space for identifying locations in 

detecting an idle TCP connection according to an aspect of a virtual IPU memory is referred to as a virtual memory 

the subject matter described herein ; and 20 address space ; its addresses are referred to as virtual 

FIG . 8 is a diagram illustrating a structure for a packet memory addresses ; and its IPU memory is known as a 

transmitted via a network according to an aspect of the virtual IPU memory or virtual memory . The term IPU 

subject matter described herein . memory may refer to physical IPU memory 106 and / or 

virtual IPU memory 118 depending on the context in which 

DETAILED DESCRIPTION 25 the term is used . Various types of memory technologies may be included in 

An exemplary device included in an execution environ - physical IPU memory 106 . Exemplary memory technologies 

ment that may be configured according to the subject matter include static random access memory ( SRAM ) and / or 

is illustrated in FIG . 1 . An execution environment includes dynamic RAM ( DRAM ) including variants such as dual data 

an arrangement of hardware and , optionally , software that 30 rate synchronous DRAM ( DDR SDRAM ) , error correcting 

may be further configured to include an arrangement of code synchronous DRAM ( ECC SDRAM ) , and / or RAM 

components for performing a method of the subject matter BUS DRAM ( RDRAM ) . Physical IPU memory 106 may described herein . include volatile memory as illustrated in the previous sen 

An execution environment includes and / or is otherwise tence and / or may include nonvolatile memory such as 

provided by one or more devices . An execution environment 35 nonvolatile flash RAM ( NVRAM ) and / or read - only memory 

may include a virtual execution environment including ( ROM ) . software components operating in a host execution environ Persistent secondary storage 108 may include one or more 

ment . Exemplary devices included in or otherwise providing flash memory storage devices , one or more hard disk drives , suitable execution environments for configuring according one or more magnetic disk drives , and / or one or more optical 

to the subject matter include personal computers , notebook 40 disk drives . Persistent secondary storage may include 

computers , tablet computers , servers , hand - held and other removable media . The drives and their associated computer mobile devices , multiprocessor devices , distributed devices , readable storage media provide volatile and / or nonvolatile 

consumer electronic devices , and / or network - enabled storage for computer readable instructions , data structures , devices . Those skilled in the art will understand that the program components , and other data for execution environ 

components illustrated in FIG . 1 are exemplary and may 45 ment 102 . vary by particular execution environment . Execution environment 102 may include software com 

FIG . 1 illustrates hardware device 100 included in execu - ponents stored in persistent secondary storage 108 , in 

tion environment 102 which includes instruction - processing remote storage accessible via a network , and / or in an IPU 

unit ( IPU ) 104 , such as one or more microprocessors ; memory . FIG . 1 illustrates execution environment 102 

physical IPU memory 106 including storage locations iden - 50 including operating system 120 , one or more applications 

tified by addresses in a physical memory address space of 122 , other program code and / or data components illustrated 

IPU 104 ; persistent secondary storage 108 , such as one or by other libraries and subsystems 124 . more hard drives and / or flash storage media ; input device Execution environment 102 may receive user - provided 

adapter 110 , such as key or keypad hardware , keyboard information via one or more input devices illustrated by 

adapter , and / or mouse adapter ; output device adapter 112 , 55 input device 128 . Input device 128 provides input informa 

such as a display or audio adapter for presenting information tion to other components in execution environment 102 via 

to a user ; a network interface , illustrated by network inter - input device adapter 110 . Execution environment 102 may face adapter 114 , for communicating via a network such as include an input device adapter for a keyboard , a touch 

a LAN and / or WAN ; and a communication mechanism that screen , a microphone , a joystick , a television receiver , a 

couples elements 104 - 114 , illustrated as bus 116 . Elements 60 video camera , a still camera , a document scanner , a fax , a 

104 - 114 may be operatively coupled by various means . Bus phone , a modem , a network adapter , and / or a pointing 

116 may comprise any type of bus architecture , including a device , to name a few exemplary input devices . memory bus , a peripheral bus , a local bus , and / or a switch - Input device 128 included in execution environment 102 

ing fabric . may be included in device 100 as FIG . 1 illustrates or may 

IPU 104 is an instruction execution machine , apparatus , 65 be external ( not shown ) to device 100 . Execution environ 

or device . Exemplary IPUs include one or more micropro - ment 102 may include one or more internal and / or external 

cessors , digital signal processors ( DSP ) , graphics processing input devices . External input devices may be connected to 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 14 of 25
US 9 , 923 , 995 B1 

device 100 via corresponding communication interfaces and a net out - port component 454 , a idle time period monitor 

such as a serial port , a parallel port , and / or a universal serial component 456 , and a connection state component 458 

bus ( USB ) port . Input device adapter 110 receives input and illustrated in FIG . 4a . provides a representation to bus 116 to be received by IPU A system for sharing information for detecting an idle 

104 , physical IPU memory 106 , and / or other components 5 TCP connection performing the method illustrated in FIG . 3 

included in execution environment 102 . includes an execution environment , such as execution envi 

Output device 130 in FIG . 1 exemplifies one or more ronment 102 in FIG . 1 , including an instruction processing 

output devices that may be included in and / or may be unit , such as IPU 104 , configured to process an instruction 

external to and operatively coupled to device 100 . For included in at least one of a net in - port component 460 , an 

example , output device 130 is illustrated connected to bus 10 idle time period option handler component 462 , an option attribute handler component 464 illustrated in FIG . 4b . 116 via output device adapter 112 . Output device 130 may Components illustrated in FIG . 4a may be adapted for be a display device . Exemplary display devices include performing the method illustrated in FIG . 2 in a number of liquid crystal displays ( LCDs ) , light emitting diode ( LED ) execution environments . Components illustrated in FIG . 4b displays , and projectors . Output device 130 presents output 15 may be adapted for performing the method illustrated in of execution environment 102 to one or more users . In some FIG . 3 in a number of execution environments . FIG . 5 is a embodiments , an output device is a device such as a phone , block diagram illustrating adaptations and / or analogs of the 

a joystick , and / or a touch screen . In addition to various types components of FIG . 4a and FIG . 4b in exemplary execution 

of display devices , exemplary output devices include print - environment 502 including or otherwise provided by one or 

ers , speakers , tactile output devices such as motion produc - 20 more nodes . The method depicted in FIG . 2 and the method 

ing devices , and other output devices producing sensory depicted in FIG . 3 may be carried out by some or all of the 

information detectable by a user . exemplary components and / or their analogs . A device included in or otherwise providing an execution The components illustrated in FIG . 4 and FIG . 5 may be 

environment may operate in a networked environment com - included in or otherwise may be combined with some or all 

municating with one or more devices ( not shown ) via one or 25 of the components of FIG . 1 to create a variety of arrange 

more network interfaces . The terms " communication inter - ments of components according to the subject matter 

face ” and “ network interface ” are used interchangeably . described herein . FIG . 1 illustrates network interface adapter 114 as a network FIG . 6 illustrates first node 602 and second node 604 as 

interface included in execution environment 102 to opera exemplary devices included in and / or otherwise adapted for 

tively couple device 100 to a network . The terms “ network 30 ork 30 providing a suitable execution environment , such as execu 

tion environment 502 illustrated in FIG . 5 , for an adaptation node ” and “ node ” in this document both refer to a device 

having a network interface operatively coupled to a network . of the arrangement of components in FIG . 4a and an 

adaptation of the arrangement of components in FIG . 4b . As Exemplary network interfaces include wireless network illustrated in FIG . 6 , first node 602 and second node 604 are adapters and wired network adapters . Exemplary wireless 35 S 35 operatively coupled to network 606 via respective network networks include a BLUETOOTH network , a wireless interfaces enabling first node 602 and second node 604 to 802 . 11 network , and / or a wireless telephony network ( e . g . , communicate . FIG . 7 is a message flow diagram illustrating 

a cellular , PCS , CDMA , and / or GSM network ) . Exemplary an exemplary exchange of messages within and between 

wired networks include various types of LANs , wide area first node 602 and second node 604 according to the subject 

networks ( WANs ) , and personal area networks ( PAN ) . 40 matter described herein . Exemplary network adapters for wired networks include As stated , the various adaptations of the arrangements of 

Ethernet adapters , Token - ring adapters , FDDI adapters , components in FIG . 4a and in FIG . 4b described herein are 

asynchronous transfer mode ( ATM ) adapters , and modems not exhaustive . of various types . Exemplary networks also include intranets In FIG . 5 , execution environment 502 illustrates a net 

and internets such as the Internet . 45 work application 504 operating in a node configured to 

FIG . 2 is a flow diagram illustrating a first method for communicate with one or more other nodes via the TCP 

sharing information for detecting an idle TCP connection supported by TCP layer component 506 . For example , first 

according to an exemplary aspect of the subject matter node 602 may be included in and / or provide execution 

described herein . FIG . 3 is a flow diagram illustrating a environment 502 . Network application 504 may be a first 

second method for sharing information for detecting an idle 50 application configured to communicate with an application 

TCP connection according to an exemplary aspect of the operating in second node 604 via network 606 . Second node 

subject matter described herein . FIG . 4a is a block diagram 604 may be included in and / or provide another instance of 

illustrating a system for sharing information for detecting an execution environment 502 . The operation of both first node 

idle TCP connection according to the first method in FIG . 2 . 602 and second node 604 are described with respect to 

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

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

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

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

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

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

A system for sharing information for detecting an idle second node 604 in FIG . 6 . TCP connection according to the method illustrated in FIG . In FIG . 5 , network interface card ( NIC ) 508 is an exem 

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

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

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 15 of 25
US 9 , 923 , 995 B1 

10 

Ethernet LAN operating over CAT 6 cabling , or may be TCP layer component 506 in FIG . 5 may receive data 

wireless such as an 802 . 11n LAN . Other exemplary physical from any of various sources for transmitting in correspond 

layer protocols and corresponding media are identified ing TCP connections to various corresponding identified 

above . TCP connection endpoints in one or more network nodes . NIC 508 may also include a portion of link layer com - 5 FIG . 5 illustrates application in - port ( app in - port ) compo 

ponent 512 . Link layer component 512 may provide for nent 522 providing an interface component for receiving 

communication between two nodes in a point - to - point com data to transmit in a TCP connection . FIG . 5 illustrates TCP 

munication and / or two nodes in a local area network ( LAN ) . layer component 506 includes packet generator component 

552 configured to package data received by application Exemplary link layers and , their protocols have been 

described above including FDDI , ATM , and Ethernet . A 10 in - port component 522 for transmitting in one or more TCP 

portion of link layer component 512 is external to NIC 508 . packets . The one or more TCP packets are provided to IP 

layer component 514 via net out - port component 554 exem The external portion may be realized as a device driver for plifying an output interface component . NIC 508 . Analogously , TCP layer component 506 interprets data Link layer component 512 may receive data formatted as eive data formatted as 15 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 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 link layer component 512 interprets data , received as signals 20 handler component 516 to strip off and / or otherwise process transmitted by the physical media operatively coupled to TCP layer specific data . Packet handler component 516 

physical layer component 510 , according to a particular link interoperates with application out - port ( app out - port ) com 

layer protocol supported . Link layer component 512 may ponent 524 to transfer data in the TCP packet included in a 

strip off link layer specific data and transfer the payload of TCP data stream to sockets component 518 , application link layer transmissions to IP layer component 514 . 25 protocol layer 520 , network application 504 , and / or other 

IP layer component 514 illustrated in FIG . 5 is configured components associated with the local endpoint of the TCP 

to communicate with one or more remote nodes over a LAN connection . Detailed information on the operation of TCP is 

and / or a network of networks such as an intranet or the included in RFC 793 . Internet . IP layer component 514 may receive data formatted With reference to the method illustrated in FIG . 2 , block 

as TCP packets from TCP layer component 506 . IP layer 30 202 illustrates the method includes receiving , by a first node , component 514 packages data from TCP layer component first idle information for detecting a first idle time period 

506 into IP packets for transmission across a network . The during which no TCP packet including data in a first data 

network may be and / or may include an internet . Analo - stream sent in the TCP connection by a second node is 

gously , IP layer component 514 interprets data , received received by the first node . Accordingly , a system for sharing 

from link layer component 512 as IP protocol data and 35 information for detecting an idle TCP connection includes 

detects IP packets in the received data . IP layer component means for receiving , by a first node , first idle information for 

514 may strip off IP layer specific data and transfer the detecting a first idle time period during which no TCP packet payload of one or more IP packets to TCP layer component including data in a first data stream sent in the TCP con 

506 . nection by a second node is received by the first node . For 

In FIG . 5 , IP layer component 514 is operatively coupled 40 example , as illustrated in FIG . 4a , idle time period policy 

to TCP layer component 506 . TCP layer component 506 is component 450 is configured for receiving , by a first node , configured to provide a TCP connection over network 606 first idle information for detecting a first idle time period for sending and / or receiving packets included in the TCP during which no TCP packet including data in a first data 

connection between two nodes exemplified by first node 602 stream sent in the TCP connection by a second node is 

and second node 604 . 45 received by the first node . In a TCP connection including first node 602 and second FIG . 5 illustrates idle time period ( ITP ) policy component node 604 , first node 602 may include a first TCP connection 550 as an adaptation of and / or analog of ITP policy com 

endpoint and second node 604 may include a second TCP ponent 450 in FIG . 4a . One or more idle time period policy connection endpoint . The first and second TCP connection components 550 operate in execution environment 502 . endpoints identify the TCP connection . The TCP connection 50 Message 702 in FIG . 7 illustrates a communication 

may have other identifiers , in addition to the included including and / or otherwise identifying idle information endpoints . received by ITP policy component 550 . Message 702 may 

Components of execution environment 502 , in an aspect , take various forms in various aspects . Exemplary forms for 

may interoperate with TCP layer component 506 directly . In message 702 include a function / method invocation , a mes 

another aspect , one or more components , such as network 55 sage passed via a message queue , data transmitted via a pipe , application 504 , may interoperate with TCP layer compo - a message received via a network , and / or a communication 

nent 506 indirectly . Network application 504 may exchange via a shared location in IPU memory and / or secondary data with TCP layer component 506 via sockets component storage . 518 and / or an analog of sockets component 518 . Alterna - Idle information may be received from a configuration tively or additionally , network application 504 may com - 60 storage location for TCP layer component 506 in an IPU 

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

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

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

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

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

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

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 16 of 25
US 9 , 923 , 995 B1 

12 

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 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 node 602 and / or second node 604 may include a proxy connection basis . Per connection TCP options may override 5 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 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 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 15 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 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 . 20 a host in a TCP connection and / or may be proxy nodes . In an aspect , the idle information received may be based A node is referred to as being in or included in a TCP 

on a previous ITP header identified in a packet in the TCP connection when the node includes an endpoint of the 

connection received by first node 602 from second node 604 . connection and / or includes a proxy for a connection end 

The previous packet may be received by net in - port com - point , referred to as a proxy endpoint . A proxy endpoint and 

ponent 560 . The previous ITP header may be detected by 25 an endpoint in a TCP connection may be in the same node 

ITP option handler component 562 interoperating with or in different nodes . packet handler component 516 . Idle information may be In FIG . 5 , connection state component 558 may maintain 

identified and / or otherwise determined by ITP option han - state information for one or more TCP connection endpoints 

dler component 562 . ITP policy component 550 may inter - and / or proxy endpoints of corresponding TCP connections 

operate with ITP option handler component 562 to receive 30 included in an instance of an execution environment , such as 

the idle information . execution environment 502 , included in and / or provided by Idle information received , determined , and / or otherwise first node 602 or second node 604 . identified may include and / or identify a duration of time for First node 602 and / or second node 604 may play a role of 

detecting an idle time period . The duration may be specified a proxy node for a node including a TCP connection 

according to various measures of time including seconds , 35 endpoint . First node 602 and / or second node 604 may 

minutes , hours , and / or days . include a proxy endpoint representing an endpoint in a TCP 

Alternatively or additionally , idle information may connection . A proxy node forwards TCP packet data , sent by include and / or identify a generator for determining a dura - a host including a TCP connection endpoint , to another host 

tion of time for detecting an idle time period . An exemplary including a corresponding connection endpoint represented 

generator may include a formula , an expression , a function , 40 by a proxy endpoint included in the proxy node and vice 

a policy , and / or other mechanism for generating and / or versa . Exemplary proxy nodes in addition to including 

otherwise identifying a duration of time . routing and / or switching capabilities may include a bridge , In an aspect , one or more algorithms for generating a a hub , a repeater , a gateway , and a firewall . duration of time for detecting an idle time period may be In an aspect , a TCP keep - alive option , a TCP user timeout , associated with identifiers . The algorithm identifiers may be 45 a retransmission timeout , an acknowledgment timeout , and 

standardized within a group of nodes including first node or another timeout associated with a TCP connection may be 

602 and second node 604 . The received idle information modified based on the first idle information . may include and / or reference an algorithm identifier . First For example , in FIG . 5 , ITP policy component 550 

node 602 and second node 604 may each maintain an operating in first node 602 may modify an attribute of a TCP 

association between one or more of the algorithm identifiers 50 keep - alive option provided by one or more keep - alive com 

and a duration generator such as a function and / or a class ponents that may include settings service component 526 . configured to perform the identified algorithm . Modifying a keep - alive attribute may include creating the 

A duration generator may determine the duration of time attribute , deleting the attribute , and / or modifying the attri 

for detecting an idle time period based on one or more bute . ITP policy component 550 may interoperate with 

attributes accessible to one or both of first node 602 and 55 settings service component 526 , connection state component second node 604 . Exemplary attributes include a measure of 558 , and / or a keep - alive option handler component ( not 

network latency , a measure of network congestion , an indi shown ) to detect the existence and state of one or more 

cation of the availability of a particular resource , a user keep - alive attributes in determining whether a keep - alive 

specified attribute , a security attribute , an energy usage option is active and / or in identifying its current state . attribute , a user attribute such as role of the user , and / or a 60 In response to identifying the idle information , ITP policy 

measure of bandwidth supported by NIC 508 and / or a component 550 may activate , disable , and / or modify the 

physical network medium operatively coupled to NIC 508 . state of the keep - alive option via interoperation with one or 

Alternatively or additionally , idle information may more of settings service component 526 , connection state 

include a parameter such as one or more of the attributes component 558 , and / or a keep - alive option handler . Thus , in 

identified in the previous paragraph for use in a duration 65 response to identifying the idle information , ITP policy 

generator for determining a duration of time for measuring component 550 may prevent and / or alter the time a keep 

and / or otherwise detecting an idle time period . alive packet is sent to second node 604 from first node 602 . 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 17 of 25
US 9 , 923 , 995 B1 

13 14 

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

packet acknowledgment option . Thus , in response to iden component 552 may send the ITP header in a TCP packet in 

tifying the idle information , ITP policy component 550 may the TCP connection with no data included in the TCP data 

prevent and / or alter the time an acknowledgment is sent sent in in 15 15 stream stream sent sent by by Trst first node node 602 to second node 604 . Such a 

a packet in a TCP connection . packet is referred to as an empty Packet generator compo 

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

idle time period header identifying metadata for the first idle node 604 to send in the TCP data stream to first node 602 . time period based on the first idle information . Accordingly , 20 Packet generator component 552 may generate a packet 

a system for sharing information for detecting an idle TCP according to the TCP specifications and may include a 

connection includes means for generating a TCP packet header identified as an ITP header in accordance with 

including a first idle time period header identifying metadata specifications for including TCP option headers in a TCP 

for the first idle time period based on the first idle informa - packet . See RFC 793 for more details . FIG . 8 illustrates a 

tion . For example , as illustrated in FIG . 4a , packet generator 25 format or structure for a TCP packet 802 as described in 

component 452 is configured for generating a TCP packet RFC 793 . Each “ + ” character in FIG . 8 , indicates a bit including a first idle time period header identifying metadata boundary . TCP packet 802 specifies a location and format for the first idle time period based on the first idle informa for including a source port 804 portion including an iden tion . tifier for an endpoint of the TCP connection for a sending FIG . 5 illustrates packet generator component 552 as an 30 node and a destination port 806 including an identifier for a adaptation of and / or analog of packet generator component corresponding endpoint of the TCP connection in a receiving 452 in FIG . 4a . One or more packet generator components node . IP packet 810 illustrates a format for an IP packet 552 operate in execution environment 502 . header for an IP packet including TCP packet data . Source Packet generator component 552 in FIG . 5 may receive 

idle information and / or information based on the received 35 a od 25 address 812 specifies a location and format in an IP header 

idle information from ITP policy component 550 . Whether for including a network address identifying a network inter 

and when packet generator component 552 receives infor face of the sending node , and destination address 814 

mation for including an idle time period ( ITP ) header in a identifying a network interface for the receiving node . A 

TCP packet may depend on a current state of the associated network address and a port number identify a connection 

TCP connection . In FIG . 5 , ITP policy component 550 may 40 endpoint in a network . Two endpoints identify a TCP 

interoperate with connection state component 558 to deter connection . mine whether and when to provide information to packet FIG . 8 also illustrates a format for an exemplary ITP 

generator component 552 for including an ITP header in a header 820 . A KIND location is specified for including an 

TCP packet . identifier indicating that the option is an idle time period 

In an aspect , an ITP header may be included in a packet 45 ( ITP ) option in an ITP header . Identifiers for option headers 

exchanged during setup of TCP connection . RFC 793 are currently under the control of the Internet Assigned 

describes a “ three - way handshake ” for establishing a TCP Numbers Authority ( IANA ) . Length field 824 identifies a connection . The synchronization requires each side to send length of an ITP header . An ITP data field 826 is specified it ' s own initial sequence number and to receive a confirma for including ITP header information for detecting an idle tion of it in acknowledgment from the other side . Each side 50 tim O time period as described herein must also receive the other side ' s initial sequence number Those skilled in the art will recognize given this disclo and send a confirming acknowledgment . sure that an ITP header may have other suitable formats and 1 ) A - - > B SYN my sequence number is X may be included in a TCP packet in structures and locations 2 ) A < - - B ACK your sequence number is X 

3 ) A < - - B SYN my sequence number is Y other than those specified for TCP options in RFC 793 . An 

4 ) A - - > B ACK your sequence number is Y equivalent or analog of an ITP header may be included in a 

Because steps 2 and 3 can be combined in a single footer of a protocol packet in an extension and / or variant of 

message this is called the three way ( or three message ) the current TCP . handshake . ITP data field 826 in FIG . 8 may include and / or otherwise 

Other message exchanges may be used in setting up a 60 identify metadata for the first idle time period . For example , TCP connection as those skilled in the art will understand . an ITP data field in a packet may include and / or otherwise 

Such other exchanges are not currently supported by the identify one or more of a duration of time for detecting an 

TCP as described in RFC 793 . The specified “ three - way idle time period , a duration generator for determining a 

handshake " and other patterns of message exchange for duration of time for detecting an idle time period , and a 

setting up a TCP connection include packets that are con - 65 parameter for use in a duration generator for determining a 

sidered to be in the TCP connection for purposes of this duration of time for measuring and detecting an idle time 

disclosure . Including an ITP header may be restricted to period . 

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

US 9 , 923 , 995 B1 

16 

Message 704 in FIG . 7 illustrates an invocation and / or 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 5 TCP packet by first node 602 to second node 602 along with 

further includes sending the TCP packet in the TCP con - 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 10 the second ITP header . packet in the TCP connection to the second node to provide 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 15 includes means for detecting the first idle time period based 

metadata for the first idle time period to the second node . 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 - 20 as an adaptation of and / or analog of idle time period monitor 

nent 554 is illustrated operatively coupled to packet genera - 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 . 552 and interoperate with IP layer component 514 to send In an aspect , in response to receiving the first idle infor 

the TCP packet in one or more IP packets via network 606 25 mation , ITP policy component 550 may store a value rep 

to second node 604 . Message 706 . 1 in FIG . 7 illustrates a resenting a duration of time in a configuration storage 

TCP packet including an ITP header sent by first node 602 location . Alternatively , or additionally , ITP policy compo 

and received by second node 604 . nent 550 may invoke a duration generator to determine a 

In one aspect , an ITP header may be sent to make sending duration of time for detecting the idle time period . The 

one or more TCP keep - alive packets by a partner node in the 30 duration generator may be preconfigured for the TCP con 

connection unnecessary . A receiver of a packet including an nection and / or may be identified based on the idle informa 

ITP header , such as second node 604 , may keep a TCP tion received . As described , the invoked generator may be 

connection alive based on information in the ITP header . invoked with a parameter included in and / or otherwise 

In another aspect , first node 602 may set a keep - alive identified based on the received idle information . timeout attribute based on a duration of the first idle time 35 ITP policy component 550 may interoperate with ITP 

period identified in the first idle information and / or in the monitor component 556 to identify the duration for detecting 

metadata provided to second node 604 . For example , first the idle time period . ITP monitor component 556 , in various 

node 602 may monitor a time period during which no aspects , may receive information including and / or otherwise 

non - empty packets are sent or received in the TCP connec - identifying a duration of time , a duration generator , and / or 

tion . A keep - alive option handler and / or keep - alive compo - 40 a parameter for a duration generator . ITP monitor compo 

nent ( not shown ) operating in first node 602 may set a nent 556 may initiate and / or restart a process for detecting 

keep - alive timer according to the timeout attribute , with a an idle time period . In an aspect , ITP monitor component duration that will result in the keep - alive timer expiring 556 detects and / or otherwise identifies a beginning of a 

before an idle time period can occur . In response to detecting potential idle time period based on one or more specified 

a keep - alive timeout , which may be indicated by the expi - 45 events . ration of the keep - alive timer , the keep - alive option handler In an aspect , detecting the first idle time period by ITP 

and / or keep - alive policy component may provide informa - monitor component 556 may include detecting a time period tion to packet generator component 552 to generate a TCP in the idle time period during which first node 602 has 

keep - alive packet . The packet generator component 552 received acknowledgment for all data sent via the TCP 

may provide the generated packet to net out - port component 50 connection in the TCP data stream by first node 602 to 

554 for sending the TCP keep - alive packet to second node second node 604 . Further , the first idle time period may 

604 to determine whether the TCP connection is active include a time period during which first node 602 has sent 

and / or to keep the TCP connection active . one or more TCP packets to second node 604 to acknowl 

In another aspect , ITP policy component 550 operating in edge all data received in a TCP data stream in the TCP 

first node 602 may set a timer , analogous to the keep - alive 55 connection from second node 604 to first node 602 . Detect 

timer described in the previous paragraph that expires before ing the first idle time period by ITP monitor component 556 

an time period can occur . In response the timer expiring , ITP may include detecting that all received data has been 

policy component 550 may provide idle information to acknowledged and / or that all sent data has been acknowl 

packet generator component 552 to generate a TCP packet edged . including a second ITP header . Content of the second ITP 60 In an aspect , ITP policy component 550 may include a 

header may be based on the first idle information received , policy with a rule indicating that an idle time period cannot 

data received from second node 604 , information received begin while a TCP packet sent by first node 602 remains 

from a network application that may be from a user , and / or unacknowledged by second node 604 . ITP policy compo 

on any information accessible to TCP layer component 506 nent 550 may prevent ITP monitor component 556 from 

in execution environment 502 in first node 602 . The TCP 65 initiating detection of an idle time period while unacknowl 

packet generated by packet generator component 552 is edged data exists . In a further aspect , a time duration may be 

provided to IP layer component 514 via net out - port com associated and / or included in the policy identifying a limit to 

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

US 9 , 923 , 995 B1 

18 

a period of waiting to receive acknowledgment of TCP In FIG . 5 , ITP policy component 550 in first node 602 

packet data sent by first node 602 . In one aspect , waiting for may provide a duration identified based on the received idle 

lack of an acknowledgment for an empty packet does not information to a keep - alive monitor component ( not shown ) . delay detection of an idle time period , while in another The keep - alive monitor component may configure a keep 

aspect ITP monitor component 556 will not initiate detection 5 alive timer to expire based on the identified duration . In 

while an empty packet remains unacknowledged . response to detecting expiration of the keep - alive timer , ITP 

In an aspect , idle information , received by a node may be monitor component 556 may invoke packet generator com 

included in and / or otherwise based on a previous idle time ponent 552 to generate a TCP keep - alive packet . First node 

period header identified in a previous TCP packet received 602 may send the TCP packet to second node 604 . The TCP 

in the TCP connection by the node from a remote node prior 10 keep - alive packet may be sent to prevent detection of an idle 

time period by second node 604 and / or may otherwise be to sending an ITP header based on the idle information by 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 15 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 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 20 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 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 

ITP monitor component 556 may set a timer configured to 25 received TCP packet . In one aspect , an empty TCP packet 

expire in a time duration identified based on the first idle may be received while a potential idle time period is being information received by ITP policy component 550 . The monitored . That is , a beginning of the potential idle time 

identified duration may be longer , shorter , or equal to a period has been detected . In response to receiving the empty 

duration of the idle time period . ITP monitor component 556 TCP packet , monitoring of the current potential time period 

may use multiple timers . ITP monitor component 556 may 30 may be aborted . Further , in response to receiving the empty 

recalculate and / or otherwise generate a new idle duration TCP packet , a beginning of a next potential idle time period 

based on the idle information at one or more times during may be detected . detection of the first idle time period . That is , a duration of In FIG . 5 , ITP policy component 550 and ITP monitor 

an idle time period may be static and / or may be dynamic , component 556 may operate to reset and / or initiate detection 

changing based on attribute information accessible during 35 of an idle time period in response to receiving an empty TCP 

the detection process and / or based on one or more duration packet . First node 602 may receive an empty packet . In 

generators . response , ITP monitor component 556 may receive an event 

Message 710 . 1 illustrates a call and / or other communi - and / or other indication to reset detection of an idle time 

cation between ITP monitor component 556 and a timer period . Resetting the detecting process may be based on 

component in first node 602 to set a timer included in 40 whether or not a received empty TCP packet matches a 

detecting an idle time period . Prior to the setting the timer , specified condition . ITP option handler component 562 may 

first node 602 and second node 602 may be active in be configured to determine whether a received empty TCP 

exchanging TCP packets as illustrated by messages includ - packet matches the condition . If ITP option handler com 

ing message 706 . 2 through message 706 . n . Those skilled in ponent 562 determines the empty packet matches the con 

the art will recognize that detection of an idle time period 45 dition , ITP monitor component 556 may be instructed to 

may not include explicitly and / or directly using a timer . ITP reset and / or restart detection of the first idle time period monitor component 556 may monitor other events as a including detecting the beginning of a next potential time 

proxy or indirect mechanism for initiating detection and period . detecting an idle time period . The condition may match received TCP packets including 

ITP monitor component 556 may detect one or more 50 ITP headers and / or other TCP option headers . A condition 

events configured to indicate that an idle time period has may match a port number and / or other field in TCP packet . occurred . For example , expiration of a timer or multiple Acondition may further be based on a network address in an 

associated timers may be interpreted by ITP monitor com - IP header including the TCP packet . ponent 556 as marking an occurrence of the first idle time In a further aspect , first node 602 may receive via network 

period . Message 710 . 2 illustrates ITP monitor component 55 606 from second node 604a TCP packet in the TCP con 

556 receiving information identifying expiration of a timer nection including an second ITP header . Message 706 . 2 in 

for detecting the first idle time period . FIG . 7 illustrates the TCP packet sent by second node 604 . In a further aspect , in response to detecting the expiration ITP option handler component 562 may identify the second 

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

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

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

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

ment timer may be set . If a timeout of the acknowledgment data in the first TCP data stream from second node 604 . The 

timer is detected indicating no TCP packet has been received first idle time period may be detected by ITP monitor 

acknowledging the keep - alive packet , the first idle time 65 component 556 in first node 602 based on the second ITP 

period may be detected in response to and / or otherwise header and based on the received idle information . The 

based on the timeout of the acknowledgment timer . second ITP header received in the TCP packet from second 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 20 of 25
US 9 , 923 , 995 B1 

20 

node 604 may be based on the first ITP header in the TCP component 506 in second node 604 such as network appli packet sent in the TCP connection by first node 602 to cation 504 . Alternatively , the TCP packet may be an empty second node 604 . TCP packet . The received TCP packet may be a packet 

In some aspects , the first node and second node 604 may included in setting up the TCP connection as described 

continue to exchange ITP headers . Information in the 5 above . exchanged ITP headers may be based on ITP headers Returning to FIG . 3 , block 304 illustrates the method 

received in the TCP connection and / or on data accessible further includes detecting a first idle time period header , in 

locally to one or both of the nodes . In some aspects , the the first packet , identifying metadata for a first idle time 

exchange may be a negotiation while in other the exchange period , detectable by the first node , during which no TCP 

may simply be informational . 10 packet including data in a first TCP data stream sent in the 

Returning to FIG . 2 , block 210 illustrates the method TCP connection by the second node is received by the first 

further includes deactivating the TCP connection in response node . Accordingly , a system for sharing information for 

to detecting the first idle time period . Accordingly , a system detecting an idle TCP connection includes means for detect 

for sharing information for detecting an idle TCP connection ing a first idle time period header , in the first packet , further includes means for deactivating the TCP connection 15 identifying metadata for a first idle time period , detectable 

in response to detecting the first idle time period . For by the first node , during which no TCP packet including data 

example , as illustrated in FIG . 4a , the connection state in a first TCP data stream sent in the TCP connection by the 

component 458 is configured for deactivating the TCP second node is received by the first node . For example , as 

connection in response to detecting the first idle time period . illustrated in FIG . 4b , idle time period option handler 

FIG . 5 illustrates connection state component 558 as an 20 component 462 is configured for detecting a first idle time 

adaptation of and / or analog of connection state component period header , in the first packet , identifying metadata for a 

458 in FIG . 4a . One or more connection state components first idle time period , detectable by the first node , during 

558 operate in execution environment 502 . which no TCP packet including data in a first TCP data 

When ITP monitor component 556 in first node 602 stream sent in the TCP connection by the second node is 

detects an idle time period , ITP monitor component 556 may 25 received by the first node . provide an indication to connection state component 558 . FIG . 5 illustrates idle time period option handler compo 

The indication may indicate that the idle time period for the nent 562 as an adaptation of and / or analog of idle time 

TCP connection has been detected and / or otherwise may period option handler component 462 in FIG . 4b . One or 

instruct connection state component 558 and / or other com more idle time period option handler components 562 oper 

ponents in TCP layer component 506 to deactivate the TCP 30 ate in execution environment 502 . connection . Message 712 in FIG . 7 illustrates a communi - In FIG . 5 , ITP option handler component 562 is opera 

cation to deactivate the TCP connection communicated in tively coupled to packet handler component 516 The TCP 

response to detecting the idle time period . packet , including the ITP header sent by first node 602 , may Deactivating the TCP connection may include closing the be received , and identified as a TCP packet by net in - port 

TCP connection . A TCP connection may be closed using a 35 component 560 operating in second node 604 . As illustrated 

three - way handshake packet exchange described in RFC in FIG . 5 , net in - port component 560 and / or an analog of net 

793 . Deactivating the TCP connection may include sending in - port component 560 may provide and / or otherwise iden 

a TCP packet by the detecting node to reset the TCP tify the received packet to packet handler component 516 . connection . According to RFC 793 , first node 602 may send P acket handler component 516 may detect various portions 

a TCP packet including a reset ( RST ) bit set to “ 1 ” to 40 of the TCP packet according to the TPC packet 802 structure 

indicate a connection reset . Deactivating the TCP connec - as illustrated in FIG . 8 . Alternatively , packet handler com 

tion may include , alternatively or additionally , releasing a ponent 516 may provide some or all of the packet to various 

resource allocated for maintaining and / or activating the TCP components in TCP layer component 506 to identify por 

connection . tions of the packet according to the TCP specification and / or 

With respect to the method illustrated in FIG . 3 , block 302 45 according to a particular implementation . illustrates the method includes receiving , by a second node The ITP header sent by first node 602 may be received by from a first node , a first transmission control protocol ( TCP ) and / or otherwise identified by ITP option handler compo packet in a TCP connection . Accordingly , a system for n ent 562 . Message 708 in FIG . 7 exemplifies activation of 

sharing information for detecting an idle TCP connection ITP option handler component 562 for detecting the ITP 

includes means for receiving , by a second node from a first 50 header in the TCP packet received from first node 602 by 

node , a first transmission control protocol ( TCP ) packet in a second node 604 . TCP connection . For example , as illustrated in FIG . 4b , the In various aspects , ITP option handler component 562 

net in - port component 460 is configured for receiving , by a operating in second node 604 may detect and / or otherwise 

second node from a first node , a first transmission control determine a duration of time for associated with detection of 

protocol ( TCP ) packet in a TCP connection . 55 the idle time period by first node 602 , a duration generator , FIG . 5 illustrates net in - port component 560 as an adap - and / or a parameter for a duration generator . The first idle 

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

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

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

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

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

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

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

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

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

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

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 21 of 25
US 9 , 923 , 995 B1 

21 

10 

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 I t should be understood that the various components associated with the TCP connection . 5 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 . 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 edgment timeout , and another timeout associated with the 15 tions are contemplated to be within the scope of what is 

TCP connection , in response to identifying the ITP header . claimed . The modifying may be based on the content of the ITP To facilitate an understanding of the subject matter 

header . described above , many aspects are described in terms of 

For example , ITP option handler component 562 in sec - sequences of actions that may be performed by elements of 

ond node 604 may interoperate with a keep - alive attribute 20 a computer system . For example , it will be recognized that 

option handler component 564 directly and / or indirectly via the various actions may be performed by specialized circuits 

settings service component 526 , connection state component or circuitry ( e . g . , discrete logic gates interconnected to 

558 , and / or a keep - alive policy component ( not shown ) to perform a specialized function ) , by program instructions 

detect the existence and state of one or more keep - alive being executed by one or more instruction processing units , attributes in determining whether the keep - alive option is 25 or by a combination of both . The description herein of any 

active and / or the state of the keep - alive option . sequence of actions is not intended to imply that the specific 

In response to identifying the idle time period header , ITP order described for performing that sequence must be fol 

option handler component 562 may activate , disable , and / or lowed . modify the state of the keep - alive option via interoperation Moreover , the methods described herein may be embod 

with the keep - alive attribute option handler . Thus , in 30 ied in executable instructions stored in a computer readable 

response to identifying the idle information , attribute option medium for use by or in connection with an instruction 

handler component 564 may prevent and / or alter the time a execution machine , system , apparatus , or device , such as a 

keep - alive packet is sent by second node 604 to first node computer - based or processor - containing machine , system , apparatus , or device . As used herein , a “ computer readable 

Alternatively or additionally , an attribute option handler 35 medium ” may include one or more of any suitable media for 

component 564 may modify an attribute associated with a storing the executable instructions of a computer program in 

packet acknowledgment option provided by TCP layer com - one or more of an electronic , magnetic , optical , electromag 

ponent 506 in first node 602 . Modifying a packet acknowl - netic , and infrared form , such that the instruction execution 

edgment attribute may include creating the attribute , delet - machine , system , apparatus , or device may read ( or fetch ) 

ing the attribute , and / or modifying the attribute . Attribute 40 the instructions from the computer readable medium and 

option handler component 564 may interoperate with set execute the instructions for carrying out the described meth 

tings service component 526 , connection state component ods . A non - exhaustive list of conventional exemplary com 

558 , and / or an acknowledgment policy component ( not puter readable media includes a portable computer diskette ; 

shown ) to detect the existence and state of one or more a random access memory ( RAM ) ; a read only memory packet acknowledgment attributes . In response to identify - 45 ( ROM ) ; an erasable programmable read only memory 

ing the idle information , attribute option handler component ( EPROM or Flash memory ) ; optical storage devices , includ 

564 may modify the state of the packet acknowledgment ing a portable compact disc ( CD ) , a portable digital video 

option . Thus , in response to identifying the idle information , disc ( DVD ) , a high definition DVD ( HD - DVDTM ) , a Blu 

attribute option handler component 564 may prevent and / or rayTM disc ; and the like . alter the time an acknowledgment is sent in a packet data 50 Thus , the subject matter described herein may be embod 

from second node 604 to first node 602 in the TCP connec - ied in many different forms , and all such forms are contem 

tion . plated to be within the scope of what is claimed . It will be 

As described herein an ITP header for detecting an idle understood that various details may be changed without 

time period for a TCP connection may serve a number of departing from the scope of the claimed subject matter . purposes . A first node in a TCP connection may via an ITP 55 Furthermore , the foregoing description is for the purpose of 

header inform and / or otherwise identify to a second node in illustration only , and not for the purpose of limitation , as the 

the connection one or more durations for detecting an idle scope of protection sought is defined by the claims as set 

time period by one or both nodes . Given multiple purposes , forth hereinafter together with any equivalents thereof 

one or more types of ITP headers may be supported and / or entitled to . an ITP header may be structured to support one or more of 60 All methods described herein may be performed in any 

the described services . An exchange of ITP headers may be order unless otherwise indicated herein explicitly or by informational and / or may be included in negotiation context . The use of the terms “ a ” and “ an ” and “ the ” and 

between two nodes included in a TCP connection . When similar referents in the context of the foregoing description 

used in a negotiation , an ITP header may be included in a and in the context of the following claims are to be construed 

negotiation protocol that has an identifiable end during a 65 to include the singular and the plural , unless otherwise 

portion of the existence of a TCP connection or may be indicated herein explicitly or clearly contradicted by con 

included in a negotiation that may remain ongoing through - text . The foregoing description is not to be interpreted as 

602 . 

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

US 9 , 923 , 995 B1 

24 

indicating any non - claimed element is essential to the prac in response to detecting the idle time period , deactivating tice of the subject matter as claimed . the TCP - variant connection by releasing a resource 

I claim : allocated for the TCP - variant connection by one of the 1 . An apparatus comprising : first and second nodes without signaling another one of 

a non - transitory memory storing instructions , and 5 . the first and second nodes that is related to the detection 

one or more processors in communication with the non of the idle time period . transitory memory , wherein the one or more processors 12 . The apparatus of claim 1 wherein the apparatus is 

execute the instructions for : configured such that at least one of the detecting or the receiving , by a second node from a first node , a identifying is performed at a TCP - variant layer other than a transmission control protocol ( TCP ) - variant packet 10 T TCP layer , where the TCP - variant layer is above an Internet in advance of a TCP - variant connection being estab Protocol ( IP ) layer and below a hypertext transfer protocol lished ; detecting an idle time period parameter field in the ( HTTP ) application layer . 

TCP - variant packet ; 13 . The apparatus of claim 1 wherein the one or more 

identifying metadata in the idle time period parameter 15 processors execute a network application that is configured 

field for an idle time period and , during which , no to perform a 3 - way ICP handshake for establishing a TCP 

packet is communicated in the TCP - variant connec connection that is different than the TCP - variant connection , tion to keep the TCP - variant connection active ; and and wherein the network application is configured to estab 

modifying , by the second node and based on the lish the TCP - variant connection instead of the TCP connec 

metadata , a timeout attribute associated with the 20 tion in order to permit negotiation , between the first node 

TCP - variant connection . and the second node , of the timeout attribute , where the 

2 . The apparatus of claim 1 wherein the apparatus is timeout attribute is not available when establishing the TCP 

configured such that the timeout attribute is an attribute of a connection , but is available when establishing the TCP 

keep - alive . variant connection so that the TCP - variant connection is 

3 . The apparatus of claim 1 wherein at least one of : 25 capable of being at least partially closed when inactive based 

the second node includes a server , the server being on the timeout attribute . configured to : in response to the receiving , send , by the 14 . The apparatus of claim 1 wherein the apparatus is 

second node to the first node , another TCP - variant configured such that the TCP . variant nacket and the meta . configured such that the TCP - variant packet and the meta packet in advance of the TCP - variant connection being data included therewith are received by the second node established , the another TCP - variant packet including 30 fror ng so from the first node , without any prior signaling from the other metadata for the idle time period ; or second node to the first node . the second node includes a client , the client being con 15 . An apparatus comprising : figured such that the receiving is performed subsequent 

to sending , by the second node to the first node , another a non - transitory memory storing instructions ; and 

TCP - variant packet in advance of the TCP - variant 35 one or more processors in communication with the non 

connection being established including other metadata transitory memory , wherein the one or more processors 

for the idle time period . execute the instructions for : 

4 . The apparatus of claim 3 wherein , regardless as to receiving idle information for detecting an idle time 

whether the apparatus is the server or the client , the metadata period , during which , no packet is communicated in 

is the same as the other metadata . 40 a transmission control protocol ( TCP ) - variant con 

5 . The apparatus of claim 3 wherein , regardless as to nection to keep the TCP - variant connection active ; 

whether the apparatus is the server or the client , the metadata generating a TCP - variant packet including an idle time 

is different from the other metadata . period parameter field identifying metadata for the 

6 . The apparatus of claim 1 wherein the apparatus is idle time period based on the idle information ; and 

configured such that the timeout attribute is specified in at 45 sending , from a first node to a second node , the 

least one of a number of seconds or minutes . TCP - variant packet in advance of the TCP - variant 

7 . The apparatus of claim 1 wherein the apparatus is connection being established to provide the metadata 

configured such that the timeout attribute is used to keep the for the idle time period to the second node , for use 

TCP - variant connection open when inactive , and to prevent by the second node in modifying , based on the 

one or more other nodes from closing the TCP - variant 50 metadata , a timeout attribute associated with the 

connection when inactive . TCP - variant connection . 8 . The apparatus of claim 1 wherein the apparatus is 16 . The apparatus of claim 15 wherein the apparatus is 

configured such that the metadata is used as input of an configured such that modifying the timeout attribute reduces 

algorithm for determining a duration of time specified by the a number of keep - alive signals that are required to be 

timeout attribute . 55 communicated . 9 . The apparatus of claim 8 wherein the apparatus is 17 . The apparatus of claim 15 wherein the apparatus is 

configured such that the algorithm is determined based on at configured such that the TCP - variant packet and the meta 

least one particular attribute . data included therewith are sent by the first node to the 

10 . The apparatus of claim 1 wherein the apparatus is second node , without any prior signaling received by the 

configured such that the modification of the timeout attribute 60 first node from the second node . results from a negotiation between the first node and the 18 . The apparatus of claim 15 wherein the metadata 

second node via a negotiation protocol of a TCP - variant includes a first value and the timeout attribute is capable of 

protocol . being modified , by the second node , to include a second 

11 . The apparatus of claim 1 wherein the one or more value that is different than the first value of the metadata . processors execute the instructions for : 65 19 . The apparatus of claim 15 wherein the apparatus is 

detecting the idle time period based on the timeout configured such that the timeout attribute is specified in a 

attribute ; and number of seconds . 

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

se 

10 

US 9 , 923 , 995 B1 

25 

20 . The apparatus of claim 15 wherein the apparatus is the determination of the timeout attribute results from a 

configured such that the modification of the timeout attribute negotiation between the first node and the second node ; 

results from a negotiation between the first node and the and 

second node . the metadata includes a first value and the timeout attri 

21 . The apparatus of claim 15 wherein the one or more 5 bute is determined to include a second value that is 

processors execute the instructions for : different than the first value of the metadata . detecting the idle time period based on the idle informa 27 . The apparatus of claim 25 wherein the apparatus is 

tion ; and configured for : 

in response to detecting the idle time period , deactivating detecting the idle time period based on the timeout 

the TCP - variant connection . attribute ; and 

22 . The apparatus of claim 15 wherein the apparatus is deactivating the non - TCP connection by communicating configured such that at least the generating is performed at a particular packet between the first node and the 

a TCP - variant layer other than a TCP layer , where the second node , in response to detecting the idle time 

TCP - variant layer is above an Internet Protocol ( IP ) layer period . and below a hypertext transfer protocol ( HTTP ) application 15 28 . An apparatus comprising : 

layer . a non - transitory memory storing a network application ; 

23 . The apparatus of claim 15 wherein the one or more and 

processors execute a network application that is configured one or more processors in communication with the non 

to perform , in another scenario , a 3 - way TCP handshake for transitory memory , wherein the one or more processors 

establishing a TCP connection that is different than the 20 execute the network application such that the network 

TCP - variant connection , and wherein the network applica application is configured to operate in accordance with 

tion is configured to establish the TCP - variant connection a non - transmission control protocol ( TCP ) protocol instead of the TCP connection and thus permit a negotiation , that operates above an Internet Protocol ( IP ) layer and 

between the first node and the second node , of the timeout below a hypertext transfer protocol ( HTTP ) application 

attribute , where a negotiated timeout attribute is not avail - 25 layer , the apparatus , when operating in accordance with 

able when establishing the TCP connection , but is available the non - TCP protocol , configured to : 

when establishing the TCP - variant connection so that the receive idle information for use in detecting an idle 

TCP - variant connection is at least partially closed when time period that results in a non - TCP connection 

inactive based on the negotiated timeout attribute . being subject to deactivation ; 

24 . The apparatus of claim 15 wherein the apparatus is 30 generate , based on the idle information , a non - TCP 

configured such that the TCP - variant packet and the meta packet including an idle time period parameter field 

data included therewith are sent by the first node to the identifying metadata that is specified in at least one 

second node , in response to receiving , by the first node from of a number of seconds or minutes ; and 

the second node , another TCP - variant packet with other send , from a first node to a second node and for 

metadata . 35 establishing the non - TCP connection , the non - TCP 

25 . An apparatus comprising : packet to provide the metadata to the second node , a non - transitory memory storing a network application ; for use by the second node in determining a timeout 

and attribute associated with the non - TCP connection ; 

one or more processors in communication with the non wherein the apparatus , when operating in accordance with 

transitory memory , wherein the one or more processors 40 t he TCP protocol , is configured to perform a three - way 

execute the network application such that the network TCP handshake for establishing a TCP connection that 

application is configured to operate in accordance with is separate from the non - TCP connection . a non - transmission control protocol ( TCP ) protocol 29 . The apparatus of claim 28 wherein the apparatus is 

that operates above an Internet Protocol ( IP ) layer and configured such that : 

below a hypertext transfer protocol ( HTTP ) application 45 the determination of the timeout attribute results from a 

layer , the apparatus , when operating in accordance with negotiation between the first node and the second node ; 

the non - TCP protocol , configured to : during the idle time period , no non - TCP packet including receive , by a second node from a first node , a non - TCP data is communicated in the non - TCP connection ; 

packet during a setup of a non - TCP connection ; wherein the apparatus is further configured for : 

identify metadata , that specifies at least one of a num - 50 detecting the idle time period based on the idle infor 

ber of seconds or minutes , in an idle time period mation ; and 

parameter field in the non - TCP packet , for an idle in response to detecting the idle time period , deacti 

time period , where , as a result of a detection of the vating the non - TCP connection by at least partially idle time period , the non - TCP connection is subject closing the TCP - variant connection by one of the 

to deactivation ; and 55 first and second nodes without communication 

determine , based on the metadata , a timeout attribute between the second node and the first node that is 

associated with the non - TCP connection ; related to the detection of the idle time period . wherein the apparatus , when operating in accordance with 30 . The apparatus of claim 29 wherein at least one of : 

the TCP protocol , is configured to perform a three - way the apparatus is at least one component of the first node ; 

TCP handshake for establishing a TCP connection that 60 the communication includes only receiving ; 

is different than the non - TCP connection . the communication includes only sending ; 

26 . The apparatus of claim 25 wherein the apparatus is the communication includes receiving and sending ; 

configured such that : the non - TCP protocol includes a variant to the TCP ; 

the non - TCP packet and the idle time period parameter the non - TCP packet is sent directly from the first node to 

field included therewith are operable for being received 65 the second node ; 

by the second node from the first node , without any the non - TCP packet is sent from the first node to the 

prior signaling from the second node to the first node ; second node via at least one other node ; 

35 

Case 6:20-cv-00453-ADA Document 1-6 Filed 06/01/20 Page 24 of 25
US 9 , 923 , 995 B1 

28 

the idle time period parameter field is part of a data the non - TCP protocol operates directly above the IP layer ; 

portion in the non - TCP packet ; the non - TCP protocol operates directly below the HTTP 

the idle time period parameter field is part of a header of application layer ; 

the non - TCP packet ; the determination of the timeout attribute includes at least 

the idle information is received based on a previous 5 one of modifying , creating , or deleting the timeout 

header ; attribute ; 

the timeout attribute is capable being the same as the the network application provides the idle information to a 

metadata ; ITP policy component via a settings service component 

the timeout attribute is capable being different from the interoperating with a sockets component ; 

metadata ; during the idle time period , a non - TCP packet including 

the idle time period is specified in a number of seconds ; data is received by the first node where the non - TCP 

the idle time period is specified in a number of minutes ; packet including data is sent by another node ; or 

the timeout attribute specifies a duration ; during the idle time period , a non - TCP packet including 

the non - TCP packet is informational ; data is received by the first node where the non - TCP 

packet including data is sent by the second node in the the TCP protocol operates directly above the IP layer ; 15 TCP connection . the TCP protocol operates directly below the HTTP 

application layer ; * * * * * 

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