Posts tagged ‘SIPp’

Februari 2, 2010

Install SIPp Web Front-end

Dua tahunan yang lalu, saya menggunakan SIPp langsung dari console (dengan menggunakan libncurses). Tampilannya sudah cukup memadai. Dengan SIPp tersebut, saya bisa menguji (stress test) kemampuan call-handling Asterisk IP-PBX dengan membangkitkan SIP call dari UAC ke UAS untuk mengetahui berapa concurrent call yang bisa ditangani, berapa call yang success/failed, apakah RTP bisa dilewatkan dengan kualitas yang masih bisa diterima dll.

Sekarang proyek SIPp sudah menyertakan front-endnya yang berbasis web sejak SIPp versi 3.1 (Dec 2008), bernama sipp_webfrontend_v1.2.tgz . Dokumentasinya bisa diikuti di sini. Front-end tersebut menggunakan php untuk web scriptingnya dan mysql untuk databasenya.

read more »

Iklan
Februari 2, 2010

Install SIPp-3x di uBuntu

Program SIPp akan saya install di Linux uBuntu (Jaunty). Selanjutnya, program tersebut akan digunakan untuk membangkitkan trafik SIP (Session Initiation Protocol) dengan skenario user agent (UAC/User Agent Client sebagai originating call dan UAS/User Agent Server sebagai destination call). Rencananya trafik tersebut akan dilewatkan ke gateway FXS (single/quad) dan FXO (single/quad) sebagai DUT (Device-Under-Test). Testplan terhadap DUT tersebut akan meliputi: 1) call generation and termination, 2) Caller-ID reception, 3) DTMF coding and decoding, dan 4) transfer RTP media (audio, video?).

Namun, kompilasi SIPp versi 3 (3.0 atau 3.1) di Linux uBuntu tersebut ternyata masih ada error. Walaupun kita menggunakan perintah standar ‘make’, error tetap muncul. Error terjadi karena INT_MAX yang tidak terdeklarasi. Memang di source direktori sipp, INT_MAX tidak terdefinisi dan dia digunakan di file call.cpp dan scenario.cpp. Di Linux, INT_MAX didefinisikan di file /usr/include/limits.h. Sehingga yang perlu dilakukan adalah menambah include header limits.h di dua file cpp tersebut di atas. Patch untuk sipp-3.0 adalah sebagai berikut :

read more »

Oktober 17, 2008

Instalasi SIPp untuk Menguji Asterisk

screen-shot sipp

screen-shot sipp

SIPp merupakan program opensource yang digunakan untuk membangkitkan trafik protocol SIP. Didalamnya terdapat skenario user agent (UAC dan UAS) dan untuk membangun dan merelease beberapa panggilan dengan metode INVITE dan BYE. SIPp ini dapat digunakan untuk menguji kemampuan dan performansi Asterisk, berapa banyak ia dapat menghandle panggilan SIP dalam satu waktu.

Source code SIPp dapat didownload dari sini. Ada beberapa mode instalasi SIPp yang mungkin, yaitu:

  1. Tanpa TLS (Transport Layer Security) dan tanpa dukungan authentication : mode ini merupakan setup yang direkomendasikan jika kita tidak memerlukan otentikasi SIP dan/atau TLS.
       # tar xvzf sipp-xxx.tar.gz
       # cd sipp-xxx
       # make
    
  2. Dengan dukungan TLS dan authentication. Mode ini memerlukan library OpenSSL (>=0.9.8). Di debian diperlukan package libssl-dev. Ini seperti software SIP client yang harus terlebih dahulu melakukan otentikasi username dan password ke server Asterisk sebelum melakukan panggilan.
       # tar -xvzf sipp-xxx.tar
       # cd sipp
       # make ossl
    
  3. Dengan PCAP play dan tanpa dukungan authentication. Mode ini memerlukan libpcap dan libnet. Di Debian, diperlukan package libpcap-dev. Dengan PCAP trafik media (RTP) yang berupa audio atau audio+video dapat dikirimkan dengan RTP echo dan RTP/pcap replay.
      
      # tar -xvzf sipp-xxx.tar
      # cd sipp
      # make pcapplay
    
  4. Dengan PCAP play dan dukungan authentication, sehingga autentikasi dan pengiriman media RTP dapat dilakukan. Mode ini memerlukan openssl, libpcap dan libnet.
      
      # tar -xvzf sipp-xxx.tar
      # cd sipp
      # make pcapplay_ossl
    

