Getting started with VoIP

I have been living in different countries for the last 10 years. Although I can get in touch with friends and family using gtalk, skype, or you name it, having an extremely cheap phone line to receive or make calls on can come in handy.

Given my love for technology, trying out VoIP (or voice over IP, or phone over the internet), seemed like the next logical step.

There are 2 things you need to do to get started with VoIP:

  1. Find a VoIP provider, what people in the industry refer to as an ITSP (aka Internet Telephony Service Provider). A fancy name for a company with tons of phone lines and good internet connectivity willing to turn phone traffic on good old phone networks (called PTSN, or public switched telephone network) into internet packets.

  2. Get a VoIP phone, eg, any sort of "telephone like thingy" that is able to route and receive calls over the internet using the VoIP protocol. We will talk more about this later, but what I mean by "telephone like thingy" can take many different shapes and colors: it can be an iphone or android app installed on your smart phone, a black box with a telephone plug on one side, and an internet plug on the other side (generally referred to as ATA - Analog Telephone Adapter), or something that pretty much looks like a phone from the 60s but happens to have an ethernet plug rather than a telephone one.

Finding a VoIP provider

Let's start with finding a VoIP provider. Here is what I discovered with a few hours of research and some experiments:

  • Wherever you live, it is likely that your local telephone or internet provider will also provide VoIP services.

    For example, Comcast (sigh...) about once a month sends me a postcard pledging the qualities of their VoIP contracts and how much I can save by having a contract with them.

    Give them a call and enjoy the experience, something convenient may (or may not) come out of it. Don't stop there, though: do a bit of research before signing up any contract, you may end up with a much better deal.

  • If you google for about 15 minutes the word "VoIP provider", "ITSP", or "cloud phone" you will find plenty of VoIP internet providers. Generally you can find three classes of providers:

    1. Those who specialize in outbound phone calls, often targeting the international market.

      They will not give you a phone number to receive calls on, or will charge you a lot for one, but they will allow you to call pretty much anywhere in the area they cover for extremely cheap rates.

      In my case, for example, I found a VoIP provider that would charge me half a cent a minute, including cell phones, for many countries in Europe! This is significantly cheaper than what my friends or relatives even pay over there!

      The main distinguishing factors for those companies are the rates: how much you will pay to call a specific country, availability of flat rates, and so on. Shop around, and you will find something that works well for you, but remember to check for the countries you call most often.

      Also, pay attention to what they allow you to do with the caller id, or CID: some do not allow you to set a CID. Any call you make will appear as coming from an "unknown phone number" or some other "weird crazy phone number" to the receiver. If you plan to use the phone for business, this might not sound very attractive.

    2. Those who specialize in offering you a presence somewhere (... or anywhere in the world).

      Those companies allow you to "rent" or "buy" a phone number, even toll free numbers, for like 2 - 10 $ a month pretty much anywhere in the world, and route all incoming calls to your VoIP phone.

      Some of those providers just charge this fixed cost, others will add a setup fee, while others will also charge you a per-minute fare for every incoming call.

      Watch out, however, that if you use their services to also make outbound calls they generally charge much more than the providers I talked about earlier. And don't be fooled: 5 cents a minute compared to 0.5 is 10 times as much! Even when it comes shy to what your traditional provider is charging you for the same call.

      The main distinguishing factors here are the costs, if they let you choose the phone number, what numbers they are able to broker (all area codes? 800? ...) and how fancy their system is in handling incoming calls.

      Talking about fanciness: one provider may charge for every voice mail left on your line, allow you to receive FAXes as well, they may provide multiple lines so you can have more than one incoming call at any given time, or provide a full fledged PBX you can program with a web interface with the ability to provide voice menus, automated answers, and so on.

      In my case, I found a company that provided a "basic" phone number (no voice mail, no fax, just inbound phone calls...) in the UK for free! Literally: no monthly subscription, no per minute charge, no setup fee, for as long as you keep using their number.

    3. Those who sell a full package pretty much equivalent to what you would buy from a local phone company. The package includes one or more phone numbers, one or more inbound or outbound lines, and fancy services like voice mails, PBX, FAXes and so on.

      They generally seem to target customer who are used to the traditional market, and are fearful of taking bold moves. The prices I found here and structure of the contracts, although significantly cheaper and more flexible, are similar to traditional providers.

