US20030018793A1 - Reliable transport layer protocol in low performance 8-bit microcontrollers - Google Patents

Reliable transport layer protocol in low performance 8-bit microcontrollers Download PDF

Info

Publication number
US20030018793A1
US20030018793A1 US09/682,095 US68209501A US2003018793A1 US 20030018793 A1 US20030018793 A1 US 20030018793A1 US 68209501 A US68209501 A US 68209501A US 2003018793 A1 US2003018793 A1 US 2003018793A1
Authority
US
United States
Prior art keywords
packet
protocol
data
acknowledged
acknowledgement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US09/682,095
Inventor
Oscar Mora
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US09/682,095 priority Critical patent/US20030018793A1/en
Publication of US20030018793A1 publication Critical patent/US20030018793A1/en
Priority to US10/906,461 priority patent/US9451054B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/14Two-way operation using the same type of signal, i.e. duplex
    • H04L5/1438Negotiation of transmission parameters prior to communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]

Definitions

  • This invention relates to data transmission over a reliable transport layer protocol in a low processing power 8-bit microcontroller.
  • Communication between modern systems takes place through the use of a protocol layers model.
  • Such model is usually called communication stack because each layer works on top of another.
  • Each one has its own functions according to different levels of abstraction, so a given layer only has to be aware of its adjacent upper and lower neighbors.
  • the stack begins with an Application layer (user related layer) at the top of the stack and finishes with a Link layer (related to the physical communication between systems) at the bottom before it reaches the physical medium.
  • FIG. 1 depicts the typical four layers communication stack involved in an Internet connection.
  • Both source and destination systems ( 118 , 128 ) have a four layer stack. It is usually called stack because a given layer always work on top of another layer, beginning from the physical media up to the user interface.
  • the bottom layer 110 is the link layer, which provides the network access and network sharing functions.
  • On top of the link layer is the network layer 112 , which handles the logical addressing of the existing systems on the network.
  • the next layer is the transport layer 114 . It handles the logical connections and the integrity of the information transfer.
  • the application layer 116 represents the user related application working on the system. It dictates the length and content of the transmitted data.
  • the source system 118 must send information to another destination system 128 , so the user application 126 passes the information to the TCP or UDP protocol 124 .
  • the TCP protocol located on the transport layer, is a connection-oriented protocol. Before any data transmission, the source node must ask for a connection to be opened at the destination node, that is to say, there must be a previous agreement between both systems previous to the data transfer.
  • each block received at the destination node sends back an acknowledge packet to notify about the correct arrival of the information.
  • a sequence number is provided by the source so the destination can tell which block of data is being acknowledged.
  • the source node makes a timeout and resends the unacknowledged packet.
  • a retry counter defines the maximum number of resend packets.
  • both source and destination systems must send and receive information and acknowledge packets.
  • the TCP protocol supports piggybacking acknowledging, which is able to send back acknowledge packets carrying valid data information on it. With piggybacking acknowledging, unnecessary traffic is avoided since only one packet is sent instead of two.
  • the sequence number besides providing the identification mechanism, also provides the order of the packets, so the TCP layer at the destination node is able to reconstruct the original sent information, in the correct order.
  • UDP User Datagram Protocol
  • An UDP data transfer doesn”t establish a connection between the source and destination systems so every sent packet, called datagram, uses connectionless communication. This protocol doesn”t provide the acknowledge and ordering mechanism explained before in the TCP protocol thus every sent datagram is not guaranteed to arrive at the destination. Furthermore, it doesn”t provide the correct order of sent datagrams.
  • UDP In contrast with the TCP protocol, UDP is not a reliable transport protocol, but it requires much less processing power and memory usage.
  • IP layer 122 Every block sent from the TCP or UDP layer is received by the IP layer 122 .
  • This protocol is related to the addressing matters, placing the source and the destination addresses in the packet before it reaches the next layer. Those addresses are known as IP addresses.
  • An IP address is a 32-bit number which identifies a node in the network.
  • the IP layer 122 is also able to fragment every block of information received from the previous layer, in case the network interface layer 120 is unable to handle the actual size of the packet. Generally such fragmentation can be disabled form the application layer. If the fragmentation is disabled and the packet is too big to be managed by the next layer (link layer), that packet is discarded.
  • the network interface layer 120 provides the platform to physically send the packet to the network.
  • the link layer 120 b receives each piece of information and gives it to the IP layer 122 b . If there has been any fragmentation during the transportation of the packets over the network, all the pieces are brought back together before it reaches the TCP (or UDP) layer 124 b . In the case of receiving TCP blocks of information, the corresponding acknowledge packets are sent back to the source system. In the case of a UDP packet, the information gets to the final user application 126 b with the same order it was received from the UDP layer 124 b . In a TCP connection, the information is correctly arranged before it reaches the application layer 126 b.
  • the communication stack separates the type of systems involved in the communication from the communication process itself, being possible the existence of a high processing power system like a personal computer talking to a low processing power system like an 8-bit microcontroller.
  • a low processing power 8-bit microcontroller can be considered working at 10 million cycles by second or 10 MHz, with a maximum of 512 bytes in RAM (Random Access Memory).
  • the resources needed for the stack are mostly used by the TCP protocol.
  • a TCP connection consumes a lot of memory to maintain the connection related information (destination address, source and destination sequence number, etc) as well as a count of the acknowledged and unacknowledged sent blocks of data with their corresponding order in the sending-receiving mechanism.
  • a complex algorithm is also needed to decode an incoming packet, since the connection state dictates the way to process that packet. For example, if the connection already has been established and a data packet is received, the TCP layer considers it as a valid data transfer and sends it to the application layer. If the connection has not been opened or the connection has been closed and the same data packet is received, it would be wasted away, since the actual connection state requires an opening transaction first.
  • Another attempt to provide a reliable transport mechanism (e.g., U.S. Pat. No. 6,076,114) also proposes an extra layer over the UDP protocol to ensure the integrity of the information. Again, the connection oriented extra layer and the existence of several connection states take us to the same problem of memory usage and complex decoding processing.
  • the present invention comprises a method which provides a reliable connectionless protocol to transfer short pieces of information. Such data transfer can take place between two microcontrollers or between a microcontroller and a personal computer.
  • the proposed protocol works on top of the already existing UDP/IP protocols, which are intrinsically non-reliable. It provides a new communication layer of low memory and processing time usage, suitable for low processing power microcontroller.
  • FIG. 1 shows the communication layers involved in a typical TCP/IP-UDP/IP information transfer.
  • FIG. 2 shows the typical length in bytes of an Ethernet/IP/(TCP-UDP) packet.
  • FIG. 3 shows a UDP datagram including the RUDP two-fields header.
  • FIG. 4 shows a piggybacking vs. a non-piggybacking information transfer.
  • FIG. 5 shows the flowchart of the RUDP protocol send function.
  • FIG. 6 shows the flowchart of the RUDP protocol receive function.
  • FIG. 1 shows the typical length, measured in bytes, of a UDP/IP and a TCP/IP packet sent over a LAN (Local Area Network) working with the Ethernet standard as the link layer protocol.
  • LAN Local Area Network
  • the Ethernet header 210 contains all the information needed to send a packet from a source to a destination system connected on the same LAN. The content of this header is irrelevant to this invention.
  • the IP header 212 contains the following fields: The total length of the IP packet, an identification number of the packet, one flag called “don”t fragment”, indicating if the packet can (flag equals 0) or can”t be fragmented (flag equals 1), one flag called “more fragments” indicating the existence of more fragments (flag equals 1) from the same packet or indicating the presence of the last fragment (flag equals 0), the source IP address and the destination IP address.
  • the other fields are not described due to its irrelevancy to the invention.
  • the UDP header 214 contains the source and destination ports and the length of the UDP packet.
  • the UDP port provides a mechanism to maintain several logical connections to different applications working on the same system.
  • the source system and the destination system can use different ports to communicate with each other, and that port number is specified in the UDP packet.
  • the TCP header 216 substitutes the UDP header 214 in the case of a connection-oriented transfer.
  • the explanation of each field is not a matter of the invention. It was included to show the difference, in header length, between both transport protocols.
  • the information being sent by the application is placed in the TCP or UDP data field 218 .
  • the UDP transport protocol doesn”t provide a reliable transfer mechanism.
  • RUDP ReliableUDP
  • a reliable communication protocol is provided in a message-oriented information transfer.
  • FIG. 3 shows a UDP datagram including the UDP header 214 and UDP data field 218 . Two new fields have been included into the data field 218 . Together, they form the RUDP header 310 .
  • the Type of packet field 312 is a one-byte value with three possible meanings:
  • the packet contains valid data that must be acknowledged (reliable context). This value is called acknowledged service.
  • the packet contains valid data that doesn”t need to be acknowledged (unreliable context). This value is called unacknowledged service.
  • the packet is an acknowledge response, so the data field is not valid. This value is called acknowledge service response.
  • the packet ID field 314 is a one-byte field. It has different meanings according to the Type of Packet field 312 , as follows:
  • the packet ID contains a number between 1 and 255 chosen by the source system. That number is sequentially increased with each send command executed by the application layer, whether the transfer is successful or not.
  • this field contains the packet ID of the data packet that is being acknowledged.
  • the sent message is contained in the RUDP data field 316 .
  • the length of this field can be obtained subtracting two bytes (the length of the RUDP header) from the length field in the UDP header 214 .
  • the RUDP layer works on top of the UDP layer and under the application layer. All information to be sent is received by the RUDP layer. The type of packet and packet ID fields are added as the beginning of the UDP data field. The type of packet must be the equivalent acknowledge service number (0 ⁇ 01) for reliable communication or the equivalent unacknowledged service number (0 ⁇ 02) for unreliable communication. The unacknowledged service has the same function as a normal UDP data transfer.
  • a timer is turned on to wait for the arrival of the corresponding acknowledge service response (0 ⁇ 03) packet, whose packet ID field matches the original sent packet ID. If the timer expires, the packet is resent and the timer is reset and turned on again. This procedure is repeated until an acknowledge arrives or until the maximum number of retries is reached. At this point the application layer is informed about the success or failure of the transfer. Any duplicated or out of time acknowledge response packet is discarded.
  • an incoming acknowledge service packet always generates back an acknowledge service response packet.
  • the new received packet is then checked in case it is a duplicated message. This is done by storing the packet ID and source address of the most recent received packets. If there is a match, it means the packet was already received before but the acknowledge response was lost; the incoming packet is ignored.
  • the message is passed to the application layer at the destination system.
  • Communication in this invention considers two low processing power microcontrollers or a personal computer and a microcontroller as the source and destination systems. Most of the microcontroller related applications do not need great amounts if information. They are likely based on the transmission of short messages, considering a short message as a group of bytes in the range of 0 to 255 bytes, which dictates, for example, the mode of operation of the microcontroller. Applications involved with the handling of big pieces of information, like a file transfer mechanism, use more sophisticated equipment, capable of handling all that information in an efficient way.
  • every packet is independent from the previous and subsequent packets, since all information is short enough to be contained in a single UDP/IP packet. In consequence, fragmentation of information at the IP layer is unnecessary.
  • every sent packet must have the “don”t fragment” flag in the 1 state on the IP header in order to avoid fragmentation. It must also has the “more fragment” flag in the 0 state, indicating the existence of only one IP fragment.
  • every received packet must be checked for that same state in both flags. If any of the flags are not in the indicated states, the packet is ignored.
  • the source A 118 sends a packet to destination B 128 ( 420 ).
  • Destination B 128 sends back the acknowledge packet ( 422 ) followed by another packet containing his own message ( 424 ).
  • the source A 118 receives both packets and sends back the corresponding acknowledge to destination B 128 ( 426 ).
  • the protocol does not need to establish a connection between the source and the destination system.
  • connectionless scheme is enough in a message-oriented context, since the information messages are not related with each other. Thus the whole communication process is reduced to a sending mechanism and a receiving mechanism. A mechanism to open and close a connection (like the TCP protocol) is not needed anymore, reducing the protocol”s algorithmic complexity.
  • FIG. 5 shows the send function.
  • the information or message to be sent comes from the user application 126 at the top of the stack to the RUDP layer 510 .
  • the provided algorithm 512 - 524 assemblies the packet and places it on the UDP layer 124 .
  • the corresponding header is added on the UDP 124 , IP 122 and network interface 120 layers and finally the packet is sent over the network.
  • a complementary receive function shown on FIG. 6 takes an incoming packet and decodes each header in an inverse order: Network interface 120 header first, followed by the IP 122 header and the UDP 124 header. The packet received by the RUDP layer 510 is finally decoded according to the algorithm 610 - 634 .
  • the invention takes in account two main processes, a sending function and a receiving function, being the receiving function the one with major complexity.
  • the sending function shows the user application 126 , which commands the RUDP layer 510 to send a message.
  • the process begins at 512 . If the application layer asks for an unacknowledged service ( 514 ), the packet type takes the corresponding value of 0 ⁇ 03 ( 516 ) and the packet is sent to the UDP layer ( 518 ).
  • ID_Counter is an increasing counter which stores the actual value to be assigned to the packet ID.
  • the UDP layer places the source port and the destination port.
  • the source port is a 16-bit number indicating which port is available in the source system to receive any incoming packet.
  • the destination port must be a 16 bit number known by the application layer. That port should be available at the destination system to receive the packet.
  • the “don”t fragment” flag is set to 1, and the more fragment flag is set to 0.
  • the source and destination addresses are placed and the packet is sent to the link layer where will be sent to the network.
  • the receiving function begins with the acceptance of a packet from the network at the network interface layer 120 .
  • the original packet has headers from every layer.
  • the link layer extracts the link layer header and passes the IP-UDPRUDP-Application packet to the IP layer 122 .
  • This layer takes the IP header to check if the “don”t fragment” flag is set to the 1 state and the “more fragment” flag is set to the 0 state. If that is the case, the UDP-RUDP-Application packet is delivered to the next layer, UDP ( 124 ). Otherwise, the packet is discarded.
  • the destination port of the packet is extracted from the UDP header and is matched with the actual available open ports. If there is a match, the RUDP-Application packet is accepted for the next layer, the RUDP 510 ; otherwise, it”s discarded. Any subsequent response that should be sent to the system where the packet came from will go to the source port provided in the UDP header.
  • the receive function starts ( 610 ) the decoding process.
  • the type of packet field is first checked ( 612 ) for an acknowledge service message, identified by a 0 ⁇ 01. If that is the case, an acknowledge service response message is generated ( 614 ) by placing a 0 ⁇ 02 in the type of packet field and assigning the same packet ID as the received message. Finally, the response is sent to the UDP layer to be sent to the network.
  • the received message is then checked for duplicity ( 616 ). It is done by comparing the packet ID and the IP address of the source system with the packet ID”s-source IP addresses from the most recent received packets. If there is a match, the message is ignored ( 622 ). If the message is not duplicated, the information about the ID packet and source IP address is stored ( 618 ) and the message is finally sent to the application layer ( 620 ).
  • the message is an acknowledge service response to a previously sent message.
  • the packet ID and the source IP address are matched to the values of the previously sent message ( 626 , 628 ). If any of those values don”t match, the acknowledge response is wrong and it”s ignored ( 622 ).
  • the retry timer is disabled and the ID_counter is incremented by one ( 630 ).
  • the RUDP layer returns an OK value to the application layer 632 indicating the message transfer was successful.
  • the communication method of the invention provides a reliable, connectionless protocol, which minimizes the memory and processing time usage.
  • This invention shows a method for a reliable communication independent from the system on which is implemented.
  • the present description particularly considers a personal computer and 8-bit microcontrollers as communication systems to show the flexibility of the implementation.

