Hi
I've an issue with serial call forking and I hope somebody can help me...
What I'm trying to reach:
We are using Kamailio in a dynamic network with multiple nodes. The
dialplan is implemented using the KEMI interface. The call routing is
completely dynamic. At the moment, we are having call groups, which may
contain 1 or more recipients. If the number of this call group is called,
Kamailio is doing a parallel forking to all group participants. Now I'm
trying to extend the feature, that if nobody hooks up, the call is
forwarded to another number. This has been implemented with serial forking.
So the dialplan adds branches for all call group members with a q value of
1 and the last branch is the failover number with a lower q value. The
branching and failure route works fine.
The problem:
* I have a call group (G Bob 900101), with one participant (Bob 200102).
* The group has a fail over number (if Bob doesn't hook up), which points
again to Bob. I know that this use case doesn't make much sense, but it has
been simplified to show the problem. The failover number can be anything
also another call group which may contain one or more recipients from the
first group again.
* Alice (200101) calls the call group
* The first node (10.0.1.1/10.64.0.1) receives the call and forks it to
branch 1 Bob (202102) with q value 1.0 and to a second branch Bob (202102)
with q value 0.5. fr_timer is set to 10s
* The call is forwarded to node 2 (10.0.2.1/10.64.0.2), where Bob is
registered.
* The call is forwarded to Bobs device (Grandstream GXV3350) and the phone
is ringing.
* After 10s, the first node detects the 408 Request Timeout and switches to
the second branch
* The invite is sent to node 2 and Bobs device again.
* Node 1 also sends a CANCEL to node 2 and Bobs device for the first branch.
* The call in Bobs device is terminated
* Now the problem, the device does not react to the second INVITE. And
after the fr_inv_timer expires, the call is terminated with a 408 Request
Timeout.
I can see that the second INVITE contains another branch ID <ID>.1 compared
to the first INVITE, which had <ID>.0. The CANCEL is also sent with <ID>.0.
I've also tried with a Cisco 8861 3PCC and it doesn't work either. Compared
to the Grandstream, the Cisco device returns an error 500 upon the second
INVITE. Since both devices do not accept what I'm trying, I guess I'm doing
something wrong...
At the moment I'm a bit lost, what the problem could be.
Does somebody have an idea what it is and how I could solve it?
Following two SIP dumps from node 1 and node 2:
Node 1:
|Time | 10.0.1.128 | 10.64.0.1
|
| | | 10.0.1.1 | |
10.0.2.1 |
|2024-01-31 14:17:07.792784| INVITE SDP (g711A g7 |
| |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061>
Call-ID:2102072978-5060-296@BA.A.B.BCI CSeq:2950
| |(47276) ------------------> (5061) | |
|
|2024-01-31 14:17:07.793060| 407 Proxy Authentica |
| |SIP Status 407 Proxy Authentication
Required
| |(47276) <------------------ (5061) | |
|
|2024-01-31 14:17:07.796613| ACK | |
| |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2950
| |(47276) ------------------> (5061) | |
|
|2024-01-31 14:17:07.799045| INVITE SDP (g711A g7 |
| |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061>
Call-ID:2102072978-5060-296@BA.A.B.BCI CSeq:2951
| |(47276) ------------------> (5061) | |
|
|2024-01-31 14:17:07.836471| 100 trying -- your c |
| |SIP Status 100 trying -- your call is
important to us
| |(47276) <------------------ (5061) | |
|
|2024-01-31 14:17:07.865219| | |
INVITE SDP (g711A g7 |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5061) |
|2024-01-31 14:17:08.036334| | |
100 trying -- your c |SIP Status 100 trying -- your call is
important to us
| | | |(5061)
<------------------ (5061) |
|2024-01-31 14:17:08.084421| | |
180 Ringing |SIP Status 180 Ringing
| | | |(5061)
<------------------ (5061) |
|2024-01-31 14:17:08.096834| 180 Ringing |
| |SIP Status 180 Ringing
| |(47276) <------------------ (5061) | |
|
|2024-01-31 14:17:18.099644| | |
INVITE SDP (g711A g7 |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5061) |
|2024-01-31 14:17:18.100099| | |
CANCEL | |SIP CANCEL From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5061) |
|2024-01-31 14:17:18.259375| | |
100 trying -- your c |SIP Status 100 trying -- your call is
important to us
| | | |(5061)
<------------------ (5061) |
|2024-01-31 14:17:18.274841| | |
200 canceling |SIP Status 200 canceling
| | | |(5061)
<------------------ (5061) |
|2024-01-31 14:17:18.296942| | |
487 Request Terminat |SIP Status 487 Request Terminated
| | | |(5061)
<------------------ (5061) |
|2024-01-31 14:17:18.298630| | |
ACK | |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5061) |
|2024-01-31 14:17:20.281602| | |
408 Request Timeout |SIP Status 408 Request Timeout
| | | |(5061)
<------------------ (5061) |
|2024-01-31 14:17:20.283433| | |
ACK | |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5061) |
|2024-01-31 14:17:20.307343| 408 Request Timeout |
| |SIP Status 408 Request Timeout
| |(47276) <------------------ (5061) | |
|
|2024-01-31 14:17:20.309097| ACK | |
| |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2951
| |(47276) ------------------> (5061) | |
|
Node 2:
|Time | 10.64.0.1 | 10.64.0.2
|
| | | 10.0.2.1 | |
10.0.2.128 |
|2024-01-31 14:17:07.869305| INVITE SDP (g711A g7 |
| |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061>
Call-ID:2102072978-5060-296@BA.A.B.BCI CSeq:2951
| |(54454) ------------------> (5061) | |
|
|2024-01-31 14:17:08.036009| 100 trying -- your c |
| |SIP Status 100 trying -- your call is
important to us
| |(5061) <------------------ (5061) | |
|
|2024-01-31 14:17:08.050848| | |
INVITE SDP (g711A g7 |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061>
CSeq:2951
| | | |(5061)
------------------> (5060) |
|2024-01-31 14:17:08.054357| | 100 Trying|
| |SIP Status 100 Trying
| | |(5061)
<-------------------------------------- (5060) |
|2024-01-31 14:17:08.075422| | 180 Ringing
| |SIP Status 180 Ringing
| | |(5061)
<-------------------------------------- (5060) |
|2024-01-31 14:17:08.083887| 180 Ringing |
| |SIP Status 180 Ringing
| |(5061) <------------------ (5061) | |
|
|2024-01-31 14:17:18.100359| INVITE SDP (g711A g7 |
| |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061>
Call-ID:2102072978-5060-296@BA.A.B.BCI CSeq:2951
| |(54454) ------------------> (5061) | |
|
|2024-01-31 14:17:18.258947| 100 trying -- your c |
| |SIP Status 100 trying -- your call is
important to us
| |(5061) <------------------ (5061) | |
|
|2024-01-31 14:17:18.273819| | |
INVITE SDP (g711A g7 |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061>
CSeq:2951
| | | |(5061)
------------------> (5060) |
|2024-01-31 14:17:18.274460| CANCEL | |
| |SIP Request CANCEL CSeq:2951
| |(54454) ------------------> (5061) | |
|
|2024-01-31 14:17:18.274550| | |
CANCEL | |SIP CANCEL From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061>
CSeq:2951
| | | |(5061)
------------------> (5060) |
|2024-01-31 14:17:18.274615| 200 canceling |
| |SIP Status 200 canceling
| |(5061) <------------------ (5061) | |
|
|2024-01-31 14:17:18.277438| | 200 OK |
| |SIP Status 200 OK
| | |(5061)
<-------------------------------------- (5060) |
|2024-01-31 14:17:18.279335| | 487 Request
Terminated | |SIP Status 487 Request Terminated
| | |(5061)
<-------------------------------------- (5060) |
|2024-01-31 14:17:18.280785| | |
ACK | |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061>
CSeq:2951
| | | |(5061)
------------------> (5060) |
|2024-01-31 14:17:18.296312| 487 Request Terminat |
| |SIP Status 487 Request Terminated
| |(5061) <------------------ (5061) | |
|
|2024-01-31 14:17:18.298900| ACK | |
| |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061>
CSeq:2951
| |(54454) ------------------> (5061) | |
|
|2024-01-31 14:17:20.280965| 408 Request Timeout |
| |SIP Status 408 Request Timeout
| |(5061) <------------------ (5061) | |
|
|2024-01-31 14:17:20.283730| ACK | |
| |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061>
CSeq:2951
| |(54454) ------------------> (5061) | |
|
At the moment, I'm using Kamailio 5.5.4, but I also did a short try with a
newer version (I guess it was 5.7.4). Both versions showed the same issue.
Best regards
Mathias
Show replies by date