Multi-User Jingle. Sjoerd Simons LCA 2009. Collabora Ltd, sponsored by NlNet



Similar documents
An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol

«Rendez-vous» Web(RTC) Conferencing as a Service

Hangout-like Video Conferences with Jitsi Videobridge and XMPP


Integrating Video Conferencing into Everyday Applications. Olivier Crête

Access to This Tutorial. What is XMPP. Ozgur Ozturk's Introduction to XMPP 1

An Introduction to VoIP Protocols

XMPP: Extensible Messaging and Presence Protocol

SHORT DESCRIPTION OF THE PROJECT...3 INTRODUCTION...4 MOTIVATION...4 Session Initiation Protocol (SIP)...5 Java Media Framework (JMF)...

Voice over IP (VoIP) Overview. Introduction. David Feiner ACN Introduction VoIP & QoS H.323 SIP Comparison of H.323 and SIP Examples

Advanced Networking Voice over IP: RTP/RTCP The transport layer

Receiving the IP packets Decoding of the packets Digital-to-analog conversion which reproduces the original voice stream

Voice-Over-IP. Daniel Zappala. CS 460 Computer Networking Brigham Young University

Bridgit Conferencing Software: Security, Firewalls, Bandwidth and Scalability

Voice & Video. Conference Calls 4/43

Optimizing Converged Cisco Networks (ONT)

Voice over IP: RTP/RTCP The transport layer

Encapsulating Voice in IP Packets

OSSIR, November /45

«Rendez-vous» Web(RTC) Conferencing as a Service

NAT and Firewall Traversal. VoIP and MultiMedia /77

XEP-0060: Publish-Subscribe

CSIS CSIS 3230 Spring Networking, its all about the apps! Apps on the Edge. Application Architectures. Pure P2P Architecture

Dialogic PowerMedia Extended Media Server

Configuring the Synapse SB67070 SIP Gateway from AT&T for Clearfly SIP Trunking. January 2013

Instant Messaging: Architectures and Concepts

RTP / RTCP. Announcements. Today s Lecture. RTP Info RTP (RFC 3550) I. Final Exam study guide online. Signup for project demos

Grandstream Networks, Inc.

MULTIPOINT VIDEO CALLING

UC-One. Epik. UC-One Quick Guide. Quick Guide For Apps. Why we love UC-One

CONNECTING TO LYNC/SKYPE FOR BUSINESS OVER THE INTERNET NETWORK PREP GUIDE

IP Telephony Deployment Models

FRAFOS GmbH Windscheidstr. 18 Ahoi Berlin Germany

Cisco Networks (ONT) 2006 Cisco Systems, Inc. All rights reserved.

An open standard for instant messaging: extensible Messaging and Presence Protocol (XMPP)

HP SkyRoom Frequently Asked Questions

Common VoIP problems, How to detect, correct and avoid them. Penny Tone LLC 1

MINISTRY OF HEALTH CUSTOMER PROPOSAL

By Kundan Singh Oct Communication

Multimedia Communications Voice over IP

JOIN A complete OTT client framework for desktop and mobile devices

Snow Agent System Pilot Deployment version

Dialogic PowerMedia Extended Media Server

Session Initiation Protocol (SIP) The Emerging System in IP Telephony

ABC SBC: Mobile Subscriber Support. FRAFOS GmbH

Mobicents 2.0 The Open Source Communication Platform. DERUELLE Jean JBoss, by Red Hat 138

ABC SBC: Securing and Flexible Trunking. FRAFOS GmbH

Integrated Instant Messaging System

Mobile and Interactive Social Television A Virtual TV Room

Cisco Expressway Series

FRAFOS GmbH Windscheidstr. 18 Ahoi Berlin Germany

White paper. SIP An introduction

Silent Monitoring and Recording Using Unified Communications Manager

TECHNICAL CHALLENGES OF VoIP BYPASS

Cisco TelePresence Video Communication Server (Cisco VCS) IP Port Usage for Firewall Traversal. Cisco VCS X8.5 December 2014

Cisco TelePresence MCU MSE 8420

District of Columbia Courts Attachment 1 Video Conference Bridge Infrastructure Equipment Performance Specification

technology standards and protocol for ip telephony solutions