Abstract

A reliable communication protocol RUDP is provided to transfer data between two systems connected in a network. Working over the unreliable UDP transport layer protocol, the RUDP protocol adds an acknowledging mechanism to otherwise unreliable UDP packets. Contrary to the TCP transport layer protocol, which establishes a connection before any data transfer, the RUDP is used to transfer short amounts of information or messages, so a connectionless communication is used. In a connectionless context the complexity of the encoding-decoding algorithm and the amount of memory consumed by the protocol is reduced. Such characteristics makes the RUDP protocol suitable for its implementation in systems with limited memory and speed, like low processing power 8-bit microcontrollers. Furthermore, by programming the RUDP protocol over the UDP protocol, its implementation in a personal computer can be made with common programming tools.

Description

    BACKGROUND OF INVENTION
  • 1. Background Field of Invention [0001]
  • This invention relates to data transmission over a reliable transport layer protocol in a low processing power 8-bit microcontroller. [0002]
  • 2. Background Discussion of Prior Art [0003]
  • Communication between modern systems takes place through the use of a protocol layers model. Such model is usually called communication stack because each layer works on top of another. Each one has its own functions according to different levels of abstraction, so a given layer only has to be aware of its adjacent upper and lower neighbors. The stack begins with an Application layer (user related layer) at the top of the stack and finishes with a Link layer (related to the physical communication between systems) at the bottom before it reaches the physical medium. [0004]
  • One of the most common protocol stacks today is the TCP/IP (Transmission Control Protocol/Internet Protocol), which became popular due to the growth of the Internet. FIG. 1 depicts the typical four layers communication stack involved in an Internet connection. [0005]
  • Both source and destination systems ([0006] 118, 128) have a four layer stack. It is usually called stack because a given layer always work on top of another layer, beginning from the physical media up to the user interface. The bottom layer 110 is the link layer, which provides the network access and network sharing functions. On top of the link layer is the network layer 112, which handles the logical addressing of the existing systems on the network. The next layer is the transport layer 114. It handles the logical connections and the integrity of the information transfer. Finally, the application layer 116 represents the user related application working on the system. It dictates the length and content of the transmitted data.
  • The [0007] source system 118 must send information to another destination system 128, so the user application 126 passes the information to the TCP or UDP protocol 124.
  • The TCP protocol, located on the transport layer, is a connection-oriented protocol. Before any data transmission, the source node must ask for a connection to be opened at the destination node, that is to say, there must be a previous agreement between both systems previous to the data transfer. [0008]
  • After the connection is established, the information is divided in smaller blocks so the [0009] IP layer 122 could be able to handle it as an IP packet. To provide the integrity of the sent data, each block received at the destination node sends back an acknowledge packet to notify about the correct arrival of the information. A sequence number is provided by the source so the destination can tell which block of data is being acknowledged.
  • If the acknowledge packet doesn”t arrive, the source node makes a timeout and resends the unacknowledged packet. A retry counter defines the maximum number of resend packets. [0010]
  • In bi-directional communication, both source and destination systems must send and receive information and acknowledge packets. The TCP protocol supports piggybacking acknowledging, which is able to send back acknowledge packets carrying valid data information on it. With piggybacking acknowledging, unnecessary traffic is avoided since only one packet is sent instead of two. [0011]
  • The sequence number, besides providing the identification mechanism, also provides the order of the packets, so the TCP layer at the destination node is able to reconstruct the original sent information, in the correct order. [0012]
  • When all the information has been transferred, either the source or the destination node asks for a connection termination. Both systems agree to end the connection and the TCP transfer is successful. [0013]
  • There is another transport layer protocol called UDP (User Datagram Protocol). An UDP data transfer doesn”t establish a connection between the source and destination systems so every sent packet, called datagram, uses connectionless communication. This protocol doesn”t provide the acknowledge and ordering mechanism explained before in the TCP protocol thus every sent datagram is not guaranteed to arrive at the destination. Furthermore, it doesn”t provide the correct order of sent datagrams. [0014]
  • In contrast with the TCP protocol, UDP is not a reliable transport protocol, but it requires much less processing power and memory usage. [0015]
  • Every block sent from the TCP or UDP layer is received by the [0016] IP layer 122. This protocol is related to the addressing matters, placing the source and the destination addresses in the packet before it reaches the next layer. Those addresses are known as IP addresses. An IP address is a 32-bit number which identifies a node in the network.
  • The [0017] IP layer 122 is also able to fragment every block of information received from the previous layer, in case the network interface layer 120 is unable to handle the actual size of the packet. Generally such fragmentation can be disabled form the application layer. If the fragmentation is disabled and the packet is too big to be managed by the next layer (link layer), that packet is discarded.
  • Finally, the [0018] network interface layer 120 provides the platform to physically send the packet to the network.
  • At the [0019] destination node 128, its link layer 120 b receives each piece of information and gives it to the IP layer 122 b. If there has been any fragmentation during the transportation of the packets over the network, all the pieces are brought back together before it reaches the TCP (or UDP) layer 124 b. In the case of receiving TCP blocks of information, the corresponding acknowledge packets are sent back to the source system. In the case of a UDP packet, the information gets to the final user application 126 b with the same order it was received from the UDP layer 124 b. In a TCP connection, the information is correctly arranged before it reaches the application layer 126 b.
  • With these four layers the information transfer can take place between two systems. The communication stack separates the type of systems involved in the communication from the communication process itself, being possible the existence of a high processing power system like a personal computer talking to a low processing power system like an 8-bit microcontroller. By those skilled in the art a low processing power 8-bit microcontroller can be considered working at 10 million cycles by second or 10 MHz, with a maximum of 512 bytes in RAM (Random Access Memory). [0020]
  • In a personal computer the programming of the three upper layers ([0021] Application Layer 116, Transport Layer 114 and Network Layer 112) can be easily done, since that kind of systems have enough memory and processing power to handle a communication stack. The implementation of those same layers becomes a hard task if we consider the fact that 8-bit microcontrollers are very speed and memory limited to implement those three layers.
  • The resources needed for the stack (memory and processing time) are mostly used by the TCP protocol. A TCP connection consumes a lot of memory to maintain the connection related information (destination address, source and destination sequence number, etc) as well as a count of the acknowledged and unacknowledged sent blocks of data with their corresponding order in the sending-receiving mechanism. A complex algorithm is also needed to decode an incoming packet, since the connection state dictates the way to process that packet. For example, if the connection already has been established and a data packet is received, the TCP layer considers it as a valid data transfer and sends it to the application layer. If the connection has not been opened or the connection has been closed and the same data packet is received, it would be wasted away, since the actual connection state requires an opening transaction first. [0022]
  • For a personal computer, those resource requirements are easily met, but for low performance microcontrollers there is not enough memory and processing power to handle the TCP layer. [0023]
  • In the recent past there have been many attempts to provide a reliable transport protocol in the context of a low use of memory (e.g., U.S. Pat. No. 6,161,123). With this approach, a new reliable layer is added over the UDP layer and under the user application layer. Even when the amount of memory needed to provide such reliability is lower than a common TCP implementation, the new layer is still connection oriented. It means that both source and destination nodes must be always aware of the state of the connection and must be aware of which pieces of the information are being transferred. Certain memory consumption is still maintained and the decoding algorithm is still complex for an 8-bit microcontroller device. [0024]
  • Another attempt to provide a reliable transport mechanism (e.g., U.S. Pat. No. 6,076,114) also proposes an extra layer over the UDP protocol to ensure the integrity of the information. Again, the connection oriented extra layer and the existence of several connection states take us to the same problem of memory usage and complex decoding processing. [0025]
  • Both methods are suitable in the case of transmission of great amount of information, for example files transfer. However, the most common applications using low performance microcontrollers, in a networking context, only need short bursts of information. In a microcontroller-personal computer or a microcontroller-microcontroller connection scenario, the information traveling back and forward is very likely to contain small quantities of information, considering “low quantities” a number between 0 and 255 bytes. For example, it could contain commands to be executed by the microcontroller or messages indicating or asking the status of the device. [0026]
  • In summary, the memory and processing time required by a TCP protocol or any connection-oriented protocol are not suitable for a low processing power microcontroller. [0027]
  • SUMMARY OF INVENTION
  • The present invention comprises a method which provides a reliable connectionless protocol to transfer short pieces of information. Such data transfer can take place between two microcontrollers or between a microcontroller and a personal computer. [0028]
  • The proposed protocol works on top of the already existing UDP/IP protocols, which are intrinsically non-reliable. It provides a new communication layer of low memory and processing time usage, suitable for low processing power microcontroller. [0029]
  • Objects and Advantages [0030]
  • Accordingly, several objects and advantages of the present invention are: a) To provide a reliable method for information transfer. [0031]
  • b) To provide a simple and efficient method of information transfer suitable to the processing and memory limitations of a low processing power microcontroller. [0032]
  • c) To provide a connectionless method of information transfer, which minimizes the algorithm complexity and the needed processing time. [0033]
  • d) To provide an efficient method of information transfer suitable for those connections whose amounts of information transfer are in the range of 0 to 255 bytes, or message-oriented. [0034]
  • e) To provide a program, algorithm or mechanism such that the method could be programmed both on a microcontroller and a personal computer in a simple manner. [0035]
  • Other objects and advantages of this invention will become apparent from a consideration of the ensuing description and drawings.[0036]
  • BRIEF DESCRIPTION OF DRAWINGS
  • FIG. 1 shows the communication layers involved in a typical TCP/IP-UDP/IP information transfer. [0037]
  • FIG. 2 shows the typical length in bytes of an Ethernet/IP/(TCP-UDP) packet. [0038]
  • FIG. 3 shows a UDP datagram including the RUDP two-fields header. [0039]
  • FIG. 4 shows a piggybacking vs. a non-piggybacking information transfer. [0040]
  • FIG. 5 shows the flowchart of the RUDP protocol send function. [0041]
  • FIG. 6 shows the flowchart of the RUDP protocol receive function.[0042]
  • LIST OF REFERENCE NUMERALS IN DRAWINGS
  • [0043] 110 Communication Link layer
  • [0044] 112 Communication Network layer
  • [0045] 114 Communication Transport layer
  • [0046] 116 Communication Application layer
  • [0047] 118 Hypothetical source system A
  • [0048] 120 Network interface
  • [0049] 122 IP protocol
  • [0050] 124 TCP or UDP protocol
  • [0051] 126 User application
  • [0052] 128 Hypothetical destination system B
  • [0053] 210 Ethernet header
  • [0054] 212 IP protocol header
  • [0055] 214 UDP protocol header
  • [0056] 216 TCP protocol header
  • [0057] 218 TCP or UDP data field
  • [0058] 310 RUDP protocol header
  • [0059] 312 RUDP protocol type of packet field
  • [0060] 314 RUDP protocol Packet ID field
  • [0061] 316 RUDP data field
  • [0062] 414 Data sending process from A to B
  • [0063] 416 Data and acknowledge sending process from B to A
  • [0064] 418 Acknowledge sending process from A to B
  • [0065] 420 Data sending process from A to B
  • [0066] 422 Acknowledge sending process from B to A
  • [0067] 424 Data sending process from B to A
  • [0068] 426 Acknowledge sending process from A to B
  • [0069] 510 RUDP protocol
  • [0070] 512, 610 Start of function
  • [0071] 514, 520, 612, 616, 624, 626, 628, 634 Flowchart decision blocks
  • [0072] 516, 522, 614, 618, 630 Flowchart process blocks
  • [0073] 518, 524, 620, 622, 632 Flowchart end of function blocks
  • DETAILED DESCRIPTION
  • Now, the present invention will be described by referring to the accompanying drawings that illustrate preferred embodiments of the invention. [0074]
  • A transfer process using the layers stack model shown on the FIG. 1 has a nested scheme. The lower layers are the outer shells, so the information sent or received by the application layer becomes the content of the inner shell. Each shell added by a layer contains information handled only by that layer. That information is generally called layer header, or protocol header. FIG. 2 shows the typical length, measured in bytes, of a UDP/IP and a TCP/IP packet sent over a LAN (Local Area Network) working with the Ethernet standard as the link layer protocol. [0075]
  • The [0076] Ethernet header 210 contains all the information needed to send a packet from a source to a destination system connected on the same LAN. The content of this header is irrelevant to this invention.
  • The [0077] IP header 212 contains the following fields: The total length of the IP packet, an identification number of the packet, one flag called “don”t fragment”, indicating if the packet can (flag equals 0) or can”t be fragmented (flag equals 1), one flag called “more fragments” indicating the existence of more fragments (flag equals 1) from the same packet or indicating the presence of the last fragment (flag equals 0), the source IP address and the destination IP address. The other fields are not described due to its irrelevancy to the invention.
  • The [0078] UDP header 214 contains the source and destination ports and the length of the UDP packet. The UDP port provides a mechanism to maintain several logical connections to different applications working on the same system. The source system and the destination system can use different ports to communicate with each other, and that port number is specified in the UDP packet.
  • The [0079] TCP header 216 substitutes the UDP header 214 in the case of a connection-oriented transfer. The explanation of each field is not a matter of the invention. It was included to show the difference, in header length, between both transport protocols. The information being sent by the application is placed in the TCP or UDP data field 218.
  • The UDP transport protocol, as stated before, doesn”t provide a reliable transfer mechanism. By the inclusion of an intermediate transport layer called RUDP (ReliableUDP), a reliable communication protocol is provided in a message-oriented information transfer. [0080]
  • Two new fields representing the RUDP protocol header must be added as part of the data field in a UDP datagram. FIG. 3 shows a UDP datagram including the [0081] UDP header 214 and UDP data field 218. Two new fields have been included into the data field 218. Together, they form the RUDP header 310. The Type of packet field 312 is a one-byte value with three possible meanings:
  • The packet contains valid data that must be acknowledged (reliable context). This value is called acknowledged service. [0082]
  • The packet contains valid data that doesn”t need to be acknowledged (unreliable context). This value is called unacknowledged service The packet is an acknowledge response, so the data field is not valid. This value is called acknowledge service response. [0083]
  • The [0084] packet ID field 314 is a one-byte field. It has different meanings according to the Type of Packet field 312, as follows:
  • If the packet contains valid data that must be acknowledged, the packet ID contains a number between 1 and 255 chosen by the source system. That number is sequentially increased with each send command executed by the application layer, whether the transfer is successful or not. [0085]
  • If the packet contains valid data that doesn”t need to be acknowledged, this field is ignored. [0086]
  • If the packet is an acknowledged response, this field contains the packet ID of the data packet that is being acknowledged. [0087]
  • The sent message is contained in the [0088] RUDP data field 316. The length of this field can be obtained subtracting two bytes (the length of the RUDP header) from the length field in the UDP header 214.
  • The conditions named before can be summarized in the following table: Type of packet Packet IDData field 0×01=Acknowledge serviceNumber between 1-255Valid data0×02=Unacknowledged serviceIgnoredValid data0×03=Acknowledge service response Previously received Packet ID between 1-255IgnoredThe RUDP layer works on top of the UDP layer and under the application layer. All information to be sent is received by the RUDP layer. The type of packet and packet ID fields are added as the beginning of the UDP data field. The type of packet must be the equivalent acknowledge service number (0×01) for reliable communication or the equivalent unacknowledged service number (0×02) for unreliable communication. The unacknowledged service has the same function as a normal UDP data transfer. [0089]
  • After sending a packet with the acknowledge service, a timer is turned on to wait for the arrival of the corresponding acknowledge service response (0×03) packet, whose packet ID field matches the original sent packet ID. If the timer expires, the packet is resent and the timer is reset and turned on again. This procedure is repeated until an acknowledge arrives or until the maximum number of retries is reached. At this point the application layer is informed about the success or failure of the transfer. Any duplicated or out of time acknowledge response packet is discarded. [0090]
  • At the receiving system, an incoming acknowledge service packet always generates back an acknowledge service response packet. The new received packet is then checked in case it is a duplicated message. This is done by storing the packet ID and source address of the most recent received packets. If there is a match, it means the packet was already received before but the acknowledge response was lost; the incoming packet is ignored. [0091]
  • If the packet is valid (not duplicated), the message is passed to the application layer at the destination system. [0092]
  • An incoming unacknowledged service packet is not verified. It just goes up to the application layer at the destination system. [0093]
  • Communication in this invention considers two low processing power microcontrollers or a personal computer and a microcontroller as the source and destination systems. Most of the microcontroller related applications do not need great amounts if information. They are likely based on the transmission of short messages, considering a short message as a group of bytes in the range of 0 to 255 bytes, which dictates, for example, the mode of operation of the microcontroller. Applications involved with the handling of big pieces of information, like a file transfer mechanism, use more sophisticated equipment, capable of handling all that information in an efficient way. [0094]
  • In a short message context, some simplifications can be applied in this invention. [0095]
  • First, every packet is independent from the previous and subsequent packets, since all information is short enough to be contained in a single UDP/IP packet. In consequence, fragmentation of information at the IP layer is unnecessary. In the microcontroller, every sent packet must have the “don”t fragment” flag in the 1 state on the IP header in order to avoid fragmentation. It must also has the “more fragment” flag in the 0 state, indicating the existence of only one IP fragment. At the same time, every received packet must be checked for that same state in both flags. If any of the flags are not in the indicated states, the packet is ignored. [0096]
  • Second, it is very unlikely to find a bi-directional communication. Most times, the transfer takes place in one direction. In consequence, there is no need of a piggybacking acknowledging mechanism and one packet ID field is enough for an exclusive non-piggybacking mechanism, instead of the two sequence numbers found on TCP for the received and transmitted data. In the case of a bi-directional communication (a sent message originates another returning message) there will be a penalty of one extra acknowledge message sent. FIG. 4 shows both situations. In a piggybacking mechanism, the source system A [0097] 118 sends a packet to destination system B 128 (414). Destination B 128 sends back its message and the corresponding acknowledge to the source A 118 (416). The source A 118 sends the final acknowledge to destination B 128 (418). In this mechanism there is a total of three sent procedures.
  • In a non-piggybacking mechanism, the [0098] source A 118 sends a packet to destination B 128 (420). Destination B 128 sends back the acknowledge packet (422) followed by another packet containing his own message (424). The source A 118 receives both packets and sends back the corresponding acknowledge to destination B 128 (426). There is a total of four packets involved in this mechanism.
  • The penalty lies in an extra sent packet containing an acknowledgment and the delay time associated with the assembly of that packet. However, a forced non-piggybacking mechanism implies less complexity in both the sending and receiving mechanism, since de RUDP layer doesn”t need to be aware of any pending outgoing message to be sent with an acknowledge response, and neither it has to handle an incoming acknowledge response coming with a new message. [0099]
  • In third place, the protocol does not need to establish a connection between the source and the destination system. [0100]
  • A connectionless scheme is enough in a message-oriented context, since the information messages are not related with each other. Thus the whole communication process is reduced to a sending mechanism and a receiving mechanism. A mechanism to open and close a connection (like the TCP protocol) is not needed anymore, reducing the protocol”s algorithmic complexity. [0101]
  • Both functions can be clearly explained with a flowchart describing the algorithm needed to generate an outgoing message and the algorithm needed to decode an incoming message. FIG. 5 shows the send function. The information or message to be sent comes from the [0102] user application 126 at the top of the stack to the RUDP layer 510. The provided algorithm 512-524 assemblies the packet and places it on the UDP layer 124. The corresponding header is added on the UDP 124, IP 122 and network interface 120 layers and finally the packet is sent over the network.
  • A complementary receive function shown on FIG. 6 takes an incoming packet and decodes each header in an inverse order: [0103] Network interface 120 header first, followed by the IP 122 header and the UDP 124 header. The packet received by the RUDP layer 510 is finally decoded according to the algorithm 610-634.
  • Operation of Invention [0104]
  • As said before, the invention takes in account two main processes, a sending function and a receiving function, being the receiving function the one with major complexity. [0105]
  • The sending function, as shown on FIG. 5, shows the [0106] user application 126, which commands the RUDP layer 510 to send a message. The process begins at 512. If the application layer asks for an unacknowledged service (514), the packet type takes the corresponding value of 0×03 (516) and the packet is sent to the UDP layer (518).
  • If the application layer asks for an acknowledge service ([0107] 520), the packet type takes the corresponding value of 0×01, the retry timer is set and the packet ID takes the value in the ID_Counter (522). ID_Counter is an increasing counter which stores the actual value to be assigned to the packet ID. By sending sequential packet ID numbers, the destination system, if needed, can notice about the loss of a message. When it reaches the maximum value 255 it goes back to 1. Finally, the packet is sent to the next layer, the UDP layer (518).
  • If the user application asks for an unknown service number, an error warning is sent back ([0108] 524).
  • The UDP layer places the source port and the destination port. The source port is a 16-bit number indicating which port is available in the source system to receive any incoming packet. The destination port must be a 16 bit number known by the application layer. That port should be available at the destination system to receive the packet. [0109]
  • At the IP layer, the “don”t fragment” flag is set to 1, and the more fragment flag is set to 0. The source and destination addresses are placed and the packet is sent to the link layer where will be sent to the network. [0110]
  • The receiving function, shown on FIG. 6, begins with the acceptance of a packet from the network at the [0111] network interface layer 120. The original packet has headers from every layer. The link layer extracts the link layer header and passes the IP-UDPRUDP-Application packet to the IP layer 122. This layer takes the IP header to check if the “don”t fragment” flag is set to the 1 state and the “more fragment” flag is set to the 0 state. If that is the case, the UDP-RUDP-Application packet is delivered to the next layer, UDP (124). Otherwise, the packet is discarded.
  • At the [0112] UDP layer 124 the destination port of the packet is extracted from the UDP header and is matched with the actual available open ports. If there is a match, the RUDP-Application packet is accepted for the next layer, the RUDP 510; otherwise, it”s discarded. Any subsequent response that should be sent to the system where the packet came from will go to the source port provided in the UDP header.
  • At the [0113] RUDP layer 510, the receive function starts (610) the decoding process. The type of packet field is first checked (612) for an acknowledge service message, identified by a 0×01. If that is the case, an acknowledge service response message is generated (614) by placing a 0×02 in the type of packet field and assigning the same packet ID as the received message. Finally, the response is sent to the UDP layer to be sent to the network.
  • The received message is then checked for duplicity ([0114] 616). It is done by comparing the packet ID and the IP address of the source system with the packet ID”s-source IP addresses from the most recent received packets. If there is a match, the message is ignored (622). If the message is not duplicated, the information about the ID packet and source IP address is stored (618) and the message is finally sent to the application layer (620).
  • If the type of packet turns out to be 0×02 ([0115] 624), the message is an acknowledge service response to a previously sent message. The packet ID and the source IP address are matched to the values of the previously sent message (626, 628). If any of those values don”t match, the acknowledge response is wrong and it”s ignored (622).
  • When the acknowledge response is OK the retry timer is disabled and the ID_counter is incremented by one ([0116] 630). The RUDP layer returns an OK value to the application layer 632 indicating the message transfer was successful.
  • Finally, when the type of packet is a 0×03 ([0117] 634), the message is immediately delivered to the application layer (620), since the packet arrived as an unacknowledged service. Any RUDP packet with unknown packet type is ignored (622).
  • Conclusion, Ramifications and Scope of Invention [0118]
  • Thus, the reader will see that the communication method of the invention provides a reliable, connectionless protocol, which minimizes the memory and processing time usage. [0119]
  • By working on top of a common UDP/IP communication stack, its implementation in a personal computer is simplified. Furthermore, by using a message-oriented instead of a connection-oriented scheme it is possible to implement the encoding-decoding algorithm in a low processing power 8-bit microcontroller with a minimum consumption of memory and processing time. [0120]
  • This invention shows a method for a reliable communication independent from the system on which is implemented. The present description particularly considers a personal computer and 8-bit microcontrollers as communication systems to show the flexibility of the implementation. [0121]
  • While our above description contains many specificities, these should not be construed as limitations to the scope of the invention, but rather as an exemplification of one preferred embodiment thereof. Obviously, modifications and alterations will occur to others upon a reading and understanding of this specification such as, for example, several possible variations to the presented packet structure to include other fields into the protocol”s header, or changing the length or order of the specified fields. [0122]
  • The description above is intended, however, to include all such modifications and alterations insofar as they come within the scope of the appended claims or the equivalents thereof. [0123]

