JSLEE Discussions
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
SIP Scenario Simulator - PRACK in a new Client Transaction does not acknowledge 183
Forum Index » Rhino SLEE Discussions
Author Message
cristian.iordache


Joined: 24/11/2010 03:54:56
Messages: 4
Offline

Hello,

Would appreciate your help on the matter.

Scenario:
A---INVITE--->B
A<---183 (Require 100rel)---B
A---PRACK->B

A set on port 5060
B set on port 5070

Simulator log at endpoint B:

2018-04-23 22:40:47,859 [main] INFO simulator.main - Starting to read commands from stdin stream...
2018-04-23 22:41:51,914 [Rhino-MO/pool/2] DEBUG simulator.endpoint - Remote address "10.0.2.15:5060" matched remote endpoint "A".
2018-04-23 22:41:51,914 [Rhino-MO/pool/2] DEBUG simulator.endpoint - Sim<-PA: New dialog (SipDialog [dialogID=SipDialogID [callID=QvpD7jD1uyz6U4lsPt6zMw, localTag=null, remoteTag=3bJQ8w, localEndpoint=HostPortAddress [host=/10.0.2.15, port=5060], remoteEndpoint=HostPortAddress [host=/10.0.2.15, port=5060]], dialogState=ACTIVE_HALF, highestSentID=0, localTag=null, remoteTag=3bJQ8w, transactionCount=0])

