Re: [rohc] IMPL-EFF TCP/IP EPIC profile

"West, Mark (ITN)" <mark.a.west@roke.co.uk> Sun, 10 March 2002 17:36 UTC

Received: from optimus.ietf.org (ietf.org [132.151.1.19] (may be forged)) by ietf.org (8.9.1a/8.9.1a) with ESMTP id MAA11262 for <rohc-archive@odin.ietf.org>; Sun, 10 Mar 2002 12:36:16 -0500 (EST)
Received: from optimus.ietf.org (localhost [127.0.0.1]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id MAA03409; Sun, 10 Mar 2002 12:32:55 -0500 (EST)
Received: from ietf.org (odin [132.151.1.176]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id MAA03371 for <rohc@optimus.ietf.org>; Sun, 10 Mar 2002 12:32:52 -0500 (EST)
Received: from rsys000a.roke.co.uk (rsys000a.roke.co.uk [193.118.201.102]) by ietf.org (8.9.1a/8.9.1a) with SMTP id MAA11199 for <rohc@ietf.org>; Sun, 10 Mar 2002 12:32:47 -0500 (EST)
Received: by rsys001a.roke.co.uk with Internet Mail Service (5.5.2653.19) id <1XV9BDD4>; Sun, 10 Mar 2002 17:30:22 -0000
Received: from roke.co.uk (ras_fennel2.roke.co.uk [193.118.206.44]) by rsys002a.roke.co.uk with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2653.13) id G3566RW6; Sun, 10 Mar 2002 17:30:17 -0000
From: "West, Mark (ITN)" <mark.a.west@roke.co.uk>
To: Julije Ozegovic <julije@fesb.hr>
Cc: "Hongbin Liao (Intl Staffing)" <i-hbliao@microsoft.com>, Qian Zhang <qianz@microsoft.com>, rohc <rohc@ietf.org>
Message-ID: <3C8B6456.7070707@roke.co.uk>
Date: Sun, 10 Mar 2002 13:49:10 +0000
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.4) Gecko/20011019 Netscape6/6.2
X-Accept-Language: en-us
MIME-Version: 1.0
Subject: Re: [rohc] IMPL-EFF TCP/IP EPIC profile
References: <F4C77846CEE593418BE5AB7B6A83111E0465219C@bjs-msg-01.fareast.corp.microsoft.com> <3C888CF1.8020904@fesb.hr>
Content-Type: multipart/mixed; boundary="------------InterScan_NT_MIME_Boundary"
Sender: rohc-admin@ietf.org
Errors-To: rohc-admin@ietf.org
X-Mailman-Version: 1.0
Precedence: bulk
List-Id: Robust Header Compression <rohc.ietf.org>
X-BeenThere: rohc@ietf.org

Hi Julije,

Comment inline...

Cheers,

Mark.


Julije Ozegovic wrote:

 > Hi all!
 >
 > here is the short explanation of our CDE (Compressor Decompressor 
Engine).
 >
 > 1. We have profile structures in the memory, in form of double linked 
list.
 >

ok.

 > 2. On arrival of the uncompressed packet, compressor traverses the
 > header AND the profile top-down, trying to optimally compress each
 > field. Chosen methods are identified in a "method string". Method string
 > indicates the actual profile.
 >

So you work through each field, selecting an encoding and storing the
set of chosen encodings.  So far, so good...  (Of course it's the act of
traversing the profile that automatically breaks down the header)

 >  3. Method string is used to traverse coder Huffman tree, which finally
 > yields predetermined ID_bits. This step can be done during the field
 > compression step by step, but we decided to keep it this way for
 > debugging purposes (separate functions as much as you can).
 >

This may just be a terminology issue, but I don't think that there is
(or shouldn't be) any traversal of the Huffman tree going on.  The
'tree' is built as part of the off-line processing of the profile and
yields a set of indicator flags.  The 'method string' will map to a node
which is itself associated with a prefix.

To work out the prefix you may need to do some fiddling around with
prefix lengths - is that what you mean?

I don't believe that it is practical/possible to do prefix
identification step by step.  It's not only preferable for debugging but
also, I suspect, performance...

 > 4. On arrival of compressed packet, decompressor chooses appropriate
 > decoder Huffman tree (one per format set) and traverses it according to
 > ID_bits. When finished, predetermined "method string" is picked from the
 > list. Actually, we have (max_sets+2)*max_formats different method 
strings.
 >

Yes.  Although, again, it's not really a full tree traversal, but a
match against value ranges for each prefix length.  The ID maps to a
'format string', which gives you the codings.

 > 5. Decompressor traverses profile and compressed header bottom-up
 > according to picked method string.
 >

Yes.

 > The main memory waste is the decompressor method string storage,  and
 > that's why I argue for simpler profile (lower number of formats) :)
 >

I don't believe that the 'method string' storage should be particularly
memory intensive.  From Hongbin's simple example of 30 fields with 2
encodings per field we can build a 'format string' in 30 bits.  Any
field that has only one encoding choice does not need to appear in the
format string.  Every other field needs at most ceiling(log2(n)) bits,
where n is the number of encodings.  The sum of these over all the
fields gives you the answer...

 > Our application is currently file-to-file oriented, and is stuffed with
 > screen dump of every step in the process. Being concentrated to the
 > function itself, we did not set up proper performance testing
 > environment. It's planned in the future.
 >
 > Cheers,
 > Julije
 >

-- 
Mark A. West, Consultant Engineer
Roke Manor Research Ltd., Romsey, Hants.  SO51 0ZN
Phone +44 (0)1794 833311   Fax  +44 (0)1794 833433

(Yes, I do know that my disclaimer is in an attachment.  And, no, I
didn't ask for it to be that way)