Changes of behaviour for UDP checksum not correctly supported

Bug #1014056 reported by Didier Barvaux
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
rohc
Status tracked in Rohc-main
1.3.x
Fix Released
Medium
Didier Barvaux
1.4.x
Fix Released
Medium
Didier Barvaux
Rohc-main
Fix Released
Medium
Didier Barvaux

Bug Description

According to RFC 3095, the UDP checksum may have 2 behaviours:
 - non-zero value changing randomly with every packet,
 - zero value that can be compressed away.
A behaviour change can be transmitted to decompressor only with IR or IR-DYN packets.

RFC 3095, section A.2.4:
   The UDP checksum is optional. If disabled, its value is constantly
   zero and could be compressed away. If enabled, its value depends on
   the payload, which for compression purposes is equivalent to it
   changing randomly with every packet.

RFC 3095, section 5.7, page 78:
   Whether the UDP Checksum field is present or not is controlled by the
   value of the UDP Checksum in the context. If nonzero, the UDP
   Checksum is enabled and sent along with each packet. If zero, the
   UDP Checksum is disabled and not sent. Should hdr(UDP Checksum) be
   nonzero when context(UDP Checksum) is zero, the header cannot be
   compressed. It must be sent uncompressed or the context
   reinitialized using an IR packet. Context(UDP Checksum) is updated
   only by IR or IR-DYN headers, never by UDP checksums sent in headers
   of type 2, 1, or 0.

On trunk (rev 378):
 - the decompressor does update the UDP checksum behaviour only on the
    first received IR packet, not the next ones,
 - the compressor does not force the usage of an IR or IR-DYN packet upon
   behaviour change.

This bugs affects the IP/UDP and IP/UDP/RTP profiles.

Revision history for this message
Didier Barvaux (didier-barvaux) wrote :

Branch 1.3.x is affected.

Revision history for this message
Didier Barvaux (didier-barvaux) wrote :

Branch 1.4.x is affected.

Revision history for this message
Didier Barvaux (didier-barvaux) wrote :

Trunk is affected.

Revision history for this message
Didier Barvaux (didier-barvaux) wrote :

Attach a PCAP capture of IP/UDP/RTP streams that make the problem to happen.

Revision history for this message
Didier Barvaux (didier-barvaux) wrote :

Fixed in trunk. See http://bazaar.launchpad.net/~didier-barvaux/rohc/main/revision/380

The decompressor now updates the UDP checksum behaviour on all received IR packets. The compressor now goes back to IR state upon behaviour change (it could be optimized later by forcing only the usage of an IR or IR-DYN packet but staying in FO/SO state).

Revision history for this message
Didier Barvaux (didier-barvaux) wrote :

Fixed on 1.4.x branch (same fix as trunk). See http://bazaar.launchpad.net/~didier-barvaux/rohc/1.4.x/revision/332

Revision history for this message
Didier Barvaux (didier-barvaux) wrote :

Bug fixed on branch 1.3.x (same fix as for other branches). See http://bazaar.launchpad.net/~didier-barvaux/rohc/1.3.x/revision/188

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.