<div dir="ltr">I wish I had seen these SIPp threads sooner: (a) (TCP is an issue for callees): <a href="https://www.mail-archive.com/sipp-users@lists.sourceforge.net/msg06118.html">https://www.mail-archive.com/sipp-users@lists.sourceforge.net/msg06118.html</a> and (b) <a href="https://sourceforge.net/p/sipp/mailman/sipp-users/thread/CAH1RVig_qj5OSnaKfRkAJ0pY8bOw8idFi3wo9DUZ2H6OAC0NMQ@mail.gmail.com/">https://sourceforge.net/p/sipp/mailman/sipp-users/thread/CAH1RVig_qj5OSnaKfRkAJ0pY8bOw8idFi3wo9DUZ2H6OAC0NMQ@mail.gmail.com/</a><div><br></div><div>I have whined plenty about SIPp here so it is only fair I mention this: I want to re-iterate that I find SIPp very useful and have spent a considerable amount of time trying to get it to work, but it is sorely lacking in a number of ways that are quite important to me and every attempt and mail from me on these threads is merely to make sure I have left no stone unturned. I have already a lot of visibility into my application's capability thanks solely to SIPp. That visibility was possible due to SIPp being run as is in this gist: <a href="https://gist.github.com/ticklingcontest/4762a57457b73db1a170">https://gist.github.com/ticklingcontest/4762a57457b73db1a170</a> (ONE instance of SIPp for each caller, callee, resulting in port madness at load testing machine).</div><div><br></div><div>Rob Day, the person who came up with SIPp, says clearly that SIPp kinda doesn't work very well for TCP. Especially when we have to match a callee's REGISTER port and the subsequent CALLEE sipp instance's port (that's the only way we can be assured that the INVITE is received). Note that we need two instances of sipp for the callee as each instance of SIPp can only handle an outbound or inbound dialog. Even then a whole manner of script-fu-jujitsu is required, and is not straight forward.</div><div><br></div><div>Workarounds:</div><div>===========</div><div>One way around this is to use 3 sipp instances per real-world call (i.e., not SIPp call, which is something I cannot relate to at all), where the (phone) caller ('s voip program) registers (to a SIP PBX) and calls (i.e., INVITEs the callee whish is a SIP endpoint attached to the SIP PBX) in one sipp instance, but the callee (SIP) registers separately with one sipp instance, and then accepts the call (recv request="INVITE" />) in another sipp instance, but with the same port (-p parameter) as the callee's registration. This only works when only one caller/callee is involved, owing to the port business I mentioned earlier. This what I had managed earlier (very similar to the gist I posted above, but since caller and registration can be merged, that becomes ONE sipp instance per caller, and not two instances per caller as the gist) , but it won't work beyond a point (of simultaneous calls in one load testing desktop) as the ports get clogged up (my OP).</div><div><br></div><div>For this SIPp + TCP related issue and out-of-call scenario + port madness, there's a patch that is available (see <a href="http://permalink.gmane.org/gmane.comp.telephony.sipp.user/5769">http://permalink.gmane.org/gmane.comp.telephony.sipp.user/5769</a>), but I have not tried it.</div><div><br></div><div>Last, but not the least, here's the error I received when I tried to fix these issues using a OOCSF:</div><div><br></div><div> Automatic calls (created by -aa, -oocsn or -oocsf) cannot use input files!.<br></div><div><br></div><div>This information would have saved me so much heartache. I wish SIPp had mentioned these issues surrounding SIP over TCP testing for caller->callee REGISTER/INVITE scenarios front and center in their documentation. </div><div><br></div><div>But, I am just as perplexed that this business of actually making a voice/video/message call (not SIPp call) using an intermediate controller like a PBX (and load testing _that_) is not what SIPp is about.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 21, 2016 at 9:46 AM, George Joseph <span dir="ltr"><<a href="mailto:george.joseph@fairview5.com" target="_blank">george.joseph@fairview5.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:'arial narrow',sans-serif"><br></div><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Sun, Mar 20, 2016 at 8:39 PM, Tickling Contest <span dir="ltr"><<a href="mailto:tickling.contest@gmail.com" target="_blank">tickling.contest@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Thanks George, I think I am very, very, very confused with sipp and how it handles the coordination (I thought I knew this well, but the pause and ti. There _HAS_ to be a simpler way. It is just way. Too. Complex. I just surprised that there isn't a better tool for something that has a load of use. Maybe I should move to Asterisk based testing. Known beast...</div></blockquote><div><br></div></span><div><div class="gmail_default" style="font-family:'arial narrow',sans-serif">As I said, this is what I do for more complex stuff. You have more control.</div><br></div><div><div class="gmail_default" style="font-family:'arial narrow',sans-serif">Having said that, I have used sipp to generate thousands of simultaneous TCP non-audio calls (REGISTER, OPTIONS, etc),</div></div><span class=""><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>I have already gotten it working for a single call; you will recall in my OP I wasn't able to push it beyond about a 100 calls concurrently, and that's when I decided to let sipp manage everything.</div></div></blockquote><div><br></div></span><div><div class="gmail_default" style="font-family:'arial narrow',sans-serif">Yeah, sorry. I forgot.</div></div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>The sipp software, I think is also quite buggy.</div><div><br></div><div>For example, I know that -p flag is supposed to take the port over which the peer registers. This port shows up when you do pjsip show endpoint <peerExtension>. I know this (i.e., -p param) works in my sipp because that's how I controlled each peer in my earlier sipp load test scenario.</div><div><br></div><div>Well, now, the local_port does not work when I pass it as a CSV file and modify the [local_port] to [field0] etc, and as a result, the calls are not going through.</div><div><br></div><div>They also don't have the updated documentation for release 3.5.1 which is what I am using. Sigh!</div></div></blockquote><div><br></div></span><div><div class="gmail_default" style="font-family:'arial narrow',sans-serif">Is it possible that 3.5.1 just has too many issues? Here's what I use...</div><div class="gmail_default"><font face="arial narrow, sans-serif">SIPp v3.4.1-TLS-PCAP-RTPSTREAM</font><br></div><br></div><div><div class="h5"><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Sun, Mar 20, 2016 at 9:12 PM, George Joseph <span dir="ltr"><<a href="mailto:george.joseph@fairview5.com" target="_blank">george.joseph@fairview5.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div><div dir="ltr"><div style="font-family:'arial narrow',sans-serif"><br></div><div class="gmail_quote"><div dir="ltr"><div style="font-family:'arial narrow',sans-serif">Oh, BTW...</div><div style="font-family:'arial narrow',sans-serif"><br></div><div style="font-family:'arial narrow',sans-serif">If sipp doesn't do it for you, there's another great tool you can use for load testing. It's called Asterisk. :)</div><div style="font-family:'arial narrow',sans-serif"><br></div><div style="font-family:'arial narrow',sans-serif">For more complex scenarios, what I've done in the past is set up 3 Asterisk instances, 1 as the call generator, 1 as the system under test, and 1 as the call receiver.</div><div style="font-family:'arial narrow',sans-serif"><br></div><div style="font-family:'arial narrow',sans-serif">On the generator instance, I have a script that keeps enough call files in /var/spool/asterisk/outgoing to simulate the number of calls I want. On the call receiver, I can set up the dialplan to do anything I want with the calls. Transfer, play something, echo, park. Whatever.</div><div style="font-family:'arial narrow',sans-serif"><br></div></div><div><div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Mar 20, 2016 at 6:37 PM, George Joseph <span dir="ltr"><<a href="mailto:george.joseph@fairview5.com" target="_blank">george.joseph@fairview5.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div style="font-family:'arial narrow',sans-serif"><br></div><div class="gmail_extra"><br><div class="gmail_quote"><span>On Sun, Mar 20, 2016 at 5:29 PM, Tickling Contest <span dir="ltr"><<a href="mailto:tickling.contest@gmail.com" target="_blank">tickling.contest@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">OK. I did that, but now, all I do is get into an infinite loop with the registrations at the callee. Here's the gist: <a href="https://gist.github.com/ticklingcontest/a0754549a88dc748f52d" target="_blank">https://gist.github.com/ticklingcontest/a0754549a88dc748f52d</a><div><br></div><div>Ideally, here's what I need:</div><div><br></div><div>callee registers, and accepts an infinite number of calls.</div><div>caller registers, and then sends INVITES an infinite number of times so as to keep the total number of calls per the (-l parameter).</div><div><br></div><div>It is not clear to me how I would loop at the callee scenario or caller scenario.</div></div></blockquote><div><br></div></span><div><div style="font-family:'arial narrow',sans-serif">You don't loop anything. sipp runs the scenarios itself repeatedly until -m calls have been processed.</div></div><div><br><div style="font-family:'arial narrow',sans-serif">I'd start without your script or the csv files and just get a simple 1 call scenario to work.</div><div style="font-family:'arial narrow',sans-serif"><br></div><div style="font-family:'arial narrow',sans-serif">If you want some good examples, look at the Asterisk testsuite tests/channels/pjsip/basic_calls scenarios.</div><div style="font-family:'arial narrow',sans-serif"><br></div><div style="font-family:'arial narrow',sans-serif">Here's a caller file I used often... <br></div><div><font face="arial narrow, sans-serif"><a href="https://gist.github.com/gtjoseph/ce5a719b11f307c7ec5e" target="_blank">https://gist.github.com/gtjoseph/ce5a719b11f307c7ec5e</a></font><br></div><div><font face="arial narrow, sans-serif"><br></font></div><div><font face="arial narrow, sans-serif">register</font></div><div><font face="arial narrow, sans-serif">pause 1 sec</font></div><div><font face="arial narrow, sans-serif">invite</font></div><div><font face="arial narrow, sans-serif">pause 1 sec</font></div><div><font face="arial narrow, sans-serif">bye</font></div><div><div><font face="arial narrow, sans-serif">pause 1 sec</font></div><div><font face="arial narrow, sans-serif">unregister</font></div></div><div><font face="arial narrow, sans-serif"><br></font></div><div><span style="font-family:'arial narrow',sans-serif">To simulate a call from a phone with extension/endpoint name 1100, run it like so...</span><br></div><div><span style="font-family:'arial narrow',sans-serif"># sipp -sf reg_and_call.xml -s 1100 -au 1100 -ap <password> -m 1 <server:ip></span><br></div><div><span style="font-family:'arial narrow',sans-serif"><br></span></div><div>If you want it to resister/call/unregister 100 times with 10 parallel calls over TCP, run </div><div style="font-family:'arial narrow',sans-serif"><br></div><div style="font-family:'arial narrow',sans-serif"><div style="font-family:arial,sans-serif"><span style="font-family:'arial narrow',sans-serif"># sipp -sf reg_and_call.xml -t tn -s 1100 -au 1100 -ap <password> -m 100 -l 10 <server_ip:port></span><br></div><div style="font-family:arial,sans-serif"><br></div><div style="font-family:arial,sans-serif">Once you get that working by itself to an existing extension, set up your callee the same way, then call it from a normal working extension and make sure it responds correctly.</div><div style="font-family:arial,sans-serif"><br></div><div style="font-family:arial,sans-serif">Then have your caller call the callee, first as a single call, then try multiple calls.</div><div style="font-family:arial,sans-serif"><br></div><div style="font-family:arial,sans-serif">Only when you have that working should you introduce your injection files.</div><div style="font-family:arial,sans-serif"><br></div></div></div><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>What is really confusing in the caller script apart from the real confusion I have with -m and -l parameters, is how the caller's INVITE goes out from the same port as the registered port especially when they are called as two separate processes. Does sipp write a dot file somewhere where it gets its information from?</div></div></blockquote><div><br></div></span><div><div style="font-family:'arial narrow',sans-serif">Nope.</div><br></div><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>BTW, In this model, I pass the CSV file that is pre-generated for the calls using a python script that looks like this:<br></div><div><br></div><div>SEQUENTIAL</div><div>callerID1;AsteriskIPAddress;[authentication username=silly password=sillier];calleeID1;callDuration1;</div><div>callerID2;AsteriskIPAddress;[authentication username=silly password=sillier];calleeID2;callDuration2;<br></div><div>...</div><div>callerIDn;AsteriskIPAddress;[authentication username=silly password=sillier];calleeIDn;callDurationn;<br></div><div>etc.</div><div><br></div><div><div>Again, any help is appreciated. I can see how this is turning into a sipp tutorial, so I understand if you have issues dealing with this here, but I can tell that SIPp help is very sparing online.</div></div><div><br></div><div>Thanks!</div></div></blockquote><div><br></div></span><div><div style="font-family:'arial narrow',sans-serif">I'll say again... If you want some good examples, look at the Asterisk testsuite tests/channels/pjsip/basic_calls scenarios. There are both inbound and outbound scenarios, authed and unauthed.</div><div style="font-family:'arial narrow',sans-serif"></div></div><div><div><div><br></div></div></div></div></div></div></blockquote></div></div></div></div></div></div></div></div>
<br></div></div><span>_______________________________________________<br>
asterisk-app-dev mailing list<br>
<a href="mailto:asterisk-app-dev@lists.digium.com" target="_blank">asterisk-app-dev@lists.digium.com</a><br>
<a href="http://lists.digium.com/cgi-bin/mailman/listinfo/asterisk-app-dev" rel="noreferrer" target="_blank">http://lists.digium.com/cgi-bin/mailman/listinfo/asterisk-app-dev</a><br>
<br></span></blockquote></div><br></div>
<br>_______________________________________________<br>
asterisk-app-dev mailing list<br>
<a href="mailto:asterisk-app-dev@lists.digium.com" target="_blank">asterisk-app-dev@lists.digium.com</a><br>
<a href="http://lists.digium.com/cgi-bin/mailman/listinfo/asterisk-app-dev" rel="noreferrer" target="_blank">http://lists.digium.com/cgi-bin/mailman/listinfo/asterisk-app-dev</a><br>
<br></blockquote></div></div></div><br></div></div>
<br>_______________________________________________<br>
asterisk-app-dev mailing list<br>
<a href="mailto:asterisk-app-dev@lists.digium.com">asterisk-app-dev@lists.digium.com</a><br>
<a href="http://lists.digium.com/cgi-bin/mailman/listinfo/asterisk-app-dev" rel="noreferrer" target="_blank">http://lists.digium.com/cgi-bin/mailman/listinfo/asterisk-app-dev</a><br>
<br></blockquote></div><br></div>