Saya sendiri lebih menyukai instalasi dengan dukungan PCAP play dan otentikasi, sehingga UAC ini menyerupai sistem (SIP client) yang real.

Dalam pengiriman media, SIPp mempunyai beberapa mode transport, yaitu

  1. UDP mono socket (default).
    Di mode ini (dengan parameter di baris perintah SIPp “ -t u1“), satu soket IP/UDP dibuka antara SIPp dan server remote. Semua panggilan akan menggunakan socket ini. Mode ini umumnya digunakan untuk mengemulasikan hubungan antar 2 server SIP.
  2. UDP multi socket.
    Di mode ini (dengan parameter di baris perintah SIPp “ -t un“), satu soket IP/UDP dibuka untuk tiap panggilan baru antara SIPp dan server remote. Mode ini biasanya digunakan untuk mengemulasikan user agent (UA) dalam melakukan panggilan ke server SIP.
  3. TCP mono socket.
    Di mode ini (dengan parameter di baris perintah SIPp “-t t1“), satu soket IP/TCP dibuka antara SIPp dan server remote. Semua panggilan akan menggunakan socket ini. Mode ini umumnya digunakan untuk mengemulasikan hubungan antar 2 server SIP.
  4. TCP multi socket.
    Di mode ini (dengan parameter di baris perintah SIPp “-t tn”), satu soket IP/TDP dibuka untuk tiap panggilan baru antara SIPp dan server remote. Mode ini biasanya digunakan untuk mengemulasikan user agent (UA) dalam melakukan panggilan ke server SIP.
  5. TLS mono socket.
    Di mode ini (dengan parameter di baris perintah SIPp “-t l1“), satu soket secure TLS dibuka antara SIPp dan server remote. Semua panggilan akan menggunakan socket ini. Mode ini umumnya digunakan untuk mengemulasikan hubungan antar 2 server SIP. Saat menggunakan TLS transport, SIPp memerlukan 2 file di direktori lokal, yaitu certificate (cacert.pem) dan kuncinya (cakey.pem). Jika salah satu terkunci dengan password, SIPp akan menanyakan password tersebut. SIPp juga mendukung X509 CRL (Certificate Revocation List). CRL dibaca dan digunakan jika baris perintah “-tls_crl” diberikan.
  6. TLS multi socket.
    Di mode ini (dengan parameter di baris perintah SIPp “-t ln“), satu soket secure TLS dibuka untuk tiap panggilan baru antara SIPp dan server remote. Mode ini biasanya digunakan untuk mengemulasikan user agent (UA) dalam melakukan panggilan ke server SIP.
  7. IPv6 support.
    SIPp 1.1 memberikan dukungan IPv6. Untuk menggunakannya, spesifikasikan alamat IP lokal (dengan parameter di baris perintah SIPp “-i”) dengan alamat IP IPv6. Contoh berikut untuk server UAS yang listen di port 5063 dan client UAC mengirimkan trafik IPv6 ke port tersebut.

      ./sipp -sn uas -i [fe80::204:75ff:fe4d:19d9] -p 5063
      ./sipp -sn uac -i [fe80::204:75ff:fe4d:19d9] [fe80::204:75ff:fe4d:19d9]:5063
    

Saat mode transport “multi-socket” digunakan, jumlah maksimum soket yang dapat dibuka (yang berkaitan dengan
jumlah panggilan simultan yang dapat dilakukan) akan ditentukan oleh sistem. Begitu jumlah maksimum soket yang dibuka mencapai batas, trafik akan didistribusikan ke soket-soket yang telah dibuka. Batas jumlah soket yang digunakan dapat diset dengan memberikan option “-max_socket” ke perintah SIPp.

Saya lebih sering menggunakan mode “UDP mono socket”.