Claims (17)

What is claimed is:
1. A method for providing a reliable connectionless protocol to transfer short pieces of information, the method comprising the steps of:
Using a data transfer process using a layers stack model consisting of multiple layers; and
Adding an intermediate transport layer with the following fields, type of packet and packet ID.
2. The method in claim 1 in which said type of packet field is a single byte.
3. The method in claim 1 in which said packet ID is a single byte.
4. The method in claim 1 in which said type of data field has three possible meanings:
that it is a packet that contains data that must be acknowledged;
that it is a packet that contains data that does not need to be acknowledged; and
that it is a packet that is an acknowledge response.
5. The method in claim 1 in which said Packet ID has three possible meanings:
it is a number choosen by the packet sending means if it is in a packet that contains data that must be acknowledged;
the field is ignored if it is in a packet that contains data that does not need to be acknowledged; and
it is the packet ID of the data packet being acknowledged if it is in a packet that is an acknowledge response.
6. The method in claim 1 in which includes the following steps comprising:
Sending a packet with the acknowledgement request;
Turning on a timer means;
Waiting for an acknowledgement for the sent packet;
Resending the packet if timer means exceed set response time without receiving an acknowledgement;
Repeating the previous two steps until acknowledgement is received or a set number of retries is reached; and
Reporting the results.
7. The method in claim 1 in which includes the following steps comprising:
Receiving a packet with an acknowledgement request;
Checking to see if it is a duplicate packet by comparing the packet number with the previously received packet;
Generating an acknowledgement; and
Processing the data.
8. The method in claim 1 in which includes processing with an 8-bit microprocesser.
9. The method in claim 1 in which includes the following steps comprising using an UDP transport protocol.
10. A computer program wherein the base component has interfaces and the program code for:
Using a data transfer process using a layers stack model consisting of multiple layers; and
Adding an an intermediate transport layer with the following fields, type of packet and packet ID.
11. The computer program in claim 10 in which said type of packet field is a single byte.
12. The computer program in claim 10 in which said packet ID is a single byte.
13. The computer program in claim 10 in which said type of data field has three possible meanings:
that it is a picket that contains data that must be acknowledged;
that it is a packet that contains data that does not need to be acknowledged; and
that it is a packet that is an acknowledge.
14. The computer program in claim 10 in which said Packet ID has three possible meanings:
it is a number choosen by the packet sending means if it is in a packet that contains data that must be acknowledged;
the field is ignored if it is in a packet that contains data that does not need to be acknowledged; and
it is the packet ID of the data packet being acknowledged if it is in a packet that is an acknowledge response.
15. The computer program in claim 10 further comprising:
Computer code for sending a packet with the acknowledgement request;
Computer code for turning on a timer means;
Computer code for waiting for acknowledgement for the sent packet;
Computer code for resending the packet if timer means exceed set response time before acknowledgement is received;
Computer code for repeating the previous two steps until acknowledgement is received or a set number of retries is reached; and
Computer code for reporting the results.
16. The computer program in claim 10 further comprising:
Computer code for receiving a packet with an acknowledgement request;
Computer code for checking to see if it is a duplicate packet by comparing the packet number with the previously received packet;
Computer code for generating an acknowledgement; and
Computer code for processing the data.
17. The computer program in claim 10 further comprising using an UDP transport protocol.
US09/682,095 2001-07-19 2001-07-19 Reliable transport layer protocol in low performance 8-bit microcontrollers Abandoned US20030018793A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US09/682,095 US20030018793A1 (en) 2001-07-19 2001-07-19 Reliable transport layer protocol in low performance 8-bit microcontrollers
US10/906,461 US9451054B2 (en) 2001-07-19 2005-02-22 Reliable transport layer protocol in low performance 8-bit microcontrollers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/682,095 US20030018793A1 (en) 2001-07-19 2001-07-19 Reliable transport layer protocol in low performance 8-bit microcontrollers

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US10/906,461 Continuation US9451054B2 (en) 2001-07-19 2005-02-22 Reliable transport layer protocol in low performance 8-bit microcontrollers

