What is VoIP? Voice over IP or VoIP consists in transmitting voice over an IP protocol. This is a very broad concept and there are many protocol alternatives. It is truly a protocol soup. Voice is packetized so it can be transmitted over an IP network. The IP protocol was not designed specifically for transporting voice.
IP Protocol One of the most well-known protocols Its name comes from Internet Protocol. This protocol offers a service with ”no guarantees” and is also referred to as ”best effort”. The packets can arrive out of order, and be reordered at the destination. Some packets can even be lost on the way. This disorder and loss of packets can affect the quality of the voice. Despite all of this, intelligent ways have been found to solve these problems in the best way possible.
IP address (1) Its a unique number that identifies a host connected to an IP network. Its made up of 32 bits, or 4 octets. In practice a notation is used in which each octet is translated into decimal, and separated with a period. An example of an IP address is 18.104.22.168. An IP address is composed in two parts: One identifies the host, and the other identifies the network to which that host belongs. To find these parts another parameter is used, called a network mask.
IP address (2) The network mask is a 32 bit binary number that is also represented in a notation that is similar to the IP address. It begins with ones and continues this way until it reaches a number of ones equal to the portion of the IP address that corresponds to the network.
IP address (3) Therefore, in the previous example we obtain an IP address of 22.214.171.124 with a mask of 255.255.255.0 belonging to the 126.96.36.199 network. The previous mask was a 24 bit mask, since there were 24 ”ones”. Once the network where the host is located is known it is easier to send the IP packets to their destination. Routers store tables of routes or rules on how to find other networks
IP Packets (1) An IP packet contains all the necessary information to arrive to its destination. It can be divided into two parts: the header and the payload. The header contains information that allows the packet to be delivered to its destination, and the payload retrieved. This header decreases slightly the quantity of information that can be transported since it occupies space. The payload can be used to encapsulate other protocols like UDP or TCP.
IP routing Routers are necessary to direct packets on its way to a destination. Routers are devices with tables of routes. This “table of routes” is made up of destination networks, and for each one the IP address of the router to reach them. The router that provides a route to external networks is called a gateway. The IP packet that arrives at the router is examined to see what network it belongs to, the proper route is chosen, and the packet it is sent there.
TCP Protocol (1) Transport Control Protocol It is an IP protocol that allows packet retransmission, packet order management, and receipt acknowledgement. To achieve this goal, TCP carries additional information that adds weight to the packet. That is why it is not recommended for real time applications like voice. However, it can work for voice signaling.
TCP Protocol (2) TCP introduces the concept of port. A port is an abstraction that allows us to relate flows of data with services on the network. For example, port 80 corresponds to the Web service, or HTTP protocol.
UDP Protocol UDP (User Datagram Protocol) is another transport protocol. It divides information into packets called datagrams. This protocol doesnt care if the data arrives with errors or if it doesn´t arrive at all. That is the main difference with TCP. This is why it introduces little extra weight to the IP packet which makes it ideal for real-time applications like voice.
VoIP Signaling As in traditional telephony, its necessary to signalize VoIP calls. There are some alternatives in signaling protocols, like SIP, H.323, MGCP, IAX2, and others. The most popular protocols on Asterisk are SIP and IAX2. Regarding SIP or H.323, many people confuse them and think that voice is transmitted through this protocol, but it is only used for signaling.
VoIP Transport RTP means Realtime Transport Protocol. The RTP protocol is the one that really transports encoded audio. RTP is transported over UDP. Using SIP, audio is transmitted over RTP after the network port between Elastix and the endpoint / telephone is negotiated.
Voice codification Voice is adequately encoded for transmission. After encoding, it is transmitted over RTP. Encoding can serve to reduce the chance of error, as well as to minimize the amount of bandwidth used. To encode this data, an algorithm called a codec is used. There are several different codecs, each has pros and cons.
G.711 One of the most widely used codecs of all time. Comes from the ITU-T standard that was released in 1972. Comes in two types called μ-Law (or u-law, primarily used in Europe) and a-Law (used in the USA). Advantage 1: Good voice quality since it uses 64kbit/s, that is a sampling of 8 bits at 8kHz. Advantage 2: It is already enabled in Elastix, its not necessary to pay for it. Disadvantage: It uses a lot of bandwidth. It is not recommended for connections with low bandwidth.
G.729 Also a very popular codec. Licensed by Intel. Advantage: It compresses voice very well without a significant loss of quality. Disadvantage 1: It is licensed per voice channel, approximately USD$10 per channel. Disadvantage 2: Voice quality is lower than than G.711
GSM It is related to the cellular telephony standard GSM (Global System for Mobile communications), hence its name. It compresses voice very well, with a quality similar to cell phones. It is enabled by default in Elastix. Good as an alternative to G.729, although its audio quality is slightly inferior to G.729.
Protocol overload (1) The different protocols increase the total amount of data transmitted, in addition to the actual voice payload. Headers are added for Ethernet, IP, TCP/UDP, RTP. That makes the actual bandwidth for transmitting voice to be more than just what is required for the codec. For example, to transmit voice using G.711, in theory we should use 64Kbps (the payload of the codec), but we are really using 95.2Kbps of BW. In codecs with more compression, overload is even more significant (percentage-wise).
Comparing Codecs Table for the actual bandwidth for common codecs (using Ethernet): Codec BW codec BW actual (Ethernet) G.711 64 Kbps 95.2 Kbps G.726* 32 Kbps 63.2 Kbps iLBC* 15.2 Kbps 46.4 Kbps GSM 13 Kbps 43.7 Kbps G.729A 8 Kbps 39.2 Kbps * For these codecs, multiple data rates may be used.