Network Working Group                                        J. Pezeshki
Internet-Draft                                         E. Ertekin
Internet-Draft                                               C. Christou
Expires: February 16, April 17, 2009                                        R. Jasani
                                                             C. Christou
                                                             J. Pezeshki
                                                     Booz Allen Hamilton
                                                         August 15,
                                                        October 14, 2008

    IKEv2 Extensions to Support Robust Header Compression over IPsec

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at

   The list of Internet-Draft Shadow Directories can be accessed at

   This Internet-Draft will expire on February 16, April 17, 2009.


   In order to integrate RoHC ROHC with IPsec [ROHCOIPSEC], a mechanism is
   needed to negotiate RoHC ROHC configuration parameters between end-points.
   Internet Key Exchange (IKE) is a mechanism which can be leveraged to
   handle these negotiations.  This document specifies extensions to
   IKEv2 [IKEV2] that will allow RoHC ROHC and its associated configuration
   parameters to be negotiated for IPsec security associations (SAs).

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . 3
   2.  RoHC  ROHC Channel Negotiation  . . . . . . . . . . . . . . . . . . . 3
     2.1.  Negotiation of RoHC ROHC Channel Parameters  . . . . . . . . . . 3
   3.  Security Considerations . . . . . . . . . . . . . . . . . . . . 6
   4.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 6
   5.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 7 6
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . . . 7
     6.1.  Normative References  . . . . . . . . . . . . . . . . . . . 7
     6.2.  Informative References  . . . . . . . . . . . . . . . . . . 7
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . . . 8
   Intellectual Property and Copyright Statements  . . . . . . . . . . 9

1.  Introduction

   Increased packet header overhead due to IPsec [IPSEC] can result in
   the inefficient utilization of bandwidth.  Coupling RoHC ROHC [ROHC] with
   IPsec offers an efficient way to transfer protected IP traffic.

   The operation of RoHCoIPsec ROHCoIPsec [ROHCOIPSEC] requires configuration
   parameters to be negotiated between the compressor and decompressor.
   Current specifications for hop-by-hop RoHC ROHC negotiate these parameters
   through a link-layer protocol such as Point-to-Point Protocol (PPP)
   (i.e.  RoHC  ROHC over PPP [ROHCPPP]).  Since key exchange protocols (e.g.
   IKEv2) can be used to negotiate parameters between IPsec peers, this
   document defines extensions to IKEv2 to negotiate RoHC ROHC parameters for

2.  RoHC  ROHC Channel Negotiation

   The initialization of a RoHC ROHC session requires the negotiation of a
   set of configuration parameters (e.g.  MAX_CID, PROFILES, etc.).  The
   following subsections define extensions to IKEv2 which enables an
   initiator to propose a set of RoHC ROHC parameters; the responder selects
   the appropriate parameters from this list, and responds with the
   accepted parameters for the RoHC ROHC channel.

