One document matched: draft-ietf-rohc-ikev2-extensions-hcoipsec-08.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt'?>
<?rfc toc='yes'?>
<?rfc tocompact='yes'?>
<?rfc tocdepth='6'?>
<?rfc symrefs='yes'?>
<?rfc compact='yes'?>

<rfc ipr="trust200811" publication-status='PROPOSED STANDARD' docName="draft-ietf-rohc-ikev2-extensions-hcoipsec-08">


	<front>
		<title abbrev="IKEv2 Extensions to Support ROHCoIPsec">IKEv2 Extensions to Support Robust Header Compression over IPsec (ROHCoIPsec)</title>


		<date month="February" year="2009"/>


		<author initials="E." surname="Ertekin" fullname="Emre Ertekin">
			<organization>Booz Allen Hamilton</organization>
			<address>
				<postal>
					<street>13200 Woodland Park Dr.</street>
					<city>Herndon</city>
					<region>VA</region>
					<code>20171</code>
					<country>US</country>
				</postal>
				<email>ertekin_emre@bah.com</email>
			</address>
		</author>
		<author initials="C." surname="Christou" fullname="Chris Christou">
			<organization>Booz Allen Hamilton</organization>
			<address>
				<postal>
					<street>13200 Woodland Park Dr.</street>
					<city>Herndon</city>
					<region>VA</region>
					<code>20171</code>
					<country>US</country>
				</postal>
				<email>christou_chris@bah.com</email>
			</address>
		</author>
		<author initials="R." surname="Jasani" fullname="Rohan Jasani">
			<organization>Booz Allen Hamilton</organization>
			<address>
				<postal>
					<street>13200 Woodland Park Dr.</street>
					<city>Herndon</city>
					<region>VA</region>
					<code>20171</code>
					<country>US</country>
				</postal>
				<email>jasani_rohan@bah.com</email>
			</address>
		</author>
		<author initials="T." surname="Kivinen" fullname="Tero Kivinen">
			<organization>Safenet, Inc.</organization>
			<address>
				<postal>
					<street>Fredrikinkatu 47</street>
					<city>HELSINKI</city>
					<country>FI</country>
				</postal>
				<email>kivinen@safenet-inc.com</email>
			</address>
		</author>
		<author initials="C." surname="Bormann" fullname="Carsten Bormann">
			<organization>Universitaet Bremen TZI</organization>
			<address>
				<postal>
					<street>Postfach 330440</street>
					<city>Bremen  D-28334</city>
					<country>Germany</country>
				</postal>
				<email>cabo@tzi.org</email>
			</address>
		</author>
		<abstract>
			<t>In order to integrate ROHC with IPsec [ROHCOIPSEC], a mechanism is needed to signal ROHC channel parameters between end-points.  Internet Key Exchange (IKE) is a mechanism which can be leveraged to exchange these parameters.  This document specifies extensions to IKEv2 [IKEV2] that will allow ROHC and its associated channel parameters to be signaled for IPsec security associations (SAs).</t>
		</abstract>
	</front>


	<middle>
		

		<section title="Introduction">
			<t>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.</t>
                  	<t>ROHCoIPsec [ROHCOIPSEC] requires configuration parameters to be 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 [ROHC-PPP]). Since key exchange protocols (e.g.  IKEv2) can be used to dynamically establish parameters between IPsec peers, this document defines extensions to IKEv2 to signal ROHC parameters for ROHCoIPsec.</t>
		</section>

		<section title="ROHC Channel Initialization for ROHCoIPsec">
			<t>The following subsections define extensions to IKEv2 which enables an initiator and a responder to signal parameters required to establish a ROHC channel for a ROHCoIPsec session.</t>
                      			
			<section title="ROHC Channel Parameters that are Signaled">
				<t>ROHC channel parameters will be 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 convey these parameters.  </t>
 				<t>The Notify payload sent by the initiator contains the 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 its own ROHC channel parameters.</t>
				<t>Note that only one Notify payload is used to convey ROHC parameters.  If multiple Notify payloads containing ROHC parameters are received, all but the first such Notify payload must be dropped.   If the initiator does not receive a Notify Payload with the responder's ROHC channel parameters, ROHC must not be enabled on the Child SA. </t>
				<t>A new Notify Message Type value, denoted ROHC_SUPPORTED, indicates that the Notify payload is conveying ROHC channel parameters.  The value for the ROHC_SUPPORTED message is specified in Section 4.</t>
				<t>The Notify Payload (defined in [IKEV2]) is illustrated in Figure 1.</t>
 				<figure title="" suppress-title="false" align="center" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
					<![CDATA[
                        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.
		]]></artwork></figure>
	      <t><postamble/></t>
