sudah 1 tahun ya, Buk..
rasanya Ibuk masih di sekitaran saja..
semoga tenang istirahatmu..
miss you..
Nggambleh. Notes for my future self.
Akhir-akhir ini jadi kudet karena banyak hal yang harus dikerjakan, termasuk kudet dalam berita bahwa pemilik lisensi G729 memasukkan codec ini ke Royalty Free license per tanggal 1 Januari 2017. Artinya kedepan akan banyak pengembang library untuk codec ini supaya bisa digunakan di platform opensource telephony. Salah satunya yang sudah dipakai di kantor adalah mod_bcg729 (yang merupakan modifikasi dari mod_fsg729, hanya saja semua code dari Intel dimodifikasi dan dibuang). Codec diambil dari http://www.linphone.org/eng/documentation/dev/bcg729.html, jadi pastikan pada saat instalasi mod_bcg729 berikut ini, mesin dalam kedaan tersambung ke internet, karena pada saat proses instalasi akan mendowload source bcg729.
Berikut ini adalah cara instalasi codec G729 di SBC FreeSWITCH:
################################ ### FreeSwitch headers files found in libfreeswitch-dev ### FS_INCLUDES=/usr/include FS_MODULES=/usr/lib64/freeswitch/mod ################################
codec,G.729,mod_bcg729
INVITE SDP: ... a=rtpmap:18 G729/8000 a=fmtp:18 annexb=no a=rtpmap:101 telephone-event/8000 ... 200 OK SDP: ... m=audio 31910 RTP/AVP 18 101 a=rtpmap:18 G729/8000 a=fmtp:18 annexb=no a=rtpmap:101 telephone-event/8000 ...
Di perangkat FreeSWITCH yang kami deploy, dapat error seperti ini:
SIP/2.0 422 Session Interval Too Small
menyebabkan call langsung terputus. Belum kedapatan trigger dari mana tapi akhirnya kami workaround dengan menambahkan config di bawah ini ke dalam sip profile:
<param name="session-timeout" value="1800"/> <param name="enable-timer" value="true"/> <param name="minimum-session-expires" value="120"/>
Lalu reload dengan cli:
freeswitch> sofia profile restart
“CODEC anu itu butuh bw-nya brapa sih?”
Sering banget dapet pertanyaan ini. Dan kebetulan sekali ada thread di forum ASTERISK.ID yang menanyakan hal sama.
(Terima kasih mas Asoka!)
Jadi, jika ada codec yang di tabel disebutkan bw nya 64kbps, itu kalo jalan di jalur “bersih” seperti E1, DS0, dan teman-temannya. Ketika masuk ke ranah Internet Protocol (IP), akan ada penambahan header IP dan UDP yang mengakitbatkan konsumsi bw jadi bengkak sedikit, menjadi kurang lebih 85 – 87 kbps an.
Itu baru satu arah. Kalo ngobrol di telpon pastinya dua arah, jadi harus dikalikan dua, kira-kira menjadi 170 – 174kbps an per call. Untuk lebih lengkapnya bisa dibaca di:
https://www.voip-info.org/wiki/view/Bandwidth+consumption
Dan berikut tabel untuk mudah jadi pengingat (terutama untuk saya sendiri):
| Codec | BitRate | NEB (kbps) | Conversation (2 ways) (kbps) |
| G.711 | 64 kbps | 87.2 | 174.40 |
| G.729 | 8 kbps | 31.2 | 62.40 |
| G.723.1 | 6.4 kbps | 21.9 | 43.80 |
| G.723.1 | 5.3 kbps | 20.8 | 41.60 |
| G.726 | 32 kbps | 55.2 | 110.40 |
| G.726 | 24 kbps | 47.2 | 94.40 |
| G.728 | 16 kbps | 31.5 | 63.00 |
| iLBC | 15 kbps | 27.7 | 55.40 |
*NEB: Normal Ethernet Bandwidth
“BLOG mu kok sudah ndak update lagi?”, demikian tanya seorang teman kepada saya. Wah iya ya? Sudah lama ya?
Sejak postingan terakhir, pada bulan Januari yang lalu, banyak hal yang sedang saya jalani, antara lain, akhirnya saya bekerja di sebuah perusahaan telekomunikasi dengan ijin jenis Jaringan Tetap Lokal Berbasis Circuit Switch.
Yap! Akhirnya mimpi saya terwujud untuk bekerja di sebuah perusahaan penyelenggara layanan PSTN, bahkan saya mendapat kesempatan untuk mengembangkan layanan berbasis ITKP juga.
Di tempat yang baru ini, saya jadi “bodoh” lagi, dan harus belajar banyak hal. Saya menjadi murid lagi. Belajar dari kolega-kolega yang sudah puluhan tahun bermain dengan jaringan SS7/C7. Belajar peraturan-peraturan pemerintah yang berhubungan dengan layanan ini sehingga tidak harus kejar-kejaran dengan pihak berwajib seperti yang pernah saya alami beberapa tahun yang lalu, :))))).
Dalam waktu dekat jika tidak ada halangan, saya janji berbagi mengenai bagaimana VoIP berperan besar di sini.
Untuk sementara saya idle sampai beberapa waktu ke depan.
I will surely blog a lot more.
n. the tendency to give up trying to talk about an experience because people are unable to relate to it—whether through envy or pity or simple foreignness—which allows it to drift away from the rest of your life story, until the memory itself feels out of place, almost mythical, wandering restlessly in the fog, no longer even looking for a place to land.
http://www.dictionaryofobscuresorrows.com/post/96261999250/exulansis
Berawal dari keinginan untuk menyambungkan dua buah IP PBX Elastix, yang satu menggunakan ip address public, sedangkan yang lain berada di NAT. Untuk menjadikannya full-mesh, idealnya masing-masing bisa “melihat” ip address satu sama lain (bisa ping dari kedua arah). Tapi dalam kondisi ini, hanya IP PBX yang berada di bawah NAT lah yang bisa ping ke IP PBX dengan ip address public, sementara IP PBX dengan ip address public tidak bisa melakukan ping ke IP PBX yang berada di bawah NAT (ribet banget bahasanya ya).
Karena hanya IP PBX Kantor A yang bisa melakukan ping ke IP PBX Kantor B, maka IP PBX Kantor A yang harus registrasi ke IP PBX Kantor B. Setelah terjadi registrasi, masing-masing IP PBX akan bisa melempar panggilan melalui ip address yang tercatat di registrasi tersebut. Caranya adalah sebagai berikut:
Dengan asumsi, ip address private IP PBX kantor A adalah 10.0.10.10 dengan nat ip public 1.1.1.1, dan ip address public IP PBX kantor B : 2.2.2.2.
Karena IP PBX Kantor B menggunakan ip address public, maka IP PBX ini yang akan menerima registrasi. Tambahkan informasi user untuk IP PBX Kantor A di iax_custom.conf (untuk menambahkan baris berikut, sebaiknya melalui webGUI, sepert yang pernah saya bahas di postingan http://www.otakudang.org/?p=356 ):
[KantorA] username=KantorA secret=KantorA context=from-internal host=dynamic type=friend port=4569 qualify=yes permit=0.0.0.0/0.0.0.0 requirecalltoken=no
Lalu tambahkan trunk IAX2 dari webUI, dengan keterangan sebagai berikut:
Trunk Name: TrunkToKantorA Peer Detail host=dynamic type=peer nat=yes qualify=yes insecure=port,invite context=from-internal
Di mesin IP PBX kantor A tambahkan trunk IAX2 dari webUI dan isikan sebagai berikut:
Trunk Name: KantorA host=2.2.2.2 username=KantorA secret=KantorA type=friend nat=yes context=from-internal qualify=yes port=4569
Dan di bagian Register String isikan:
KantorA:KantorA@2.2.2.2:4569
Jangan lupa selalu klik Submit Changes dan Apply Changes baik di IP PBX kantor A dan kantor B.
Pastikan bahwa IP PBX kantor A sudah registrasi ke kantor B dengan melihat console Asterisk masing-masing (asterisk -vr) dengan perintah: iax2 show peers
Jika berhasil, seharusnya akan tampil seperti :
IP PBX Kantor A
KantorA*CLI> iax2 show peers Name/Username Host Mask Port Status KantorA 2.2.2.2 (S) 255.255.255.255 4569 OK (6 ms) 1 iax2 peers [1 online, 0 offline, 0 unmonitored]
IP PBX Kantor B :
KantorB*CLI> iax2 show peers Name/Username Host Mask Port Status KantorA 1.1.1.1 (S) 255.255.255.255 4569 OK (10 ms) 1 iax2 peers [1 online, 0 offline, 0 unmonitored]
Dari kantor B, IP PBX kantor A akan muncul dengan ip address router NAT-nya. Jika masing-masing server sudah bisa melihat ip address host tujuan, tinggal kita tambahkan saja OutBound Route nya. Sudah tau kan caranya?
Selamat mencoba!
Pernah mengalami host Ubuntu tidak bisa ping ke mana pun, padahal kita bisa browse ke mana pun?
Jadi ketika saya coba ping (di /etc/resolv.conf sudah saya isikan nameserver 8.8.8.8 dan 8.8.4.4) hasilnya:
# ping detik.com ping: detik.com: Name or service not known
Tapi ketika menjalankan nslookup:
# nslookup > detik.com ;; Got recursion not available from 8.8.8.8, trying next server Server: 8.8.4.4 Address: 8.8.4.4#53 Non-authoritative answer: Name: detik.com Address: 203.190.242.211 Name: detik.com Address: 103.49.221.211
Hal ini sangat mengganggu kegiatan di shell prompt. Tapi setelah ke sana ke mari, akhirnya ketemu permasalahannya. Jika kita check file /etc/nsswitch.conf, kemungkinan kita akan mendapati baris:
hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns
Jika iya, edit baris tersebut menjadi:
hosts: files dns
Lalu untuk memastikan tidak terjadi lagi hal seperti di atas, kita bisa menghapus libnss-mdns:
# apt-get remove libnss-mdns --purge Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: libnss-mdns* 0 upgraded, 0 newly installed, 1 to remove and 2 not upgraded. After this operation, 110 kB disk space will be freed. Do you want to continue? [Y/n]
Nah sekarang ping ke mana pun sudah tidak ada masalah:
# ping detik.com -c3 PING detik.com (103.49.221.211) 56(84) bytes of data. 64 bytes from 103.49.221.211 (103.49.221.211): icmp_seq=1 ttl=57 time=27.6 ms 64 bytes from 103.49.221.211 (103.49.221.211): icmp_seq=2 ttl=57 time=27.1 ms 64 bytes from 103.49.221.211 (103.49.221.211): icmp_seq=3 ttl=57 time=29.1 ms
Pas lagi create database untuk OpenSIPS, saya mendapati error berikut:
# opensipsdbctl create MySQL password for root: INFO: test server charset INFO: creating database opensips ... INFO: Using table engine InnoDB. INFO: Core OpenSIPS tables successfully created. Install presence related tables? (y/n): y INFO: creating presence tables into opensips ... ERROR 1101 (42000) at line 2: BLOB, TEXT, GEOMETRY or JSON column 'extra_hdrs' can't have a default value ERROR: Failed to create presence tables!
Setelah baca sana sini ternyata ini berhubungan dengan setting MySQL yang terlalu strict. Untuk mengakali sementara, edit file my.cnf dan tambahkan baris berikut:
[mysqld] sql-mode = ""
kemudian restart layanan MySQL. Ulangi lagi proses penambahan database OpenSIPS, jika lancar akan seperti ini:
# opensipsdbctl create MySQL password for root: INFO: test server charset INFO: creating database opensips ... INFO: Using table engine InnoDB. INFO: Core OpenSIPS tables successfully created. Install presence related tables? (y/n): y INFO: creating presence tables into opensips ... INFO: Presence tables successfully created. Install tables for imc cpl siptrace domainpolicy carrierroute userblacklist b2b cachedb_sql registrant call_center fraud_detection emergency? (y/n): y INFO: creating extra tables into opensips ... INFO: Extra tables successfully created.
Wah, belum sampe lama memanfaatkan AsteriskNow agak lama, baru-baru ini muncul komunitas yang sudah melakukan forking dari project Elastix. Ini kabar yang cukup menggembirakan. Artikel mengenai pengembang Issabel ini bisa dibaca di web berikut:
Dan ada juga artikel berbahasa spanyol :
https://www.sinologic.net/blog/2016-12/la-comunidad-elastix-crea-el-proyecto-issabel.html
Berikut adalah terjemahannya:
===========================================================================================================
This December is quite frantic, perhaps because of the importance of the theme and is that, as we announced last week, 3CX has bought the brand Elastix and the entire ecosystem (forums, lists, emails, etc.) so that The community has taken action in the matter and has created an Elastix fork which they have christened ISSABEL.
Unlike Elastix, the new ISSABEL project is not based on the system of ” benevolent dictator ” consisting of a single company that controls and manages the project from start to finish with the condition of being “benevolent”, but it ISSABEL born Directly from the own members of the Elastix community and keeps the door open to the rest of the community to enter the project and actively participate.
Within the community there are developers, system administrators, Linux and Asterisk experts, and companies that want a communications system with which to work, modify, distribute … so the ISSABEL project is not only maintained by users related to The philosophy of free software and free unified communications, if not also by companies that will provide business support and quality services to all those who require it. The difference with Elastix is that decisions on the “core” will not be taken unilaterally by a single entity but it will be by consensus of the general community using the usual social channels ( forums, twitter, lists, etc. ) for Agree on the decisions and direction of the project.
ISSABEL is based on the GPL version of the Elastix 4 project, a distribution that, as many remember, the members of the community came together to make an economic crownfunding and to give a boost to the project, among other things, to update the system Operative to CentOS 7, to update the versions of diverse free projects, reason why it is 100% legal, ethical and does not have any type of legal problem as some people and webs suggest. Any user of Elastix 4 does not have to do anything to continue receiving updates, only to change the repositories to use those of ISSABEL instead of the old Elastix systems and the system will be updated as normal.
As you can see, the only thing that changes in the interface is the name, and therefore, all the functionalities will continue working as before.


For all purposes, Elastix 4 passes called ISSABEL and any user who was already working with Elastix 4, you can continue working as normal with ISSABEL.
More information: http://www.issabel.org