rohc team mailing list archive
-
rohc team
-
Mailing list archive
-
Message #02208
Re: rohc performance on lossy media
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
Follow ups
References