How to become a VOIP Engineer

This is a frequent question at VoIP School. I’ve asked chatGPT for the answer and I will a comment the responses. Overall chat GPT had given a good answer. There are some missing things such as WebRTC.

To become a VoIP (Voice over Internet Protocol) engineer, you will need to acquire the following skills and knowledge:

  1. Networking: A strong understanding of networking fundamentals is essential for VoIP engineers. You should be familiar with TCP/IP protocols, subnetting, routing, switching, and firewalls. (Perfect!)
  2. Voice protocols: Familiarize yourself with voice protocols such as SIP (Session Initiation Protocol), RTP (Real-time Transport Protocol), and H.323. You should have a good understanding of how these protocols work and their significance in VoIP systems. (H.323 is kind of obsolete in my opinion)
  3. VoIP hardware: Understand the hardware components that make up a VoIP system, such as IP phones, gateways, and switches. (Correct!)
  4. Quality of Service (QoS): QoS is crucial in VoIP systems to ensure that voice traffic is given priority over other types of traffic. Learn about QoS techniques such as traffic shaping, traffic policing, and packet prioritization. (Lately with high speed networks, QoS is having less and less importance in my modest opinion)
  5. Troubleshooting: Being able to diagnose and resolve issues in a VoIP system is critical. You should be familiar with common VoIP problems such as call drops, jitter, latency, and echo, and know how to troubleshoot them. (For sure)
  6. Security: VoIP systems can be vulnerable to attacks, so it is important to understand how to secure them. Familiarize yourself with techniques such as encryption, access control, and network segmentation. (Correct)
  7. Programming: Programming knowledge may be useful for customizing or creating VoIP applications and services. (Correct)
How about open source voice?

If you are interested in becoming a VoIP engineer specifically focused on open-source voice technologies, you will need to acquire additional skills and knowledge in the following areas:

  1. Open-source VoIP software: Familiarize yourself with popular open-source VoIP software such as Asterisk, FreeSWITCH, Kamailio, and OpenSIPS. Understand how to install, configure, and customize these platforms. (Perfect!)
  2. Linux operating system: Most open-source VoIP software runs on Linux, so a good understanding of Linux operating system is necessary. Familiarize yourself with commands, file systems, and security. (Good)
  3. Scripting languages: Open-source VoIP software often requires scripting to customize or automate tasks. Familiarize yourself with scripting languages such as Python, Perl, and Bash. (Correct!)
  4. Database management: Many open-source VoIP software solutions require the use of databases to store configuration data and call records. Familiarize yourself with database management systems such as MySQL, PostgreSQL, and SQLite. (Very important, more than 35% of the time spent in tech support is related to databases and CDR handling at our company SipPulse)
  5. Virtualization: Open-source VoIP software can be deployed on virtualized environments. Familiarize yourself with virtualization technologies such as VMware, VirtualBox, and KVM. (All VoIP engineers will do a lot of these, plus cloud, AWS, Azure, Oracle…)
  6. Web technologies: Open-source VoIP software can be integrated with web applications. Familiarize yourself with web technologies such as HTML, CSS, JavaScript, and REST APIs. (Maybe, REST APIs are important).

You can acquire the necessary skills and knowledge by taking courses, attending workshops, and gaining hands-on experience by contributing to open-source projects, participating in online communities, and setting up your own VoIP systems using open-source software. Additionally, you can obtain industry certifications such as the Digium Certified Asterisk Administrator (dCAA) and the FreeSWITCH Certified Professional (FSCPTM) to validate your skills and knowledge in open-source VoIP technologies. (Here it is funny, The FSCPTM does not exist, sometimes GPT guess responses, how he got on this?)

Conclusion
Start with Networking, than Linux then choose one specific platform. Asterisk is easy to use and one of the simplest ways to start. On the next post I will start recommending online courses for each topic to become a VoIP Engineer.

 

 

Compile OpenSIPS 3.3 on Debian

Sometimes we need to compile, mainly when we have to apply a patch. I’m always look for the instructions, mainly the dependencies install, so it is below.

1 – Install the dependencies

apt-get install gcc bison flex make openssl \
libmariadbclient-dev perl libdbi-perl libdbd-mysql-perl \
libdbd-pg-perl libfrontier-rpc-perl libterm-readline-gnu-perl \
libberkeleydb-perl mariadb-server ssh libxml2 libxml2-dev \
libxmlrpc-core-c3-dev libpcre3 libpcre3-dev subversion \
libncurses5-dev git ngrep libssl-dev libjwt-dev libjson-c-dev \ 
libmicrohttpd-dev

2 – Download the source code

cd /usr/src
git clone --recursive https://github.com/OpenSIPS/opensips.git -b 3.3 opensips-3.3

3 – Configure the modules you want to include. Don’t forget to add the required dependencies. There are still some not covered in this guide. I’ve included some that I use most such as “libpcre” for the “dialplan” and libssl for tls.

make menuconfig

4 – After choosing the modules compile and install. I usually use the prefix=/ to have the configuration on /etc/opensips rather than /usr/local/etc/opensips as in the default configuration.

make prefix=/all
make prefix=/ install

 

Install RTP Engine on Debian 11

RTPengine is a highly efficient and versatile media proxy that enables telecommunication and VoIP providers to handle real-time media streams in a scalable and flexible manner. Whether you need to proxy media streams between endpoints, record media streams, or manipulate them in some other way, RTPengine provides the tools you need to get the job done. In this post we will show how to install it on Debian 11. This OS version relies on nftables rather than iptables and rtpengine relies on iptables. Thus it is required to remove nftables and a add iptables back.

apt-get remove --auto-remove nftables
apt-get purge nftables
apt-get update

Now install iptables

apt-get install iptables-persistent iptables

Install the packages required to clone the repository

apt-get gnupg gnupg2 git mc

Clone rtpengine, please select the latest branch instead of the master

cd /usr/src
git clone https://github.com/sipwise/rtpengine.git -b mr11.2.1

Install the dependencies

apt install libopus-dev dpkg-dev default-libmysqlclient-dev gperf libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev libbencode-perl libcrypt-openssl-rsa-perl libcrypt-rijndael-perl libcurl4-openssl-dev libdigest-crc-perl libdigest-hmac-perl libevent-dev libglib2.0-dev libhiredis-dev libio-multiplex-perl libio-socket-inet6-perl libiptc-dev libjson-glib-dev libjson-perl libmosquitto-dev libnet-interface-perl libpcap0.8-dev libpcre3-dev libsocket6-perl libspandsp-dev libssl-dev libswresample-dev libsystemd-dev libwebsockets-dev libxmlrpc-core-c3-dev libxtables-dev markdown python3-websockets zlib1g-dev debhelper-compat libbcg729-dev

Check if there is no dependency left and install accordingly.

apt install linux-headers-$(uname -r)
cd /usr/src/rtpengine \
dpkg-checkbuilddeps

Build the package.

dpkg-buildpackage -d

Install.

cd /usr/src/
export PATH=$PATH:/sbin
dpkg -i *.deb

Check the status

systemctl restart ngcp-rtpengine-daemon
systemctl status ngcp-rtpengine-daemon