Something that I greately enjoyed and is extremely important to note is that most VoIP phones allow you to use multiple providers, at once.

That's right: you can configure an account and use it only to make outbound calls, and another account (or more than one) to receive inbound calls.

For me, this was a revelation: I immediately opened an account with the cheapest outbound call provider I could find for Europe, and... got an inbound phone number for FREE in the UK.

If I was planning to use VoIP for my business I would probably look to buy my inbound phone numbers from a more reputable source, though: I would not want my phone number to disappear with a VoIP provider running out of business, or lose customers because they continuously have outages.

I would however have no qualms about having contracts with multiple outbound providers, and just use the cheapest one that works at any given time.

Talking about the telephone like thingy

Now that you have found a VoIP provider that you like with reasonable fares, let's see what you need to buy to get started.

First of all, you don't have to buy anything: VoIP is based on open protocols, and just like you have a browser on your phone or your computer to visit any web page, you can install an app to make or receive phone calls through the internet using any VoIP provider.

There are plenty of apps, some are good, some are bad. Just look on your favourite search engine or the market on your phone for "VoIP" and you will find as many as you need.

The main thing to be aware of here is that many web sites refer to VoIP apps as any application that lets you make phone calls through the internet. Many apps however use proprietary protocols and will only provide services through their one provider.

If you want to use a random provider like the ones you found in the previous section and do not want to be tied to a specific company, you need to find an app that lets you use the standard protocols. Look for keywords like "SIP" or "RTP", and read the comments.

Let's say now that you want a real phone, one of those big devices to keep on your desk that rings from time to time.

There are plenty of choices to go by:

  • You can buy a classic VoIP phone. You can find those in all sorts of shapes and colors: from desk phones that look like they are coming out from a movie in the 60s, to bleeding edge cordless phones. From terminals that look more like computers to devices running android.

    One important thing to keep in mind is that VoIP phones require both a power plug, and internet connectivity. Requiring internet connectivity means that you either need wifi, but you need to buy a phone that supports it, or an ethernet cable from your modem. Wifi, for voice, may turn out to introduce jitter or delay, I personally would prefer cable.

    Each one of those phones will need to be configured to connect to your VoIP provider. This can happen through menus on the phone itself, or by connecting a computer to their ethernet plug. Just follow the instructions that come with the phone.

  • You can buy an ATA. This is a fancy name for a small box that has an ethernet / wifi connection on one side, for The Internet, and a telephone connection on the other.

    You can then connect your existing phones to the ATA, just like you would connect your phone to any other plug.

    ATAs again come in all shapes, colors, costs and features: you can spend a few tens of $ for something pretty basic, to a few thousand dollars for something to use for your business.

    One thing to keep in mind about ATAs is that many do not allow you to use old modems (like for a POS, for credit card payments) or FAX machines. Both require special support.

    Look at the fine lines before buying the equipment. For faxes, you probably want devices (and VoIP providers) that support the T.38 standard. For modems, many ATAs provide options to use a "non compressing codec", like the G.711. This works, but is often brittle and unreliable.

    You are better off buying a POS that connects directly via internet protocols, and/or pay for a VoIP provider that does FAX to PDF email or similar.

In my case, I went for a VoIP DECT set of phones: a small black box connecting to the internet, able to control up to 6 cordless phones using the DECT standard.

Before choosing the phone I wanted I spent a couple hours looking at the manual online, though: I wanted to ensure the box allowed me to configure multiple VoIP providers, using a specific VoIP provider for outbound calls, and ring phones differently based on the inbound call.

