Subject: [rohc] RFC 3095 question: RX context update rules for CSRC lists

From: Alan Kennington <[email-masked]>
Date: Sat, 7 Jun 2003 12:37:57 +0930

I'm having difficulty getting complete clarity on exactly what is and
isn't updated for CSRC lists, CSRC sliding windows and CSRC translation 
tables in the decompressor (RX) context for profile 0x0001 in RFC 3095. 
There is some attempt at clarification in the ROHC Implementer's
guide, version 2, 4.15, page 9, but this confuses me even more.

Could anyone please tell me if I have inferred the right procedures for
the decompressor here? A systematic clarification such as this could be a
useful addition to the Implementer's Guide. It's important for
interoperability that the TX context should know whether the RX context
will update its lists and windows. Therefore there should be clarity in
this. Obviously implementers should not have to use guesswork for
questions which affect interoperability. In my opinion, the complete set
of context-updating rules should be presented systematically in tables
in the Implementer's Guide because natural langauge is too confusing.

Event: Arrival of UO-1-ID packet with extension 3 containing CSRC list
using generic encoding 0 or delta encodings 1, 2 or 3.
If the CRC-3 fails, the complete packet is discarded and ignored.
Otherwise:
-       The received CSRC list is used to construct a header for the payload.
-       The current CSRC list is _not_ updated by the received list.
-       The received CSRC list is _not_ inserted into the sliding window.
-       Any (index, item) pairs in the CSRC list _do_ update the
        CSRC translation table. (Implied by Implementer's guide, 4.15.)
-       In R-mode, an ACK _is_ required? RFC 3095, 5.8.2(e), page 109,
        is unclear about this. Most likely an ACK must be sent because
        there is a partial context update, but there is no benefit in this
        because the sliding window is not updated. In U/O modes, probably
        the CSRC list should not be ACKed if gen_id field is not set?

Event: Arrival of R-1* packet with extension 3 containing CSRC list
using generic encoding 0 or delta encodings 1, 2 or 3.
-       The received CSRC list is used to construct a header for the payload.
-       The current CSRC list is _not_ updated by the received list.
-       The received CSRC list is _not_ inserted into the sliding window.
-       Any (index, item) pairs in the CSRC list do _not_ update the
        CSRC translation table?
-       An ACK is _not_ required in any mode.
In other words, absolutely nothing in the RX context is updated.
But the Implementer's guide, 4.15, could be taken to imply that the
CSRC translation table _is_ updated, even though there is no CRC.
If the translation table is udpated, then must an ACK be sent in R-mode?

Event: Arrival of UOR-2* packet with extension 3 containing CSRC list
using generic encoding 0 or delta encodings 1, 2 or 3.
If the CRC-7 fails, the complete packet is discarded and ignored.
Otherwise:
-       The received CSRC list is used to construct a header for the payload.
-       The current CSRC list _is_ updated by the received list.
-       The received CSRC list _is_ inserted into the sliding window
        if mode=R, or if mode=U/O and the gen_id header field is set.
-       Any (index, item) pairs in the CSRC list _do_ update the
        CSRC translation table.
-       In R mode, an ACK must be sent. In U/O modes, an ACK may be sent.
In other words, everything possible in the context is updated, except
that if the gen_id field is not set and the mode is U/O, then the sliding
window is not updated.

Event: Arrival of IR (containing dynamic fields) or IR-DYN packet
containing CSRC list using generic encoding 0.
If the CRC-8 fails, the complete packet is discarded and ignored.
Otherwise:
-       The received CSRC list is used to construct a header for the payload.
-       The current CSRC list _is_ updated by the received list.
-       The received CSRC list _is_ inserted into the sliding window
        if mode=R, or if mode=U/O and the gen_id header field is set.
-       Any (index, item) pairs in the CSRC list _do_ update the
        CSRC translation table.
-       In R mode, an ACK must be sent. In U/O modes, an ACK may be sent.
In other words, everything possible in the context is updated, except
that if the gen_id field is not set and the mode is U/O, then the sliding
window is not updated.
It seems that for IR and IR-DYN packets, only the generic scheme 0 for
list encoding is permitted. (RFC 395, 5.8.2.1(a), page 107.)
Otherwise, everything is the same as for the UOR-2* packets.

In the above, the "current CSRC list" is used for contructing headers
when the received packets does not contain a CSRC list of any kind.

Cheers,
Alan Kennington.
_______________________________________________
Rohc mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rohc

---

From: 신병철 <[email-masked]>
Date: Mon, 9 Jun 2003 19:46:00 +0900

Hi,  

    Is there any open source or public domain software of   ROHC   implementations ?

Shin, Byung-Cheol
Chungbuk National university
T: +82-43-261-2389
HP: +82-17-404-0239
[email-masked]