Network Working Group                                         E. Ertekin
Internet-Draft                                               C. Christou
Expires: April 17, August 6, 2009                                        R. Jasani
                                                             J. Pezeshki
                                                     Booz Allen Hamilton
                                                        October 14, 2008
                                                              T. Kivinen
                                                           Safenet, Inc.
                                                              C. Bormann
                                                 Universitaet Bremen TZI
                                                        February 2, 2009

    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

   This Internet-Draft is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, submitted to IETF in accordance full conformance with Section 6 the
   provisions of BCP 78 and 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 April 17, August 6, 2009.

Copyright Notice

   Copyright (c) 2009 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   ( in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.


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

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . 3
   2.  ROHC Channel Negotiation Initialization for ROHCoIPsec  . . . . . . . . . . 3
     2.1.  ROHC Channel Parameters that are Signaled . . . . . . . . . 3
     2.1.  Negotiation of
       2.1.1.  ROHC_SUPPORTED Notify Message . . . . . . . . . . . . . 4
       2.1.2.  ROHC Channel Parameters Attribute Types  . . . . . . . . . . 3 . . . . . . . 5
     2.2.  ROHC Channel Parameters that are Implicitly Set . . . . . . 7
   3.  Security Considerations . . . . . . . . . . . . . . . . . . . . 6 7
   4.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 6 7
   5.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 6 8
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . . . 7 9
     6.1.  Normative References  . . . . . . . . . . . . . . . . . . . 7 9
     6.2.  Informative References  . . . . . . . . . . . . . . . . . . 7 9
   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] with
   IPsec offers an efficient way to transfer protected IP traffic.

   The operation of

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

2.  ROHC Channel Negotiation

   The initialization of a ROHC session requires the negotiation of a
   set of configuration parameters (e.g.  MAX_CID, PROFILES, etc.). Initialization for ROHCoIPsec

   The following subsections define extensions to IKEv2 which enables an
   initiator to propose and a set of ROHC parameters; the responder selects
   the appropriate parameters from this list, and responds with the
   accepted to signal parameters for the required to establish
   a ROHC channel. channel for a ROHCoIPsec session.

