Sponsors

Project co-financed by ACIISI

Agencia Canaria de Investigación Ministerio de ... Plan Avanza

How to play libnice-ly with your NAT

Printer-friendly versionPrinter-friendly version
Author(s): 
Youness Alaoui

One of the main challenges of 21st century Internet is the lack of IP addresses available under IPv4. This has led the Internet to be heavily populated with NATs which allow several computers to access the Internet through the same IP address. By solving one problems, NATs have created several others, one of the major ones being that they make it very difficult for specific clients behind these NATs to establish direct connections with each other. This is a major issue for many applications such as VoIP calls, file transfers or P2P gaming which require this direct connection between clients. The solution has come under the form of a specification of the Interactive Connectivity Establishement (ICE) which provides a methodology to establish direct connections through NATs with a relatively high success rate. Libnice is one of the first libraries to the latest release of the ICE specification. It is currently fully featured and functional. It allows to easily establish a direct connection between two peers no matter what network topology they are behind. In my talk, I will be explaining what the current problem with NATs is and explain the different NAT types and how they affect connectivity. I will then explain the principles of ICE and the methodology ICE uses in order to traverse these NATs. Finally I'll explain how to use libnice and integrate it in your applications.

Author bio: 
Affiliation: Collabora I'm Youness Alaoui, also known as KaKaRoTo. I'm the lead developer of the aMSN project since 2002. I've been working for Collabora for two years now where I am part of the streaming team. My focus has been on the Farstream (formerly Farsight) library and mainly on the Libnice library.