Integration of Robust Header Compression (ROHC) over IPsec Security AssociationsBooz Allen Hamilton13200 Woodland Park Dr.HerndonVA20171USertekin_emre@bah.comBooz Allen Hamilton13200 Woodland Park Dr.HerndonVA20171USjasani_rohan@bah.comBooz Allen Hamilton13200 Woodland Park Dr.HerndonVA20171USchristou_chris@bah.comUniversitaet Bremen TZIPostfach 330440Bremen D-28334Germanycabo@tzi.org
IP Security (IPsec) provides various security services for IP
traffic. However, the benefits of IPsec come at the cost of
increased overhead. This document outlines a framework for
integrating Robust Header Compression (ROHC) over IPsec (ROHCoIPsec).
By compressing the inner headers of IP packets, ROHCoIPsec proposes
to reduce the amount of overhead associated with the transmission of
traffic over IPsec Security Associations (SAs).
This document outlines a framework for integrating ROHC [ROHC] over
IPsec [IPSEC] (ROHCoIPsec). The goal of ROHCoIPsec is to reduce the
protocol overhead associated with packets traversing between IPsec SA
endpoints. This can be achieved by compressing the transport layer
header (e.g., UDP, TCP, etc.) and inner IP header of packets at the
ingress of the IPsec tunnel, and decompressing these headers at the
egress.
For ROHCoIPsec, this document assumes that ROHC will be used to
compress the inner headers of IP packets traversing an IPsec tunnel.
However, since current specifications for ROHC detail its operation
on a hop-by-hop basis, it requires extensions to enable its
operation over IPsec SAs. These extensions need to account for increased
packet reordering and packet loss that may occur in the unprotected domain.
This document outlines a framework for extending the usage of ROHC to
operate at IPsec SA endpoints.
ROHCoIPsec targets the application of ROHC to tunnel mode SAs.
Transport mode SAs only encrypt/authenticate the payload of an IP
packet, leaving the IP header untouched. Intermediate routers
subsequently use this IP header to route the packet to a decryption
device. Therefore, if ROHC is to operate over IPsec transport-mode
SAs, (de)compression functionality can only be applied to the
transport layer headers, and not to the IP header. Because current
ROHC specifications do not include support for the compression of
transport layer headers alone, the ROHCoIPsec framework outlined by
this document describes the application of ROHC to tunnel mode SAs.
The authors target members of both the ROHC and IPsec communities who
may consider extending the ROHC and IPsec protocols to meet the
requirements put forth in this document. In addition, this document
is directed towards vendors developing IPsec devices that will be
deployed in bandwidth-constrained IP networks.
Terminology specific to ROHCoIPsec is introduced in this section.ROHC ProcessGeneric reference to a ROHC instance (as defined in [ROHC-TERM]), or any supporting ROHC components.Compressed TrafficTraffic that is processed through the ROHC compressor and decompressor instances. Packet headers are compressed and decompressed using a specific header compression profile. Uncompressed TrafficTraffic that is not processed by the ROHC compressor instance. Instead, this type of traffic bypasses the ROHC process.IPsec ProcessGeneric reference to the Internet Protocol Security (IPsec) process.Next HeaderRefers to the Protocol (IPv4) or Next Header (IPv6, Extension) field.
IPsec mechanisms provide various security services for IP networks.
However, the benefits of IPsec come at the cost of increased per-
packet overhead. For example, traffic flow confidentiality
(generally leveraged at security gateways) requires the tunneling of
IP packets between IPsec implementations. Although these IPsec
tunnels will effectively mask the source-destination patterns that an
intruder can ascertain, tunneling comes at the cost of increased per-
packet overhead. Specifically, an ESP tunnel mode SA applied to an
IPv6 flow results in at least 50 bytes of additional overhead per
packet. This additional overhead may be undesirable for many
bandwidth-constrained wireless and/or satellite communications
networks, as these types of infrastructure are not overprovisioned.
ROHC applied on a per-hop basis over bandwidth-constrained links will
also suffer from reduced performance when encryption is used on the
tunneled header, since encrypted headers cannot be compressed.
Consequently, the additional overhead incurred by an IPsec tunnel may
result in the inefficient utilization of bandwidth.
Packet overhead is particularly significant for traffic profiles
characterized by small packet payloads (e.g. various voice codecs).
If these small packets are afforded the security
services of an IPsec tunnel mode SA, the amount of per-packet
overhead is increased. Thus, a mechanism is needed to reduce the
overhead associated with such flows.
The goal of ROHCoIPsec is to provide efficient transport of IP
packets between IPsec devices without compromising the security
services offered by IPsec. The ROHCoIPsec framework has
been developed based on the following assumptions:
ROHC will be leveraged to reduce the amount of overhead associated with packets traversing an IPsec SA
ROHC will be instantiated at the IPsec SA endpoints, and will be applied on a per-SA basis
Once the decompression operation completes, decompressed packet headers will be identical to the original packet headers before compression
ROHC reduces packet overhead in a network by exploiting intra- and
inter-packet redundancies of network and transport-layer header
fields of a flow.
Current ROHC protocol specifications compress packet headers on a hop-by-hop basis. However, IPsec SAs are instantiated between two IPsec endpoints. Therefore, various extensions to both ROHC and IPsec need to be defined to ensure the successful operation of the ROHC protocol at IPsec SA endpoints. The specification of ROHC over IPsec SAs is straightforward, since SA endpoints provide source/destination pairs where (de)compression operations can take place. Compression of the inner IP and upper layer protocol headers in such a manner offers a reduction of per-packet protocol overhead between the two SA endpoints. Since ROHC will now operate between IPsec endpoints (over multiple intermediate nodes which are transparent to an IPsec SA), it is imperative to ensure that its performance will not be severely impacted due to increased packet reordering and/or packet loss between the compressor and decompressor.
In addition, ROHC can no longer rely on the underlying link layer for
ROHC channel parameter configuration and packet identification. The
ROHCoIPsec framework proposes that ROHC channel parameter
configuration is accomplished by an SA management protocol (e.g.,
IKEv2 [IKEV2]), while identification of compressed header packets is
achieved through the Next Header field of the security protocol
(e.g., AH [AH], ESP [ESP]) header.
Using the ROHCoIPsec framework proposed below, outbound and inbound IP traffic processing at an IPsec device needs to be modified. For an outbound packet, a ROHCoIPsec implementation will compress appropriate packet headers, and subsequently encrypt and/or integrity-protect the packet. For tunnel mode SAs, compression may be applied to the transport layer and the inner IP headers. For inbound packets, an IPsec device must first decrypt and/or integrity-check the packet. Then decompression of the inner packet headers is performed. After decompression, the packet is checked against the access controls imposed on all inbound traffic associated with the SA (as specified in [IPSEC]).
Note: Compression of inner headers is independent from compression of the security protocol (e.g., ESP) and outer IP headers. ROHC profiles have been defined to allow for the compression of the security protocol and the outer IP header on a hop-by-hop basis. The applicability of ROHCoIPsec and hop-by-hop ROHC on an IPv4 ESP-processed packet [ESP] is shown below in Figure 1.Figure 1. Applicability of hop-by-hop ROHC and ROHCoIPsec on an IPv4 ESP-processed packet.If IPsec NULL encryption is applied to packets, ROHC may still be applied to the inner headers at the IPsec SA endpoints. However, this poses challenges for intermediary devices (within the unprotected domain) inspecting ESP-NULL encrypted packets, since these intermediary devices will require additional functionality to determine the content of the ROHC packets.
Figure 2 illustrates the components required to integrate ROHC with
the IPsec process, i.e., ROHCoIPsec.
The process illustrated in Figure 2 augments the IPsec processing
model for outbound IP traffic (protected-to-unprotected). Initial
IPsec processing is consistent with [IPSEC] (Steps 1-2, Section 5.1).Block A: The ROHC data item (part of the SA state information) retrieved from
the "relevant SAD entry" ([IPSEC], Section 5.1, Step3a) determines if
the traffic traversing the SA is handed to the ROHC module. Packets selected to a ROHC-disabled SA must
follow normal IPsec processing and must not be sent to the ROHC
module (Figure 1, Path 3). Conversely, packets selected to a ROHC-enabled
SA must be sent to the ROHC module.Block B: This step determines if the packet can be compressed. If it is determined
that the packet will be compressed, an Integrity Algorithm may be used to
compute an Integrity Check Value (ICV) for the uncompressed packet
([IPSEC-ROHC], Section 3.2 [IKE-ROHC], Section 2.1). The
Next Header field of the security protocol header (e.g., ESP, AH) is
populated with a "ROHC" identifier, inner packet headers are
compressed, and the computed ICV is appended to the packet (Figure 1, Path 1).
However, if it is
determined that the packet will not be compressed (e.g., due to one
the reasons described in Section 6.1.3), the Next Header field is
populated with the appropriate value indicating the next level
protocol (Figure 1, Path 2).After the ROHC process completes, IPsec
processing resumes, as described in Section 5.1, Step3a, of [IPSEC].The process illustrated in Figure 2 also augments the IPsec
processing model for inbound IP traffic (unprotected-to-protected).
For inbound packets, IPsec processing is performed ([IPSEC], Section
5.2, Steps 1-3) followed by AH or ESP processing ([IPSEC], Section
5.2, Step 4).Block A: After AH or ESP processing, the ROHC data item
retrieved from the SAD entry will indicate if traffic traversing the
SA is processed by the ROHC module ([IPSEC], Section 5.2, Step 3a).
Packets traversing an ROHC-disabled SA must follow normal IPsec
processing and must not be sent to the ROHC module. Conversely,
packets traversing an ROHC-enabled SA must be sent to the ROHC
module.Block B: The decision at Block B is determined by the value of the
Next Header field of the security protocol header. If the
Next Header field does not indicate a ROHC header, the decompressor
must not attempt decompression (Figure 1, Path 2). If the Next Header
field indicates a ROHC header, decompression is applied. After decompression, the signaled ROHCoIPsec
Integrity Algorithm is used to compute an ICV value for the decompressed
packet. This ICV is compared to the ICV that was calculated at the
compressor: if the ICVs match, the packet is forwarded by the ROHC
module (Figure 1, Path 1); otherwise, the packet is dropped. Once the ROHC
module completes processing, IPsec processing resumes, as described
in Section 5.2, Step 4 of [IPSEC].When there is a single SA between a compressor and decompressor,
ROHC operates in unidirectional mode, as described in Section 5 of
[ROHC-TERM]. When there is pair of SAs instantiated between
ROHCoIPsec implementations, ROHC may operate in bidirectional mode,
where an SA pair represents a bidirectional ROHC channel (as
described in Section 6.1 and 6.2 of [ROHC-TERM]).Note that to further reduce the size of an IPsec-protected packet,
ROHCoIPsec and IPcomp [IPCOMP] can be implemented in a nested
fashion. This process is detailed in [IPSEC-ROHC], Section 3.2.
ROHCv2 [ROHCV2] profiles include various mechanisms that provide
increased robustness over reordering channels. These mechanisms must
be adopted for ROHC to operate efficiently over IPsec SAs. A ROHC decompressor
implemented within IPsec architecture may leverage additional
mechanisms to improve performance over reordering channels (either
due to random events, or to an attacker intentionally reordering
packets). Specifically, IPsec's sequence number may be used by the
decompressor to identify a packet as "sequentially late". This
knowledge will increase the likelihood of successful decompression of
a reordered packet.Additionally, ROHCoIPsec implementations should minimize the amount
of feedback sent from the decompressor to the compressor. If a ROHC
feedback channel is not used sparingly, the overall gains from
ROHCoIPsec can be significantly reduced. More specifically, any
feedback sent from the decompressor to the compressor must be
processed by IPsec, and tunneled back to the compressor (as
designated by the SA associated with FEEDBACK_FOR). As such, some
implementation alternatives can be considered, including the following:
Eliminate feedback traffic altogether by operating only in ROHC Unidirectional mode (U-mode)Piggyback ROHC feedback messages on traffic that normally traverses the SA designated by FEEDBACK_FOR.
Hop-by-hop ROHC typically uses the underlying link layer (e.g., PPP) to negotiate ROHC
channel parameters. In the case of ROHCoIPsec, channel parameters
can be set manually (i.e., administratively
configured for manual SAs), or negotiated by IKEv2. The extensions required for IKEv2 to support ROHC
channel parameter negotiation are detailed in [IKE-ROHC].
If the ROHC protocol requires bidirectional communications, two SAs
must be instantiated between the IPsec implementations. One of the
two SAs is used for carrying ROHC-traffic from the compressor to the
decompressor, while the other is used to communicate ROHC-feedback
from the decompressor to the compressor. Note that the requirement
for two SAs aligns with the operation of IKE, which creates SAs in
pairs by default. However, IPsec implementations will dictate how decompressor
feedback received on one SA is associated with a compressor on the
other SA. An IPsec implementation must relay the feedback
received by the decompressor on an inbound SA to the compressor
associated with the corresponding outbound SA.
As indicated in Section 6.1, new state information (i.e., a new ROHC
data item) is defined for each SA. The ROHC data item is used by the
IPsec process to determine whether it sends all traffic traversing a
given SA to the ROHC module (ROHC-enabled) or bypasses the ROHC
module and sends the traffic through regular IPsec processing (ROHC-
disabled).
The Next Header field of the IPsec security protocol (e.g., AH or
ESP) header is used to demultiplex header-compressed traffic from
uncompressed traffic traversing an ROHC-enabled SA. This
functionality is needed in situations where packets traversing a
ROHC-enabled SA contain uncompressed headers. Such situations
may occur when, for example, a compressor supports strictly n
compressed flows and cannot compress the n+1 flow that arrives.
Another example is when traffic is selected
to a ROHC-enabled SA, but cannot be compressed by the ROHC process
because the appropriate ROHC Profile has not been signaled for use.
As a result, the decompressor must be
able to identify packets with uncompressed headers and not attempt to
decompress them. The Next Header field is used to demultiplex these
header-compressed and uncompressed packets where the ROHC protocol
identifier will indicate that the packet contains compressed headers. To
accomplish this, an official IANA allocation from the Protocol ID
registry [PROTOCOL] is required.
The ROHC Data Item, IANA Protocol ID allocation, and other IPsec
extensions to support ROHCoIPsec, are specified in [IPSEC-ROHC].
To summarize, the following items are needed to achieve ROHCoIPsec:IKEv2 Extensions to Support ROHCoIPsecIPsec Extensions to Support ROHCoIPsec
A malfunctioning ROHC compressor (i.e., the compressor located at the
ingress of the IPsec tunnel) has the ability to send packets to the
decompressor (i.e., the decompressor located at the egress of the
IPsec tunnel) that do not match the original packets emitted from the
end-hosts. Such a scenario will result in a decreased efficiency
between compressor and decompressor. Furthermore, this may result in
Denial of Service, as the decompression of a significant number of
invalid packets may drain the resources of an IPsec device.
None.
The authors would like to thank Mr. Sean O'Keeffe, Mr. James Kohler,
and Ms. Linda Noone of the Department of Defense, and 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. Yoav Nir, and Mr.
Robert A Stangarone Jr.: both served as committed document reviewers
for this specification.In addition, the authors would like to
thank the following for their numerous reviews and comments to this
document:
Dr. Stephen Kent Mr. Pasi EronenDr. Joseph TouchMr. Tero KivinenDr. Jonah PezeshkiMr. Lars-Erik JonssonMr. Jan VilhuberMr. Dan WingMr. Kristopher SandlundMr. Ghyslain Pelletier
Finally, the authors would also like to thank Mr. Tom Conkle, Ms.
Renee Esposito, Mr. Etzel Brower, and Ms. Michele Casey of Booz Allen
Hamilton for their assistance in completing this work.
The RObust Header Compression (ROHC) FrameworkSecurity Architecture for the Internet ProtocolRobust Header Compression (ROHC): Terminology and Channel Mapping ExamplesInternet Key Exchange (IKEv2) ProtocolIP Encapsulating Security Payload (ESP)IP Authentication HeaderIP Payload Compression Protocol (IPComp)RObust Header Compression Version 2 (ROHCv2): Profiles for RTP, UDP, IP, ESP and UDP LiteIKEv2 Extensions to Support ROHCoIPsecAssigned Internet Protocol Numbers, IANA registry at: http://www.iana.org/assignments/protocol-numbersIPsec Extensions to Support ROHCoIPsec