2.1.  Negotiation of  ROHC Channel Parameters that are Signaled

   ROHC configuration channel parameters will be negotiated signaled 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 convey
   these parameters.

   The Notify payload sent by the initiator contains the configuration channel
   parameters for the ROHC implementation.  Specifically, these
   parameters indicate the capabilities of the ROHC decompressor at the
   initiator.  Upon receipt of the initiator's request, the responder
   will either ignore the payload (if it doesn't support ROHC or the
   proposed parameters) or respond with a Notify payload that contains the accepted
   its own ROHC channel parameters.
   The accepted

   Note that only one Notify payload is used to convey ROHC parameters.
   If multiple Notify payloads containing ROHC 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 parameters
   per exchange.  If multiple Notify payloads relaying ROHC parameters
   are received by the responder, all but received,
   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
   channel parameters, ROHC must not be enabled on the Child SA.

   A new Notify Message Type value, denoted ROHC_SUPPORTED, will
   indicate indicates
   that the Notify payload is conveying ROHC channel parameters.  The
   value for the ROHC_SUPPORTED message is specified in Section 4.

   The Notify Payload (as defined (defined in [IKEV2]) is illustrated in Figure 1 below: 1.

                           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 octet)
      Identifier for the payload type of the next payload in the
      message.  Further details can be found in [IKEV2].

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

   Payload Length (2 octets)
      As defined in [IKEV2], this field indicates the length of the
      current payload, including the generic payload header.

   Protocol ID (1 octet)
      Since this Notification message is used during the creation of a
      Child SA, this field must be set to zero.

   SPI Size (1 octet)
      This value must be set to zero, since no SPI is applicable (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

2.1.1.  ROHC_SUPPORTED Notify
   message type, denoted ROHC_SUPPORTED. Message

   The ROHC configuration ROHC_SUPPORTED Notify message is used to signal channel
   parameters will be listed within the Notification Data field between ROHCoIPsec compressor and decompressor.  The
   message contains a list of "ROHC Attributes" which contain the
   Notify payload in
   parameters required for the following ROHCoIPsec session.

   The format (default values for signaling ROHC Attributes takes a similar format to
   configuration parameters are consistent with [ROHCPPP]): Transform Attributes described in Section 3.3.5 of [IKEV2].  The
   ROHC Attribute is shown in Figure 2.

                            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
       !A!     ROHC Attribute Type     !            MAX_CID            |    RESERVED   |PROFILES_LENGTH!
       !  AF=0  ROHC Attribute Length  !
       ~                           PROFILES...                         ~
       !F!                             !  AF=1  ROHC Attribute Value   !
       !                   AF=0  ROHC Attribute Value                  !
       ~                     INTEGRITY ALGORITHMS...                   ~
       !                   AF=1  Not Transmitted                       !

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

   MAX_CID ROHC Attribute.

   o  ROHC Attribute Type (2 octets) - Unique identifier for each type
      of ROHC attribute (see Section 2.1.2).  The MAX_CID most significant bit
      in the field indicates is the maximum value of Attribute Format (AF) bit.  If the AF bit is 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 total number of profiles contained within
      zero (0), then the PROFILES field
      (note that each ROHC profile Attribute is 2-octets expressed in length).

   PROFILES (variable)
      The set of profiles to be enabled for a Type/Length/
      Value (TLV) format.  If the AF bit is a one (1), then the ROHC process.  Profiles
      are further detailed
      Attribute is expressed in [ROHC].  In addition, several a Type/Value (TV) format.
   o  ROHC Attribute Length (2 octets) - Length (in octets) of the
      Attribute Value.  When the AF bit is a one (1), the ROHC Attribute
      Value is 2 octets and the ROHC Attribute Length field is not
   o  ROHC Attribute Value (variable length) - Value of the ROHC
      Attribute associated with the ROHC Attribute Type.  If the AF bit
      is a zero (0), this field's length is defined by the ROHC
      Attribute Length field.  If the AF bit is a one (1), the length of
      the ROHC Attribute Value is 2 octets.

2.1.2.  ROHC Attribute Types

   This section describes four ROHC Attribute Types: MAX_CID,
   ROHC_PROFILES, ROHC_INTEG, and ROHC_ICV_LEN.  The value which defines
   each ROHC Attribute Type is specified in Section 4.

   Maximum Context Identifier (MAX_CID, AF = 1)
      The MAX_CID attribute is a mandatory attribute.  Exactly one
      MAX_CID attribute must be sent.  The MAX_CID field indicates the
      maximum value of a context Identifier supported by the ROHCoIPsec
      decompressor.  This attribute value is two octets in length.  The
      range of values for MAX_CID must be at least 0 and at most 16383
      (the value 0 implies having one context).  The recipient of the
      MAX_CID Attribute must only use up to MAX_CID context identifiers
      for compression.

      Suggested value: 15

   ROHC Profile (ROHC_PROFILE, AF = 1)
      The ROHC_PROFILE attribute is a mandatory attribute.  At least one
      ROHC_PROFILE attribute(s) must be sent.  A ROHC_PROFILE attribute
      contains a two-octet profile supported by the ROHCoIPsec
      decompressor.  The recipient of a ROHC_PROFILE attribute(s) must
      only use the profile(s) proposed for compression.

      Several common profiles are defined in [ROHCPROF].  These 16-bit [ROHCV1] and [ROHCV2].
      Note, however, that two versions of the same profile
      identifiers are to must not be sent in network byte order.

      The set of
      signaled.  For example, if a ROHCoIPsec decompressor supports both
      ROHCv1 UDP and ROHCv2 UDP profiles, both profiles must not be

   Integrity Algorithms that may Algorithm for Verification of Decompressed Headers
   (ROHC_INTEG, AF = 1)
      The ROHC_INTEG attribute is a mandatory attribute.  There must be use
      at least one ROHC_INTEG attribute contained within the
      ROHC_SUPPORTED Notify message.  The attribute contains an
      integrity algorithm that is used to ensure the integrity of the
      decompressed packets (i.e. ensure that the packet headers are
      properly decompressed).  Each Integrity Algorithm  The integrity algorithm is represented by
      a 2-octet two octet value that corresponds to the value listed in [IKEV2-PARA] [IKEV2-
      PARA] "For Transform Type 3 (Integrity Algorithm)" section.  Upon
      receipt of the ROHC_INTEG attribute(s), the responder must select
      exactly one of proposed algorithms and send the selected algorithm
      back to the initiator.  The selected integrity algorithm must be
      used in both directions.

      It is noted that:
      1.  The length of this field is inferred from the Notify Payload's
          "Payload Length" 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).
      2.  A ROHCoIPsec implementation initiator may choose to negotiate signal a value of
          "0" zero (0x0000) in
          a ROHC_INTEG attribute.  This corresponds to "NONE" in the
          Integrity Algorithm Transform ID registry.  The ROHCoIPsec
          responder may select this field (i.e., NONE, as defined value by responding to the initiator
          with a ROHC_INTEG attribute of zero (0x0000).  In this
          scenario, no integrity algorithm is applied in either

   Integrity Algorithm Length (ROHC_ICV_LEN, AF = 1)
      The ROHC_ICV_LEN attribute is an optional attribute.  There may be
      zero or one ROHC_ICV_LEN attribute contained within the
      ROHC_SUPPORTED Notify message.  The attribute specifies the number
      of ICV octets the sender expects to receive on incoming ROHC
      packets.  The ICV of the negotiated ROHC_INTEG algorithms are
      truncated to ROHC_ICV_LEN bytes by taking the first ROHC_ICV_LEN
      bytes of the output.  Both the initiator and responder announce
      their preference for their own ICV length.  The recipient of the
      ROHC_ICV_LEN attribute must truncate the ICV to the length
      contained in the Integrity
          Algorithm Transform ID registry).

   The negotiated set message.  If ROHC_ICV_LEN length is zero, then no
      ICV is calculated or sent.  If no ROHC_ICV_LEN attribute is sent
      at all or the ROHC_ICV_LEN is larger than the length of ROHC parameters are associated with the
   inbound/outbound pair ICV of SAs established
      selected algorithm, then the full ICV length as specified by each IKEv2
   CREATE_CHILD_SA exchange. the
      ROHC_INTEG algorithm is sent.

   If an unknown ROHC Attribute Type Value is received, it is silently

