1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
|
Network Working Group A. Shacham
Request for Comments: 2393 Cisco
Category: Standards Track R. Monsour
Hi/fn
R. Pereira
TimeStep
M. Thomas
AltaVista Internet
December 1998
IP Payload Compression Protocol (IPComp)
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.
Copyright Notice
Copyright (C) The Internet Society (1998). All Rights Reserved.
Abstract
This document describes a protocol intended to provide lossless
compression for Internet Protocol datagrams in an Internet
environment.
1. Introduction
IP payload compression is a protocol to reduce the size of IP
datagrams. This protocol will increase the overall communication
performance between a pair of communicating hosts/gateways ("nodes")
by compressing the datagrams, provided the nodes have sufficient
computation power, through either CPU capacity or a compression
coprocessor, and the communication is over slow or congested links.
IP payload compression is especially useful when encryption is
applied to IP datagrams. Encrypting the IP datagram causes the data
to be random in nature, rendering compression at lower protocol
layers (e.g., PPP Compression Control Protocol [RFC-1962])
ineffective. If both compression and encryption are required,
compression MUST be applied before encryption.
Shacham, et. al. Standards Track [Page 1]
^L
RFC 2393 IPComp December 1998
This document defines the IP payload compression protocol (IPComp),
the IPComp packet structure, the IPComp Association (IPCA), and
several methods to negotiate the IPCA.
Other documents shall specify how a specific compression algorithm
can be used with the IP payload compression protocol. Such
algorithms are beyond the scope of this document.
1.1. Specification of Requirements
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC-2119].
2. Compression Process
The compression processing of IP datagrams has two phases:
compressing of outbound IP datagrams ("compression") and
decompressing of inbound datagrams ("decompression"). The
compression processing MUST be lossless, ensuring that the IP
datagram, after being compressed and decompressed, is identical to
the original IP datagram.
Each IP datagram is compressed and decompressed by itself without any
relation to other datagrams ("stateless compression"), as IP
datagrams may arrive out of order or not arrive at all. Each
compressed IP datagram encapsulates a single IP payload.
Processing of inbound IP datagrams MUST support both compressed and
non-compressed IP datagrams, in order to meet the non-expansion
policy requirements, as defined in section 2.2.
The compression of outbound IP datagrams MUST be done before any IP
security processing, such as encryption and authentication, and
before any fragmentation of the IP datagram. In addition, in IP
version 6 [RFC-2460], the compression of outbound IP datagrams MUST
be done before the addition of either a Hop-by-Hop Options header or
a Routing Header, since both carry information that must be examined
and processed by possibly every node along a packet's delivery path,
and therefore MUST be sent in the original form.
Similarly, the decompression of inbound IP datagrams MUST be done
after the reassembly of the IP datagrams, and after the completion of
all IP security processing, such as authentication and decryption.
Shacham, et. al. Standards Track [Page 2]
^L
RFC 2393 IPComp December 1998
2.1. Compressed Payload
The compression is applied to a single array of octets, which are
contiguous in the IP datagram. This array of octets always ends at
the last octet of the IP packet payload. Note: a contiguous array of
octets in the IP datagram may be not contiguous in physical memory.
In IP version 4 [RFC-0791], the compression is applied to the upper
layer protocol (ULP) payload of the IP datagram. No portion of the
IP header or the IP header options is compressed.
In the IPv6 context, IPComp is viewed as an end-to-end payload, and
MUST not apply to hop-by-hop, routing, and fragmentation extension
headers. The compression is applied starting at the first IP Header
Option field that does not carry information that must be examined
and processed by nodes along a packet's delivery path, if such IP
Header Option field exists, and continues to the ULP payload of the
IP datagram.
The size of a compressed payload, generated by the compression
algorithm, MUST be in whole octet units.
As defined in section 3, an IPComp header is inserted immediately
preceding the compressed payload. The original IP header is modified
to indicate the usage of the IPComp protocol and the reduced size of
the IP datagram. The original content of the Next Header (IPv6) or
protocol (IPv4) field is stored in the IPComp header.
The decompression is applied to a single contiguous array of octets
in the IP datagram. The start of the array of octets immediately
follows the IPComp header and ends at the last octet of the IP
payload. If the decompression process is successfully completed, the
IP header is modified to indicate the size of the decompressed IP
datagram, and the original next header as stored in the IPComp
header. The IPComp header is removed from the IP datagram and the
decompressed payload immediately follows the IP header.
2.2. Non-Expansion Policy
If the total size of a compressed ULP payload and the IPComp header,
as defined in section 3, is not smaller than the size of the original
ULP payload, the IP datagram MUST be sent in the original non-
compressed form. To clarify: If an IP datagram is sent non-
compressed, no IPComp header is added to the datagram. This policy
ensures saving the decompression processing cycles and avoiding
incurring IP datagram fragmentation when the expanded datagram is
larger than MTU.
Shacham, et. al. Standards Track [Page 3]
^L
RFC 2393 IPComp December 1998
Small IP datagrams are likely to expand as a result of compression.
Therefore, a numeric threshold should be applied before compression,
where IP datagrams of size smaller than the threshold are sent in the
original form without attempting compression. The numeric threshold
is implementation dependent.
An IP datagram with payload that has been previously compressed tends
not to compress any further. The previously compressed payload may
be the result of external processes, such as compression applied by
an upper layer in the communication stack, or by an off-line
compression utility. An adaptive algorithm should be implemented to
avoid the performance hit. For example, if the compression of i
consecutive IP datagrams of an IPCA fails, the next k IP datagrams
are sent without attempting compression. If the next j datagrams are
also failing to compress, the next k+n datagrams are sent without
attempting compression. Once a datagram is compressed successfully,
the normal process of IPComp restarts. Such an adaptive algorithm,
including all the related thresholds, is implementation dependent.
During the processing of the payload, the compression algorithm MAY
periodically apply a test to determine the compressibility of the
processed data, similar to the requirements of [V42BIS]. The nature
of the test is algorithm dependent. Once the compression algorithm
detects that the data is non-compressible, the algorithm SHOULD stop
processing the data, and the payload is sent in the original non-
compressed form.
3. Compressed IP Datagram Header Structure
A compressed IP datagram is encapsulated by modifying the IP header
and inserting an IPComp header immediately preceding the compressed
payload. This section defines the IP header modifications both in
IPv4 and IPv6, and the structure of the IPComp header.
3.1. IPv4 Header Modifications
The following IPv4 header fields are set before transmitting the
compressed IP datagram:
Total Length
The length of the entire encapsulated IP datagram, including
the IP header, the IPComp header and the compressed payload.
Protocol
The Protocol field is set to 108, IPComp Datagram, [RFC-1700].
Shacham, et. al. Standards Track [Page 4]
^L
RFC 2393 IPComp December 1998
Header Checksum
The Internet Header checksum [RFC-0791] of the IP header.
All other IPv4 header fields are kept unchanged, including any header
options.
3.2. IPv6 Header Modifications
The following IPv6 header fields are set before transmitting the
compressed IP datagram:
Payload Length
The length of the compressed IP payload.
Next Header
The Next Header field is set to 108, IPComp Datagram, [RFC-
1700].
All other IPv6 header fields are kept unchanged, including any non-
compressed header options.
The IPComp header is placed in an IPv6 packet using the same rules as
the IPv6 Fragment Header. However if an IPv6 packet contains both an
IPv6 Fragment Header and an IPComp header, the IPv6 Fragment Header
MUST precede the IPComp header in the packet.
3.3. IPComp Header Structure
The four-octet header has the following structure:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Flags | Compression Parameter Index |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Next Header
8-bit selector. Stores the IPv4 Protocol field or the IPv6 Next
Header field of the original IP header.
Flags
8-bit field. Reserved for future use. MUST be set to zero.
MUST be ignored by the receiving node.
Shacham, et. al. Standards Track [Page 5]
^L
RFC 2393 IPComp December 1998
Compression Parameter Index (CPI)
16-bit index. The CPI is stored in network order. The values
0-63 define well-known compression algorithms, which require no
additional information, and are used for manual setup. The
values themselves are identical to IPCOMP Transform identifiers
as defined in [SECDOI]. Consult [SECDOI] for an initial set of
defined values and for instructions on how to assign new values.
The values 64-255 are reserved for future use. The values
256-61439 are negotiated between the two nodes in definition of
an IPComp Association, as defined in section 4. Note: When
negotiating one of the well-known algorithms, the nodes MAY
select a CPI in the pre-defined range 0-63. The values
61440-65535 are for private use among mutually consenting
parties. Both nodes participating can select a CPI value
independently of each other and there is no relationships
between the two separately chosen CPIs. The outbound IPComp
header MUST use the CPI value chosen by the decompressing node.
The CPI in combination with the destination IP address uniquely
identifies the compression algorithm characteristics for the
datagram.
4. IPComp Association (IPCA) Negotiation
To utilize the IPComp protocol, two nodes MUST first establish an
IPComp Association (IPCA) between them. The IPCA includes all
required information for the operation of IPComp, including the
Compression Parameter Index (CPI), the mode of operation, the
compression algorithm to be used, and any required parameter for the
selected compression algorithm. The IPComp mode of operation is
either a node-to-node policy where IPComp is applied to every IP
packet between the nodes, or an ULP session based policy where only
selected ULP sessions between the nodes are using IPComp. For each
IPCA, a different compression algorithm may be negotiated in each
direction, or only one direction may be compressed. The default is
"no IPComp compression".
The IPCA is established by dynamic negotiations or by manual
configuration. The dynamic negotiations SHOULD use the Internet
Security Association and Key Management Protocol [ISAKMP], where
IPSec is present. The dynamic negotiations MAY be implemented
through a different protocol.
4.1. Use of ISAKMP
For IPComp in the context of IP Security, ISAKMP provides the
necessary mechanisms to establish IPCA. IPComp Association is
negotiated by the initiator using a Proposal Payload, which would
Shacham, et. al. Standards Track [Page 6]
^L
RFC 2393 IPComp December 1998
include one or more Transform Payloads. The Proposal Payload would
specify a compression protocol in the protocol id field and each
Transform Payload would contain the specific compression method(s)
being offered to the responder.
In the Internet IP Security Domain of Interpretation (DOI), IPComp is
negotiated as the Protocol ID PROTO_IPCOMP. The compression
algorithm is negotiated as one of the defined IPCOMP Transform
Identifiers.
4.2. Use of Non-ISAKMP Protocol
The dynamic negotiations MAY be implemented through a protocol other
than ISAKMP. Such protocol is beyond the scope of this document.
4.3. Manual Configuration
Nodes may establish IPComp Associations using manual configuration.
For this method, a limited number of Compression Parameters Indexes
(CPIs) is designated to represent a list of specific compression
methods.
5. Security Considerations
When IPComp is used in the context of IPSec, it is believed not to
have an effect on the underlying security functionality provided by
the IPSec protocol; i.e., the use of compression is not known to
degrade or alter the nature of the underlying security architecture
or the encryption technologies used to implement it.
When IPComp is used without IPSec, IP payload compression potentially
reduces the security of the Internet, similar to the effects of IP
encapsulation [RFC-2003]. For example, IPComp may make it difficult
for border routers to filter datagrams based on header fields. In
particular, the original value of the Protocol field in the IP header
is not located in its normal positions within the datagram, and any
transport layer header fields within the datagram, such as port
numbers, are neither located in their normal positions within the
datagram nor presented in their original values after compression. A
filtering border router can filter the datagram only if it shares the
IPComp Association used for the compression. To allow this sort of
compression in environments in which all packets need to be filtered
(or at least accounted for), a mechanism must be in place for the
receiving node to securely communicate the IPComp Association to the
border router. This might, more rarely, also apply to the IPComp
Association used for outgoing datagrams.
Shacham, et. al. Standards Track [Page 7]
^L
RFC 2393 IPComp December 1998
6. References
[RFC-0791] Postel, J., Editor, "Internet Protocol", STD 5, RFC 791,
September 1981.
[RFC-1700] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2,
RFC 1700, October 1994. Or see:
http://www.iana.org/numbers.html
[RFC-2460] Deering, S., and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, December 1998.
[RFC-1962] Rand, D., "The PPP Compression Control Protocol (CCP)",
RFC 1962, June 1996.
[RFC-2003] Perkins, C., "IP Encapsulation within IP", RFC 2003,
October 1996.
[RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[ISAKMP] Maughan, D., Schertler, M., Schneider, M., and J. Turner,
"Internet Security Association and Key Management Protocol
(ISAKMP)", RFC 2408, November 1998.
[SECDOI] Piper, D., "The Internet IP Security Domain of
Interpretation for ISAKMP", RFC 2407, November 1998.
[V42BIS] CCITT, "Data Compression Procedures for Data Circuit
Terminating Equipment (DCE) Using Error Correction
Procedures", Recommendation V.42 bis, January 1990.
Shacham, et. al. Standards Track [Page 8]
^L
RFC 2393 IPComp December 1998
Authors' Addresses
Abraham Shacham
Cisco Systems
170 West Tasman Drive
San Jose, California 95134
United States of America
EMail: shacham@cisco.com
Robert Monsour
Hi/fn Inc.
2105 Hamilton Avenue, Suite 230
San Jose, California 95125
United States of America
EMail: rmonsour@hifn.com
Roy Pereira
TimeStep Corporation
362 Terry Fox Drive
Kanata, Ontario K2K 2P5
Canada
EMail: rpereira@timestep.com
Matt Thomas
AltaVista Internet Software
30 Porter Road
Littleton, Massachusetts 01460
United States of America
EMail: matt.thomas@altavista-software.com
Working Group
The IP Payload Compression Protocol (IPPCP) working group can be
contacted through its chair:
Naganand Dorswamy
Bay Networks
EMail: naganand@baynetworks.com
Shacham, et. al. Standards Track [Page 9]
^L
RFC 2393 IPComp December 1998
Full Copyright Statement
Copyright (C) The Internet Society (1998). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Shacham, et. al. Standards Track [Page 10]
^L
|