Next: Compressed Packet Format Up: The Compression Algorithm Previous: The Basic Idea

The Ugly Details

Figure 15 shows a block diagram of the DUAL input/output driver and the compression software. The networking system calls a DUAL output driver with an IP packet to be sent over the serial line. Before passing the packet to the compressor (see figure 15), the output driver builds the DUAL header packet format. Then the compressor checks if the protocol is TCP. Non-TCP packets and uncompressible TCP packets (describe in [Jacobson 90]) are just marked as TYPE_IPand passed to the framer. Compressible TCP packet are looked up in an array of packet headers. If a matching connection is found, the incoming packet is compressed, the (uncompressed) packet header is copied into the array, and a packet of type COMPRESSED_TCPis send to the framer.

The framer is responsible for communicating the packet data, type and boundary. The framer encapsulates the incoming packets in KISS format, ready to be transmitted on the radio channel. Since the compression is a differential coding, the framer must not re-order packets. It must also provide good error detection and, if connection numbers are compressed, must provide an error indication to the decompressor.

Figure : DUAL Input/Output drivers and CSLIP software model

The incoming packet goes through the framer for CRC check, if it failed the framer will discard the packet without notifying the upper layer. The upper layer protocol is responsible for error recovery, i.e. TCP. If the CRC checks does not fail, the framer passes the packet to the decompressor. The decompressor does what the compressor has told it to do, it restores the TCP/IP headers if they have been compressed and then passes the packet to the DUAL input driver to find out which upper layer protocol is waiting for the incoming packet.

Note that the actual compression algorithm is written for point-to-point connection, and because DUAL is a multi-point protocol, in addition to the saved TCP/IP header, we have to save the (partial) IP address too. We need this to identify not only the connection number but also to which machine this packet goes.

Next: Compressed Packet Format Up: The Compression Algorithm Previous: The Basic Idea
Fri Feb 10 12:57:56 EST 1995