[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.