2.1.  Negotiation of RoHC ROHC Channel Parameters


   ROHC configuration parameters will be negotiated at either the
   establishment or rekeying of a Child SA.  Specifically, a new Notify
   message type is used during the IKE_AUTH and CREATE_CHILD_SA
   exchanges to negotiate these parameters.

   The Notify payload sent by the initiator contains the configuration
   parameters for the RoHC ROHC implementation.  Upon receipt of the
   initiator's request, the responder will either ignore the payload (if
   it doesn't support RoHC ROHC or the proposed parameters) or respond with a
   Notify payload that contains the accepted RoHC ROHC channel parameters.
   The accepted parameters are an intersection between the parameters
   proposed by the initiator and the parameters supported by the
   responder (e.g. if the initiator proposes a MAX_CID value of 15, but
   the responder only supports a MAX_CID value of 13, the responder will
   respond with a value of 13, which is supported by both parties).

   Note that only one Notify payload is used to convey RoHC ROHC parameters
   per exchange.  If multiple Notify payloads relaying RoHC ROHC parameters
   are received by the responder, all but the first such Notify payload
   must be dropped.  If the initiator does not receive a Notify Payload
   with the responder's accepted RoHC ROHC channel parameters, RoHC ROHC must not
   be enabled on the Child SA.

   A new Notify Message Type value, denoted ROHC_SUPPORTED, will be
   added to
   indicate that the Notify payload is conveying RoHC ROHC channel
   parameters.  Additionally, several fields of the  The Notify payload Payload (as defined in [IKEV2]) is
   illustrated in Figure 1 below:

                            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 Payload  !C!  RESERVED   !         Payload Length        !
       !  Protocol ID  !   SPI Size    !      Notify Message Type      !
       !                                                               !
       ~                Security Parameter Index (SPI)                 ~
       !                                                               !
       !                                                               !
       ~                       Notification Data                       ~
       !                                                               !

                       Figure 1. Notify Payload format.

   The fields of the Notify Payload are set as follows:


   Next Payload (1 bit)
      This value is set to zero to indicate that octet)
      Identifier for the recipient must skip
      this payload if it does not understand type of the next payload type code in the Next Payload field of the previous payload.

   RESERVED (7 bits)
      message.  Further details can be sent as zero, and found in [IKEV2].

   Critical (1 bit)
      Since all IKEv2 implementations must be ignored on receipt. support the Notify Payload,
      this value is zero.

   Protocol ID (1 octet)
      Since this Notification message is used during the RoHC parameters are set at SA creation, creation of a
      Child SA, this field must be set to zero.  If this notification concerns an existing SA, this
      value may be set to (2) AH [AH], or (3) ESP [ESP].

   SPI Size (1 octet)
      This value must be set to zero, since no SPI is applicable (RoHC (ROHC
      parameters are set at SA creation, thus the SPI has not been

   Notify Message Type (2 octets)
      This field must be set to ROHC_SUPPORTED.


   ROHC configuration parameters will be communicated via a new Notify
   message type, denoted ROHC_SUPPORTED.  The RoHC ROHC configuration
   parameters will be listed within the Notification Data field of the
   Notify payload in the following format (default values for the
   configuration parameters are consistent with [ROHCPPP]):

                            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
       !            MAX_CID            !              MRRU             !
      !           MAX_HEADER          !         PROFILE LENGTH        !            |    RESERVED   |PROFILES_LENGTH!
       !                                                               !
       ~                           PROFILES...                         ~
       !                                                               !
       !                                                               !
       ~                     INTEGRITY ALGORITHMS...                   ~
       !                                                               !

     Figure 1. 2.  Notification Data field for the ROHC_SUPPORTED Notify
                               message type.

   MAX_CID (2 octets)
      The MAX_CID field indicates the maximum value of a context
      identifier.  This value must be at least 0 and at most 16383 (The
      value 0 implies having one context).

      Suggested value: 15


   PROFILES_LENGTH (1 octet)
      The value of LARGE_CIDS will be implicitly determined by
      this value (i.e. if MAX_CID is <= 15, LARGE_CIDS will be assumed
      to be 0).

   MRRU (2 octets)
      The MRRU field indicates the maximum reconstructed reception unit
      (see [ROHC], section 5.1.1).

      Suggested value: 0

      The MRRU value is used in conjunction with the segmentation
      protocol defined in RoHC.  Since RoHC is implemented over an IPsec
      SA, RoHC segmentation is not possible.  Therefore, the MRRU value
      must be set to zero, indicating that no segment headers are
      allowed on the channel.

   MAX_HEADER (2 octets)
      The largest header size in octets that may be compressed.

      Suggested value: 168 octets
      Note: The MAX_HEADER parameter is not used for all RoHC profiles.
      If none of the RoHC profiles require this field, this value is

   PROFILE LENGTH (2 octets)
      The total number total number of profiles contained within the PROFILES field
      (note that each RoHC ROHC profile is 2-octets in length).

   PROFILES (variable)
      The set of profiles to be enabled for the RoHC ROHC process.  Profiles
      are further detailed in [ROHC].  In addition, several common
      profiles are defined in [ROHCPROF].  These 16-bit profile
      identifiers are to be sent in network byte order.

      The set of Integrity Algorithms that may be use to ensure the
      integrity of the decompressed packets (i.e. ensure that the packet
      headers are properly decompressed).  Each Integrity Algorithm is
      represented by a 2-octet value that corresponds to the value
      listed in [IKEV2-PARA] "For Transform Type 3 (Integrity
      Algorithm)" section.
      It is noted that:
      1.  The length of this field is inferred from the Notify Payload's
          "Payload Length" field ([IKEV2], Section 3.10). field.
      2.  The key for this Integrity Algorithm is computed using the
          same method as is used to compute IPsec's Integrity Algorithm
          key ([IKEV2], Section 2.17).
      3.  A ROHCoIPsec implementation may choose to negotiate a value of
          "0" in this field (i.e., NONE, as defined in the Integrity
          Algorithm Transform ID registry).

   The negotiated set of ROHC parameters are associated with the
   inbound/outbound pair of SAs established by each IKEv2
   CREATE_CHILD_SA exchange.

   The following ROHC channel parameters are not negotiated:
   o  LARGE_CIDS: This value is implicitly determined by the value of
      MAX_CID (e.g. if MAX_CID is <= 15, LARGE_CIDS is assumed to be 0).
   o  MRRU: IPsec implementations will always implement path MTU
      discovery; therefore, ROHC packets will never need to use ROHC
      segmentation over an IPsec SA.  As a result, this value will
      always be zero, and does not need to be negotiated.
   o  FEEDBACK_FOR: When a pair of SAs are created (one in each
      direction), the RoHC ROHC channel parameter FEEDBACK_FOR is set
      implicitly to the other SA of the pair (i.e. the SA pointing in
      the reverse direction).

3.  Security Considerations

   The RoHC ROHC channel parameters negotiated via IKEv2 do not add any new
   vulnerabilities beyond those associated with the normal operation of

4.  IANA Considerations

   This document defines a new Notify Message (Status Type).  Therefore,
   IANA is requested to allocate one value from the IKEv2 Notify Message
   registry to indicate ROHC_SUPPORTED.  Note that, since this Notify
   Message is a Status Type, values ranging from 0 to 16383 must not be
   allocated for ROHC_SUPPORTED.

5.  Acknowledgments

   The authors would like to thank Mr. Sean O'Keeffe, Mr. James Kohler,
   and Ms. Linda Noone of the Department of Defense, as well as Mr. Rich
   Espy of OPnet for their contributions and support in the development
   of this document.  The authors would also like to thank Mr. Tero
   Kivinen for providing his technical expertise for this document.  In
   addition, the authors would like to thank the following for their
   numerous reviews and comments to this document:

   o  Dr. Stephen Kent
   o  Dr. Carsten Bormann
   o  Mr. Lars-Erik Jonnson
   o  Mr. Pasi Eronen
   o  Dr. Joseph Touch
   o  Mr. Yoav Nir

   Finally, the authors would also like to thank Mr. Tom Conkle, Ms.
   Michele Casey, and Mr. Etzel Brower.

6.  References

6.1.  Normative References

              Ertekin, E., Christou, C., and R. Jasani, "Integration of
              Robust Header Compression over IPsec Security
              Associations", work in progress , October 2008.

   [ROHC]     Bormann, C., Burmeister, C., Degermark, M., Fukushima, H.,
              Hannu, H., Jonsson, L., 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): Framework and four profiles: RTP, UDP,
              ESP, and uncompressed", RFC 3095, July 2001.

   [IPSEC]    Kent, S. and K. Seo, "Security Architecture for the
              Internet Protocol", RFC 4301, December 2005.

              Ertekin, E., Christou, C., and R. Jasani, "Integration of
              Robust Header Compression over IPsec Security
              Associations", work in progress , June 2006.

   [IKEV2]    Kaufman, C., "Internet Key Exchange (IKEv2) Protocol",
              RFC 4306, December 2005.

   [ROHCPPP]  Bormann, C., "Robust Header Compression (ROHC) over PPP",
              RFC 3241, April 2002.

   [AH]       Kent, S., "IP Authentication Header", RFC 4302,
              December 2005.

   [ESP]      Kent, S., "IP Encapsulating Security Payload (ESP)",
              RFC 4303, December 2005.

6.2.  Informative References

              Pelletier, G. and K. Sandlund, "RObust Header Compression
              Version 2 (RoHCv2): (ROHCv2): Profiles for RTP, UDP, IP, ESP and UDP
              Lite", , May 2007.

              IANA, "IKEv2 Parameters,
              January 2008.

Authors' Addresses

   Jonah Pezeshki

   Emre Ertekin
   Booz Allen Hamilton
   13200 Woodland Park Dr.
   Herndon, VA  20171


   Emre Ertekin

   Chris Christou
   Booz Allen Hamilton
   13200 Woodland Park Dr.
   Herndon, VA  20171


   Rohan Jasani
   Booz Allen Hamilton
   13200 Woodland Park Dr.
   Herndon, VA  20171


   Chris Christou

   Jonah Pezeshki
   Booz Allen Hamilton
   13200 Woodland Park Dr.
   Herndon, VA  20171


Full Copyright Statement

   Copyright (C) The IETF Trust (2008).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an

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 BCP 78 and BCP 79.

   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

   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