Hello Charles,

thanks for this great set of contributions. It is great to see that people and companies are investing their time and money in enhancing what exists instead of re-inventing the wheel when this is not needed (sometimes it is!). Newton once wrote a letter to Robert Hooke where he had those words: "If I have seen further it is by standing on the shoulders of Giants". That reflects a lot the Open Source (at least GPL) spirit.

Anyway :)

I started to go through and integrate the first ones:
- dynamicpeer: no comment - SVN 68
- pausecleanup: no comment - SVN 69
- distpause: It applies and old behaviour is available even if GSL is not present - so I included this one - SVN 70. I agree with you that autoconf/autobuild is needed now. I'll try to see if I find some time for this.

I will go over the others quickly - maybe tomorrow. I will also update the doc accordingly.

Thanks again,

On 10/24/06, Charles P Wright < cpwright@us.ibm.com> wrote:

Hello All,

At IBM research we have developed several enhancements for SIPp that
improve performance and flexibility.  I have attached a .tar.gz of the
patches and a "series" file that lists them in the order they should be
applied (against the 2006/10/04 snapshot).  I've included a brief
description of each of the patches below.


These patches allow SIPp to be used for our VoIP user-model based benchmark.
There are some internal scalability improvements that do not affect usage, and
also a few minor external changes to increase the flexibility of reporting and

To enable distributed pauses, you must compile with the GNU Scientific Library
(GSL).  As SIPp does not have an autoconfiguration script, you create a file
named "local.mk" with the following lines:

      EXTRALIBS=-lgsl -lgslcblas

You can obtain GSL from http://www.gnu.org/software/gsl/.  GSL RPMs are
also available on many distributions, including RedHat 7-9, Fedora 1-5,
Redhat AS 4, and SuSE 9.X and 10.

The external changes to SIPp are one new command line option (-users), which
specifies a fixed number of users; the 'Q' key stops SIPp in its tracks (just
like control-C); and several modifications to the XML scenario file:

- The <pause /> item has three new types of pauses: normal, lognormal, and
  exponential.  To specify a statistically distributed pause add its name as a
  parameter with a value (e.g., <pause normal="true" ... />).

- Normal pauses require a mean and standard deviation.  For example:
      <pause normal="true" mean="60000" stdev="15000" />
  Provides a normal pause with a mean of 60 seconds (i.e. 60,000 ms) and a
  standard deviation of 15 seconds.  The mean and standard deviation are
  specified as integer milliseconds.

- Lognormal pauses are specified in terms of the mean and standard deviation
  of the normal distribution that is exponentiated. For example:
      <pause lognormal="true" mean=" 12.28" stdev="1" />
  Creates a distribution's whose natural logarithm has a mean of 12.28 and a
  standard deviation of 1.  The mean and standard deviation are specified as
  double values (in milliseconds).

- Exponential pauses require an integer mean.  For example:
      <pause exponential="true" mean="900000" />
  Creates an exponentially distributed pause with a mean of 15 minutes.

- Each send or receive message may start and end a response time duration.
  Unmodified SIPp uses a single RTD value per call, thus the XML used a boolean
  value to indicate starting an RTD (with start_rtd) and ending an RTD with
  (rtd) as follows:
      <send start_rtd="true">
      <recv response="200" rtd="true" />
  Our new SIPp supports the same syntax, mapping "true" to RTD 1.  We also
  support an arbitrary number of RTD timers (determined at compile time,
  currently 5).  To use a new timer, specify start_rtd and rtd as an integer
  from 1 to 5.  You can view the new RTD timers by pressing 5, 6, 7, and 8.

- We also support five generic message counters.  Simply add the new "counter"
  parameter to a send or receive (from 1 to 5).  When that message is
  processed, we add one to the counter.  For example:
      <recv request="INVITE" counter="1" />
      <recv request="BYE" counter="2" />
  Increments counter 1 when the INVITE is recieved and counter 2 when the BYE
  is recieved.

- The <nop /> item can be used for rtd, start_rtd, and count.

These patches apply to SIPp 2006-10-04.  You can use the quilt tool to apply
these patches ( http://savannah.nongnu.org/projects/quilt/), or manually apply
them in the order listed in series (the following descriptions are also in

- dynamicpeer
      Use a dynamically allocated peer tag, this reduces the memory usage per
      call by an order of magnitude.

- pausecleanup
      Clean up the handling of the pause keyword.

- distpause
      Normal, lognormal, and exponentially distributed pauses.  These pauses
      are based on GSL, and the infrastructure is there for any type of
      pause that someone wants to add.

- rtd
      Allows multiple response times to be counted.

- counter
      Increments a generic counter on a recieve or send.

- runqueue
      Divides calls into paused calls and running calls.  Paused calls are
      managed using a timing wheel ala Varghese's 1996 article.

- users
      The -users option begins users calls at startup, and maintains a fixed
      number of calls.  Only half of a timer cycle can be used for call

- hardquit
      The 'Q' key (or control thread) sends a SIGINT to itself, thus causing
      SIPp to quit immediately.

- nopcount
      Allow nops to be used for RTDs and counts.

- buffsize
      Allows the socket receive buffer to be increased on the command line.

- lastheaderstrings
      Uses a custom version of tolower for strcasestr2.

      Eliminates the need for memset of large strings ( e.g, there was a 20KB
      memset for each message processed).

- rsaport
      Uses port 5060 by default if the -rsa option does not specify a port.

- closefdsinbg
      Close all file descriptors after we create the child process.

- printscreenkey
      'S' key dumps the screens to a file (this can be used over the control
      socket, a signal cannot)

- stdev
      Add a standard deviation column for call length and response time

- rateincrement
      Increase the rate from n to m at some interval.

- authtweak
      Check dialog_authentication before running a strstr on every message.

- retransstat
      Add Retransmissions(P) and Retransmissions(C) columns to the stat file.

- tcpwait
      Allow EAGAIN to be handled gracefully more than once.

- openloop
      Allow -l 0 to be specified so that a UAC scenario can act as an open
      loop workload generator.

(See attached file: sipp-patches-2006-10-04-ibm1.tar.gz)

Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo

Sipp-users mailing list

HP OpenCall Software