</p><p>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.
</p><p>So here are:
</p><p><enum><item>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
<item>Queuing packets methods:
<enum><item>FIFO (First in First Out), the more stupid method that allows
passing packets in arrive order.
<item>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.
<item>CQ (Custom Queuing), users can decide priority.
<item>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.
<item>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.
</enum><item>Shaping capability, that allows to limit the source to a fixed
bandwidth in:
<enum><item>download
<item>upload
</enum><item>Congestion Avoidance, like RED (Random Early Detection).
</enum></p><p>For an exhaustive information about QoS see <url url="http://www.ietf.org/html.charters/diffserv-charter.html" name="Differentiated Services"> at IETF.
</p><sect1>H323 Signaling Protocol
<p>H323 protocol is used, for example, by Microsoft Netmeeting to
make VoIP calls.
</p><p>This protocol allow a variety of elements talking each other:
</p><p><enum><item>Terminals, clients that initialize VoIP connection. Although
terminals could talk together without anyone else, we need some additional
elements for a scalable vision.
<item>Gatekeepers, that essentially operate:
<enum><item>address translation service, to use names instead IP addresses
<item>admission control, to allow or deny some hosts or some users
<item>bandwidth management
</enum><item>Gateways, points of reference for conversion TCP/IP - PSTN.
<item>Multipoint Control Units (MCUs) to provide conference.
<item>Proxies Server also are used.
</enum></p><p>h323 allows not only VoIP but also video and data communications.
</p><p>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.
</p><p>More info about h323 is available at <url url="http://www.openh323.org/standards.html" name="Openh323 Standards">, at <url url="http://www.cs.columbia.edu/~hgs/rtp/h323.html" name="this h323 web site"> and at its standard
</p><p>You can find it implemented in various application software like
<url url="http://www.microsoft.com" name="Microsoft Netmeeting">, <url url="http://www.net2phone.com" name="Net2Phone">, <url url="http://www.dialpad.com" name="DialPad">, ... and also in freeware products you can find at <url url="http://www.openh323.org" name="Openh323 Web Site">.
</p><sect>Requirement
<sect1>Hardware requirement
<p>To create a little VoIP system you need the following hardware:
</p><p><enum><item>PC 386 or more
<item>Sound card, full duplex capable
<item>a network card or connection to internet or other kind of interface
to allow communication between 2 PCs
</enum></p><p>All that has to be present twice to simulate a standard communication.
</p><p>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.
</p><p>Sound card has be full duplex unless we couldn't hear anything
while speaking!
</p><p>As additional you can use hardware cards (see next) able to manage
data stream in a compressed format (see Par 4.3).
</p><sect1>Hardware accelerating cards
<p>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
</p><p><enum><item>Quicknet PhoneJack
<item>Quicknet LineJack
<item>VoiceTronix V4PCI
<item>VoiceTronix VPB4
<item>VoiceTronix VPB8L
</enum></p><p>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.
</p><p>It can be connected directly to a phone (POTS port) or a couple
mic-speaker.
</p><p>It has a ISA or PCI connector bus.
</p><p>Quicknet LineJack works like PhoneJack with some addition features
(see next).
</p><p>VoiceTronix V4PCI is a PCI card pretty like Quicknet LineJack
but with 4 phone ports
</p><p>VoiceTronix VPB4 is a ISA card equivalent to V4PCI.
</p><p>VoiceTronix VPB8L is a logging card with 8 ports.
</p><p>For more info see <url url="http://www.quicknet.net" name="Quicknet web site"> and <url url="http://www.voicetronix.com.au" name="VoiceTronix web site">
</p><sect1>Hardware gateway cards
<p>Quicknet LineJack and VoiceTronix cards can be connected to a
PSTN line allowing VoIP gateway feature.
</p><p>Then you'll need a software to manage it (see after).
</p><sect1>Software requirement
<p>We can choose what O.S. to use:
</p><p><enum><item>Win9x
<item>Linux
</enum></p><p>Under Win9x we have Microsoft Netmeeting, Internet Phone, DialPad
or others or Internet Switchboard (from <url url="http://www.quicknet.net" name="Quicknet web site">) for Quicknet cards.
</p><p>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 <url url="http://www.openh323.org" name="OpenH323 software">.
</p><p>For VoiceTronix cards you can find software at <url url="http://www.voicetronix.com.au" name="VoiceTronix web site">
</p><p>Under Linux we have free software <url url="http://www.gnomemeeting.org" name="GnomeMeeting">, a clone of Microsoft Netmeeting,
while in console mode we use (also free software) applications from
<url url="http://www.openh323.org" name="OpenH323"> web site: simph323 or ohphone that can also work with Quicknet accelerating
hardware.
</p><p>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.
</p><sect1>Gateway software
<p>To manage gateway feature (join TCP/IP VoIP to PSTN lines) you
need some kind of software like this:
</p><p><itemize><item><url url="http://www.quicknet.net" name="Internet SwitchBoard"> (only when connected to Internet) for Windows systems also acting
as a h323 terminal;
<item>PSTNGw for Linux and Windows systems you download from <url url="http://www.openh323.org/code.html" name="OpenH323">.
</itemize></p><sect1>Gatekeeper software
<p>You can choose as gatekeeper:
</p><p><enum><item>Opengatekeeper, you can download from <url url="http://www.opengatekeeper.org" name="opengatekeeper web site"> for Linux and Win9x.
<item>Openh323 Gatekeeper (GK) from <url url="http://www.willamowius.de/openh323gk.html" name="here">.
</enum></p><sect1>Other software
<p><label id="Phonepatch" >In addition I report some useful software h323 compliant:
</p><p><itemize><item>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 <url url="http://www.equival.com/phonepatch" name="here">.
</itemize></p><sect>Cards setup
<p>Here we see how to configure special hardware card in Linux and
Windows environment.
</p><sect1>Quicknet PhoneJack
<p>As we saw, Quicknet Phonejack is a sound card with VoIP accelerating
capability. It supports:
</p><p><itemize><item>G.711 normal and mu/A-law, G.728-9, G.723.1 (TrueSpeech) and
LPC10.
<item>Phone connector (to allow calling directly from your phone) or
<item>Mic & speaker jacks.
</itemize></p><p>Quicknet PhoneJack is a ISA (or PCI) card to install into your
Pc box. It can work without an IRQ.
</p><sect2>Software installation
<p>Under Windows you have to install:
</p><p><enum><item>Card driver
<item>Internet Switchboard application (working only with Internet,
using newer Quicknet cards)
</enum></p><p>all downloadable from <url url="http://www.quicknet.net" name="Quicknet web site">
</p><p>After Switchboard has been installed, you need to register to
Quicknet to obtain full capability of your card.
</p><p>When you pick up the phone Internet Switchboard wakes up and
waits for your calling number (directly entered from your phone),
you can:
</p><p><enum><item>enter an asterisk, then type an IP number (with asterisks in
place of dot) with a # in the end
<item>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.
<item>enter directly a quick dial number (up to 2 digits) you have
previously stored which make a call (IP or PSTN).
</enum></p><p>Internet Swichboard is h323 compatible, so if you can use, for
example, Microsoft Netmeeting at the other end to talk.
</p><p>Warning!! Internet Switchboard NEED to be connected to Internet
when used with newer Quicknet cards
</p><p>In place of Internet Switchboard you can use openh323 application
</verb><p><enum><item>Hosts A,B and C have gatekeeper setting to point to D.
<item>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.
<item>When a terminal asks D for an host, D answers with right IP address,
so communication can be established.
</enum></p><p>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.
</p><p>You can find gatekeeper code <url url="http://www.opengatekeeper.org" name="here">: <url url="http://www.openh323.org/code.html" name="openh323 library"> is also required.
</p><p>Program has only to be launch with -d (as daemon) or -x (execute)
parameter.
</p><p>In addition you can use a config file (.ini) you find <url url="http://www.opengatekeeper.org/opengate.ini" name="here">.
</p><sect1>Setting up a gateway
<p>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.
</p><p>From <url url="http://www.openh323.org" name="OpenH323 web site"> we download:
</p><p><enum><item>driver for Linejack
<item>PSTNGw application to create our gateway.
</enum></p><p>If executable doesn't work you need to download source code and
<url url="http://www.openh323.org/code.html" name="openh323 library">, then install all in a home user directory.
</p><p>After that you only need to launch PSTNGw to start your H323
gateway.
</p><sect1>Compatibility Matrix
<p>First Matrix refers to:
</p><p><enum><item>Software intercommunications (i.e. Netmeeting with SwitchBoard)
<item>Software/Driver/Hardware talking (i.e. Netmeeting can use a PhoneJACK