|09. 06. 2005.||#1|
Voip - How To
This document explains about VoIP systems. Recent happenings like Internet diffusion at low cost, new integration of dedicated voice compression processors, have changed common user requirements allowing VoIP standards to diffuse. This howto tries to define some basic lines of VoIP architecture.
2.1 The past
More than 30 years ago Internet didn't exist. Interactive communications were only made by telephone at PSTN line cost.
Data exchange was expansive (for a long distance) and no one had been thinking to video interactions (there was only television that is not interactive, as known).
Few years ago we saw appearing some interesting things: PCs to large masses, new technologies to communicate like cellular phones and finally the great net: Internet; people begun to communicate with new services like email, chat, etc. and business reborned with the web allowing people buy with a "click".
Today we can see a real revolution in communication world: everybody begins to use PCs and Internet for job and free time to communicate each other, to exchange data (like images, sounds, documents) and, sometimes, to talk each other using applications like Netmeeting or Internet Phone. Particularly starts to diffusing a common idea that could be the future and that can allow real-time vocal communication: VoIP.
2.4 The future
We cannot know what is the future, but we can try to image it with many computers, Internet almost everywhere at high speed and people talking (audio and video) in a real time fashion. We only need to know what will be the means to do this: UMTS, VoIP (with video extension) or other? Anyway we can notice that Internet has grown very much in the last years, it is free (at least as international means) and could be the right communication media for future.
3.1 What is VoIP?
VoIP stands for 'V'oice 'o'ver 'I'nternet 'P'rotocol. As the term says VoIP tries to let go voice (mainly human) through IP packets and, in definitive through Internet. VoIP can use accelerating hardware to achieve this purpose and can also be used in a PC environment.
3.2 How does it work?
Many years ago we discovered that sending a signal to a remote destination could have be done also in a digital fashion: before sending it we have to digitalize it with an ADC (analog to digital converter), transmit it, and at the end transform it again in analog format with DAC (digital to analog converter) to use it.
VoIP works like that, digitalizing voice in data packets, sending them and reconverting them in voice at destination.
Digital format can be better controlled: we can compress it, route it, convert it to a new better format, and so on; also we saw that digital signal is more noise tolerant than the analog one (see GSM vs TACS).
TCP/IP networks are made of IP packets containing a header (to control communication) and a payload to transport data: VoIP use it to go across the network and come to destination.
Voice (source) - - ADC - - - - Internet - - - DAC - - Voice (dest)
3.3 What is the advantages using VoIP rather PSTN?
When you are using PSTN line, you typically pay for time used to a PSTN line manager company: more time you stay at phone and more you'll pay. In addition you couldn't talk with other that one person at a time.
In opposite with VoIP mechanism you can talk all the time with every person you want (the needed is that other person is also connected to Internet at the same time), as far as you want (money independent) and, in addition, you can talk with many people at the same time.
If you're still not persuaded you can consider that, at the same time, you can exchange data with people are you talking with, sending images, graphs and videos.
3.4 Then, why everybody doesn't use it yet?
Unfortunately we have to report some problem with the integration between VoIP architecture and Internet. As you can easy imagine, voice data communication must be a real time stream (you couldn't speak, wait for many seconds, then hear other side answering): this is in contrast with the Internet heterogeneous architecture that can be made of many routers (machines that route packets), about 20-30 or more and can have a very high round trip time (RTT), so we need to modify something to get it properly working.
In next sections we'll try to understand how to solve this great problem. In general we know that is very difficult to guarantee a bandwidth in Internet for VoIP application.
|09. 06. 2005.||#2|
4. Technical info about VoIP
Here we see some important info about VoIP, needed to understand it.
4.1 Overview on a VoIP connection
To setup a VoIP communication we need:
1. First the ADC to convert analog voice to digital signals (bits)
2. Now the bits have to be compressed in a good format for transmission: there is a number of protocols we'll see after.
3. Here we have to insert our voice packets in data packets using a real-time protocol (typically RTP over UDP over IP)
4. We need a signaling protocol to call users: ITU-T H323 does that.
5. At RX we have to disassemble packets, extract datas, then convert them to analog voice signals and send them to sound card (or phone)
6. All that must be done in a real time fashion cause we cannot waiting for too long for a vocal answer! (see QoS section)
Voice )) ADC - Compression Algorithm - Assembling RTP in TCP/IP -----
Voice (( DAC - Decompress. Algorithm - Disass. RTP from TCP/IP -----
4.2 Analog to Digital Conversion
This is made by hardware, typically by card integrated ADC.
Today every sound card allows you convert with 16 bit a band of 22050 Hz (for sampling it you need a freq of 44100 Hz for Nyquist Principle) obtaining a throughput of 2 bytes * 44100 (samples per second) = 88200 Bytes/s, 176.4 kBytes/s for stereo stream.
For VoIP we needn't such a throughput (176kBytes/s) to send voice packet: next we'll see other coding used for it.
4.3 Compression Algorithms
Now that we have digital data we may convert it to a standard format that could be quickly transmitted.
PCM, Pulse Code Modulation, Standard ITU-T G.711
* Voice bandwidth is 4 kHz, so sampling bandwidth has to be 8 kHz (for Nyquist).
* We represent each sample with 8 bit (having 256 possible values).
* Throughput is 8000 Hz *8 bit = 64 kbit/s, as a typical digital phone line.
* In real application mu-law (North America) and a-law (Europe) variants are used which code analog signal a logarithmic scale using 12 or 13 bits instead of 8 bits (see Standard ITU-T G.711).
ADPCM, Adaptive differential PCM, Standard ITU-T G.726
It converts only the difference between the actual and the previous voice packet requiring 32 kbps (see Standard ITU-T G.726).
LD-CELP, Standard ITU-T G.728
CS-ACELP, Standard ITU-T G.729 and G.729a
MP-MLQ, Standard ITU-T G.723.1, 6.3kbps, Truespeech
ACELP, Standard ITU-T G.723.1, 5.3kbps, Truespeech
LPC-10, able to reach 2.5 kbps!!
This last protocols are the most important cause can guarantee a very low minimal band using source coding; also G.723.1 codecs have a very high MOS (Mean Opinion Score, used to measure voice fidelity) but attention to elaboration performance required by them, up to 26 MIPS!
4.4 RTP Real Time Transport Protocol
Now we have the raw data and we want to encapsulate it into TCP/IP stack. We follow the structure:
VoIP data packets
VoIP data packets live in RTP (Real-Time Transport Protocol) packets which are inside UDP-IP packets.
Firstly, VoIP doesn't use TCP because it is too heavy for real time applications, so instead a UDP (datagram) is used.
Secondly, UDP has no control over the order in which packets arrive at the destination or how long it takes them to get there (datagram concept). Both of these are very important to overall voice quality (how well you can understand what the other person is saying) and conversation quality (how easy it is to carry out a conversation). RTP solves the problem enabling the receiver to put the packets back into the correct order and not wait too long for packets that have either lost their way or are taking too long to arrive (we don't need every single voice packet, but we need a continuous flow of many of them and ordered).
Real Time Transport Protocol
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|V=2|P|X| CC |M| PT | sequence number |
| timestamp |
| synchronization source (SSRC) identifier |
| contributing source (CSRC) identifiers |
| .... |
* V indicates the version of RTP used
* P indicates the padding, a byte not used at bottom packet to reach the parity packet dimension
* X is the presence of the header extension
* CC field is the number of CSRC identifiers following the fixed header. CSRC field are used, for example, in conference case.
* M is a marker bit
* PT payload type
For a complete description of RTP protocol and all its applications see relative RFCs 1889 and 1890.
There are also other protocols used in VoIP, like RSVP, that can manage Quality of Service (QoS).
RSVP is a signaling protocol that requests a certain amount of bandwidth and latency in every network hop that supports it.
For detailed info about RSVP see the RFC 2205
4.6 Quality of Service (QoS)
We said many times that VoIP applications require a real-time data streaming cause we expect an interactive data voice exchange.
Unfortunately, TCP/IP cannot guarantee this kind of purpose, it just make a "best effort" to do it. So we need to introduce tricks and policies that could manage the packet flow in EVERY router we cross.
So here are:
1. TOS field in IP protocol to describe type of service: high values indicate low urgency while more and more low values bring us more and more real-time urgency
2. Queuing packets methods:
1. FIFO (First in First Out), the more stupid method that allows passing packets in arrive order.
2. WFQ (Weighted Fair Queuing), consisting in a fair passing of packets (for example, FTP cannot consume all available bandwidth), depending on kind of data flow, typically one packet for UDP and one for TCP in a fair fashion.
3. CQ (Custom Queuing), users can decide priority.
4. PQ (Priority Queuing), there is a number (typically 4) of queues with a priority level each one: first, packets in the first queue are sent, then (when first queue is empty) starts sending from the second one and so on.
5. CB-WFQ (Class Based Weighted Fair Queuing), like WFQ but, in addition, we have classes concept (up to 64) and the bandwidth value associated for each one.
3. Shaping capability, that allows to limit the source to a fixed bandwidth in:
4. Congestion Avoidance, like RED (Random Early Detection).
For an exhaustive information about QoS see Differentiated Services at IETF.
4.7 H323 Signaling Protocol
H323 protocol is used, for example, by Microsoft Netmeeting to make VoIP calls.
This protocol allow a variety of elements talking each other:
1. Terminals, clients that initialize VoIP connection. Although terminals could talk together without anyone else, we need some additional elements for a scalable vision.
2. Gatekeepers, that essentially operate:
1. address translation service, to use names instead IP addresses
2. admission control, to allow or deny some hosts or some users
3. bandwidth management
3. Gateways, points of reference for conversion TCP/IP - PSTN.
4. Multipoint Control Units (MCUs) to provide conference.
5. Proxies Server also are used.
h323 allows not only VoIP but also video and data communications.
Concerning VoIP, h323 can carry audio codecs G.711, G.722, G.723, G.728 and G.729 while for video it supports h261 and h263.
More info about h323 is available at Openh323 Standards, at this h323 web site and at its standard description: ITU H-series Recommendations.
You can find it implemented in various application software like Microsoft Netmeeting, Net2Phone, DialPad, ... and also in freeware products you can find at Openh323 Web Site.
|09. 06. 2005.||#3|
5.1 Hardware requirement
To create a little VoIP system you need the following hardware:
1. PC 386 or more
2. Sound card, full duplex capable
3. a network card or connection to internet or other kind of interface to allow communication between 2 PCs
All that has to be present twice to simulate a standard communication.
The tool above are the minimal requirement for a VoIP connection: next we'll see that we should (and in Internet we must) use more hardware to do the same in a real situation.
Sound card has be full duplex unless we couldn't hear anything while speaking!
As additional you can use hardware cards (see next) able to manage data stream in a compressed format (see Par 4.3).
5.2 Hardware accelerating cards
We can use special cards with hardware accelerating capability. Two of them (and also the only ones directly managed by the Linux kernel at this moment) are the
1. Quicknet PhoneJack
2. Quicknet LineJack
3. VoiceTronix V4PCI
4. VoiceTronix VPB4
5. VoiceTronix VPB8L
Quicknet PhoneJack is a sound card that can use standard algorithms to compress audio stream like G723.1 (section 4.3) down to 4.1 Kbps rate.
It can be connected directly to a phone (POTS port) or a couple mic-speaker.
It has a ISA or PCI connector bus.
Quicknet LineJack works like PhoneJack with some addition features (see next).
VoiceTronix V4PCI is a PCI card pretty like Quicknet LineJack but with 4 phone ports
VoiceTronix VPB4 is a ISA card equivalent to V4PCI.
VoiceTronix VPB8L is a logging card with 8 ports.
For more info see Quicknet web site and VoiceTronix web site
5.3 Hardware gateway cards
Quicknet LineJack and VoiceTronix cards can be connected to a PSTN line allowing VoIP gateway feature.
Then you'll need a software to manage it (see after).
5.4 Software requirement
We can choose what O.S. to use:
Under Win9x we have Microsoft Netmeeting, Internet Phone, DialPad or others or Internet Switchboard (from Quicknet web site) for Quicknet cards.
Warning!!: Latest Quicknet cards using Swithboard (older version too) NEED to be connected to Internet to get working for managing Microtelco account (not free of charge), so if you plan to remain isolated from Internet you need to install OpenH323 software.
For VoiceTronix cards you can find software at VoiceTronix web site
Under Linux we have free software GnomeMeeting, a clone of Microsoft Netmeeting, while in console mode we use (also free software) applications from OpenH323 web site: simph323 or ohphone that can also work with Quicknet accelerating hardware.
Attention: all Openh323 source code has to be compiled in a user directory (if not it is necessary to change some environment variable). You are warned that compiling time could be very high and you could need a lot of RAM to make it in a decent time.
5.5 Gateway software
To manage gateway feature (join TCP/IP VoIP to PSTN lines) you need some kind of software like this:
* Internet SwitchBoard (only when connected to Internet) for Windows systems also acting as a h323 terminal;
* PSTNGw for Linux and Windows systems you download from OpenH323.
5.6 Gatekeeper software
You can choose as gatekeeper:
1. Opengatekeeper, you can download from opengatekeeper web site for Linux and Win9x.
2. Openh323 Gatekeeper (GK) from here.
5.7 Other software
In addition I report some useful software h323 compliant:
* Phonepatch, able to solve problems behind a NAT firewall. It simply allows users (external or internal) calling from a web page (which is reachable from even external and internal users): when web application understands the remote host is ready, it calls (h323) the source telling it all is ok and communication can be established. Phonepatch is a proprietary software (with also a demo version for no more than 3 minutes long conversations) you download from here.
6. Cards setup
Here we see how to configure special hardware card in Linux and Windows environment.
6.1 Quicknet PhoneJack
As we saw, Quicknet Phonejack is a sound card with VoIP accelerating capability. It supports:
* G.711 normal and mu/A-law, G.728-9, G.723.1 (TrueSpeech) and LPC10.
* Phone connector (to allow calling directly from your phone) or
* Mic & speaker jacks.
Quicknet PhoneJack is a ISA (or PCI) card to install into your Pc box. It can work without an IRQ.
Under Windows you have to install:
1. Card driver
2. Internet Switchboard application (working only with Internet, using newer Quicknet cards)
all downloadable from Quicknet web site
After Switchboard has been installed, you need to register to Quicknet to obtain full capability of your card.
When you pick up the phone Internet Switchboard wakes up and waits for your calling number (directly entered from your phone), you can:
1. enter an asterisk, then type an IP number (with asterisks in place of dot) with a # in the end
2. type directly a PSTN phone number (with international prefix) to call a classic phone user. In this case you need a registration to a gateway manager to which pay for time.
3. enter directly a quick dial number (up to 2 digits) you have previously stored which make a call (IP or PSTN).
Internet Swichboard is h323 compatible, so if you can use, for example, Microsoft Netmeeting at the other end to talk.
Warning!! Internet Switchboard NEED to be connected to Internet when used with newer Quicknet cards
In place of Internet Switchboard you can use openh323 application openphone (using GUI) or ohphone (command line).
Under Linux you have to install:
1. Card driver, from Quicknet web site. After downloaded you have to compile it (you must have a /usr/src/linux soft or hard link to your Linux source directory): type make for instructions.
2. Application openphone or ohphone.
3. If you are a developer you can use SDK to create your own application (also for Windows).
With Internet Switchboard (and with other application) you can:
1. Change compression algorithm preferred
2. Tune jitter delay
3. Adjust volume
4. Adjust echo cancellation level.
6.2 Quicknet LineJack
This card is very similar to the previous, it supports also gateway feature.
We only notice that we have to download PSTNGx application (for Linux and Windows) or we use Internet Switchboard to gateway feature.
6.3 VoiceTronix products
1. First download software here
2. Untar it
3. Modify 'src/vpbreglinux.cpp' according to file README
4. type 'make'
5. type 'make install'
6. cd to src
7. type 'insmod vpb.o'
8. retrieve (from console of from 'dmesg' output command) major number, say MAJOR
9. type 'mknod /dev/vpb0 c MAJOR 0' where MAJOR is the above number
10. cd to unittest and type './echo'
Follow README file for more help.
I personally haven't tested VoiceTronix products so please contact VoiceTronix web site for support.
|Tema||Početna poruka teme||Forum||Odgovori||Poslednja poruka|
|RATEL i VoIP||dkurel||Komunikacije||4||16. 06. 2006. 14:26|
|YU TLD za VoIP??||dkurel||Komunikacije||4||23. 11. 2005. 23:49|
|VOIP - Voice Over IP||STELLANOVA||Komunikacije||12||22. 11. 2005. 21:45|
|VOIP uskoro kriptovan!||STELLANOVA||Komunikacije||7||21. 08. 2005. 04:15|