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 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893
|
<pre>Network Working Group L-E. Jonsson
Request for Comments: 3843 G. Pelletier
Category: Standards Track Ericsson
June 2004
<span class="h1">RObust Header Compression (ROHC): A Compression Profile for IP</span>
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 (2004).
Abstract
The original RObust Header Compression (ROHC) RFC (<a href="./rfc3095">RFC 3095</a>) defines
a framework for header compression, along with compression protocols
(profiles) for IP/UDP/RTP, IP/ESP (Encapsulating Security Payload),
IP/UDP, and also a profile for uncompressed packet streams. However,
no profile was defined for compression of IP only, which has been
identified as a missing piece in <a href="./rfc3095">RFC 3095</a>. This document defines a
ROHC compression profile for IP, similar to the IP/UDP profile
defined by <a href="./rfc3095">RFC 3095</a>, but simplified to exclude UDP, and enhanced to
compress IP header chains of arbitrary length.
Table of Contents
<a href="#section-1">1</a>. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-2">2</a>
<a href="#section-2">2</a>. Terminology. . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-2">2</a>
<a href="#section-3">3</a>. ROHC IP Compression (Profile 0x0004) . . . . . . . . . . . . . <a href="#page-3">3</a>
<a href="#section-3.1">3.1</a>. Static Chain Termination . . . . . . . . . . . . . . . . <a href="#page-3">3</a>
<a href="#section-3.2">3.2</a>. Handling Multiple Levels of IP Headers . . . . . . . . . <a href="#page-3">3</a>
<a href="#section-3.3">3.3</a>. Constant IP-ID . . . . . . . . . . . . . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-3.4">3.4</a>. Additional Mode Transition Logic . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-3.5">3.5</a>. Initialization . . . . . . . . . . . . . . . . . . . . . <a href="#page-8">8</a>
<a href="#section-3.6">3.6</a>. Packet Types . . . . . . . . . . . . . . . . . . . . . . <a href="#page-8">8</a>
<a href="#section-3.7">3.7</a>. The CONTEXT_MEMORY Feedback Option . . . . . . . . . . . <a href="#page-10">10</a>
<a href="#section-4">4</a>. Security Considerations. . . . . . . . . . . . . . . . . . . . <a href="#page-10">10</a>
<a href="#section-5">5</a>. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . <a href="#page-10">10</a>
<a href="#section-6">6</a>. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-10">10</a>
<a href="#section-7">7</a>. Normative References . . . . . . . . . . . . . . . . . . . . . <a href="#page-11">11</a>
<span class="grey">Jonsson & Pelletier Standards Track [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
<a href="#appendix-A">Appendix A</a>. Detailed Procedures for Canceling Mode Transitions. . <a href="#page-12">12</a>
<a href="#appendix-A.1">A.1</a>. Transition from Optimistic to Reliable Mode. . . . . . . <a href="#page-12">12</a>
<a href="#appendix-A.2">A.2</a>. Transition from Unidirectional to Reliable Mode. . . . . <a href="#page-13">13</a>
<a href="#appendix-A.3">A.3</a>. Transition from Reliable to Optimistic Mode. . . . . . . <a href="#page-13">13</a>
<a href="#appendix-A.4">A.4</a>. Transition Back to Unidirectional Mode . . . . . . . . . <a href="#page-14">14</a>
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-15">15</a>
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . <a href="#page-16">16</a>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
The original RObust Header Compression (ROHC) RFC [<a href="./rfc3095" title=""Robust Header Compression (ROHC)"">RFC-3095</a>] defines
a framework for header compression, along with compression protocols
(profiles) for IP/UDP/RTP, IP/ESP (Encapsulating Security Payload),
IP/UDP, and also a profile for uncompressed packet streams. The
profile for uncompressed data was defined to provide a means to
encapsulate all traffic over a link within ROHC packets. Through
this profile, the lower layers do not have to provide multiplexing
for different packet types, but instead ROHC can handle any packet
stream, even if compression profiles for all kinds of packet streams
have not yet been defined or implemented over the link.
Although the profile without compression is simple and can tunnel
arbitrary packets, it has of course a major weakness in that it does
not compress the headers at all. When considering that normally all
packets are expected to be IP [RFC-791, <a href="./rfc2460">RFC-2460</a>] packets, and that
the IP header often represents a major part of the total header, a
useful alternative to no compression would for most packets be
compression of the IP header only. Unfortunately, such a profile was
not defined in [<a href="./rfc3095" title=""Robust Header Compression (ROHC)"">RFC-3095</a>], and this has thus been identified as an
important missing piece in the ROHC toolbox.
This document addresses this missing compression support and defines
a ROHC compression profile for IP [RFC-791, <a href="./rfc2460">RFC-2460</a>] only, similar
to the IP/UDP profile defined by [<a href="./rfc3095" title=""Robust Header Compression (ROHC)"">RFC-3095</a>], but simplified to
exclude UDP. Due to the similarities with the IP/UDP profile, the IP
compression profile is described based on the IP/UDP profile, mainly
covering differences. The most important differences are a different
way of terminating the static header chain, and the capability of
compressing IP header chains of arbitrary length.
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Terminology</span>
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 [<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirement Levels"">RFC-2119</a>].
<span class="grey">Jonsson & Pelletier Standards Track [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
ROHC UDP
"ROHC UDP" in this document refers to the IP/UDP profile (Profile
0x0002) as defined in [<a href="./rfc3095" title=""Robust Header Compression (ROHC)"">RFC-3095</a>].
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. ROHC IP Compression (Profile 0x0004)</span>
In general, there are no major differences between the ROHC UDP
profile and the IP profile (ROHC IP) defined in this document, since
the removal of UDP has no impact on the compression mechanisms in
principle. As for ROHC UDP, the compressor generates a 16-bit
sequence number which increases by one for each packet compressed in
the packet stream, simply called SN below. The most important
difference between this profile and ROHC UDP is about static chain
termination and the handling of multiple IP headers. Unless stated
explicitly below, mechanisms and formats are the same as for ROHC
UDP.
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. Static Chain Termination</span>
One difference for IP-only compression, compared to IP/UDP
compression, is related to the termination of the static chain in IR
headers. For the UDP profile, the chain always ends with a UDP
header part, which per definition provides the boundaries for the
chain. The UDP header is also the last header in the uncompressed
packet (except for a potential application header). For the IP-only
profile, there is no single last header that per profile definition
terminates the chain. Instead, the static chain is terminated if the
"Next Header / Protocol" field of a static IP header part indicates
anything but IP (IPinIP or IPv6). Alternatively, the compressor can
choose to end the static chain at any IP header, and indicate this by
setting the MSB of the IP version field to 1 (0xC for IPv4 or 0xE for
IPv6). The decompressor must store this indication in the context
for correct decompression of subsequent headers. Note that the IP
version field in decompressed headers must be restored to its
original value.
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. Handling Multiple Levels of IP Headers</span>
The ROHC IR and IR-DYN packets defined in [<a href="./rfc3095" title=""Robust Header Compression (ROHC)"">RFC-3095</a>] are used to
communicate static and/or dynamic parts of a context. For each of
the compression profiles defined in [<a href="./rfc3095" title=""Robust Header Compression (ROHC)"">RFC-3095</a>], there is a single
last header in the header chain that clearly marks the termination of
the static chain. The length of the dynamic chain is then inferred
from the static chain in the IR header itself, or from the static
chain in the context for the IR-DYN header. The length of both
static and dynamic chains may thus be of arbitrary length and may, in
theory, initialize a context with an arbitrary number of IP levels.
<span class="grey">Jonsson & Pelletier Standards Track [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
However, the general compressed header formats defined in [RFC-3095,
<a href="#section-5.7">section 5.7</a>.] specifies that at most two levels of IP headers (the
'Inner' and the 'Outer' level of IP headers) may be included in a
compressed header. Specifically, the format defined for Extension 3
[RFC-3095, <a href="#section-5.7.5">section 5.7.5</a>.] can only carry one single 'Outer' IP
header. In addition, while list compression may be used to compress
other types of headers, it cannot be used to compress additional IP
headers, as IP headers may not be part of an extension header chain
in compressed headers [RFC-3095, <a href="#section-5.8">section 5.8</a>.].
For the compression profiles defined in [<a href="./rfc3095" title=""Robust Header Compression (ROHC)"">RFC-3095</a>], the consequence
is that at most two levels of IP headers can be compressed. In other
words, the presence of additional IP headers at best partially
disables header compression, as the compressor will only be allowed
to send IR and IR-DYN packets in such cases.
For the compression of IP headers only, the additional IP headers
would however not have to cause header compression to be disabled
because there is no single packet type that ends the compressed
chain. The excess IP headers could simply be left uncompressed by
implicitly terminating the static and dynamic chains after at most
two levels of IP headers.
The IP-only profile defined in this document goes one step further
and supports compression of an arbitrary number of IP levels. This
is achieved by adding a dynamic chain to the general format of
compressed headers, to include the header part of each IP level in
excess of the first two.
As explained above, the static chain within IR packets can be of
arbitrary length, and the chain is terminated by the presence of a
non-IP header (not IPinIP nor IPv6). Alternatively, the chain may be
explicitly terminated with a special code value in the IP version
field, as described in <a href="#section-3.1">section 3.1</a>. The dynamic chain is structured
analogously.
For compressed headers, the information related to the initial two IP
headers is carried as for the IP/UDP profile, and a chain of dynamic
header information is added to the end of the compressed header for
each and every additional IP header. Thus, this additional data
structure is exactly the same as the one used in IR and IR-DYN
packets. The length of the chain is inferred from the chain of
static parameters in the context. While a dynamic chain carries
dynamically changing parameters using an uncompressed representation,
this ensures that flows with arbitrary levels of IP headers will not
impair compression efficiency.
<span class="grey">Jonsson & Pelletier Standards Track [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. Constant IP-ID</span>
Most IPv4 stacks assign an IP-ID according to the value of a counter,
increasing by one for each outgoing packet. ROHC UDP compresses the
IP-ID field using offset IP-ID encoding based on the UDP SN [RFC-
3095]. For stacks generating IP-ID values using a pseudo-random
number generator, the field is not compressed and is sent as-is in
its entirety as additional octets after the compressed header.
Cases have also been found where an IPv4 stack uses a constant value
for the IP Identifier. When the IP-ID field is constant, it cannot
be compressed using offset IP-ID encoding and the field must be sent
in its entirety. This overhead can be avoided with the addition of a
flag within the dynamic part of the chain used to initialize the IPv4
header, as follow:
Dynamic part:
+---+---+---+---+---+---+---+---+
| Type of Service |
+---+---+---+---+---+---+---+---+
| Time to Live |
+---+---+---+---+---+---+---+---+
/ Identification / 2 octets
+---+---+---+---+---+---+---+---+
| DF|RND|NBO|SID| 0 |
+---+---+---+---+---+---+---+---+
/ Generic extension header list / variable length
+---+---+---+---+---+---+---+---+
SID: Static IP Identifier.
For IR and IR-DYN packets, the logic is the same as for ROHC UDP
with the addition that field(SID) must be kept in the context.
For compressed headers other than IR and IR-DYN:
If value(RND) = 0 and context(SID) = 0, hdr(IP-ID) is
compressed using Offset IP-ID encoding (see [RFC-3095 <a href="#section-4.5.5">section</a>
<a href="#section-4.5.5">4.5.5</a>]) using p = 0 and default-slope(IP-ID offset) = 0.
If value(RND) = 0 and context(SID) = 1, hdr(IP-ID) is constant
and compressed away; hdr(IP-ID) is the value of context(IP-ID).
If value(RND) = 1, IP-ID is the uncompressed hdr(IP-ID). IP-ID
is then passed as additional octets at the end of the
compressed header, after any extensions.
<span class="grey">Jonsson & Pelletier Standards Track [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
Note: Only IR and IR-DYN packets can update context(SID).
Note: All other fields are the same as for ROHC UDP [<a href="./rfc3095" title=""Robust Header Compression (ROHC)"">RFC-3095</a>].
<span class="h3"><a class="selflink" id="section-3.4" href="#section-3.4">3.4</a>. Additional Mode Transition Logic</span>
The profiles defined in [<a href="./rfc3095" title=""Robust Header Compression (ROHC)"">RFC-3095</a>] operate using different modes of
compression. A mode transition can be requested once a packet has
reached the decompressor by sending feedback indicating the desired
mode. As per the specifications found in [<a href="./rfc3095" title=""Robust Header Compression (ROHC)"">RFC-3095</a>], the compressor
is compelled to honor such requests.
For the IP profile defined in this document, the Mode parameter for
the value mode = 0 (packet types UOR-2, IR and IR-DYN) is redefined
to allow the compressor to decline a mode transition requested by the
decompressor:
Mode: Compression mode. 0 = (C)ancel Mode Transition
Upon receiving the Mode parameter set to '0', the decompressor MUST
stay in its current mode of operation and SHOULD refrain from sending
further mode transition requests for the declined mode for a certain
amount of time.
More specifically, with reference to the parameters C_TRANS, C_MODE,
D_TRANS, and D_MODE defined in [RFC-3095, <a href="#section-5.6.1">section 5.6.1</a>.], the
following modifications apply when the compressor cancels a mode
transition:
Parameters for the compressor side:
- C_MODE:
This value must not be changed when sending mode information
within packets if the mode parameter is set to '0' (as a
response to a mode transition request from the decompressor).
- C_TRANS:
C_TRANS is (P)ending when receiving a mode transition request
from the decompressor. C_TRANS is set to (D)one when the
compressor receives an ACK for a UOR-2, IR-DYN, or IR packet
sent with the mode parameter set to the mode in use at the time
the mode transition request was initiated.
<span class="grey">Jonsson & Pelletier Standards Track [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
Parameters for the decompressor side:
- D_MODE:
D_MODE MUST remain unchanged when receiving a UOR-2, an IR-DYN,
or an IR packet sent with the mode parameter set to '0'.
- D_TRANS:
D_TRANS is (P)ending when a UOR-2, IR-DYN, or IR packet sent
with the mode parameter set to '0' is received. It is set to
(D)one when a packet of type 1 or 0 corresponding to the
unchanged mode is received.
The resulting mode transition procedure is described below:
Compressor Decompressor
----------------------------------------------
C_MODE = X | | D_MODE = X
| Mode Request(Y) +-<-<-<-| D_TRANS = I
| +-<-<-<-<-<-<-<-+ |
C_TRANS = P |-<-<-<-+ |
C_MODE = X | |
|->->->-+ IR/IR-DYN/UOR-2(SN,C) |
| +->->->->->->->-+ |
|->-.. +->->->-| D_TRANS = P
|->-.. | D_MODE = X
| ACK(SN,X) +-<-<-<-|
| +-<-<-<-<-<-<-<-+ |
C_TRANS = D |-<-<-<-+ |
| |
|->->->-+ X-0, X-1* |
| +->->->->->->->-+ |
| +->->->-| D_TRANS = D
| |
where X: mode in use before the mode transition was initiated
Y: mode requested by the decompressor
C: (C)ancel mode transition
<span class="grey">Jonsson & Pelletier Standards Track [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
<span class="h3"><a class="selflink" id="section-3.5" href="#section-3.5">3.5</a>. Initialization</span>
The static context for ROHC IP compression can be initialized in
either of two ways:
1) By using an IR packet as in ROHC UDP, where the profile is 0x0004,
and the static chain ends with the static part of an IP header,
where the Next Header/Protocol field has any value but IPinIP (4)
or IPv6 (41) [<a href="#ref-PROTOCOL" title=""Assigned Internet Protocol Numbers"">PROTOCOL</a>], or where the IP version field indicates
termination (see <a href="#section-3.1">section 3.1</a>). At the compressor, SN is
initialized to a random value when the first IR packet is sent.
2) By reusing an existing context. This is done with an IR-DYN
packet, identifying profile 0x0004, where the dynamic chain
corresponds to the prefix of the existing static chain, ending
with an IP header where the Next Header/Protocol field has any
value but IPinIP (4) or IPv6 (41) [<a href="#ref-PROTOCOL" title=""Assigned Internet Protocol Numbers"">PROTOCOL</a>], or where the IP
version field indicates termination (see <a href="#section-3.1">section 3.1</a>). At the
compressor, SN is initialized to a random value when the first
IR-DYN packet is sent.
For ROHC IP, the dynamic part of an IR or IR-DYN packet is similar to
the one for ROHC UDP, with a two-octet field containing the SN
present at the end of the dynamic chain in IR and IR-DYN packets. It
should be noted that the static and dynamic chains have an arbitrary
length, and the SN is added only once, at the end of the dynamic
chain in IR and IR-DYN packets.
<span class="h3"><a class="selflink" id="section-3.6" href="#section-3.6">3.6</a>. Packet Types</span>
Except for one new feedback option (see <a href="#section-3.7">section 3.7</a>), the only packet
format that differs from ROHC UDP is the general format for
compressed packets, which has no UDP checksum in the end. Instead,
it ends with a list of dynamic header portions, one for each IP
header above the initial two (if any, as indicated by the presence of
corresponding header portions in the static chain).
<span class="grey">Jonsson & Pelletier Standards Track [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
The general format for a compressed header is thus as follows:
0 1 2 3 4 5 6 7
--- --- --- --- --- --- --- ---
: Add-CID octet : |
+---+---+---+---+---+---+---+---+ |
| first octet of base header | |
+---+---+---+---+---+---+---+---+ |
: : |
/ 0, 1, or 2 octets of CID / |
: : |
+---+---+---+---+---+---+---+---+ |
/ remainder of base header / |
+---+---+---+---+---+---+---+---+ |
: : |
/ Extension / |
: : |
--- --- --- --- --- --- --- --- |
: : |
+ IP-ID of outer IPv4 header +
: : (see <a href="./rfc3095#section-5.7">section 5.7 of [RFC-3095]</a>)
--- --- --- --- --- --- --- ---
/ AH data for outer list / |
--- --- --- --- --- --- --- --- |
: : |
+ GRE checksum + |
: : |
--- --- --- --- --- --- --- --- |
: : |
+ IP-ID of inner IPv4 header + |
: : |
--- --- --- --- --- --- --- --- |
/ AH data for inner list / |
--- --- --- --- --- --- --- --- |
: : |
+ GRE checksum + |
: : |
--- --- --- --- --- --- --- ---
: List of :
/ Dynamic chains / variable, given by static chain
: for additional IP headers : (includes no SN)
--- --- --- --- --- --- --- ---
Note that the list of dynamic chains for the additional IP headers in
compressed packets do not have a sequence number at the end of the
chain, as SN is present within compressed base headers.
<span class="grey">Jonsson & Pelletier Standards Track [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
<span class="h3"><a class="selflink" id="section-3.7" href="#section-3.7">3.7</a>. The CONTEXT_MEMORY Feedback Option</span>
The CONTEXT_MEMORY option informs the compressor that the
decompressor does not have sufficient memory resources to handle the
context of the packet stream, as the stream is currently compressed.
0 1 2 3 4 5 6 7
+---+---+---+---+---+---+---+---+
| Opt Type = 9 | Opt Len = 0 |
+---+---+---+---+---+---+---+---+
When receiving a CONTEXT_MEMORY option, the compressor SHOULD take
actions to compress the packet stream in a way that requires less
decompressor memory resources, or stop compressing the packet stream.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Security Considerations</span>
The security considerations of [<a href="./rfc3095" title=""Robust Header Compression (ROHC)"">RFC-3095</a>] apply equally to this
document, without exceptions or additions.
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. IANA Considerations</span>
ROHC profile identifier 0x0004 has been reserved by the IANA for the
profile defined in this document.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Acknowledgements</span>
The authors would like to thank Carsten Bormann, Fredrik Lindstrom,
Tommy Lundemo, and especially the committed document reviewers
Kristofer Sandlund and Mark West, for valuable input and review.
<span class="grey">Jonsson & Pelletier Standards Track [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. Normative References</span>
[<a id="ref-RFC-791">RFC-791</a>] Postel, J., "Internet Protocol", <a href="./rfc791">RFC 791</a>, September 1981.
[<a id="ref-RFC-2119">RFC-2119</a>] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>, March 1997.
[<a id="ref-RFC-2460">RFC-2460</a>] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", <a href="./rfc2460">RFC 2460</a>, December 1998.
[<a id="ref-RFC-3095">RFC-3095</a>] Bormann, C., Burmeister, C., Degermark, M., Fukushima,
H., Hannu, H., Jonsson, L-E., Hakenberg, R., Koren, T.,
Le, K., Liu, Z., Martensson, A., Miyazaki, A., Svanbro,
K., Wiebke, T., Yoshimura, T. and H. Zheng, "Robust
Header Compression (ROHC)", <a href="./rfc3095">RFC 3095</a>, July 2001.
[<a id="ref-PROTOCOL">PROTOCOL</a>] "Assigned Internet Protocol Numbers", IANA registry at:
<a href="http://www.iana.org/assignments/protocol-numbers">http://www.iana.org/assignments/protocol-numbers</a>
<span class="grey">Jonsson & Pelletier Standards Track [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
<span class="h2"><a class="selflink" id="appendix-A" href="#appendix-A">Appendix A</a>. Detailed Procedures for Canceling Mode Transitions</span>
The profiles defined in [<a href="./rfc3095" title=""Robust Header Compression (ROHC)"">RFC-3095</a>] operate using different modes of
compression: Unidirectional (U-Mode), Bi-directional Optimistic
(O-Mode), and Bi-directional Reliable (R-Mode). Compression always
starts in the U-Mode, and mode transitions can only be initiated by
the decompressor [RFC-3095, <a href="#section-5.6">section 5.6</a>.]. A mode transition can be
requested once a packet has reached the decompressor by sending
feedback indicating the desired mode.
With reference to the parameters C_TRANS, C_MODE, D_TRANS, and D_MODE
defined in [RFC-3095, <a href="#section-5.6.1">section 5.6.1</a>.], the following sub-sections
describe the resulting procedures when a compressor declines a mode
transition request from the decompressor as described in <a href="#section-3.4">section 3.4</a>.
<span class="h3"><a class="selflink" id="appendix-A.1" href="#appendix-A.1">A.1</a>. Transition from Optimistic to Reliable Mode</span>
When the decompressor initiates a mode transition from Optimistic to
Reliable mode, the cancellation of the transition procedure is as
follows:
Compressor Decompressor
----------------------------------------------
| |
| ACK(R)/NACK(R) +-<-<-<-| D_TRANS = I
| +-<-<-<-<-<-<-<-+ |
C_TRANS = P |-<-<-<-+ |
C_MODE = O | |
|->->->-+ IR/IR-DYN/UOR-2(SN,C) |
| +->->->->->->->-+ |
|->-.. +->->->-| D_TRANS = P
|->-.. | D_MODE = O
| ACK(SN,O) +-<-<-<-|
| +-<-<-<-<-<-<-<-+ |
C_TRANS = D |-<-<-<-+ |
| |
|->->->-+ UO-0, UO-1* |
| +->->->->->->->-+ |
| +->->->-| D_TRANS = D
The compressor must not send packet types 1 or 0 when C_TRANS is P,
i.e., not until it has received an ACK for a UOR-2, IR-DYN, or IR
packet sent with the mode transition parameter set to C. When the
decompressor receives a UOR-2, IR-DYN, or IR packet sent with the
mode transition parameter set to C, it must keep the value D_MODE as
O and set D_TRANS to P. When the decompressor receives packet types
0 or 1, after having ACKed a UOR-2, IR-DYN, or IR packet, it sets
D_TRANS to D.
<span class="grey">Jonsson & Pelletier Standards Track [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
<span class="h3"><a class="selflink" id="appendix-A.2" href="#appendix-A.2">A.2</a>. Transition from Unidirectional to Reliable Mode</span>
The cancellation of a transition from Unidirectional to Reliable mode
follows the same procedure as defined in <a href="#section-4.2">section 4.2</a> above.
<span class="h3"><a class="selflink" id="appendix-A.3" href="#appendix-A.3">A.3</a>. Transition from Reliable to Optimistic Mode</span>
When the decompressor initiates a mode transition from Reliable to
Optimistic mode, the cancellation of the transition procedure is
described as follows:
Compressor Decompressor
----------------------------------------------
| |
| ACK(O)/NACK(O) +-<-<-<-| D_TRANS = I
| +-<-<-<-<-<-<-<-+ |
C_TRANS = P |-<-<-<-+ |
C_MODE = R | |
|->->->-+ IR/IR-DYN/UOR-2(SN,C) |
| +->->->->->->->-+ |
|->-.. +->->->-| D_MODE = R
|->-.. |
| ACK(SN,R) +-<-<-<-|
| +-<-<-<-<-<-<-<-+ |
C_TRANS = D |-<-<-<-+ |
| |
|->->->-+ R-0, R-1* |
| +->->->->->->->-+ |
| +->->->-| D_TRANS = D
| |
The compressor must not send packet types 1 or 0 when C_TRANS is P,
i.e., not until it has received an ACK for a UOR-2, IR-DYN, or IR
packet sent with the mode transition parameter set to C. When the
decompressor receives a UOR-2, IR-DYN, or IR packet sent with the
mode transition parameter set to C, it must keep the value D_MODE as
R. When the decompressor receives packet types 0 or 1, after having
ACKed a UOR-2, IR-DYN, or IR packet, it sets D_TRANS to D.
<span class="grey">Jonsson & Pelletier Standards Track [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
<span class="h3"><a class="selflink" id="appendix-A.4" href="#appendix-A.4">A.4</a>. Transition Back to Unidirectional Mode</span>
When the decompressor initiates a mode transition from Reliable or
Optimistic mode back to Unidirectional mode, the cancellation of the
transition procedure is as follows:
Compressor Decompressor
----------------------------------------------
| |
| ACK(U)/NACK(U) +-<-<-<-| D_TRANS = I
| +-<-<-<-<-<-<-<-+ |
C_TRANS = P |-<-<-<-+ |
C_MODE = O/R| |
|->->->-+ IR/IR-DYN/UOR-2(SN,C) |
| +->->->->->->->-+ |
|->-.. +->->->-|
|->-.. |
| ACK(SN,O/R) +-<-<-<-|
| +-<-<-<-<-<-<-<-+ |
C_TRANS = D |-<-<-<-+ |
| R-0, R-1* or |
|->->->-+ UO-0, UO-1* |
| +->->->->->->->-+ |
| +->->->-| D_TRANS = D
D_MODE = O/R
When the decompressor receives a UOR-2, IR-DYN, or IR packet sent
with the mode transition parameter set to C, it must keep the value
D_MODE to the bi-directional mode already in use (either O- or R-
mode). After ACKing the first UOR-2(C), IR-DYN(C), or IR(C), the
decompressor MUST continue to send feedback with the Mode parameter
set to the bi-directional mode in use (either O- or R-mode) until it
receives packet types 0 or 1. When the decompressor receives packet
types 0 or 1, after having ACKed a UOR-2, IR-DYN, or IR packet, it
sets D_TRANS to D.
<span class="grey">Jonsson & Pelletier Standards Track [Page 14]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-15" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
Authors' Addresses
Lars-Erik Jonsson
Ericsson AB
Box 920
SE-971 28 Lulea, Sweden
Phone: +46 8 404 29 61
Fax: +46 920 996 21
EMail: lars-erik.jonsson@ericsson.com
Ghyslain Pelletier
Ericsson AB
Box 920
SE-971 28 Lulea, Sweden
Phone: +46 8 404 29 43
Fax: +46 920 996 21
EMail: ghyslain.pelletier@ericsson.com
<span class="grey">Jonsson & Pelletier Standards Track [Page 15]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-16" ></span>
<span class="grey"><a href="./rfc3843">RFC 3843</a> A ROHC Profile for IP June 2004</span>
Full Copyright Statement
Copyright (C) The Internet Society (2004). This document is subject
to the rights, licenses and restrictions contained in <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a>, and
except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM 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.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and <a href="https://www.rfc-editor.org/bcp/bcp79">BCP 79</a>.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
<a href="http://www.ietf.org/ipr">http://www.ietf.org/ipr</a>.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at ietf-
ipr@ietf.org.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Jonsson & Pelletier Standards Track [Page 16]
</pre>
|