Check out the new USENIX Web site. next up previous
Next: Memory and buffer management Up: Full TCP/IP for 8-Bit Previous: Related work


The formal requirements for the protocols in the TCP/IP stack is specified in a number of RFC documents published by the Internet Engineering Task Force, IETF. Each of the protocols in the stack is defined in one more RFC documents and RFC1122 [2] collects all requirements and updates the previous RFCs.

The RFC1122 requirements can be divided into two categories; those that deal with the host to host communication and those that deal with communication between the application and the networking stack. An example of the first kind is ``A TCP MUST be able to receive a TCP option in any segment'' and an example of the second kind is ``There MUST be a mechanism for reporting soft TCP error conditions to the application.'' A TCP/IP implementation that violates requirements of the first kind may not be able to communicate with other TCP/IP implementations and may even lead to network failures. Violation of the second kind of requirements will only affect the communication within the system and will not affect host-to-host communication.

In our implementations, we have implemented all RFC requirements that affect host-to-host communication. However, in order to reduce code size, we have removed certain mechanisms in the interface between the application and the stack, such as the soft error reporting mechanism and dynamically configurable type-of-service bits for TCP connections. Since there are only very few applications that make use of those features, we believe that they can be removed without loss of generality. Table 1 lists the features that uIP and lwIP implements.

Table 1: TCP/IP features implemented by uIP and lwIP
Feature uIP lwIP
IP and TCP checksums x x
IP fragment reassembly x x
IP options    
Multiple interfaces   x
UDP   x
Multiple TCP connections x x
TCP options x x
Variable TCP MSS x x
RTT estimation x x
TCP flow control x x
Sliding TCP window   x
TCP congestion control Not needed x
Out-of-sequence TCP data   x
TCP urgent data x x
Data buffered for rexmit   x

next up previous
Next: Memory and buffer management Up: Full TCP/IP for 8-Bit Previous: Related work
Adam Dunkels 2003-03-03