← Back to team overview

rohc team mailing list archive

Re: rohc performance on lossy media

 

Hello,

Sorry for not answering sooner. I could have saved you some time about
the WLSB width :-/

First of all, your changes seem correct. Please send me a patch, I'll
check if I can integrate your changes in the next release.

The increased size is indeed a consequence. You ask the library to be
more robust, so it sends more information to achieve that goal.

You have to choose a trade-off between a/ compression efficiency and b/
robustness. Did you try to set smaller value for the WLSB width? Maybe
128 provides enough robustness? Maybe 192?

Regards,
Didier


On Tue, 6 Feb 2018 17:31:18 +0300,
mehmet sulak <mehmet.sulak@xxxxxxxxx> wrote:

> After some trials I saw that;
> 
> rohc_comp_set_wlsb_window_width()  method is working correctly, the
> second parameter is just width of LSB window however I toughed that
> it was the number of bits that are for  LSB  width.
> 
> I set it as 256 to handle large number of problematic cases(by setting
> ROHC_WLSB_WIDTH_MAX to 256U). Also I set  ROHC_LSB_SHIFT_SN  as 128 to
> handle delayed packets.
> (I defined new enumeration field whose value is 128 by updating
> interval.h and setting new value in c_udp.c and d_udp.c files)
> 
> The results are seems to perfect. Rohc decomress errors are seems to
> minimized to very small values which stems from loss of initial
> context packages.
> 
> The drawback is that 28 byte UDP headers were compressed to 4 bytes
> previously but with the solution that I tried they are now compressed
> to 7 bytes.
> 
> Is this normal behavior?
> 
> Best Regards..
> 
> 
> 
> 2018-01-30 17:26 GMT+03:00 mehmet sulak <mehmet.sulak@xxxxxxxxx>:
> 
> > Thanks for your detailed response first;
> >
> > First I tried method  rohc_comp_set_wlsb_window_width(comp,8) by
> > giving 8bits window width but I still observe the following in the
> > log files;
> >
> > rohc_decomp_rfc3095.c:1463 parse_uo0() 4 SN bits = 0xe
> >
> > So I think it still uses 4 bit window length? If yes did I do
> > something wrong?
> >
> > Secondly I think for UDP packets ROHC_LSB_SHIFT_SN(-1) is used for
> > compressor and decompressor which makes parsing delayed packets
> > impossible.
> >
> > So I need to use something half of (2 ^ lsb_width)  instead of -1 by
> > adding a new enumeration value.
> >
> > Do have any idea about this parameter?
> >
> > Best Regards..
> >
> > 2018-01-29 22:11 GMT+03:00 Didier Barvaux <didier@xxxxxxxxxxx>:
> >  
> >> Hello,
> >>  
> >> > I am using Rohc comressor/decomressor pair on a lossy
> >> > media(sometimes at receiver side some packets are lost) and the
> >> > orderings of the  UDP packets are not guaranteed.(packets are
> >> > not coming in right order all the time).
> >> >
> >> > I am using Unidirectional mode and observe some decomression
> >> > failures about CRC check, malformed packets...
> >> >
> >> > Any recommendation to overcome these issues?  
> >>
> >> The ROHC protocol provides several ways to handle packet loss or
> >> reordering:
> >>
> >> a/ Increasing the width of the window used by the W-LSB algorithm
> >>    improves the robustness of the ROHC protocol by sending more
> >> bits for changing fields. Given a W-LSB width <wlsb_width>, up to
> >>    (<wlsb_width> - 1) packets may be lost without causing
> >> additional loss.
> >>    The default width is set to 4 by the ROHC library ; please use
> >> the rohc_comp_set_wlsb_window_width() function to change the
> >> value ; see [1] for more details.
> >>
> >> b/ Increasing the number of transmissions N required for a changing
> >>    static fields or a changing pattern for a dynamic field ensures
> >> that the loss of N-1 packets during such a change will cause no
> >>    additional loss.
> >>    The default number of transmissions is set to 3 by the ROHC
> >>    library ; there is no API to change the value at that time, but
> >> you may change the value of the constant MAX_IR_COUNT in the
> >> source file src/comp/rohc_comp_internals.h and re-build/re-install
> >> the library.
> >>
> >> c/ Same as b/ but for lists of extensions headers (such as IPv6
> >>    extension headers, GRE, AH...). Use the function
> >>    rohc_comp_set_list_trans_nr() to change the value ; the default
> >>    value is set to 5 ; see [2] for more details.
> >>
> >> d/ You may enable packet/context repair upon CRC failures, so that
> >> the decompressor tries to fix the context or packet if it detects a
> >>    decompression problem (due to packet loss/reordering for
> >> example). The feature is disabled by default. Enable it with the
> >> function rohc_decomp_set_features() and the feature
> >>    ROHC_DECOMP_FEATURE_CRC_REPAIR ; see [3] for more details.
> >>
> >> Configuring options a-c is easier if you know the largest number of
> >> consecutive losses that you may expect and/or you want to be
> >> protected against.
> >>
> >> Let me know if my explanations are clear enough or if you need more
> >> details. And, of course, let me know if one of the options solves
> >> your problem.
> >>
> >> Regards,
> >> Didier
> >>
> >>
> >> [1] documentation of rohc_comp_set_wlsb_window_width():
> >> https://rohc-lib.org/support/documentation/API/rohc-doc-2.1.
> >> 0/group__rohc__comp.html#ga2b68070dddbc038cd55490952a7b3fa4
> >>
> >> [2] documentation of rohc_comp_set_list_trans_nr():
> >> https://rohc-lib.org/support/documentation/API/rohc-doc-2.1.
> >> 0/group__rohc__comp.html#ga32608bc06e1b0d1656e463eeb1ccbd7f
> >>
> >> [3] documentation of rohc_decomp_set_features():
> >> https://rohc-lib.org/support/documentation/API/rohc-doc-2.1.
> >> 0/group__rohc__decomp.html#ga2298148ca8dc277a1c1905f550f21f7b
> >>
> >>
> >> _______________________________________________
> >> Mailing list: https://launchpad.net/~rohc
> >> Post to     : rohc@xxxxxxxxxxxxxxxxxxx
> >> Unsubscribe : https://launchpad.net/~rohc
> >> More help   : https://help.launchpad.net/ListHelp
> >>  
> >
> >  


Follow ups

References