← Back to team overview

rohc team mailing list archive

Re: rohc performance on lossy media


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

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

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