Requirements. System Requirements. System Requirements, page 1 Port Requirements, page 4 Supported Codecs, page 5

RTC:engine. WebRTC SOLUTION SIPWISE AND DEUTSCHE TELEKOM / TLABS ANNOUNCE COOPERATION FOR THE

An Evaluation of Architectures for IMS Based Video Conferencing

ADVANTAGES OF AV OVER IP. EMCORE Corporation

W3C Meeting ISO/IEC/IEEE P

Marratech Technology Whitepaper

VoIP in Flow A Beginning

ABC SBC: Charging and Accounting. FRAFOS GmbH

13 Signaling Protocols for Multimedia Communication

EyeVision. Neo. General Guidance. Total Visual Communication System. Enwa Co.,Ltd IT Project Division アイ ビジョン

Automatic Configuration and Service Discovery for Networked Smart Devices

Research on P2P-SIP based VoIP system enhanced by UPnP technology

SIP Made Simple. Henning Schulzrinne: the father of SIP

XEP-0324: Internet of Things - Provisioning

Session Initiation Protocol and Services

NAT and Firewall Traversal with STUN / TURN / ICE

Session Announcement (SAP, RFC 2974) Session Description (SDP, RFC 2327) (SDP, draft-ietf-mmusic-sdp-new-11)

Indepth Voice over IP and SIP Networking Course

March 2010 Webcasting: Dealing with significant audiences behind the corporate firewall

Cisco TelePresence Multipoint Switch

VoIP Security. Seminar: Cryptography and Security Michael Muncan

Software Engineering 4C03 VoIP: The Next Telecommunication Frontier

Cisco WebEx Telepresence

Skype characteristics

Mobicents. The Open Source Communication Platform

Course 4: IP Telephony and VoIP

Virtual Desktop Infrastructure (VDI) and Desktop Videoconferencing

Scopia Desktop Server

Machine Problem 3 (Option 1): Mobile Video Chat

ABC SBC: Securing the PBX. FRAFOS GmbH

Voice over IP. Presentation Outline. Objectives

Principles of Network Applications. Dr. Philip Cannata

Alkit Reflex RTP reflector/mixer

VoIP Bandwidth Considerations - design decisions

XEP-0043: Jabber Database Access

Cisco TelePresence MCU 4500 Series

DSX. ATC SIP Trunk Setup. April 22, 2011 Issue NEC Corporation of America 4 Forest Parkway, Shelton, CT 06484

Transcription:

Multi-User Jingle Sjoerd Simons Collabora Ltd, sponsored by NlNet LCA 2009

Multi-User Jingle XMPP protocol extension for initiating and managing multiparty voice and video conferences within an XMPP MUC using Jingle

Jingle XMPP protocol extension for initiating and managing peer-to-peer media sessions between two XMPP entities

XMPP Extensible Messaging and Presence Protocol The protocol formaly known as Jabber XML streams XMPP Core: RFC 3920 XMPP IM: RFC 3921 Extensions using XMPP Extension Proposals (XEP)

XMPP JID Almost but not entirely unlike an e-mailaddress: sjoerd.simons@collabora.co.uk romeo@example.net juliet@capulet.com/balcony

Messages <message to= romeo@example. net from= j u l i e t @ e x a m p l e. com/ b a l c o n y type= chat xml:lang= en > <body>wherefore a r t thou, Romeo?</ body> </ message>

Presence <p r e s e n c e from= romeo@montague. l i t / o r c h a r d > <show>dnd</ show> <s t a t u s>wooing J u l i e t</ s t a t u s> <c xmlns= h t t p : // j a b b e r. org / p r o t o c o l / caps hash= sha 1 node= h t t p : // t e l e p a t h y. f r e e d e s k t o p. org / w i k i / Muji v e r= iunyhdsoy4nydvpdhotqcfubsz8= /> </ p r e s e n c e>

