Progetto di RETI DI CALCOLATORI L-S Prof. Antonio Corradi Presentazione di: Mirko Colleluori 169783 A.A. 2006-2007 Con il seguente progetto si intende individuare le componenti essenziali dell’intera teoria che fa da supporto al VoIP e sviluppare un supporto software che dia corpo al concetto di Voice over IP. Applicazioni: Obiettivi: Telefonia su IP (VoIP) e User Location User Availability User Capabilities Session Setup Session Management Data Transmission/Reception QoS Monitoring Altro (Sequence Numbering, Time Stamping) servizi telefonici supplementari Video comunicazione (video conference, operator services) Sistemi di notifica di eventi (subscribe/notify) Sistemi di messaggistica (instant messaging, presence services) Simulazioni interattive distribuite e giochi interattivi Misurazioni e controlli in remoto (video surveillance) RTP / RTCP (IETF - RFC 3550 e 3551): Java Media Framework (JMF v1.1) SIP - Session Initition Protocol (IETF - RFC 2543 e 3261) Jain-Sip 1.1 APPLICAZIONE JAIN SIP RTP TCP RTCP UDP IP SCELTE PROGETTUALI • SIP: si occupa di trovare e stabilire una connessione tra gli utenti, specificando le caratteristiche della comunicazione grazie al SDP, Session Description Protocol presente nel body del messaggio • RTP: permette di inviare lo stream dei pacchetti della voce • RTCP: controlla la QoS della trasmissione JMF APPLICATION LEVEL COMPONENT LEVEL CORE LEVEL SIP Register SIP Presentity SIP Party SIP Registrar SIP Watcher SIP TPCC REGISTER PRESENCE 3PCC RTP Console P2P STREAMING SIP Core RTP Core SIP RTP SUPPORTO RTP Packet: Java Media Framework (JMF v1.1): javax.media.rtp.*; javax.media.rtp.rtcp.*; javax.media.rtp.event.*; Streaming RTP RTP Manager RTCP OBIETTIVI QoS • inizializzare e avviare Monitoring la partecipazione in una sessione • rimuovere flussi individuali creati da un’applicazione • chiudere l’intera sessione • QoS monitoring Package: media.mediaoverip.rtp.core ReceiveStream SenderStream Statistics TimeStamp SSRC CSRC Numerazione getGlobalTransmissionStats() getGlobalReceptionStats() Reports Participants Events Pattern Observer getAllParticipants() getRemoteParticipants() getActiveParticipants() getPassiveParticipants() SessionEvent RemoteEvent evt SendStreamEvent evt ReceiveStreamEvent evt API JSR 32 Jain-Sip (J2SE): javax.sip.*; javax.sip.address.*; javax.sip.header.*; javax.sip.message.*; Modello a eventi: Response Event SIP Message Request OBIETTIVI • formattazione del messaggio SIP • invio/ricevere i messaggi • gestione transazioni con timeout, • gestione stati e ciclo di vita. invite bye ack cancel options register Setup Function createListener() getInstance() SIP Packet: SIP Listener SIP Factory eventRegistration createProvider() SDP URI SIP Provider SIP Stack Proprietary SIP Stack Package: media.mediaoverip.sip.core Network createStack() OBIETTIVI • Transmissione RTP: 1 transmitter • Ricezione RTP: 1 receiver • User Location (static) • File transfer (web-cam emulation) • QoS monitoring RTP Events User Location RTP Participants QoS Monitoring Transmission/ Reception Statistics Package: media.mediaoverip.rtp.console SIP Register OBIETTIVI • informare il SIP server della localizzazione dell’utente • notifica dello stato (publish/subscribe) SIP Registrar SIP Watcher SIP Presentity Registration Protocol Registration Information Register Registrar “Available” Presence Protocol Presence Information Watcher Presentity Package: media.mediaoverip.sip.register/registrar Package: media.mediaoverip.sip.watcher/presentity “NOT Available” Protocollo di negoziazione mediata: RTP RTP Console RTP Console SIP Party SIP Party INVITE SDP (from 2) 200 OK 2 INVITE no SDP 3 5 ACK SDP (from 4) SIP 200 OK 6 4 ACK 1 SIP Tpcc Package: media.mediaoverip.sip.tpcc Package: media.mediaoverip.sip.party OBIETTIVI • negoziazione fra due end-system che non si conoscono (Party): mediatore (Tpcc) che coordina lo scambio di informazioni SIP Listener SIP Factory SIP Provider Client Transaction Dialog A Dialog B SIP Party A SIP Party B 1. CREATE INVITE inviteA 2. CREATE TRANSACTION new new 3. SEND REQUEST listener, A 4. INVITE offerA 5. 200 OK 6. CREATE INVITE 7. CREATE TRANSACTION offerA inviteB new new 8. SEND REQUEST 9. INVITE 10. SEND ACK listener, B offerA offerB 12. SEND ACK offerB 11. 200 OK SIP Listener SIP Factory 15. SEND REQUEST Client Transaction Dialog A Dialog B SIP Party A inviteC transactionC 16. RE-INVITE offerB offerB 18. SEND ACK SIP Party B body = offerB 13. CREATE INVITE 14. CREATE TRANSACTION SIP Provider 17. 200 OK offerB RTP RTP Entità: • Register, Operator, Client Regole: 1. Il Service deve fornire gli strumenti a Client e Operator per registrarsi al servizio 2. Il Service deve monitorare lo stato di Client e Operator 3. Operator deve monitorare i Client inviatigli dal Service, Client manifesta (notifica) il suo interesse a essere servito 4. Operator gestisce il rendez-vous tra coppie di Client (user/expert) 5. I Client devono comunicare attraverso streaming audio/video SERVICE OPERATOR SIP Registrar REGISTRATION SIP Register 1 SIP Watcher PRESENCE SIP Presentity 2 SERVICE CLIENT SIP Registrar REGISTRATION SIP Register 1 SIP Watcher PRESENCE SIP Presentity 2 OPERATOR CLIENT SIP Watcher PRESENCE SIP Presentity 3 SIP Tpcc TPCC SIP Party 4 CLIENT RTP Console CLIENT P2P STREAMING RTP Console 5 Fattorizzando: CLIENT OPERATOR SIP Registrar SIP Register SIP resentity SIP Tpcc SERVICE SIP Party SIP Presentity SIP Register RTP Console SIP Watcher SIP Watcher Vantaggi: • Distribuzione di un’entità su più nodi complessità (overhead) load balancing • Replicazione “modulare” fault tolerance SUPPORTO: • Architettura modulare come “ossatura” del servizio Cosa manca ? • Scelta deployment distribuito • Coordinamento dei componenti per realizzare l’application logic di ciascuna entità SERVICE SIP Register SERVICE SIP Proxy • Flessibilità, Estendibilità SIPProxy SIPRedirect SIP Register SERVICE SIP Watcher Session Initiation Protocol (SIP): http://www.cs.columbia.edu/sip SIP RFC 3261 (RFC3261) http://www.faqs.org/rfcs/rfc3261.html http://rfc.sunsite.dk/rfc/rfc3261.html RTP: RFC 1889 (RFC1889) http://www.faqs.org/rfcs/rfc1889.html http://rfc.sunsite.dk/rfc/rfc1889.html “Jain SIP Tutorial, Serving the Developer Community”, Phelim O’Doherty (Sun Microsystems), Mudumbai Ranganathan (NIST) “Sip Tutorial”, progetto GEMINI, Josè Soler Lucas (COM) “The Session Initiation Protocol (SIP)”, Henning Schulzrinne, Dept. of Computer Science, Columbia University, New York Java Media Framework (JMF): http://java.sun.com/products/java-media/jmf/ “Una applicazione multimediale di rete basata su un framework di classi Java”, tesi di laurea di Silvia Summa, 2000 Wikipedia http://it.wikipedia.org