WO1998051052A1 - Reliable communication over an unreliable transport layer in a handheld device using user-configurable timers - Google Patents
Reliable communication over an unreliable transport layer in a handheld device using user-configurable timers Download PDFInfo
- Publication number
- WO1998051052A1 WO1998051052A1 PCT/US1998/008987 US9808987W WO9851052A1 WO 1998051052 A1 WO1998051052 A1 WO 1998051052A1 US 9808987 W US9808987 W US 9808987W WO 9851052 A1 WO9851052 A1 WO 9851052A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- client
- message
- server
- data
- layer
- Prior art date
Links
- 238000004891 communication Methods 0.000 title claims abstract description 104
- 238000012546 transfer Methods 0.000 claims abstract description 49
- 238000000034 method Methods 0.000 claims description 58
- 238000012545 processing Methods 0.000 claims description 29
- 230000004044 response Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013480 data collection Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/326—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
Definitions
- the present invention relates generally to data processing systems and, more particularly, to providing reliable communication over an unreliable transport layer in a hand-held device using user-configurable timers.
- Protocol stack also known as a protocol suite
- protocol stack contains a number of layers, with each layer responsible for a different facet of the data transfer.
- Each layer typically utilizes a protocol, which defines the types and formats of messages transferred by a layer to perform its facet of the data transfer.
- a data transfer typically occurs between two end systems: the source of the data and the destination for the data. Often, the end systems are not directly connected, so the data transferred between the end systems must be routed through a number of intermediate systems. Each end system typically has the same protocol stack, although the intermediate systems need only a subset of the protocol stack that includes the layers necessary to perform the routing.
- FIG. 1 depicts a protocol stack 100, known as the TCP/IP protocol stack, which has been used extensively by data transfer systems. For example, many systems on the Internet utilize a TCP/IP stack.
- the TCP/IP protocol stack 100 comprises an application layer 102, a transport layer 104, a network layer 106, and a link layer 108.
- the application layer 102 performs the processing of a particular application.
- the application layer 102 may provide file transfer functionality, electronic mail functionality, network management functionality, or remote log-in functionality.
- the application layer 102 on one end system sends data to a corresponding application layer on another end system by passing the data to the transport layer 104.
- the transport layer 104 receives data from the application layer 102 and facilitates the flow of this data between the application layers on the end systems.
- TCP transmission control protocol
- UDP user datagram protocol
- TCP (1) divides the data received from the application layer 102 into appropriately sized packets for the network layer 106, (2) acknowledges all packets received, (3) sets time-outs to ensure that the destination end system acknowledges that the packets were received, and (4) performs other functionality to ensure that when TCP receives data from the application layer 102, the corresponding TCP layer on the destination end system receives that data correctly.
- One drawback to TCP's reliable data transfer is, to perform this functionality, the size of the TCP layer is large, thus requiring a significant amount of memory.
- UDP In contrast to TCP, UDP is a much simpler service that provides unreliable data transfer.
- UDP Upon receiving data from the application layer 102, UDP forms a packet, known as a datagram, and sends this packet to the network layer 106 for transfer to the end system in an unreliable manner: no acknowledgments are used and UDP does not guarantee that the datagrams reach the end system.
- UDP thus performs less functionality than TCP and, consequently, requires less memory.
- the network layer 106 also known as the internet layer, receives packets from the transport layer 104 and performs the processing necessary to route these packets through the network.
- this layer utilizes one of three well-known protocols: the internet protocol (IP), the internet control message protocol (ICMP), or the internet group management protocol (IGMP).
- IP internet protocol
- ICMP internet control message protocol
- IGMP internet group management protocol
- the link layer 108 also known as the data-link layer or the network- interface layer, receives packets from the network layer 106 and performs the processing necessary to physically interface with the network transfer media, such as a cable, to transfer the packets across the network.
- the link layer typically includes a network interface card and a suitable device driver that resides in the operating system.
- the TCP/IP protocol stack 100 is utilized to transfer data within either a single network or within an internetwork ("internet"), which is a collection of networks using the same protocol stack.
- IP internetwork
- Each addressable entity, such as an application program, that can be accessed via the TCP/IP protocol stack has an associated IP address: the IP address is a 32-bit address specifying both a host ID (the ID of the computer on which the resource is located) and a network ID (the ID of the network on which the computer is located).
- IP addresses and, more generally, the TCP/IP protocol stack 100 is described in greater detail in Stevens, TCP/IP Illustrated Volume 1, Addison Wesley (1994), at pages 1-51, 143-168, and 223-337.
- TCP/IP protocol stack facilitates communication between systems
- some systems are unable to utilize the TCP/IP stack and are thus unable to reap the benefits of efficiently communicating with numerous systems and devices in a standardized manner with relative simplicity.
- hand-held devices devices that can both be easily held and manipulated using one or two hands, have been developed for reading bar codes. These devices receive bar-code information and transmit it to a host computer via radio communications.
- Such devices can greatly benefit from using a TCP/IP protocol stack to facilitate communications to the host and other computers in a standardized manner using standard components.
- these devices have an extremely limited amount of memory. When selecting a transport layer for such a device, the TCP layer cannot be used because it is too large, thus requiring an unacceptable amount of memory.
- the UDP layer cannot be utilized, because it provides unreliable communication, and the application on the hand-held device typically lacks the sophistication necessary to identify which datagrams have not been received, to keep track of these datagrams, and then to retransmit them when necessary. It is thus desirable to overcome these problems and to incorporate a TCP/IP protocol stack into a hand-held device.
- the disclosed system provides reliable communication over the UDP transport layer in a hand-held device.
- reliable communication By providing reliable communication over the UDP transport layer instead of using the TCP transport layer, memory requirements are reduced, and applications running on the hand-held device have reliable data transfers performed on their behalf.
- the use of standardized components such as the UDP transport layer and a standard network layer like the IP layer, enables the handheld device to efficiently communicate with many other devices in a standardized manner.
- the disclosed system provides reliable communication by utilizing a UDP+ layer on top of the UDP transport layer.
- the UDP+ layer acts as an interface between the application layer and the UDP layer both to provide reliable communication to the application layer and to hide the complexities involved with performing this functionality from the application layer.
- the UDP+ layer acknowledges all messages received, and the UDP+ layer utilizes a retry timer such that when receipt of a message has not been acknowledged and the retry timer expires, the UDP+ layer resends the message.
- the value of the retry timer as well as other values used during retransmission of the message are user-configurable and may be changed by the user to optimize performance.
- the UDP+ layer utilizes a number of messages that are used to open a connection, transfer data, and close a connection. Under a first embodiment of the present invention, a method is provided in a data processing system for transferring data between a client and a server via wireless communications.
- Both the client and the server have an unreliable transport layer that unreliably transfers the data.
- the client sends a message containing a portion of the data to the server via the unreliable transport layer of the client and the wireless communications.
- the client also sets a retry timer to a user-configurable value such that if the retry timer expires before receiving an acknowledgment to the message indicating that the message has been successfully transferred to the server, the client resends the message. Additionally, the client receives an acknowledgment indicating the successful transfer of the message and cancels the retry timer responsive to receiving this acknowledgment.
- a method is provided in a data processing system for transferring data between a client and a server via wireless communications.
- Both the client and the server have an unreliable transport layer that unreliably transfers the data.
- the server sends a message containing a portion of the data to the client via the unreliable transport layer of the server and the wireless communications.
- the server also sets a retry timer to a user-configurable value, determines whether the retry timer has expired, and determines whether the server has received an acknowledgment indicating that the message has been successfully transferred to the client. When the retry timer has expired and the server has not received the acknowledgment, the server resends the message to the client.
- a client device for transferring data to a server device via wireless communications.
- the client device includes the following components: a wireless communications subsystem for transferring the data to the server; a memory containing an unreliable transport layer, a reliability-providing component, and a computer program; and a processor for running the unreliable transport layer, the reliability-providing component, and the computer program.
- the unreliable transport layer unreliably transfers the data to the server via the wireless communications subsystem.
- the reliability-providing component reliably transfers the data over the unreliable transport layer to the server device, and if the reliability-providing component does not receive an acknowledgment indicating that the data message has been received by the server device within a user-configurable amount of time, the reliability-providing component resends the data message to the server device.
- the computer program provides the data to the reliability-providing component for the reliable transfer of the data to the server device.
- Figure 1 depicts a conventional TCP/IP protocol stack.
- Figure 2 depicts a data processing system suitable for practicing an exemplary embodiment of the present invention.
- Figure 3 depicts a more detailed diagram of a server computer of Figure 2.
- Figure 4 depicts a more detailed diagram of a connection structure of the server computer of Figure 3.
- Figure 5A depicts a graph comparing the retry strategies of a conventional system (TCP/IP) and an exemplary embodiment (UDP+).
- Figure 5B depicts a flowchart of the steps performed during retry processing.
- Figure 6 depicts a more detailed diagram of a client computer of Figure 2.
- Figure 7 A depicts a format of a UDP message.
- Figure 7B depicts a message format utilized by UDP+ layers of both the client and the server depicted in Figures 3 and 6.
- Figures 8A, 8B, and 8C depict a flowchart of exemplary steps performed by the client UDP+ layer of Figure 6 when transferring data to the server UDP+ layer of Figure 3.
- An exemplary embodiment of the present invention provides reliable communication over the UDP transport layer in a hand-held device.
- reliable communication By providing reliable communication over the UDP transport layer instead of using the TCP transport layer, memory requirements are reduced, and applications running on the hand-held device have reliable data transfers performed on their behalf.
- the use of standardized components, such as the UDP transport layer and a standard network layer like the IP layer, enables the hand-held device to efficiently communicate with many other devices in a standardized manner.
- An exemplary embodiment provides reliable communication by utilizing a
- the UDP+ layer acts as an interface between the application layer and the UDP layer both to provide reliable communication to the application layer and to hide the complexities involved with performing this functionality from the application layer.
- the UDP+ layer acknowledges all messages received, and the UDP+ layer utilizes a retry timer such that when receipt of a message has not been acknowledged and the retry timer expires, the UDP+ layer resends the message.
- the value of the retry timer as well as other values used during retransmission of the message are user-configurable and may be changed by the user to optimize performance.
- the UDP+ layer utilizes a number of messages that are used to open a connection, transfer data, and close a connection. The format of the messages and their use are further described below.
- FIG. 2 depicts a data processing system 200 that is suitable for practicing an exemplary embodiment of the present invention.
- the data processing system 200 contains a server computer 202 ("server") and a client hand-held device 204 ("client”) that are communicating using radio frequency or other wireless communications via antennae 206 and 208, respectively.
- the client 204 is a bar-code reader that reads or receives bar-code information and then transmits the bar-code information to the server 202.
- the present invention can be utilized with other systems communicating via wireless communications.
- FIG. 3 depicts a more detailed diagram of the server 202.
- the server 202 contains a memory 302, a secondary storage device 304, an input device 306, a radio communication subsystem 308, a video display 309, and a central processing unit (CPU) 310.
- the memory 302 contains an application program 312, a UDP+ layer 314, a UDP transport layer 316, an IP network layer 318, a link layer 320, and a connection structure 322.
- the application program 312 receives bar-code information from the client 204 and stores the bar-code information onto or within the secondary storage device 304, so that this information can then be used for generating reports, such as an inventory report of the types and numbers of inventory items located in a remote warehouse.
- the UDP+ layer 314 provides reliable communication over the UDP layer 316, and the UDP+ layer provides an interface 324 to the application program 312, so the application program can determine the connection status of a particular client (i.e., whether the client is connected or disconnected). To perform this processing, the UDP+ layer 314 utilizes a connection structure 322 that stores connection-related information for the clients with which it communicates.
- the UDP layer 316 is a standard UDP layer and conforms with Request for Comments (RFC) 768, J. Postel, "User Datagram Protocol," 1980.
- the IP layer 318 is a standard IP layer and conforms to RFC 791, J. Postel, "Internet Protocol," 1981.
- the link layer 320 provides suitable functionality to interface with the hardware components of the radio communication subsystem 308.
- the radio communication subsystem 308 includes an antenna 206 and network interface hardware components that facilitate communication via radio frequencies to the client 204.
- the server 202 may utilize an Ethernet connection to an Ethernet/radio frequency bridge which is external to the server.
- the connection structure 322 contains a number of entries, including entries 402 and 404.
- Each entry 402 and 404 contains connection- related information for an application program ("client application") on the client that communicates with the server.
- Each entry 402 and 404 contains the IP address 406 of the client application, the session number 408, an Rx value 410, a Tx value 412, a data pointer 414, an application ID 416, and a client state indication 418.
- the IP address 406, whose structure is well known, is a 32-bit address uniquely identifying the network address of the client application (e.g., 192.9.200.10).
- the session number 408 is a number assigned by the UDP+ layer to identify a communication session between the server and a particular client application (e.g., 55).
- the Rx value 416 contains the message or sequence number for the next message that the UDP+ layer expects (e.g., 11). Each message transferred between the client and the server by the UDP+ layer has an associated, sequential message number.
- the Rx value 410 indicates the message number of the last message that the UDP+ layer acknowledged receiving plus one. In other words, the Rx value 410 indicates the next message number that the UDP+ layer expects to receive from the client.
- the Tx value 412 indicates the number of the most recent message received from the client (e.g., 10).
- the data pointer 414 is an address to a memory location containing the next amount of data to be transferred to the client (e.g., 507).
- the application ID 416 is an identifier of the particular application utilizing the UDP+ layer.
- the application utilized by an exemplary embodiment is a bar-code scanner application used for inventory.
- the client state field 418 indicates whether the client is connected to, disconnected from, or not responding to the server.
- a client 204 is "connected" when the UDP+ layer of the client and UDP+ layer of the server have both indicated a willingness or intention to be involved in a data transfer. Establishing a connection is a necessary prerequisite for UDP+ to perform a data transfer; as such, UDP+ provides a connection-oriented protocol.
- a client can be "disconnected" either explicitly or implicitly.
- the server UDP+ layer and the client UDP+ layer exchange messages indicating their intention to terminate the connection.
- An implicit disconnect occurs when the server UDP+ layer has not received a message for more than a predetermined amount of time ranging between 1 and 3,600 minutes.
- the server UDP+ layer determines when such a time has expired by setting a dead horse timer, and when this timer expires without receiving a message from the client UDP+ layer, the server UDP+ layer changes the client's connection status to disconnected.
- a client 204 is "not responding" when the server's UDP+ layer has sent a given message to the client a predetermined number of times (e.g., 7) requesting an acknowledgment and, each time, an acknowledgment was not received.
- the message is resent when a retry timer expires, which is initially set to a configurable, predetermined value ranging between 300 milliseconds and 60 seconds. Each time the retry timer expires and a message is resent, the retry timer value increases by approximately 40%, but never exceeds a user-configurable ceiling of 60 seconds.
- the server UDP+ layer considers the client 204 to be not responding when the server UDP+ layer has sent the message to the client a predetermined number of times (e.g., 7) without receiving an acknowledgment. This predetermined number of times is known as the max retries value and may be user-configurable. The server UDP+ layer may not receive an acknowledgment because of faulty communications.
- the system When retransmitting a message in an exemplary embodiment, the system follows an underlying assumption that differs from some protocol stacks.
- the assumption made by some protocol stacks like TCP/IP, is that when a message does not reach its destination, it is because the network has too much traffic, which is a condition that may not subside for a long time.
- the protocol stacks assume that the condition which caused the transmission failure will not change for a long time, when a message does not reach its destination, the protocol stacks retransmit the message and double the value of the retry timer.
- Figure 5A depicts a comparison between the values of the retry timers for TCP/IP and an exemplary embodiment (UDP+). As shown in Figure 5A, the value of TCP/IP's retry timer increases much faster than the retry timer of UDP+. Additionally, the upper bound of TCP/IP is much higher than UDP+.
- FIG. 5B depicts a flowchart of the steps performed when sending data by the server 202 of an exemplary embodiment.
- the first step performed by the server 202 is to send data to the client 204 (step 502).
- the server 202 sets a retry timer (step 504).
- the server 202 calculates the value of the retry timer using the following variables and formulae:
- RTT The measured round trip time of the last message that received an acknowledgment (i.e., the time elapsed between sending a message and receiving an acknowledgment)
- uBound Acknowledgment timeout upper bound ranging from 2 sec. to 60 sec. - user configurable, the range of values has been empirically proven to yield the best performance for a hand-held device communicating via wireless communications.
- lBound Acknowledgment timeout lower bound ranging between 200 ms to 2 sec. - user configurable, the range of values has been empirically proven to yield the best performance for a hand-held device communicating via wireless communications.
- BETA Delay variance factor e.g., 1.3
- ATO Acknowledgment timeout or retry timer value e.g., 1.3
- SRTT (ALPHA * SRTT) + ((1 -ALPHA) * RTT)
- ATO min[uBound, max[lBound,BETA*SRTT)]]
- the "ATO" is the value to be used for the retry timer. If this value is less than the value of lBound, the value in lBound is used as the ATO value.
- the server 202 determines if it has received an acknowledgment for the message (step 506). If the server 202 has received an acknowledgment, the server updates the round trip time (RTT) by calculating the amount of time elapsed between sending the data in step 502 to receiving the acknowledgment in step 506 (step 508). After updating the RTT, the server 202 determines if there is more data to be sent (step 512). If no more data is to be sent, processing ends.
- RTT round trip time
- step 502 determines if there is more data to be sent. If the server 202 did not receive an acknowledgment, eventually the retry timer expires (step 514). After the retry timer expires, the server determines if the maximum allowable number of retries has occurred (step 516).
- the maximum allowable number of retries is contained in the max retries value, which is a user-configurable value ranging from 1 to 99 that indicates the number of times that a message should be retransmitted before the destination is considered to be not responding
- the server 202 has resent a message a number of times equivalent to the max retries value
- the server indicates in the connection structure that the client is not responding and continues to step 520 (step 518)
- the server updates the value of the retry timer (step 520)
- the value is updated by multiplying the current value of ATO by the square root of 2 (i.e., 1 4142) However, if this new value exceeds the upper bound (uBound), then the value of uBound is used
- the server resends the data (step 522) and continues to step 506 All of the values described as being used in conjunction with retry processing are user-configurable
- Figure 6 depicts a more detailed diagram of the client 204
- the client 204 is a hand-held bar-code scanner containing a memory 602, a CPU 604, a display 606, a keypad input device 608, a radio communication subsystem 610 similar to that described relative to Figure 3, and a bar- code input device 612
- the memory 602 contains an application program 614 for reading bar-code data from inventory items and for sending this data to the server 202, a UDP+ layer 616, a UDP layer 618, an IP layer 620, and a link layer 622
- the UDP+ layer 616 provides reliable communication over the UDP layer 618
- the UDP layer 618, the IP layer 620, and the link layer 622 perform similar functionality to their respective counterparts as described relative to Figure 3
- the bar-code input device 612 reads bar codes and contains a light source 624, a receiver/converter 626, and a sensor 628.
- the sensor 628 receives the light reflected from a bar code and converts this light into an electrical signal.
- the light source 624 may be a laser, while the sensor 628 may be a photodetector.
- the light source 624 may be an LED, flashbulb, infrared light source, or other light-emitting element, while the sensor 628 may be a CCD, semiconductor array, vidicon, or other area imager capable of converting received light into electrical signals.
- the receiver/converter 626 receives the electrical signal from the sensor 628 and converts it into a signal to be processed by the CPU 604.
- the sensor 628 produces an analog signal that represents the modulated light reflected from the elements in the bar code.
- a bar-code input device suitable for use with the client 204 is more clearly described in U.S. Patent No. 5,486,689, entitled “Method and Apparatus for Decoding Unresolved Multi-Width Bar Code Symbology Profiles," issued January 23, 1996, and assigned to a common assignee, which is hereby incorporated by reference. Although a suitable bar-code input device has been described, one skilled in the art will appreciate that other bar-code or data collection symbol input devices may be used.
- the UDP+ layers of both the client and server utilize a protocol that provides reliable communications over an unreliable UDP layer.
- This protocol specifies particular types and formats of messages, which are stored in a UDP packet and passed to the UDP layer for transfer.
- Figure 7A shows the standard protocol data packet layout for a UDP 700 packet as defined by RFC 768.
- This packet 700 contains a 20-byte, well- known IP header 702, an 8-byte, well-known UDP header 704, and variable-length UDP data 706.
- the messages transferred by the UDP+ layers specify a format for the UDP data 706 as shown in Figure 7B.
- the UDP+ message format for the UDP data 706 has a number of fields as shown in Figure 7B, including a 2-byte length field 708 indicating the entire length of the UDP+ data 706, a 6-byte reserved field 710, a 1-byte version identifier 712 indicating the version of UDP+ that both the client and server are utilizing, a Tx field or value 714 indicating the message number of the message, an Rx field or value 716 indicating the next message number that either the client UDP+ layer or the server UDP+ layer is expecting, a 1-byte control field 718 indicating the particular type of message, and a variable length data field 720 used for transmitting data in the messages.
- the data field 720 may include any data to be transferred, such as bar code information.
- the message format of the UDP data 706 is a generic format utilized by the UDP+ layer of an exemplary embodiment for all the different types of messages.
- control field 718 of the UDP data 706 differs depending upon the type of message transferred. There are ten messages utilized by the
- FIGS 8A, 8B, and 8C depict a flowchart of an exemplary usage of the previously described messages by both the UDP+ layer 314 on the server and the UDP+ layer 616 on the client.
- this flowchart describes the use of the retry timer, the use of the watchdog message, and other features of the system that facilitate the reliable transfer of data.
- This flowchart chronologically presents both the client and server UDP+ layer's processing.
- the example describes the client sending data to the server, one skilled in the art will appreciate that the server can likewise send data to the client.
- the client UDP+ layer 616 starts a data transfer by initiating a connection and sending a connect request to the server UDP+ layer 314 (step 802).
- the server UDP+ layer 314 receives the connect request and sends a connect response to the client UDP+ layer 616 (step 804).
- the client UDP+ layer 616 receives the connect response and sends a second connect response (step 806).
- the server UDP+ layer 314 receives the second connect response and changes the connection status of the client application 614 to indicate that the client application is connected to the server (step 808).
- the server UDP+ layer 314 accesses the connection structure and changes the client application's status field 418 to indicate that the client application 614 is connected.
- a connection has been established, and the client UDP+ layer 616 and the server UDP+ layer 314 can transfer data back and forth.
- the client UDP+ layer 616 sends a data message to the server UDP+ layer 314 and sets the retry timer (step 810).
- the data for the data message is received from the client application 614.
- the retry timer is a timer set to a value as previously described (e.g., 300 ms to 5 sec.) such that if the client UDP+ layer 616 does not receive an acknowledgment to the data message within this time, the client UDP+ layer will resend the message, thus facilitating the reliable transfer of the data to the server UDP+ layer 314.
- the server UDP+ layer 314 receives the data message and sends an IAck message to the client UDP+ layer 616 (step 812).
- the server UDP+ layer 314 also sets a dead horse timer to a value such as a user-configurable value, ranging between 1 and 3,600 minutes. If the dead horse timer expires before the server UDP+ layer 314 receives a message from the client UDP+ layer 616, then the server UDP+ layer changes the client application's connection status to disconnected, thus implicitly disconnecting the client application. In this example, the client UDP+ layer 616 receives the IAck message and cancels the retry timer (step 814).
- the client UDP+ layer 616 receives more data from the client application 614 that needs to be sent to the client UDP+ layer 616. Consequently, the client UDP+ layer 616 both sends a second data message to the server UDP+ layer 314 and sets the retry timer (step 816). After sending the second data message, the retry timer expires before the client UDP+ layer 616 receives an acknowledgment (step 818 in Figure 8B). The expiration of the retry timer indicates that an acknowledgment has not been received in a sufficient amount of time, and therefore, the client UDP+ layer 616 resends the second data message (step 820).
- the client UDP+ layer 616 then increases the retry timer value by a predetermined increment, such as 41%, and resets the retry timer (step 822).
- the increase has a ceiling or upper boundary that the retry timer will not exceed.
- the ceiling which is configurable, ranges between 2 seconds and 60 seconds. It should be appreciated that, due to the sometimes unreliable nature of wireless communications, the second data message may not arrive at the server UDP+ layer. In this situation, the processing of step 822 is repeated, and if the message has been resent a number of times equivalent to the max retries value, the client UDP+ 616 will change the server application's connection status to not responding.
- the server UDP+ layer 314 receives the resent data message, sends an IAck message to the client UDP+ layer 616, and resets the dead horse timer (step 824).
- the client UDP+ layer 616 receives the IAck message and cancels the retry timer (step 826).
- the client UDP+ layer 616 may not have data to send to the server UDP+ layer 314, because the client application 614 has not provided it with any. However, the client UDP+ layer 616 may want to remain connected to the server UDP+ layer 314, because the client application 614 eventually will have more data and does not want to incur the overhead of reestablishing the connection. Therefore, to keep the connection alive, the client UDP+ layer 616 sets a watchdog timer, so that the client UDP+ layer will be notified when it should send a watchdog message to the server UDP+ layer to keep the connection alive (step 828).
- the client UDP+ layer 616 sends the watchdog message to the server UDP+ layer 314 (step 832).
- the server UDP+ layer 314 receives the watchdog message, sends a watchdog response to the client UDP+ layer 616, and resets the dead horse timer (step 834).
- the client UDP+ layer 616 receives the watchdog response (step 836).
- the client application may instruct the client UDP+ layer 616 to terminate the connection; in this case, the client UDP+ layer sends a disconnect message to the server UDP+ layer 314 (step 838 in Figure 8C).
- the server UDP+ layer 314 receives the disconnect message and changes the client application's status in the connection structure from connected to disconnected (step 840).
- the server UDP+ layer 314 then sends a disconnect acknowledgment to the client UDP+ layer 616 (step 842), and the client UDP+ layer receives the disconnect acknowledgment (step 844).
- both the client UDP+ layer 616 and the server UDP+ layer 314 are disconnected and must reestablish a connection before they can transfer data.
- connection-related processing performed by an exemplary embodiment is described in greater detail in copending U.S. Patent Application No.08/851,848 entitled "Providing Reliable Communication Over an Unreliable Transport Layer in a Hand-Held Device Using a Persistent Session," assigned to a common assignee and filed on even date herewith, which is hereby incorporated by reference.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
Description
Claims
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP54830398A JP2001524290A (en) | 1997-05-06 | 1998-05-04 | Highly reliable data processing method and device using low reliability transport layer in handheld device using configurable timer |
AU72807/98A AU7280798A (en) | 1997-05-06 | 1998-05-04 | Reliable communication over an unreliable transport layer in a handheld device using user-configurable timers |
EP98920174A EP0980614A1 (en) | 1997-05-06 | 1998-05-04 | Reliable communication over an unreliable transport layer in a hand-held device using user-configurable timers |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US85200297A | 1997-05-06 | 1997-05-06 | |
US08/852,002 | 1997-05-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO1998051052A1 true WO1998051052A1 (en) | 1998-11-12 |
Family
ID=25312256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US1998/008987 WO1998051052A1 (en) | 1997-05-06 | 1998-05-04 | Reliable communication over an unreliable transport layer in a handheld device using user-configurable timers |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP0980614A1 (en) |
JP (1) | JP2001524290A (en) |
AU (1) | AU7280798A (en) |
WO (1) | WO1998051052A1 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001035580A1 (en) * | 1999-11-10 | 2001-05-17 | Qualcomm Incorporated | Radio link protocol enhancements to reduce setup time for data calls |
EP1244064A1 (en) * | 2001-03-21 | 2002-09-25 | Francotyp-Postalia AG & Co. KG | Franking machine with a data transmission apparatus |
EP2197153A1 (en) * | 2008-12-15 | 2010-06-16 | Koninklijke KPN N.V. | Method and device for reliable multicast using UDP |
CN105245528A (en) * | 2015-10-20 | 2016-01-13 | 北京小鸟听听科技有限公司 | User datagram protocol (UDP)-based control command transmission method, sending end and receiving end |
US9660719B2 (en) | 2014-11-17 | 2017-05-23 | Honeywell International Inc. | Minimizing propagation times of queued-up datalink TPDUs |
US9998360B2 (en) | 2014-11-17 | 2018-06-12 | Honeywell International Inc. | Minimizining message propagation times when brief datalink interruptions occur |
GB2578606A (en) * | 2018-10-31 | 2020-05-20 | Remote Diagnostic Tech Ltd | Data transmission protocol |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5334293B2 (en) * | 2008-10-30 | 2013-11-06 | 岩崎通信機株式会社 | Packet communication method |
US10749913B2 (en) * | 2018-09-27 | 2020-08-18 | Intel Corporation | Techniques for multiply-connected messaging endpoints |
-
1998
- 1998-05-04 EP EP98920174A patent/EP0980614A1/en not_active Withdrawn
- 1998-05-04 JP JP54830398A patent/JP2001524290A/en active Pending
- 1998-05-04 WO PCT/US1998/008987 patent/WO1998051052A1/en not_active Application Discontinuation
- 1998-05-04 AU AU72807/98A patent/AU7280798A/en not_active Abandoned
Non-Patent Citations (2)
Title |
---|
J. POSTEL ISI: "User Datagram Protocol", REQUEST FOR COMMENT, vol. RFC, no. 768, - 28 August 1980 (1980-08-28), pages 1 - 3, XP002080689 * |
PARTRIDGE C ET AL: "A FASTER UDP", IEEE / ACM TRANSACTIONS ON NETWORKING, vol. 1, no. 4, 1 August 1993 (1993-08-01), pages 429 - 440, XP000415366 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8295190B2 (en) | 1999-11-10 | 2012-10-23 | Qualcomm Incorporated | Radio link protocol enhancements to reduce setup time for data calls |
US6608818B1 (en) | 1999-11-10 | 2003-08-19 | Qualcomm Incorporated | Radio link protocol enhancements to reduce setup time for data calls |
RU2259015C2 (en) * | 1999-11-10 | 2005-08-20 | Квэлкомм Инкорпорейтед | Improvement of radio communication line protocol for decreasing time needed for establishing connection on data calls |
EP1806876A1 (en) * | 1999-11-10 | 2007-07-11 | Qualcomm, Incorporated | Radio link protocol enhancements to reduce setup time for data calls |
US7333440B2 (en) | 1999-11-10 | 2008-02-19 | Qualcomm Incorporated | Radio link protocol enhancements to reduce setup time for data calls |
EP2053789A1 (en) * | 1999-11-10 | 2009-04-29 | Qualcomm Incorporated | Radio link protocol enhancements to reduce setup time for data calls |
WO2001035580A1 (en) * | 1999-11-10 | 2001-05-17 | Qualcomm Incorporated | Radio link protocol enhancements to reduce setup time for data calls |
EP1244064A1 (en) * | 2001-03-21 | 2002-09-25 | Francotyp-Postalia AG & Co. KG | Franking machine with a data transmission apparatus |
US8375277B2 (en) | 2008-12-15 | 2013-02-12 | Koninklijke Kpn N.V. | Multicast with UDP using packet identifier in MPEG payload |
EP2197153A1 (en) * | 2008-12-15 | 2010-06-16 | Koninklijke KPN N.V. | Method and device for reliable multicast using UDP |
US9660719B2 (en) | 2014-11-17 | 2017-05-23 | Honeywell International Inc. | Minimizing propagation times of queued-up datalink TPDUs |
US9998360B2 (en) | 2014-11-17 | 2018-06-12 | Honeywell International Inc. | Minimizining message propagation times when brief datalink interruptions occur |
CN105245528A (en) * | 2015-10-20 | 2016-01-13 | 北京小鸟听听科技有限公司 | User datagram protocol (UDP)-based control command transmission method, sending end and receiving end |
EP3160109A1 (en) * | 2015-10-20 | 2017-04-26 | Beijing Xiaoniao Tingting Technology Co., LTD | Udp-based control command transmission method, sender and receiver |
US10348680B2 (en) | 2015-10-20 | 2019-07-09 | Beijing Xiaoniao Tingting Technology Co., LTD. | UDP-based control command transmission method, sender and receiver |
GB2578606A (en) * | 2018-10-31 | 2020-05-20 | Remote Diagnostic Tech Ltd | Data transmission protocol |
US11405490B2 (en) | 2018-10-31 | 2022-08-02 | Koninklijke Philips N.V. | Smart data transmission protocol optimized for speed and importance |
Also Published As
Publication number | Publication date |
---|---|
JP2001524290A (en) | 2001-11-27 |
EP0980614A1 (en) | 2000-02-23 |
AU7280798A (en) | 1998-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6161123A (en) | Providing reliable communication over an unreliable transport layer in a hand-held device using a persistent session | |
EP1238511B1 (en) | Method and device for performing of network operations | |
US5931916A (en) | Method for retransmitting data packet to a destination host by selecting a next network address of the destination host cyclically from an address list | |
EP1701509A1 (en) | Reliable request-response messaging over a request-response transport | |
WO1998047166A2 (en) | Data communication protocol | |
US6502128B1 (en) | Server and a method for communicating event messages from the server connected to a peripheral device and a client computer | |
EP1564959B1 (en) | System and method for trivial file transfer protocol including broadcasting function | |
EP0980614A1 (en) | Reliable communication over an unreliable transport layer in a hand-held device using user-configurable timers | |
US8578040B2 (en) | Method, system and article for client application control of network transmission loss tolerance | |
US7000024B1 (en) | Systems and methods for providing transmission control protocol communications | |
US12255795B2 (en) | Device and method for achieving improved network speed test result by preventing transmission control protocol packets from being re-transmitted | |
US20020057687A1 (en) | High speed interconnection for embedded systems within a computer network | |
US7535916B2 (en) | Method for sharing a transport connection across a multi-processor platform with limited inter-processor communications | |
US20040148422A1 (en) | Communication control method, communication system, and communication apparatus that can improve throughput | |
EP1791324B1 (en) | Dialog recovery in a multi-computer system | |
Cisco | LLC2 and SDLC Commands | |
Cisco | LLC2 and SDLC Commands | |
Cisco | LLC2 and SDLC Commands | |
JP2002290442A (en) | Communication device, program, information storage medium, and communication control method | |
Liqing et al. | TCP optimization implementation of a small embedded system | |
US8312117B1 (en) | Dialog recovery in a distributed computer system | |
CN118827743A (en) | Transmission method, device, node, storage medium and computer program product | |
KR100590886B1 (en) | Method and apparatus for file transfer in file transfer system | |
WO2021223853A1 (en) | Device and method for delivering acknowledgment in network transport protocols | |
KR20010113124A (en) | A method of message processing for packet transmitting |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AL AM AT AU BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GE GH HU IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK TJ TM TR TT UA UG UZ VN YU |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN ML MR NE SN TD TG |
|
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 1998920174 Country of ref document: EP |
|
ENP | Entry into the national phase |
Ref country code: JP Ref document number: 1998 548303 Kind code of ref document: A Format of ref document f/p: F |
|
WWP | Wipo information: published in national office |
Ref document number: 1998920174 Country of ref document: EP |
|
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
NENP | Non-entry into the national phase |
Ref country code: CA |
|
WWW | Wipo information: withdrawn in national office |
Ref document number: 1998920174 Country of ref document: EP |