Examples to demonstrate how to emulate SIP in NeST

This directory contains the following example to understand how SIP application can be emulated in NeST. SipApplication API is used in these examples to configure a SIP application between a pair of nodes.

Scenario XML files

The subdirectory scenario-xml-files contains some of the XML files provided by sipp for SIP traffic emulation and they can be used in NeST SIP emulation with the “xml” scenario argument. The XML files can be modified or new XML files can be used to create custom scenarios for the emulation. Feel free to read more about how to write Scenario XML files at https://sipp.readthedocs.io/en/latest/scenarios/ownscenarios.html.

Pre-requisites

IMPORTANT It is strongly recommended that you run these SIP examples on systems with Ubuntu version 22.04 or above. All the examples listed below require SIPp to be pre-installed in your machine.

SIPp can be installed as follows:

$ sudo apt -yqq update
$ sudo apt install -y --no-install-recommends \
        pkg-config \
        g++ \
        gcc \
        dh-autoreconf \
        ncurses-dev \
        build-essential \
        libssl-dev \
        libpcap-dev \
        libncurses5-dev \
        libsctp-dev \
        lksctp-tools \
        libgsl-dev \
        cmake
$ git clone https://github.com/SIPp/sipp.git
$ cd sipp/
$ sudo cmake . -DUSE_SSL=1 -DUSE_SCTP=1 -DUSE_PCAP=1 -DUSE_GSL=1
$ sudo make all
$ sudo make install

In case you want to dive into the details of SIPp installation, feel free to read their documentation at https://sipp.readthedocs.io/en/latest/installation.html

1. sip-point-to-point-3.py

This program emulates point to point networks that connect two hosts h1 and h2 via two routers r1 and r2. Here, h1 acts as the SIP client and h2 acts as the SIP server. The results of this SIP experiment will be documented in the examples/sip/sip-point-to-point-3(date-timestamp)_dump folder. It contains a README which provides details about the sub-directories and files within this directory.

2. sip-two-lans-connected-via-router.py

This program emulates two Local Area Network (LANs) connected via a router. LAN-1 consists four hosts h1 to h4 connected to switch s1, and LAN-2 consists four hosts h5 to h8 connected to switch s2. Switches s1 and s2 are connected to each other via a router r1. There are 4 SIP applications running in this example: In first application, basic scenario is emulated using h1 as client and h5 as server by passing “basic” as scenario argument to SipApplication. In second application, branch scenario is emulated using h2 as client and h6 as server by passing “branch” as scenario argument to SipApplication. In third application, basic scenario is emulalated using h3 as client and h5 as server by passing “xml” as scenario argument and passing “uac.xml” xml file as client_xml argument to SipApplication. In fourth application, branch scenario is emulalated using h4 as client and h7 as server by passing “xml” as scenario argument, passing “branchc.xml” xml file as client_xml argument and “branchs.xml” as server_xml argument to SipApplication. The results of this SIP experiment will be documented in the examples/sip/sip-two-lans-connected-via-router(date-timestamp)_dump folder. It contains a README which provides details about the sub-directories and files within this directory.