Professional Documents
Culture Documents
Prsent par
Mouhamad KAMARA
Sous la direction de
Bara THIAM (CFAO TECHNOLOGIES)
Samuel OUYA (Ecole Suprieure Polytechnique)
SOMAIRE
SOMMAIRE
INTRODUCTION-------------------------------------------------------------------------------------6
1. Prsentation du lieu de stage-------------------------------------------------------7
2. Prsentation du sujet-------------------------------------------------------------------11
2.1. Problmatique--------------------------------------------------------------------------------- 12
2.2. Le sujet de stage----------------------------------------------------------------------------- 12
2.3. Choix dune dmarche et justification-------------------------------------------13
3. La tlphonie sur IP---------------------------------------------------------------------14
3.1. La Tlphonie sur IP et les protocoles-------------------------------------------16
3.2. Normalisation de la Tlphonie sur IP-------------------------------------------18
3.3. Qualit de service et capacit--------------------------------------------------------19
3.4. La tlconfrence multimdia--------------------------------------------------------19
3.5. Les modes de communication--------------------------------------------------------19
3.6. Les Protocoles--------------------------------------------------------------------------------- 20
3.7. Les produits et matriels dun rseau de tlphonie sur IP--------27
4. Spcifications JTAPI----------------------------------------------------------------------51
4.1. Les configurations supportes-------------------------------------------------------53
4.2. Larchitecture du package JTAPI-----------------------------------------------------54
4.3. Les objets de JTAPI-------------------------------------------------------------------------- 55
4.4. Structure Objet-------------------------------------------------------------------------------- 55
4.5. Structure dynamique---------------------------------------------------------------------- 56
4.6. Les diffrents tats------------------------------------------------------------------------- 58
4.7. Les vnements------------------------------------------------------------------------------ 59
4.8. Droulement dun programme-------------------------------------------------------60
4.9. Implmentation CISCO et exemple------------------------------------------------60
5. La plate-forme J2EE----------------------------------------------------------------------62
5.1. Quest ce que J2EE-------------------------------------------------------------------------- 63
5.2. Larchitecture Deux Tiers (Two Tiers architecture)-----------------------64
5.3. Larchitecture n Tiers---------------------------------------------------------------------- 65
Mise en place dun systme distribu de supervision, de taxation et de gestion des quotas sur un rseau de tlphonie sur
IP
5
SOMAIRE
Mise en place dun systme distribu de supervision, de taxation et de gestion des quotas sur un rseau de tlphonie sur
IP
INTRODUCTION
Prsentation du sujet
2. Prsentation du sujet
2.1. Problmatique
12
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
3. La tlphonie sur IP
15
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Figure 1 : Tlphonie de PC PC
3.1.1.2.Tlphonie entre PC et poste tlphonique et vis
versa
Dans ce scnario, lun des correspondants utilise un PC rattach au
rseau Internet par un fournisseur daccs Internet, lautre correspondant
utilise un tlphone rattach au rseau tlphonique commut. Une
passerelle est ncessaire ente les deux rseaux pour rendre possible cette
technique et faire la conversion entre rseaux (dans ce cas elle fait la
conversion Internet-RTC et vis versa). Elle se charge galement de lappel
du correspondant et de lensemble de la signalisation relative la
communication tlphonique du ct du correspondant demand. Du ct
PC, une signalisation dappels est ncessaire pour tablir une
communication et ngocier les paramtres de communication multimdia.
18
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
V P X CC M PT Numro de
Squence
Horodatage (Timestamp)
Identificateur de source de synchronisation (SSRC)
Identification des sources contributrices (CSRC)
En-ttes supplmentaires
Donnes
Tableau 1 : En-tte du paquet RTP
Le champ V (2 bits) : Version RTP, actuellement V=2.
Le champ P (1 bit) : Si P=1 le paquet contient des octets
additionnels de bourrage (padding) pour finir le dernier paquet.
Le champ Extension X (1 bit) : Si X=1, len-tte est suivie dun
paquet dextension.
Le champ CSRC count CC (4 bits) : Il contient le nombre de CSRC
qui suivent len-tte.
Le champ M (1 bit) : Son interprtation est dfinie par un profil
dapplication (Profile).
Le champ Donnes type PT (7 bits) : Ce champ identifie le type
de donnes (audio, vido, image, texte).
Le champ numro de squence (16 bits) : Sa valeur initiale est
alatoire et il sincrmente de 1 chaque paquet envoy, il peut
servir dtecter des paquets perdus.
Le champ horodatage (32 bits) :Ce champ reflte linstant o le
premier octet du paquet RTP a t chantillonn.
25
Prsentation du sujet
Prsentation du sujet
RR Rapport metteur
SR Rapport Rcepteur
SDES Description de Source
BYE Fin de session
APP Nouveau champ
Tableau 2 : Les paquets de contrle
RR : contient le rapport de la qualit de la livraison des donnes
des participants passifs (rcepteur) incluant le nombre de
paquets reus, le nombre de paquets perdus, la gique et
lhorodatage qui permet le calcul du dlai total de transmission
entre les deux parties.
SR : contient le rapport de la qualit de livraison des donnes des
participants actifs (metteurs). Il contient les champs du RR, et
des informations sur lmetteur, la synchronisation (pour
synchroniser deux sources de donnes), un compteur cumulatif
de paquets et le nombre doctets envoys.
SDES : contient linformation concernant les metteurs comme le
nom canonique (CNAME), et le nom dusager (NAME), le numro
27
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
facultatif qui assure le traitement centralis des flux de donnes dans une
confrence multipoint.
3.8.1.5.Protocoles et procdures
La recommandation H323 enveloppe dautres recommandations
pour permettre les communications en temps rel. Le tableau IV rsume
quelques unes dentre elles :
Recommandation Aperu
Codecs Audio G.711 Encode le signal selon les lois A ou en
G.723.1 G.729 64 Kbit/s Encode et compresse le signal
vocal en 5.3 et 6.4 Kbit/s Encode et
compresse le signal vocal en 8 et 13
Kbits/s
Codecs Vido H.261 H.263 Encode et compresse la vido en 64 kb/s
Encode et compresse faible taux de
compression
Communication de Protocole de donnes pour les
donnes T.120 confrences multimdia
Contrle H.245 H.225.0
Transport temps rel RTP /
Protocole de contrle pour les
RTCP
communications de donnes Protocole
de signalisation des appels Protocoles de
transport et de contrle en temps rel
Scurit H.235 Scurit, cryptage pour les terminaux
des sries H32x
Services Protocole pour les services
supplmentaires H.450.1 supplmentaires Transfert dappels et
H.450.2 et 450.3 autres services supplmentaires
Tableau 4 : Recommandations du H323
3.8.1.6.La pile H323
La figure 8 montre la pile des protocoles spcifis par le standard
H323
33
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
3.8.1.21. Discussion
Nous avons choisi dutiliser le protocole SIP pour ses caractristiques
suivantes :
Fiabilit : SIP peut fonctionner aussi bien avec TCP quavec UDP.
Vu que UDP est un protocole non fiable, SIP doit fournir sa propre
fiabilit faite de retransmission. Le protocole TCP par contre est
fiable; une fois que la connexion est tablie les donnes
arriveront destination.
Services : SIP permet des services similaires aux services de la
tlphonie classique. Il fournit les lments de construction de
ces services laide des enttes et des mthodes. Parmi ses
services :
o Le transfert dappel : permet un utilisateur de transfrer
un appel tabli une tierce partie. SIP le ralise par
lintermdiaire de len-tte Contact. -Le transfert de
communication : permet lutilisateur appel de faire
suivre un appel une autre adresse en utilisant les en-ttes
Contact, Call-ID
o Invitation dun groupe : Contrairement aux autres
protocoles de signalisations, SIP permet des appels qui
atteignent une personne ou bien un groupe de personnes.
Ceci est rendu possible grce lutilisation dUDP qui
permet le multicast.
o Mobilit de personnes : La mobilit dune personne
correspond la capacit de crer et de recevoir un appel
nimporte quel terminal et dans nimporte quel site. SIP
permet de joindre la personne appele, mme en cas de
changement de terminal. Ceci est possible grce au serveur
de redirection dont le rle est de rediriger les appels vers
une autre destination que la personne appele a choisi.
45
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
entre les deux mondes que se situe le protocole MGCP. Cette intgration
permet au rseau RTC de voir les lments de rseau tlphonique
comme tant autre switcher du rseau RTC. Larchitecture relative
linterconnexion du rseau tlphonique avec un rseau IP est prsente
sur le schma ci-dessous.
Prsentation du sujet
Prsentation du sujet
3.8.2.2.Mode de fonctionnement
Le protocole MGCP est un protocole de contrle de fonctionnement
de Media Gateway. Dans ce protocole llment intelligent est le Call
Agent il contrle les passerelles par lutilisation des huit commandes
changer entre lui et les passerelles. Ces commandes sont reprsentes
dans le tableau suivant :
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
4. Spcifications JTAPI
53
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Leurs tats respectifs sont IDLE (attente) et une fois la connexion vers le
tlphone de B tablie le tlphone sonne. Les trois objets sont encore en
position dattente, jusqu' que B dcroche. Si B ne dcroche pas nous
allons directement la dernire tape. Sinon lappel devient effectif
jusqu' quune des deux parties raccroche (dans lexemple B raccroche).
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
5. La plate-forme J2EE
64
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
connecter sur un EJB en mode HTTP (dans lidal) ou via le protocole IIOP
(plus rpandu).
5.5. Les diffrents outils de bas niveau
Nous avons vu (trs succinctement) plus haut larchitecture globale de
la plateforme J2EE. Nous allons maintenant prsenter les diffrents outils.
Il existe 3 grands types doutils :
Composants
Services dinfrastructures
Services de communications
5.5.1. Composants
On distingue en gnral deux catgories de composants :
Web
Mtiers
5.5.1.1.web
Il sagit de la partie prsentation (interface de lutilisateur et les
traitements). Le client reoit seulement du texte HTML, mais il sagit
seulement de la partie visible de lapplication. Derrire la scne,
diffrentes technologies permettent votre code dtre plus performant,
plus robuste, et plus facile mettre maintenir
5.5.1.1.1. les JSP
Les JSP (Java Server Page) sont les pages servant gnrer lensemble
du code HTML de linterface utilisateur. On y intgre aussi bien du code
HTML que des scriplet Java (code java) ou encore des balises
personnalises (tag-lib). Cette technologie est donc ddie la gnration
de HTML et non au traitement de la requte de lutilisateur. On lappelle
gnralement : Vue.
5.5.1.1.2. Les Servlet
Une Servlet est une classe Java qui permet de traiter une requte
venant dun client. Cette technologie doit soccuper de traiter les donnes
71
Prsentation du sujet
Prsentation du sujet
5.5.3.3.Web Services
Les Web services permettent de partager un ensemble de
mthodes qui pourront tre appeles distance. Cette technologie utilise
XML, ce qui permet dtre utilise par nimporte quel langage et nimporte
quelle plateforme.
5.5.3.4.JMS (Java Message Service)
Cette API fournit des fonctionnalits de communication asynchrone
(appeles MOM pour Middleware Object Message) entre applications.
5.5.3.5.JavaMail
Cest une API permettant l'envoi de courrier lectronique.
5.6. Implmentation de J2EE (les serveurs dapplication)
Il est avant tout indispensable de dfinir clairement ce qu'est un
serveur d'application. En effet, une confusion rgne dans les esprits quant
la notion de serveur d'application. Cette confusion a t introduite en
grande partie par les diteurs de serveurs d'application J2EE (Java2
Entreprise Edition) afin de s'approprier ce march. La notion de serveur
d'application a en effet t mlange avec celle de serveur d'objet qui n'a
absolument rien voir.
5.6.1. Quest ce quun serveur dapplication ?
Le serveur d'application est l'environnement d'excution des
applications ct serveur. Il prend en charge l'ensemble des
fonctionnalits qui permettent N clients d'utiliser une mme application :
Gestion de la session utilisateur : N clients utilisant une mme
instance d'application sur le serveur, il est ncessaire que le serveur
d'application puisse conserver des contextes propres chaque
utilisateur (par exemple, un panier de commandes). La plupart des
serveurs d'application gnrent un identifiant unique pour chaque
nouveau client et transmettent cet identifiant lors de chaque
change HTTP par URL longs, variables caches ou cookies.
73
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
plutt utilise pour les projets beaucoup moins importants, complexes que
ceux utilisant J2EE.
.Net na bien sr rien envier J2EE et rciproquement. De plus,
linteroprabilit tant de plus en plus exploite, J2EE et .Net peuvent
communiquer ensemble de faon transparente.
5.7.2. Composants standard contre framework
Nous vous avons prsent le standard J2EE avec lensemble de ses
composants. Cependant il est parfois lourd dutiliser un composant conu
pour de grande architecture alors que notre application est restreinte.
Lensemble de la communaut OpenSource (principalement) sest occup
(et soccupe) de lancer sur le march des frameworks servant simplifier
lutilisation de telle ou telle technologie.
Souvent plus limit que le standard, les framework sont plus simple
dutilisation et plus performant dans certains cas.
5.7.2.1.EJB vs Hibernate vs Spring
Les EJB peuvent parfois tre la bte noire des dveloppeurs J2EE. En
effet, ils ne sont pas vident mettre en place et sont souvent lourds
lutilisation. Ils sintgrent le plus souvent dans les projets de grandes
envergures.
Pour les projes plus courants et plus petits, les framework Hibernate et
Spring peuvent trs largement remplacer ces EJB.
5.7.2.1.1. Prsentation
Les EJB grent laccs et le traitement des donnes (persistantes ou
non). Pour faire de mme avec lutilisation de framework externe, il faut
en utiliser deux en gnral.
Hibernate : cest un framework qui permet de mapper une base
de donnes relationnelle en objets (POJO : Plain Old Java Object). Il
permet donc dabstraire totalement laccs la base de donnes et
propose donc un accs totalement orient objet aux donnes.
78
Prsentation du sujet
Prsentation du sujet
5.8.1.2.Jonas ObjectWeb
Jonas est un serveur dapplication implmentant la rfrence officielle
pour les EJB. Il intgre un lien avec Tomcat afin dintgrer les
fonctionnalits pour les applications web.
80
Prsentation du sujet
Source : http://jonas.objectweb.org/
Technologies implmentes :
JSP
Servlet
EJB
JCA
JDBC
JTA
JMS
JMX
JNDI
JAAS
JavaMail
5.8.1.3.JBoss
5.8.2. Propritaire
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
6. Spcifications et exigences du
systme
Prsentation du sujet
6.1.1. Objectifs
Lobjectif premier de cette partie est de :
Dfinir les spcifications et exigences de notre systme
Dgager les diffrentes fonctionnalits du systme
Dfinir larchitecture gnrale du systme
Reprsenter la solution sous forme dartfacts
La vue densemble du projet consiste mettre en place une
application distribue de supervision, de taxation et de gestion des quotas
tlphoniques partir des informations gnrs par le Call Manager de
CISCO (CDR).
Le contexte dapplication du projet est de pouvoir utiliser les
informations des communications tlphoniques gnres par le Call
Manager afin de pouvoir effectuer une taxation, une gestion de quotas de
communications, et avoir des statistiques sur lvolution des
consommations.
6.1.2. Vue densemble des fonctionnalits du systme
6.1.2.1.Gestion de la scurit
Ce module intgrera la gestion des utilisateurs et de leurs profils, la
gestion des fonctionnalits et des permissions. Il permettra entre autre
un utilisateur donn de pouvoir se connecter lapplication et de pouvoir
consulter ltat de ses communications tlphoniques.
6.1.2.2.Gestion du paramtrage
Ce module permettra la gestion des paramtres de lapplication,
notamment les informations de la socit, lenvoi ventuel de mail dans le
cas du dpassement de quotas tlphoniques, la mise jour des
informations sur loprateur et ses tarifs de communications.
6.1.2.3.Gestion de la facturation
86
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
Prsentation du sujet
100
Prsentation du sujet
Prsentation du sujet
102
Prsentation du sujet
Prsentation du sujet
La classe Jtrace
104
Prsentation du sujet
2) Perspectives
A lissu de ce projet, lobjectif est de mettre en place ce systme au prs
dentreprise disposant de PBX IP que ce soit du CISCO, ASTERISK, ou un autre et
ne voulant pas trop dpenser pour acqurir un tel systme. Il faut dire que de tels
outils existent mais seulement ils sont propritaires et cotent cher.
2) Ouvrages gnraux
3) Ouvrages spcialiss
o SUN Microsystems : Telecom Network Management with Enterprise
JavaBeans Technology, Mai 2001
o CISCO Systems :
Nous allons ici voir les tapes communes tout programme JTAPI.
Initialisation du moteur
JtapiPeer peer = JtapiPeerFactory.getJtapiPeer ( null );
System.out.println("Get Provider");
provider = peer.getProvider ( providerString );
if ( eventList != null ) {
addr.AddObserver(this);
if(events != null){
switch(events[i].getID()){
case CiscoAddrInServiceEv.ID:
break;
//le paramtre null slectionne l'objet JtapiPeer par dfaut: celui implment par Cisco
A partir de maintenant, nombre d'vnements JTAPI pourront tre traits par notre
application suivant qu'on dveloppera le code ncessaire.
3) Classes dimplmentation
o La classe GatewayServlet
package fw.homework.xgen.controller;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import com.sun.org.apache.xerces.internal.parsers.DOMParser;
import fw.homework.xgen.exception.UseCaseControllerException;
import fw.homework.xgen.includes.Constant;
import fw.homework.xgen.includes.Globals;
import fw.homework.xgen.includes.Session;
import fw.homework.xgen.util.XmlUtil;
public GatewayServlet() {
super();
}
o Linterface UsecaseController
package fw.homework.xgen.controller;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
o Le descripteur de dploiement
<servlet>
<display-name>CallEvent</display-name>
<servlet-name>CallEvent</servlet-name>
<servlet-class>
fw.homework.xgen.controller.GatewayServlet
</servlet-class>
<init-param>
<param-name>useCase</param-name>
<param-value>CallEvent</param-value>
</init-param>
</servlet>
o Le fichier UsesCases.xml
<useCases>
<useCase>
<name>CallEvent</name>
<controller>
fw.homework.xgen.controller.CallEventController
</controller>
</useCase>
</useCases>
o La classe Jtrace
package fw.homework.xgen.tracer;
import javax.telephony.Address;
import javax.telephony.JtapiPeer;
import javax.telephony.JtapiPeerFactory;
import javax.telephony.Provider;
import javax.telephony.ProviderObserver;
import javax.telephony.Terminal;
import javax.telephony.callcontrol.CallControlCallObserver;
import javax.telephony.events.AddrEv;
import javax.telephony.events.CallEv;
import javax.telephony.events.ConnEv;
import javax.telephony.events.Ev;
import javax.telephony.events.ProvEv;
import javax.telephony.events.ProvInServiceEv;
import javax.telephony.events.ProvShutdownEv;
import javax.telephony.events.TermConnEv;
import javax.telephony.events.TermEv;
import javax.telephony.media.MediaCallObserver;
import com.cisco.cti.util.Condition;
import com.cisco.jtapi.extensions.CiscoAddressObserver;
import com.cisco.jtapi.extensions.CiscoJtapiVersion;
import com.cisco.jtapi.extensions.CiscoTerminalObserver;
public JTrace() {
print("JTrace" + ": " + new CiscoJtapiVersion());
print("Opening " + PROVIDER_STRING + "...\n");
initJtapi(PROVIDER_STRING);
}
provider = peer.getProvider(providerString);
if (provider != null) {
print("Provider name: " + provider.getName() + "\n");
provider.addObserver(providerObserver);
provInService.waitTrue();
}
print("\n");
}
} else {
print("Provider is null\n");
}
} catch (Exception e) {
e.printStackTrace();
print(e.getMessage());
}
ProvEv ev = eventList[i];
switch (ev.getID()) {
case ProvInServiceEv.ID:
provInService.set();
break;
case ProvShutdownEv.ID:
provOutOfService.set();
break;
}
}
} else {
bufPrint("Error: providerChangedEvent was invoked with a null eventList\n");
}
} finally {
flush();
}
}
}
}