Publications (1)

Publication Number Publication Date
US20030018793A1 true US20030018793A1 (en) 2003-01-23

Family

ID=24738169

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/682,095 Abandoned US20030018793A1 (en) 2001-07-19 2001-07-19 Reliable transport layer protocol in low performance 8-bit microcontrollers
US10/906,461 Expired - Lifetime US9451054B2 (en) 2001-07-19 2005-02-22 Reliable transport layer protocol in low performance 8-bit microcontrollers

Family Applications After (1)

Application Number Title Priority Date Filing Date
US10/906,461 Expired - Lifetime US9451054B2 (en) 2001-07-19 2005-02-22 Reliable transport layer protocol in low performance 8-bit microcontrollers

Country Status (1)

Country Link
US (2) US20030018793A1 (en)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055577A1 (en) * 2000-12-20 2005-03-10 Wesemann Darren L. UDP communication with TCP style programmer interface over wireless networks
US20050221895A1 (en) * 2004-04-02 2005-10-06 Microsoft Corporation Binding of wireless game controller to host
US20060059186A1 (en) * 2001-12-27 2006-03-16 Ingemar Backlund Method and apparatus relating to retransmission of data between different protocol layers
US20070066275A1 (en) * 2002-01-28 2007-03-22 Nagy Thomas C Multiple-processor wireless mobile communication device
US20080201389A1 (en) * 2007-02-20 2008-08-21 Searete, Llc Cross-media storage coordination
US20080198844A1 (en) * 2007-02-20 2008-08-21 Searete, Llc Cross-media communication coordination
US20080205406A1 (en) * 2007-02-27 2008-08-28 Fujitsu Limited Recording medium having reception program recorded therein, recording medium having transmission program recorded therein, transmission/reception system and transmission/reception method
US20080304483A1 (en) * 2004-08-06 2008-12-11 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US20100220728A1 (en) * 2004-08-06 2010-09-02 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US20120072520A1 (en) * 2009-05-27 2012-03-22 St-Ericsson Sa System and Method for Establishing Reliable Communication in a Connection-Less Environment
US20120106319A1 (en) * 2009-06-25 2012-05-03 Koninklijke Philips Electronics N.V. Method and device for processing data packets
WO2012075885A1 (en) * 2010-12-10 2012-06-14 中兴通讯股份有限公司 Data transmission method and device
US8437370B2 (en) 2011-02-04 2013-05-07 LiveQoS Inc. Methods for achieving target loss ratio
US8717900B2 (en) 2011-02-07 2014-05-06 LivQoS Inc. Mechanisms to improve the transmission control protocol performance in wireless networks
US9189307B2 (en) 2004-08-06 2015-11-17 LiveQoS Inc. Method of improving the performance of an access network for coupling user devices to an application server
US9590913B2 (en) 2011-02-07 2017-03-07 LiveQoS Inc. System and method for reducing bandwidth usage of a network
US9647952B2 (en) 2004-08-06 2017-05-09 LiveQoS Inc. Network quality as a service
GB2578606A (en) * 2018-10-31 2020-05-20 Remote Diagnostic Tech Ltd Data transmission protocol
US10951743B2 (en) 2011-02-04 2021-03-16 Adaptiv Networks Inc. Methods for achieving target loss ratio
CN113259370A (en) * 2021-06-03 2021-08-13 腾讯科技(深圳)有限公司 Data transmission method, device, equipment, system and readable storage medium
US11637887B2 (en) * 2013-07-26 2023-04-25 Samsung Electronics Co., Ltd. Packet transmission protocol supporting downloading and streaming

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5388784B2 (en) * 2009-10-02 2014-01-15 キヤノン株式会社 COMMUNICATION DEVICE, COMMUNICATION DEVICE CONTROL METHOD, AND PROGRAM
US10582022B2 (en) * 2016-05-20 2020-03-03 Citrix Systems, Inc. Adaptive session reliability over multiple transports

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014705A (en) * 1991-10-01 2000-01-11 Intermec Ip Corp. Modular portable data processing terminal having a higher layer and lower layer partitioned communication protocol stack for use in a radio frequency communications network
US6076114A (en) * 1997-04-18 2000-06-13 International Business Machines Corporation Methods, systems and computer program products for reliable data transmission over communications networks
US6161123A (en) * 1997-05-06 2000-12-12 Intermec Ip Corporation Providing reliable communication over an unreliable transport layer in a hand-held device using a persistent session
US6310892B1 (en) * 1994-11-21 2001-10-30 Oracle Corporation Reliable connectionless network protocol
US6504910B1 (en) * 2001-06-07 2003-01-07 Robert Engelke Voice and text transmission system
US6543005B1 (en) * 1999-10-27 2003-04-01 Oracle Corporation Transmitting data reliably and efficiently
US6567406B1 (en) * 1999-12-10 2003-05-20 Tropic Networks Inc. Method of labeling data units with a domain field
US6621799B1 (en) * 1998-10-05 2003-09-16 Enterasys Networks, Inc. Semi-reliable data transport

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6351487B1 (en) * 1997-09-17 2002-02-26 Texas Instruments Incorporated Digital subscriber line device driver using communication window size based on relative data rates of upstream and downstream communications
US6212184B1 (en) * 1998-07-15 2001-04-03 Washington University Fast scaleable methods and devices for layer four switching
US20050259682A1 (en) * 2000-02-03 2005-11-24 Yuval Yosef Broadcast system
US7113501B2 (en) * 2000-11-16 2006-09-26 Cisco Technology, Inc. Synchronization of V42bis de/compression for V34/V42 modem relay method and apparatus
US7165112B2 (en) * 2001-06-22 2007-01-16 Motorola, Inc. Method and apparatus for transmitting data in a communication system
US7616573B2 (en) * 2004-06-10 2009-11-10 Alcatel Lucent Fair WRED for TCP UDP traffic mix

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014705A (en) * 1991-10-01 2000-01-11 Intermec Ip Corp. Modular portable data processing terminal having a higher layer and lower layer partitioned communication protocol stack for use in a radio frequency communications network
US6310892B1 (en) * 1994-11-21 2001-10-30 Oracle Corporation Reliable connectionless network protocol
US6076114A (en) * 1997-04-18 2000-06-13 International Business Machines Corporation Methods, systems and computer program products for reliable data transmission over communications networks
US6161123A (en) * 1997-05-06 2000-12-12 Intermec Ip Corporation Providing reliable communication over an unreliable transport layer in a hand-held device using a persistent session
US6621799B1 (en) * 1998-10-05 2003-09-16 Enterasys Networks, Inc. Semi-reliable data transport
US6543005B1 (en) * 1999-10-27 2003-04-01 Oracle Corporation Transmitting data reliably and efficiently
US6567406B1 (en) * 1999-12-10 2003-05-20 Tropic Networks Inc. Method of labeling data units with a domain field
US6504910B1 (en) * 2001-06-07 2003-01-07 Robert Engelke Voice and text transmission system

