Changes of behaviour for UDP checksum not correctly supported
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.
Branch 1.3.x is affected.