Video Stream LoadGenerator
Introduction
Video Stream Loadgenerator is a software used to test the capabilities of a video-streaming server. The software can be used to simulate the load from a single machine.
Example
The Figure shows the diagram of a Video Stream Loadgenerator that we created.

Here, we give the IP address of the server machine, the name of the file that we want to access and the number of clients. We also choose between two options here - Play and Sequence. If the Play option is selected, the Play operation is performed for each client and associated parameters will be given as the output. With the Sequence option, a sequence of operations (PLAY, FORWARD, and REVERSE) is performed and associated parameters will be given as the output. Some of the parameters that are considered are DataRate, Response Time etc.
The Overall Operation
If we want to run a single client, we have to execute a set of statements. This is called a session. If we have 1200 clients, there need to be 1200 sessions. The important thing to take care of here is that everything should be as parallel as possible. In our case, we used threads and in each thread, we created 20 sessions. However, running many threads affects the performance of the system. Therefore, if the number of clients is more, we split it into many processes. In each process, we create many threads and in each thread, we create many sessions. We found that the optimal ratio was to create one process for 1000 clients.
For example if we have 600 clients, then
Number of processes : 1
Number of threads / Processes : 30 ( 600/20)
Number of sessions /Thread : 20
If we have 3400 clients, then
Number of processes : 4
Number of threads / Processes : 50 (For the first 3 processes )
Number of threads / Processes : 20 (For the Last process )
Number of sessions /Thread : 20
How it all works
We created the load using a single system. We used the Darwin streaming Server for testing. The Server supports RTSP (Real Time Streaming Protocol), which in turn supports some basic methods that can be used to do all the operations we require. Some of the methods are:
DESCRIBE method
- The method gets the details about a particular file in the server. These details may be ones like duration of the file, Track Ids etc.
- Example :
SETUP method
- The method is used to allocate the resources in server side for a client. It also specifies the transport mechanism to be used for the streamed media.
- Example :
- PLAY method
- The PLAY method tells the server to start sending data via the mechanism specified in SETUP.
- Example :
- PAUSE method
- The PAUSE request causes the stream delivery to be interrupted (halted) temporarily.
- Example :
- OPTIONS method
- An OPTIONS request may be issued at any time. It does not influence the server state.
- Example :
- For creating a single client we have to create session. In a session
- Use DESCRIBE method to check whether the file is there in the server
- Use SETUP method to get the session id.
- Using this session id, give a PLAY request.
- For pausing the the client we should give a PAUSE request using the same session id.
- For Forward operation, use PAUSE to stop playing and use PLAY method with different Range.
- For Reverse operation, use PAUSE to stop playing and use PLAY method with different Range.
Performance Monitoring
If we choose the first option (Play), then the parameters that are monitored are the Data Rate and Response Time. For each client, these parameters will be monitored and given as output.
If we choose the Sequence Option, then only the Response time for each of the operations is monitored. For each client, these Response Times will be given.

