SURYA UNIVERSITY
OpenBTS Training “Menggunakan OpenBTS”
MENGETAHUI SISTEM OPENBTS Pengertian OpenBTS OpenBTS adalah aplikasi BTS (Base Transceiver Station) yang berjalan pada platform linux dan merupakan perangkat lunak terbuka. OpenBTS menggunakan sebuah perangkat keras yang bernama USRP (Universal Software Radio Peripheral). Perangkat inilah yang menghubungkan openBTS dengan jaringan standar telepon selular (GSM). OpenBTS juga menggunakan perangkat lunak terbuka asterisk untuk menginterkoneksikan dengan jaringan telepon lainnya seperti PSTN (Public Switched Telephone Network) ataupun operator telekomunikasi lainnya dengan menggunakan VoIP (Voice over IP). Arsitektur OpenBTS
Perangkat Keras OpenBTS
Perangkat Lunak 1. 2. 3. 4. 5.
Operating System ( Ubuntu 12.04 atau 14.04 ) SMQueue Asterisk OpenBTS GNURadio
Konfigurasi standar OpenBTS: Konfigurasi Beberapa spesifikasi konfigurasi OpenBTS AsteriskConfig Asterisk configuration files for use with OpenBTS. CommonLib
Common-use libraries, mostly C++ wrappers for basic facilities.
Control
Control-layer functions for the protocols of GSM 04.08 and SIP.
GSM
The GSM stack.
SIP
Components of the SIP state machines ued by the control layer.
SMS
The SMS stack.
TRXManager The interface between the GSM stack and the radio. Transceiver
The software transceiver and specific installation tests.
apps
OpenBTS application binaries.
doc
Project documentation.
tests
Test fixtures for subsets of OpenBTS components.
smqueue
RFC-3428 store-and-forward server for SMS
OpenBTS mengasumsikan UDP port berikut 5060 -- Asterisk SIP interface 5061 -- local SIP softphone 5062 -- OpenBTS SIP interface 5063 -- smqueue SIP interface 5700-range -- OpenBTS-transceiver interface Port ini dapat di atur melalui file konfigurasi apps/OpenBTS.config. Bagi anda yang baru pertama kali menjalankan OpenBTS pastikan melakukan
cd /usr/local/src/openbts-2.6.0Mamou/apps cp OpenBTS.config.example OpenBTS.config Edit file konfigurasi menggunakan perintah vi /usr/local/src/openbts-2.6.0Mamou/apps/OpenBTS.config Tidak banyak yang kita ubah, biasanya yang diubah adalah # Network and cell identity.
# Network Color Code, 0-7 # Also set GSM.NCCsPermitted later in this file. GSM.NCC 0 # Basesation Color Code, 0-7 GSM.BCC 2 # Mobile Country Code, 3 digits. # MCC MUST BE 3 DIGITS. Prefix with 0s if needed. # Test code is 001. GSM.MCC 001 # Mobile Network Code, 2 or 3 digits. # Test code is 01. GSM.MNC 01 # Location Area Code, 0-65535 GSM.LAC 1000 # Cell ID, 0-65535 GSM.CI 10
# Network "short name" to display on the handset. # This is optional, but must be defined if you also want to # send current time-of-day to the phine. GSM.ShortName OpenBTS $optional GSM.ShortName
# A boolean telling whether or not to show country initials with the name.
GSM.ShowCountry $optional GMS.ShowCountry
# Band and Frequency
# Valid band values are 850, 900, 1800, 1900. GSM.Band 900 $static GSM.Band
# Valid ARFCN range depends on the band. GSM.ARFCN 51 # ARCN 975 is inside the US ISM-900 band and also in the GSM900 band. #GSM.ARFCN 975 # ARFCN 207 was what we ran at BM2008, I think, in the GSM850 band. #GSM.ARFCN 207 $static GSM.ARFCN
# Neighbor list # Should probably include our own ARFCN GSM.Neighbors 39 41 43 #GSM.Neighbors 207
Konfigurasi Asterisk
Integrasi OpenBTS ke Asterisk sangat sederhana secara prinsip. Setiap SIM akan di konfigurasi sebagai SIP user menggunakan IMSI sebagai username. Proses memasukan pelanggan OpenBTS melalui dua tahap: Mendapatkan IMSI dari SIM, hal ini di implementasi dengan mengirim SMS saat handphone tersambung ke OpenBTS Masukan ke sip.conf dan extensions.conf untuk mendukung SIP user baru tersebut. Pada dasarnya tidak banyak yang perlu di konfigurasi di Asterisk agar dia dapat berbicara dengan OpenBTS. Kita terutama perlu mengedit file
/etc/asterisk/sip.conf /etc/asterisk/extensions.conf Contoh konfigurasi ada di folder /usr/local/src/openbts-2.6.0Mamou/AsteriskConfig Di OpenBTS 2.6 masih belum sempurna, setiap kali kita mengubah user di asterisk, kita perlu mengcompile ulang smqueue. Kita dapat juga mencek nomor IMSI di OpenBTS, setelah kita masuk ke prompt OpenBTS> Welcome to OpenBTS. Type "help" to see available commands. OpenBTS> Ketik tmsis akan keluar
TMSI
IMSI
IMEI
age used
0x4f309ebf 510890929069598
? 22h 22h
0x4f309ec0 510112410440152
? 22h 5s
0x4f309ec1 510110301694405
? 22h 22h
0x4f309ec2 510104725431198
? 22h 22h
0x4f31da5b 510110026566622
? 15s 15s
Nomor-nomor 510XXX adalah nomor SIM card yang terdaftar di OpenBTS yang kita operasikan.
Konfigurasi sip.conf
Contoh isi /etc/asterisk/sip.conf adalah sebagai berikut
[IMSI510110301694405] canreinvite=no type=friend defaultuser=2101 ; context=default allow=gsm
host=dynamic
Atau kalau ingin menggunakan context default pastikan ada context [default] di extensions.conf
[IMSI520010104743577] callerid=1000 canreinvite=no type=friend allow=gsm context=default host=dynamic
[IMSI510110301694405] callerid=1111 canreinvite=no type=friend allow=gsm context=default host=dynamic
[IMSI510112410440152] callerid=1112 canreinvite=no type=friend allow=gsm context=default host=dynamic
Konfigurasi extensions.conf
Contoh isi /etc/asterisk/extensions.conf, edit vi /etc/asterisk/extensions.conf cari kata-kata [default] ; ; By default we include the demo. In a production system, you ; probably don't want to have the demo there. ; include => demo Masukan sesudah kata-kata di atas, misalnya ; exten => _21XX,1,Dial(SIP/${EXTEN},30,rt) exten => 1111,1,Dial(SIP/IMSI510110301694405,60,rt) exten => 1112,1,Dial(SIP/IMSI510112410440152,60,rt) exten => 2102,1,Dial(SIP/IMSI238209700014858,60,rt) exten => 2103,1,Dial(SIP/IMSI310260254136340,60,rt)
Angka IMSI520154100006647 di peroleh dari SMS yang di terima oleh user OpenBTS.
Registrasi SIM automatis
Beberapa konfigurasi tambahan di /etc/asterisk/sip.conf yang memungkinkan registrasi SIM automatis [general] allowoverlap=no ; Disable overlap dialing support. (Default is yes) bindport=5060
; UDP Port to bind to (SIP standard port is 5060)
bindaddr=0.0.0.0 ; IP address to bind to (0.0.0.0 binds to all) srvlookup=yes
; Enable DNS SRV lookups on outbound calls
; line untuk automatic sim registration autocreatepeer=yes canreinvite=no call-limit=1
type=friend allow=gsm context=sip-internal host=127.0.0.1 ; asumsinya OpenBts dan Asterisk berjalan di mesin yang sama Bagi anda yang ingin mempelajari lebih lanjut tentang asterisk sangat di sarankan untuk membaca-baca tentang VoIP atau Internet Telepon karena disini akan di terangkan lebih jauh tentang berbagai konfigurasi asterisk dan bagaimana melakukan mapping ke +62XXX menggunakan teknologi ENUM.
Mengakses Sistem Semua jenis instalasi dari OpenBTS 4.0 menjalankan sistem operasi Ubuntu Linux v12.04. Antarmuka utama sistem adalah UNIX shell diakses dengan ssh dari konektor ethernet di panel depan. Sistem dari antarmuka ethernet sudah autosensing, tidak memerlukan hub atau kabel crossover. Mempunyai alamat IP default “192.168.0.21”. sekali unit sudah terkoneksi ke komputer yang lain atau sebuah jaringan di subnet 192.168.0.x, maka sudah bisa di akses melalui ssh. Dengan akun sebagai berikut : login : openbts password : openbts akun harus dengan super user (sudo). Perintah yang digunakan di setiap sistem UNIX, termasuk OS X, adalah : ssh
[email protected] dari windows klien SSH isa digunakan (seperti PuTTY). Catatan : pastikan untuk mengganti password untuk user openbts sebelum menghubungkan sistem ke jaringan publik.
Memulai dan menghentikan aplikasi Pada konfigurasi tertanam yang digunakan di Range Systems, semua aplikasi di rangkaian Aplikasi OpenBTS dikonfigurasi sebagai upstart services (kunjungi upstart.ubuntu.com untuk lebih rinci) dan dimulai selama inisialisasi sistem. Jika ada crash atau keluar, maka secara otomatis akan di restart. Untuk memulai aplikasi secara manual, login ke sistem dan ketik di command line : sudo start
untuk memberhentikan aplikasi :
sudo stop untuk merestart Aplikasi OpenBTS, ketik : sudo stop openbts sudo start openbts Catatan : perilaku ini merupakan pengembangan dari versi OpenBTS yang sebelumnya. Skrip “runloop.sh” tidak digunakan lagi.
Command Line Interface (CLI) OpenBTS aplikasi konsol OpenBTS disebut “command line interface” atau CLI. Dengan CLI kita bisa memonitor status sistem dan mengganti banyak parameter operasi dari OpenBTS dan transceiver dalam waktu nyata (real time). Memulai dan mengakhiri CLI CLI yang bisa dieksekusi berlokasi di /OpenBTS/OpenBTSCLI di file system. Untuk menggunakan CLI masuk ke device melalui ssh dan ketik di command line Unix : /OpenBTS/openBTSCLI jika ingin menjalankan CLI maka aplikasi OpenBTS harus dijalankan juga. Sekali CLI dijalankan maka akan terlihat pengumuman selamat datang (Welcome Noticed) dan command prompt dari OpenBTS : OpenBTS Command Line Interface (CLI) utility Copyright 2012-2014 Range Networks, Inc. Licensed under GPLv2. Includes libreadline, GPLv2. Connecting to 127.0.0.1:49300... Remote Interface Ready. Type: "help" to see commands, "version" for version information, "notices" for licensing information, "quit" to exit console interface. OpenBTS>
untuk keluar dari CLI, ketik perintah “quit” dan tekan enter. Melakukan perintah tersebut bukan berarti mengakhiri palikasi OpenBTS. Pada CLI tidak terdapat perintah untuk mengakhiri OpenBTS, tapi dapat merestart OpenBTS dengan perintah “shutdown”. Jika OpenBTS sudah di shutdown maka akan merestart secara otomatis (terbukti, ini dikonfigurasi sebagai upstart service), tapi kehilangan koneksi ke CLI. Restart CLI agar terhubung kembali ke OpenBTS.
Menggunakan CLI antarmuka CLI sederhana : tulis perintah string di prompt CLI dan tekan Enter, kemudian baca kembali hasil string. Untuk daftar perintah yang tersedia ketik “help” di prompt CLI dan tekan Enter. Gunakan “help” diikuti dengan sebuah nama perintah untuk mendapatkan gambaran perintah yang lebih spesifik : OpenBTS> help rxgain rxgain [newRxgain] -- get/set the RX gain in dB OpenBTS>
daftar rinci dari perintah CLI terdapat pada Appendix C. Menggunakan CLI untuk mengkonfigur OpenBTS Perintah untuk memeriksa dan mengubah parameter konfigurasi OpenBTS adalah “config”. Semua parameter adalah case-sensitive. Disimpan di tabel configuration (lihat 4.2). daftar lengkap dari parameter-parameter konfigurasi dan artinya di sediakan di Appendix B. Perintah “config” diikuti dengan sebuah nama parameter konfigurasi yang menyediakan rincian penuh pada parameter tersebut, termasuk nilai saat ini, nilai default, rentang dari nilai yang bisa diterima dan apakah parameter tersebut statik atau dinamik. Contoh : OpenBTS> config GSM.Identity.ShortName GSM.Identity.ShortName Range [default] - description: Network short name, displayed on some phones. Optional but must be defined if you also want the network to send time-of-day. - type: string - default value: Range - visibility level: customer site - these values are different for each BTS and should not be left default - static: 0 - valid val regex: ^[0-9a-zA-Z]+$ - scope: value must be the same across all nodes OpenBTS>
Perintah “config” diikuti dengan nama parameter parsial yang memberikan sebuah daftar dari semua parameter dengan nama yang mengandung nama parsial tersebut. Contoh : OpenBTS> config Identity GSM.Identity.BSIC.BCC 1 GSM.Identity.BSIC.NCC 3 GSM.Identity.CI 10 [default] GSM.Identity.LAC 1010 GSM.Identity.MCC 001 [default] GSM.Identity.MNC 05
GSM.Identity.ShortName Range [default] OpenBTS>
Untuk mengeset parameter menjadi nilai yang pasti, sediakan nama parameter yang diikuti dengan nilai baru di perintah “config” seperti ini : OpenBTS> config GSM.Identity.ShortName MyCellularNetwork GSM.Identity.ShortName changed from "Range" to "MyCellularNetwork" OpenBTS>
Untuk mengembalikan parameter ke nilai default, sediakan nama parameter diikuti dengan nilai baru di perintah “command”, seperti ini : OpenBTS> rmconfig GSM.Identity.ShortName GSM.Identity.ShortName set back to its default value OpenBTS> config GSM.Identity.ShortName GSM.Identity.ShortName Range [default] - description: Network short name, displayed on some phones. Optional but must be defined - type: string - default value: Range - visibility level: customer site - these values are different for each BTS and should not be left - static: 0 - valid val regex: ^[0-9a-zA-Z]+$ - scope: value must be the same across all nodes OpenBTS>
Untuk mengeset sebuah parameter konfigurasi ke nilai kosong, gunakan perintah “unconfig”. Contoh : OpenBTS> unconfig Control.LUR.OpenRegistration Control.LUR.OpenRegistration disabled OpenBTS>
Menggunakan CLI untuk mengakses sebuah node remot Secara default CLI OpenBTS beroperasi terhadap sebuah soket TCP di port 49300 dari antarmuka 127.0.0.1. ini dapat diganti dengan parameter “CLI.Port” dan “CLI.Interface” menggunakan perintah “devconfig” untuk megizinkan akses jaringan. OpenBTS> devconfig CLI.Interface 192.168.0.42 CLI.Interface changed from "127.0.0.1" to "192.168.0.42" OpenBTS>
CLI dapat terhubung ke OpenBTS dijalankan pada IP dan/atau port yang berbeda. Sediakan opsi “-p” untuk menspesifikasi sebuah port alternatif dan opsi “-t” untuk menspesifikasi alamat IP dari sistem target. Contoh :
> /OpenBTS/OpenBTSCLI -t 192.168.0.42 -p 49333
Menggunakan CLI dalam pengembangan Antarmuka CLI sederhana : membaca sebuah string command di soket CLI dan mengembalikan hasil dari string. Semua nomor diluar aplikasi dapat mengakses CLI pada saat yang bersamaan. Juga bisa mengeksekusi perintah di mode non-interactive, sehingga memungkinkan untuk menggunakan kapailitas CLI di tools “third party” (contohnya shell scripts). Dua opsi menawarkan mode operasi yang sedikit berbeda : “-c” opsi diikuti dengan sebuah perintah membuat CLI mengeksekusi perintah, cetak hasil ke STDOUT dan keluar. Tidak ada pesan selamat datang yang muncul. > /OpenBTS/OpenBTSCLI -c cellid MCC=001 MNC=01 LAC=1010 CI=10
Secara alternatif, opsi “-d” mengulangi fungsionalitas dari skrip “OpenBTSDo” dari versi awal OpenBTS. Skrip tersebut tetap tersedia dalam rilis saat ini untuk kompatibilitas.
Menggunakan OpenRANUI Rilis komersial dari OpenBTS termasuk sebuah antarmuka administratif web-enabled yang disebut OpenRANUI. Hal tersebut memungkinkan untuk memonitor dan mngkonfigur aplikasi OpenBTS. Dapat dijalankan melalui antarmuka HTTP pad lokasi berikut (BTS beroperasi pada alamat IP default 192.168.0.21) dan bisa diakses menggunakan web browser manapun : http://192.168.0.21/ranui/ Login untuk mengakses OpenRANUI adalah “openbts” dan passwordnya sama dengan akunnya (“openbts” by default). Memulai dan mengakhiri aplikasi OpenBTS Panel “Services” menyediakan informasi “kesehatan” sistem dan mengizinkan untuk memulai dan mengakhiri layanan. Klik pada tombol “manage node” untuk mengetahui versi setiap komponen yang berjalan di sebuah node. “Corresponding slides” memungkinkan untuk enable dan disable komponen. Klik tombol “Save” untuk konfirmasi. Untuk minimize node klik “done”. Mengkonfigurasi aplikasi OpenBTS Panel “Configuration” menyediakan akses yang mudah ke parameter konfigurasi primer dari komponen OpenBTS, namanya OpenBTS, SMQueue, SIPAuthServe dan RangeSIMd. Untuk lebih mudah digunakan maka dikelompokkan ke dalam “basic” dan “advanced”. Catatan : OpenRANUI tidak menyediakan akses untuk pengembangan, factory atau parameter custom. Gunakan CLI untuk mereview dan/atau menggantinya.
Indikator di sebelah kiri menunjukkan status parameter ini : putih berarti nilai parameter valid kuning berarti parameter telah dimodif tapi belum disimpan merah berarti ada nilai yang salah (nilai yang salah tidak dapat disimpan), dan abu – abu berarti parameter diset ke nilai default.
Untuk mereset sebuah parameter ke nilai default nya, pindahkan mouse ke area default dan klik di situ. Panel “audit” di OpenRANUI menyediakan audit dari konfigurasi OpenBTS saat ini. Ini bisa membantu mendeteksi masalah di setup, meskipun tidak semua pesan peringatan dibutuhkan untuk suatu masalah. Pada konfigurasi multi-node, panel “audit' akan melakukan pemerikasaan cross-node dari nilai yang perlu dikoordinasi di jaringan. Mengatur Subscribers Panel “Subscribers” menyediakan daftar yang bisa dicari dari subscribers yang telah terdaftar dengan jaringan, termasuk nama dan nomor handphone. Parameter – parameter tersebut terikat ke sebuah IMSI dan bisa diubah jika dibutuhkan.
Bisa juga menambahkan dan mencabut suatu subscribers. Klik pada “add subscriber” dan isi rincian yang dibutuhkan, kemudian klik di “add” untuk menyimpannya. Jika memiliki sebuah “writer” SIM-card Range Networks (part #8425-xxx series) terlampir di node, kamu bisa menggunakan ini untuk meng-generate COMP128v1 SIMs dengan IMSI dan Ki yang sudah diketahui, mendukung penuh RAND-SRES authentication. Klik pada “write SIM” dan isi rincian yang dibutuhkan, kemudian klik pada “write”. Data subscriber akan ditambahkan ke subscriber registry secara otomatis.
Memonitor Node Panel “Monitor” menampilkan grafik dari beban SDCCH dan TCH channel, ukuran antrian AGCH dan PCH dan level noise. Dengan memilih panel “Monitor”, nyalakan toggle di sebelah kanan menjadi posisi “enabled” untuk menginisialisasi monitor. Setiap grafik mengkaver periode selama 5 menit. Akhirnya, panel “Databases” menyediakan akses yang mudah, searchable ke database yang sedang berjalan, akan dibahas lebih rinci di Bab 4. Database OpenBTS menggunakan satu set file database sqlite3 untuk menyimpan parameter konfigurasi dan runtime data. Untuk informasi lebih lanjut tentang sqlite3, lihat website www.sqlite.org. Bab 4 mendiskusikan struktur data dan penggunaannya secara rinci. Catatan : tergantung pada konfigurasi, beberapa atau semua database OpenBTS akan mempunyai “write-ahead logging enabled”. Struktur Folder Database konfigurasi OpenBTS dilokasian di “/etc/OpenBTS”. File – file konfigurasi Asterisk dilokasikan terpisah menurut Asterisk setup (“/etc/asterisk” by default) dan database subscriber registry dilokasikan di “/var/lib/asterisk/sqlite3dir/sqlite3.db”. Tabel data run-time OpenBTS dilokasikan di “/var/run/OpenBTS”. Lokasi tersebut didefinisikan pada tabel konfigurasi dan bisa diubah sesuai dengan kebutuhan. Logging Tujuan logging OpenBTS dikendalikan oleh mekanisme logging yang disebut rsyslogd yang mencatat semua pesan log OpenBTS ke “/var/log/OpenBTS.log”. Itu semua di konfigurasi dengan
“/etc/rsyslog.d/OpenBTS.conf” seperti berikut ini : local7.*
/var/log/OpenBTS.log
Mekanisme rsyslog menawarkan rentang arsip yang powerful, laporan dan mekanisme pemberitahuan, termasuk pemberitahuan email dan routing dari pesan log untuk me-remot situs untuk memonitor jaringan. Lihat halaman manual Unix rsyslogd untuk informasi lebih lanjut. Level logging OpenBTS bisa dikonfigurasi untuk memberikan jumlah detail yang diinginkan, termasuk per-file basis.