VoIPv6 on Linux with VOVIDA

A tutorial for setting up and running VOVIDA on an IPv6-enabled Linux server. Plus, how they ported an existing IPv4 application to support IPv6.

The Third Generation Partnership Project (3GPP), which is responsible for the standardization of the third-generation mobile networks, has designated the session initiation protocol (SIP) as the call control protocol and Internet protocol version 6 (IPv6) as the only network protocol for 3G IP-based wireless networks. SIP is an application-layer control protocol used to initiate interactive user sessions involving multimedia elements in third-generation mobile networks. IPv6, a network layer protocol, is the new generation IP protocol, which is intended to replace IPv4 following a migration period. However, because the schedule for upgrading IPv4 to IPv6 is hard to predict, the issue of communication between legacy IPv4 and new IPv6 equipment must be solved. It is assumed that sessions between IPv4-only clients and IPv6-only 3G mobile terminals are needed and transition mechanisms are necessary to achieve inter-networking.

Exploration of such transition mechanisms started at the Ericsson Research Open System Lab in Montreal, in collaboration with Professor Bill Atwood and his graduate students from Concordia University. The idea was to provide a prototype solution based on Linux and open-source software.

In this article, we present a detailed solution for implementing a SIP audio communication between IPv6 endpoints based on the VOCAL system. We also demonstrate our implementation of an IPv4/v6-compatible SIP system on dual-stack Linux servers. As IPv4 and IPv6 will co-exist until a full migration to IPv6 takes place, a mechanism is needed that allows hosts in an IPv6-only network to talk to hosts in an IPv4-only network. We explore NAT-PT, which provides a solution for this scenario, and propose a DNS-ALG (DNS application level gateway) and a SIP-ALG (SIP application level gateway), which will be the subject of a follow up article in Linux Journal.

SIP Overview

SIP is an application-layer control protocol that can establish, modify and terminate multimedia sessions, such as Internet telephony calls. SIP establishes sessions using the session description protocol (SDP), which is used to negotiate a set of compatible media types to be shared among participants. It also can invite participants to join existing sessions, such as multicast conferences.

SIP defines two distinct types of messages: requests and responses. A SIP message is either a request from a client to a server or a response from a server to a client. SIP requests can be sent directly from a user agent client to a user agent server, or they can traverse one or more proxy servers along the way (see Figure 1).

Figure 1. Sample scenario where SIP messages go through multiple SIP proxies before reaching their destinations.

User agents send requests either directly to the address indicated in the SIP uniform resource identifier (URI) or to a designated proxy (outbound proxy), independent of the destination address. The current destination address is carried in the request-URI. Each proxy can forward the request based on local policy and information contained in the SIP request.

Figure 2 illustrates an example of a SIP message exchange between two user agents running on two Linux nodes: Sauternes and Gamay. The setup is explained further in a later section and illustrated in Figure 3.

Figure 2. Establishment and termination of a SIP session between two user agents, one on Sauternes and the other on Gamay.

The VOVIDA Project

VOVIDA.org is a communications community Web site dedicated to providing a forum for open-source software used in datacom and telecom environments. The VOVIDA Open Communication Application Library (VOCAL) is an open-source project targeted at facilitating the adoption of VoIP in the marketplace. VOCAL provides the development community with software and tools needed to build new VoIP features, applications and services. The software in VOCAL includes a SIP-based Redirect Server, Feature Server, Provisioning Server and Marshal Proxy.

Both the SIPSet and VOCAL Servers now support IPv6. IPv4 and IPv6 are supported at the same time, with VOCAL being able to use both types of addresses. Provisioning currently requires valid IPv4 addresses, however.

In this article, we use the VOCAL implementation to demonstrate audio communications between two user agents running on IPv6 Linux servers. We describe how to set up the network, how to install and configure VOCAL and, finally, how to run and test it.

Network Setup

A minimal test setup requires three nodes: two nodes to establish communications and one node that act as an IPv6 router and DNS server (see Figure 3).

Figure 3. Network Setup

In order to achieve the desired setup presented in Figure 3, we need to follow three steps:

  • 1. Support IPv6 at the kernel level on all the three nodes.

  • 2. Install a Web server that supports IPv6 (Apache) on the two Linux hosts.

  • 3. IPv6 support for DNS and routing.

We explain each of these steps in the following sub-sections.



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.


Paul_jur's picture

Where are the figures in this article??

Re: VoIPv6 on Linux with VOVIDA

Anonymous's picture

As a small comment here, I would like to note that the SIP Express Router (see www.iptel.org/ser) has been IPv6 capable since the end of 2002. We also have provided IPv4-IPv6 translation over a NAT-PT since more than a year now. With both the server and translator we have also extended the widely used SIP user agent KPhone to support IPv6 (http://www.iptel.org/products/kphone/). Finally, the website of iptel.org is also IPv6 capable under (www.ipv6.iptel.org, 2001:638:806:2001:202:b3ff:fe38:c1cc). Under this site, you can register for a SIP account and conduct SIP calls in the public IPv6 network.
More information about the transition and integration of SIP and IPv6 are available are available in our paaper "SIP and IPv6: Why and how" which was published in January 2002 and is available under www.fokus.fhg.de/mobis/publ/Sisa0301:SIP.pdf

best regards