1273 lines
40 KiB
Plaintext
1273 lines
40 KiB
Plaintext
VoIP Howto
|
||
Roberto Arcomano berto@fatamorgana.com
|
||
v1.7, August 7, 2002
|
||
|
||
Voice Over IP is a new communication means that let you telephone with
|
||
Internet at almost null cost. How this is possible, what systems are
|
||
used, what is the standard, all that is covered by this Howto. Web
|
||
site http://www.fatamorgana.com/bertolinux <http://www.fatamor
|
||
gana.com/bertolinux> contains latest version of this document.
|
||
______________________________________________________________________
|
||
|
||
Table of Contents
|
||
|
||
|
||
|
||
1. Introduction
|
||
|
||
1.1 Introduction
|
||
1.2 Copyright
|
||
1.3 Translations
|
||
1.4 Credits
|
||
|
||
2. Background
|
||
|
||
2.1 The past
|
||
2.2 Yesterday
|
||
2.3 Today
|
||
2.4 The future
|
||
|
||
3. Overview
|
||
|
||
3.1 What is VoIP?
|
||
3.2 How does it work?
|
||
3.3 What is the advantages using VoIP rather PSTN?
|
||
3.4 Then, why everybody doesn't use it yet?
|
||
|
||
4. Technical info about VoIP
|
||
|
||
4.1 Overview on a VoIP connection
|
||
4.2 Analog to Digital Conversion
|
||
4.3 Compression Algorithms
|
||
4.4 RTP Real Time Transport Protocol
|
||
4.5 RSVP
|
||
4.6 Quality of Service (QoS)
|
||
4.7 H323 Signaling Protocol
|
||
|
||
5. Requirement
|
||
|
||
5.1 Hardware requirement
|
||
5.2 Hardware accelerating cards
|
||
5.3 Hardware gateway cards
|
||
5.4 Software requirement
|
||
5.5 Gateway software
|
||
5.6 Gatekeeper software
|
||
5.7 Other software
|
||
|
||
6. Cards setup
|
||
|
||
6.1 Quicknet PhoneJack
|
||
6.1.1 Software installation
|
||
6.1.2 Settings
|
||
6.2 Quicknet LineJack
|
||
6.3 VoiceTronix products
|
||
|
||
7. Setup
|
||
|
||
7.1 Simple communication: IP to IP
|
||
7.2 Using names
|
||
7.3 Internet calling using a WINS server
|
||
7.4 ILS server
|
||
7.5 A big problem: the masquering.
|
||
7.6 Open Source applications
|
||
7.6.1 Ohphone Sintax
|
||
7.6.2 Gnomemeeting
|
||
7.7 Setting up a gatekeeper
|
||
7.8 Setting up a gateway
|
||
7.9 Compatibility Matrix
|
||
|
||
8. Communications using PSTN line
|
||
|
||
8.1 Overview
|
||
8.2 Scenario
|
||
8.3 What can be changed in this configuration?
|
||
|
||
9. Bandwidth consideration
|
||
|
||
10. Glossary
|
||
|
||
11. Useful links
|
||
|
||
11.1 Open software link
|
||
11.2 Commercial link
|
||
|
||
|
||
______________________________________________________________________
|
||
|
||
1. Introduction
|
||
|
||
1.1. Introduction
|
||
|
||
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.
|
||
|
||
Please send suggestions and critics to my email address
|
||
<mailto:berto@fatamorgana.com>
|
||
|
||
1.2. Copyright
|
||
|
||
Copyright (C) 2000,2001 Roberto Arcomano. This document is free; you
|
||
can redistribute it and/or modify it under the terms of the GNU
|
||
General Public License as published by the Free Software Foundation;
|
||
either version 2 of the License, or (at your option) any later
|
||
version. This document is distributed in the hope that it will be
|
||
useful, but
|
||
|
||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
General Public License for more details. You can get a copy of the GNU
|
||
GPL here <http://www.gnu.org/copyleft/gpl.html>
|
||
|
||
1.3. Translations
|
||
|
||
If you want to translate this document you are free, you only have to:
|
||
|
||
|
||
1. Check that another version of it doesn't already exist at your
|
||
local LDP
|
||
|
||
2. Maintain all 'Introduction' section (including 'Introduction',
|
||
|
||
Warning! You don't have to translate TXT or HTML file, you have to
|
||
modify LYX file, so that it is possible to convert it all other
|
||
formats (TXT, HTML, RIFF, etc.): to do that you can use "LyX"
|
||
application you download from http://www.lyx.org <http://www.lyx.org>.
|
||
|
||
No need to ask me to translate! You just have to let me know (if you
|
||
want) about your translation.
|
||
|
||
Thank you for your translation!
|
||
|
||
1.4. Credits
|
||
|
||
Thanks to Fatamorgana Computers <http://www.fatamorgana.com> for
|
||
hardware equipment and experimental opportunity.
|
||
Thanks to Linux Documentation Project <http://www.linuxdoc.org> for
|
||
publishing and uploading my document in a very quickly fashion.
|
||
|
||
Thanks to David Price <mailto:dprice@intercorp.com.au> for his
|
||
support.
|
||
|
||
2. Background
|
||
|
||
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).
|
||
|
||
2.2. Yesterday
|
||
|
||
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".
|
||
|
||
2.3. Today
|
||
|
||
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. Overview
|
||
|
||
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.
|
||
|
||
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)
|
||
|
||
|
||
|
||
Base architecture
|
||
|
||
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
|
||
RTP
|
||
UDP
|
||
IP
|
||
I,II layers
|
||
|
||
|
||
|
||
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 |
|
||
| .... |
|
||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
||
|
||
|
||
Where:
|
||
|
||
|
||
· 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 RFCs1889 <http://www.ietf.org/rfc/rfc1889.txt> and 1890
|
||
<http://www.ietf.org/rfc/rfc1890.txt>.
|
||
|
||
4.5. RSVP
|
||
|
||
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 theRFC 2205
|
||
<http://www.ietf.org/rfc/rfc2205.txt?number=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:
|
||
|
||
a. FIFO (First in First Out), the more stupid method that allows
|
||
passing packets in arrive order.
|
||
|
||
b. 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.
|
||
|
||
c. CQ (Custom Queuing), users can decide priority.
|
||
|
||
d. 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.
|
||
|
||
e. 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:
|
||
|
||
a. download
|
||
|
||
b. upload
|
||
|
||
4. Congestion Avoidance, like RED (Random Early Detection).
|
||
|
||
For an exhaustive information about QoS see Differentiated Services
|
||
<http://www.ietf.org/html.charters/diffserv-charter.html> 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:
|
||
|
||
a. address translation service, to use names instead IP addresses
|
||
|
||
b. admission control, to allow or deny some hosts or some users
|
||
|
||
c. 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
|
||
<http://www.openh323.org/standards.html>, at this h323 web site
|
||
<http://www.cs.columbia.edu/~hgs/rtp/h323.html> and at its standard
|
||
description: ITU H-series Recommendations
|
||
<http://www.itu.int/itudoc/itu-t/rec/h/>.
|
||
|
||
You can find it implemented in various application software like
|
||
Microsoft Netmeeting <http://www.microsoft.com>, Net2Phone
|
||
<http://www.net2phone.com>, DialPad <http://www.dialpad.com>, ... and
|
||
also in freeware products you can find at Openh323 Web Site
|
||
<http://www.openh323.org>.
|
||
|
||
5. Requirement
|
||
|
||
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 <http://www.quicknet.net> and
|
||
VoiceTronix web site <http://www.voicetronix.com.au>
|
||
|
||
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:
|
||
|
||
|
||
1. Win9x
|
||
|
||
2. Linux
|
||
|
||
Under Win9x we have Microsoft Netmeeting, Internet Phone, DialPad or
|
||
others or Internet Switchboard (from Quicknet web site
|
||
<http://www.quicknet.net>) 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
|
||
<http://www.openh323.org>.
|
||
|
||
For VoiceTronix cards you can find software at VoiceTronix web site
|
||
<http://www.voicetronix.com.au>
|
||
|
||
Under Linux we have free software GnomeMeeting
|
||
<http://www.gnomemeeting.org>, a clone of Microsoft Netmeeting, while
|
||
in console mode we use (also free software) applications from OpenH323
|
||
<http://www.openh323.org> 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 <http://www.quicknet.net> (only when connected
|
||
to Internet) for Windows systems also acting as a h323 terminal;
|
||
|
||
· PSTNGw for Linux and Windows systems you download from OpenH323
|
||
<http://www.openh323.org/code.html>.
|
||
|
||
5.6. Gatekeeper software
|
||
|
||
You can choose as gatekeeper:
|
||
|
||
|
||
1. Opengatekeeper, you can download from opengatekeeper web site
|
||
<http://www.opengatekeeper.org> for Linux and Win9x.
|
||
|
||
2. Openh323 Gatekeeper (GK) from here
|
||
<http://www.willamowius.de/openh323gk.html>.
|
||
|
||
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 <http://www.equival.com/phonepatch>.
|
||
|
||
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.
|
||
|
||
6.1.1. Software installation
|
||
|
||
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 <http://www.quicknet.net>
|
||
|
||
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 <http://www.openh323.org/code.html> (using GUI) or ohphone
|
||
<http://www.openh323.org/code.html> (command line).
|
||
|
||
Under Linux you have to install:
|
||
|
||
|
||
1. Card driver, from Quicknet web site <http://www.quicknet.net>.
|
||
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 <http://www.openh323.org/code.html> or
|
||
ohphone <http://www.openh323.org/code.html>.
|
||
|
||
3. If you are a developer you can use SDK
|
||
<ftp://ftp.quicknet.net/Developer/Linux/Docs/> to create your own
|
||
application (also for Windows).
|
||
|
||
|
||
|
||
6.1.2. Settings
|
||
|
||
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
|
||
<http://www.quicknet.net/code.html> PSTNGx application (for Linux and
|
||
Windows) or we use Internet Switchboard to gateway feature.
|
||
|
||
6.3. VoiceTronix products
|
||
|
||
|
||
1. First download software here <http://www.voicetronix.com.au/vpb-
|
||
driver-2.1.8.tar.gz>
|
||
|
||
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 <http://www.voicetronix.com.au> for support.
|
||
|
||
7. Setup
|
||
|
||
In this chapter we try to setup VoIP system, simple at first, then
|
||
more and more complex.
|
||
|
||
7.1. Simple communication: IP to IP
|
||
|
||
|
||
|
||
A (Sound card) - - - B (Sound card)
|
||
|
||
192.168.1.1 - - - 192.168.1.2
|
||
|
||
|
||
192.168.1.1 calls 192.168.1.2 and viceversa.
|
||
|
||
|
||
|
||
A and B should have
|
||
|
||
|
||
1. an application like Microsoft Netmeeting, Internet Switchboard,
|
||
Openh323 (under Windows environment) or Ohphone, Gnomemeeting
|
||
(under Linux), installed and properly configured.
|
||
|
||
2. a network card or other kind of TCP/IP interface to talk each
|
||
other.
|
||
|
||
In this kind of view A can make a H323 call to B (if B has server side
|
||
application active) using B IP address. Then B can answer to it if it
|
||
wants. After accepting call, VoIP data packets start to flow.
|
||
|
||
7.2. Using names
|
||
|
||
Under Microsoft Windows a NetBIOS name can be used instead of an IP
|
||
address.
|
||
|
||
|
||
A - - - B
|
||
|
||
192.168.1.1 - - - 192.168.1.2
|
||
|
||
John - - - Alice
|
||
|
||
|
||
John calls Alice.
|
||
|
||
|
||
|
||
This is possible cause John call request to Alice is converted to IP
|
||
calling by the NetBIOS protocol.
|
||
|
||
The above 2 examples are very easy to implement but aren't scalable.
|
||
|
||
|
||
In a more big view such as Internet it is impossible to use direct
|
||
calling cause, usually, the callers don't know the destination IP
|
||
address. Furthermore NetBIOS naming feature cannot work cause it uses
|
||
broadcast messages, which typically don't pass ISP routers .
|
||
|
||
You can also use DNS to solve name in IP address: for example you can
|
||
call ''box.domain.com''.
|
||
|
||
7.3. Internet calling using a WINS server
|
||
|
||
The NetBIOS name calling idea can be implemented also in a Internet
|
||
environment, using a WINS server: NetBIOS clients can be configured to
|
||
use a WINS server to resolve names.
|
||
|
||
PCs using the same WINS server will be able to make direct calling
|
||
between them.
|
||
|
||
|
||
|
||
A (WINS Server is S) - - - - I - - - - B (WINS Server is S)
|
||
N
|
||
T
|
||
E - - - - - S (WINS Server)
|
||
C (WINS Server is S) - - - - R
|
||
N
|
||
E - - - - D (WINS Server is S)
|
||
T
|
||
|
||
Internet communication
|
||
|
||
|
||
|
||
A, B, C and D are in different subnets, but they can call each other
|
||
in a NetBIOS name calling fashion. The needed is that all are using S
|
||
as WINS Server.
|
||
|
||
Note: WINS server hasn't very high performance cause it use NetBIOS
|
||
feature and should only be used for joining few subnets.
|
||
|
||
7.4. ILS server
|
||
|
||
ILS is a kind of server which allows you to solve your name during an
|
||
H323 calling: when you start VoIP application you first register to
|
||
ILS server using a name, then everyone will be able to see you using
|
||
that name (if he uses same Server ILS!).
|
||
|
||
7.5. A big problem: the masquering.
|
||
|
||
A problem of few IPs is commonly solved using the so called masquering
|
||
(also NAT, network address translation): there is only 1 IP public
|
||
address (that Internet can directly "see"), the others machines are
|
||
"masqueraded" using all this IP.
|
||
|
||
|
||
|
||
A - - -
|
||
|
||
B - - - Router with NAT - - - Internet
|
||
|
||
C - - -
|
||
|
||
|
||
This doesn't work
|
||
|
||
|
||
|
||
In the example A,B and C can navigate, pinging, using mail and news
|
||
services with Internet people, but they CANNOT make a VoIP call. This
|
||
because H323 protocol send IP address at application level, so the
|
||
answer will never arrive to source (that is using a private IP
|
||
address).
|
||
|
||
Solutions:
|
||
|
||
|
||
· there is a Linux module that modifies H323 packets avoiding this
|
||
problem. You can download the module here
|
||
<http://www.coritel.it/coritel/ip/sofia/nat/nat2/nat2.htm>. To
|
||
install it you have to copy it to source directory specified,
|
||
modify Makefile and go compiling and installing module with
|
||
"modprobe ip_masq_h323". Unfortunately this module cannot work with
|
||
ohphone software at this moment (I don't know why).
|
||
|
||
|
||
|
||
A - - - Router with NAT
|
||
|
||
B - - - + - - - Internet
|
||
|
||
C - - - ip_masq_h323 module
|
||
|
||
|
||
This works
|
||
|
||
|
||
|
||
· There is a application program that also solves this problem: for
|
||
more see ``Par 5.7''
|
||
|
||
|
||
|
||
A - - -
|
||
|
||
B - - - PhonePatch - - - Internet
|
||
|
||
C - - -
|
||
|
||
|
||
This works
|
||
|
||
|
||
|
||
7.6. Open Source applications
|
||
|
||
7.6.1. Ohphone Sintax
|
||
|
||
Sintax is:
|
||
|
||
"ohphone -l|--listen [options]"
|
||
|
||
"ohphone [options]... address"
|
||
|
||
|
||
· "-l", listen to standard port (1720)
|
||
|
||
· "address", mean that we don't wait for a call, but we connect to
|
||
"address" host
|
||
|
||
· "-n", "--no-gatekeeper", this is ok if we haven't a gatekeeper
|
||
|
||
· "-q num", "--quicknet num", it uses Quicknet card, device
|
||
/dev/phone(num)
|
||
|
||
· "-s device", "--sound device", it uses /dev/device sound device.
|
||
|
||
· "-j delay", "--jitter delay", it change delay buffer to "delay".
|
||
|
||
Also, when you start ohphone, you can give command to the interpreter
|
||
directly (like decrease AEC, Automatic Echo Cancellation).
|
||
|
||
7.6.2. Gnomemeeting
|
||
|
||
Gnomemeeting is an application using GUI interface to make call using
|
||
VoIP. It is very simple to use and allows you to use ILS server, chat
|
||
and other things.
|
||
|
||
7.7. Setting up a gatekeeper
|
||
|
||
You can also experiment gatekeeper feature
|
||
|
||
Example
|
||
|
||
(Terminal H323) A - - -
|
||
\
|
||
(Terminal H323) B - - - D (Gatekeeper)
|
||
/
|
||
(Terminal H323) C - - -
|
||
|
||
Gatekeeper configuration
|
||
|
||
|
||
|
||
1. Hosts A,B and C have gatekeeper setting to point to D.
|
||
|
||
2. At start time each host tells D own address and own name (also with
|
||
aliases) which could be used by a caller to reach it.
|
||
|
||
3. When a terminal asks D for an host, D answers with right IP
|
||
address, so communication can be established.
|
||
|
||
We have to notice that the Gatekeeper is able only to solve name in IP
|
||
address, it couldn't join hosts that aren't reachable each other (at
|
||
IP level), in other words it couldn't act as a NAT router.
|
||
|
||
You can find gatekeeper code here <http://www.opengatekeeper.org>:
|
||
openh323 library <http://www.openh323.org/code.html> is also required.
|
||
|
||
Program has only to be launch with -d (as daemon) or -x (execute)
|
||
parameter.
|
||
|
||
In addition you can use a config file (.ini) you find here
|
||
<http://www.opengatekeeper.org/opengate.ini>.
|
||
|
||
7.8. Setting up a gateway
|
||
|
||
As we said, gateway is an entity that can join VoIP to PSTN lines
|
||
allowing us to made call from Internet to a classic telephone. So, in
|
||
addition, we need a card that could manage PSTN lines: Quicknet
|
||
LineJack does it.
|
||
|
||
From OpenH323 web site <http://www.openh323.org> we download:
|
||
|
||
|
||
1. driver for Linejack
|
||
|
||
2. PSTNGw application to create our gateway.
|
||
|
||
If executable doesn't work you need to download source code and
|
||
openh323 library <http://www.openh323.org/code.html>, then install all
|
||
in a home user directory.
|
||
|
||
After that you only need to launch PSTNGw to start your H323 gateway.
|
||
|
||
7.9. Compatibility Matrix
|
||
|
||
First Matrix refers to:
|
||
|
||
|
||
1. Software intercommunications (i.e. Netmeeting with SwitchBoard)
|
||
|
||
2. Software/Driver/Hardware talking (i.e. Netmeeting can use a
|
||
PhoneJACK card).
|
||
|
||
|
||
|
||
_____________________________________________________________________________________________________________________
|
||
| | Netmeeting |SwitchBoard | Simph323 | OhPhone | LinPhone |Speak-Freely|HW PhoneJACK|HW LineJACK |
|
||
|____________|____________|____________|____________|____________|_____________|____________|____________|____________|
|
||
| Netmeeting | V V V V X X V V
|
||
|____________|____________|____________|____________|____________|_____________|____________|____________|____________|
|
||
|SwitchBoard | V V V V X X V V
|
||
|____________|____________|____________|____________|____________|_____________|____________|____________|____________|
|
||
| Simph323 | V V V V X X X X
|
||
|____________|____________|____________|____________|____________|_____________|____________|____________|____________|
|
||
| OhPhone | V V V V X X V V
|
||
|____________|____________|____________|____________|____________|_____________|____________|____________|____________|
|
||
| LinPhone | X X X X V X X X
|
||
|____________|____________|____________|____________|____________|_____________|____________|____________|____________|
|
||
|SpeakFreely | X X X X X V X X
|
||
|____________|____________|____________|____________|____________|_____________|____________|____________|____________|
|
||
|HW PhoneJACK| V V X V X X _ _
|
||
|____________|____________|____________|____________|____________|_____________|____________|____________|____________|
|
||
|HW LineJACK | V V X V X X _ _
|
||
|____________|____________|____________|____________|____________|_____________|____________|____________|____________|
|
||
|
||
|
||
|
||
Second Matrix refers to Gateway softwares that manage LineJACK card.
|
||
|
||
|
||
___________________________________________________________
|
||
| |HW LineJACK GW| SwitchBoard | PSTNGW |
|
||
|______________|______________|______________|______________|
|
||
|HW LineJACK GW| _ | V | V |
|
||
|______________|______________|______________|______________|
|
||
| SwitchBoard | V | _ | _ |
|
||
|______________|______________|______________|______________|
|
||
| PSTNGW | V | _ | _ |
|
||
|______________|______________|______________|______________|
|
||
|
||
|
||
|
||
Notation:
|
||
|
||
|
||
· V : Works
|
||
|
||
· X : Doesn't Work
|
||
|
||
· -- : Doesn't care
|
||
|
||
8. Communications using PSTN line
|
||
|
||
8.1. Overview
|
||
|
||
VoIP becomes very interesting when you start to use PSTN lines to call
|
||
other people in the world, directly to their home telephone.
|
||
|
||
8.2. Scenario
|
||
|
||
A typical application is like that:
|
||
|
||
|
||
Home telephone1 -- (PSTN) -- PC1 -- (Internet) -- PC2 -- (PSTN) -- Home telephone2
|
||
|
||
|
||
|
||
1. Home Telephone1 make a calls to PC1 phone number (using PSTN line,
|
||
I mean classic telephone line).
|
||
2. PC1 answer to it.
|
||
|
||
3. Home telephone1 must tell PC1 what gateway use (PC2 in this case)
|
||
by giving the IP address (from DTMF keyboard) and/or what number
|
||
call (in this case Home telephone2).
|
||
|
||
4. After that PC1 will start to make an H323 call to PC2, then it will
|
||
pass Home telephone2 to PC2 to make it call it throught PSTN line.
|
||
|
||
5. Home telephone2 answers to call and communication between Home
|
||
telephone1 and Home telephone2 begins.
|
||
|
||
8.3. What can be changed in this configuration?
|
||
|
||
|
||
1. You may use a PBX to select many lines to access many PC1 gateway
|
||
(for example one to call within your state, one to go accross
|
||
Europe, and so on...): typically you don't have to change this,
|
||
cause cost is always the same.
|
||
|
||
2. You can select (after called your PC1 gateway) every PC2 you want
|
||
(for example a PC2 living in England to call an English person so
|
||
that you'd pay only intra-country costs).
|
||
|
||
So your decision will be taken considering PSTN line costs. In fact
|
||
what VoIP does is the convert this:
|
||
|
||
|
||
Home Telephone1 --- (PSTN) --- Home Telephone2
|
||
PSTN great distance calling cost
|
||
|
||
|
||
|
||
into this:
|
||
|
||
|
||
Home Telephone1 --- (PSTN) --- PC1 +
|
||
PC2 ---- (PSTN) --- Home Telephone2 =
|
||
--------------------------------------
|
||
2 PSTN short distance calling costs
|
||
|
||
|
||
|
||
To save money you need that:
|
||
|
||
|
||
2 PSTN short distance calling costs < PSTN great distance calling cost
|
||
|
||
|
||
|
||
Typically "short distance calling" refers to a "city cal" while "great
|
||
distance calling" can be an "intercontinental call"!
|
||
|
||
9. Bandwidth consideration
|
||
|
||
From all we said before we noticed that we still have not solved
|
||
problems about bandwidth, how to create a real time streaming of data.
|
||
|
||
We know we couldn't find a solution unless we enable a right real-time
|
||
manager protocol in each router we cross, so what do we can do?
|
||
|
||
First we try to use a very (as more as possible) high rate compression
|
||
algorithms (like LPC10 which only consumes a 2.5 kbps bandwidth, about
|
||
313 bytes/s).
|
||
|
||
|
||
Then we starts classify our packets, in TOS field, with the most high
|
||
priority level, so every router help us having urgently.
|
||
|
||
Important: all that is not sufficient to guarantee our conversation
|
||
would always be ok, but without an great infrastructure managing
|
||
shaping, bandwidth reservation and so on, it is not possible to do it,
|
||
TCP/IP is not a real time protocol.
|
||
|
||
A possible solution could be starts with little WAN at guaranteed
|
||
bandwidth and get larger step by step.
|
||
|
||
We finally have to notice a thing: also the so called guaranteed
|
||
services like PSTN line could not manage all clients they have: for
|
||
example a GSM call is not able to manage more that some hundred or
|
||
some thousand of clients.
|
||
|
||
Anyway for a starting service, limited to few users, VoIP can be a
|
||
valid alternative to classic PSTN service.
|
||
|
||
10. Glossary
|
||
|
||
PSTN: Public Switched Telephone Network
|
||
|
||
VoIP: Voice over Internet Protocol
|
||
|
||
LAN: Local Area Network
|
||
|
||
WAN: Wide Area Network
|
||
|
||
TOS: Type Of Service
|
||
|
||
ISP: Internet Service Provider
|
||
|
||
RTP: Real Time Protocol
|
||
|
||
RSVP: ReSerVation Protocol
|
||
|
||
QoS: Quality of Service
|
||
|
||
11. Useful links
|
||
|
||
11.1. Open software link
|
||
|
||
|
||
· Voxilla <http://www.voxilla.org>
|
||
|
||
· Linux Telephony <http://www.linuxtelephony.org>
|
||
|
||
· Open H323 web site <http://www.openh323.org>
|
||
|
||
· http://www.gnomemeeting.org/ <http://www.gnomemeeting.org/>
|
||
|
||
· Speak Freely <http://www.speakfreely.org>
|
||
|
||
· http://www.linphone.org <http://www.linphone.org>
|
||
|
||
· http://www.fsf.org/software/osip <http://www.fsf.org/software/osip>
|
||
|
||
· http://www.gnu.org/software/bayonne
|
||
<http://www.gnu.org/software/bayonne>
|
||
|
||
11.2. Commercial link
|
||
|
||
|
||
· Fatamorgana Computers <http://www.fatamorgana.com>
|
||
|
||
· International Communication Union <http://www.itu.org>
|
||
|
||
· Voicetronix web site <http://www.voicetronix.com.au>
|
||
|
||
· Quicknet Web site <http://www.quicknet.net>
|
||
|
||
· Cisco Systems <http://www.cisco.com>
|
||
|
||
· www.metropark.com <www.metropark.com>
|
||
|
||
· www.nbxsoftware.com <www.nbxsoftware.com>
|
||
|
||
|
||
|