Issue #2 December 2004

Unlimited Anytime Minutes: GnomeMeeting

Introduction

GnomeMeeting is an H.323 compatible videoconferencing and VoIP (Voice Over IP) telephony application that uses audio and/or video to communicate with remote parties. It was written by Damien Sandras as a final year project and has been in three years of active development with many contributors. The primary goal of GnomeMeeting is to allow for free communication between people anywhere in the world at any time from any place. It does this by utilizing OpenH323 (http://www.openh323.org/), which is the engine that makes this communication possible. OpenH323 is an implementation of the ITU-T H.323 teleconferencing protocol that can be used by personal developers and commercial users without charge.

Installation

The latest version of GnomeMeeting is 1.0.2 and can be downloaded from the projects homepage (http://www.gnomemeeting.org/). Proceed to the download section to find packages for Red Hat distributions (either Fedora Core 1 or Red Hat Linux 9). Download all of the packages and proceed to install them. A simple rpm -Uvh command should be all that is required.

Configuration

Now that you have an idea of what GnomeMeeting is and how it can be used, let us configure it. GnomeMeeting should be available via the Applications/Internet menu or the Internet menu in a Red Hat distribution. If this is your first time using GnomeMeeting, you are greeted with the Configuration Druid. The Configuration Druid is a step by step process that configures GnomeMeeting properly so that we can begin the process of making a call. It is comprised of nine pages, and it is pertinent that this information is filled out appropriately. The first page invites you to the Configuration Druid as shown in Figure 1, “Entering Your Name”.

Entering Your Name
Figure 1. Entering Your Name

This step is a simple one, enter your first and surname and press the Forward button in the lower right hand corner.

Entering an Email Address
Figure 2. Entering an Email Address

Enter your email address. If you decide you do not want to register to the GnomeMeeting users directory (ils.seconix.com) then you may click the small check box at the bottom. If you choose this option you will not be listed on the GnomeMeeting ILS (Internet Locater Service) server and will only be reachable via IP. ILS is a directory similar to a telephone directory. Think of it as a phone book. When you want to call someone you just look up the number for that particular person and dial away. The ILS directory operates on the same concept except in this case the number you are looking up is an IP address.

Choosing a Connection Type
Figure 3. Choosing a Connection Type

Choosing a connection type determines the best default settings possible for your current connection.

Choosing your Audio Manager
Figure 4. Choosing your Audio Manager

Your audio manager should be auto detected by GnomeMeeting whether it is OSS or ALSA. Select the correct choice and press Forward.

Audio Output and Input Device
Figure 5. Audio Output and Input Device

Choose your audio output device, which is usually the device connected to the speakers. Also select the audio input device, which is usually the device connected to the microphone. Note that it is highly likely that the audio output and input device are the same. A good example of this would be a normal everyday sound card. It has output for a speaker connection and input for a microphone connection; therefore, your audio output and input devices are the same. These would be different if, for example, you had a microphone on your webcam and decided to use that instead of the microphone input on your sound card.

Choosing Your Video Manager
Figure 6. Choosing Your Video Manager

In most, if not all cases, you will be using Video4Linux (listed as V4L in the video manager options) if you have a webcam. If you do not have a webcam you have the option of selecting Picture as the video manager, which displays a GnomeMeeting picture instead of video. Notice that Firewire cameras also work with the appropriate plugin (AVC or DC) being loaded.

Choosing a Video Device
Figure 7. Choosing a Video Device

On the Video Devices page as shown in Figure 7, “Choosing a Video Device”, select the video input device to transmit video. If you selected Picture as the video manager, then also select a Static or Moving logo. Otherwise, select your video input device.

Configuration Completed
Figure 8. Configuration Completed

The configuration is now complete, and you are shown a summary of all the configuration options that you have chosen as in Figure 8, “Configuration Completed”. If anything is incorrect you may press the Back button and correct it.

Even though configuration of video and audio devices is out of the scope of this introduction, most distributions should include the required modules for your audio and video devices. GnomeMeeting itself does its absolute best to auto detect any devices that you may have.

Configuring for NAT

With the Internet being akin to the wild wild west, everyone has some sort of firewall setup to protect themselves from the elements (hackers, crackers, and the in-betweens). Add to the mix the shortage of IP addresses and multiple computers using one connection, and this combo usually means that Network Address Translation (NAT) is being used. If you have a router that naturally supports H.323 then your setup is complete. However, if you have a router that is not H.323 aware, then you need to forward ports from your router to the internal NAT address from which you are using GnomeMeeting. Thankfully, NAT is natively supported in GnomeMeeting and is available under the Preferences menu as shown in Figure 9, “Enabling NAT Support”.

Enabling NAT Support
Figure 9. Enabling NAT Support

If you are utilizing NAT, then enable it and forward the following port ranges:

  • TCP port 1720
  • TCP port range [30000-30010]
  • UDP port range [5000-5007]
  • UDP port range [5010-5013]

(Refer to your router's documentation on how to open and forward required ports if you do not know how to do so already.) If you use a software router such as IPTables, IPFilter, or natd here are some generic rules. If you are not the administrator and cannot change these settings, speak with your administrator. Redirecting ports and opening ports on a firewall you have not set up without asking questions can lead to trouble. So, be sure you have made a request or inquired ahead of time. You will save yourself and your respective administrator a lot of time, effort, and trouble.

Here are some rules you can use for GNU/Linux with IPTables:


#!/bin/bash
IPTABLES=/sbin/iptables

# = where resides the iptables binary (see "type -p iptables")
OUT_DEV=ppp0

# = your public Internet-Device
IN_DEV=eth1

# = your internal Internet-Device
IN_HOST=192.168.70.18

# = Host to which the incoming H323 is being forwarded
TCP_PORT_RANGE=30000:30010
RTP_PORT_RANGE=5000:5007
TCP_LISTENING_PORT=1720
GK_PORT_RANGE=5010:5013
#TCP_PORT_RANGE - H245, if no tunneling is made
#RTP_PORT_RANGE - RTP connections (2 audio, 2 video - RTP and RTCP)
#TCP_LISTENING_PORT - H.323 port
#GK_PORT_RANGE - if external GK is used

# activate masquerading on public interface
$IPTABLES -t nat -A POSTROUTING -o $OUT_DEV -j MASQUERADE

# set incoming port forwarding...
$IPTABLES -t nat -I PREROUTING 1 -i $OUT_DEV -p tcp --dport $TCP_PORT_RANGE -j DNAT --to-dest $IN_HOST
$IPTABLES -t nat -I PREROUTING 1 -i $OUT_DEV -p udp --dport $RTP_PORT_RANGE -j DNAT --to-dest $IN_HOST
$IPTABLES -I FORWARD 1 -p tcp -i $OUT_DEV --dport $TCP_PORT_RANGE -d $IN_HOST -j ACCEPT
$IPTABLES -I FORWARD 1 -p udp -i $OUT_DEV --dport $RTP_PORT_RANGE -d $IN_HOST -j ACCEPT
$IPTABLES -t  nat -I PREROUTING 1 -i $OUT_DEV -p tcp --dport $TCP_LISTENING_PORT -j DNAT --to-dest $IN_HOST
$IPTABLES -I FORWARD 1 -p tcp -i $OUT_DEV --dport $TCP_LISTENING_PORT -d $IN_HOST -j ACCEPT

# add port forwarding for external GK
$IPTABLES -t nat -I PREROUTING 1 -i $OUT_DEV -p udp --dport $GK_PORT_RANGE -j DNAT --to-dest $IN_HOST
$IPTABLES -I FORWARD 1 -p udp -i $OUT_DEV --dport $GK_PORT_RANGE -d $IN_HOST -j ACCEPT
$IPTABLES -I POSTROUTING 1 -t nat -o $IN_DEV -d $IN_HOST -p udp --dport $GK_PORT_RANGE -j ACCEPT

Example 1. Basic IPTables Rules for GnomeMeeting

If you are using IPFilter on your gateway or router, add the rules from the following sections and restart ipf or ipnat.

Note:
These are generic rules and should be modified for your custom environment. However, these examples should provide you with some guidelines on how to proceed.

Packet Filter Configuration

Add the following to /etc/ipf.rules or /etc/ipf.conf):


pass in quick on <ext-interface> proto tcp from any to <localnet>/<netmask> port = 1720 keep state
pass in quick on <ext-interface> proto udp from any to <localnet>/<netmask> port 4999 >< 5008 keep state
pass in quick on <ext-interface> proto udp from any to <localnet>/<netmask> port 5009 >< 5014 keep state
pass in quick on <ext-interface> proto tcp from any to <localnet>/<netmask> port 29999 >< 30011 keep state

These rules only apply to the incoming connections; you might want to also filter the outgoing connections.

ipnat Configuration

Add the following to /etc/ipnat.rules or /etc/ipnat.conf:


# variables
OUT_DEV=EXTERNAL_INTERFACE (for example: ne0)
IN_NET=INTERNAL_NETWORK (for example: 192.168.0.0/24)
IN_DEV=YOUR_IP_OF_COMPUTER (for example: 192.168.0.3)

# for NAT'ing all connexion from local network to Internet
nat on $OUT_DEV from $IN_NET to any -> ($OUT_DEV) static-port

# special rules for forwarding
rdr on $OUT_DEV proto tcp from any to ($OUT_DEV) port 1720 -> $IN_DEV
rdr on $OUT_DEV proto tcp from any to ($OUT_DEV) port 30000:30010 -> $IN_DEV
rdr on $OUT_DEV proto udp from any to ($OUT_DEV) port 5000:5007 -> $IN_DEV
rdr on $OUT_DEV proto udp from any to ($OUT_DEV) port 5010:5013 -> $IN_DEV

natd Configuration

Add the following to /etc/natd.conf:


# redirect port 1720 from router to internal ip at 192.168.1.40
redirect_port tcp 192.168.1.40:1720 1720
redirect_port tcp 192.168.1.40:30000-30010 30000-30010
redirect_port udp 192.168.1.40:5000-5003 5000-5003

Registering with an ILS Server

ILS Directory Settings
Figure 10. ILS Directory Settings

Now that all of the required ports are open, make sure that you will be properly registered to your chosen ILS directory by verifying that Enable registering is selected as shown in Figure 10, “ILS Directory Settings”. If the publishing of details in the users directory checkbox is selected as well, it is much like having a listed telephone number — who searches the directory will be able to call you. If you want a private listing, meaning the publish checkbox is not selected, only others that know you will be able to call.

GnomeMeeting Address Book
Figure 11. GnomeMeeting Address Book

This brings us to the address book. GnomeMeeting currently utilizes its own address book system. It is located under Tools -> Addressbook. Think of the address book as a front end to the ILS server. It allows you to save addresses of your friends, family, coworkers, and people you just generally call often. Now that we are properly registered to an ILS server and we have our address book open, let us step through the process of making a call.

Walking Through a Call

Select Tools -> Addressbook from the pull-down menu if you have not done so already. Click the Find button in the lower right hand corner of the window to list every person registered to the ILS server. In our case, the server is ils.seconix.com. Now that we have the list, we can decide on who to call. Most people welcome random calls, and others only accept calls from friends and family. You can tell by what is in their comments section. Select a friend or click on a random person and begin your call.

Eventually someone will pickup, and you can begin your conversation. The connect button resembles a connected plug socket when you are connected. With that, you have just completed your first call with GnomeMeeting. Pat yourself on the back. You are now one of the few, the select, the brave. OK, maybe I am taking it a little far. Welcome to the lovely world of VoIP!

Although you can make calls through the address book, you can also make calls through the use of URLs via the input box below the pull-down menu. Callto URLs were used by Microsoft for Netmeeting, and H.323 URLs respect the H.323 standard and are thus the default for GnomeMeeting. If you know the URL address of the party that you wish to call, enter that URL into the h323: or callto: input box at the top of the screen and press the Connect button (which looks like an unplugged power socket and is conveniently located to the right of the input box). For example, entering 192.168.100.1 and pressing the Connect button calls the user at the IP address 192.168.100.1. When the call is connected and you have started communication with your party, the Connect button will resemble a connected power plug.

The Present and Future of GnomeMeeting

GnomeMeeting 1.00 was released in early March 2004 and is considered by its developers to be usable not only in personal environments but in corporate environments as well primarily as a softphone (a software phone), meaning that it can be used strictly as a VoIP application performing IP Telephony capability without using any of its video capabilities at all. This is dual behavior in the sense that it can be a VoIP softphone, with the same kind of features as regular IP Phones, and also a full featured videoconferencing application. The developers plan to continue in the same direction to bring the most complete softphone available for Unix. There are, however, a few directions in which GnomeMeeting will evolve. They are introduced here and are expanded on later in this article:

  • Support for other protocols
  • Better integration with the GNOME desktop
  • Support for different platforms

How Some Are Using GnomeMeeting

There are currently two kind of GnomeMeeting users: the everyday kind of user, using it to save money mainly as a video phone or using VoIP providers with a PSTN gateway (Public Switched Telephone Network, much like an average phone system) and the corporate user, using it as a softphone instead of using a hardware IP phone and/or for videoconferencing.

Your everyday user is using GnomeMeeting as a videophone to chat with people they know or to meet new people sharing their similar interests whether it be in the Open Source community or a particular hobby. The typical usage for those users is to register with ils.seconix.com and call others. If they only want to use GnomeMeeting for people they know, they can either register a private listing or directly provide their IP address to their friends and family for a direct connection. As a reminder, private listings still get a callto:// address from the ILS server, allowing them to be easily accessible to their friends and family wherever they are. Most people are using video and audio, but you do not need video to speak with others so a few users only use audio communication.

Another typical use of GnomeMeeting is for making PC-To-Phone calls. Some people have relatives outside of their country. With the current phone system this leads to prohibitively expensive phone bills just to keep in touch. Some of those relatives might not have computers, but most are guaranteed to have a phone. The principle of PC-To-Phone calls is that you get an account from a provider having PSTN termination. That means that your call is routed over the Internet until it reaches PSTN termination where it is converted into a normal phone call. The result of such an approach is very cheap phone calls done from your PC to a normal phone using GnomeMeeting. An example of such a provider is Microtelco (http://www.linuxjack.com/).

Such providers, including MicroTelco, require the proprietary and patented G.723.1 codec to be able to control calls. GnomeMeeting only ships with free and open codecs; thus, you must buy a Quicknet card to be able to use GnomeMeeting with such providers. The purpose of a Quicknet card is to provide the missing G.723.1 codec, to provide hardware-based echo cancellation, but also to transform your PC into a real phone. However, operating over IP is entirely controlled by GnomeMeeting. You can actually plug a POTS (Plain Old Telephone Set) into the Quicknet card, configure GnomeMeeting to use the Quicknet device, and start calling people using the actual phone. This includes the ability to dial IP addresses, phone numbers (if you are using a PC-To-Phone service), or a speed dial sequence so that you can dial complex addresses from a familiar keypad.

Corporate users are using GnomeMeeting instead of hardware IP phones for the convenience of using a softphone instead of an IP Phone. A typical use for corporate users is to use GnomeMeeting in conjunction with gatekeepers and with an IP-PABX such as Asterisk (http://www.asterisk.org/). You can then dial other IP phones, softphones, and normal phones. All calls going through the IP-PABX also bring additional functionality like VoiceMail, conference support, and so on. Corporate users are thus typically using advanced features of GnomeMeeting such as:

Gatekeepers
Gatekeepers control all calls and perform the translating of aliases into IP addresses, allowing you to call a person using an alias or extension instead of having to use a long callto address or an IP address.
Call forwarding
This feature allows users to automatically forward incoming calls to other URLs or hosts when they are busy or when they not answer a call in time, or simply for any incoming calls if they let GnomeMeeting run and move to another place where there is another instance of GnomeMeeting running.
Call transfer
This feature allows users to transfer any active call to another destination if the remote user has reached the wrong party. Notice that when you are using an IP-PABX, an incoming call can be somebody calling with a normal phone. The IP-PABX is performing the conversion from the PSTN signal into the VoIP call.

Another typical use of GnomeMeeting in corporate environments is its use of videoconferencing capabilities, especially in conjunction with professional Multicast Units, allowing several people to connect at the same time. This is also used in other places beyond the corporate arena, mainly in schools or in companies where videoconferencing is more important than all the extra features of VoIP (for example, conducting remote meetings).

SIP

Looking into the future, GnomeMeeting will keep its roots as a videoconferencing and VoIP application, but it will support more protocols and platforms. SIP (Session Initiation Protocol) is one of the newer protocols for VoIP. SIP and H.323 in terms of functionality presented to the user are approximately the same, but as with Vi and Emacs, there are SIP proponents and H.323 proponents. Regardless of the differences, it is important for GnomeMeeting to support both protocols. This is a needed change for corporate users in SIP environments but also for normal users as products like iChat and MSN Messenger are using SIP as their primary protocol for their audio and video capabilities.

SIP support in GnomeMeeting will most likely appear in 2004, when GnomeMeeting will migrate from OpenH323 to its successor.

Integration into GNOME

GnomeMeeting is, as its name implies, a GNOME program, but it is also part of the GNOME desktop, meaning that when you get a brand new copy of GNOME, GnomeMeeting is one of the default programs available to you. In the future, it will better integrate with the GNOME desktop and provide services to other programs. Many features are still on the road map, but you can look forward to the following:

Address Book integration
GnomeMeeting will be integrated with the new Evolution Data Server. This will allow all GNOME programs to access a common address book and contacts list between Evolution and GnomeMeeting. You will be able to add H.323 or callto URLs as ways of contacting people in your address book, and that also means that you will keep the same contacts in all your GNOME applications, including GnomeMeeting. This is a further step in allowing communications, contacts, and data to be unified and will replace the current address book system.
Reusable object component or service
GnomeMeeting will be modified to be controllable by other programs, either as an embeddable component or as a service. Imagine being able to transparently initiate GnomeMeeting calls from Evolution (to clarify a matter or to respond to a vendor) or Gossip or Gaim. Or, how about writing a document and being able to call someone during a presentation by just clicking a link. Currently, this can technically be done by starting a GnomeMeeting instance from an external program, but starting an instance is not enough. Other programs have to be able to control GnomeMeeting from inside the program itself so that the user does not have to interact with GnomeMeeting at all. All this makes for seamless communication between two parties. You might not phone a friend when you have instant messenger, but you are more than likely to pick up the phone to dial a vendor or customer. It would simply be easier to click a URL and any information or data communicated between the two parties stays on one device.

Closing

People have been talking of a future where communication is free for a long time, especially in today's world where no matter where two people are they are able to communicate, see each others environments, and experience each others experiences. This vision or dream, however, is still not a reality for all people today. The cost for ubiquitous communication is expensively prohibitive, especially with monopolies and conglomerates lobbying to prevent cheap and free communication at all cost. GnomeMeeting is an answer to this environment. Since there are very few free applications like it and because VoIP is in its infancy, it is very easy to overlook. However, as more companies start running their own phone systems to save money and as your everyday user finds VoIP functionality in their everyday programs, GnomeMeeting will be helping to make this communication possible and free. Maybe we will not reach the goal of ubiquity today or tomorrow or the day after, but it is a step closer.

I would like to thank Damien Sandras for contributing to this article and everyone on the GnomeMeeting team for their support, including all the contributors and people who help to make this program possible.

You can find most of the GnomeMeeting team on irc.gnome.org:6667 (#gnomemeeting). We are a friendly bunch and usually try to help with whatever problem or concern users have regarding GnomeMeeting.

About the Author

Christopher Warner is currently a computer science student at New York City Tech, in his last year. He has served in the US Army and likes to work with GnomeMeeting during his free time. When he is not doing something with GnomeMeeting, some of his hobbies include running, reading, and charitable works. He currently resides in Brooklyn, NY.