Cited By (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055577A1 (en) * 2000-12-20 2005-03-10 Wesemann Darren L. UDP communication with TCP style programmer interface over wireless networks
US8266677B2 (en) * 2000-12-20 2012-09-11 Intellisync Corporation UDP communication with a programmer interface over wireless networks
US7895343B2 (en) * 2001-12-27 2011-02-22 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus relating to retransmission of data between different protocol layers
US20060059186A1 (en) * 2001-12-27 2006-03-16 Ingemar Backlund Method and apparatus relating to retransmission of data between different protocol layers
US8582583B2 (en) * 2002-01-28 2013-11-12 Blackberry Limited Multiple-processor wireless mobile communication device
US20070066275A1 (en) * 2002-01-28 2007-03-22 Nagy Thomas C Multiple-processor wireless mobile communication device
US9247581B2 (en) 2002-01-28 2016-01-26 Blackberry Limited Multiple-processor wireless mobile communication device
US20050221895A1 (en) * 2004-04-02 2005-10-06 Microsoft Corporation Binding of wireless game controller to host
US10574742B2 (en) 2004-08-06 2020-02-25 LiveQoS Inc. Network quality as a service
US20080304483A1 (en) * 2004-08-06 2008-12-11 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US9189307B2 (en) 2004-08-06 2015-11-17 LiveQoS Inc. Method of improving the performance of an access network for coupling user devices to an application server
US9379913B2 (en) * 2004-08-06 2016-06-28 LiveQoS Inc. System and method for achieving accelerated throughput
US20110103388A1 (en) * 2004-08-06 2011-05-05 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US7953114B2 (en) 2004-08-06 2011-05-31 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US20110206043A1 (en) * 2004-08-06 2011-08-25 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US8009696B2 (en) * 2004-08-06 2011-08-30 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US9647952B2 (en) 2004-08-06 2017-05-09 LiveQoS Inc. Network quality as a service
US9893836B2 (en) 2004-08-06 2018-02-13 LiveQoS Inc. System and method for achieving accelerated throughput
US20100272122A1 (en) * 2004-08-06 2010-10-28 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US20100220728A1 (en) * 2004-08-06 2010-09-02 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US11445052B2 (en) 2004-08-06 2022-09-13 Adaptiv Networks Inc. System and method for achieving accelerated throughput
US8548003B2 (en) 2004-08-06 2013-10-01 LiveQoS Inc. System and method for achieving accelerated throughput
US20080201389A1 (en) * 2007-02-20 2008-08-21 Searete, Llc Cross-media storage coordination
US20080198844A1 (en) * 2007-02-20 2008-08-21 Searete, Llc Cross-media communication coordination
US9008117B2 (en) 2007-02-20 2015-04-14 The Invention Science Fund I, Llc Cross-media storage coordination
US7860887B2 (en) 2007-02-20 2010-12-28 The Invention Science Fund I, Llc Cross-media storage coordination
US9760588B2 (en) 2007-02-20 2017-09-12 Invention Science Fund I, Llc Cross-media storage coordination
US9008116B2 (en) * 2007-02-20 2015-04-14 The Invention Science Fund I, Llc Cross-media communication coordination
US20080205406A1 (en) * 2007-02-27 2008-08-28 Fujitsu Limited Recording medium having reception program recorded therein, recording medium having transmission program recorded therein, transmission/reception system and transmission/reception method
US20120072520A1 (en) * 2009-05-27 2012-03-22 St-Ericsson Sa System and Method for Establishing Reliable Communication in a Connection-Less Environment
US11323551B2 (en) 2009-06-25 2022-05-03 Koninklijke Philips N.V. Method and device for processing data packets
US20120106319A1 (en) * 2009-06-25 2012-05-03 Koninklijke Philips Electronics N.V. Method and device for processing data packets
US10791204B2 (en) 2009-06-25 2020-09-29 Koninklijke Philips N.V. Method and device for processing data packets
US10694008B2 (en) * 2009-06-25 2020-06-23 Koninklijke Philips N.V. Method and device for processing data packets
US11683403B2 (en) 2009-06-25 2023-06-20 Koninklijke Philips N.V. Method and device for processing data packets
WO2012075885A1 (en) * 2010-12-10 2012-06-14 中兴通讯股份有限公司 Data transmission method and device
US10951743B2 (en) 2011-02-04 2021-03-16 Adaptiv Networks Inc. Methods for achieving target loss ratio
US8437370B2 (en) 2011-02-04 2013-05-07 LiveQoS Inc. Methods for achieving target loss ratio
US10057178B2 (en) 2011-02-07 2018-08-21 LiveQoS Inc. System and method for reducing bandwidth usage of a network
US9647945B2 (en) 2011-02-07 2017-05-09 LiveQoS Inc. Mechanisms to improve the transmission control protocol performance in wireless networks
US9590913B2 (en) 2011-02-07 2017-03-07 LiveQoS Inc. System and method for reducing bandwidth usage of a network
US8717900B2 (en) 2011-02-07 2014-05-06 LivQoS Inc. Mechanisms to improve the transmission control protocol performance in wireless networks
US11637887B2 (en) * 2013-07-26 2023-04-25 Samsung Electronics Co., Ltd. Packet transmission protocol supporting downloading and streaming
US11405490B2 (en) 2018-10-31 2022-08-02 Koninklijke Philips N.V. Smart data transmission protocol optimized for speed and importance
GB2578606A (en) * 2018-10-31 2020-05-20 Remote Diagnostic Tech Ltd Data transmission protocol
CN113259370A (en) * 2021-06-03 2021-08-13 腾讯科技(深圳)有限公司 Data transmission method, device, equipment, system and readable storage medium

Also Published As

Publication number Publication date
US20050129064A1 (en) 2005-06-16
US9451054B2 (en) 2016-09-20

Similar Documents

Publication Publication Date Title
US9451054B2 (en) Reliable transport layer protocol in low performance 8-bit microcontrollers
Velten et al. Reliable data protocol
US8190960B1 (en) Guaranteed inter-process communication
US8495257B2 (en) Network direct memory access
AU2003281126B2 (en) System and method for reliable packet data transport in a computer network
CN101047714B (en) Apparatus and method for processing network data
US7761588B2 (en) System and article of manufacture for enabling communication between nodes
US7471681B2 (en) Determining network path transmission unit
US5745685A (en) Protocol extension in NSPP using an acknowledgment bit
US7966380B2 (en) Method, system, and program for forwarding messages between nodes
JPH10510403A (en) Multi-processor environment
CA2249169A1 (en) Mechanism for dispatching packets via a telecommunications network
JP2007104137A (en) Data communication apparatus
US20190132085A1 (en) Fast Detection and Retransmission of Dropped Last Packet in a Flow
WO2004017219A1 (en) Apparatus and method for transmit transport protocol termination
US20020131364A1 (en) Handling of data packets
US6996105B1 (en) Method for processing data packet headers
US8578040B2 (en) Method, system and article for client application control of network transmission loss tolerance
US7535916B2 (en) Method for sharing a transport connection across a multi-processor platform with limited inter-processor communications
EP3367599B1 (en) Method and system for transferring data within a layered architecture of network components
CN113132069A (en) Communication mechanism for packet loss retransmission and method for realizing same based on FPGA
US20040223506A1 (en) Packet communication device sending delayed acknowledgement through network
JP2001333096A (en) Communication equipment
Velten et al. RFC0908: Reliable Data Protocol
KR100298483B1 (en) Multiple CPU Board Level Higher Communication Protocols

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: EXPRESSLY ABANDONED -- DURING EXAMINATION