2018-04-23 22:41:51,968 [Rhino-MO/pool/2] DEBUG simulator.fullmessage - Recv <--A: INVITE - Full message: {
Request-URI {
uri "sip:bbb@domain.com",
uri-parameters {
{
pname "user",
pvalue "phone"
}
}
},
headers {
Call-ID "QvpD7jD1uyz6U4lsPt6zMw",
CSeq {
seq-id 1,
method "INVITE"
},
From {
address {
URI {
uri "sip:aaa@domain.com",
uri-parameters {
{
pname "user",
pvalue "phone"
}
}
}
},
tag "3bJQ8w"
},
To {
address {
URI {
uri "sip:bbb@domain.com",
uri-parameters {
{
pname "user",
pvalue "phone"
}
}
}
}
},
Via {
via {
address "10.0.2.15",
transport "UDP",
branch "z9hG4bK8586.27ba9d3756f4ce89c38fb85d7a03f750.0"
},
}

018-04-23 22:41:51,989 [sim-workers-thread-1] DEBUG simulator.session - [B:s1] Initializing incoming dialog SipDialog [dialogID=SipDialogID [callID=QvpD7jD1uyz6U4lsPt6zMw, localTag=null, remoteTag=3bJQ8w, localEndpoint=HostPortAddress [host=/10.0.2.15, port=5060], remoteEndpoint=HostPortAddress [host=/10.0.2.15, port=5060]], dialogState=ACTIVE_HALF, highestSentID=0, localTag=null, remoteTag=3bJQ8w, transactionCount=1]

2018-04-23 22:41:52,318 [sim-workers-thread-3] DEBUG simulator.fullmessage - Send--> A: 183 SessionProgress - Full message: {
headers {
Call-ID "QvpD7jD1uyz6U4lsPt6zMw",

CSeq {
seq-id 1,
method "INVITE"
},
From {
address {
URI {
uri "sip:aaa@domain.com",
uri-parameters {
{
pname "user",
pvalue "phone"
}
}
}
},
tag "3bJQ8w"
},

Require {
option-tag {
"100rel"
}
},
RSeq 20,
To {
address {
URI {
uri "sip:bbb@domain.com",
uri-parameters {
{
pname "user",
pvalue "phone"
}
}
}
},
tag "K_Maig"
},
Via {
via {
address "10.0.2.15",
transport "UDP",
branch "z9hG4bK8586.27ba9d3756f4ce89c38fb85d7a03f750.0"
}
}
}
}


2018-04-23 22:41:52,341 [Rhino-MO/pool/1] DEBUG simulator.endpoint - Remote address "10.0.2.15:5060" matched remote endpoint "A".
2018-04-23 22:41:52,341 [Rhino-MO/pool/1] DEBUG simulator.endpoint - Sim<-PA: New dialog (SipDialog [dialogID=SipDialogID [callID=QvpD7jD1uyz6U4lsPt6zMw, localTag=K_Maig, remoteTag=3bJQ8w, localEndpoint=HostPortAddress [host=/10.0.2.15, port=5070], remoteEndpoint=HostPortAddress [host=/10.0.2.15, port=5060]], dialogState=ACTIVE_WHOLE, highestSentID=0, localTag=K_Maig, remoteTag=3bJQ8w, transactionCount=0])
2018-04-23 22:41:52,341 [Rhino-MO/pool/1] DEBUG simulator.session - [B:s2] Changed behaviour to Unclassified incoming session behaviour
2018-04-23 22:41:52,341 [Rhino-MO/pool/1] DEBUG simulator.endpoint - Registering dialog: B:d3 on B:s2
2018-04-23 22:41:52,352 [Rhino-MO/pool/1] DEBUG simulator.fullmessage - Recv <--A: PRACK - Full message: {
Request-URI {
uri "sip:contact@domain.com"
},
headers {
Call-ID "QvpD7jD1uyz6U4lsPt6zMw",
Content-Length 0,
CSeq {
seq-id 2,
method "PRACK"
},
From {
address {
URI {
uri "sip:aaa@domain.com",
uri-parameters {
{
pname "user",
pvalue "phone"
}
}
}
},
tag "3bJQ8w"
},


RAck {
response-num 20,
cseq-num 1,
method "INVITE"
},

To {
address {
URI {
uri "sip:bbb@domain.com",
uri-parameters {
{
pname "user",
pvalue "phone"
}
}
}
},
tag "K_Maig"
},
Via {
via {
address "10.0.2.15",
transport "UDP",
branch "z9hG4bK5586.fec1d2b5f05f77c67a3a6ba9e9a027a2.0"
},
},
}
}
2018-04-23 22:41:52,355 [Rhino-MO/pool/1] DEBUG simulator.session - [B:s2] Enqueued session letter: ReceiveNetworkMessagesLetter{dialog=B:d3, messages=[PRACK], isNewDialog=true}
2018-04-23 22:41:52,355 [sim-workers-thread-4] DEBUG simulator.session - [B:s2] Delivering session letter in Unclassified incoming session behaviour: ReceiveNetworkMessagesLetter{dialog=B:d3, messages=[PRACK], isNewDialog=true}
2018-04-23 22:41:52,355 [sim-workers-thread-4] DEBUG simulator.session - [B:s2] Received initial letter. Classifying session type before delivering letter...
2018-04-23 22:41:52,355 [sim-workers-thread-4] DEBUG simulator.session - [B:s2] Incoming dialog matches 1 types of correlation dialog.
2018-04-23 22:41:52,356 [sim-workers-thread-4] DEBUG simulator.session - [B:s2] Delivering initial letter to new behaviour 'Preliminary receiving session behaviour'
2018-04-23 22:41:52,356 [sim-workers-thread-4] DEBUG simulator.session - [B:s2] Changed behaviour to Preliminary receiving session behaviour
2018-04-23 22:41:52,356 [sim-workers-thread-4] DEBUG simulator.session - [B:s2] Received letter: ReceiveNetworkMessagesLetter{dialog=B:d3, messages=[PRACK], isNewDialog=true}
2018-04-23 22:41:52,358 [sim-workers-thread-1] DEBUG simulator.session - [B:s1] Delivering session letter in Primary session behaviour: RequestMergeLetter
2018-04-23 22:41:52,358 [sim-workers-thread-1] DEBUG simulator.session - [B:s1] Received letter: RequestMergeLetter
2018-04-23 22:41:52,358 [sim-workers-thread-1] DEBUG simulator.scenario-instance - [B:s1:i1:NewScenario3] Accepting merge request for dialog 'A-B-PRACK'
2018-04-23 22:41:52,359 [sim-workers-thread-2] DEBUG simulator.session - [B:s1] Receiving and filtering on messages for dialog SipDialog [dialogID=SipDialogID [callID=QvpD7jD1uyz6U4lsPt6zMw, localTag=K_Maig, remoteTag=3bJQ8w, localEndpoint=HostPortAddress [host=/10.0.2.15, port=5070], remoteEndpoint=HostPortAddress [host=/10.0.2.15, port=5060]], dialogState=ACTIVE_WHOLE, highestSentID=0, localTag=K_Maig, remoteTag=3bJQ8w, transactionCount=1]


Use case requires that PRACK is sent by A and received by B with a different top most Via header branch than the one in INVITE and does not matches INVITE server transaction.
User case also requires that Request URI in the PRACK is different than the one in INVITE.
In order to match the scenario the INVITE and 183 are exchanged on dialog A-B whilst PRACK and 200 OK PRACK are exchanged in a new dialog between a and B: A-B-PRACK.

Encounters issue is that the PRACK does not stop re transmission of 183.

Any idea how to accommodate this use case?

Thanks in advance,
Cristian

This message was edited 1 time. Last update was at 24/04/2018 08:16:00

jackson


Joined: 22/11/2012 11:51:40
Messages: 2
Offline

Hi Christian

Not 100% sure what you are trying to achieve/test but PRACKs must be on the same dialog as the response that they are for (as per section 3 of RFC3262)

Retransmissions of the reliable provisional response cease when a
matching PRACK is received by the UA core. PRACK is like any other
request within a dialog, and the UAS core processes it according to
the procedures of Sections 8.2 and 12.2.2 of RFC 3261. A matching
PRACK is defined as one within the same dialog as the response, and
whose method, CSeq-num, and response-num in the RAck header field
match, respectively, the method from the CSeq, the sequence number
from the CSeq, and the sequence number from the RSeq of the reliable
provisional response.


So your PRACK should be on your A-B dialog then it will stop the 183 re transmission.

Cheers Jackson
cristian.iordache


Joined: 24/11/2010 03:54:56
Messages: 4
Offline

Hi Jackson,

Problem was that the top-most Route header in the INVITE was different than the top-most Route header in PRACK and that determined the simulator to see PRACK coming on a new dialog than INVITE even if Call-Id, From tag and To tag are the same
- localEndpoint=HostPortAddress [host=/10.0.2.15, port=5060] for INVITE
- localEndpoint=HostPortAddress [host=/10.0.2.15, port=5070] for PRACK

Once I corrected Route in PRACK the issue was solved.

Thanks for the help,
Cristian
cristian.iordache


Joined: 24/11/2010 03:54:56
Messages: 4
Offline

Hello again,

In the case where top-most route header in the PRACK is different than the one in the INVITE then scenario is not matched.
The simulator creates a new dialog to handle the PRACK request - the only way around this is to define a new dialog between the same roles that would transport the PRACK.
But in this case the 183 is not acknowledged anymore as PRACK is seen by simulator different dialog, even if Call-Id, From and To tag are the same.

Is there any way to handle this?

Thanks,
Cristian

This message was edited 1 time. Last update was at 29/04/2018 06:45:24

jackson


Joined: 22/11/2012 11:51:40
Messages: 2
Offline

Is this not the same issue as you where having before?
 
Forum Index » Rhino SLEE Discussions
Go to:   
Powered by JForum 2.1.8 © JForum Team