[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [rohc] ROHC-FN tutorial: scaled_seq_no compression formula
> However, this was a lot of work to maintain so we abandoned it.
I agree...
> For reference, with real protocols where the operators used are
> non-invertible, look-up tables are very useful (and also fast).
> Although the individual operators used may be many-to-one as with
> modulo, the overall mapping must be one-to-one, so a lookup table is a
> nice solution. Of course scalability is an issue - for this example
> though the tables are small enough to sit in L1 cache so offer a good
> solution. Partly this depends on your architecture, but typically
> modulo consumes a lot of clock cycles.
Thanks, good hint.
br
Klaus
At Fri, 04 Sep 2009 22:15:36 +0100,
Raffles wrote:
>
> [1 <text/html; ISO-8859-1 (7bit)>]
> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
> <html>
> <head>
> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
> </head>
> <body bgcolor="#ffffff" text="#000000">
> Hi Klaus,<br>
> <br>
> Thanks for the clarification. There is certainly nothing wrong with
> designing the "how" rather than the "what" - the main point is to
> understand that the FN only intends to specify the "what". This is
> intentional, to allow the implementer as much freedom as possible.
> Originally we developed an engine which would take an FN description
> and automatically provide compression and decompression, meaning that
> you could get a reference solution without specifying the "how" part.
> However, this was a lot of work to maintain so we abandoned it.<br>
> <br>
> For reference, with real protocols where the operators used are
> non-invertible, look-up tables are very useful (and also fast).
> Although the individual operators used may be many-to-one as with
> modulo, the overall mapping must be one-to-one, so a lookup table is a
> nice solution. Of course scalability is an issue - for this example
> though the tables are small enough to sit in L1 cache so offer a good
> solution. Partly this depends on your architecture, but typically
> modulo consumes a lot of clock cycles.<br>
> <br>
> Thanks again for the input.<br>
> <br>
> All the best<br>
> <br>
> Raffles<br>
> <br>
> Klaus Warnke wrote:
> <blockquote cite="mid:upra76oc7.wl%25klaus.warnke at acticom.de"
> type="cite">
> <pre wrap="">Hi Raffles,
>
> I tried to implement this encoding:
>
> ENFORCE(sequence_no.UVALUE == (scaled_seq_no.UVALUE * 3) % 16);
>
> I saw, it is easy to calculate the sequence_no.UVALUE from then
> scaled_seq_no.UVALUE, because the formula can be used 1:1.
> But if I want to calculate the scaled_seq_no.UVALUE from the
> sequence_no.UVALUE, I can't see how here.
>
> Did I oversaw something?
>
> So I restructured the formula, which was not so easy to me, because
> there is no inverse for the "%" operator. So I wanted to share this,
> maybe it is helpful for other developers.
>
> </pre>
> <blockquote type="cite">
> <pre wrap="">You specify "what" rather than "how"
> </pre>
> </blockquote>
> <pre wrap=""><!---->My intention was to explain "how", not "what".
> Could you please explain what was wrong about that?
>
> br
> Klaus
>
> At Thu, 03 Sep 2009 21:37:39 +0100,
> Raffles wrote:
> </pre>
> <blockquote type="cite">
> <pre wrap="">Hi Klaus,
>
> Thanks for the post. I think you have probably already seen the
> following line in the example:
>
> ENFORCE(sequence_no.UVALUE
> == (scaled_seq_no.UVALUE * 3) % 16);
>
> Which is to say, a similar function to the one which you have described,
> but expressed in the inverse form. The bindings created by this are two
> way. That is, this single line defines both compression and
> decompression. One of the key principles of the FN is that all bindings
> are two way, so that you only define the profile once for both
> compression and decompression. You specify "what" rather than "how". See
> section 3.2.1 for more details:
> <a class="moz-txt-link-freetext" href="http://tools.ietf.org/html/rfc4997#section-3.2.1">http://tools.ietf.org/html/rfc4997#section-3.2.1</a>
>
> Thanks for taking the time to read the RFC and send in a post.
>
> If you have any questions feel free to ask.
>
> Regards
>
> Raffles
>
>
> Klaus Warnke wrote:
> </pre>
> <blockquote type="cite">
> <pre wrap="">Hello RoHC'ers 2.0,
>
> the example B.9. in the RFC 4997 ROHC-FN introduces a scaled_seq_no,
> but provides no formula for compression.
>
> Here is my compression formula, maybe it is helpful for other.
>
> scaled_seq_no.UVALUE = (sequence_no.UVALUE + (m*16)) / 3
>
> where m is:
>
> m = 0 if (U%3 == 0)
> m = 2 if (U%3 == 1)
> m = 1 if (U%3 == 2)
>
> Checked with oo calc:
>
> U U%3 m M*16 U+m*16 C=(U+m*16)/3 C*3 U=(C*3)%16
> - --- - ---- ------ ------------ --- ----------
> 0 0 0 0 0 0 0 0
> 1 1 2 32 33 11 33 1
> 2 2 1 16 18 6 18 2
> 3 0 0 0 3 1 3 3
> 4 1 2 32 36 12 36 4
> 5 2 1 16 21 7 21 5
> 6 0 0 0 6 2 6 6
> 7 1 2 32 39 13 39 7
> 8 2 1 16 24 8 24 8
> 9 0 0 0 9 3 9 9
> 10 1 2 32 42 14 42 10
> 11 2 1 16 27 9 27 11
> 12 0 0 0 12 4 12 12
> 13 1 2 32 45 15 45 13
> 14 2 1 16 30 10 30 14
> 15 0 0 0 15 5 15 15
>
> br
> Klaus
> _______________________________________________
> Rohc mailing list
> <a class="moz-txt-link-abbreviated" href="mailto:Rohc at ietf.org">Rohc at ietf.org</a>
> <a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/rohc">https://www.ietf.org/mailman/listinfo/rohc</a>
>
>
> </pre>
> </blockquote>
> <pre wrap="">--
> Raffles (Robert Finking)
> m: 0789 463 9887
> e: <a class="moz-txt-link-abbreviated" href="mailto:raffles at gluft.com">raffles at gluft.com</a>
> w: gluft.com
>
> O O
> OOOOOO O O O OOOOOO OOOOO
> O O O O O OOOOO O
> OOOOOO O OOOOOO O O
> OOOOOO
> we care about software
>
> -----------------------------------------------------------------
> Gluft Ltd. Registered No.: 6795336
> The information contained in this e-mail and any attachments is
> proprietary to Gluft Ltd and must not be passed to any third
> party without permission. This communication is for information
> only and shall not create or change any contractual relationship.
> Please consider the environment before printing. Thank you.
> -----------------------------------------------------------------
>
> _______________________________________________
> Rohc mailing list
> <a class="moz-txt-link-abbreviated" href="mailto:Rohc at ietf.org">Rohc at ietf.org</a>
> <a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/rohc">https://www.ietf.org/mailman/listinfo/rohc</a>
> </pre>
> </blockquote>
> <pre wrap=""><!---->_______________________________________________
> Rohc mailing list
> <a class="moz-txt-link-abbreviated" href="mailto:Rohc at ietf.org">Rohc at ietf.org</a>
> <a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/rohc">https://www.ietf.org/mailman/listinfo/rohc</a>
>
> </pre>
> </blockquote>
> <br>
> <pre class="moz-signature" cols="72">--
> Raffles (Robert Finking)
> m: 0789 463 9887
> e: <a class="moz-txt-link-abbreviated" href="mailto:raffles at gluft.com">raffles at gluft.com</a>
> w: gluft.com
>
> O O
> OOOOOO O O O OOOOOO OOOOO
> O O O O O OOOOO O
> OOOOOO O OOOOOO O O
> OOOOOO
> we care about software
>
> -----------------------------------------------------------------
> Gluft Ltd. Registered No.: 6795336
> The information contained in this e-mail and any attachments is
> proprietary to Gluft Ltd and must not be passed to any third
> party without permission. This communication is for information
> only and shall not create or change any contractual relationship.
> Please consider the environment before printing. Thank you.
> -----------------------------------------------------------------
> </pre>
> </body>
> </html>
> [2 <text/plain; us-ascii (7bit)>]
> _______________________________________________
> Rohc mailing list
> Rohc at ietf.org
> https://www.ietf.org/mailman/listinfo/rohc