UOR-2 extension options for IPv6

Bug #1166618 reported by Elisabeth
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-1.5.x
Fix Released
High
Didier Barvaux
Rohc-main
Fix Released
High
Didier Barvaux

Bug Description

Dear Didier,
Dear ROHC team,

We have detected some problems in the decide_extension function in c_generic.c. More specifically, two issues which both are related to the (non-RTP) UOR-2 case, one related to IP version and one related to the number of SN bits.

If interpreting RFC3095 correctly, the one extension available for IPv6 and non-RTP traffic is extension-3.
Assuming this interpretation to be correct, we would have expected IP version to be part of the conditions for which extension to be used. Our first issue is that IP version is not part of the decision criteria for which extension to be used.

The second issue is related to the UOR-2 case where no extension is required.
In code version 1.5.1. the condition for when not to use an extension is nr_sn_bits<5. Should it not be nr_sn_bits <=5? As the non-RTP UOR-2 message format seems to be capable of carrying 5 bits of SN.

Best regards,
Elisabeth

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

Elisabeth,

> If interpreting RFC3095 correctly, the one extension available
> for IPv6 and non-RTP traffic is extension-3.

Yes, you're right. The other extensions contains some IP-ID bits,
so they cannot be used with IPv6.

> Assuming this interpretation to be correct, we would have
> expected IP version to be part of the conditions for which
> extension to be used. Our first issue is that IP version is not
> part of the decision criteria for which extension to be used.

My intention was to perform an indirect check on the IP version through
the checks on nr_innermost_ip_id_bits and nr_outermost_ip_id_bits, but
you're right that it might not be enough to avoid IPv6 packets to use the
forbidden extensions. I have to find an IPv6 stream that causes the
problem to occur (for non-regression tests). Do you have one?

> The second issue is related to the UOR-2 case where no extension
> is required.
> In code version 1.5.1. the condition for when not to use an extension
> is nr_sn_bits<5. Should it not be nr_sn_bits <=5? As the non-RTP
> UOR-2 message format seems to be capable of carrying 5 bits of SN.

You're right. The check should be <= 5 instead of 5. The checks for the
other extensions are OK. I have to find an IP stream that causes the
problem to occur (for non-regression tests). Do you have one?

Thank you for reporting those two problems!

Regards,
Didier

tags: added: library
no longer affects: rohc/iprohc
Revision history for this message
Didier Barvaux (didier-barvaux) wrote :

Fixed in main branch:
  - Only extension 3 can be used for IPv6 non-RTP traffic.
  - The non-RTP UOR-2 packet without extension accepts up to 5 SN bytes.

Thank Elisabeth for reporting the problem.
Correction developed by Viveris Technologies.

See http://bazaar.launchpad.net/~didier-barvaux/rohc/main/revision/713 for running non-regression tests with WLSB width 64. See http://bazaar.launchpad.net/~didier-barvaux/rohc/main/revision/714 for the bugfix itself.

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

Branch 1.4.x is affected by the 2nd issue only.

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

Branch 1.3.x is affected by the 2nd issue only.

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

Fix for 2nd issue backported to branch 1.4.x. See http://bazaar.launchpad.net/~didier-barvaux/rohc/1.4.x/revision/366

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

Fix for 2nd issue backported to branch 1.3.x. See http://bazaar.launchpad.net/~didier-barvaux/rohc/1.3.x/revision/215

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.