<t>The fields of the Notify Payload are set as follows:</t>
		         <t>Next Payload (1 octet)
			 <list style="empty"><t>
			 Identifier for the payload type of the next payload in the message.  Further details can be found in [IKEV2].</t></list></t>
				<t>Critical (1 bit)
				<list style="empty"><t>
				Since all IKEv2 implementations must support the Notify Payload, this value is zero.</t></list></t>
				<t>Payload Length (2 octets)
				<list style="empty"><t>
				As defined in [IKEV2], this field indicates the length of the current payload, including the generic payload header.</t></list></t>
				<t>Protocol ID (1 octet)
				<list style="empty"><t>
				Since this Notification message is used during the creation of a Child SA, this field must be set to zero.</t></list></t>
				<t>SPI Size (1 octet)
				<list style="empty"><t>
				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 defined).</t></list></t>
				<t>Notify Message Type (2 octets)
				<list style="empty"><t>
				This field must be set to ROHC_SUPPORTED.</t></list></t>

				<section title="ROHC_SUPPORTED Notify Message">
				<t>The ROHC_SUPPORTED Notify message is used to signal channel parameters between ROHCoIPsec compressor and decompressor.  The message contains a list of "ROHC Attributes" which contain the parameters required for the ROHCoIPsec session.</t>
 				<t>The format for signaling ROHC Attributes takes a similar format to the Transform Attributes described in Section 3.3.5 of [IKEV2].  The ROHC Attribute is shown in Figure 2.</t>
				<t>
			          <figure title="" suppress-title="false" align="center" alt="" width="" height="">
                                <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
                           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     !  AF=0  ROHC Attribute Length  !
      !F!                             !  AF=1  ROHC Attribute Value   !
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      !                   AF=0  ROHC Attribute Value                  !
      !                   AF=1  Not Transmitted                       !
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                Figure 2.  Format of the ROHC Attribute.

                                    ]]></artwork>
					<postamble />
					</figure>

				</t>
				<list style="symbols">
					<t>ROHC Attribute Type (2 octets) - Unique identifier for each type of ROHC attribute (see Section 2.1.2).  The most significant bit in the field is the Attribute Format (AF) bit.  If the AF bit is a zero (0), then the ROHC Attribute is expressed in a Type/Length/Value (TLV) format.  If the AF bit is a one (1), then the ROHC Attribute is expressed in a Type/Value (TV) format.</t>
      				<t>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 present.</t>
					<t>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.</t>
				</list>	
			</section>
			<section title="ROHC Attribute Types">
				<t>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.</t>  
				
				<t>Maximum Context Identifier (MAX_CID, AF = 1)
					<list style="empty"><t>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.</t></list>
				</t>
				<t><list style="empty"><t>Suggested value: 15</t></list></t>
				
				<t>ROHC Profile (ROHC_PROFILE, AF = 1)
                        		<list style="empty"><t>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.</t></list>
				</t>
				<t><list style="empty"><t>Several common profiles are defined in [ROHCV1] and [ROHCV2].  Note, however, that two versions of the same profile must not be signaled.  For example, if a ROHCoIPsec decompressor supports both ROHCv1 UDP and ROHCv2 UDP profiles, both profiles must not be signaled.</t></list></t>      
	       			<t>Integrity Algorithm for Verification of Decompressed Headers (ROHC_INTEG, AF = 1)
 	                   	    <list style="empty">
					<t>The ROHC_INTEG attribute is a mandatory attribute.  There must be 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).  The integrity algorithm is represented by a two octet value that corresponds to the value listed in [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.</t>
				    </list>
				    <t><list style="empty">
								<t>It is noted that:
									<list style="numbers">
										<t>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).</t>
                			                    		<t>A ROHCoIPsec initiator may signal a value of zero (0x0000) in a ROHC_INTEG attribute.  This corresponds to "NONE" in the Integrity Algorithm Transform ID registry.  The ROHCoIPsec responder may select this value by responding to the initiator with a ROHC_INTEG attribute of zero (0x0000).  In this scenario, no integrity algorithm is applied in either direction.</t>
									</list>
								</t>
				    </list></t>
				</t>

				<t>Integrity Algorithm Length (ROHC_ICV_LEN, AF = 1)
				<list style="empty">
				<t>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 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 the ICV of selected algorithm, then the full ICV length as specified by the ROHC_INTEG algorithm is sent.</t>
				</list></t>
				<t>If an unknown ROHC Attribute Type Value is received, it is silently ignored. </t>
			</section>
		</section>
		<section title="ROHC Channel Parameters that are Implicitly Set">
			<t>The following ROHC channel parameters are not signaled:
			<list style="symbols">
			    <t>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).</t>
			    <t>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 signaled.</t>
			    <t>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).</t>                  
			</list></t>
		</section>
		</section>


		<section title="Security Considerations">
			<t>The ROHC channel parameters signaled via IKEv2 do not add any new vulnerabilities beyond those associated with the normal operation of IKEv2.</t>
		</section>
		<section title="IANA Considerations">
			<t>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.</t>
			<t>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:</t>
			<t><figure title="" suppress-title="false" align="center" alt="" width="" height="">
                                <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
