Memory and processor efficient network communications protocol
System and method for a full featured network communications protocol that is both memory and processor efficient. A preferred embodiment comprises a method for transmitting information between electronic devices, the method comprising creating a connection between a pair of electronic devices, sending a packet between the pair, acknowledging a receipt of the packet by a receiver of the packet, and dissolving the connection when it is no longer needed. The creating of the connection comprises assigning a port number to the connection at an initiating electronic device and then transmitting a connection request containing the port number to a servicing electronic device. After the transmitting, the creating further comprises receiving a second port number to the connection from the servicing electronic device.
The present invention relates generally to a system and method for digital communications, and more particularly to a system and method for a full featured network communications protocol that is both memory and processor efficient.
BACKGROUNDThere are a large number of network communications protocols that can be used to provide a way for electronic devices, such as computers, personal digital assistants, electronic calculators, telemetry devices, and so forth, to exchange information and data. The capabilities of the available network communications protocols can vary widely, ranging from simple and small to large and complex.
The simple and small network communications protocols typically trade-off a rich feature set and fault tolerance for the ability to operate on electronic devices with limited processing capability and memory capacity. Furthermore, the simple and small network communications protocols usually offer good performance due to smaller overhead. The large and complex network communications protocols usually require electronic devices with some minimum level of processing capacity and memory. However, in return, the large and complex network communications protocols will usually provide a wide variety of message routing options and the ability to tolerate certain types of faults.
While the large and complex network communications protocols offer a rich feature set, along with fault tolerance, their computation and memory requirements may preclude their use in applications wherein the electronic devices do not meet the requirements. However, there are situations wherein these electronic devices require the ability to route messages in several different ways as well as the ability to tolerate certain types of faults.
One approach that can be used to meet the communications requirement of the electronic devices would be to add additional capability to an existing network communications protocol, wherein the existing network communications protocol provided some but not all of the needed functionality and had computation and memory requirements that could be met by the electronic devices. This approach can have the advantage of making use of an existing and well-tested network communications protocol that may have a large set of development tools.
One disadvantage of the prior art is even if the existing network communications protocol has computation and memory requirements that can be met by the electronic devices, there may not be any assurance that the electronic devices will be able to meet the computation and memory requirements of the modified network communications protocol.
A second disadvantage of the prior art is that if too many modifications are made to the existing network communications protocol, the amount of development may be similar to the development required to create a network communications protocol from scratch and will not adhere to the standards set by the protocol. Hence tools that are built for that protocol may no longer work.
SUMMARY OF THE INVENTIONThese and other problems are generally solved or circumvented, and technical advantages are generally achieved, by preferred embodiments of the present invention which provides for a memory and processor efficient network communications protocol.
In accordance with a preferred embodiment of the present invention, a method for communicating between electronic devices in a communications network is provided. The method comprises creating a connection between a first electronic device and a second electronic device, wherein the creating comprises, assigning a first port number to the connection at the first electronic device, transmitting a connection request to the second electronic device, and receiving a second port number to the connection from the second electronic device. The method further comprises sending a packet between the first electronic device and the second electronic device, wherein the packet contains at least a portion of the communications being transmitted, wherein the packet can originate at either the first electronic device or the second electronic device, acknowledging a receipt of the packet by a receiver of the packet, and dissolving the connection.
In accordance with another preferred embodiment of the present invention, a header for a transmission packet is provided. The header comprises an identifier field comprising data to distinguish traffic type, a source address field following the identifier field, the source address field comprising an address of a source device and a source port of the header, a destination address field following the source address field, the destination address field comprising an address of a destination device and a destination port of the header, a payload error check code field following the destination address field, the payload error check code field comprising an error check for a data payload contained in the transmission packet, a payload size field following the payload error check code field, the payload size field comprising a size indicator of the data payload, a hop count field following the payload size field, the hop count field comprising a count of a maximum number of routes the transmission packet can traverse, a sequencing field following the hop count field, the sequencing field comprising a value used to order the transmission packet and a header error check code field following the sequencing field, the header error check code field comprising an error check for the header.
An advantage of a preferred embodiment of the present invention is that it has been designed to provide a wide range of routing functionality with a degree of fault tolerance with small processor and memory requirements.
A further advantage of a preferred embodiment of the present invention is that since it has been designed with specific requirements in mind, it has minimal overhead, just sufficient to meet the requirements.
Yet another advantage of a preferred embodiment of the present invention is that with small processor and memory requirements, the present invention can be used in a wide range of applications with a variety of electronic devices.
The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention. It should be appreciated by those skilled in the art that the conception and specific embodiments disclosed may be readily utilized as a basis for modifying or designing other structures or processes for carrying out the same purposes of the present invention. It should also be realized by those skilled in the art that such equivalent constructions do not depart from the spirit and scope of the invention as set forth in the appended claims.
BRIEF DESCRIPTION OF THE DRAWINGSFor a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
The making and using of the presently preferred embodiments are discussed in detail below. It should be appreciated, however, that the present invention provides many applicable inventive concepts that can be embodied in a wide variety of specific contexts. The specific embodiments discussed are merely illustrative of specific ways to make and use the invention, and do not limit the scope of the invention.
The present invention will be described with respect to preferred embodiments in a specific context, namely a point-to-point network comprising a host and a plurality of client devices, wherein the client devices may have limited computational capability and memory. The invention may also be applied, however, to other networks, including broadcast and shared medium, wherein a processor and memory efficient network communications protocol that is capable of a degree of fault tolerance is desired.
With reference now to
Note the term computational network is used herein to describe a plurality of electronic devices (the host device 105 and the electronic device 110) that are connected to each other via a network (the network connection 112). While the term communications network is typically used to describe the collection of communications devices and transmission medium upon which data and information is transferred between the plurality of electronic devices, the use of the term computational network should not be construed as limiting the electronic devices to being computers. In fact, examples of electronic devices that can be used in a computational network may include, but are not limited to: computers and peripherals, personal digital assistants, calculators, data storage devices, multimedia sources (such as video cameras and multimedia-on-demand services), multimedia sinks (such as video and audio display devices), telemetry equipment, environmental sensors, and so forth.
A point-to-point network can also be used to permit the connection of multiple devices to a single device.
With reference now to
Depending upon the functionality of the electronic devices coupled to a computational network and set of desired properties for the computational network, it can be possible to determine a suitable network communications protocol, e.g., specify the network layer 220. For the present invention, the network communications protocol should have the following properties: 1) devices can discover (be assigned) protocol addresses, 2) devices need protocol addresses, 3) devices resolve protocol addresses to reach peers, 4) broadcast capable, 5) affirmative congestion control, 6) connection (stream) oriented, 7) connectionless (datagram) oriented, 8) end-to-end delivery, not just single-segment, 9) can return errors to sender, e.g. oversize packet, 10) forward error correcting, 11) can fragment and re-assemble packets, 12) easy layered implementation, 13) independent of specific hardware, 14) protocol is light-weight (low number of overhead bytes), 15) header satisfies some condition, so it is easy to recognize packets, 16) multicast capable, 17) can re-order out-of-order packets, 18) capable of operating over peer-to-peer link, 19) quality of service may be specified or adjusted, 20) re-transmit, 21) can be forwarded by routers, 22) packet sequence numbering, 23) handles multiple apps simultaneously, 24) handles shared media, 25) limits on payload sizes, 26) can subnet, 27) unicast, and 28) outstanding packets permitted.
With the specification of the desired properties of the network communications protocol, it may be possible to determine if an existing network communications protocol possesses the specified properties. For example, one existing network communications protocol commonly referred to as “NULL,” which performs as a pass-through from layer five to layer two of the seven-layer OSI model, supports only some of the desired properties, such as properties: 7) connectionless (datagram) oriented, 8) end-to-end delivery, not just single-segment, 12) easy layered implementation, and so forth. Clearly, the NULL protocol is not a suitable candidate. Another existing network communications protocol commonly referred to as “IPv4 (Internet Protocol version 4,” supports a majority of the desired properties, with notable exceptions including property 14) protocol is light-weight (low number of overhead bytes). However, to provide substantially complete support for the desired properties, additional protocols may need to be layered over IPv4. For example, to ensure reliable packet delivery, transmission control protocol (TCP) needs to be layered over IPv4, while the user datagram protocol (UDP) is needed to provide “best effort” datagram transmission. The addition of these protocols (and others) can significantly increase the memory footprint (the amount of memory required to execute the network communications protocol), the processing requirements (the computational power required to support the network communications protocol), and the overall overhead of the network communications protocol. These factors can help to preclude the use of IPv4 (and other network communications protocols) in electronic devices with limited capability or resources.
Since an existing network communications protocol that efficiently meets the desired properties without requiring electronic devices with a significant memory footprint and processing power is not readily available, a custom designed network communications protocol is needed. The use of a custom design techniques permit the creation of a network communications protocol that is exactly tailored to meet the desired properties without the presence of unwanted properties (features), the presence of which can lead to an inefficient protocol. Furthermore, a custom designed network communications protocol may not require the addition of extra protocols that would unnecessarily increase memory footprint and processor power requirements. Additionally, the addition of extra protocols increases the overall network communications protocol overhead, resulting in a decrease in performance.
A description of a network communications protocol can be achieved by a discussion of its behavior (in terms of establishing communications between electronic devices, management of packets, response to errors, and so forth) and the structure of its header. A detailed discussion of the behavior of a preferred embodiment of the present invention and the header used is presented below.
With reference now to
In order to provide a measure of robustness to the communications, acknowledgments can be transmitted back to an originator of a transmission once the transmission has been received (block 315). An acknowledgement can be used to indicate that the transmission was successfully received or that it was unsuccessfully received. A detailed discussion concerning the generation and processing of acknowledgments is provided below. Once the electronic devices have completed their transmissions, the connection may be dissolved (block 320). The elimination of a connection after it is no longer needed can be helpful in the reuse of important resources that may be in short supply.
With reference now to
The creation of a connection can be initiated when an electronic device that wants to create the connection (referred to as a client) assigns a port number to the connection (block 340). After the client assigns a port number to the connection, the client can transmit a connection request message to an electronic device to which it wants to communicate (referred to as a server) (block 345). According to a preferred embodiment of the present invention, the connection request message can contain information such as the address of the client, the port number assigned to the connection, and the address of the server. When the server receives the connection request message, the server can assign a port to the connection (block 350) and then returns information regarding the connection to the client (block 355). The information returned to the client can include the number of the port assigned to the connection by the server. Note that in order for the server to accept connections to a port, the server must already be listening for transmissions addressed to the port.
The use of client and server port numbers as well as addresses can enable a wide variety of connections. For example, it can be possible for a single server to maintain multiple connections to many clients on a single port. Also, it can be possible for a client to maintain multiple connections to a single port on a single server as well as connections to a single port number of multiple servers.
With reference now to
A third connection 435 is comprised of two connections, a connection 437 from port N 408 of the first client 405 to port 3 of the first server 415 and a connection 439 from port N 408 of the first client 405 to port 3 of the second server 420. An example of a possible use of such a connection could be a situation wherein an application executing on the first client 405 can be serving streaming video and/or audio to the first server 415 and the second server 420. A fourth connection 440 is a connection from port 1 of the second client 410 to port 1 of the first server 415. In combination with the first connection 425, the connections illustrate multiple connections from different client devices (with the same port number) to a single port on a server. Such a connection can be used by a server to serve information to the different client devices.
With reference now to
According to a preferred embodiment of the present invention, in-order packet delivery is supported. If packets are received out-of-order, then a mechanism is provided to detect the out-of-order receipt of the packets and to reorder the packets. One method that can be used to support in-order packet delivery and packet reordering is the use of packet numbering. Individually numbering packets can permit the detection of an out-of-order packet as well as the reordering of received packets. It can be possible to number packets based upon individual pairs of applications sharing packets. However, since multiple applications on a pair of devices can have individual connections, the use of packet numbering for individual pairs of applications can consume a considerable amount of memory.
With reference now to
The sequence of events 600 can begin with a receiver device receiving a packet from a sender device (block 605). Note that since both ends of a communicating devices pair can send packets as well as receive packets, each device should have the ability to process received packets and to determine if an out-of-order packet has been received. After receiving the packet, the receiver device can check to determine if the packet has a correct sequence number (block 610). This can be performed simply by comparing the sequence number of the packet with a sequence number stored in memory that corresponds to a sequence number of a last packet received from the sender device. If the packet has the correct sequence number, then the sequence number stored in memory can be incremented (block 615), the contents of the packet can be processed (block 620), and the sequence of events 600 can end.
If however, the sequence number of the packet is not correct, then the receiver device can return a negative acknowledgment packet (NAK) to the sender device to inform the sender device of the out-of-order packet (block 625) and the sequence of events 600 can terminate. A more elaborate packet processing system is shown in
By buffering the packet, the receiver device can wait for additional packet(s) to arrive and if the additional packet(s) has the correct sequencing number, then the packets can be reordered at the receiver. In this case, the sender device does not need to be informed of the out-of-order packet. For example, if the correct sequence number is six (6) but the packet received has a sequence number of seven (7), the packet can be buffered. Additional packets can be buffered and until the buffer fills, the receiver device can continue to receive packets. If a packet with sequence number six (6) is received prior to the buffer overflowing, then the received packets can be processed (as long as the sequence numbers of the received packets continue to be correct). For example, if after the packet with the sequence number seven (7) was received, packets with sequence numbers eight (8), nine (9), ten (10), and six (6) was received, then the entire buffer (containing packets with sequence numbers six, seven, eight, nine, and ten) can be cleared since the buffered packets can be reordered into a properly ordered sequence of packets.
When a packet is received (or not received) and if the packet is received in proper condition or if the packet contains an error, a receiver of the packet can transmit back to a sender of the packet an acknowledgment (ACK) or a negative acknowledgment (NAK) packet. An ACK packet can be used to indicate the receipt of a packet that does not contain errors while a NAK packet can be used to indicate the receipt of a packet that has errors or the non-receipt of a packet.
With reference now to
The diagram shown in
If the packet has not been damaged and the ACK packet has been returned (block 715), then the packet can then be processed by the receiver (block 725). Examples of processing can be determining if the packet is a control packet (such as an ACK or NAK packet), determining the sequencing number of the packet, determining if the packet is in order, and so forth. If the packet is not a control packet and if it is not in order, e.g., the sequencing number of the packet is different from the sequencing number associated with the transmitter-receiver pair, then the packet can be buffered for subsequent reordering. Before the packet can be buffered, a check must be made to determine if there is space in the buffer (block 730). If the buffer is not full, then the packet can be buffered (block 735) and the algorithm 700 can terminate until another packet is received. If the buffer is full, then the packet cannot be buffered. The receiver can return a NAK to indicate that a packet with a correct sequencing number has not been received (block 740). Additionally, the receiver can flush the buffer of any packets associated with the same transmitter-receiver pair with sequence numbers higher than the correct sequencing number. After returning the NAK packet, the algorithm 700 can terminate until another packet is received. As an alternative to waiting for a buffer overflow, a NAK packet can be generated if the receiver has spent a specified amount of time waiting for the arrival of a packet from the transmitter with a specific sequencing number. In yet another alternative, a NAK packet can be generated if either the buffer overflows or the specified amount of time has elapsed.
The diagram shown in
The transmitter can begin processing by determining if the packet is an ACK packet (block 760), if the packet is an ACK packet, then a sequencing number can be retrieved from the ACK packet and the ACK can be an acknowledgment of a successful receipt of a packet with the same sequencing number as well as any packets with smaller sequencing numbers with outstanding ACK packets (block 765). For example, if the transmitter has transmitted packets with sequencing numbers four (4), five (5), six (6), and seven (7) and it receives an ACK packet with sequencing number six (6), then the ACK packet with the sequencing number six (6) will not only function as an ACK packet for the packet with the sequencing number six (6) but it will also function as an ACK packet for packets with the sequencing numbers four (4) and five (5). Note that the packet with the sequencing number seven (7) will have to wait for its own ACK packet (or an ACK packet for a packet with a greater sequencing number).
If the packet is a NAK packet (block 760), then the sequencing number retrieved from the NAK packet can inform the transmitter that a packet with the same sequencing number either arrived at the receiver in a damaged condition or did not arrive at the transmitter at all. Therefore, the transmitter will need to retransmit the packet with the same sequencing number as the NAK packet (block 770). Furthermore, if the transmitter has transmitted packets with sequencing numbers that are greater than the sequencing number of the NAK packet, then the transmitter may have to retransmit those packets as well. After the transmitter has retransmitted the packet(s) or scheduled to retransmit the packet(s), then the algorithm 750 can terminate until the transmitter receives another ACK/NAK packet.
With reference now to
With three consecutive packets arriving from the client device 805, the server device 807 can either transmit three ACK packets, one for each of the arriving packets, or the server device 807 can transmit a single ACK packet (shown as oval 820) that has a sequence number that is the same as that of the last of the three consecutive packets. The use of the single ACK packet in place of the three ACK packets can help to reduce the control packet traffic and therefore reduce overhead in the network.
In a next transmission (shown as oval 822) the client device 805 transmits a packet to the server device 807. However, the packet arrives at the server device 807 with an error. As a result, the server device 807 transmits a NAK packet back to the client device 805 (shown as oval 824). When the client device 805 receives and decodes the NAK packet from the server device 807, the client device 805 retransmits the packet to the server device 807 (shown as oval 826). Before the client device 805 receives either an ACK or a NAK packet for the packet that it retransmitted, the client device 805 transmits another packet to the server device 807 (shown as oval 828). Once again, the packet arrives at the server device 807 with an error, so the server device 807 returns a NAK packet to the client device 805 (shown as oval 830). After sending the NAK packet, the server device 807 receives an earlier packet retransmitted by the client device 805 (shown as oval 826) and returns an ACK packet to the client device 805 (shown as oval 832).
According to a preferred embodiment of the present invention, each packet transmitted in the network, be it a control packet or a packet containing data or information, contains a header. The header contains information such as a source of the packet, a destination of the packet, error check information, the packet's sequence number, routing performance information, and so forth.
With reference now to
A third field 915, referred to as a destination address field, can be used to contain a protocol address of a destination device of the packet. Again, the third field 915 can also contain a port address corresponding to a destination port of the packet. Preferably, the third field 915 is four bytes in size. A fourth field 920, referred to as a payload error check field, can contain an error check code (preferably a cyclic redundancy code error check) for data being carried in the packet. Note that if the packet is not containing data, then the fourth field 920 can be left blank. Preferably, the fourth field 920 is two bytes in size. A fifth field 925, referred to as a payload size field, can be used to indicate a size of the data payload being carried by the packet. Preferably, the fifth field 925 is one byte in size. A sixth field 930, referred to as a hop count field, can be used to indicate a maximum number of hops the packet may traverse, wherein a hop can be defined as the traversal of a single network link. Preferably, the sixth field 930 is one byte in size.
A seventh field 935, referred to as a sequence number field, can contain a value corresponding to a sequencing number of the packet. The sequencing number can be used to ensure in-order delivery of packets. Preferably, the seventh field 935 is one byte in size and values zero (0) and 255 are reserved for system use. An eighth field 940, referred to as a header checksum field, can be used to contain an error check code (preferably a simply byte-wise sum) for the header 900. Preferably, the eighth field 940 is one byte in size.
In addition to the aspects of the preferred embodiment of the present invention discussed above, which are directly viewable in packets and headers used in the network, there are aspects of a communications protocol that may not be directly visible in the packets. These aspects can affect performance, memory consumption, bandwidth requirements, and so forth. These aspects can be tunable values that can be made by each device in the network and can be based upon considerations such as available memory, processing power, perceived quality of the network connection, and so on.
The tunable values that can be set to specify these aspects can include: a retry timer, a retry limit, a packet window size, a byte window size, and a default hop count. The retry timer can specify an amount of time that a device is required to wait before it can declare that a packet is lost and that it should retransmit the packet. The retry limit can specify an amount of times that a retransmission can be attempted before a packet is deemed undeliverable. The packet window size can specify a maximum number of unacknowledged packets before further transmissions are stopped. The byte window size can specify a maximum number of bytes of data that can remain unacknowledged before further transmissions are stopped. The default hop count can specify a maximum number of routing hops that a packet can undergo, to prevent infinite routing loops.
According to a preferred embodiment of the present invention, a preferred network is a point-to-point network with a host device and a plurality of client devices coupled to the host device. Note however, that the present invention can be applicable to other types of networks, such as shared medium networks, broadcast networks, and so forth. An exemplary use of the preferred network can be in a classroom (or teaching) situation, wherein an instructor using a host device can interact with students, wherein each student is using a client device. The instructor can perform tasks such as provide lessons or homework, ask questions, prompt for answers, give examinations, and so forth. The students, on the other hand, can perform tasks such as answer questions, provide demonstrations, request assistance, and so on. The host device may be a personal computer or an electronic calculator, while the client devices can range from electronic calculators of varying capability to personal computers.
With reference now to
With reference to
The scenario can be implemented as follows: a student (represented herein as a client application 1001) can request from a host (represented herein as host services 1002) a representation of the common object (shown as oval 1005), to which the host services 1002 responds with a delivery of the common object (shown as oval 1007). A dashed vertical line, such as line 1003, can represent operations occurring at a device (on an application or service executing on the device), such as the client application 1001 executing on a client device, while a large solid vertical line, such as line 1004, can represent computations occurring at a device, such as the host services 1002 performing some computations to determine if the client application 1001 should be provided a representation of the common object. Upon receipt of the common object, the client application 1001 can make a request for ownership of one or more parameters of the common object (shown as oval 1009). The host services 1002 may accept or deny the request for ownership from the client application 1001 (shown as oval 1011) due to reasons such as the parameter having already been requested, the client application 1001 has requested too many parameters, and so forth.
After being granted ownership of one or more parameters, the client application 1001 can make modifications to the parameter(s) (shown as oval 1013) and once the modifications are complete, the client application 1001 can send the modified parameters back to the host services 1002 (shown as oval 1015). Whenever the host services 1002 receives a modified parameter(s), the host services 1002 can make changes to the common object (shown as oval 1017). Alternatively, the host services 1002 can wait until it receives all of the assigned parameters back from the different client applications before it makes changes to the common object. With the common object changed, the host services 1002 can update each client application with the changed common object (shown as oval 1019).
With reference to
With reference to
Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims.
Moreover, the scope of the present application is not intended to be limited to the particular embodiments of the process, machine, manufacture, composition of matter, means, methods and steps described in the specification. As one of ordinary skill in the art will readily appreciate from the disclosure of the present invention, processes, machines, manufacture, compositions of matter, means, methods, or steps, presently existing or later to be developed, that perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein may be utilized according to the present invention. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.
Claims
1. A method for communicating between electronic devices in a communications network, the method comprising:
- creating a connection between a first electronic device and a second electronic device, wherein the creating comprises, assigning a first port number to the connection at the first electronic device; transmitting a connection request to the second electronic device; receiving a second port number to the connection from the second electronic device;
- sending a packet between the first electronic device and the second electronic device, wherein the packet contains at least a portion of the communications being transmitted, wherein the packet can originate at either the first electronic device or the second electronic device;
- acknowledging a receipt of the packet by a receiver of the packet; and
- dissolving the connection.
2. The method of claim 1 further comprising after the sending, repeating the sending and acknowledging for additional packets.
3. The method of claim 1 further comprising, at the second electronic device:
- receiving the connection request from the first electronic device;
- assigning the second port number to the connection at the second electronic device; and
- transmitting the second port number to the connection to the first electronic device.
4. The method of claim 1, wherein the creating is repeated for every pair of electronic devices that are communicating.
5. The method of claim 1, wherein an electronic device can execute multiple applications simultaneously, wherein multiple connections between a single pair of electronic devices can exist, and wherein each connection connects a different pair of applications.
6. The method of claim 1 further comprising prior to the creating, acquiring a protocol address for the first electronic device and the second electronic device.
7. The method of claim 6, wherein the acquiring comprises:
- sending an inquiry to a host when an electronic device is connected to the communications network; and
- receiving a protocol address from the host.
8. The method of claim 7, wherein the acquiring further comprises resetting a sequence number after the receiving.
9. The method of claim 1 further comprising after the sending, reordering the packet.
10. The method of claim 9, wherein the reordering comprises:
- comparing a sequence number from the packet with an internal sequence number associated with the connection;
- if the sequence number from the packet is equal to the internal sequence number, incrementing the internal sequence number; processing contents of the packet; and
- if the sequence number from the packet is not equal to the internal sequence number, resequencing the packet.
11. The method of claim 10, wherein the packet has a source, and wherein the resequencing comprises sending a negative acknowledgment to the source of the packet.
12. The method of claim 10, wherein the packet has a source, and wherein the resequencing comprises:
- checking for sufficient space in a buffer to store the packet;
- inserting the packet in the buffer if there is sufficient space in the buffer; and
- sending a negative acknowledgment to the source of the packet if there is insufficient space in the buffer.
13. The method of claim 1, wherein the acknowledging comprises:
- checking the packet for damage;
- sending a negative acknowledgment if the packet is damaged;
- if the packet is undamaged, sending an acknowledgment; processing the packet; checking a sequence number of the packet with an internal sequence number; buffering the packet if the sequence number of the packet is not equal to the internal sequence number and if there is sufficient space in a buffer to store the packet; and sending a negative acknowledgment if there is no space in the buffer to store the packet.
14. The method of claim 1 further comprising after the acknowledging, processing the packet.
15. The method of claim 14, wherein the packet has a sequence number, and wherein the processing comprises:
- determining if the packet is either an ACK packet or a NAK packet;
- if the packet is an ACK packet, marking transmitted packets with sequence numbers less than or equal to a sequence number in the ACK packet as successfully transmitted;
- if the packet is a NAK packet, resending transmitted packets with sequence number greater than or equal to a sequence number in the NAK packet;
- if the packet is not an ACK packet or a NAK packet, providing the packet to an application associated with the connection.
16. A header for a transmission packet comprising:
- an identifier field comprising data to distinguish traffic type;
- a source address field following the identifier field, the source address field comprising an address of a source device and a source port of the header;
- a destination address field following the source address field, the destination address field comprising an address of a destination device and a destination port of the header;
- a payload error check code field following the destination address field, the payload error check code field comprising an error check for a data payload contained in the transmission packet;
- a payload size field following the payload error check code field, the payload size field comprising a size indicator of the data payload;
- a hop count field following the payload size field, the hop count field comprises a count of a maximum number of routes the transmission packet can traverse;
- a sequencing field following the hop count field, the sequencing field comprising a value used to order the transmission packet; and
- a header error check code field following the sequencing field, the header error check code field comprising an error check for the header.
17. The header of claim 16, wherein the header comprises a sixteen byte binary stream.
18. The header of claim 17, wherein the identifier field comprises a two byte binary stream, wherein the source address field comprises a four byte binary stream, wherein the destination address field comprises a four byte binary stream, wherein the payload error check code field comprises a two byte binary stream, wherein the payload size field comprises a one byte binary stream, wherein the hop count field comprises a one byte binary stream, wherein the sequencing number comprises a one byte binary stream, and wherein the header error check code field comprises a one byte binary stream.
19. The header of claim 16, wherein the error check in the payload error check code field comprises a value computed using a cyclic redundancy code of length 16 (CRC-16) code, and wherein a polynomial expressed as: X16+X12+X5+1 is used to generate the CRC-16 value.
20. The header of claim 16, wherein the sequencing field comprises a value ranging from 1 to 254.
21. The header of claim 16, wherein the data payload immediately follows the header in the transmission packet.
Type: Application
Filed: Nov 9, 2004
Publication Date: May 11, 2006
Inventors: Sunil Gupta (Weston, FL), Tanner Andrews (DeLand, FL), David Cole (Pembroke Pines, FL), Sekar Udayamurthy (Plano, TX), Corey Brady (Charlottesville, VA), Patrick Milheron (Allen, TX)
Application Number: 10/984,139
International Classification: H04L 1/00 (20060101);