Académique Documents
Professionnel Documents
Culture Documents
anne 2009-2010
Page 1
Page 2
Remerciements
Je tiens remercier M. Anthony Cunningham, pour m' avoir acceuilli dans son dpartement de recherche, et
de m' avoir ainsi permis d' acqurir de nouvelles comptences et une exprience valorisante, tant au niveau
professionnel que linguistique.
Je remercie galement M. Cormac Mulally, pour l' aide qu' il nous a apporte dans la rsolution de certains
problmes techniques.
Plus gnralement, je souhaite remercier le personnel du dpartement de recherche de l' universit d'
Athlone, pour leur accueil chaleureux et notre intgration russie.
Enfin je souhaite remercier les professeurs de l' IUT, qui m' ont apport les connaissances et les mthodes
pour mener bien ce stage, et particulirement M. Chlebowski pour le suivi qu' il a effectu.
Page 3
Rsum francais
Durant ce stage, nous avons tout d' abord pris connaissance du lieu, le SRC, de leur mission, la recherche sur
le rseau sans oublier leur projet principal le SUNAT. Nous avons ensuite install progressivement et pas
pas une solution VoIP afin de rpondre la problmatique Comment faire une conversation orale sur le
rseau internet , puis particip au dveloppement d' un utilitaire pour valuer la qualit des conversations
VoIP. Durant cette exprience, nous avons rutilis un grand nombre de nos connaissances accumules en
DUT informatique, tout en les approfondissants. Nous avons particulirement progress en rseau et en
anglais, mais aussi tudi des protocoles et eu une exprience de la mise en place d' une solution opensource. Par ailleurs le stage ERASMUS permet un enrichissement personnel et une ouverture d' esprit qui ne
seraient pas les mmes lors d' un stage traditionel en France.
Page 4
English summary
During this placement, first we have taken some information about our working-place, the SRC, about their
role, doing some research on network protocol (SCTP, WIFI 802.11n), and finally about the main projet,
SUNAT. Secondly, we have installed step by step a VoIP solution in order to solve the following problem :
"How to make phone calls using the internet network ? ", then we have worked on software whose role is to
evaluate the quality of VoIP conversations. During this experience, we have used a lot of knowledge that we
have learned while studying computer-science DUT, and we have expended on it. We have made progress
particulary in English and in network technologies, we also studied protocols and implemented an opensource solution for VoIP. Besides the ERASMUS placement has helped us to gain a maturity and to be
more open-minded, it wouldn't be the same if we had done the placement in France.
Page 5
Sommaire
Remerciement.......................................................................................................................................3
Resume francais....................................................................................................................................4
Resume anglais.....................................................................................................................................5
I Introduction........................................................................................................................................6
II Prsentation grrale ........................................................................................................................7
a) Prsentation de l'AIT et du SRC.................................................................................................7
b) Fonctionnement du SRC.............................................................................................................8
c) Prsentation du projet.................................................................................................................9
III Le stage..........................................................................................................................................10
a) Dcouverte et installation au SRC............................................................................................10
b) Documentation pralable : La VoIP..........................................................................................11
c) Mise en place de la solution sur le rseau local........................................................................12
d) Dploiement de la solution sur internet....................................................................................14
le proxy.................................................................................................................................14
Configuration finale.............................................................................................................15
e) Dveloppement du logiciel d' analyse des Dlais.....................................................................16
IV Bilan..............................................................................................................................................17
a) Bilan Technique........................................................................................................................17
b) Bilan Humain............................................................................................................................18
V Conclusion......................................................................................................................................19
VI Glossaire........................................................................................................................................20
VII Bibliographie................................................................................................................................23
Site web : .............................................................................................................................23
Page 6
I Introduction
La problmatique de la communication au sein d' un service (informatique ou non) est une question
fondamentale, et influence considrablement son efficacit. Par extension, la qualit de cette composante
dans une entreprise influence sa comptitivit, c' est pourquoi il est primordial de ne pas la ngliger et d'
utiliser des outils adapts.
Rcemment une nouvelle technologie s' est dveloppe pour effectuer des appels tlphoniques travers un
rseau informatique classique, il s' agit de la *VoIP pour Voice over Internet Protocol . Outre le rseau;
elle ne ncessite que des postes informatiques normaux (quip de casque/micro), et aucun matriel
spcifique.
Au sein du dpartement de recherche de l' Athlone Institute of Technology ( *AIT) que nous prsenterons,
nous mettrons en place ce systme ainsi qu' un rseau personnalis pour rpondre au mieux ses besoins.
Pour ce faire, nous utiliserons des logiciels libres, linux en temps que *systme d'exploitation et *opensips
comme serveur tlphonique, nous expliciterons davantage son fonctionnement dans la partie
dveloppement.
Enfin nous n' omettrons pas de faire le bilan sur cette exprience; ce qu' elle nous a apport, les difficults
rencontres, ce que nous aurions pu faire en plus.
Page 7
II Prsentation grrale
a) Prsentation de l'AIT et du SRC
l' AIT bnficie du projet ARE*, dont le but est de dvelopper la recherche et dveloppement de l' Irlande,
ceci en installant / dveloppant des centres de recherche dans les instituts de technologie. Le but final est de
fournir une main d' oeuvre qualifie aux entreprises locales, en attirer de nouvelles et in fine acclrer le
renouveau conomique du pays.
L'AIT remplit donc 2 objectifs : l' enseignement et la recherche.
C' est dans son dpartement de recherche, le SRC* que nous ( Quentin Bezsilko et moi-mme ) ferons notre
stage.
Le SRC pour Software Research Centre a t cr en 2003. Sa mission est donc de faire de la recherche en
collaboration avec de grandes entreprises installes dans la rgion, comme par exemple Ericsson, ou bien
Eircom.
Son principal domaine de comptence est le rseau, et plusieurs projets sont mens de front, le plus
important tant le SUNAT. SUNAT est un acronyme pour Seamless Use Through Network Abtraction
Technologies. Le principe est de rendre les tlphones mobiles flexibles du point de vue des rseaux
utiliss. Ceci doit leur permettre de passer d' un type de rseau un autre ( du 3G au wifi par exemple ) afin
de gagner en cot et/ou en qualit. Le tout doit se faire en toute transparence pour l' utilisateur.
On comprend facilement que ces technologies novatrices intressent au plus haut point les entreprises de
tlcommunications, lesquelles supportent ces projets. L' AIT ressemble finalement aux ples d' excellence
franais, et forme un petit campus.
Page 8
b) Fonctionnement du SRC
Les membres du SRC sont au nombre de huit, sans nous compter puisque nous sommes stagiaires. La taille
de l' quipe tant relativement petite, la communication a lieu de manire directe ou bien par mail. Le tout est
relativement peu hirarchis, M. Cunningham est en quelque sorte le chef de projet : il supervise les autres
membres de l' quipe et dfinit les priorits ( puisque plusieurs projets ont lieu en mme temps ). Pour ce qui
est des autres membres, ils sont tous gale responsabilit.
Techniquement, le SRC dispose de son propre rseau local, et d' un accs internet haut dbit distribu sur
son rseau. Les machines utilises fonctionnent sous windows ou linux, et sont rcentes. On dispose
galement de pices de rechange ( crans, clavier/souris etc.) et mme d' ordinateurs de rechange. De
nombreux postes sont pourvus de deux crans. Les projets sont gnralement dvelopps dans des langages
informatiques* plutt bas-niveau, tel que le langage C*, pour des impratifs de vitesse d' excution.
Les horaires sont relativement souples, en fait ce sont plus des objectifs raliser qui sont indiqus, et pas
vraiment un nombre d' heures et de minutes de prsence. Les horaires sont thoriquement de 9h 17h avec
trente minutes de pause 10h30 et 1h 13h, mais il n' est pas rare de voir un chercheur arriver plus tard et
repartir plus tard galement. La pause de 10h30 constitue en fait le traditionnel breakfast Irlandais.
En ce qui nous concerne, nous avions des objectifs raliser, et des pistes indiques. Aprs cela, nous avions
carte blanche concernant la manire de le faire, et nous grions notre temps nous mme. Il n' y avait pas d'
impratif de date concernant le fonctionnement de tel ou tel module, tant que le travail tait ralis au final
(dans des dlais raisonnables tout de mme). Ceci ncessite naturellement un minimum d' autonomie et d'
organisation, mais ce n' tait pas un problme puisque nous avons appris cela l' IUT en effectuant des
projets en quipe ( je pense notamment au projet tuteur ).
Page 9
c) Prsentation du projet
Le projet se droulant dans un laboratoire de recherche sur le rseau, notre sujet sera donc orient rseau. Par
ailleurs, notre tuteur nous a prvenu que le sujet serait amen voluer en fonction de notre avancement.
L' intitul est dfini comme tel : mise en place d' une solution VoIP et d' un rseau personalis.
Le cahier des charges est le suivant : nous devons utiliser opensips, un serveur tlphonique virtuel, et xlite, un gratuiciel* qui se connecte opensips. Nous devons galement travailler sous linux, qui est capable
de *compiler et d' excuter opensips (il n'existe pas de version Windows d' opensips).
Dans un second temps, nous devons mettre en place un proxy* spcifique opensips, dans le but de pouvoir
dporter une partie de la charge sur diffrentes machines, et surtout de pouvoir utiliser le dispositif en dehors
du rseau local, c' est dire sur le rseau internet complet.
Enfin, nous avons particip au dveloppement d' un logiciel d' analyse de la qualit d' une conversation VoIP.
Ces tapes ncessitent une tude pousse pralable pour comprendre exactement comment fonctionne
opensips, la VoIP, avant de se lancer dans toute installation, paramtrage ou dveloppement.
Page 10
III Le stage
a)
Notre premire mission au sein du SRC ft tout simplement de prendre possession de notre poste de
travail. Loin du cadre scolaire ou il suffit de s' identifier sur la machine, nous avons chacun eu droit un
desktop* vierge avec un cran et un kit clavier-souris, ainsi qu' un disque d'installation d' Ubuntu*. Outre
l'installation matrielle, nous avons donc fait nous mme l' installation du systme d' exploitation et sa
configuration. Ayant une bonne connaissance du systme d' exploitation Linux grce au module systme du
DUT informatique, cette tape ft assez triviale.
On nous a donc ds le dbut accord une certaine autonomie, et nous aurions pu par exemple installer deux
systmes d'exploitation sur notre machine, demander une autre version de Linux, ou mme installer
Windows la place.
La majeure partie de cette premire journe ft toutefois consacre la prise d' informations sur le SRC, son
rle, son fonctionnement ainsi que la dfinition de notre sujet de stage, avec la mise en place d'un petit cahier
des charges ( oralement ).
Certaines choses nous ont quand mme t imposes, comme par exemple le logiciel Opensips en temps que
serveur SIP, ainsi que le logiciel client pour mettre en place la solution : X-lite.
Une fois le projet dfini, nous nous sommes rendu compte que nous ne connaissions absolument pas le
domaine de la VoIP, bien que nous ayons acquis des connaissances gnralistes en rseau au cours de notre
formation.
Nous avons donc dans un premier temps commenc un travail de documentation sur ce domaine. Nous avons
commenc par tudier comment fonctionne la VoIP, quelle technologies se cachent derrire, puis nous
nous sommes focaliss sur notre choix technique, opensips.
Page 11
Page 12
Page 13
Il n'est pas ncessaire de comprendre tous les signaux changs, mais on peut rsumer la procdure en trois
tapes :
Le client n 1 demande une communication avec le n 2 (juste entre entrant son nom).
Le serveur reoit la demande, et si le client n 2 existe et qu'il est connect, il transmet.
Si le client n 2 accepte la conversation, le serveur renvoie alors son adresse au client n1 et vice-versa, la
communication est tablie directement entre les deux clients (et le travail du serveur est fini).
Mais le client n 2 peut aussi refuser la communication.
Si le client n 2 ne rpond pas au bout d' un certain temps paramtrable, la conversation est annule.
Cette solution est fonctionelle, et prsente galement l' avantage d' tre multiplateforme : mme si Opensips
ncessite une machine sous Linux, X-lite* est disponible sous Linux, Windows et Mac, et de toute faon on
peut utiliser n' importe quel client SIP pour se connecter au serveur.
Mais cette solution prsente une faiblesse de taille : elle ne fonctionne que sur un seul rseau, le rseau local.
Ce qui signifie, qu' elle ne peut fonctionner que dans un mme service, au mieux dans une mme entreprise,
et en aucun cas sur internet.
C'est la raison pour laquelle dans un deuxime temps nous avons mis en place une solution capable d' tre
dploye sur le rseau mondial.
Page 14
le proxy
Notre tuteur nous a demand d'utiliser mediaproxy, un proxy pour opensips.
Jusqu' maintenant, nos clients SIP s'changeaient directement les donnes sur le rseau local sans aucun
intermdiaire (une fois la connection entre les deux tablie grce Opensips).
Le mediaproxy va tre un intermdiaire pour la voix ( qui passe via RTP ), comme le montre ce schma :
Page 15
On peut savoir ce qui se passe sur le rseau, combien d'appels, qui, de quelle dure...
On peut archiver ces donnes.
Mais surtout, si les clients ne se parlent plus directement, on peut rediriger les donnes
et
Configuration finale
Il faut tout d' abord disposer d' une adresse publique pour le serveur. Une fois le serveur install, il reste un
problme.
Par dfaut, Opensips transmet les invitations de conversation sur les addresses IP du rseau priv en mmoire
dans la base de donnes. Le problme, c' est que si Opensips est en dehors du rseau priv, ces adresses n'ont
plus aucune signification. Il faut la place indiquer l'adresse du routeur* du rseau local qui se chargera lui
de rediriger les invitations aux bonnes machines.
Ceci ncessite une fois de plus l' ajout de modules et la modification du script d' excution d' Opensips.
Pour notre part, ne disposant pas d'adresse publique nous avons simul cette situation avec un routeur
implmentant le NAT*. Le serveur tait ainsi isol sur un rseau diffrent et nous avons pu mettre en place le
service comme si nous tions dans les conditions relles.
Toutefois il faut savoir que aujourd' hui de plus en plus d'entreprises utilisent un Switch* et pas seulement un
routeur pour crer un rseau local. Nous avons donc plac cet quipement entre le serveur opensips et le
routeur puis nous l' avons configur afin de retrouver une solution fonctionnelle. Cette tape ft la dernire
concernant la mise en place de la solution VoIP, mais ncessaire pour affirmer que nous pourrions dployer
ce systme dans quasiment n' importe quel rseau d'entreprise.
Tout au long de ce projet, nous avons crit une documentation, un tutoriel pour expliquer comment faire, la
demande de notre tuteur. En effet, bien que les logiciels utiliss soient robustes, ils souffrent d' un manque de
documentation, au-del de la documentation strictement technique, il est trs difficile de trouver des
documents expliquant comme effectuer des actions ou une configuration ( relai des appels par le mdiaproxy
).
Page 16
Page 17
IV Bilan
a) Bilan Technique
Le DUT informatique nous a apport les briques de bases afin de nous permettre de nous en sortir :
durant notre formation, nous avons appris comment marche Linux, comment se servir de la console ou
encore des diteurs de texte. Ce sont ces connaissances basiques dont nous nous sommes reservies pour
le projet, lorsque nous avons install, compil, configur ( modifier le script d' excution notamment), etc.
Grce au stage nous avons donc acquis de l' exprience et vu une application concrte de nos cours
thoriques.
On peut tirer la mme conclusion pour le rseau, nous sommes arrivs avec quelques notions thoriques sur
les adresses, comment identifier une machine, et partir de l nous avons pu apprhender un systme
complexe comme la VoIP et configurer un vrai rseau. Une fois de plus le stage nous a apport une
application concrte de nos connaissances plutt thoriques.
Ayant eu la chance de faire un stage en Irlande grce au programme ERASMUS, nous avons pu galement
amliorer sensiblement notre anglais. En effet, tout au long de notre scolarit depuis le collge, nous avons
acquis des connaissances grammaticales, du vocabulaire, appris la conjugaison, etc. Toutefois, me
concernant je n' ai jamais eu l' occasion de pratiquer la langue dans de relles conditions pendant une priode
prolonge, en toute indpendance. Le fait de vivre l' anglais tous les jours, de l' couter la tlvision, de
le lire, de le parler bref de le pratiquer quotidiennement pendant trois mois confre une exprience et des
comptences qui ne peuvent pas tre acquises par un cours.
Par ailleurs, nous avons galement progress l' crit puisque nous avons tudi un grand nombre de
documentations, mais surtout crit nous mme une documentation, un tutorial pour raliser une installation
telle que la ntre ( en annexe ).
Enfin, lors du dveloppement du logiciel de calcul de dlai, nous nous sommes largement appuys sur nos
connaissances en programmation, tout en dcouvrant une nouvelle API. Nous nous sommes vraiment rendus
compte que le DUT informatique nous avait fourni les aptitudes ncessaires pour participer au
dveloppement d' un projet. Qui plus est, ce ft l' occasion pour nous d' utiliser nos connaissances rseaux
travers le dveloppement, donc d' en voir une autre application.
Plus globalement, nous avons dcouvert comment l' open-source pouvait tre dploy pour des
professionnels et utilis en entreprise. Nous avons vu ses forces ( fiabilit des logiciels, importance de la
communaut ) mais aussi ses faiblesses ( compliqu, peu user-friendly , documentation parfois obsolte
ou lacunaire ), toute notre solution tait base sur l'open-source : Linux en systme d'exploitation, opensips
en serveur SIP.
De manire gnrale, ce stage a t pour nous une application formatrice des comptences plutt thoriques
que nous avions acquises jusque l. Nous avons particulirement progress en anglais et en rseau, tout en se
rendant compte de l' importance de l' tude pralable d' un sujet et de la documentation.
Page 18
b) Bilan Humain
Lors de ce stage, nous avons eu une exprience du travail en quipe sur le long terme , dans le milieu
professionnel. En effet, mme si nous avions dj men des projets en quipe pendant le DUT informatique,
il s' agissait de projets but pdagogique, pour valuer les lves, et non de projets but professionnel. Qui
plus est, le temps consacr ces projets tait de quelques heures par semaines, contre 35h dans notre cas, ce
qui correspond de relles conditions de travail.
Tout au long de notre projet, nous avons joui d' une grande autonomie, ce qui n' tait pas forcment le cas
lorsque nous avons tudi. Nous avons donc expriment les brainstorming, les runions, les mises au point
sur l' avancement, pour faire le bilan et dterminer comment conduire la suite du projet. Nous avons appris
prendre le temps de dterminer les orientations du projet avant de se jeter sur les machines, et compris l'
utilit de ce type de dmarche. Dans le mme ordre d' ide, nous avons ralis l' importance de se
documenter avant d' entreprendre un projet, par exemple lors du logiciel de calcul de dlai. En effet, nous
avons commis des erreurs de conception suite une connaissance insuffisante de RTCP, pour finalement
tudier RTCP plus en profondeur et corriger les fautes. Cette exprience a bien illustr le fait que la
documentation pralable et la rflexion sur la conception ne sont en aucun cas une perte de temps.
Notre lieu de travail en lui-mme ft une dcouverte pour nous, puisque nous avons travaill dans un centre
de recherche, un secteur qui nous tait compltement inconnu. Nous y avons dcouvert une ambiance de
travail trs diffrente de l' enseignement, bas sur un rsultat attendu mais avec une grande autonomie et un
temps imparti flexible, et une assez grande libert dans nos choix. Nous avons galement d tudier certaines
choses nous-mme ( le rseau, la VoIP ) l ou l' IUT un professeur nous l' aurait enseign. Ceci a eu pour
avantage de dvelopper notre autonomie dans l' apprentissage.
Mais les effets bnfiques d' un stage Erasmus ne sont pas limits au contexte professionnel. En allant faire
notre stage en Irlande, nous avons eu la chance de rencontrer des personnes ayant une autre culture,
favorisant ainsi l' change et l' ouverture d' esprit. A Athlone, beaucoup sont tudiants internationaux, ainsi
nous avons eu la chance de cotoyer de nombreuses nationalits diffrentes, Italien, Tchque, Espagnol en
plus des Irlandais. L' enrichissement personnel que cela nous a apport n' aurait pas t accesible en France.
En dfinitive ce stage nous a apport plus de recul, plus d' autonomie dans l' apprentissage et de manire
gnrale. Nous avons eu l'occasion d' avoir l' exprience de mener un vrai projet . Mais le plus important
est peut-tre l' enrichissement personnel et l' ouverture d'esprit que nous avons retir de ce stage, grce
notre immersion dans ce milieu qui nous tait tranger et les rencontres que nous avons faites.
Page 19
V Conclusion
Notre stage au SRC nous a invit rpondre la problmatique suivante : comment communiquer
verbalement sur le rseau universel et htrogne qu' est internet ?
Pour y rpondre, nous avons au sein de ce dpartement de recherche tudi la VoIP pour ensuite en dployer
une solution, et enfin particip au dveleppement d' un logiciel novateur capable d' estimer sa qualit.
A travers la VoIP, nous avons progress en UNIX, en rseau, et grce au programme ERASMUS en anglais.
Durant ce stage, nous avons rutilis toutes nos connaissances acquises en DUT et nous les avons
approfondies. Notre objectif a t atteint puisque la fin du stage nous avons fait une confrence l' quipe
de recherche afin de prsenter la solution que nous avons implmente et expliquer son fonctionnement.
Bien entendu, il aurait t possible d' aller plus loin dans ce projet, en mettant par exemple davantage d'
obstacles ( proxy et autre quipement rseau ) entre les clients et le serveur, ou encore d' associer au
mediaproxy ( qui relais les appels ) une analyse des conversations et un archivage des donnes.
Si ce projet a rendu service l' quipe de recherche, nous en avons retir une exprience trs valorisante
galement. Dans un monde qui tend vers le tout numrique, il ne fait aucun doute que nous retravaillerons un
jour sur la VoIP qui remplacera terme les communications tlphoniques traditionnelles.
Page 20
VI Annexe
Annexe 1 : le tutoriel d' installation d' opensips
************************************************** *
*
***************************************************
Page 21
###########################################################
#
###############
#
PART ONE : INSTALLATION OF OPENSIPS
###########
#
###########################################################
You can now download the last version of opensips. We'll save the sources and put them in the appropriate
directory : /usr/src.
Nowadays the latest version is 1.5.1, so we will use it. You can have a look at the official website
http://www.opensips.org/ to check the last version.
Page 22
***************************************************************************************
First Method (using the terminal):
Try these commands :
benjamin@benjamin-desktop-AIT:~$ cd /usr/src
benjamin@benjamin-desktop-AIT:~$ wget http://opensips.org/pub/opensips/latest/src/opensips-1.5.1tls_src.tar.gz
This command will save the package into your /usr/src directory.
***************************************************************************************
***************************************************************************************
Second Method (using the browser):
Go to the Opensips official website : http://www.opensips.org/. Have a look at the right of the page, click on
read more and go to the download section.
Note : Be careful, OpenSIPS-CP is a control-panel for opensips, but it' s not OpenSIPS !
Download the latest version of opensips. Click on the link in the section : 2. Tarballs from SourceForge
and take the tls version.
We need to move the sources into the proper directory, so open a terminal and execute this command :
benjamin@benjamin-desktop-AIT:~$ sudo mv /home/benjamin/Desktop/opensips_1.5.1-tls.tar.gz /usr/src/
***************************************************************************************
This file is in an archive so we need to use this command to extract it :
benjamin@benjamin-desktop-AIT:~$ tar xvzf opensips-1.5.1-tls_src.tar.gz
The command tar extracts your package into your directory. For more information try this into your
terminal :
benjamin@benjamin-desktop-AIT:~$ man tar
Now, we're going to place ourselves into the opensips directory and compile the sources with all the
available modules. To do so, use the following command :
benjamin@benjamin-desktop-AIT:~$ cd opensips-1.5.1-tls
benjamin@benjamin-desktop-AIT:~$ make all include_modules="db_mysql" modules
benjamin@benjamin-desktop-AIT:~$ make install include_modules="db_mysql" modules
Page 23
We'll also need to copy the opensips.default and opensips.init files in their proper directories
(/etc/default/opensips and /etc/init.d/opensips).
To do so,try these command into your terminal:
benjamin@benjamin-desktop-AIT:~$ cp /usr/src/opensips-1.5.1-tls/packaging/debianetch/opensips.default /etc/default/opensips
benjamin@benjamin-desktop-AIT:~$ cp /usr/src/opensips-1.5.1-tls/packaging/debian-etch/opensips.init
/etc/init.d/opensips
Note : The command cp is short for copy. Try this for more informations :
benjamin@benjamin-desktop-AIT:~$ man cp
The last copied files need some changes about their option values.
First, open the /etc/default/opensips file with emacs or vim.
Note : for more informations about both text editors, try these commands :
benjamin@benjamin-desktop-AIT:~$ man emacs
benjamin@benjamin-desktop-AIT:~$ man vim
Change the following lines and save.
RUN_OPENSIPS=yes
1. User to run as
USER=opensips
1. Group to run as
GROUP=opensips
1. Amount of memory to allocate for the running OpenSIPS server (in Mb)
MEMORY=128
Second, open the /etc/init.d/opensips file and make the following changes (don't forget to save).
The line you'll have to change is DAEMON=/usr/sbin/opensips.
Put DAEMON=/usr/local/sbin/opensips instead.
Third we need to change the /usr/local/etc/opensips/opensipsctlrc file.
So open it with either emacs or wim and make the following changes.
SIP_DOMAIN=localhost
Page 24
DBENGINE=MYSQL
DBHOST=localhost
DBNAME=opensips
DBRWUSER=opensips
DBRWPW="opensipsrw"
DBROUSER=opensipsro
DBROPW=opensipsro
DBROOTUSER="root"
USERCOL="username"
INSTALL_EXTRA_TABLES=ask
INSTALL_PRESENCE_TABLES=ask
INSTALL_SERWEB_TABLES=ask
CTLENGINE="FIFO"
OSIPS_FIFO="/tmp/opensips_fifo"
PID_FILE=/var/run/opensips/opensips.pid
Note : All the lines prefixed by the '#' char are comments and ignored by the compiler. You must uncomment
these lines by taking off the '#' char
We'll need to create a database to save all the created users. We'll be using the mySQL one. To do so, try the
following command :
root@benjamin-desktop-AIT:/home/benjamin# opensipsdbctl create
MySQL password for root:
Note : this command will ask your mySQL password, so I hope you didn't forget it!
This database has to be configured so I'll tell you the changes you'll have to do.
Open the /usr/local/etc/opensips/opensips.cfg file and make the following changes :
loadmodule "db_mysql.so" #uncomment this line
loadmodule "auth.so"
Page 25
1. ----- auth_db params ----# uncomment the following lines if you want to enable the database authentification
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("auth_db", "db_url", "mysql://opensips:opensipsrw@localhost/opensips")
We are nearly finished. We need now to create the users. That is why our database has been set up.
So try the following commands to create them.
Create the softphone user in the database:
root@benjamin-desktop-AIT:/home/benjamin# opensipsctl add 1234 1234
root@benjamin-desktop-AIT:/home/benjamin# opensipsctl add 5678 5678
Note : the first command enables you to create a user named 1234 with the password 1234 into the
opensipsdbctl database (created just before)
Now we'll create the Opensips user in mySQL.
To connect to mySQL, try this command and enter your mysql password:
root@benjamin-desktop-AIT:/home/benjamin# mysql -p
Enter password:
Note : the -p option means you want to connect with a password.
You'll have the "mysql>" invite now.
Then try the following commands. Here is a normal execution of the mySQL requests.
mysql> GRANT ALL PRIVILEGES ON *.* TO opensips@localhost IDENTIFIED BY 'opensips';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO opensips@127.0.0.1 IDENTIFIED BY 'opensips';
Query OK, 0 rows affected (0.00 sec)
Note : these commands enables you to give all the permissions to the Opensips user (write and read the
database are the most important ones).
Page 26
##########################################################
#
###############
#
PART TWO : INSTALLATION OF MEDIAPROXY
###########
#
###########################################################
Page 27
First you must have a good understanding of what is mediaproxy and how does it work. You have a short
explanation hier : http://mediaproxy.ag-projects.com/, but don't worry you will have more in the README
file.
The easiest is to download the source and build our own package.
Go to the website : http://download.ag-projects.com/MediaProxy/ and download the archive of the last
version.
Note : Nowaday, the last version is mediaproxy 2.3.4, I will use it in this tutorial.
Uncompress it, with :
benjamin@benjamin-desktop-AIT:~$ tar -zxvf mediaproxy-2.3.4
Then update install the dependencies :
benjamin@benjamin-desktop-AIT:~$ sudo update
benjamin@benjamin-desktop-AIT:~$ sudo apt-get install devscripts cdbs debhelper python-all-dev pythonsupport \
libnetfilter-conntrack-dev python-application python-cjson \
python-gnutls python-twisted-core python-twisted-names \
python-zopeinterface python-pyrad python-sqlobject
Note : If you are running on Ubuntu 9.04, you will have a problem because it has python > 2.6 installed and
we need python < 2.6. Perhaps this problem will be fixed with the next version of mediaproxy, but for now,
I'm still searching for a solution. So for the moment the easiest is to use Ubuntu 8.10 with python 2.5.x.
run debuild in the mediaproxy directory :
benjamin@benjamin-desktop-AIT:~$ sudo debuild
You can safely ignore the pgp signing error at the end of the build process,
that is only because you do not have the pgp key for the person who is listed
as maintainer for the package. The packages are build fine even if they are
not signed.
After building them, you can find the .deb packages in the parent directory,
from where you can install them using dpkg:
benjamin@benjamin-desktop-AIT:~$ cd ../
Page 28
Page 29
descriptors to 11000
Apr 29 09:55:14 mediaproxy-desktop media-relay[6879]: fatal error: failed to create MediaProxy Relay: IP
forwarding is not available or not enabled (check /proc/sys/net/ipv4/ip_forward)
You have to edit the ip_forward file.
benjamin@benjamin-desktop-AIT:~$ sudo emacs /proc/sys/net/ipv4/ip_forward
Put "1" instead of "0". Save. Don't worry if the editor say you can't save, quit and open the file again to check
if the edition has worked.
If the dispatcher and the relay work, we can continu and configure opensips to use mediaproxy, and this is a
bit trickier !
Open the configuration file of opensips :
benjamin@benjamin-desktop-AIT:~$ sudo emacs /usr/local/etc/opensips/opensips.cfg
Go to the module section, and add this line at the beginning :
loadmodule "mediaproxy.so" #this is the module of opensips which is able to connect to mediaproxy
Add this line AFTER the tm.so and rr.so :
.
.
.
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "dialog.so" #we add it because mediaproxy.so need it
.
.
.
Now go to the end of setting module-specific parameters and add these line :
# ----- dialog param ----modparam("dialog", "dlg_flag", 4)
And finally we must edit the script to force opensips to use mediaproxy. Go to the "Routing logic", and then
in the "main request routing logic".
Add this in the route section :
if (is_method("INVITE") ) {
# We can
Page 30
engage_media_proxy();
}
Note : The method engage_media_proxy() make opensips to use mediaproxy automatically. You mustn't use
the function use_media_proxy() if you use engage_media_proxy().
So you should have something like that in your configuration file :
####### Routing Logic ########
Page 31
############################################### #########
#
###############
#
PART TREE : TRAVERSING THE NAT
##############
#
###################################################### ###
Page 32
|
|
WAN 192.168.2.1
-----------------|
router
-----------------LAN 192.168.1.1
|
--------------------------------------|
PC n1
192.168.1.101
PC n2
PC n3 ...
192.168.1.102 192.168.1.103
So if we keep the same configuration as if the server was on the LAN we will have a problem because out of
the LAN the IP-addresses of the clients are not still routable.
The first configuration we need to do is about the router.
We must modify the routing table to "explain" where to redirect the packages.
Note : Here I will not explain you how to configure a router, because it's different for each of them.
You have to connect to it (by entering 192.168.1.1 usually) and search for the "routing table".
You should already have this line in your routing table :
0.0.0.0
0.0.0.0
192.168.2.2
WAN (Internet)
255.255.255.0 192.168.1.1
192.168.2.0
255.255.255.0 192.168.2.1
WAN (Internet)
Note :
"192.168.1.0 255.255.255.0 192.168.1.1
LAN & Wireless" means "if you have an IP-address like
192.168.1.x (ex 192.168.1.56, 192.168.1.123 ), you have to redirect in the switch (192.168.1.1).
It's quite the same for the second line.
In my case, 192.168.1.1 represents the "local IP address", the LAN, and 192.168.2.1 represents the "Internet
IP addresse", the WAN.
Page 33
Page 34
fix_contact();
}
#end of the modification
#call of save("location");
}
.
.
.
}
Now you should be able to traverse the NAT.
Maybe you will still have problem to get the ACK message and the BYE one. In order to fix this problem,
try to add these lines :
if( client_nat_test("1") ){
fix_contact();
}
In the INVITE section like this :
if( is_method("INVITE") ){
engage_media_proxy();
if( client_nat_test("1") ){
fix_contact();
}
}
And in the onreplyroute section :
onreplyroute[2] {
if( client_nat_test("1") ){
fix_contact();
}
xlog("incoming reply\n");
}
Page 35
#########################################################
#
###############
#
PART FOUR : OTHER PROBLEMS ?
############
#
######################################################## #
If you still have some problems, you can go to this very good documentation :
http://www.kamailio.org/docs/. Don't worry, kamailio mean opensips.
Then, if you have didn't manage to solve your problem with the documentation, you can ask in some forum :
http://sourceforge.net/forum/forum.php?forum_id=839860
http://n2.nabble.com/OpenSIPS-(Open-SIP-Server)-f1449251.html
Annexe 2 : module de calcul de dlai du logiciel d' analyse qualitative de conversation VoIP
import jpcap.*;
import jpcap.packet.*;
import java.io.*;
import java.util.List;
import java.util.ArrayList;
import java.net.*;
public class Delai{
/*Four parameters are needed in this class
-the port of the sender
-the port of the receiver
-two lists to save the packets (one for the sender and one for the receiver)
*/
List <UDPPacket> listSender;
List <UDPPacket> listReceiver;
int portDstSender;
int portDstReceiver;
/*The constructor*/
Delai(int port_dst_sender, int port_dst_receiver){
listSender = new ArrayList <UDPPacket> ();
Page 36
Page 37
Page 38
else
nbPacketIgnored++;//the receiver packet related with another file
}
nbPacketCaptured++;
}
}else{
continuer = false;//we stop if we're at the end
}
}
captor.close();
System.out.println("all is well : we've captured "+nbPacketCaptured+" packets.");
System.out.println("We've skipped "+nbPacketIgnored+" packet(s) at the beginning because there
were related with the previous package");
}catch( IOException e){ System.out.println(e); }
}
//capture the packet and filter with an address source and and address destination
void capturePacketFromFile( String fileName, InetAddress source, InetAddress destination ){
int nbPacketCaptured = 0;
int nbPacketIgnored = 0;
//we must destroy the old data before load the new one
listSender.clear();
listReceiver.clear();
try{
JpcapCaptor captor=JpcapCaptor.openFile(fileName);
captor.setFilter("udp", true);
boolean continuer = true;
boolean sender_detecte = false;
while( continuer ){
//read a packet from the opened file
Packet temp = captor.getPacket();
UDPPacket packet = null;
//we continue only if the packet is good and if the file is not at the end
if( temp != null && temp != packet.EOF ){
packet = (UDPPacket)temp;
//we only use the packet with the port of RTCP
if( packet.dst_port == this.portDstSender || packet.dst_port == this.portDstReceiver ){
//we take only the packet corresponding to the required ip address
if ( source.equals(packet.src_ip) && destination.equals(packet.dst_ip) ){
if( getTypeReport(packet) == 200 ){
listSender.add(packet);
sender_detecte = true;
}else{
//we need to have a sender before take the receiver
if( sender_detecte ){
listReceiver.add(packet);
}
else
Page 39
Page 40
Page 41
= null;
Page 42
Page 43
VII Glossaire
A
adresse IP : Une adresse IP identifie un ordinateur ou un priphrique sur un rseau. On distingue les
adresses IP prives situes sur les rseaux locaux qui ne sont pas uniques, et les adresses IP publiques qui le
sont. Ceci est uniquement valable pour le systme actuel bas sur l'IPv4, qui souffre d' une pnurie d'
adresses (publiques).
A terme, grce l' Ipv6 cod sur 128 bits au lieu de 32, on pourra n' utiliser que des adresses publiques.
AIT : Athlone Institute of Technology. Sorte d' IUT l' Irlandaise qui a une mission de formation et
de recherche. Forme un petit campus elle seule.
API : Application Programming Interface, peut tre traduit par interface de programmation.
Dans le langage java, une API fournit et / ou abstrait une fonctionnalit, comme par exemple dans notre cas l'
interception et la lecture de paquets-rseau.
ARE : Applied Research Enhancement. Programme financ la fois par l' tat Irlandais, l' union
Europenne et les grandes entreprises prsentes en Irlande pour dvelopper la recherche. Vingt millions d'
euros ont dj t investis pour dvelopper la recherche dans les quatorze instituts de technologie que compte
l' Irlande.
C
Code source : Ensemble des instructions qui composent un programme.
Compilation : Action de fabriquer un programme partir du code source.
D
Desktop : il s' agit d'un ordinateur de bureau ( d'ou le mot Desk, qui signifie en anglais bureau). On
oppose le plus souvent le Desktop au Laptop (ordinateur portable).
G
Gratuitiel : Logiciel gratuit mais propritaire ( dont on ne peut pas voir son code source ni le
distribuer librement ).
L
Langage informatique : ensemble des symboles et des mots cls avec les rgles qui permettent de
dfinir des instructions pour l' ordinateur.
On distingue deux types de language :
-Les languages de bas-niveau, qui sont proches de la machine et du binaire afin de gagner en
prcision et en efficacit.
-Les languages de haut niveau, qui offrent davantage d' abstraction afin de rendre moins complexe et
plus rapide la programmation, le tout au dtriment de la vitesse d' excution.
Langage C : Langage informatique plutt bas niveau et ancien ( 1re version 1970 ). Il a l' avantage
compte tenu de son anciennet d' tre optimis et utilisable sur de trs nombreux types de machines
diffrentes.
Language java : Language informatique de haut-niveau, plutt rcent ( mi-90 ) et orient objet.
Linux : Systme d' exploitation open-source sous licence GPL.
Page 44
M
MySQL : SGBD open-source. Selon l' application, sa licence peut tre libre ou propritaire.
N
NAT : Network Address Translation. Dispositif qui permet de faire correspondre des adresses IP
internes non-uniques une ou plusieurs adresses IP publiques (uniques). Il s' agit d' conomiser des adresses IP
pour rpondre la pnurie actuelle (en IPv4).
O
Opensips : Logiciel libre ( open-source ) qui implmente le protocole SIP. Il est appel galement
Kamailio, et s' appelait auparavant openser.
Open-source ( logiciel ) : Il s' agit d' un logiciel qui peut tre redistribu librement et gratuitement, et
qui plus est offre un accs libre son code-source, sa recette de fabrication.
P
Proxy : Serveur qui permet de manire gnrale de relayer une requte.
Protocole ( de communication ) : Ensemble de rgles (de contraintes) qui permettent deux entits,
deux dispositifs de communiquer.
R
routeur : Equipement sur la couche 3 du modle OSI qui fait transiter les informations (paquets) d'un
rseau un autre (et vers la bonne machine !). Il s' appuie pour cela sur la table de routage.
RTP : Realtime Transport Protocol. Protocole qui permet la transmission de la voix sur un rseau
numrique. Utilis par la VoIP.
RTC : Reseau Tlphonique Commut, il s' agit du rseau tlphonique traditionnel , analogique.
RTCP : Real-time Transport Control Protocol. Il s' agit d' un protocole qui fonctionne de pair avec le
RTP et permet notamment de rapporter des statistiques sur la qualit de la conversation, comme le nombre de
paquets perdus ou la gigue. A partir de certaines donnes on peut calculer le dlai d' une conversation.
S
SRC : Software Research Centre. Dpartement de recherche de l' AIT financ par le projet ARE. Il
jouit du support de neuf partenaires industriels dont Ericsson.
SIP : Session Initiation Protocol. Protocole ouvert de communication situ sur la couche 5 du modle
OSI. Il permet l' tablissement de connexions pour un transfert de donnes de toute nature ( image, son,
vido... ), mais pas la transmission des donnes en elle-mme. Il est souvent utilis par la VoIP conjointement
avec le protocole RTP.
SDP : Session Description Protocol. Il s' agit d' un protocole qui est encapsul par SIP et contient des
informations d' identification comme le nom de session et dans notre cas des informations sur les codecs
audios utilisables.
Switch ( ou commutateur rseau ) : Equipement qui permet d' interconnecter des ordinateurs ( ou
parfois autre dispositif ). Il travaille au niveau 2 du modle OSI, mais contrairement au routeur ne permet pas
d' attribuer des adresses IP ou encore d' implmenter le NAT.
Systme d' exploitation : logiciel spcial qui permet un ordinateur de fonctionner. Il est galement
capable d' abstraire le fonctionnement de l' ordinateur et de fournir une interface facile d' accs l'utilisateur.
Page 45
X
X-lite : client SIP multi-plateforme (Windows, Linux, Mac). Du point de vue rseau, X-lite peut
jouer le rle de client et de serveur, c'est pourquoi il est possible d'tablir une connection directe entre deux
postes X-lite.
VIII Bibliographie
Page 46
Site web :
Wikipdia en Franais : http://fr.wikipedia.org/wiki/Accueil
Wikipdia en Anglais : http://en.wikipedia.org/wiki/Main_Page
Site comprenant wiki et tutoriel sur la VoIP : http://www.voip-info.org
Site comprenant documentation et forum sur opensips : http://www.kamailio.org/
Site comportant la documentation et le logiciel mediaproxy : http://mediaproxy.ag-projects.com/
Site comportant des tudes sur la VoIP et ses implmentations : http://francois.ctrlaltdel.ch/
Site officiel d' Opensips : http://www.opensips.org/
Site officiel de Jpcap : http://netresearch.ics.uci.edu/kfujii/jpcap/doc/
Page 47