adlib Ltd.
Many developers must be thinking that what we can do with IPv6 can be done with IPv4. This series of Introduction to IPv6 articles differs from previous IPv6 introductory articles in that its main theme is how to implement on IPv6 the things you can do with IPv4, in order to deepen understanding about characteristics of IPv6.
Implementing Internet phone with IPv6
At the end of the last article, I wrote I would discuss "IP phone" in the next article. But IPv6 is already being used in "IP phone". IP Centrex by Freebit uses IPv6 for addresses allocated to terminals, offering the advantage of enabling easy migration and configuration changes. This time, I will talk about building "Internet phone" with IPv6.
The difference between telephone, Internet phone and IP phone is already vague. It has been said that the difference is based on the communication channnels used (PSDN, the Internet or IP network). But they are often mixed these days, making them inappropriate for use as criteria for distinction. Telephone uses numbers other than 050, and use "phone terminal" device. Internet phone uses "non-phone terminal" devices, such as PCs and PDAs. IP phone uses 050 number and "phone terminal" devices.
So this time, we will think about what happens if we build PC-based IP phone with IPv6.
We need at least the following three components to enable Internet phones:
1) put voice on IP
2) find the opponent
3) connect
IPv6 does not offer any particularly superior technology to put voice on IP. IPv6 has some QoS mechanisms in the protocol, but they cannnot be used widely.
What about the technology to find the opponent? Whether you connect via servers or peer to peer, the connection is based on IP addresses. The problem is how to obtain the IP address to connect. The first thing that comes to mind is the use of DNS. But no DNS can resolve host names and IP address for all machines connected to the Internet. There is a possibility to solve this with DDNS, a dynamically-updated naming system, or the like (whether it is realistic or not).
But name resolution cannot be used for private address hosts on the internal network behind widely-used NATs. With IPv6, all hosts can be given global IP addresses, so you can get opponent IP address from its name at least.
Even if you can put voice on IP and get opponent IP address, you cannot communicate unless you have the third factor of connection. IPv4-based Internet phone software is given a lot of effort to solve this problem, so that communication is possible despite NATs and even firewalls, in many cases today.
Some people has said that IPv6 has better be used for Internet phone as it is difficult to go across NATs. But such advantage of IPv6 appears to have diminished, with NATs and firewalls so seamlessly overcome in IPv4.
However, from a different perspective, IPv6 still has advantages pf being able to have multiple call destination addesses. When there are n people such as A1, A2, A3, ... An, each of them can only have one IP address to use to talk to B. It should require a very cumbersome workaround in both server and client to enable simultaneous conversations with multiple people separately, to deny specific callers at connection level, or only accept incoming calls from people you know.
On the other hand, IPv6 can be used to utilize the vast address space, and make connections with different address for each caller. For example, you would get call destination address (which is made public) through the procedure mentioned above. The call adressee creates dedicated address for each call (let me call it dedicated address) and tells it to the caller. The caller attempts to make connection to the new dedicated address. If you have relatively few people you talk with and trust, then you may wish to assign a permanent dedicated address for each of the caller you accept, instead of assigning one every time.
In this way, talking to multiple people separately only requires one application instance per one call with each dedicated address. You can deny a caller by not issuing a dedicated address, or stop waiting at the already-assigned dedicated address. If you only want to accept calls from people you know, you just have to make the public address private. This will stop assigning new dedicated addresses, so no one can reach you without knowing his/her dedicated address.
Of course, you would need some level of authentication, but it is not difficult to issue something close to shared keys at the initial phase of issuing dedicated address. So this should not be a big problem.
In building Internet phone with IPv6, you need to solve the encryption procedure issue, in addition to the above name resolution. IPv6 supports IPsec at protocol level, but the prcedure is not simple. You can of course encrypt at application level, but the technology and services which possibly solve this issue was announced last year. It's called m2m-x, and it enables devices connected to network can directly communicate with one another, safely and simply.
m2m-x has some functions for authentication of the opponent, configuration for communication encryption, access control to each device, etc. They are developed on a specification based on SIP. The service is centered on "m2m-x Management Server", which manages connection of each device without using DNS.
The service is built with focus on connecting device to device. And it is said that ISPs will offer such services. If this becomes a reality, it would offer advantages in building applications such as Internet phone.
Next article will discuss an application to watch TV on the Internet.