Although this is easy to do in terms of technology, some phones and ATAs have web interfaces or configuration files that only allow limited ability to specify what to do.

On the other end of the spectrum, you can find more expensive devices that allow you to program what to do to the letter: "if number starts with this prefix ... then use this provider", offer PBX functionalities, and so on.

Another alternative is to install a software like Asterisk, FreeSwitch or FreePBX on one of your servers / desktops. Have your phones connect to it, and have your server connect to VoIP providers. Those softwares allow you to do pretty much anything you may ever dream of.

Setting things up

There is really not much to say here. Once you subscribe with a VoIP provider, they will give you a username, password, a sip server, port number, and maybe a stun server.

If you know nothing about those, don't worry: connect your VoIP telephone or ATA box to a power plug, connect it to your modem with an ethernet cable, power it up, and follow the instructions.

Most often all you have to do is enter the parameters that were given to you in the corresponding boxes, and try it out.

If it doesn't work the first time, double check that you typed everything in correctly, and try again. Worst comes to worst, Google for your phone, for the VoIP providers, and you will likely find plenty of documentation.

A few words about your internet connection

If things don't work after the second shot, or if you are curious about how things are supposed to work, here is a short overview.

VoIP is normally based on two protocols:

To draw a parallel with traditional phone lines, the first protocol is used to make your phone ring or someone else's phone ring, it is used to "control phones and subscribe to events on phone numbers". But once you pick up the phone or the remote end answers, an algorithm (codec) will come into play to transform your voice in tiny 0s and 1s, while the RTP protocol will be taking care of transferring those tiny 1s and 0s from one end of the internet to the other.

That's right, as the name of the protocol suggests, SIP is used to establish a session between two VoIP endpoints, while RTP is used to transfer media (your voice, sound) in real time from one phone to the other.

When you have NAT

If you are a tiny bit familiar with networks, you may have spotted one of the most common issues related to VoIP at this point: two VoIP phones need to send packets to each other, directly.

This sounds easy, but most residential internet connections do not have a public IP, which means they don't have an address that can be used by others to initiate a connection to.

Most residential connections are in facts behind NAT, or Network Address Translation, which means that many devices (or customers) are hidden behind a single IP address, which may even change over time!

To draw a parallel, it is like if you lived in a condo where mail cannot indicate a name or an apartment number, only the message it is replying to.

The most common symptoms of having NAT related problems is having your phone ring, but once you answer, you can't hear anything or the other party can't hear your voice. Other symptoms include ability to make outbound calls, but inability to receive inbound calls.

But fear not, VoIP has been around for long enough that in most cases you will be able to find a solution.

The most common solutions and workarounds, include:

configuring a STUN server
Nothing too complicated: if you search your VoIP provider web site, you will likely find the address of a STUN server they provide for their customers. Most VoIP phones and boxes at this point allow you to enter, in their configuration, an optional STUN server to use. Just fill the box! STUN allows your phone to discover how your connectivity is setup and communicate it to your VoIP provider. If you are lucky, just configuring a STUN server will solve all your problems.
changing the NAT configuration of your modem
Generally it is the modem your ISP installed in your house that performs NAT. If you spend some time looking at its configuration you can probably instruct it to forward all the VoIP traffic to your phone. One way is to just, well, forward all incoming traffic to your modem. Another way is to discover the ports used by your phone (or well, configure it to only use some ports) and make sure that those ports, on your modem, are forwarded to your phone. The normal port used by SIP is 5060, but RTP negotiates the port numbers as part of the protocol exchange.
setting a lower keepalive interval
Most phones allow you to configure a keepalive timer. If this is disabled or the interval is too long, a NAT device may think that your connections are dead, forget the association about public port / ip and internal port / ip, closing the port you need to receive calls on. If you decrease this time to send a message once a minute or every 30 seconds, the connection will be kept opened, which will help ensuring that SIP will work. It does not help with RTP, though.