Registry		
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
                                    ]]></artwork>
					<postamble />
			</figure></t>
  		   <t>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.</t>
		</section>
		<section title="Acknowledgments">
			<t>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.  </t>
			<t>The authors would also like to thank Mr. Yoav Nir, and Mr. Robert A Stangarone Jr.: both served as committed document reviewers for this specification.</t>
			<t>In addition, the authors would like to thank the following for their numerous reviews and comments to this document:</t>
<t><list style="symbols">
<t>Dr. Stephen Kent</t>
<t>Mr. Lars-Erik Jonsson</t>
<t>Mr. Pasi Eronen</t>
<t>Dr. Jonah Pezeshki</t>
<t>Mr. Carl Knutsson</t>
<t>Dr. Joseph Touch</t>
</list></t>
<t>Finally, the authors would also like to thank Mr. Tom Conkle, Ms. Michele Casey, and Mr. Etzel Brower.</t>
		</section>


	</middle>


	<back>
		<references title="Normative References">
			<reference anchor="IPSEC">
				<front>
					<title>Security Architecture for the Internet Protocol</title>
					<author initials="S." surname="Kent" fullname="S. Kent">
						<organization/>
					</author>
					<author initials="K." surname="Seo" fullname="K. Seo">
						<organization/>
					</author>
					<date month="December" year="2005"/>
				</front>
				<seriesInfo name="RFC" value="4301"/>
			</reference>
			<reference anchor="ROHC">
				<front>
					<title> The RObust Header Compression (ROHC) Framework</title>
					<author initials="L-E." surname="Jonsson" fullname="L-E. Jonsson">
						<organization/>
					</author>
					<author initials="G." surname="Pelletier" fullname="G. Pelletier">
						<organization/>
					</author>
					<author initials="K." surname="Sandlund" fullname="K. Sandlund">
						<organization/>
					</author>
					<date month="July" year="2007"/>
				</front>
				<seriesInfo name="RFC" value="4995"/>
			</reference>
			<reference anchor="IKEV2">
				<front>
					<title>Internet Key Exchange (IKEv2) Protocol</title>
					<author initials="C." surname="Kaufman">
						<organization/>
					</author>
					<date month="December" year="2005"/>
				</front>
				<seriesInfo name="RFC" value="4306"/>
			</reference>

			<reference anchor="ROHCV1">
				<front>
					<title>RObust Header Compression (ROHC): Framework and four profiles: RTP, UDP, ESP, and uncompressed</title>
					<author initials="C." surname="Bormann">
						<organization/>
					</author>
					<author initials="C." surname="Burmeister">
						<organization/>
					</author>
					<author initials="M." surname="Degermark">
						<organization/>
					</author>
					<author initials="H." surname="Fukushima">
						<organization/>
					</author>
					<author initials="H." surname="Hannu">
						<organization/>
					</author>
					<author initials="L." surname="Jonsson">
						<organization/>
					</author>
					<author initials="R." surname="Hakenberg">
						<organization/>
					</author>
					<author initials="T." surname="Koren">
						<organization/>
					</author>
					<author initials="K." surname="Le">
						<organization/>
					</author>
					<author initials="Z." surname="Liu">
						<organization/>
					</author>
					<author initials="A." surname="Martensson">
						<organization/>
					</author>
					<author initials="A." surname="Miyazaki">
						<organization/>
					</author>
					<author initials="K." surname="Svanbro">
						<organization/>
					</author>
					<author initials="T." surname="Wiebke">
						<organization/>
					</author>
					<author initials="T." surname="Yoshimura">
						<organization/>
					</author>
					<author initials="H." surname="Zheng">
						<organization/>
					</author>
					<date month="July" year="2001"/>
				</front>
				<seriesInfo name="RFC" value="3095"/>
			</reference>

			<reference anchor="ROHCV2">
        			<front>
          			<title>RObust Header Compression Version 2 (ROHCv2): Profiles for RTP, UDP, IP, ESP and UDP Lite</title>
          			<author initials="G." surname="Pelletier">
            		<organization />
          			</author>
          			<author initials="K." surname="Sandlund">
            		<organization />
          			</author>
          			<date month="April" year="2008" />
        			</front>
        			<seriesInfo name="RFC" value="5225" />
      		</reference>
		</references>

		<references title="Informative References">
			<reference anchor="ROHCOIPSEC">
				<front>
					<title>Integration of Header Compression over IPsec Security Associations</title>
					<author initials="E." surname="Ertekin">
						<organization/>
					</author>
					<author initials="R." surname="Jasani">
						<organization/>
					</author>
					<author initials="C." surname="Christou">
						<organization/>
					</author>
					<author initials="C." surname="Bormann">
						<organization/>
					</author>
					<date month="February" year="2009"/>
				</front>
				<seriesInfo name="work in progress" value=""/>
			</reference>

			<reference anchor="ROHC-PPP">
				<front>
					<title>Robust Header Compression (ROHC) over PPP</title>
					<author initials="C." surname="Bormann">
						<organization/>
					</author>
					<date month="April" year="2002"/>
				</front>
				<seriesInfo name="RFC" value="3241"/>
			</reference>

			<reference anchor="IKEV2-PARA">
				<front>
					<title>IKEv2 Parameters, http://www.iana.org/assignments/ikev2-parameters</title>
					<date month="January" year="2008"/>
					<author surname="IANA">
            				<organization />
          				</author>
		            	</front>
			</reference>
			<reference anchor="IANA-CONSIDERATIONS">
				<front>
					<title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
					<date month="October" year="1998"/>
					<author initials="T." surname="Narten">
						<organization />
					</author>
					<author initials="H." surname="Alvestrand">
            					<organization />
          				</author>
		            	</front>
				<seriesInfo name="RFC" value="5226"/>
			</reference>			
		</references>
	</back>
</rfc>

PAFTECH AB 2003-20262026-04-24 07:30:23