2.2.  ROHC Channel Parameters that are Implicitly Set

   The following ROHC channel parameters are not negotiated: signaled:
   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. signaled.
   o  FEEDBACK_FOR: When a pair of SAs are created (one in each
      direction), the 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 channel parameters negotiated signaled 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.

   In addition, IANA is requested to allocate a "ROHC Attribute Types"
   registry in the IKEv2 Parameters Registry [IKEV2-PARA].  Within the
   "ROHC Attribute Types" registry, this document allocates the
   following values:

   Value     ROHC Attribute Type                            Reference
   0         RESERVED                                       [rfcThis]
   1         Maximum value of context identifier (MAX_CID)  [rfcThis]
   2         ROHC Profile (ROHC_PROFILE)                    [rfcThis]
   3         ROHC Integrity Algorithm (ROHC_INTEG)          [rfcThis]
   4         ROHC ICV Length in bytes (ROHC_ICV_LEN)        [rfcThis]
   5-65536   Unassigned

   Following the policies outlined in [IANA-CONSIDERATIONS], the IANA
   policy for assigning new values for the ROHC Attribute Types registry
   shall be Specification Required: values and their meanings must be
   documented in a permanent and readily available public specification,
   in sufficient detail so that interoperability between independent
   implementations is possible.

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 Yoav Nir, and Mr. Robert A
   Stangarone Jr.: both served as committed document reviewers 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 Jonsson
   o  Mr. Pasi Eronen
   o  Dr. Joseph Touch Jonah Pezeshki
   o  Mr. Yoav Nir Carl Knutsson
   o  Dr. Joseph Touch

   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.

   [ROHC]     Jonsson, L-E., Pelletier, G., and K. Sandlund, "The RObust
              Header Compression (ROHC) Framework", RFC 4995, July 2007.

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


   [ROHCV1]   Bormann, C., "Robust 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) over PPP", (ROHC): Framework and four profiles: RTP, UDP,
              ESP, and uncompressed", RFC 3241, April 2002.

6.2.  Informative References

   [ROHCPROF] 3095, July 2001.

   [ROHCV2]   Pelletier, G. and K. Sandlund, "RObust Header Compression
              Version 2 (ROHCv2): Profiles for RTP, UDP, IP, ESP and UDP
              Lite", RFC 5225, April 2008.

6.2.  Informative References

              Ertekin, E., Jasani, R., Christou, C., and C. Bormann,
              "Integration of Header Compression over IPsec Security
              Associations", work in progress , May 2007. February 2009.

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

              IANA, "IKEv2 Parameters,
              January 2008.

              Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", RFC 5226,
              October 1998.

Authors' Addresses

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


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


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


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

   Tero Kivinen
   Safenet, Inc.
   Fredrikinkatu 47


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

   Carsten Bormann
   Universitaet Bremen TZI
   Postfach 330440
   Bremen  D-28334