[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [rohc] RE: CSRC and IPv6 extension compression
Hi, all,
The attachment is a high level description of the reference based list
compression scheme. It describes the basic idea of how to use reference list
to compress and decompress the current list, and how to define the reference
in both R-mode and UO-modes. This scheme can be used in, but not limited to,
IPv6 extension header compression and CSRC list compression. I hope this
document can help us to initialize a discussion thread on this issue.
BR,
Haihong
-----Original Message-----
From: EXT haihong.zheng@nokia.com [mailto:haihong.zheng@nokia.com]
Sent: 6. September 2000 3:59 PM
To: lars-erik.jonsson@ericsson.com; rohc@cdt.luth.se
Subject: [rohc] RE: CSRC and IPv6 extension compression
Hi, Lars-Erik,
Thanks for the comments. I will send a high level description of the scheme
as well as the new and much simpler packet format for both R mode and UO
modes tomorrow morning.
BR,
Haihong
-----Original Message-----
From: EXT Lars-Erik Jonsson [mailto:lars-erik.jonsson@ericsson.com]
Sent: 6. September 2000 3:53 PM
To: Haihong Zheng; rohc
Subject: CSRC and IPv6 extension compression
In the current draft, there are texts describing compression solutions for
CSRC
lists and IPv6 extension headers. However, there have been no discussions or
feedback at all on these chapters. These two compression problems have much
in
common and they differ from what we have solved before in several ways. I
think
it would be good if we can take this to a higher level and try to get an
understanding of the problems to solve with list compression and find
proposals
for how to do it in U/O and R mode respectively. Current proposals do not
specify how to manage ref-lists in the various modes and I think that we
need a
discussion to get ideas for how it could be done.
Haihong, could you maybe provide us with something to start a discussion
about
this. I think the lack of feedback on your chapters is an indication of a
need
for a higher level starting point for discussion.
Best Regards,
/Lars-Erik
--------------------------------------------------------------
Lars-Erik Jonsson, M.Sc. - Ericsson Research
AWARE - Advanced Wireless Algorithm Research at Erisoft
Box 920, S-971 28 Luleå, Sweden
E-mail: lars-erik.jonsson@ericsson.com
Phone: +46 920 20 21 07
Mobile: +46 70 554 82 71
Fax: +46 920 20 20 99
Home: +46 920 999 57
---
Mailing list for Robust Header Compression WG
Archive: http://www.cdt.luth.se/rohc/
High Level Description of Reference Based Item List Compression Scheme
1. Reference Base List Compression Scheme
An Item List specifies a set of items that is order sensitive. A
generic structure of an item list is as follows.
+--------+--------+--------+--------+
item list: | item 1 | item 2 | ...... | item n |
+--------+--------+--------+--------+
The items on an item list may or may not have the same structure. An
example of the first case is the CSRC list in the RTP header. An
example of the second case is IPv6 extension headers.
The compression of a current item list (curr_list) is based on a
reference item list (ref_list) that is previously sent by the
compressor and received by the decompressor. The difference between
the curr_list and ref_list is encoded and sent in the compressed
list. The decompressor retrieves the reference item list, based on
which items are to be decompressed in the new item list. The reference
are chosen differently in R-mode and UO-modes. To identify the
reference used for the compression, a reference identifier (ref_id)
needs to be carried inside the compressed list in all the modes.
2. Reference Used in R-mode
In R-mode, the ref_list is chosen based on acknowledgement,
i.e., the compressor chooses the latest item list that is acknowledged
by the decompressor as the ref_list. The ref_list can only be updated
upon receiving acknowledgement. The LSB of RTP sequence number is
used as ref_id in R-mode.
The logic of the compressor and decompressor for list compression
is similar to that for RTP sequence number and time stamp. The only
difference is that the decompressor needs to maintain a sliding window
and it retrieves the reference list from the sliding window using the
ref_id.
Logic of compressor:
* In the IR state, the compressor sends uncompressed lists to establish
or update the context at the decompressor side, until at least one
of these lists has been acknowledged. The acknowledged list can be
used as ref_list to compress the following lists.
* When the compressor observes difference between the curr_list
and the previous list, the compressor sends a compressed list
using the ref_list as the reference, to update the context at the
decompressor side. The compressor keeps on sending compressed list
using the same reference, until the decompressor acknowledges that
it receives latest update.
* The compressor maintains a sliding window, which contains the
lists it sends to update the context at the decompressor side, and
is not acknowledged yet. The compressor shrinks the sliding window
by removing all the list before a certain list that is acknowledged
by the decompressor.
Logic of decompressor:
* The decompressor acknowledges the received uncompressed or
compressed list which is used to establish or update the context.
* The decompressor maintains a sliding window, which contains the
lists that have been acknowledged and may be used as reference
in the future.
* When the decompressor receives a compressed list, it retrieves
the ref_list from the sliding window based on the ref_id, and
decompress the curr_list. It inserts curr_list into the sliding
window if it is used to update the context. It also shrinks the
sliding window by removing all the list before the ref_list.
2. Reference Used in UO-modes
In UO-mode, a set of continuous lists with the same content
are considered as belonging to the same generation and are
assigned with the same generation identification (gen_id).
Gen_id monotonically increases by 1 and is carried in the
compressed or uncompressed lists.
The logic of the compressor and decompressor for list compression
is similar to that for RTP sequence number and time stamp. The
only difference is that the decompressor needs to maintain a
sliding window and it retrieves the reference list from the
sliding window using the ref_id.
Logic of compressor:
* In the IR state, the compressor sends gen_id in uncompressed lists
until it gains enough confidence that at least one of these lists
that has the same gen_id has been received. The compressor keeps
one of these lists as the ref_list.
* When the compressor observes difference between the curr_list
and the previous list, it compresses curr_list based on the
ref_list and assigns a new gen_id to the curr_list. The
compressor keeps sending compressed list using the ref_list
as the reference. If the a series of lists belong to the same
generation and the compressor gains enough confidence that the
decompressor has received at least one of this series of list,
it stops sending the compressed list and update the reference list
using one of the list among the aforementioned series of the
lists with the same gen_id.
Logic of decompressor:
* The decompressor maintains a sliding window, which contains lists
that belong to the different generations.
* When the decompressor receives a compressed list, it retrieves
a list from the sliding window, whose gen_id is the same as the
ref_id in the compressed list, and uses it as the reference to
decompress the curr_list. It also shrinks the sliding window by
removing all the list before the reference list. The
decompressor inserts the curr_list into the sliding window if
it belongs to a new generation when compared with the previously
decompressed list.