Info/Query <i q xmlns= j a b b e r : c l i e n t to= juliet@ example. com/ balcony from= romeo@example. net / orchard id= 2846139002 t y p e= g e t > <q u e r y xmlns= h t t p : // j a b b e r. org / p r o t o c o l / d i s c o#i n f o node= h t t p : // t e l e p a t h y. f r e e d e s k t o p. org / w i k i / Muji#iuNYhdSOy4nYDVPDhoTqCFubSz8= /> </ i q> <i q xmlns= j a b b e r : c l i e n t to= romeo@example. net / orchard from= juliet@ example. com/ balcony id= 2846139002 t y p e= r e s u l t > <q u e r y xmlns= h t t p : // j a b b e r. org / p r o t o c o l / d i s c o#i n f o > <i d e n t i t y c a t e g o r y= c l i e n t t y p e= pc name= Telepathy Gabble 0. 7. 17 /> <f e a t u r e v a r= u r n : x m p p : j i n g l e : 0 /> <f e a t u r e v a r= u r n : x m p p : j i n g l e : a p p s : r t p : 0 /> <f e a t u r e v a r= u r n : x m p p : j i n g l e : t r a n s p o r t s : r a w udp:0 /> </ q u e r y> </ i q>

Jingle XMPP protocol extension for initiating and managing peer-to-peer media sessions between two XMPP entities XEP-0166: Jingle XEP-0167: Jingle RTP Sessions XEP-0176: Jingle ICE-UDP Transport Method XEP-0177: Jingle Raw UDP Transport Method

Jingle session initiation <iq from= romeo@montague. l i t / orchard i d= j i n g l e 1 to= j u l i e t @ c a p u l e t. l i t / b a l c o n y type= set > <j i n g l e xmlns= u r n : x m p p : j i n g l e : 0 a c t i o n= s e s s i o n i n i t i a t e i n i t i a t o r = romeo@montague. l i t / o r c h a r d s i d= a 7 3 s j j v k l a 3 7 j f e a > <c o n t e n t c r e a t o r= i n i t i a t o r name= v o i c e > <d e s c r i p t i o n xmlns= u r n : x m p p : j i n g l e : a p p s : r t p : 1 media= a u d i o > <payload t y p e i d= 96 name= s p e e x c l o c k r a t e= 16000 /> <payload t y p e i d= 97 name= s p e e x c l o c k r a t e= 8000 /> </ d e s c r i p t i o n> <t r a n s p o r t xmlns= u r n : x m p p : j i n g l e : t r a n s p o r t s : i c e udp:0 /> </ c o n t e n t> <c o n t e n t c r e a t o r= i n i t i a t o r name= v i d e o > <d e s c r i p t i o n xmlns= u r n : x m p p : j i n g l e : a p p s : r t p : 1 media= v i d e o > <payload t y p e i d= 98 name= THEORA c l o c k r a t e= 90000 > <parameter name= h e i g h t value= 600 /> <parameter name= width value= 800 /> <p a r a m e t e r name= d e l i v e r y method v a l u e= i n l i n e /> <p a r a m e t e r name= c o n f i g u r a t i o n v a l u e= s o m e b a s e 1 6 s t r i n g /> </ payload t y p e> </ d e s c r i p t i o n> <t r a n s p o r t xmlns= u r n : x m p p : j i n g l e : t r a n s p o r t s : i c e udp:0 /> </ c o n t e n t> </ j i n g l e> </ i q>

Jingle session initiation <c o n t e n t c r e a t o r= i n i t i a t o r name= v i d e o > <d e s c r i p t i o n xmlns= u r n : x m p p : j i n g l e : a p p s : r t p : 1 media= v i d e o > <payload type i d= 98 name= THEORA c l o c k r a t e= 90000 > <parameter name= h e i g h t v a l u e= 600 /> <parameter name= width v a l u e= 800 /> <parameter name= d e l i v e r y method v a l u e= i n l i n e /> <parameter name= c o n f i g u r a t i o n v a l u e= s o m e b a s e 1 6 s t r i n g /> </ payload type> </ d e s c r i p t i o n> <t r a n s p o r t xmlns= u r n : x m p p : j i n g l e : t r a n s p o r t s : i c e udp:0 /> </ c o n t e n t>

