Introduction

One of easySIPp's most powerful features is its Click-to-Create XML scenario builder. Instead of manually writing complex SIPp XML files, you can create sophisticated call flows (including PRACK and ReINVITE call flows) through an intuitive point-and-click interface. This tutorial will show you how to use the SIPp XML Scenario Generator to build custom scenarios without writing a single line of XML.

Accessing the XML Scenario Generator

You can access the visual XML builder in two ways:

Method 1: From easySIPp app web-interface

Within easySIPp:

Method 2: Standalone Web Tool

Visit: https://kiran-daware.github.io/sipp-xml/create.html

This standalone tool runs entirely in your browser and allows you to:

Understanding the Interface

The XML Scenario Generator has a simple, intuitive layout:

Top Controls

Action Buttons

The interface guides you through the scenario creation process in real-time. By enabling only valid action buttons, it acts as a built-in safeguard against malformed logic. For example, once you send an INVITE, the UI contextually reveals the next logical steps, such as 180 Ringing or 183 Session Progress. It’s designed to be intuitive—once you start building, the flow feels natural.

Automatic handling of protocol complexity - CSeq, RSeq etc

Perhaps the most powerful feature is the automatic handling of protocol complexity. You no longer need to manually manage CSeq and RSeq sequence numbers or swap To and From headers during UAC role changes. The scenario creator handles these variables in the background, ensuring your signaling remains RFC-compliant without the manual effort.

Preview Area

On the Right side of the buttons, you'll see a real-time preview of your xml as you build it. You can even edit in this area for some minor tweaks.

Click-to-Create SIPp XML Scenarios

Creating Your First UAC Scenario

Let's create a basic UAC (client) scenario that makes a call, stays connected for 30 seconds, then hangs up.

Step 1: Select UAC Mode

Click the "UAC" button at the top to create a client scenario.

Step 2: Click Start

Click the "Start" button to begin your scenario.

Step 3: Send INVITE

  1. Click "Send INVITE"
  2. Choose "invite with SDP" OR "without SDP"

What is SDP? The Session Description Protocol (SDP) is used to negotiate media capabilities between endpoints. It defines the specific audio/video codecs, IP addresses, and ports required to establish a media stream.

Step 4: Receive Provisional Responses

Click "Recv 180" to expect a "Ringing" response from the server. And for this example, lets click on "Non-Reliable".

Step 5: Receive 200 OK

Click "Recv 200OK (invite)" to expect the call to be answered.

Step 6: Send ACK

  1. Click "Send ACK without sdp"
  2. This acknowledges the 200 OK and establishes the call

Step 7: Add Pcap audio and Call Duration

  1. Click "Play Media" (inserts play_pcap_audio action in the xml)
  2. Modify the milliseconds value and click "Pause"

Step 8: Send BYE

  1. Click "Send BYE" to hang up the call.
  2. 200 OK for the BYE message is automatically added.

Step 9: Save Your Scenario

  1. Scroll to the bottom
  2. Enter a filename (e.g., uac_basic_30sec)
  3. Click "Save as a new xml" or "Download xml"

Congratulations! You've created your first SIPp scenario! 🎉

Creating a UAS Scenario

Now let's create a UAS (server) scenario that receives calls and answers them.

Step 1: Select UAS Mode

Click the "UAS" button at the top.

Step 2: Build the Flow

  1. Click "Start"
  2. Click "Recv INVITE" - Wait for incoming call
  3. Click "Send 100" - Send "Trying" response
  4. Click "Send 180" - Send "Ringing" response
    • Click "180 Not Reliable"
    • Click "180 without SDP"
  5. Click "Send 200OK (invite) with SDP" - Answer the call
  6. Click "Recv ACK" - Expect acknowledgment
  7. Click "Recv BYE" - Wait for caller to hang up
    • Flow automatically sends 200 OK

Step 3: Save

Name it uas_basic_answer and download.

Advanced Features

Reliable Provisional Responses (PRACK)

For carriers that require PRACK (reliable provisional responses):

UAC with PRACK:

  1. Send INVITE with SDP
  2. Click "Recv 183" → Select "Reliable"
  3. Click "Send PRACK without sdp"
  4. Click "Recv 200OK (prack)"
  5. Continue with normal flow (Recv 200OK for INVITE, etc.)

UAS with PRACK:

  1. Recv INVITE
  2. Send 100
  3. Click "Send 183" → Select "Reliable" and "with sdp"
  4. Click "Recv PRACK"
  5. Click "Send 200OK (prack) without SDP"
  6. Continue with normal flow

Call Hold and Resume (Re-INVITE/UPDATE)

To simulate putting a call on hold:

UAC Puts Call on Hold:

  1. After call is established (after ACK)
  2. Add pause (call active time)
  3. Click "Send Re-INVITE" or "Send UPDATE"
  4. Select "with SDP" (modify SDP in the xml preview pane to add a=sendonly manually)
  5. Click "Recv 200OK"
  6. Add another pause (hold duration)
  7. Send another Re-INVITE/UPDATE to resume

UAS Receives Hold Request:

  1. After call established
  2. Click "Recv INVITE" or "Recv UPDATE"
  3. Click "Send 200OK with SDP"(modify SDP in the xml preview pane to add a=sendonly manually)
  4. If INVITE: Click "Recv ACK"

Media Handling

The "Play Media" button inserts play-pcap-audio action in the xml, you may modify the pcap file name if you have uploaded any (in the XML Management tab)

Best Practices

Scenario Naming Convention

# Good naming examples:
uac_basic_30sec.xml          # Basic UAC, 30 second call
uas_prack_hold.xml           # UAS with PRACK and hold
uac_failover_486.xml         # UAC handling 486 Busy
uas_early_media.xml          # UAS with early media (183)

SDP Quick Reference

Tips for Complex Scenarios

Next Steps

Now that you can create custom XML scenarios, explore:

Summary

In this tutorial, you learned:

You can now create sophisticated SIPp scenarios without writing complex XML! The Click-to-Create builder handles all the complexity while you focus on the call flow logic.

← Previous
Getting Started
Next Tutorial →
Advanced SIP Load Testing