ElGee - The Load Generator!
INDEX:
-
intro
-
location
-
usage
-
commands
-
shutdown
Introduction:
ElGee - The Load Generator, is a VOCAL
based s/w tool for generating SIP signaling load for testing large scale
SIP deployments.
following are the important features of this tool:
-
Authentication :
ElGee supports HTTP-Basic, HTTP-Digest and SIP-CHAP authentication schemes.
both endpoint (WWW-Authenticate) and proxy (Proxy-Authenticate) based challenges
can be authenticated by Elgee.
-
Originating mode : this running mode allows
for stress load generation to simulate large numbers of SIP clients
-
Terminating mode : this running mode allows for ElGee
to act as a reciever of SIP calls
-
Registration mode : this running mode allows ElGee
to generate traffic to simulate large number of user registrations
-
UDP & TCP
: ElGee supports both transport protocols. for originating/registration
mode, sample message should specify the transport param in headers, while
in terminating mode it listens for both
Location:
binary
: vocal/loadgen/elgee/bin.*/lz
configuration : vocal/loadgen/elgee/Doc/elgee.conf
Usage:
ElGee can be invoked as follows:
Command Line Usage: lz [-i <sampleMsg>]
<source user#[@host[:port]]> <dest user#@host:port>
<sampleMsg> is an optional parameter to specify the filename
of a sample SIP INVITE message. you can use it if you want to test your
proxy with some specific header values in the test messages.
<source user#[@host[:port]]> should be something like 6000@x.x.x.x:pppp,
the host and port are optional [default values are host = theSystem.getHostAddress(),
port = 5060]
<dest user#@host:port> is same as above except no fields are optional
(its not that smart yet!)
NOTE: this mode only allows for originating running mode!
Configuration File Usage: lz [-i <sampleMsg>]
-f <config file>
you can use ElGee more flexibly by using a config file. the
different configurable parameters are:
General Parameters:
Originating Mode Params:
Registration Mode Parameters:
Terminating Mode Parameters:
see the included elgee.conf
for more details.
Q. Why sample message?
A. well, you can have any "custom" headers/params etc that you
may want to use in your load generation, hence just get a sample message
with those headers and params (and their values!) and ElGee will generate
invites with them intact. therefore, for example, to use TCP as transport,
you'll need to use a sample message which has the transport param in Via
and Req-Uri as TCP. (BOTH, the via and req-uri should have "trasport=TCP",
or else only the request sent or reponse recieved will be in TCP, depending
on wether req-uri or via has "tranport=TCP")
Command Interpretor:
User can interact with ElGee by a command interpretor. currently the
commands supported by ElGee's command interpretor are:
-
'z' - used to suspend/resume loadgeneration [used for suspending new calls
temporarily].
-
's' - used to display the system's statistics in the following format:
Test duration = 0Hr : 0Min
: 1Sec
Calls/Sec [CPS] = 0
Setup time
= avg[0ms] min[0ms] max[0ms]
Call Success Rate = 0%
Calls Attempted = 140
Calls Completed = 0
Calls Accepted = 0
Calls Successfull = 0
Calls Failed
= 0
Failure Reasons:
INVITE_REJECTED = 0
BYE_REJECTED = 0
INVITE_TIMEOUT = 0
BYE_TIMEOUT = 0
-
'c' - used to show the configuration parameters in the following format:
Using configuration:
CPS
= 70
RTP Port = 34567
CALL_HOLD = 0
INVITE_TIMEOUT = 32
REQUEST_TIMEOUT = 32
SDP_MEDIA = ON
NEXT_HOP = 1.4.106.15:5060
SOURCE_ADDRESS = 1.4.106.100:5060
TO_ADDRESS = 1.4.106.15:5060
Sample Message:
INVITE sip:6500@128.107.140.140:5065;user=phone SIP/2.0
Via: SIP/2.0/UDP 128.107.140.140:5064
From: 6400<sip:6400@128.107.140.140:5064>
To: 6500<sip:6500@128.107.140.140:5065;user=phone>
Call-ID: 247515495@128.107.140.140
CSeq: 1 INVITE
Subject: VovidaINVITE
Contact: <sip:6400@128.107.140.140:5064>
Content-Type: application/sdp
Content-Length: 168
v=0
o=- 99513809 99513809 IN IP4 128.107.140.140
s=SIP Call
c=IN IP4 1.4.106.100
t=0 0
m=audio 20598 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=ptime:20
shutdown
to terminate ElGee you have to do a "ctl-C", unfortunately VOCAL api
does'nt support a clean shutdown yet!