diff options
Diffstat (limited to 'doc/rfc/rfc1553.txt')
-rw-r--r-- | doc/rfc/rfc1553.txt | 1291 |
1 files changed, 1291 insertions, 0 deletions
diff --git a/doc/rfc/rfc1553.txt b/doc/rfc/rfc1553.txt new file mode 100644 index 0000000..c6aa92e --- /dev/null +++ b/doc/rfc/rfc1553.txt @@ -0,0 +1,1291 @@ + + + + + + +Network Working Group S. Mathur +Request for Comments: 1553 M. Lewis +Category: Standards Track Telebit Corporation + December 1993 + + + Compressing IPX Headers Over WAN Media (CIPX) + + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state and + status of this protocol. Distribution of this memo is unlimited. + +Abstract + + This document describes a method for compressing the headers of IPX + datagrams (CIPX). With this method, it is possible to + significantly improve performance over lower speed wide area + network (WAN) media. For normal IPX packet traffic, CIPX can + provide a compression ratio of approximately 2:1 including both IPX + header and data. This method can be used on various type of WAN + media, including those supporting PPP and X.25. + + This memo ia a product of the Point-to-Point Protocol Extensions + (PPPEXT) Working Group of the IETF. Comments should be sent to + the authors and the ietf-ppp@ucdavis.edu mailing list. + +Specification of Requirements + + In this document, several words are used to signify the requirements + of the specification. These words are often capitalized. + + MUST + + This word, or the adjective "required", means that the + definition is an absolute requirement of the specification. + + MUST NOT + + This phrase means that the definition is an absolute + prohibition of the specification. + + + + + + +Mathur & Lewis [Page 1] + +RFC 1553 CIPX December 1993 + + + SHOULD + + This word, or the adjective "recommended", means that there + may exist valid reasons in particular circumstances to + ignore this item, but the full implications should be + understood and carefully weighed before choosing a + different course. + + MAY + + This word, or the adjective "optional", means that this + item is one of an allowed set of alternatives. An + implementation which does not include this option MUST be + prepared to interoperate with another implementation which + does include the option. + +Introduction + + Internetwork Packet Exchange (IPX) is a protocol defined by the + Novell Corporation [1]. It is derived from the Internet Datagram + Protocol (IDP) protocol of the Xerox Network Systems (XNS) family + of protocols. IPX is a datagram, connectionless protocol that does + not require an acknowledgment for each packet sent. The IPX + protocol corresponds to the network layer of the ISO model. + + Usually, there is a transport layer protocol above IPX. The most + common transport protocol is the Netware Core Protocol (NCP), which + is used for file server access. The Sequenced Packet Exchange + (SPX) is the reliable connection-based transport protocol commonly + used by applications. + + The IPX packet consists of a 30 octet IPX header, usually followed + by the transport layer protocol header. The NCP header is 6 octets + in length. The SPX header is 12 octets in length. + + Two strategies are described below for compressing IPX headers. + This specification requires that implementations of CIPX support + both IPX header compression strategies. These header compression + algorithms are based on those Van Jacobson described [2] for TCP/IP + packets. + The first strategy is to compress only the IPX header. This + compression algorithm can be used to compress any IPX packet, + without affecting the transport protocol. This algorithm + compresses a 30 octet IPX header into a one to seven octet header. + + The second strategy is to compress the combined IPX and NCP + headers. This algorithm compresses only NCP packets with NCP type + of 0x2222 and 0x3333. This algorithm compresses a 36 octet NCP/IPX + + + +Mathur & Lewis [Page 2] + +RFC 1553 CIPX December 1993 + + + header into a one to eight octet header. + + Lastly, it is possible and many times desirable, to use this type + of header compression in conjunction with some type of data + compression. + + Data compression technology takes many forms. Link bit stream + compression is a common approach over very low speed asynchronous + links, normally performed by modems transparently. Transparent bit + stream compression is also offered in some DSUs, routers and + bridges. Data compression can be provided using protocols such as + CCITT V.42bis[3], MNP 5, Lempel-Ziv, or LAPB[4]. + + When using both header and data compression, the sequence of + compression is important. When sending packets, data compression + MUST be done after header compression. Conversely when receiving + packets, data decompression MUST be done before header + decompression. + +IPX Compression Algorithm + + The normal IPX header consists of the following fields: checksum, + packet length, transport control (hop count), packet type, + destination and source address fields. + + +-----------------------+ + | Checksum | + +-----------------------+ + | Packet Length | + +-----------+-----------+ + | Hops |Packet Type| + +-----------+-----------+ + | Destination | + | Address | + | (12 Octets) | + +-----------------------+ + | Source | + | Address | + | (12 Octets) | + +-----------------------+ + + IPX PACKET HEADER + + The IPX header diagram above is shown without the field alignment + details. Consider each field of the IPX header separately, and how + it typically changes. + + Historically, Novell has not used the Checksum field in the IPX + + + +Mathur & Lewis [Page 3] + +RFC 1553 CIPX December 1993 + + + header, and has required that this field be set to 0xFFFF. Since the + Checksum field remains constant, it is clear that the value can be + compressed. + + Where Checksums are implemented (not 0xFFFF), the Checksum MUST be + included in the compressed packet. Recalculating the checksum would + destroy the end-to-end reliability of the connection. Note that + Checksums are now implemented in the Fault Tolerant Servers. + + For most links, the Packet Length can be determined from the MAC + layer. There are cases in which the length cannot be determined from + the MAC layer. For example, some hardware devices pad packets to a + required minimum length. For links where it is not possible to + determine the IPX packet length from the MAC layer, packet length + needs to be included in the compressed packet. + + The Transport Control (Hops) field usually does not change between + two end-points. For the purposes of compression, we will assume that + it never changes, and will not examine this field when determining a + connection. + + The Packet Type field is constant for any connection. + + The Destination and Source Address fields are each made up of 12 + octets: Network (4 octets), Node (6 octets), and Socket (2 octets) + fields. An IPX connection is the logical association between two + endpoints known by a given source and destination address pair. For + any specific IPX connection, the Destination and Source Address + fields are constant. + + Hence, the fields that may need to be included in the compressed IPX + header are the Checksum and the Packet Length. + + While using this IPX header compression algorithm, packets can be + lost. The loss of an Initial packet presents a problem. In this + case, if the sender later tries to send a compressed packet, the + receiving end cannot decompress the packet correctly. + + Sufficient information is not available in the IPX header to + determine when a re-transmission has occured. For this reason, it is + necessary that the sender of an Initial packet be guaranteed that the + packet has been received. Therefore, we provide a mechanism for + Confirmation of an Initial packet. + +NCP/IPX Header Compression + + Since most IPX packets are Netware Core Protocol packets (packet type + 17), compressing the NCP header will give us added performance. A + + + +Mathur & Lewis [Page 4] + +RFC 1553 CIPX December 1993 + + + minimal CIPX implementation MUST also implement NCP/IPX compression. + + +------------+ + | NCP | + | Type | + +------------+ + | Sequence | + | Number | + +------------+ + | Connection | + |(low octet) | + +------------+ + | Task | + | Number | + +------------+ + | Connection | + |(high octet)| + +------------+ + + NCP HEADER + + The NCP header is 6 octets in length consisting of the following + fields: NCP type, sequence number, connection number and task number. + + The NCP type field values that are currently defined are: + + 1111 Create Connection + 2222 NCP request from workstation + 3333 NCP reply from file server + 5555 Destroy Connection + 7777 Burst Mode Packet + 9999 Server Busy Packet + + This NCP header compression algorithm only compresses packets that + have a type field value of 0x2222 or 0x3333. If the NCP type is + 0x2222, this packet is a request from the client to the server. + Conversely if the NCP type is 0x3333, this is a response from the + server to the client. All other types of NCP packets are not + compressed at the NCP level, but are compressed at the IPX level. + The Create Connection (0x111), Destroy Connection (0x5555) and Server + Busy (0x9999) packets are not exchanged frequently enough to justify + special NCP compression. The Burst Mode (0x7777) packet is discussed + below. + + The connection number is a constant for a given connection. + + The sequence number is increased by one for each new request. Hence + the sequence number can be determined implicitly. The decompressor + + + +Mathur & Lewis [Page 5] + +RFC 1553 CIPX December 1993 + + + increments the sequence number for each compressed packet it receives + for a connection. + + The task number can change unpredictably, although it might remain + constant for several packets. If the NCP task number is different + from the last one for this connection, the NCP task number must be + included. + + If the NCP packet is lost, it will be retransmitted through the + normal transport layer mechanisms. The Initial NCP packet does not + require confirmation, as a re-transmitted packet can be easily + identified. This is accomplished by comparing the sequence number of + the packet to the sequence number of the previous packet. If the + sequence number is not exactly one greater than the previous packet, + a new Initial packet must be sent, although the same connection slot + may be used. + + In the event of compressed packet loss, the sequence number will be + too small. When the IPX Checksum is present, the loss can be + determined at the destination system by an incorrect checksum. When + there is no checksum present, the loss is more likely to be detected + upon receiving a later retransmission. + +NCP Burst Mode Packets + + The burst mode protocol uses the NCP type value of 0x7777. This type + of packet does not have the normal NCP header described above. + Instead, it has a 36 octet burst header. The above NCP header + compression algorithm should not be used to compress this packet. + The IPX header in this packet is still compressible with the IPX + header compression algorithm described. + +SPX Packets + + SPX packets are typically used by applications which require + reliable service such as print servers. It is possible to apply a + similar NCP/IPX technique to SPX/IPX packets. At this time, we + have not described such a mechanism. The IPX header in this + packet is still compressible with the IPX header compression + algorithm described. + +Compression Header + + IPX compression should be negotiated by some means (eg. IPXCP or + IPXWAN). Each end must negotiate the desired options, such as the + maximum number of concurrent connections which will be maintained + in each direction. Once IPX compression is negotiated, all IPX + packets sent over that link have a CIPX header added to the + + + +Mathur & Lewis [Page 6] + +RFC 1553 CIPX December 1993 + + + beginning of the packet. The CIPX header is variable in length. + + The one octet CIPX header is added even when a regular IPX packet + is sent over the link. By including the CIPX header on every + packet, we support the ability to run CIPX over various WAN links + as if it were a normal IPX packet. It does not rely on any new + link specific packet demultiplexing. + + Implementations of this compression protocol must maintain send + and receive tables indicating the state of each connection. The + original header for each connection is stored in a "slot". + Typically, each client-server connection will use a separate slot. + Both sides keep a copy of the full IPX header corresponding to + each slot. The sending side (compressor) uses this information to + determine the fields that have changed. The receiving side + (decompressor) uses this information to reconstruct the original + packet header. + + The CIPX packet header specifies the type of the packet and any + options for that packet. The minimum CIPX header is one octet in + length. + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + | | | | | | | | | + +---+---+---+---+---+---+---+---+ + ^ ^ ^ ^ ^ ^ ^ ^ + | | | | | | | | + | | | | |___|___|___|___ Packet Type + | | | | 0 Compressed + | | | | 1 Regular + | | | | 3 Confirmed Initial + | | | | 5 Confirm + | | | | 7 Unconfirmed Initial + | | | | 9 Reject + | | | | 11-15 Reserved + | | | | + |__ |__ |__ |___________________ Packet Type Dependent Flags + + FLAGS OCTET + + As can be seen above, the low order bits specify the packet type. + All Compressed packets have a lowest bit of zero. The other + packet types are odd numbers. + + Note that the Flags octet MUST NOT contain the value 0xFF. This + is necessary to distinguish the CIPX flags octet from a normal IPX + header with a 0xFFFF checksum field. It is important to be able + + + +Mathur & Lewis [Page 7] + +RFC 1553 CIPX December 1993 + + + to recognize a normal IPX header regardless of the state of + compression. It is possible with some link layer protocols such + as X.25 Permanent Virtual Circuits that one end of the link may + fail and start sending regular IPX packets without the CIPX + header. CIPX implementations MUST recognize this situation and + renegotiate the use of CIPX. + + Each packet type has associated flag bits, which are called Packet + Type Dependent Flags. Different packet types have different + Packet Type Dependent Flags. All bits that are reserved or are + not specified must be set to zero. + + Since none of the packet types other than Compressed currently + uses any of the flag bits, the packet type field could easily be + expanded. Any future expansion must ensure that at least one of + the bits in the Flags octet remains zero so the value cannot be + 0xFF. + +Compressed Packet + + This type of packet does not contain a packet header (either 30 byte + IPX, or 36 byte NCP). A slot number indicates to the receiver which + saved header to use to formulate the original packet header before + passing the packet up to IPX. + + + + + + + + + + + + + + + + + + + + + + + + + + + +Mathur & Lewis [Page 8] + +RFC 1553 CIPX December 1993 + + + ________________________________ Slot Number + | 0 Assume same as last packet + | 1 Included in packet + | + | ____________________________ Checksum + | | 0 Assume 0xFFFF + | | 1 Included in packet + | | + | | ________________________ Length + | | | 0 Determine from MAC length + | | | 1 Included in packet + | | | + | | | ____________________ Task Number (NCP only) + | | | | 0 Assume same as last packet + | | | | 1 Included in packet + | | | | + | | | | ________________ Reserved (Must be zero) + | | | | | | | + | | | | | | | ____ Packet Type + | | | | | | | | 0 Compressed Packet + v v v v v v v v + +---+---+---+---+---+---+---+---+ + | | | | | 0 | 0 | 0 | 0 | + +---+---+---+---+---+---+---+---+ + 7 6 5 4 3 2 1 0 + + Consider each flag in the flags octet, looking at the high order bits + working toward the lower order bits. Each of the fields is optional, + but if present will be found in the same order in the compressed + packet header. + +Slot Number + + The slot number flag indicates the slot number field is included in + the compressed packet. The slot number field is one octet in length + and specifies the number of the slot which corresponds to the Initial + packet header. Slots are numbered starting at zero and continue to + the maximum number of slots minus one. + + By default, slot compression is disabled. If negotiated, slot + compression can be enabled for those slots which were created by the + Unconfirmed Initial packet. When set to one (1), the slot number + flag indicates the inclusion of the the slot number in the compressed + packet. When set to zero (0), the slot number flag indicates the + omission of the the slot number and specifies the use of the same + slot number as for the last packet. + + + + + +Mathur & Lewis [Page 9] + +RFC 1553 CIPX December 1993 + + + Implementation Note: + + Slot compression MUST only be enabled in a receiver which can + account for all erroneous and discarded packets. When a packet + has been discarded, the slot number is indeterminate for future + packets. The decompressor MUST discard all further packets + until a slot number is received. + +Checksum + + When set to one (1), the checksum flag indicates the compressed + packet will include the 2 octet checksum. When set to zero (0), + this flag indicates the omission of the checksum and the decompressor + is to assume the checksum is 0xFFFF. Note that meaningful checksums + must be included in the packet with the checksum flag set to one (1). + +Length + + When set to one (1), the length flag indicates the inclusion of the + IPX data length field in the compressed packet. When set to zero + (0), the length flag indicates the omission of the IPX data length + field in the compressed packet. + + This is the Length field from the original IPX packet header. It + specifies the length of IPX header and data in the packet prior to + compression. It does not include the CIPX compression field such as + flags, slot number, checksum, length field, or the NCP task number. + Note that it is preferable to determine the length field from the MAC + layer whenever possible, by subtracting the length of the compression + header fields and adding the length of the saved packet header. + + Since every octet is significant over lower speed WAN links, an + optimization is used in the specification of the length. It can be + specified as a one, two or three octet field. If the length is in + the range 0 to 127, then it is specified as a one octet field. If + the length is in the range 128 to 16383, it is specified as a two + octet field in high to low order, with the first octet in the range + 128 to 191. Otherwise, if the length is greater than 16383, the + first octet contains 192, and the second and third octets contain the + full length. (This scheme is extensible to 8 octets, but currently + is not required in the IPX protocol suite.) + + + + + + + + + + +Mathur & Lewis [Page 10] + +RFC 1553 CIPX December 1993 + + + +-+-+-+-+-+-+-+-+ + |0| length | length < 128 + +-+-+-+-+-+-+-+-+ + + ONE OCTET LENGTH FIELD + + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |1 0| length | length < 16384 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + TWO OCTET LENGTH FIELD + + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |1 1 0 0 0 0 0 0| length | length < 65535 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + THREE OCTET LENGTH FIELD + + +Task Number + + When set to one (1), the NCP task number flag indicates the NCP task + number is included in the compressed packet (see NCP/IPX compression + above). When set to zero (0), the NCP task number flag indicates the + omission of the NCP task number in the compressed packet. When the + NCP task number is not included in the compressed packet, we use the + same NCP task number as that of last packet. + + Based upon the bits set in the flags octet, optional portions are + included in the compressed IPX header. The minimum compressed IPX + header contains only the Flags octet. All fields in the original IPX + header have been compressed out of the header. The maximum + compressed IPX header can include up to 7 octets, the Flags, Slot, + Checksum (2 octets), and Length (3 octets) fields, or 8 octets if the + NCP Task Number is included. The minimum and maximum compressed IPX + packets are shown below. Header fields are one octet in length + except where noted. + + + + + + + + + + + + + + +Mathur & Lewis [Page 11] + +RFC 1553 CIPX December 1993 + + + +--------+--------- + | Flags | DATA ... + | 0x00 | + +--------+--------- + + MINIMUM COMPRESSED IPX PACKET + + +--------+--------+---------+---------+--------- + | Flags | Slot |Checksum | Length | DATA ... + | 0xE0 | Number |2 octets |3 octets | + +--------+--------+---------+---------+--------- + + MAXIMUM COMPRESSED IPX PACKET + + +--------+--------+---------+---------+--------+--------- + | Flags | Slot |Checksum | Length |NCP Task| DATA ... + | 0xF0 | Number |2 octets |3 octets | Number | + +--------+--------+---------+---------+--------+--------- + + MAXIMUM COMPRESSED NCP/IPX PACKET + +Regular Packet + + The Regular packet type designates an IPX packet for which no + compression is desired. This type of packet is sent when a packet + cannot be compressed, or a decision is made not to compress it. + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | + +---+---+---+---+---+---+---+---+ + ^ ^ ^ ^ ^ ^ ^ ^ + | | | | | | | | + | | | | |___|___|___|___ Packet Type + | | | | 1 Regular + | | | | + |__ |__ |__ |___________________ Reserved (must be zero) + + The Regular packet is rarely sent. Usually, the Regular packet is + sent when there is not enough memory for the overhead of a new + compression slot. Also, this type is included for future unforeseen + changes to the IPX protocol which defeat the effectiveness of + compression. + + Implementation Note: + + The Regular Packet can be used for packets that are sporadic, + which are not worth setting-up a compression slot. This may be + + + +Mathur & Lewis [Page 12] + +RFC 1553 CIPX December 1993 + + + hard to determine for specific protocols. Various methods such + as hold-down and least-recently-used timers are currently being + used. + + On receipt, the 1 octet header is simply removed and the packet + passed up to IPX. + + The entire IPX packet follows the single Flags octet. Note for a + Regular Packet (not compressed or uncompressed), the slot number + field is not included. + +Confirmed Initial Packet + + The Confirmed Initial packet type is used by the compressor to inform + the decompressor of the original packet header which will be used for + subsequent compression, and to request Confirmation. The high order + 4 bits are reserved for expansion to support additional protocols. + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | + +---+---+---+---+---+---+---+---+ + ^ ^ ^ ^ ^ ^ ^ ^ + | | | | | | | | + | | | | |___|___|___|___ Packet Type + | | | | 3 Confirmed Initial + | | | | + |__ |__ |__ |___________________ 0 IPX Protocol + 1-15 Reserved + + This type of packet is sent to inform the receiver to associate the + IPX packet header with a slot number. This packet is sent each time + a different header format is sent for a given slot, or when the + sender has not received a Confirmation Packet from the receiver. + + The Flags octet lower 4 bits indicate the Confirmed Initial CIPX + packet type. The high order 4 bits are reserved for expansion to + support additional protocols. The Flags octet is always followed by + the Slot Number and an ID field. The ID field is one octet in + length. + + For each slot, the ID will increment with every new header sent. + Different slots may have the same ID. The combination of slot and ID + uniquely identify a header. In practice, the ID octet can be any + number which is unique for a "reasonably long period" of time. A + reasonably long period is a function of transmission speed, round + trip delays, and network load. There must be very little chance of + duplicate slot and ID combinations within this period. Otherwise, + + + +Mathur & Lewis [Page 13] + +RFC 1553 CIPX December 1993 + + + there is ambiguity as to which header is being identified. + + Implementation Note: + + There is no requirement to hold or resend the Confirmed Initial + packet until confirmation. When a new packet with the same IPX + header is to be sent, another Confirmed Initial packet should + be sent using the same slot, the same ID, and the new packet + data. + + When a new packet with a different IPX header is to be sent, it + may be sent using a slot which has not received confirmation. + A Confirmed Initial packet is sent with the same slot, an + incremented ID, and the new packet data. Assuming a least- + recently-used policy for selecting a slot for a new IPX header, + this provides the ability to reuse slots when a Confirmed + Initial packet has been sent but not confirmed. + + +---------+---------+---------+-/ /-+---------- + | Flags | Slot | ID | IPX | DATA ... + | 0x03 | Number | | Header | + +---------+---------+---------+-/ /-+---------- + +CONFIRMED INITIAL PACKET + + Note that a Confirmed Initial header is followed by a complete IPX + packet. + +Confirm Packet + + The Confirm packet type is used by the decompressor to tell the + compressor that it has received the Confirmed Initial packet. + + When the compressor receives this, it can start sending Compressed + frames. + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | + +---+---+---+---+---+---+---+---+ + ^ ^ ^ ^ ^ ^ ^ ^ + | | | | | | | | + | | | | |___|___|___|___ Packet Type + | | | | 5 Confirm + | | | | + |__ |__ |__ |___________________ Reserved (must be zero) + + A Confirm Packet is exactly 3 octets in length. It consists of the + + + +Mathur & Lewis [Page 14] + +RFC 1553 CIPX December 1993 + + + Flags, Slot Number and ID fields. The Slot Number field contains the + number of the slot which is being acknowledged. The ID field + contains the ID of the Confirmed Initial Packet which is being + acknowledged. + + +---------+---------+----------+ + | Flags | Slot | ID | + | 0x05 | Number | | + +---------+---------+----------+ + +CONFIRM PACKET + +Unconfirmed Initial Packet + + The Unconfirmed Initial packet type is used by the compressor to + inform the decompressor of the original packet header which will be + used for subsequent compression while not requesting confirmation. + + After sending an Unconfirmed Initial packet, the compressor may + immediately send Compressed packets without confirmation. + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | + +---+---+---+---+---+---+---+---+ + ^ ^ ^ ^ ^ ^ ^ ^ + | | | | | | | | + | | | | |___|___|___|___ Packet Type + | | | | 7 Unconfirmed Initial + | | | | + |__ |__ |__ |___________________ 0 NCP Protocol + 1-15 Reserved + + This type of packet is sent to inform the receiver to associate the + IPX packet header with a slot number. This packet is sent each time + a different header format is sent for a given slot. + + The Flags octet lower 4 bits indicate the Unconfirmed Initial CIPX + packet type. The high order 4 bits are reserved for expansion to + support additional protocols. The Flags octet is always followed by + the Slot Number. + + +---------+---------+-/ /-+-/ /-+--------- + | Flags | Slot | IPX | NCP | NCP + | 0x07 | Number | Header | Header | DATA ... + +---------+---------+-/ /-+-/ /-+--------- + + + + + +Mathur & Lewis [Page 15] + +RFC 1553 CIPX December 1993 + + +UNCONFIRMED INITIAL PACKET + + + Note that an Unconfirmed Initial header is followed by a complete IPX + packet. + +Reject Packet + + The Reject packet type is used by the decompressor to tell the + compressor that it has received a CIPX packet with a header which it + does not support. This is provided to regulate future extensions to + CIPX. + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | + +---+---+---+---+---+---+---+---+ + ^ ^ ^ ^ ^ ^ ^ ^ + | | | | | | | | + | | | | |___|___|___|___ Packet Type + | | | | 9 Reject + | | | | + |__ |__ |__ |___________________ Reserved (must be zero) + + A Reject Packet is exactly 3 octets in length. It consists of the + Flags, Slot Number and Rejected Flags fields. + + The Slot Number field contains the number of the slot of the packet + which is being rejected. Since the actual packet type may be unknown + or misunderstood, this field actually contains the second octet of + the rejected packet. In the normal case of a known CIPX packet type, + this will be the slot number of an initial packet. + + The Rejected Flags field contains the first octet of the packet being + rejected. The packet type field is left untouched. Any flags which + are correctly recognized should be cleared. The remaining flags + indicate specific features that are being rejected. This information + should be sufficient for implementations to adjust the use of certain + packet types or dependent flags. + + Implementation Note: + + The Flags value of 0xFF is not a valid CIPX packet type. + Hence, such a packet type should be recognized as a standard + IPX header and forwarded without CIPX processing to the + appropriate routines. Under no circumstances should a Flags + value of 0xFF be rejected in a Reject Packet. + + + + +Mathur & Lewis [Page 16] + +RFC 1553 CIPX December 1993 + + + +---------+---------+----------+ + | Flags | Slot | Rejected | + | 0x09 | Number | Flags | + +---------+---------+----------+ + + REJECT PACKET + +Compression Negotiation over PPP Links + + For PPP links [5], the use of header compression can be negotiated by + IPXCP [6]. By default, no compression is enabled. + + The IPX-Compression-Protocol Configuration Option is used to indicate + the ability to receive compressed packets. Each end of the link must + separately request this option if bi-directional compression is + desired. + + The PPP Protocol field is set to the same value as the usual IPX + packets, and all IPX packets sent over the link MUST conform to the + compressed format. + + A summary of the IPX-Compression-Protocol Configuration Option format + to negotiate Telebit IPX header compression (CIPX) is shown below. + The fields are transmitted from left to right. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | IPX-Compression-Protocol | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Max-Slot-Id | Options | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Type + + 3 + + Length + + 6 + + IPX-Compression-Protocol + + 0002 (hex) for Telebit Compressed IPX headers (CIPX). + + Max-Slot-Id + + The Max-Slot-Id field is one octet and indicates the maximum + + + +Mathur & Lewis [Page 17] + +RFC 1553 CIPX December 1993 + + + slot identifier. This is one less than the actual number of + slots; the slot identifier has values from zero to Max-Slot- + Id. + +Options + + The Options field is one octet, and is comprised of the "logical or" + of the following values: + + 0 No options. + + 1 The slot identifer may be compressed. + + The slot identifier must not be compressed if there is no + ability for the PPP link level to indicate an error in + reception to the decompression module. Synchronization after + errors depends on receiving a packet with the slot identifier. + + 2 Redefine Compressed Packet type bits 1-3. + + It was noted earlier that packet types have been chosen such + that only the Compressed Packet type is an even number value + with the lowest order bit of zero. All other packet types are + odd values with a lowest order bit of one. The reason for this + assignment was to make it possible to determine the Compressed + Packet type by examining only one bit. This make it possible + to use all the other 7 bits to indicate status in the + Compressed Packet. The 7 bits are composed of the upper 4 bits + which are permanently defined to indicate packet dependent + flags, plus bits 1-3 which are otherwise part of the Packet + Type. The upper 4 bits are defined above. The redefinition of + bits 1-3 of the Compressed Packet type is left for future + expansion. + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + | | | | | | | | 0 | + +---+---+---+---+---+---+---+---+ + ^ ^ ^ ^ ^ ^ ^ ^ + | | | | | | | |___ Packet Type + | | | | | | | 0 Compressed Packet + | | | | | | | + | | | | |___|___|_______ Redefined bits + | | | | + |___|___|___|___________________ Compressed Packet flags + + By default, this feature in not enabled and this flag is + set to zero. When this flag is set to one, it indicates + + + +Mathur & Lewis [Page 18] + +RFC 1553 CIPX December 1993 + + + the desire to use this feature. + +Compression Negotiation over IPXWAN Links + + "IPXWAN" is the protocol Novell uses to exchange necessary router + to router information prior to exchanging standard IPX routing + information and traffic over WAN datalinks [7]. To negotiate the + Telebit compression option, we use Novell's allocated option number + for CIPX (00) in the IPXWAN timer request/response packet. + + The Timer Request packet contains the following Telebit compression + option: + + WOption Number 80 - Define compression type + WAccept Option 01 - 0=No, 1=Yes, 3=N/A + WOption Data Len 00 03 - Length of option + WOption Data 00 - Telebit's compression (CIPX) + WOption Data XX - Compression options + WOption Data NN - Compression slots + + Where the WOption Data fields are: + + 00 Telebit's compression option described in this + document (CIPX). + + XX Compression options as defined below: + + 0x01 Compress slot ID when possible + 0x02 Redefine Compressed Packet type bits 1-3. + + NN The requested # of compression slots. + + Accept Option (for compression type) must be set to YES if the + option is supported and NO if the option is not supported. A Timer + Response must respond with only one header compression type set to + YES. + + The Timer Response packet that accepts the option will look like + this: + + WOption Number 80 - Define compression type + WAccept Option 01 - 0=No, 1=Yes, 3=N/A + WOption Data Len 00 03 - Length of option + WOption Data 00 - Telebit's compression (CIPX) + WOption Data XX - Compression options + WOption Data NN - Compression slots + + + + + +Mathur & Lewis [Page 19] + +RFC 1553 CIPX December 1993 + + + Where the WOption Data fields are: + + 00 Telebit's compression option described in this + document (CIPX). + + XX Compression options as defined below: + + 0x01 Compress slot ID when possible + 0x02 Redefine Compressed Packet type bits 1-3. + + NN The negotiated # of slots (The lower of each side's + requested number of slots) + + IPX packets (except of course IPXWAN packets) are not sent over the + link until the IPXWAN negotiations are completed. Once IPXWAN + negotiations are completed, regular IPX packets can be sent over the + link. + + If both ends of the link agree on the compression options, then the + IPX packets are sent using the specified options. If either end of + the link does not accept a compression option, then this compression + option will not be used. Compression will be done using any + remaining options. Options, by definition, are not required. + Implementations MUST support CIPX without any options. + + It is the responsibility of the router sending the IPXWAN Timer + Response to inform the other router of the options that will be used. + The Timer Response MUST contain a subset of the options received in a + Timer Request. + + To be clear, IPXWAN is used to set up a symmetrical compression link. + Compression is configured identically in both directions. Each end + will use the same number of slots and same compression options. It + is illegal for link ends to use different number of slots or + different options. + +IPX Compression Performance + + The performance of this algorithm will depend on the number of active + connections and the number of slots negotiated. If the number of + slots is greater than the number of connections, the hit rate should + be very high giving a very high compression ratio. The performance + also depends on the average size of the IPX packets. If the average + size of packets is small, then compression will result in a more + noticeable performance improvement. + + + + + + +Mathur & Lewis [Page 20] + +RFC 1553 CIPX December 1993 + + + avg_data_len + uncomp_header_len + Compression ratio = ---------------------------------- + avg_data_len + avg_comp_header_len + + Where 'avg_data_len' is the average length of data in the IPX packet, + and 'uncomp_head_len' is the uncompressed header length which is + fixed at 30 octets. Where 'avg_comp_header_len' is the average + length of the compressed IPX header. The length of the minimum + compressed IPX header is 1 octet. The length of the maximum + compressed NCP/IPX header is 8 octets (including the NCP task + number), but since no implementation yet sends packets with a length + greater than 16K, 7 octets is the commonly encountered maximum. + Perhaps a reasonable 'avg_comp_header_len' is 2, assuming the + inclusion of the flag and slot number octets. + + The maximum length of the data in an IPX packet is 546 octets (576 + octets - 30 octet IPX header), although newer implementations may + send packets of up to 4096 octets. The minimum length of the data in + an IPX packet is 1 octet. Within the normal distribution of small + NCP packets, perhaps a reasonable 'avg_data_len' is 26 octets. + + 546 + 30 + Minimal Compression = -------- = 1.04 + 546 + 6 + + 1 + 30 + Maximal Compression = ------ = 15.50 + 1 + 1 + + 26 + 30 + Likely Compression = ------- = 2.00 + 26 + 2 + + +Security Considerations + + IPX provides some security features, which are fully applicable to + CIPX. CIPX does not significantly alter the basic security of IPX. + + + + + + + + + + + + + +Mathur & Lewis [Page 21] + +RFC 1553 CIPX December 1993 + + +References + + [1] Novell Inc., "IPX Router Specification", September 1992, Part + Number: 107-000029-001 + + [2] Jacobson, Van, "Compressing TCP/IP Headers for Low-Speed Serial + Links", RFC 1144, February 1990 + + [3] CCITT Recommendation V.42bis Error Correcting Procedures for DCEs + using Error Correction Procedures + + [4] ISO 7776, Information Processing Systems - Data Communication - + High Level Data Link Control Procedures - Description of the X.25 + LAPB-Compatible DTE Data Link Procedures + + [5] Simpson, W. A., "The Point-to-Point Protocol (PPP)", RFC 1548, + December 1993 + + [6] Simpson, W. A., "The PPP Internet Packet Exchange Control + Protocol (IPXCP)", RFC 1552, December 1993 + + [7] Allen, Michael, "Novell IPX Over Various WAN Media [IPXWAN]", + RFC 1551, December 1993 + +Acknowledgements + + This compression algorithm incorporates many ideas from the Van + Jacobson TCP/IP header compression algorithm. + + Michael Allen from Novell provided a lot of valuable feedback in the + design of this algorithm. David Piscitello from Bellcore and Marty + Del Vecchio at Shiva Corp. made several good suggestions. Bill + Simpson was very helpful in driving PPP, and specifically IPXCP, on + the standards course. + +Chair's Address + Fred Baker + Advanced Computer Communications + 315 Bollay Drive + Santa Barbara, California 93117 + + EMail: fbaker@acc.com + + + + + + + + + +Mathur & Lewis [Page 22] + +RFC 1553 CIPX December 1993 + + +Authors' Addresses + + Saroop Mathur + Telebit Corp. + 1315 Chesapeake Terrace + Sunnyvale, CA 94089-1100 + + EMail: mathur@telebit.com + + Mark S. Lewis + Telebit Corp. + 1315 Chesapeake Terrace + Sunnyvale, CA 94089-1100 + + EMail: Mark.S.Lewis@telebit.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Mathur & Lewis [Page 23] + |