SIPp + CUCM 12.x/15.x: Powerful Load Testing for Cisco Call Manager
Introduction
Looking to load test Cisco Call Manager with basic or enhanced call scenarios? Recently, I decided to put CUCM 12.x/15.x through its paces using simple SIP calls. My setup included CUCM 12.x/15.x and SIPp 3.3.990 to see how well the system could handle the load.
Setup Overview
- CUCM Version: 12.x/15.x
- SIPp Version: 3.3.990
What is SIPp?
SIPp is a robust, open-source test tool and traffic generator for the SIP protocol. It includes several basic SipStone user agent scenarios (UAC and UAS) and can handle complex call flows described in custom XML scenario files. SIPp dynamically displays statistics about running tests, such as call rate, round trip delay, and message statistics, and can dump periodic CSV statistics. It supports TCP and UDP over multiple sockets, multiplexed with retransmission management, and dynamically adjustable call rates.
Installing SIPp
To use SIPp on Linux, you’ll need to compile it from source code. Here’s a step-by-step guide:
Pre-requisites:
- C++ Compiler
- curses or ncurses library
- OpenSSL >= 0.9.8 (for TLS support)
- libpcap and libnet (for pcap play support)
- lksctp-tools (for SCTP support)
- Gnu Scientific Libraries (for distributed pauses)
Compilation Options:
- Without TLS, SCTP, or PCAP support (recommended for basic use):
tar -xvzf sipp-xxx.tar.gz cd sipp ./configure make
- With TLS support:
tar -xvzf sipp-xxx.tar.gz cd sipp ./configure --with-openssl make
- With PCAP play support:
tar -xvzf sipp-xxx.tar.gz cd sipp ./configure --with-pcap make
- With SCTP support:
tar -xvzf sipp-xxx.tar.gz cd sipp ./configure --with-sctp make
- Combining multiple options:
tar -xvzf sipp-xxx.tar.gz cd sipp ./configure --with-sctp --with-pcap --with-openssl make
Once compiled, SIPp is ready to use. You can generate SIP calls to a remote system from the command line.
Running SIPp
To demonstrate SIPp’s capabilities, you can start two instances of SIPp on the same host:
- Server (uas) scenario:
./sipp -sn uas
- Client (uac) scenario:
./sipp -sn uac 127.0.0.1
By default, SIPp generates 10 calls per second. To change this, use the -r
parameter:
./sipp -sn uac 127.0.0.1 -r 50
This command generates 50 calls per second.
Configuring CUCM
Registering a Phone and Setting Up Trunks
- Register a phone and enable auto-answer.
- Configure “Multiple Call/Call Waiting Settings” for the extension.
- Create two SIP trunks (one incoming and one outgoing). Use two different CUCM clusters to avoid IP conflicts. Alternatively, you can adjust incoming/destination ports.
- Incoming Trunk: From the SIPp server with CSS access to a registered phone and the outgoing trunk.
- Outgoing Trunk: Pointing to the other CUCM server.
- On CUCM2:
- Configure an incoming trunk from CUCM1.
- Configure a SIP trunk to the SIPp server.
- Create a route pattern (e.g., 30XX) to route calls to the SIPp server.
Running SIPp with CUCM
To generate SIP traffic, run SIPp on both server and client sides:
Server Side:
sudo ./sipp -sn uas -i 172.16.0.165 -p 5060 -trace_err
Client Side:
./sipp -sf uac.xml 172.16.0.160:5060 -s 3000 -i 172.16.0.165 -r 20
- uac.xml: Simple XML scenario for a call (available at SIPp Documentation)
- 3000: Destination extension
- 172.16.0.160: CUCM IP
- -r 20: 20 calls per second
Performance Verification
You can also verify the CPU load using tools like top
or htop
. The vCenter performance tab further confirms the load:
Conclusion
Using SIPp with CUCM 12.x/15.x, you can effectively simulate and test the load handling capabilities of your Call Manager setup. This process helps identify potential bottlenecks and performance issues, ensuring a robust VoIP infrastructure.
Thank you for reading!
I am working in an IT company and having 10+ years of experience into Cisco IP Telephony and Contact Center. I have worked on products like CUCM, CUC, UCCX, CME/CUE, IM&P, Voice Gateways, VG224, Gatekeepers, Attendant Console, Expressway, Mediasense, Asterisk, Microsoft Teams, Zoom etc. I am not an expert but i keep exploring whenever and wherever i can and share whatever i know. You can visit my LinkedIn profile by clicking on the icon below.
“Everyone you will ever meet knows something you don’t.” ― Bill Nye