Transport information <iq from= romeo@montague. l i t / orchard i d= i n f o 1 to= j u l i e t @ c a p u l e t. l i t / b a l c o n y type= set > <j i n g l e xmlns= u r n : x m p p : j i n g l e : 0 a c t i o n= t r a n s p o r t i n f o i n i t i a t o r = romeo@montague. l i t / o r c h a r d s i d= a 7 3 s j j v k l a 3 7 j f e a > <c o n t e n t c r e a t o r= i n i t i a t o r name= v o i c e > <t r a n s p o r t xmlns= u r n : x m p p : j i n g l e : t r a n s p o r t s : i c e udp:0 pwd= asd88fgpdd777uzjyhagzg ufrag= 8hhy > <c a n d i d a t e component= 1 f o u n d a t i o n= 1 g e n e r a t i o n= 0 i p= 1 0. 0. 1. 1 network= 1 port= 8998 p r i o r i t y= 2130706431 p r o t o c o l= udp type= host /> </ t r a n s p o r t> </ c o n t e n t> </ j i n g l e> </ i q>

Accepting a Jingle session <i q from= j u l i e t @ c a p u l e t. l i t / b a l c o n y i d= a c c e p t 1 to= romeo@montague. l i t / orchard type= set > <j i n g l e xmlns= u r n : x m p p : j i n g l e : 0 action= session accept i n i t i a t o r = romeo@montague. l i t / o r c h a r d r e s p o n d e r= j u l i e t @ c a p u l e t. l i t / b a l c o n y s i d= a 7 3 s j j v k l a 3 7 j f e a > <c o n t e n t c r e a t o r= i n i t i a t o r name= v o i c e > <d e s c r i p t i o n xmlns= u r n : x m p p : j i n g l e : a p p s : r t p : 1 media= v o i c e > <payload t y p e i d= 96 name= s p e e x c l o c k r a t e= 16000 /> <payload t y p e i d= 97 name= s p e e x c l o c k r a t e= 8000 /> </ d e s c r i p t i o n> <t r a n s p o r t xmlns= u r n : x m p p : j i n g l e : t r a n s p o r t s : i c e udp:0 > </ t r a n s p o r t> </ c o n t e n t> <c o n t e n t c r e a t o r= i n i t i a t o r name= v i d e o > <d e s c r i p t i o n xmlns= u r n : x m p p : j i n g l e : a p p s : r t p : 1 media= v i d e o > <payload t y p e i d= 98 name= t h e o r a c l o c k r a t e= 90000 > <parameter name= h e i g h t value= 600 /> <parameter name= width value= 800 /> <p a r a m e t e r name= d e l i v e r y method v a l u e= i n l i n e /> <p a r a m e t e r name= c o n f i g u r a t i o n v a l u e= s o m e b a s e 1 6 s t r i n g /> <parameter name= sampling value= YCbCr 4: 2 : 2 /> </ payload t y p e> </ d e s c r i p t i o n> <t r a n s p o r t xmlns= u r n : x m p p : j i n g l e : t r a n s p o r t s : i c e udp:0 /> </ c o n t e n t> </ j i n g l e> </ i q>

Multi User Chat MUC: XEP-0045 Widely deployed Messages in the muc are ordered!

Joining a muc <p r e s e n c e from= hag66@shakespeare. l i t /pda to= darkcave@chat. s h a k e s p e a r e. l i t / t h i r d w i t c h /> The MUC responds with presences of all current MUC members, with our own presence as the last.

Multi-User Jingle and MUC The MUC server shouldn t need to provide any infrastructure for Multi-User Jingle Shouldn t interfere with clients not supporting Multi-User Jingle Shouldn t depend on the one leader

Multi-User Jingle Each client announces the streams it s interested in and it s payload mapping in its presence Each clients does its own payload mapping calculation when joining based on the information from existing clients Each clients sets up a Jingle session to all existing clients Joining the Multi-User Jingle session split in in two stages to prevent race conditions.

Joining step 1 Announce that you re preparing to start or join the session: <p r e s e n c e xmlns= j a b b e r : c l i e n t to= test0@ night. luon. net /7722055431232389935112486 from= m u j i @ c o n f e r e n c e. n i g h t. l u o n. n e t / t e s t 0 > <c xmlns= h t t p : // j a b b e r. org / p r o t o c o l / caps node= h t t p : // t e l e p a t h y. f r e e d e s k t o p. org / w i k i / Mingle hash= sha 1 v e r= 9KlXkd+F+C/WPRXVRn77ai5k4qI= /> <muji xmlns= h t t p : // t e l e p a t h y. f r e e d e s k t o p. org / muji > <content name= video preparing= true /> <content name= audio preparing= true /> </ muji> <x xmlns= h t t p : // j a b b e r. org / p r o t o c o l /muc#u s e r > <item a f f i l i a t i o n = owner j i d= test0@ night. luon. net /7722055431232389935112486 r o l e= moderator /> </ x> </ p r e s e n c e>

