| | +------------------------------------------+ | |
| | | |
| | | |
| +--------------------------------------------------+ |
| -> Unidirectional channel -> |
+------------------------------------------------------+
As mentioned above, a typical example of a multi-channel link is a
cellular wireless link. In this example, header compression would be
applicable on a per-channel basis, for each channel operating either
in a bi-directional or unidirectional manner, depending on the
channel properties.
4. ROHC Instances
For various purposes, such as network management on an IP interface
implementing ROHC, it is necessary to identify the various ROHC
entities that might be present on an interface. Such a minimal ROHC
entity will, from now on, be referred to as a "ROHC instance". A
ROHC instance can be one of two different types, either a "ROHC
compressor" or a "ROHC decompressor" instance, and an IP interface
can have N ROHC compressors and M ROHC decompressors, where N and M
are arbitrary numbers. It should be noted that although a compressor
is often co-located with a decompressor, a ROHC instance can never
include both a compressor and a decompressor; where both are present,
they will be referred to as two ROHC instances.
The following two subsections describe the two kinds of ROHC
instances and their external interfaces, while sections 5 and 6
address how communication over these interfaces is realized through
"ROHC channels" and "ROHC feedback channels". Section 7 builds on
top of the instance, channel and feedback channel concepts, and
clarifies how ROHC contexts map to this.
It should be noted that all figures in sections 4-6 have been rotated
90 degrees to simplify drawing, i.e., they do not show a "stack
view".
4.1. ROHC Compressors
A ROHC compressor instance supports header compression according to
one or several ROHC profiles. Apart from potential configuration or
control interfaces, a compressor instance receives and sends data
through 3 inputs and 1 output, as illustrated by the figure below:
+--------------+
-> UI -> | | -> CO ->
| ROHC |
| Compressor |
-> PI -> | | <- FI <-
+--------------+
Uncompressed Input (UI): Uncompressed packets are delivered from
higher layers to the compressor through
the UI.
Compressed Output (CO): Compressed packets are sent from the
compressor through the CO, which is
always connected to the input end of a
ROHC channel (see section 5).
Feedback Input (FI): Feedback from the corresponding
[optional] decompressor is received by the
compressor through the FI, which (if
present) is connected to the output end
of a ROHC feedback channel of some kind
(see section 6). When there are no
means to transmit feedback from
decompressor to compressor, FI is not
used, and bi-directional compression
will not be possible.
Piggyback Input (PI): If the compressor is associated with a
[optional] co-located decompressor, for which the
compressor delivers feedback to the
other end of the link, feedback data
for piggybacking is delivered to the
compressor through the PI. If this input
is used, it is connected to the FO of the
co-located decompressor (see section
4.2).
4.2. ROHC Decompressors
A ROHC decompressor instance supports header decompression according
to one or several ROHC profiles. Apart from potential configuration
or control interfaces, a decompressor instance receives and sends
data through 1 input and 3 outputs, as illustrated by the figure
below:
+--------------+
-> CI -> | | -> DO ->
| ROHC |
| Decompressor |
<- FO <- | | -> PO ->
+--------------+
Compressed Input (CI): Compressed packets are received by the
decompressor through the CI, which is
always connected to the output end of a
ROHC channel (see section 5).
Decompressed Output (DO): Decompressed packets are delivered from
the decompressor to higher layers
through the DO.
Feedback Output (FO): Feedback to the corresponding compressor
[optional] is sent from the compressor through the
FO, which (if present) is connected to
the input end of a ROHC feedback channel
of some kind (see section 6). When
there are no means to transmit feedback
from decompressor to compressor, FO is
not used, and bi-directional compression
will not be possible.
Piggyback Output (PO): If the decompressor is associated with
[optional] a co-located compressor to which the
decompressor delivers feedback it
receives piggybacked from the other end
of the link, the received feedback data
is delivered from the decompressor
through the PO. If this output is used,
it is connected to the FI of the co-
located compressor (see section 4.1).
5. ROHC Channels
In section 3, a general concept of channels was introduced.
According to that definition, a channel is basically a logical
point-to-point connection between the IP interfaces of two
communicating network elements. By that definition, a channel
represents the kind of logical connection needed to make header
compression generally applicable, and then the channel properties
control whether compression can operate in a unidirectional or bi-
directional manner.
The channel concept thus facilitates general header compression
discussions, but since it groups unidirectional and bi-directional
connections together, it does not provide the means for describing
details of how ROHC logically works. Therefore, for the case of
ROHC, the channel concept is enhanced and a more restricted concept
of "ROHC channels" is defined.
A ROHC channel has the same properties as a channel, with the
difference that a ROHC channel is always unidirectional. A ROHC
channel therefore has one single input endpoint, connected to the CO
of one single ROHC compressor instance, and one single output
endpoint, connected to the CI of one single ROHC decompressor
instance. A ROHC channel must thus in this way be logically
dedicated to one ROHC compressor and one ROHC decompressor, hereafter
referred to as ROHC peers, creating a one-to-one mapping between a
ROHC channel and two ROHC compressor/decompressor peers.
+--------------+ --->-->-->-->--- +--------------+
| | -> CO -> ROHC Channel -> CI -> | |
| ROHC | --->-->-->-->--- | ROHC |
| Compressor | | Decompressor |
| | | |
+--------------+ +--------------+
In many cases the lower layer channel is by nature bi-directional,
but for ROHC communication over that channel, a ROHC channel would
only represent one communication direction of that channel. For bi-
directional channels, a common case would be to logically allocate
one ROHC channel in each direction, allowing ROHC compression to be
performed in both directions. The reason for defining ROHC channels
as unidirectional is basically to separate and generalize the concept
of feedback, as described and exemplified in section 6.
6. ROHC Feedback Channels
Since ROHC can be implemented over various kinds of links,
unidirectional or bi-directional one-channel links, as well as
multi-channel links, the logical transmission of feedback from
decompressor to compressor has been separated out from the transport
of actual ROHC packets through the definition of ROHC channels as
always being unidirectional from compressor to decompressor. This
means that an additional channel concept must be defined for
feedback, which is what will hereafter be referred to as "ROHC
feedback channels".
In the same way as a ROHC channel is a logically dedicated
unidirectional channel from a ROHC compressor to its corresponding
ROHC peer decompressor, a ROHC feedback channel is a logically
dedicated unidirectional channel from a ROHC decompressor to its
corresponding ROHC peer compressor. A ROHC feedback channel thus has
one single input endpoint, connected to the FO of one single ROHC
decompressor instance, and one single output endpoint, connected to
the FI of one single ROHC compressor instance.
+--------------+ +--------------+
| | | |
| ROHC | | ROHC |
| Compressor | --<--<--<--<--<-- | Decompressor |
| | <- FI <- ROHC FB Channel <- FO <- | |
+--------------+ --<--<--<--<--<-- +--------------+
The reason for making this simplification and logically separating
ROHC channels from ROHC feedback channels is generality for handling
of feedback. ROHC has been designed with the assumption of logical
separation, which creates flexibility in realizing feedback
transport, as discussed in [RFC-3095, section 5.2.1]. There are no
restrictions on how to implement a ROHC feedback channel, other than
that it must be made available and be logically dedicated to the ROHC
peers if bi-directional compression operation is to be allowed.
The following subsections provide some, not at all exhaustive,
examples of how a ROHC feedback channel might possibly be realized.
6.1. Single-Channel Dedicated ROHC Feedback Channel Example
This section illustrates a one-way compression example where one bi-
directional channel has been configured to represent a ROHC channel
in one direction and a dedicated ROHC feedback channel in the other
direction.
Bi-directional channel
..................
+--------------+ : -->-->-->-->-- : +--------------+
--> |UI CO| --> : ROHC Channel : --> |CI DO| -->
| ROHC | : -->-->-->-->-- : | ROHC |
| Compressor | : : | Decompressor |
| | : --<--<--<--<-- : | |
o |PI FI| <-- : FB Channel : <-- |FO PO| o
+--------------+ : --<--<--<--<-- : +--------------+
:................:
In this example, feedback is sent on its own dedicated channel, as
discussed in e.g., feedback realization example 1-3 of ROHC [RFC-
3095, page 44]. This means that the piggybacking/interspersing
mechanism of ROHC is not used, and the PI/PO connections are thus
left open (marked with a "o"). To facilitate communication with ROHC
compression in a two-way manner using this approach, an identical
configuration must be provided for the other direction, i.e., making
use of four logical unidirectional channels.
6.2. Piggybacked/Interspersed ROHC Feedback Channel Example
This section illustrates how a bi-directional channel has been
configured to represent one ROHC channel in each direction, while
still allowing feedback to be transmitted through ROHC piggybacking
and interspersing.
Bi-directional channel
..................
+--------------+ : -->-->-->-->-- : +--------------+
--> |UI CO| --> : ROHC Channel A : --> |CI DO| -->
| ROHC | : -->-->-->-->-- : | ROHC |
| Compressor | : : | Decompressor |
| A | : : | A |
+-> |PI FI| <-+ : : +-- |PO FO| --+
| +--------------+ | : : | +--------------+ |
| | : : | |
| | : : | |
| +--------------+ | : : | +--------------+ |
+-- |FO PO| --+ : : +-> |FI PI| <-+
| ROHC | : : | ROHC |
| Decompressor | : : | Compressor |
| B | : --<--<--<--<-- : | B |
<-- |DO CI| <-- : ROHC Channel B : <-- |CO UI| <--
+--------------+ : --<--<--<--<-- : +--------------+
:................:
In this example, feedback is transmitted piggybacked or interspersed
among compressed header packets in the ROHC channels, as discussed in
e.g., feedback realization example 4-6 of ROHC [RFC-3095, page 44].
Feedback from decompressor A to compressor A is here sent through
FO(A)->PI(B), piggybacked on a compressed packet over ROHC channel B,
and delivered to compressor A through PO(B)->FI(A). A logical ROHC
feedback channel is thus provided from the PI input at compressor B
to the PO output at decompressor B. It should be noted that in this
picture, PO and FO at the decompressors have been swapped to simplify
drawing.
6.3. Dual-Channel Dedicated ROHC Feedback Channel Example
This section illustrates how two bi-directional channels have been
configured to represent two ROHC channels and two dedicated ROHC
feedback channels, respectively.
Bi-directional channel
..................
+--------------+ : -->-->-->-->-- : +--------------+
->|UI CO| --> : ROHC Channel A : --> |CI DO|->
| ROHC | : -->-->-->-->-- : | ROHC |
| Compressor | : : | Decompressor |
| A | : : | A |
| | : : | |
+-> |FI PI| o : : o |PO FO| --+
| +--------------+ : --<--<--<--<-- : +--------------+ |
| +- : ROHC Channel B :<-+ |
| | : --<--<--<--<-- : | |
| +--------------+ | :................: | +--------------+ |
| <-|DO CI|<-+ +- |CO UI|<- |
| | ROHC | | ROHC | |
| | Decompressor | Bi-directional channel | Compressor | |
| | B | .................. | B | |
| | | : -->-->-->-->-- : | | |
| o|PO FO| --> : FB Channel B : --> |FI PI|o |
| +--------------+ : -->-->-->-->-- : +--------------+ |
| : : |
| : --<--<--<--<-- : |
+----------------------- : FB Channel A : <----------------------+
: --<--<--<--<-- :
:................:
In this example, feedback is, in both directions, sent on its own
dedicated channel, as discussed in e.g., feedback realization example
1-3 of ROHC [RFC-3095, page 44]. With this configuration, the
piggybacking/interspersing mechanism of ROHC is not used, and the
PI/PO connections are thus left open (marked with a "o"). It should
be noted that in this picture FI/PI and PO/FO at the A-instances have
been swapped to simplify drawing, while the B-instances have been
horizontally mirrored.
7. ROHC Contexts
In previous sections, it has been clarified that one network element
may have multiple IP interfaces, one IP interface may have multiple