I have a fairly complicated set of 3PCC Extended scenario files. I have a master SIPp instance that talks to a Network SIP Server (whose only job is to determine which of a number of Premise SIP Servers to send a call to) and receives a "302 Moved Permanently". The master scenario then determines the appropriate Premise SIP Server endpoint address from the contact header in the 302 message and sends the information to the appropriate slave SIPp instance (Using SendCmd), each of which is connected to a different Premise Sip Server. When the master sends a message to the slave, it is then finished its work and can exit, but if it does exit, the slaves die. To remedy this I tried placing a recvCmd in the master and added a sendCmd in the slave that will signal the master when the call has completed.
The problem is, that If we put a SendCmd in the master followed by a
recvCmd so we will be notified when the slave's call has completed, the
call rate is very low (Essentially, 1 call goes to each slave and no
more calls are generated until those calls have completed). By removing
the recvCmd from the master and replacing it with a pause of 60 seconds
(Call duration is a little less than 60 seconds), we see the calls
processed at the rate we expect (10 calls / sec default or whatever we
put in -r and -rp). A pause of only 1 second causes the same problem as
no pause.
Inserting a pause of appropriate duration does make the problem go away,
but the problem with this is that we don't know how long the calls will
be processed by the slave. When no agents are available the calls are
queued and could be in the queue for a while. This makes it difficult to
predict how long to make the pause , and we don't want to put in
something ridiculously large. The question is - why does adding a
recvCmd in the master and a sendCmd in the slave cause this behaviour?
I have attached the shell scripts, the 3PCC Extended config files and
the scenario files.
They are called in the following order:
callGeneratorToPremiseSIPServer-1.sh
callGeneratorToPremiseSIPServer-2.sh
callGeneratorToNetworkSIPServer.sh
thanks for any help you can give,
Michael Lynch
-------------------------------------------------------------------------------------------------------------------
CONFIDENTIALITY NOTICE: This e-mail and any files attached may contain
confidential and proprietary information of Alcatel-Lucent and/or its
affiliated entities. Access by the intended recipient only is authorized. Any
liability arising from any party acting, or refraining from acting, on any
information contained in this e-mail is hereby excluded. If you are not the
intended recipient, please notify the sender immediately, destroy the original
transmission and its attachments and do not disclose the contents to any other
person, use it for any purpose, or store or copy the information in any medium.
Copyright in this e-mail and any attachments belongs to Alcatel-Lucent and/or
its affiliated entities.
callGeneratorToPremiseSIPServer-2.sh
Description: callGeneratorToPremiseSIPServer-2.sh
slave.cfg
Description: slave.cfg
slave-1.cfg
Description: slave-1.cfg
slave-2.cfg
Description: slave-2.cfg
callGeneratorToNetworkSIPServer.sh
Description: callGeneratorToNetworkSIPServer.sh
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<scenario name="Initial call into Network SIP Server">
<send retrans="2000">
<![CDATA[
INVITE sip:[EMAIL PROTECTED]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:[EMAIL PROTECTED]:[local_port]>;tag=[call_number]
To: sut <sip:[EMAIL PROTECTED]:[remote_port]>
Call-ID: [call_id]
CSeq: 1 INVITE
Contact: sip:[EMAIL PROTECTED]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=SIPPLOADGENERATOR
c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio [auto_media_port] RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11,16
]]>
</send>
<nop>
<action>
<log message="[clock_tick] - Invite sent - waiting for response."/>
</action>
</nop>
<recv response="100" optional="true">
</recv>
<recv response="180" optional="true" retrans="1000">
</recv>
<recv response="302">
<action>
<ereg regexp=".*" search_in="hdr" header="Call-ID:" assign_to="1"/>
<ereg regexp=".*" search_in="hdr" header="Contact:" assign_to="6"/>
<ereg regexp="([0-9]{1,3}\.){3}([0-9]{1,3})(:{0,1})([0-9]{0,5})" search_in="hdr" header="Contact:" assign_to="7"/>
</action>
</recv>
<!-- Packet lost can be simulated in any send/recv message by -->
<!-- by adding the 'lost = "10"'. Value can be [1-100] percent. -->
<send>
<![CDATA[
ACK sip:[EMAIL PROTECTED]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:[EMAIL PROTECTED]:[local_port]>;tag=[call_number]
To: sut <sip:[EMAIL PROTECTED]:[remote_port]>[peer_tag_param]
Call-ID: [call_id]
CSeq: 1 ACK
Contact: sip:[EMAIL PROTECTED]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
</send>
<nop>
<action>
<log message="[$1]:[clock_tick] - Received the 302. Transferring to SIP scenario"/>
</action>
</nop>
<nop>
<action>
<strcmp assign_to="8" variable="7" value="192.168.51.81"/>
<strcmp assign_to="9" variable="7" value="192.168.51.82"/>
<log message="[$1]:[clock_tick] - Parse for which SIP Server returned [$7]"/>
<log message="[$1]:[clock_tick] - STRCMP for 81 returned [$8]"/>
<log message="[$1]:[clock_tick] - STRCMP for 82 returned [$9]"/>
<log message="[$1]:[clock_tick] - Contact: [$6]"/>
<test assign_to="15" variable="8" compare="equal" value="0"/>
<test assign_to="16" variable="9" compare="equal" value="0"/>
</action>
</nop>
<nop next="12" test="16">
</nop>
<sendCmd dest="slave1">
<![CDATA[
Call-ID: [call_id]
From: m
[$6]
slave1
]]>
</sendCmd>
<nop>
<action>
<log message="[$1]:[clock_tick] - Call was sent to SIP Server 1... "/>
</action>
</nop>
<recvCmd src="slave1">
<action>
<log message="[$1]:[clock_tick] - Slave 1 Call Completed."/>
</action>
</recvCmd>
<nop next="13" test="15"/>
<label id="12"/>
<sendCmd dest="slave2">
<![CDATA[
Call-ID: [call_id]
From: m
[$6]
slave2
]]>
</sendCmd>
<nop>
<action>
<log message="[$1]:[clock_tick] - Call was sent to SIP Server 2... "/>
</action>
</nop>
<recvCmd src="slave2">
<action>
<log message="[$1]:[clock_tick] - Slave 2 Call Completed."/>
</action>
</recvCmd>
<label id="13"/>
<nop>
<action>
<log message="[$1]:[clock_tick] - Call Completed... "/>
</action>
</nop>
<pause milliseconds="60000"/>
<!-- definition of the response time repartition table (unit is ms) -->
<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
<!-- definition of the call length repartition table (unit is ms) -->
<CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</scenario>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<scenario name="Call to Premise SIP Server">
<recvCmd src="m">
<action>
<ereg regexp=".*" search_in="msg" assign_to="10"/>
<ereg regexp="slave." search_in="msg" assign_to="16"/>
<log message="[clock_tick] - Slave SIPP Id: [$16]."/>
<log message="[clock_tick] - Full incoming message: [$10]."/>
<ereg regexp="sip:([0-9]{1,5})@([0-9]{1,3}\.){3}([0-9]{1,3})(:{0,1})([0-9]{0,5})" search_in="msg" assign_to="6"/>
<log message="[clock_tick] - Regex for incoming: [$6]."/>
</action>
</recvCmd>
<send retrans="2000">
<![CDATA[
INVITE [$6] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:[EMAIL PROTECTED]:[local_port]>;tag=[call_number]
To: sut <[$6]>
Call-ID: [call_id]
CSeq: 1 INVITE
Contact: sip:[EMAIL PROTECTED]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=SIPPLOADGENERATOR
c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio [auto_media_port] RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11,16
]]>
</send>
<nop>
<action>
<log message="[clock_tick] - Invite sent - waiting for response."/>
</action>
</nop>
<recv response="100" optional="true">
</recv>
<recv response="180" optional="true">
</recv>
<!-- By adding rrs="true" (Record Route Sets), the route sets -->
<!-- are saved and used for following messages sent. Useful to test -->
<!-- against stateful SIP proxies/B2BUAs. -->
<recv response="200" rtd="true" crlf="true" timeout="10000">
<action>
<ereg regexp=".*" search_in="hdr" header="Call-ID:" assign_to="1"/>
</action>
</recv>
<!-- Packet lost can be simulated in any send/recv message by -->
<!-- by adding the 'lost = "10"'. Value can be [1-100] percent. -->
<send>
<![CDATA[
ACK sip:[EMAIL PROTECTED]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:[EMAIL PROTECTED]:[local_port]>;tag=[call_number]
To: sut <sip:[EMAIL PROTECTED]:[remote_port]>[peer_tag_param]
Call-ID: [call_id]
CSeq: 1 ACK
Contact: sip:[EMAIL PROTECTED]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
</send>
<!-- Play an out of band DTMF '1' -->
<nop>
<action>
<exec play_pcap_audio="pcap/dtmf_2833_1.pcap"/>
</action>
</nop>
<label id="1"/>
<nop>
<action>
<log message="[$1]:[clock_tick] - Hit Label 1"/>
</action>
</nop>
<recv request="INVITE" crlf="true" timeout="1800000" ontimeout="5">
<action>
<assignstr assign_to="2" value="" />
<ereg regexp="s=SIPPENDPOINT" search_in="msg" assign_to="2"/>
<ereg regexp=".*" search_in="msg" assign_to="3"/>
<log message="[$1]:[clock_tick] - Full Message [$3]"/>
<log message="[$1]:[clock_tick] - The search for 's=SIPPENDPOINT' returned [$2]"/>
</action>
</recv>
<send>
<![CDATA[
SIP/2.0 100 Trying
[last_Via:]
[last_From:]
[last_To:];tag=[call_number]
[last_Call-ID:]
[last_CSeq:]
Contact: <sip:[local_ip]:[local_port];transport=[transport]>
Content-Length: 0
]]>
</send>
<send retrans="2000">
<![CDATA[
SIP/2.0 200 OK
[last_Via:]
[last_From:]
[last_To:];tag=[call_number]
[last_Call-ID:]
[last_CSeq:]
Contact: <sip:[local_ip]:[local_port];transport=[transport]>
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=SIPPLOADGENERATOR
c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio [auto_media_port] RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11,16
]]>
</send>
<nop>
<action>
<strcmp assign_to="4" variable="2" value="s=SIPPENDPOINT"/>
<test assign_to="5" variable="4" compare="equal" value="-1" />
<log message="[$1]:[clock_tick] - STRCMP Result = [$4]"/>
</action>
</nop>
<recv request="ACK" rtd="true" crlf="true" next="1" test="5">
</recv>
<nop>
<action>
<log message="[$1]:[clock_tick] - Playing Sample Voice RTP Stream"/>
<exec play_pcap_audio="pcap/t30sec.pcap"/>
</action>
</nop>
<pause milliseconds="36000"/>
<!-- The 'crlf' option inserts a blank line in the statistics report. -->
<send retrans="2000">
<![CDATA[
BYE sip:[EMAIL PROTECTED]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:[EMAIL PROTECTED]:[local_port]>;tag=[call_number]
To: sut <sip:[EMAIL PROTECTED]:[remote_port]>[peer_tag_param]
Call-ID: [call_id]
CSeq: 2 BYE
Contact: sip:[EMAIL PROTECTED]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
</send>
<recv response="200" crlf="true" timeout="30000">
</recv>
<label id="5"/>
<pause milliseconds="1000" />
<sendCmd dest="m">
<![CDATA[
Call-ID: [call_id]
From: [$16]
Slave Call To Premise SIP Server Completed
]]>
</sendCmd>
<!-- definition of the response time repartition table (unit is ms) -->
<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
<!-- definition of the call length repartition table (unit is ms) -->
<CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</scenario>
callGeneratorToPremiseSIPServer-1.sh
Description: callGeneratorToPremiseSIPServer-1.sh
------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________ Sipp-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/sipp-users