Joining step 2 After all clients that announced they were preparing to join have done so, update your presence with your payload mapping: <p r e s e n c e xmlns= j a b b e r : c l i e n t to= test0@ night. luon. net /7722055431232389935112486 from= m u j i @ c o n f e r e n c e. n i g h t. l u o n. n e t / t e s t 0 > <c xmlns= h t t p : // j a b b e r. org / p r o t o c o l / caps node= h t t p : // t e l e p a t h y. f r e e d e s k t o p. org / w i k i / Muji hash= sha 1 v e r= 9KlXkd+F+C/WPRXVRn77ai5k4qI= /> <muji xmlns= h t t p : // t e l e p a t h y. f r e e d e s k t o p. org / muji > <content name= audio > <d e s c r i p t i o n xmlns= u r n : x m p p : j i n g l e : a p p s : r t p : 0 media= audio > <payload t y p e i d= 96 name= s p e e x c l o c k r a t e= 16000 /> <payload t y p e i d= 97 name= s p e e x c l o c k r a t e= 8000 /> </ d e s c r i p t i o n> </ c o n t e n t> <content name= video > <d e s c r i p t i o n xmlns= u r n : x m p p : j i n g l e : a p p s : r t p : 0 media= video > <payload type id= 96 name= THEORA c l o c k r a t e= 90000 > <p a r a m e t e r name= d e l i v e r y method v a l u e= i n l i n e /> <p a r a m e t e r name= c o n f i g u r a t i o n v a l u e= s o m e b a s e 1 6 v a l u e /> </ payload t y p e> </ d e s c r i p t i o n> </ c o n t e n t> </ muji> <x xmlns= h t t p : // j a b b e r. org / p r o t o c o l /muc#u s e r > <item a f f i l i a t i o n = owner j i d= t e s t 0 @ n i g h t. l u o n. n e t /7722055431232389935112486 r o l e= moderator /> </ x> </ p r e s e n c e>

Demo! Python client to make it easy to play with the protocol Farsight2 for the RTP streaming libnice (through farsight) for the ICE transport

Multi-User Jingle Advantages: Only needs basic infrastructure Each client can decide how to present the conference Disadvantages: Does not scale to large groups

Scaling Multi-User jingle Scaling without extra infrastructure is limited by: Amount of streams a client can decode Amount of upstream bandwidth Amount of downstream bandwidth

RTP relay Clients send their streams to the relay, which relays it to (all) others Advantage: Removes the limitation on the clients upstream bandwidth Disadvantages: Adds some latency especially when the relay is badly choosen

Mixer Clients their streams to the mixer, which combines (mixes them) in some way and send them to others. Advantages: Removes the limitation on the amount of streams can be decoded by the client Removes the limitation on the clients downstream bandwidth Removes the limitation on the clients upstream bandwidth

Mixer Disadvantages: The mixer needs to reencode and mix the data CPU intensive (transcoding) Lowers the quality Clients don t have control over the presentation anymore.

Combined relay and mixer Let clients choose whether they want to receive a mixed stream or not. Advantages: Removes the limitation on clients upstream bandwidth. Allows clients to decide about the trade-off between downstream bandwidth and having higher quality/control over the presentation

Codecs Each client only encodecs the media once. Which means the conference ends up using the lowest common denominator Not such a big issue for audio Scalable video codecs might be a solution Have a low resolution, low quality base layer.. On which extra layers are added to improve quality Decide per client which layers to send H264/SVC exists, but is heavily patented No free scalable video available :(

Links Project wiki: http: //telepathy.freedesktop.org/wiki/multiuserjingle NlNet site: http://www.nlnet.nl/project/mujingle/ Farsight2: http://farsight.freedesktop.org libnice: http://nice.freedesktop.org