[OpenSIPS-Users] Opensips and CSeq number handling
Vlad Paiu
vladpaiu at opensips.org
Wed Oct 21 11:32:18 CEST 2015
Hello,
Yes, if you are using in-dialog OPTIONS pings, OpenSIPS will mangle the
CSEQs of all in-dialog requests, after it has sent the first pings.
Just making sure I understand the scenario... so the client is sending a
Re-INVITE and immediately after that it sends an UPDATE, and the ACK for
the RE-INVITE gets propagated with the CSEQ of the UPDATE ?
Best Regards,
Vlad Paiu
OpenSIPS Developer
On 20.10.2015 21:28, Patrick Wakano wrote:
> Hi list,
> An update about this issue.
> The behavior I mentioned about Opensips incrementing the CSeq values
> only after second Re-Invite is incorrect. More tests showed me that
> this happens after the in-dialog Options the dialog module sends (I am
> creating it with "pP" options). This also explains why Opensips is
> changing the CSeq number, because it has to couple the CSeq numbering
> of the local generated Options with the original requests of the dialog!
> The problem regarding the Ack with wrong CSeq number still occurs
> anyways. It seems that Opensips is not matching the Ack with the
> correct Invite transaction...
>
> Patrick
>
>
> On Tue, Oct 20, 2015 at 12:31 PM, Patrick Wakano <pwakano at gmail.com
> <mailto:pwakano at gmail.com>> wrote:
>
> Hello Opensips list!
>
> Hope you all doing fine!
>
> The purpose of this e-mail is to explain a problem I am facing and
> to understand a little bit more about the handling done by
> Opensips over the CSeq number when forwarding messages to the
> destination. I couldn't find any real good explanation over this
> subject so I wrote this huge e-mail, sorry for that...
>
> I am trying to use the remote ID feature of Asterisk, but in some
> transfer scenarios the call gets dropped and after digging the
> problem I think it is related to the CSeq handling done by Opensips.
> This remote ID feature is configured to use the
> P-Asserted-Identity header to transmit the callee ID to the caller
> and it causes the exchange of Re-Invites and/or Updates during the
> call. The transfer scenario I mentioned is entirely handled by
> Asterisk, and as a result of the transfer it sends to Opensips the
> identity of the new peer, using a Re-Invite and an Update.
> First I would like to know how Opensips handles the CSeq number
> when proxying the Invite from one side to the other? My tests
> showed me that Opensips does not change the CSeq for the first
> Invite and first Re-invite, however for the second Re-invite and
> for requests after that it is always incrementing the value by one
> when forwarding it. Although it haven't caused any errors so far,
> I am not sure if this is correct. Why is Opensips incrementing it?
> My understanding is that the proxy was not supposed to change this
> field...
>
> Now the problem I am facing: In a blind transfer scenario, the
> remote ID feature causes Asterisk to send a Re-Invite and right
> after an Update. Opensips increments the CSeq of both(because this
> happens to be the second Re-Invite of the dialog) and forward them
> to the destination. Both messages are answered with 200 Ok. This
> follows by Asterisk sending an Ack with the same CSeq number used
> in the Re-Invite. This is the point where Opensips fails, it gets
> this Ack and forward it using the CSeq number of the Update and
> not the one of the Re-Invite. Because of this the destination
> discards this Ack and keeps retransmitting the 200 Ok for the
> Re-Invite, eventually the call is dropped by timeout or because
> some other Re-Invite happens without the prior one being properly
> handled.
>
> Useful information:
> - If the Re-Invite followed by the Update is the first of the
> dialog, then the problem does not happen. The CSeq numbers are not
> incremented and the CSeq for the Ack is correct.
> - If due to unknown timing reasons, the Update gets forwarded
> before the Re-Invite (even though the Re-Invite is received first)
> the problem also does not happen. The CSeq numbers are incremented
> but the CSeq for the Ack gets the correct value. So it seems to me
> that the Ack is getting the last CSeq used to forward, and not the
> one of the corresponding Invite.
> - When I enable more traces(debug=4), I always fall in the case
> where the Update is forwarded before the Re-Invite and then the
> problem doesn't happen.
> - In an attended transfer, Asterisk does not send the Update so
> the problem does not happen.
> - Not sure why Asterisk is sending the Re-Invite immediately
> followed by an Update, nevertheless technically I couldn't see a
> problem with it.
> - I am using Opensips 1.11.3
>
>
> Best regards for all and sorry again for such a huge e-mail.
>
> Patrick
>
>
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20151021/42014525/attachment.htm>
More information about the Users
mailing list