Hi Pavel,

Thanks, yes I did go through that post and various other posts
describing the challenges of running UAC & UAS for called party..
As I mentioned, my plan for the called user is to keep different
scenarios for register and process invites.

I am struggling with the setup to continue to run called user to
continuously process invites. Should I be just using labels to
continue the loop in the "process invites" scenario ?

//sshark

On Sat, Oct 3, 2020 at 6:19 PM Šindelka Pavel <sinde...@ttc.cz> wrote:
>
> Hi sshark,
>
> could you please read 
> https://sourceforge.net/p/sipp/mailman/message/34707334/ first if you haven't 
> yet?
>
> I think I've put pretty much everything in there on how to create 
> "amphibious" scenarios behaving as both UAC and UAS, which is what you need 
> in order to create a scenario which will register and keep updating the 
> registration (as a UAC) and answer incoming calls (as a UAS) while it stays 
> bound to the same local UDP socket. The need to stay bound to the same socket 
> explains why I deem all the timing to be done using SIPp itself to be a 
> better way than using bash scripts to spawn execution of the scenarios. It's 
> true, however, that on the calling side you could spawn a registration, 
> outgoing call, and unregistration as three separate scenarios binding to the 
> same local port by shell script, but then you'd have to use one socket per 
> user.
>
> I didn't detail there the reasons why a Call-ID of a REGISTER must be 
> different from the one of the INVITE, but normal SIP stacks should ignore or 
> reject an INVITE with the same Call-ID like one in a previously received 
> REGISTER, at least if it came soon enough after that REGISTER.
>
> So as you don't insist on the unregistrations at the called side (from the 
> point of view of traffic volume, registration updates will generate 1/2 of 
> the traffic volume as compared to un-registrations and re-registrations with 
> the same periodicity), the A and B scenarios (or rather scenario pairs) can 
> be completely independent. Plus in the wild, an active un-registration is a 
> rare beast.
>
> There's just one point to the periodicity of the registration updates, some 
> registrars/SBCs have not only maximum registration time but also a minimum 
> one, and if you attempt to register for a shorter time, they respond with 
> "423 interval too brief", so even if you'll be actually updating the 
> registration every minute, you have to indicate an Expires value which will 
> satisfy the SBC and/or registrar.
>
> So in my approach, the B scenario would optionally accept and respond INVITEs 
> (and possibly OPTIONS depending on the behaiour of the system being tested) 
> by a corresponding branch, and mandatorily accept commands from the timer 
> instance and spawn another branch which would periodically register. 
> Eventually, that branch could accept a termination command from the timer 
> instance if you want the scenario group to terminate autonomously after a 
> predefined number of cycles or amount of time (I've never tried the -m 
> command line option with a UAS scenario, maybe it works too).
>
> The A scenario would accept trigger commands from its own timer scenario, 
> where a single call in the timer scenario would use two distinct Call-IDs in 
> the commands it would send to the executive scenario a few seconds apart: the 
> first one would be made up and would trigger the registration, the second one 
> would be the native one of the timer scenario and would trigger the outgoing 
> call. The random duration of the outgoing call would be determined by the 
> executive scenario, which would send a command to the timer one as a 
> notification that the call has ended; in response to that, the timer would 
> send back a command with the made-up call ID to trigger the unregistration. 
> This way of synchronizing two threads within the same scenario is the 
> simplest one I could find throughout the years.
>
> The overlapping would be provided by the -l 2 command line option as I've 
> suggested earlier (third call cannot start until the first one ends).
>
> P.
>
> Dne 03.10.2020 v 6:11 sshark wsk napsal(a):
>
> Thanks for the email, The main goal for me is to keep some constant
> traffic on the SIP servers. I thought of having
> registration/deregistration flows as they do invoke different
> functions/procedures within the SIP server. If it introduces too much
> complexity, then I am happy with doing re-registration rather than
> de-register/register again...
>
> How can I approach in doing this, can sipp orchestrate this or better
> use shell script to do a loop and use sipp ?
>
> Thanks for your help..
>
> On Sat, Oct 3, 2020 at 4:07 AM Šindelka Pavel <sinde...@ttc.cz> wrote:
>
> Okay, the diagram shows clearly that the calls can and should overlap.
>
> Is it an absolute must that the called side was de-registering and
> re-registering again for every call, or may it register in the beginning
> and keep renewing the registration periodically, and just accept
> incoming calls? If the unregistration of the called side is not
> mandatory, this will remove the need for synchronization between the A
> side script and the B side script.
>
> P.
>
> Dne 30.09.2020 v 14:35 sshark wsk napsal(a):
>
> I have below setup available with me
> Shell Script1: Handles A party
> Scenario 1 - A user to register and send INVITE and handle subsequent
> messages (180, 200OK, ACK) and then deregister user
>
> Shell Script2: Handles B party
> Scenario 2 - B user to register
> Scenario 3 - B user to accept INVITE and handle appropriate messages
> (180, 200OK, ACK)
> Scenario 4 - B user to de-register
>
> Have drafted a sequence diagram on what I had in mind. I hope it
> explains what I have in mind..
>
>
>
> On Wed, Sep 30, 2020 at 2:37 AM Šindelka Pavel <sinde...@ttc.cz> wrote:
>
> Do you want a single scenario to act as both A and B subscribers or you plan 
> to use two scenarios? The thing is that if you want each user to unregister 
> after the call, you need to have some synchronization between the A and B 
> side even if each runs as a separate scenario on a different machine, 
> otherwise you'll find A knocking on a closed door at B sooner or later.
>
> You also state contradictory requirements - if you want at least one call "on 
> air" at any given instant of time, the calls must be overlapping, whereas 
> unregistering An,Bn after a call and then registering An+1,Bn+1 creates a gap 
> between the calls. So choose which one of these two requirements is more 
> important.
>
> My approach would be to use a timer scenario, sending sync messages to both 
> the A and B scenarios, with Call-IDs in the sync messages generated from 
> [call_number] so that the sync message triggering the REGISTER at A and the 
> one triggering the INVITE at A would be sent by the same call at the timer 
> scenario but seen as two independent calls at the A scenario. To choose the 
> right row in the csv file, I'd compute the row ID in the timing scenario and 
> deliver it from there as a value of some P-user-index header - this way, all 
> the calculations (call number modulo 5) would be done in the timer scenario 
> and the A and B scenarios would just use the value extracted from that header 
> in the synchronization messages. So you would not need to start sipp in 
> loops, you'd just specify the total number of calls and number of calls per 
> unit of time, and the modulo 5 would do the rest of the job.
>
> I remember I was not able to make the 3PCC extended work some years ago, so 
> you may have tough time making three scenarios (timer, A, B) work, but maybe 
> it's not an issue any more, or it even never was and it was just some mistake 
> I could not find in my setup.
>
> -l 2 option on the command line should make sure that not more than two 
> trigger calls will be active simultaneously, so the third call should not 
> start before the first one finishes.
>
> Pavel
>
> Dne 29.09.2020 v 14:07 sshark wsk napsal(a):
>
> Continuation to below thread, I have some additional questions
> https://sourceforge.net/p/sipp/mailman/message/35176307/
>
> I would like to know if anyone has some sample scenario files for
> 1. Have bunch of users for A (5) & B (5)
> 2. Register B1 party and listen for INVITEs
> 3. Register A1 party and setup call towards A party
> 4. Keep the call predefined period/can be random (~10s)
> 5. Terminate the call
> 6. De-register A1 & B1
> 7. Continue to the next set of users - A2/B2, A3/B3, A4/B4, A5/B5
> 8. Once list is exhausted, start from A1/B1
>
> I am able to create the scenario file (Register/call/answer), however
> would like to get some hints on how to do the below
> - How SIPp can be scheduled to run through a loop
> - Our goal is to have at least 1 call through the network at a given
> point of time to simulate background testing
>
> Thank You in advance for any inputs/feedback
>
>
> _______________________________________________
> Sipp-users mailing list
> Sipp-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sipp-users
>
> _______________________________________________
> Sipp-users mailing list
> Sipp-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sipp-users


_______________________________________________
Sipp-users mailing list
Sipp-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sipp-users

Reply via email to