If everything fails or not comfortable changing those settings, ask your ISP or VoIP provider. For a small fee, your ISP may be able to give you a public IP address to use, upgrade your modem or change its configuration to something that better supports VoIP. Some modems and NAT devices even have explicit support for VoIP and SIP, meaning that they know how the protocols work, and will do the right thing for you without too much effort.

When you have a public IP

In my case, my ISP provided me with a public (and static) IP address. With no NAT in between and a well known address, setting up VoIP turned out to be a breeze.

Problems however started a few days later, when my phone kept ringing every half an hours showing calls from random numbers (like 200, 500, 2000, ...) but without anyone on the other end of the line.

With a public IP address, no NAT, and no firewall, anyone can try to connect to your phone and control it over the internet.

Not only instruct your phone to initiate an inbound call, making it ring, but also reconfigure it or steal the username and password with your VoIP providers by accessing the web interface.

If you put your phone systems on a public IP address, you should:

  • Make sure the control panel to configure the phone system is protected behind an username and password. Make sure to change them.

    My phone even allowed me to disable the configuration interface entirely, until re-enabled by physically pushing buttons on the phone itself.

  • Check if the phone has any parameters to restrict inbound phone calls to allow only the VoIP providers you configured to make the phone ring.

    On my Panasonic phone, this feature was called "SSAF" or "SIP Source Address Filtering".

In general, installing your phone behind a firewall or NAT device might be wise in terms of security.

Talking about security

In the modern day and age many web sites like google or github use strong encryption by default. Governments have been exposed to snoop on our conversations, and privacy breaches make headlines almost daily.

Despite that, I was surprised to discover that with VoIP using encryption is no easy task.

Not because the technology does not support encryption: standards to encrypt traffic have existed for a very long time. The main issues I found are:

  • It is hard to find VoIP providers that allow the use of encryption. Those who do seem to target the security market, and ask for a premium price to offer you the privacy you deserve.

  • It is hard to find VoIP phones (hardware, ATA, ...) that support encryption and allow to configure it easily.

The general excuse is that PSTN networks, the old telephone networks, use no encryption and provide no protection. This means that as soon as your conversation hits the old phone networks, who knows who is snooping on those wires.

Still, encryption for network communications with all its pitfalls is not that hard to deploy today, and is becoming the default for many applications.

VoIP providers in different countries are fairly common, and knowing that my traffic was at least encrypted for as far as it is easy to do so would give me some peace of mind.

As it is, my neighbors, anyone who can access the box next to my house, or any of the ISPs my traffic goes through, any country it traverses, can easily hear what I say when talking with my friends (or my bank?).

With encryption, my traffic would be protected all the way to the servers of the VoIP provider somewhere in Europe, and likely only be in clear once it hits the national phone network.

Conclusions

I have been using VoIP for a couple weeks now. Despite a few hours of phone calls across the globe, I have been charged less than a dollar.

I have a phone number people can call me on in Europe, and setting up the line costed overall less than 10 $, with no montly fees.

The largest expense by far was butying the DECT ATA and a few cordless phones: less than 200 $, and an expense I would have made anyway even if I bought a traditional line.

Except for the encryption part of it, so far I am very happy with the outcome.

I have to thank the reddit community for all the help in getting started. They pointed me the right direction, and provided links to fill my poor knowledge of the technology.


Other posts

  • A simple way to generate snippets in python The Problem Let's say you want to add a search box to your web site to find words within your published content. Or let's say you want to display a l...
  • I/O performance in Python The Problem I am writing a small python script to keep track of various events and messages. It uses a flat file as an index, each record being of th...
  • Cleaning up a CSS Let's say you have a CSS with a few thousand selectors and many many rules. Let's say you want to eliminate the unused rules, how do you do that? I s...
Technology/Python