Hi Louis,
There is actually no issue here - when you move the call to the backup
destination, opensips fires first a re-INVITE with no SDP to the caller
(in order to get its SDP in 200 OK). Then opensips sends a new call to
the new destination and waits for the 200 OK from it, it order to take
the SDP from it and pushed it on the caller side as ACK + SDP.
The b2bua does this trick with late negotiation in order to avoid to
inter-pose itself in SDPs and to allow direct exchange of SDPs between
the end points.
Shortly, there is not ACK to caller because there is no 200 OK from the
new callee.
Regards,
Bogdan
On 04/02/2012 05:48 PM, LRochon wrote:
We are having a problem where we believe that OpenSIPS B2BUA is failing to
send an ACK to a 200 ok message. Everything else works great, but we have
tried alot of different things to get around this issue, with no good
results.
We are using OpenSIPS 1.7.2 8878
Phone A 172.16.6.254 (number 1001)
Phone B 192.168.130.103 (Number 8195553185, this is actually a SIP gateway,
but from the point of view of OpenSIPS, it might has well be a phone)
Phone C 172.16.1.83 (number 5555)
OpenSIPS 192.168.130.105
Under normal operation, Phone A calls Phone B via OpenSIPS B2BUA.
If phone B fails or goes off-air for whatever reason, two things need to
happen: 1, new calls must be redirected to phone C, and 2, any calls that
are
currently progress between Phone A and Phone B must be redirected so that
Phone A talks to Phone C.
It's part 2 we are having a problem with. We have a job that does a SIP keep
alive towards Phone B. If Phone B fails, we do two things:
1. Launch command "opensipsctl fifo b2b_list"
That results in:
tuple:: 0 key=328.0 scenario_state=1 lifetime=106223 db_flag=2
scenario=FailOver next_scenario_state=1
servers:: 0 scenario_id=Server1 key=B2B.311.172 disconnected=0
state=1 no=0 type=0 peer=B2B.330.7393716
to_uri:: sip:8195553185@192.168.130.105
from_uri:: sip:1001@192.168.130.105
clients:: 0 scenario_id=phone1 key=B2B.330.7393716 disconnected=0
state=1 no=1 type=1 peer=B2B.311.172
to_uri:: sip:8195553185@192.168.130.103
from_uri:: sip:1001@192.168.130.105
bridge_entities:: 0 scenario_id=Server1 key=B2B.311.172
disconnected=0 state=1 no=0 type=0 peer=B2B.330.7393716
to_uri:: sip:8195553185@192.168.130.105
from_uri:: sip:1001@192.168.130.105
bridge_entities:: 1 scenario_id=phone1 key=B2B.330.7393716
disconnected=0 state=1 no=1 type=1 peer=B2B.311.172
to_uri:: sip:8195553185@192.168.130.103
from_uri:: sip:1001@192.168.130.105
2. We extract the key (328.0 in this case)
and then launch command:
opensipsctl fifo b2b_bridge 328.0 sip:5555@172.16.1.83 0
PhoneA OpenSIPS PhoneB
PhoneC
----Invite---------->
<---Trying----------
-----Invite------>
<----Trying-------
<--183 Progress---
<---183 Progress----
<---200 OK--------
<---200 OK----------
-----ACK ---------->
------ACK-------->
Here, PhoneA talks to PhoneB.
Simulate failure of phone B, so we do
"opensipsctl fifo b2b_list" and "opensipsctl fifo b2b_bridge 328.0
sip:5555@172.16.1.83 0"
Call flow continues:
-------BYE------->
<--Invite (no SDP)--
<--200 OK (no SDP)-
---200 OK --------->
-------------Invite-------------->
<------------Trying---------------
<---------180 Ringing-------------
---200 OK---------->
<-Missing ACK!!!----
---200 OK---------->
---200 OK---------->
---BYE------------->
<----200 OK---------
--------Cancel------------------->
<-----487 Request Cancel----------
---------ACK--------------------->
<-----------200 OK----------------
--
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com
_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users