OpenSIPS / opensips

OpenSIPS is a GPL implementation of a multi-functionality SIP Server that targets to deliver a high-level technical solution (performance, security and quality) to be used in professional SIP server platforms.
https://opensips.org
Other
1.27k stars 578 forks source link

[BUG] B2BUA Module: rseq need to be handled independently per leg or toTag passed along. #3431

Closed hb9eue closed 1 month ago

hb9eue commented 3 months ago

Hi

I'm not sure if this is a bug or rather a feature request. But I consider this a bug as it probably breaks a situation which I think is not that uncommon.

opensips 3.4.6 in use als B2BUA in this call scenario

Issue short description:

When forking a call on the B leg, different endpoints send provisional messages each with a unique To-Tag and if reliable transport is requested, with most probably an identical rseq number.

The current implementation of the B2BUA Module on opensips does generate a to tag on the A leg an uses that same to-tag for all provisional messages received with different to-tags from the B side. The rseq header of provisional messages routed to the A side is copied from the B side.

This causes the 'different' provisional messages on the A side to be misidentify as re-transmits because of non RFC compliant same rseq number.

Example:

A => Commercial SBC => OpenSIPS => Kamailio Registrar => CPE B (ringing timeout)
                                                          |->  CFW => CPE C

OpenSIPS is use to perform topology hiding and also solves situations where a 2nd leg needs a unique CallID. Kamailio implements call forwarding delayed aka no-answer functionality to Customer B.

INVITE from A to B

From my point of view, there would be two options to remedy that situation:

I think the more sensible one, would be to make the B2BUA Module of Kamailio to keep track of and increment the rseq counter on leg A and B individually and not just copy the rseq counter from leg B to A.

Alternatively it might also be an option to make OpenSIPS just pass the ToTag unaltered which would definitely prevent our commercial SBC from dropping the provisional message.

What are the opinions of to that issue? Did I maybe misconfigure something or miss how this can already be solved?

-Benoit-

github-actions[bot] commented 2 months ago

Any updates here? No progress has been made in the last 15 days, marking as stale. Will close this issue if no further updates are made in the next 30 days.

github-actions[bot] commented 1 month ago

Marking as closed due to lack of progress for more than 30 days. If this issue is still relevant, please re-open it with additional details.